Changeset 3403606
- Timestamp:
- 11/26/2025 06:04:28 PM (3 months ago)
- Location:
- jump-links-block-seo-44
- Files:
-
- 3 added
- 29 edited
- 1 copied
-
assets/screenshot-3.png (modified) (previous)
-
assets/screenshot-6.png (added)
-
tags/2.0 (copied) (copied from jump-links-block-seo-44/trunk)
-
tags/2.0/README.md (modified) (7 diffs)
-
tags/2.0/assets/screenshot-3.png (modified) (previous)
-
tags/2.0/assets/screenshot-6.png (added)
-
tags/2.0/build/block.json (modified) (5 diffs)
-
tags/2.0/build/index-rtl.css (modified) (1 diff)
-
tags/2.0/build/index.asset.php (modified) (1 diff)
-
tags/2.0/build/index.css (modified) (1 diff)
-
tags/2.0/build/index.js (modified) (1 diff)
-
tags/2.0/build/style-index-rtl.css (modified) (1 diff)
-
tags/2.0/build/style-index.css (modified) (1 diff)
-
tags/2.0/build/view.asset.php (modified) (1 diff)
-
tags/2.0/build/view.js (modified) (1 diff)
-
tags/2.0/changelog.txt (modified) (1 diff)
-
tags/2.0/jump-links-block.php (modified) (1 diff)
-
tags/2.0/readme.txt (modified) (6 diffs)
-
trunk/README.md (modified) (7 diffs)
-
trunk/assets/screenshot-3.png (modified) (previous)
-
trunk/assets/screenshot-6.png (added)
-
trunk/build/block.json (modified) (5 diffs)
-
trunk/build/index-rtl.css (modified) (1 diff)
-
trunk/build/index.asset.php (modified) (1 diff)
-
trunk/build/index.css (modified) (1 diff)
-
trunk/build/index.js (modified) (1 diff)
-
trunk/build/style-index-rtl.css (modified) (1 diff)
-
trunk/build/style-index.css (modified) (1 diff)
-
trunk/build/view.asset.php (modified) (1 diff)
-
trunk/build/view.js (modified) (1 diff)
-
trunk/changelog.txt (modified) (1 diff)
-
trunk/jump-links-block.php (modified) (1 diff)
-
trunk/readme.txt (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
jump-links-block-seo-44/tags/2.0/README.md
r3400046 r3403606 6 6 * **Requires at least:** 5.5 7 7 * **Tested up to:** 6.8 8 * **Stable tag:** 1.9.18 * **Stable tag:** 2.0.0 9 9 * **Requires PHP:** 7.4 10 10 * **License:** GPLv2 or later … … 36 36 37 37 **Enhance User Experience:** 38 For long articles, a table of contents is essential. It allows readers to easily navigate to the sections they care about most, which reduces bounce rates and increases the time they spend on your page. Search engines place value on these positive user engagement signals.38 For long articles, a table of contents is essential. It allows readers to easily navigate to the sections they care about most, and see exactly where they are in the article at a glance, which reduces bounce rates and increases the time they spend on your page. Search engines place value on these positive user engagement signals. 39 39 40 40 **Provide Clear Context for Search Engines:** … … 72 72 73 73 * **Layout Control:** Display your links in a standard vertical list or a modern horizontal, button-style layout. 74 75 * **List Styles:** Choose between a bulleted list (`<ul>`), a numbered list (`<ol>`), or no list styling at all. 74 76 75 77 * **Typography:** Control the **font size** with a simple picker, including a reset button. 76 78 77 * ** List Styles:** Choose between a bulleted list (`<ul>`), a numbered list (`<ol>`), or no list styling at all.79 * **Block Background:** Set a background color for the entire block container to make your table of contents pop or match your theme's card style. This setting extends upon the block margin, padding, and border options within the block styling tab. 78 80 79 81 * **Full Color Control:** Use integrated color pickers to customize: **Link Color**, **Other Text Color** (for bullets, numbers, and the main heading). … … 81 83 * **Conditional Horizontal Link Styles:** When in the horizontal layout, you can fine-tune the design with controls for **Link Background Color**, **Link Background Color on hover**, **Link Border Color**, and **border radius**. 82 84 85 * **Visual Hierarchy:** Optional **"Smart Indentation"** creates a nested outline look, making it easier for readers to scan your document structure in a larger Table of Contents (e.g., indenting H3s under H2s). 86 83 87 --- 84 88 … … 88 92 89 93 * **Collapsible List:** Optional feature to collapse long lists with an elegant "Show More" / "Show Less" SVG icon button to expand and contract the list horizontally or vertically. 94 95 * **Sticky Navigation:** Optionally, keep the table of contents pinned to the viewport as users scroll, ensuring navigation is always accessible for long articles. 96 97 * **Smart Sticky Controls:** Includes a Top Offset setting to prevent the block from hiding behind your site's sticky header, and a Disable on Mobile strategy to prevent it from blocking content on small screens. 98 99 * **Auto-Hide Title:** When using Sticky Positioning, the block title (e.g., "On This Page") automatically fades out and collapses once the block sticks to the top of the screen. This maximizes reading space while keeping the navigation links accessible. 100 101 * **Active Link Indicator (ScrollSpy):** As your readers scroll through the content, the table of contents automatically highlights the link for the section they are currently reading, giving them instant context on their progress. 102 90 103 91 104 --- … … 154 167 **Note:** If one of the headings on your page is “Office Directions,” the ID created will be “office-directions.” This could create a potential conflict if you have another ID on your webpage named “office-directions.” In this case, assign a different ID to the block heading to resolve the conflict. 155 168 169 ### How do I make the Table of Contents stay visible while scrolling? 170 In the block settings sidebar, look for the **Position Settings** panel. Toggle on **"Sticky Position"**. 171 You can then use the **"Top Offset"** slider to adjust how far from the top of the screen the block sits (useful if you have a sticky site header). 172 173 ### Why isn't the block "sticky" on my phone? 174 The sticky feature includes a **"Disable on Mobile"** setting that is enabled by default. 175 Sticky elements on mobile devices often cover up too much reading space and lead to a poor user experience. If you want it sticky on mobile, you can uncheck this box in the **Position Settings** panel. 176 177 ### Can I include more than one Jump Links Block per page? 178 Yes. In fact, you can customize the second jump links block to appear different than the first. For example, you might have a horizontal jump links block at the top of your page containing jump links to each H2 heading. Lower on your webpage, you could add a second jump links block formatted as a numbered vertical list of links for each H3 heading in the biggest section of your page. 179 156 180 ### Why does the "Show More" button not work in the editor? 157 181 The collapsible functionality and the **Show More** button, which features a down arrow icon, are front-end features that function using a JavaScript file. They are designed to work only on the live, published page. To give you an accurate preview, the editor displays a non-functional replica of the "Show More" button when the feature is enabled. You can hover over it to see a helpful tooltip, and clicking it will show an informational notice confirming that it's interactive on the front end. … … 190 214 4. Published Vertical Jump Links, expanded and collapsed. 191 215 5. Published Horizontal Jump Links, expanded and collapsed. 216 6. Published Horizontal Jump Links with sticky navigation showing the Active Link Indicator. 192 217 193 218 --- 194 219 195 220 ## Changelog 196 197 ### 1.9.1 198 * FIX (readme): Fixed a small typo in the readme.txt file. 221 ### 2.0.0 222 * **FEATURE:** **Sticky Positioning:** Keep your table of contents visible while users scroll. Includes a "Top Offset" slider to clear sticky headers, a "Jump Offset" slider to ensure that the sticky header does not cover the heading text, and a "Disable on Mobile" toggle to preserve screen space on small devices. 223 * **FEATURE:** **Auto-Hide Title:** Implemented a smart "sticky state" detection. When the block sticks, the title gently collapses and fades out to keep the interface clean (this occurs when a block title is used alongside sticky positioning). 224 * **FEATURE:** **Smart Indentation:** Added a "Create Visual Hierarchy" toggle. When enabled, H3 and H4 sub-headings are visually indented to create a clear, nested outline structure. 225 * **FEATURE:** **Block Background:** You can now set a background color for the entire block container, perfect for creating "card-style" floating navigation. 226 * **FEATURE:** **ScrollSpy:** Automatically highlights the active link in the table of contents as the user scrolls through the corresponding section of the post. 227 228 ### 1.9.2 229 * **FEATURE:** Added support for Border and Spacing controls. You can now add borders, rounded corners, margins, and padding to the Jump Links block directly from the editor settings. 230 * **FEATURE:** Added a "Heading Level" control. You can now choose the specific HTML tag (H2, H3, H4, H5, Paragraph, or Div) for the "On This Page" heading to better match your document structure. 231 * **REFACTOR:** Optimized the block's styling logic to use CSS variables on the parent container instead of inline styles for every link. This reduces the block's HTML size and improves rendering performance. 232 * **FIX:** Resolved an accessibility and HTML validation issue where using multiple Jump Links blocks on a single page created duplicate element IDs. Each block now generates a unique instance ID. 233 * **PERFORMANCE:** Refactored the front-end JavaScript to use event delegation for smooth scrolling. This reduces memory usage by attaching a single event listener to the block instead of individual listeners for every link. 234 * **TWEAK:** Reorganized the sidebar settings for better clarity between Block Title settings and Content Inclusion settings. 199 235 200 236 ### 1.9.0 -
jump-links-block-seo-44/tags/2.0/build/block.json
r3400046 r3403606 3 3 "apiVersion": 3, 4 4 "attributes": { 5 "blockInstanceId": { 6 "type": "string" 7 }, 8 "blockBackgroundColor": { 9 "type": "string" 10 }, 5 11 "linkColor": { 6 12 "type": "string", 7 "default": "#0 073aa"13 "default": "#046bd2" 8 14 }, 9 15 "linkBackgroundColor": { 10 16 "type": "string", 11 "default": "#f 0f0f0"17 "default": "#f4f4f4" 12 18 }, 13 19 "linkBackgroundColorHover": { 14 20 "type": "string", 15 "default": "#e 4e4e4"21 "default": "#efefef" 16 22 }, 17 23 "linkBorderColor": { … … 29 35 "type": "string" 30 36 }, 37 "headingTag": { 38 "type": "string", 39 "default": "h2" 40 }, 31 41 "headingLevels": { 32 42 "default": [ … … 43 53 "items": { 44 54 "properties": { 55 "level": { 56 "type": "integer" 57 }, 45 58 "anchor": { 46 59 "type": "string" … … 82 95 "textColor": { 83 96 "type": "string" 97 }, 98 "isSticky": { 99 "type": "boolean", 100 "default": false 101 }, 102 "stickyOffset": { 103 "type": "number", 104 "default": 30 105 }, 106 "jumpOffset": { 107 "type": "number", 108 "default": 120 109 }, 110 "stickyStrategy": { 111 "type": "string", 112 "default": "desktop-only" 113 }, 114 "isSmartIndentation": { 115 "type": "boolean", 116 "default": true 117 }, 118 "style": { 119 "type": "object", 120 "default": { 121 "spacing": { 122 "padding": "var:preset|spacing|30", 123 "margin": { 124 "top": "var:preset|spacing|30", 125 "bottom": "var:preset|spacing|30" 126 } 127 } 128 } 84 129 } 85 130 }, … … 92 137 "name": "seo44/jump-links", 93 138 "supports": { 94 "html": false 139 "html": false, 140 "spacing": { 141 "margin": true, 142 "padding": true 143 }, 144 "__experimentalBorder": { 145 "color": true, 146 "radius": true, 147 "style": true, 148 "width": true, 149 "__experimentalDefaultControls": { 150 "color": true, 151 "radius": true, 152 "style": true, 153 "width": true 154 } 155 } 95 156 }, 96 157 "textdomain": "jump-links-block-seo-44", 97 158 "title": "SEO 44 Jump Links", 98 "version": " 1.9.1",159 "version": "2.0.0", 99 160 "viewScript": "file:./view.js" 100 161 } -
jump-links-block-seo-44/tags/2.0/build/index-rtl.css
r3400036 r3403606 1 .wp-block-seo44-jump-links{ margin-bottom:1em}.wp-block-seo44-jump-links-heading{flex-basis:100%;font-size:calc(var(--jump-link-font-size, 1em)*1.375)}.wp-block-seo44-jump-links.list-style-none>ul{list-style-type:none;padding-right:0}.wp-block-seo44-jump-links.is-layout-horizontal ol,.wp-block-seo44-jump-links.is-layout-horizontal ul{display:flex;flex-wrap:wrap;gap:.5em;list-style-type:none;margin:.5em 0 1em;padding:0}.wp-block-seo44-jump-links.is-layout-horizontal li a{background-color:var(--link-bg-color);border-style:solid;border-width:1px;display:inline-block;padding:.5em 1em;text-decoration:none}.wp-block-seo44-jump-links.is-layout-horizontal li a:hover{background-color:var(--link-bg-hover-color);text-decoration:underline;text-underline-offset:.1em}.wp-block-seo44-jump-links.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-collapsible>nav>ul{flex-wrap:wrap;max-height:2.5em;overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links .seo-44-show-more{border:1px solid;border-radius:4px;cursor:pointer;display:none;line-height:1;padding:0}.wp-block-seo44-jump-links .seo-44-show-more svg{fill:currentColor;height:30px;width:30px}.wp-block-seo44-jump-links .seo-44-show-more .arrow-up,.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-down{display:none}.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-up{display:inline-block}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ol,.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ul{display:inline-block;max-height:calc(var(--jump-link-font-size, 1em)*1.7*2);max-width:calc(100% - 40px);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal) .seo-44-show-more{margin-top:calc(var(--jump-link-font-size, 1em)*1.8);vertical-align:top}.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ul{max-height:calc(var(--jump-link-font-size, 1em)*1.7 + 1.5em);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ul{max-height:1000px}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav{align-items:flex-start;display:flex;flex-wrap:wrap;gap:.5em}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ul{flex-basis:0;flex-grow:1}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>.seo-44-show-more{flex-shrink:0;margin-top:.5em}.block-editor-block-list__block[data-type="seo44/jump-links"].is-collapsible.wp-block-seo44-jump-links .seo-44-show-more{display:inline-block}.wp-block-seo44-jump-links ol li .components-text-control,.wp-block-seo44-jump-links ul li .components-text-control{flex-grow:1}.components-panel__body .components-button-group{display:flex;gap:8px;margin-bottom:8px;width:100%}.components-panel__body .components-button-group .components-button{flex-grow:1;justify-content:center}.reorder-buttons .components-button{border:1px solid #999;border-radius:6px;margin:0 5px}.reorder-buttons .components-button:disabled{color:transparent;display:none}.wp-block-seo44-jump-links ol li .reorder-buttons,.wp-block-seo44-jump-links ul li .reorder-buttons{width:96px}.wp-block-seo44-jump-links ol li .components-toggle-control.components-toggle-control,.wp-block-seo44-jump-links ol li .reorder-buttons,.wp-block-seo44-jump-links ul li .components-toggle-control.components-toggle-control,.wp-block-seo44-jump-links ul li .reorder-buttons{display:inline-block;margin:0 5px 10px;vertical-align:middle}1 .wp-block-seo44-jump-links{background-color:var(--seo44-block-bg);margin-bottom:var(--wp--preset--spacing--30);margin-top:var(--wp--preset--spacing--30);padding:var(--wp--preset--spacing--30)}.wp-block-seo44-jump-links-heading{flex-basis:100%}.wp-block-seo44-jump-links nav>ol li,.wp-block-seo44-jump-links nav>ul li{margin:0;padding:0}.wp-block-seo44-jump-links.list-style-none nav>ol,.wp-block-seo44-jump-links.list-style-none nav>ul{list-style-type:none;padding-right:0}.wp-block-seo44-jump-links.is-layout-horizontal ol,.wp-block-seo44-jump-links.is-layout-horizontal ul{display:flex;flex-wrap:wrap;gap:0 .5em;list-style-type:none;margin:-.5em 0 0;padding:0}.wp-block-seo44-jump-links.is-layout-horizontal ol li,.wp-block-seo44-jump-links.is-layout-horizontal ul li{margin:.5em 0 0}.wp-block-seo44-jump-links li a{color:var(--seo44-link-color,#0073aa)}.wp-block-seo44-jump-links.is-layout-horizontal li a{background-color:var(--seo44-link-bg);border-color:var(--seo44-link-border-color);border-radius:var(--seo44-link-radius);border-style:solid;border-width:1px;display:inline-block;padding:.5em 1em;text-decoration:none}.wp-block-seo44-jump-links.is-layout-horizontal li a:hover{background-color:var(--seo44-link-hover-bg);text-decoration:underline;text-underline-offset:.1em}.wp-block-seo44-jump-links.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-collapsible>nav>ul{flex-wrap:wrap;max-height:2.5em;overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links .seo-44-show-more{border:1px solid;border-radius:4px;cursor:pointer;display:none;line-height:1;padding:0}.wp-block-seo44-jump-links .seo-44-show-more svg{fill:currentColor;height:30px;width:30px}.wp-block-seo44-jump-links .seo-44-show-more .arrow-up,.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-down{display:none}.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-up{display:inline-block}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ol,.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ul{display:inline-block;max-height:calc(var(--jump-link-font-size, 1em)*1.9*2);max-width:calc(100% - 40px);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal) .seo-44-show-more{margin-top:calc(var(--jump-link-font-size, 1em)*1.8);vertical-align:top}.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ul{max-height:calc(var(--jump-link-font-size, 1em)*1.7 + 1.5em);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ul{max-height:1000px}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav{align-items:flex-start;display:flex;flex-wrap:wrap;gap:.5em}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ul{flex-basis:0;flex-grow:1}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>.seo-44-show-more{flex-shrink:0;margin-top:.5em}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ul li.seo44-jump-link-level-3{font-size:.95em;margin-right:1.5em;opacity:.9}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ul li.seo44-jump-link-level-4{font-size:.9em;list-style-type:circle;margin-right:3em;opacity:.85}.wp-block-seo44-jump-links.list-style-none nav>ol li.seo44-jump-link-level-4,.wp-block-seo44-jump-links.list-style-none nav>ul li.seo44-jump-link-level-4{list-style-type:none}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ol li.seo44-jump-link-level-3{font-size:.95em;opacity:.9;padding-right:1.5em}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ol li.seo44-jump-link-level-4{font-size:.9em;opacity:.85;padding-right:3em}.wp-block-seo44-jump-links.is-sticky{background-color:var(--seo44-block-bg,#fff);position:sticky;position:-webkit-sticky;top:var(--seo44-sticky-offset,20px);z-index:10}@media(max-width:781px){.wp-block-seo44-jump-links.is-sticky.sticky-desktop-only{position:static;top:auto}}.wp-block-seo44-jump-links.is-sticky.is-stuck a.is-active{color:var(--seo44-link-color);font-weight:700}.wp-block-seo44-jump-links.is-sticky.is-stuck.is-layout-horizontal a.is-active{background-color:var(--seo44-link-hover-bg);text-decoration:none}.wp-block-seo44-jump-links.is-sticky.is-stuck:not(.is-layout-horizontal) a.is-active{border-right:3px solid var(--seo44-link-color);padding-right:.5em}.wp-block-seo44-jump-links{position:relative}.seo44-sticky-sentinel{height:1px;right:0;pointer-events:none;position:absolute;left:0;top:calc((var(--seo44-sticky-offset, 20px) + 3px)*-1);visibility:hidden}.wp-block-seo44-jump-links.is-sticky.is-stuck .wp-block-seo44-jump-links-heading{margin:0;max-height:0;opacity:0;overflow:hidden;transition:max-height .5s ease 1s,opacity .3s ease 1s,margin .5s ease 1s}.wp-block-seo44-jump-links-heading{margin-bottom:.25em;margin-top:0;max-height:100px;opacity:1;transition:max-height .5s ease,opacity .3s ease,margin .5s ease}.block-editor-block-list__block[data-type="seo44/jump-links"].is-collapsible.wp-block-seo44-jump-links .seo-44-show-more{display:inline-block}.wp-block-seo44-jump-links ol li .components-text-control,.wp-block-seo44-jump-links ul li .components-text-control{flex-grow:1}.components-panel__body .components-button-group{display:flex;gap:8px;margin-bottom:8px;width:100%}.components-panel__body .components-button-group .components-button{flex-grow:1;justify-content:center}.reorder-buttons .components-button{border:1px solid #999;border-radius:6px;margin:0 5px}.reorder-buttons .components-button:disabled{color:transparent;display:none}.wp-block-seo44-jump-links ol li .reorder-buttons,.wp-block-seo44-jump-links ul li .reorder-buttons{width:96px}.wp-block-seo44-jump-links ol li .components-toggle-control.components-toggle-control,.wp-block-seo44-jump-links ol li .reorder-buttons,.wp-block-seo44-jump-links ul li .components-toggle-control.components-toggle-control,.wp-block-seo44-jump-links ul li .reorder-buttons{display:inline-block;margin:0 5px 10px;vertical-align:middle} -
jump-links-block-seo-44/tags/2.0/build/index.asset.php
r3400036 r3403606 1 <?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n'), 'version' => ' 02a6f20490b5ebe98441');1 <?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n'), 'version' => 'abe95387150489ba035c'); -
jump-links-block-seo-44/tags/2.0/build/index.css
r3400036 r3403606 1 .wp-block-seo44-jump-links{ margin-bottom:1em}.wp-block-seo44-jump-links-heading{flex-basis:100%;font-size:calc(var(--jump-link-font-size, 1em)*1.375)}.wp-block-seo44-jump-links.list-style-none>ul{list-style-type:none;padding-left:0}.wp-block-seo44-jump-links.is-layout-horizontal ol,.wp-block-seo44-jump-links.is-layout-horizontal ul{display:flex;flex-wrap:wrap;gap:.5em;list-style-type:none;margin:.5em 0 1em;padding:0}.wp-block-seo44-jump-links.is-layout-horizontal li a{background-color:var(--link-bg-color);border-style:solid;border-width:1px;display:inline-block;padding:.5em 1em;text-decoration:none}.wp-block-seo44-jump-links.is-layout-horizontal li a:hover{background-color:var(--link-bg-hover-color);text-decoration:underline;text-underline-offset:.1em}.wp-block-seo44-jump-links.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-collapsible>nav>ul{flex-wrap:wrap;max-height:2.5em;overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links .seo-44-show-more{border:1px solid;border-radius:4px;cursor:pointer;display:none;line-height:1;padding:0}.wp-block-seo44-jump-links .seo-44-show-more svg{fill:currentColor;height:30px;width:30px}.wp-block-seo44-jump-links .seo-44-show-more .arrow-up,.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-down{display:none}.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-up{display:inline-block}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ol,.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ul{display:inline-block;max-height:calc(var(--jump-link-font-size, 1em)*1.7*2);max-width:calc(100% - 40px);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal) .seo-44-show-more{margin-top:calc(var(--jump-link-font-size, 1em)*1.8);vertical-align:top}.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ul{max-height:calc(var(--jump-link-font-size, 1em)*1.7 + 1.5em);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ul{max-height:1000px}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav{align-items:flex-start;display:flex;flex-wrap:wrap;gap:.5em}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ul{flex-basis:0;flex-grow:1}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>.seo-44-show-more{flex-shrink:0;margin-top:.5em}.block-editor-block-list__block[data-type="seo44/jump-links"].is-collapsible.wp-block-seo44-jump-links .seo-44-show-more{display:inline-block}.wp-block-seo44-jump-links ol li .components-text-control,.wp-block-seo44-jump-links ul li .components-text-control{flex-grow:1}.components-panel__body .components-button-group{display:flex;gap:8px;margin-bottom:8px;width:100%}.components-panel__body .components-button-group .components-button{flex-grow:1;justify-content:center}.reorder-buttons .components-button{border:1px solid #999;border-radius:6px;margin:0 5px}.reorder-buttons .components-button:disabled{color:transparent;display:none}.wp-block-seo44-jump-links ol li .reorder-buttons,.wp-block-seo44-jump-links ul li .reorder-buttons{width:96px}.wp-block-seo44-jump-links ol li .components-toggle-control.components-toggle-control,.wp-block-seo44-jump-links ol li .reorder-buttons,.wp-block-seo44-jump-links ul li .components-toggle-control.components-toggle-control,.wp-block-seo44-jump-links ul li .reorder-buttons{display:inline-block;margin:0 5px 10px;vertical-align:middle}1 .wp-block-seo44-jump-links{background-color:var(--seo44-block-bg);margin-bottom:var(--wp--preset--spacing--30);margin-top:var(--wp--preset--spacing--30);padding:var(--wp--preset--spacing--30)}.wp-block-seo44-jump-links-heading{flex-basis:100%}.wp-block-seo44-jump-links nav>ol li,.wp-block-seo44-jump-links nav>ul li{margin:0;padding:0}.wp-block-seo44-jump-links.list-style-none nav>ol,.wp-block-seo44-jump-links.list-style-none nav>ul{list-style-type:none;padding-left:0}.wp-block-seo44-jump-links.is-layout-horizontal ol,.wp-block-seo44-jump-links.is-layout-horizontal ul{display:flex;flex-wrap:wrap;gap:0 .5em;list-style-type:none;margin:-.5em 0 0;padding:0}.wp-block-seo44-jump-links.is-layout-horizontal ol li,.wp-block-seo44-jump-links.is-layout-horizontal ul li{margin:.5em 0 0}.wp-block-seo44-jump-links li a{color:var(--seo44-link-color,#0073aa)}.wp-block-seo44-jump-links.is-layout-horizontal li a{background-color:var(--seo44-link-bg);border-color:var(--seo44-link-border-color);border-radius:var(--seo44-link-radius);border-style:solid;border-width:1px;display:inline-block;padding:.5em 1em;text-decoration:none}.wp-block-seo44-jump-links.is-layout-horizontal li a:hover{background-color:var(--seo44-link-hover-bg);text-decoration:underline;text-underline-offset:.1em}.wp-block-seo44-jump-links.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-collapsible>nav>ul{flex-wrap:wrap;max-height:2.5em;overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links .seo-44-show-more{border:1px solid;border-radius:4px;cursor:pointer;display:none;line-height:1;padding:0}.wp-block-seo44-jump-links .seo-44-show-more svg{fill:currentColor;height:30px;width:30px}.wp-block-seo44-jump-links .seo-44-show-more .arrow-up,.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-down{display:none}.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-up{display:inline-block}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ol,.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ul{display:inline-block;max-height:calc(var(--jump-link-font-size, 1em)*1.9*2);max-width:calc(100% - 40px);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal) .seo-44-show-more{margin-top:calc(var(--jump-link-font-size, 1em)*1.8);vertical-align:top}.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ul{max-height:calc(var(--jump-link-font-size, 1em)*1.7 + 1.5em);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ul{max-height:1000px}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav{align-items:flex-start;display:flex;flex-wrap:wrap;gap:.5em}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ul{flex-basis:0;flex-grow:1}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>.seo-44-show-more{flex-shrink:0;margin-top:.5em}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ul li.seo44-jump-link-level-3{font-size:.95em;margin-left:1.5em;opacity:.9}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ul li.seo44-jump-link-level-4{font-size:.9em;list-style-type:circle;margin-left:3em;opacity:.85}.wp-block-seo44-jump-links.list-style-none nav>ol li.seo44-jump-link-level-4,.wp-block-seo44-jump-links.list-style-none nav>ul li.seo44-jump-link-level-4{list-style-type:none}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ol li.seo44-jump-link-level-3{font-size:.95em;opacity:.9;padding-left:1.5em}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ol li.seo44-jump-link-level-4{font-size:.9em;opacity:.85;padding-left:3em}.wp-block-seo44-jump-links.is-sticky{background-color:var(--seo44-block-bg,#fff);position:sticky;position:-webkit-sticky;top:var(--seo44-sticky-offset,20px);z-index:10}@media(max-width:781px){.wp-block-seo44-jump-links.is-sticky.sticky-desktop-only{position:static;top:auto}}.wp-block-seo44-jump-links.is-sticky.is-stuck a.is-active{color:var(--seo44-link-color);font-weight:700}.wp-block-seo44-jump-links.is-sticky.is-stuck.is-layout-horizontal a.is-active{background-color:var(--seo44-link-hover-bg);text-decoration:none}.wp-block-seo44-jump-links.is-sticky.is-stuck:not(.is-layout-horizontal) a.is-active{border-left:3px solid var(--seo44-link-color);padding-left:.5em}.wp-block-seo44-jump-links{position:relative}.seo44-sticky-sentinel{height:1px;left:0;pointer-events:none;position:absolute;right:0;top:calc((var(--seo44-sticky-offset, 20px) + 3px)*-1);visibility:hidden}.wp-block-seo44-jump-links.is-sticky.is-stuck .wp-block-seo44-jump-links-heading{margin:0;max-height:0;opacity:0;overflow:hidden;transition:max-height .5s ease 1s,opacity .3s ease 1s,margin .5s ease 1s}.wp-block-seo44-jump-links-heading{margin-bottom:.25em;margin-top:0;max-height:100px;opacity:1;transition:max-height .5s ease,opacity .3s ease,margin .5s ease}.block-editor-block-list__block[data-type="seo44/jump-links"].is-collapsible.wp-block-seo44-jump-links .seo-44-show-more{display:inline-block}.wp-block-seo44-jump-links ol li .components-text-control,.wp-block-seo44-jump-links ul li .components-text-control{flex-grow:1}.components-panel__body .components-button-group{display:flex;gap:8px;margin-bottom:8px;width:100%}.components-panel__body .components-button-group .components-button{flex-grow:1;justify-content:center}.reorder-buttons .components-button{border:1px solid #999;border-radius:6px;margin:0 5px}.reorder-buttons .components-button:disabled{color:transparent;display:none}.wp-block-seo44-jump-links ol li .reorder-buttons,.wp-block-seo44-jump-links ul li .reorder-buttons{width:96px}.wp-block-seo44-jump-links ol li .components-toggle-control.components-toggle-control,.wp-block-seo44-jump-links ol li .reorder-buttons,.wp-block-seo44-jump-links ul li .components-toggle-control.components-toggle-control,.wp-block-seo44-jump-links ul li .reorder-buttons{display:inline-block;margin:0 5px 10px;vertical-align:middle} -
jump-links-block-seo-44/tags/2.0/build/index.js
r3400036 r3403606 1 (()=>{"use strict";var e,l={313:()=>{const e=window.wp.blocks,l=window.React,o=window.wp.i18n,t=window.wp.blockEditor,n=window.wp.components, i=window.wp.data,a=window.wp.element;function s(e){return(new DOMParser).parseFromString(e,"text/html").body.textContent||""}const r=(0,l.createElement)("svg",{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M3 21v-2h18v2zm8-4v-6.175L9.4 12.4L8 11l4-4l4 4l-1.4 1.4l-1.6-1.575V17zM3 5V3h18v2z"})),c=(0,l.createElement)("svg",{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M3 5V3h18v2zm9 12l-4-4l1.4-1.4l1.6 1.575V7h2v6.175l1.6-1.575L16 13zm-9 4v-2h18v2z"})),u=(0,l.createElement)("svg",{className:"arrow-down",width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M12 16l-6-6 1.41-1.41L12 13.17l4.59-4.58L18 10l-6 6z"})),k=JSON.parse('{"UU":"seo44/jump-links"}');(0,e.registerBlockType)(k.UU,{edit:function({attributes:e,setAttributes:k}){const{headingLevels:m,headings:d,layout:h,showHeading:p,headingText:b,isEditing:g,isCollapsible:_,listStyle:v,fontSize:w,textColor:E,linkColor:C,linkBackgroundColor:f,linkBackgroundColorHover:j,linkBorderColor:x,linkBorderRadius:y}=e,z={color:E,fontSize:w,"--jump-link-font-size":w||"18px"},B={"--link-bg-color":"horizontal"===h?f:void 0,borderColor:"horizontal"===h?x:void 0,borderRadius:"horizontal"===h&&y?`${y}px`:void 0,color:C,"--link-bg-hover-color":"horizontal"===h?j:void 0},S="ol"===v?"ol":"ul",{createInfoNotice:T}=(0,i.useDispatch)("core/notices"),L=(0,t.useBlockProps)({style:z});L.className=`${L.className} ${"horizontal"===h?"is-layout-horizontal":""} ${_&&!g?"is-collapsible":""} ${"none"===v?"list-style-none":""}`.trim();const N=(0,i.useSelect)(e=>e("core/block-editor").getBlocks(),[]),{updateBlockAttributes:P}=(0,i.useDispatch)("core/block-editor");(0,a.useEffect)(()=>{const e=N.filter(e=>"core/heading"===e.name&&m.includes(`h${e.attributes.level}`)),l=new Set;let t=!1;const n=new Map(d.map(e=>[e.anchor,e])),i=[];for(const o of e){const e=s(o.attributes.content);let a=o.attributes.anchor||e.toLowerCase().replace(/[^a-z0-9\s-]/g,"").trim().replace(/\s+/g,"-"),r=a,c=2;for(;l.has(r);)r=`${a}-${c}`,c++,t=!0;l.add(r),o.attributes.anchor!==r&&P(o.clientId,{anchor:r});const u=n.get(o.attributes.anchor)||n.get(r),k=u&&u.linkText!==u.text?u.linkText:e,m=!u||u.isVisible;i.push({anchor:r,text:e,linkText:k,isVisible:m})}JSON.stringify(i)!==JSON.stringify(d)&&k({headings:i}),t&&T((0,o.__)("Jump Links Block: Duplicate headings were found. Unique IDs have been auto-generated, but this may be a sign of redundancy. Please review your headings for clarity.","jump-links-block-seo-44"),{To:"snackbar"})},[N,m,d,k,P,T]),(0,a.useEffect)(()=>{"horizontal"===h&&"none"!==v&&k({listStyle:"none"})},[h,v,k]);const M=(e,l)=>{const o=[...d],t=o.splice(e,1)[0];"up"===l?o.splice(e-1,0,t):o.splice(e+1,0,t),k({headings:o})},O=e=>{const l=m.includes(e)?m.filter(l=>l!==e):[...m,e];k({headingLevels:l.sort()})};return(0,l.createElement)(l.Fragment,null,(0,l.createElement)(t.InspectorControls,null,(0,l.createElement)(n.PanelBody,{title:(0,o.__)("Presentation","jump-links-block-seo-44")},(0,l.createElement)(n.ButtonGroup,null,(0,l.createElement)(n.Button,{isPrimary:!g,isPressed:!g,onClick:()=>k({isEditing:!1})},(0,o.__)("Viewing Mode","jump-links-block-seo-44")),(0,l.createElement)(n.Button,{isPrimary:g,isPressed:g,onClick:()=>k({isEditing:!0})},(0,o.__)("Editing Mode","jump-links-block-seo-44"))),(0,l.createElement)("p",{className:"description"},(0,o.__)("Switch to Editing Mode to customize link text, visibility, and order.","jump-links-block-seo-44"))),(0,l.createElement)(n.PanelBody,{title:(0,o.__)("Appearance","jump-links-block-seo-44")},(0,l.createElement)("p",null,(0,l.createElement)("strong",null,(0,o.__)("Layout","jump-links-block-seo-44"))),(0,l.createElement)(n.ButtonGroup,null,(0,l.createElement)(n.Button,{isPrimary:"vertical"===h,isPressed:"vertical"===h,onClick:()=>k({layout:"vertical"})},(0,o.__)("Vertical","jump-links-block-seo-44")),(0,l.createElement)(n.Button,{isPrimary:"horizontal"===h,isPressed:"horizontal"===h,onClick:()=>k({layout:"horizontal"})},(0,o.__)("Horizontal","jump-links-block-seo-44"))),(0,l.createElement)(n.ToggleControl,{label:(0,o.__)("Make Jump Links Area Expandable","jump-links-block-seo-44"),help:(0,o.__)('Conserve screen space by collapsing a long list of jump links, providing users with an elegant "show more" button to see the entire list.',"jump-links-block-seo-44"),checked:_,onChange:()=>k({isCollapsible:!_})}),(0,l.createElement)(n.SelectControl,{label:(0,o.__)("List Style","jump-links-block-seo-44"),value:v,options:[{label:(0,o.__)("Bulleted","jump-links-block-seo-44"),value:"ul"},{label:(0,o.__)("Numbered","jump-links-block-seo-44"),value:"ol"},{label:(0,o.__)("None","jump-links-block-seo-44"),value:"none"}],onChange:e=>k({listStyle:e}),disabled:"horizontal"===h}),(0,l.createElement)(n.FontSizePicker,{fontSizes:[{name:(0,o.__)("S","jump-links-block-seo-44"),slug:"small",size:"14px"},{name:(0,o.__)("M","jump-links-block-seo-44"),slug:"normal",size:"17px"},{name:(0,o.__)("L","jump-links-block-seo-44"),slug:"large",size:"20px"},{name:(0,o.__)("XL","jump-links-block-seo-44"),slug:"extra-large",size:"23px"}],value:w,onChange:e=>k({fontSize:e}),withReset:!0}),(0,l.createElement)(t.PanelColorSettings,{title:(0,o.__)("Colors","jump-links-block-seo-44"),colorSettings:[{value:C,onChange:e=>k({linkColor:e}),label:(0,o.__)("Link Color","jump-links-block-seo-44")},{value:E,onChange:e=>k({textColor:e}),label:(0,o.__)("Other Text Color","jump-links-block-seo-44")}]}),"horizontal"===h&&(0,l.createElement)(l.Fragment,null,(0,l.createElement)("hr",null),(0,l.createElement)("p",null,(0,l.createElement)("strong",null,(0,o.__)("Horizontal Link Styles","jump-links-block-seo-44"))),(0,l.createElement)(t.PanelColorSettings,{title:(0,o.__)("Link Colors","jump-links-block-seo-44"),colorSettings:[{value:f,onChange:e=>k({linkBackgroundColor:e}),label:(0,o.__)("Background","jump-links-block-seo-44")},{value:j,onChange:e=>k({linkBackgroundColorHover:e}),label:(0,o.__)("Background Hover","jump-links-block-seo-44")},{value:x,onChange:e=>k({linkBorderColor:e}),label:(0,o.__)("Border","jump-links-block-seo-44")}]}),(0,l.createElement)(n.RangeControl,{label:(0,o.__)("Link Border Radius","jump-links-block-seo-44"),value:y,onChange:e=>k({linkBorderRadius:e}),min:0,max:50}))),(0,l.createElement)(n.PanelBody,{title:(0,o.__)("Heading Settings","jump-links-block-seo-44")},(0,l.createElement)(n.ToggleControl,{label:(0,o.__)("Show Heading for Jump Links Block (off by default)","jump-links-block-seo-44"),checked:p,onChange:()=>k({showHeading:!p})}),p&&(0,l.createElement)(n.TextControl,{label:(0,o.__)("Heading Text","jump-links-block-seo-44"),value:b,onChange:e=>k({headingText:e})}),(0,l.createElement)("p",null,(0,o.__)("Select heading levels to include:","jump-links-block-seo-44")),(0,l.createElement)(n.CheckboxControl,{label:"H2",checked:m.includes("h2"),onChange:()=>O("h2")}),(0,l.createElement)(n.CheckboxControl,{label:"H3",checked:m.includes("h3"),onChange:()=>O("h3")}),(0,l.createElement)(n.CheckboxControl,{label:"H4",checked:m.includes("h4"),onChange:()=>O("h4")}))),(0,l.createElement)("div",{...L},p&&(0,l.createElement)(t.RichText,{tagName:"div",className:"wp-block-seo44-jump-links-heading",value:b,onChange:e=>k({headingText:e}),placeholder:(0,o.__)("On This Page","jump-links-block-seo-44")}),d.length>0?(0,l.createElement)("nav",{"aria-label":(0,o.__)("Table of contents","jump-links-block-seo-44")},(0,l.createElement)(S,{id:"seo44-jump-links-list"},d.map((e,t)=>g?(0,l.createElement)("li",{key:e.anchor},(0,l.createElement)(n.TextControl,{value:e.linkText,onChange:e=>((e,l)=>{const o=[...d];o[e].linkText=l,k({headings:o})})(t,e)}),(0,l.createElement)("div",{className:"edit-controls-wrapper"},(0,l.createElement)("div",{className:"reorder-buttons"},(0,l.createElement)(n.Button,{icon:r,label:(0,o.__)("Move Up","jump-links-block-seo-44"),onClick:()=>M(t,"up"),disabled:0===t}),(0,l.createElement)(n.Button,{icon:c,label:(0,o.__)("Move Down","jump-links-block-seo-44"),onClick:()=>M(t,"down"),disabled:t===d.length-1})),(0,l.createElement)(n.ToggleControl,{label:!1!==e.isVisible?(0,o.__)("Included","jump-links-block-seo-44"):(0,o.__)("This Jump Link will not be shown","jump-links-block-seo-44"),checked:!1!==e.isVisible,onChange:()=>(e=>{const l=[...d];l[e].isVisible=!l[e].isVisible,k({headings:l})})(t)}))):!1!==e.isVisible&&(0,l.createElement)("li",{key:e.anchor},(0,l.createElement)("a",{href:`#${e.anchor}`,style:B,onClick:e=>e.preventDefault()},e.linkText)))),!g&&_&&d.length>0&&(0,l.createElement)(n.Tooltip,{text:(0,o.__)("This button is functional on the front-end to expand the list.","jump-links-block-seo-44")},(0,l.createElement)("button",{type:"button",className:"seo-44-show-more","aria-label":(0,o.__)("Show More","jump-links-block-seo-44"),"aria-expanded":"false","aria-controls":"seo44-jump-links-list",onClick:()=>{T((0,o.__)('The "Show More" button is interactive on the published page.',"jump-links-block-seo-44"),{type:"snackbar"})}},u))):(0,l.createElement)("p",null,(0,o.__)("No headings found. Select a heading level in the block settings to generate links.","jump-links-block-seo-44"))))},save:function({attributes:e}){const{headings:n,showHeading:i,headingText:a,layout:s,isCollapsible:r,listStyle:c,fontSize:u,textColor:k,linkColor:m,linkBackgroundColor:d,linkBackgroundColorHover:h,linkBorderColor:p,linkBorderRadius:b}=e,g={color:k,fontSize:u,"--jump-link-font-size":u||"18px"},_={"--link-bg-color":"horizontal"===s?d:void 0,borderColor:"horizontal"===s?p:void 0,borderRadius:"horizontal"===s&&b?`${b}px`:void 0,color:m,"--link-bg-hover-color":"horizontal"===s?h:void 0},v="ol"===c?"ol":"ul",w=t.useBlockProps.save({className:`${"horizontal"===s?"is-layout-horizontal":""} ${r?"is-collapsible":""} ${"none"===c?"list-style-none":""}`.trim(),style:g}),E=(0,l.createElement)("svg",{className:"arrow-down",width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M12 16l-6-6 1.41-1.41L12 13.17l4.59-4.58L18 10l-6 6z"})),C=(0,l.createElement)("svg",{className:"arrow-up",width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14l-6-6z"}));return(0,l.createElement)("div",{...w},i&&(0,l.createElement)(t.RichText.Content,{tagName:"div",className:"wp-block-seo44-jump-links-heading",value:a}),n&&n.length>0&&(0,l.createElement)("nav",{"aria-label":(0,o.__)("Table of contents","jump-links-block-seo-44")},(0,l.createElement)(v,{id:"seo44-jump-links-list"},n.filter(e=>!1!==e.isVisible).map(e=>(0,l.createElement)("li",{key:e.anchor},(0,l.createElement)("a",{href:`#${e.anchor}`,style:_},e.linkText)))),r&&(0,l.createElement)("button",{type:"button",className:"seo-44-show-more","aria-label":(0,o.__)("Show More","jump-links-block-seo-44"),"aria-expanded":"false","aria-controls":"seo44-jump-links-list"},E,C)))}})}},o={};function t(e){var n=o[e];if(void 0!==n)return n.exports;var i=o[e]={exports:{}};return l[e](i,i.exports,t),i.exports}t.m=l,e=[],t.O=(l,o,n,i)=>{if(!o){var a=1/0;for(u=0;u<e.length;u++){for(var[o,n,i]=e[u],s=!0,r=0;r<o.length;r++)(!1&i||a>=i)&&Object.keys(t.O).every(e=>t.O[e](o[r]))?o.splice(r--,1):(s=!1,i<a&&(a=i));if(s){e.splice(u--,1);var c=n();void 0!==c&&(l=c)}}return l}i=i||0;for(var u=e.length;u>0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[o,n,i]},t.o=(e,l)=>Object.prototype.hasOwnProperty.call(e,l),(()=>{var e={57:0,350:0};t.O.j=l=>0===e[l];var l=(l,o)=>{var n,i,[a,s,r]=o,c=0;if(a.some(l=>0!==e[l])){for(n in s)t.o(s,n)&&(t.m[n]=s[n]);if(r)var u=r(t)}for(l&&l(o);c<a.length;c++)i=a[c],t.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return t.O(u)},o=globalThis.webpackChunkseo_44_jump_links_block=globalThis.webpackChunkseo_44_jump_links_block||[];o.forEach(l.bind(null,0)),o.push=l.bind(null,o.push.bind(o))})();var n=t.O(void 0,[350],()=>t(313));n=t.O(n)})();1 (()=>{"use strict";var e,l={313:()=>{const e=window.wp.blocks,l=window.React,o=window.wp.i18n,t=window.wp.blockEditor,n=window.wp.components,s=window.wp.data,a=window.wp.element;function i(e){return(new DOMParser).parseFromString(e,"text/html").body.textContent||""}const r=(0,l.createElement)("svg",{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M3 21v-2h18v2zm8-4v-6.175L9.4 12.4L8 11l4-4l4 4l-1.4 1.4l-1.6-1.575V17zM3 5V3h18v2z"})),c=(0,l.createElement)("svg",{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M3 5V3h18v2zm9 12l-4-4l1.4-1.4l1.6 1.575V7h2v6.175l1.6-1.575L16 13zm-9 4v-2h18v2z"})),k=(0,l.createElement)("svg",{className:"arrow-down",width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M12 16l-6-6 1.41-1.41L12 13.17l4.59-4.58L18 10l-6 6z"})),u=JSON.parse('{"UU":"seo44/jump-links"}');(0,e.registerBlockType)(u.UU,{edit:function({attributes:e,setAttributes:u}){const{headingLevels:m,headings:h,showHeading:p,headingText:d,headingTag:b,layout:g,listStyle:_,isEditing:v,isCollapsible:f,isSmartIndentation:x,fontSize:w,textColor:C,linkColor:E,blockBackgroundColor:j,linkBackgroundColor:y,linkBackgroundColorHover:B,linkBorderColor:S,linkBorderRadius:z,isSticky:T,stickyOffset:N,jumpOffset:H,stickyStrategy:M}=e,P={color:C,fontSize:w,"--jump-link-font-size":w||"18px","--seo44-link-color":E,"--seo44-link-bg":"horizontal"===g?y:void 0,"--seo44-link-hover-bg":"horizontal"===g?B:void 0,"--seo44-link-border-color":"horizontal"===g?S:void 0,"--seo44-link-radius":"horizontal"===g&&z?`${z}px`:void 0,"--seo44-block-bg":j,"--seo44-sticky-offset":T?`${N}px`:void 0},O="ol"===_?"ol":"ul",{createInfoNotice:I}=(0,s.useDispatch)("core/notices"),L=e.blockInstanceId?`seo44-jump-links-list-${e.blockInstanceId}`:"seo44-jump-links-list",$=(0,t.useBlockProps)({style:P});$.className=`${$.className} ${"horizontal"===g?"is-layout-horizontal":""} ${f&&!v?"is-collapsible":""} ${"none"===_?"list-style-none":""}`.trim();const D=(0,s.useSelect)(e=>e("core/block-editor").getBlocks(),[]),{updateBlockAttributes:V}=(0,s.useDispatch)("core/block-editor");(0,a.useEffect)(()=>{const l={};e.blockInstanceId||(l.blockInstanceId=Math.random().toString(36).substr(2,9)),Object.keys(l).length>0&&u(l);const t=D.filter(e=>"core/heading"===e.name&&m.includes(`h${e.attributes.level}`)),n=new Set;let s=!1;const a=new Map(h.map(e=>[e.anchor,e])),r=[];for(const e of t){const l=i(e.attributes.content);let o=e.attributes.anchor||l.toLowerCase().replace(/[^a-z0-9\s-]/g,"").trim().replace(/\s+/g,"-"),t=o,c=2;for(;n.has(t);)t=`${o}-${c}`,c++,s=!0;n.add(t),e.attributes.anchor!==t&&V(e.clientId,{anchor:t});const k=a.get(e.attributes.anchor)||a.get(t),u=k&&k.linkText!==k.text?k.linkText:l,m=!k||k.isVisible;r.push({anchor:t,text:l,linkText:u,isVisible:m,level:e.attributes.level})}JSON.stringify(r)!==JSON.stringify(h)&&u({headings:r}),s&&I((0,o.__)("Jump Links Block: Duplicate headings were found. Unique IDs have been auto-generated, but this may be a sign of redundancy. Please review your headings for clarity.","jump-links-block-seo-44"),{type:"snackbar"})},[D,m,h,e.blockInstanceId,u,V,I]),(0,a.useEffect)(()=>{"horizontal"===g&&"none"!==_&&u({listStyle:"none"})},[g,_,u]);const R=(e,l)=>{const o=[...h],t=o.splice(e,1)[0];"up"===l?o.splice(e-1,0,t):o.splice(e+1,0,t),u({headings:o})},J=e=>{const l=m.includes(e)?m.filter(l=>l!==e):[...m,e];u({headingLevels:l.sort()})};return(0,l.createElement)(a.Fragment,null,(0,l.createElement)(t.InspectorControls,null,(0,l.createElement)(n.PanelBody,{title:(0,o.__)("Presentation","jump-links-block-seo-44")},(0,l.createElement)(n.ButtonGroup,null,(0,l.createElement)(n.Button,{isPrimary:!v,isPressed:!v,onClick:()=>u({isEditing:!1})},(0,o.__)("Viewing Mode","jump-links-block-seo-44")),(0,l.createElement)(n.Button,{isPrimary:v,isPressed:v,onClick:()=>u({isEditing:!0})},(0,o.__)("Editing Mode","jump-links-block-seo-44"))),(0,l.createElement)("p",{className:"description"},(0,o.__)("Switch to Editing Mode to customize link text, visibility, and order.","jump-links-block-seo-44"))),(0,l.createElement)(n.PanelBody,{title:(0,o.__)("Appearance","jump-links-block-seo-44")},(0,l.createElement)("p",null,(0,l.createElement)("strong",null,(0,o.__)("Layout","jump-links-block-seo-44"))),(0,l.createElement)(n.ButtonGroup,null,(0,l.createElement)(n.Button,{isPrimary:"vertical"===g,isPressed:"vertical"===g,onClick:()=>u({layout:"vertical"})},(0,o.__)("Vertical","jump-links-block-seo-44")),(0,l.createElement)(n.Button,{isPrimary:"horizontal"===g,isPressed:"horizontal"===g,onClick:()=>u({layout:"horizontal"})},(0,o.__)("Horizontal","jump-links-block-seo-44"))),(0,l.createElement)(n.ToggleControl,{label:(0,o.__)("Make Jump Links Area Expandable","jump-links-block-seo-44"),help:(0,o.__)('Conserve screen space by collapsing a long list of jump links, providing users with an elegant "show more" button to see the entire list.',"jump-links-block-seo-44"),checked:f,onChange:()=>u({isCollapsible:!f}),__nextHasNoMarginBottom:!0}),(0,l.createElement)(n.SelectControl,{label:(0,o.__)("List Style","jump-links-block-seo-44"),value:_,options:[{label:(0,o.__)("Bulleted","jump-links-block-seo-44"),value:"ul"},{label:(0,o.__)("Numbered","jump-links-block-seo-44"),value:"ol"},{label:(0,o.__)("None","jump-links-block-seo-44"),value:"none"}],onChange:e=>u({listStyle:e}),disabled:"horizontal"===g,__nextHasNoMarginBottom:!0,__next40pxDefaultSize:!0}),(0,l.createElement)(n.FontSizePicker,{fontSizes:[{name:(0,o.__)("S","jump-links-block-seo-44"),slug:"small",size:"14px"},{name:(0,o.__)("M","jump-links-block-seo-44"),slug:"normal",size:"17px"},{name:(0,o.__)("L","jump-links-block-seo-44"),slug:"large",size:"20px"},{name:(0,o.__)("XL","jump-links-block-seo-44"),slug:"extra-large",size:"23px"}],value:w,onChange:e=>u({fontSize:e}),withReset:!0,__next40pxDefaultSize:!0}),(0,l.createElement)(t.PanelColorSettings,{title:(0,o.__)("Colors","jump-links-block-seo-44"),colorSettings:[{value:j,onChange:e=>u({blockBackgroundColor:e}),label:(0,o.__)("Block Background","jump-links-block-seo-44")},{value:E,onChange:e=>u({linkColor:e}),label:(0,o.__)("Link Color","jump-links-block-seo-44")},{value:C,onChange:e=>u({textColor:e}),label:(0,o.__)("Other Text Color","jump-links-block-seo-44")}]}),"horizontal"===g&&(0,l.createElement)(a.Fragment,null,(0,l.createElement)("hr",null),(0,l.createElement)("p",null,(0,l.createElement)("strong",null,(0,o.__)("Horizontal Link Styles","jump-links-block-seo-44"))),(0,l.createElement)(t.PanelColorSettings,{title:(0,o.__)("Link Colors","jump-links-block-seo-44"),colorSettings:[{value:y,onChange:e=>u({linkBackgroundColor:e}),label:(0,o.__)("Background","jump-links-block-seo-44")},{value:B,onChange:e=>u({linkBackgroundColorHover:e}),label:(0,o.__)("Background Hover","jump-links-block-seo-44")},{value:S,onChange:e=>u({linkBorderColor:e}),label:(0,o.__)("Border","jump-links-block-seo-44")}]}),(0,l.createElement)(n.RangeControl,{label:(0,o.__)("Link Border Radius","jump-links-block-seo-44"),value:z,onChange:e=>u({linkBorderRadius:e}),min:0,max:50,__nextHasNoMarginBottom:!0,__next40pxDefaultSize:!0}))),(0,l.createElement)(n.PanelBody,{title:(0,o.__)("Content Settings","jump-links-block-seo-44")},(0,l.createElement)(n.ToggleControl,{label:(0,o.__)("Display Block Title","jump-links-block-seo-44"),checked:p,onChange:()=>u({showHeading:!p}),__nextHasNoMarginBottom:!0}),p&&(0,l.createElement)(a.Fragment,null,(0,l.createElement)(n.TextControl,{label:(0,o.__)("Title Text","jump-links-block-seo-44"),value:d,onChange:e=>u({headingText:e}),help:(0,o.__)("The text that appears above your list of links.","jump-links-block-seo-44")}),(0,l.createElement)(n.SelectControl,{label:(0,o.__)("Title Tag","jump-links-block-seo-44"),value:b,options:[{label:"H2",value:"h2"},{label:"H3",value:"h3"},{label:"H4",value:"h4"},{label:"H5",value:"h5"},{label:"Paragraph (Bold)",value:"p"},{label:"Div (No Semantic Value)",value:"div"}],onChange:e=>u({headingTag:e}),help:(0,o.__)("Choose a level that fits your page's structure.","search-appearance-toolkit-seo-44"),__nextHasNoMarginBottom:!0,__next40pxDefaultSize:!0})),(0,l.createElement)("hr",null),(0,l.createElement)("p",null,(0,l.createElement)("strong",null,(0,o.__)("Included Headings","jump-links-block-seo-44"))),(0,l.createElement)("p",{className:"description",style:{marginBottom:"10px"}},(0,o.__)("Select which heading levels from your post content should appear in the jump links list.","jump-links-block-seo-44")),(0,l.createElement)(n.CheckboxControl,{label:"H2",checked:m.includes("h2"),onChange:()=>J("h2")}),(0,l.createElement)(n.CheckboxControl,{label:"H3",checked:m.includes("h3"),onChange:()=>J("h3")}),(0,l.createElement)(n.CheckboxControl,{label:"H4",checked:m.includes("h4"),onChange:()=>J("h4")}),(0,l.createElement)(n.ToggleControl,{label:(0,o.__)("Create Visual Hierarchy","jump-links-block-seo-44"),help:(0,o.__)("Indents sub-headings (H3, H4) to create a nested outline structure.","jump-links-block-seo-44"),checked:x,onChange:()=>u({isSmartIndentation:!x}),__nextHasNoMarginBottom:!0})),(0,l.createElement)(n.PanelBody,{title:(0,o.__)("Position Settings","jump-links-block-seo-44")},(0,l.createElement)(n.ToggleControl,{label:(0,o.__)("Sticky Position","jump-links-block-seo-44"),help:(0,o.__)("Keep the table of contents visible while scrolling.","jump-links-block-seo-44"),checked:T,onChange:()=>u({isSticky:!T}),__nextHasNoMarginBottom:!0}),T&&(0,l.createElement)(a.Fragment,null,(0,l.createElement)("p",{className:"description",style:{marginBottom:"15px"}},(0,o.__)("Customize how the block behaves when it sticks to the top of the screen.","jump-links-block-seo-44")),(0,l.createElement)(n.RangeControl,{label:(0,o.__)("Top Offset (px)","jump-links-block-seo-44"),help:(0,o.__)("The distance between the top of the screen and the block when stuck (useful for clearing sticky headers).","jump-links-block-seo-44"),value:N,onChange:e=>u({stickyOffset:e}),min:0,max:200,__nextHasNoMarginBottom:!0,__next40pxDefaultSize:!0}),(0,l.createElement)(n.RangeControl,{label:(0,o.__)("Jump Offset (px)","jump-links-block-seo-44"),help:(0,o.__)("The buffer distance to stop *before* the heading. Increase this if your sticky header covers the text.","jump-links-block-seo-44"),value:H,onChange:e=>u({jumpOffset:e}),min:0,max:200,__nextHasNoMarginBottom:!0,__next40pxDefaultSize:!0}),(0,l.createElement)(n.ToggleControl,{label:(0,o.__)("Disable on Mobile","jump-links-block-seo-44"),help:(0,o.__)("Prevents the block from sticking on small screens to save reading space.","jump-links-block-seo-44"),checked:"desktop-only"===M,onChange:e=>u({stickyStrategy:e?"desktop-only":"always"}),__nextHasNoMarginBottom:!0})))),(0,l.createElement)("div",{...$},p&&(0,l.createElement)(t.RichText,{tagName:b,className:"wp-block-seo44-jump-links-heading",value:d,onChange:e=>u({headingText:e}),placeholder:(0,o.__)("On This Page","jump-links-block-seo-44")}),h.length>0?(0,l.createElement)("nav",{"aria-label":(0,o.__)("Table of contents","jump-links-block-seo-44")},(0,l.createElement)(O,{id:L},h.map((e,t)=>v?(0,l.createElement)("li",{key:e.anchor},(0,l.createElement)(n.TextControl,{value:e.linkText,onChange:e=>((e,l)=>{const o=[...h];o[e].linkText=l,u({headings:o})})(t,e)}),(0,l.createElement)("div",{className:"edit-controls-wrapper"},(0,l.createElement)("div",{className:"reorder-buttons"},(0,l.createElement)(n.Button,{icon:r,label:(0,o.__)("Move Up","jump-links-block-seo-44"),onClick:()=>R(t,"up"),disabled:0===t}),(0,l.createElement)(n.Button,{icon:c,label:(0,o.__)("Move Down","jump-links-block-seo-44"),onClick:()=>R(t,"down"),disabled:t===h.length-1})),(0,l.createElement)(n.ToggleControl,{label:!1!==e.isVisible?(0,o.__)("Included","jump-links-block-seo-44"):(0,o.__)("This Jump Link will not be shown","jump-links-block-seo-44"),checked:!1!==e.isVisible,onChange:()=>(e=>{const l=[...h];l[e].isVisible=!l[e].isVisible,u({headings:l})})(t),__nextHasNoMarginBottom:!0}))):!1!==e.isVisible&&(0,l.createElement)("li",{key:e.anchor,className:x?`seo44-jump-link-level-${e.level}`:""},(0,l.createElement)("a",{href:`#${e.anchor}`,onClick:e=>e.preventDefault()},e.linkText)))),!v&&f&&h.length>0&&(0,l.createElement)(n.Tooltip,{text:(0,o.__)("This button is functional on the front-end to expand the list.","jump-links-block-seo-44")},(0,l.createElement)("button",{type:"button",className:"seo-44-show-more","aria-label":(0,o.__)("Show More","jump-links-block-seo-44"),"aria-expanded":"false","aria-controls":L,onClick:()=>{I((0,o.__)('The "Show More" button is interactive on the published page.',"jump-links-block-seo-44"),{type:"snackbar"})}},k))):(0,l.createElement)("p",null,(0,o.__)("No headings found. Select a heading level in the block settings to generate links.","jump-links-block-seo-44"))))},save:function({attributes:e}){const{blockInstanceId:n,layout:s,isCollapsible:a,isSmartIndentation:i,headings:r,showHeading:c,headingText:k,headingTag:u,listStyle:m,fontSize:h,textColor:p,linkColor:d,blockBackgroundColor:b,linkBackgroundColor:g,linkBackgroundColorHover:_,linkBorderColor:v,linkBorderRadius:f,isSticky:x,stickyOffset:w,jumpOffset:C,stickyStrategy:E}=e,j={color:p,fontSize:h,"--jump-link-font-size":h||"18px","--seo44-block-bg":b,"--seo44-link-color":d,"--seo44-link-bg":"horizontal"===s?g:void 0,"--seo44-link-hover-bg":"horizontal"===s?_:void 0,"--seo44-link-border-color":"horizontal"===s?v:void 0,"--seo44-link-radius":"horizontal"===s&&f?`${f}px`:void 0,"--seo44-sticky-offset":x?`${w}px`:void 0},y="ol"===m?"ol":"ul",B=`seo44-jump-links-list-${n}`,S=t.useBlockProps.save({className:`${"horizontal"===s?"is-layout-horizontal":""} ${a?"is-collapsible":""} ${"none"===m?"list-style-none":""} ${x?"is-sticky":""} ${"desktop-only"===E?"sticky-desktop-only":""}`.trim(),style:j,"data-seo44-jump-offset":x?C:30}),z=(0,l.createElement)("svg",{className:"arrow-down",width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M12 16l-6-6 1.41-1.41L12 13.17l4.59-4.58L18 10l-6 6z"})),T=(0,l.createElement)("svg",{className:"arrow-up",width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14l-6-6z"}));return(0,l.createElement)("div",{...S},(0,l.createElement)("div",{className:"seo44-sticky-sentinel","aria-hidden":"true"}),c&&(0,l.createElement)(t.RichText.Content,{tagName:u||"h2",className:"wp-block-seo44-jump-links-heading",value:k}),r&&r.length>0&&(0,l.createElement)("nav",{"aria-label":(0,o.__)("Table of contents","jump-links-block-seo-44")},(0,l.createElement)(y,{id:B},r.filter(e=>!1!==e.isVisible).map(e=>(0,l.createElement)("li",{key:e.anchor,className:i?`seo44-jump-link-level-${e.level}`:""},(0,l.createElement)("a",{href:`#${e.anchor}`},e.linkText)))),a&&(0,l.createElement)("button",{type:"button",className:"seo-44-show-more","aria-label":(0,o.__)("Show More","jump-links-block-seo-44"),"aria-expanded":"false","aria-controls":B},z,T)))}})}},o={};function t(e){var n=o[e];if(void 0!==n)return n.exports;var s=o[e]={exports:{}};return l[e](s,s.exports,t),s.exports}t.m=l,e=[],t.O=(l,o,n,s)=>{if(!o){var a=1/0;for(k=0;k<e.length;k++){for(var[o,n,s]=e[k],i=!0,r=0;r<o.length;r++)(!1&s||a>=s)&&Object.keys(t.O).every(e=>t.O[e](o[r]))?o.splice(r--,1):(i=!1,s<a&&(a=s));if(i){e.splice(k--,1);var c=n();void 0!==c&&(l=c)}}return l}s=s||0;for(var k=e.length;k>0&&e[k-1][2]>s;k--)e[k]=e[k-1];e[k]=[o,n,s]},t.o=(e,l)=>Object.prototype.hasOwnProperty.call(e,l),(()=>{var e={57:0,350:0};t.O.j=l=>0===e[l];var l=(l,o)=>{var n,s,[a,i,r]=o,c=0;if(a.some(l=>0!==e[l])){for(n in i)t.o(i,n)&&(t.m[n]=i[n]);if(r)var k=r(t)}for(l&&l(o);c<a.length;c++)s=a[c],t.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return t.O(k)},o=globalThis.webpackChunkseo_44_jump_links_block=globalThis.webpackChunkseo_44_jump_links_block||[];o.forEach(l.bind(null,0)),o.push=l.bind(null,o.push.bind(o))})();var n=t.O(void 0,[350],()=>t(313));n=t.O(n)})(); -
jump-links-block-seo-44/tags/2.0/build/style-index-rtl.css
r3400036 r3403606 1 .wp-block-seo44-jump-links{ margin-bottom:1em}.wp-block-seo44-jump-links-heading{flex-basis:100%;font-size:calc(var(--jump-link-font-size, 1em)*1.375)}.wp-block-seo44-jump-links.list-style-none>ul{list-style-type:none;padding-right:0}.wp-block-seo44-jump-links.is-layout-horizontal ol,.wp-block-seo44-jump-links.is-layout-horizontal ul{display:flex;flex-wrap:wrap;gap:.5em;list-style-type:none;margin:.5em 0 1em;padding:0}.wp-block-seo44-jump-links.is-layout-horizontal li a{background-color:var(--link-bg-color);border-style:solid;border-width:1px;display:inline-block;padding:.5em 1em;text-decoration:none}.wp-block-seo44-jump-links.is-layout-horizontal li a:hover{background-color:var(--link-bg-hover-color);text-decoration:underline;text-underline-offset:.1em}.wp-block-seo44-jump-links.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-collapsible>nav>ul{flex-wrap:wrap;max-height:2.5em;overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links .seo-44-show-more{border:1px solid;border-radius:4px;cursor:pointer;display:none;line-height:1;padding:0}.wp-block-seo44-jump-links .seo-44-show-more svg{fill:currentColor;height:30px;width:30px}.wp-block-seo44-jump-links .seo-44-show-more .arrow-up,.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-down{display:none}.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-up{display:inline-block}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ol,.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ul{display:inline-block;max-height:calc(var(--jump-link-font-size, 1em)*1.7*2);max-width:calc(100% - 40px);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal) .seo-44-show-more{margin-top:calc(var(--jump-link-font-size, 1em)*1.8);vertical-align:top}.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ul{max-height:calc(var(--jump-link-font-size, 1em)*1.7 + 1.5em);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ul{max-height:1000px}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav{align-items:flex-start;display:flex;flex-wrap:wrap;gap:.5em}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ul{flex-basis:0;flex-grow:1}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>.seo-44-show-more{flex-shrink:0;margin-top:.5em}1 .wp-block-seo44-jump-links{background-color:var(--seo44-block-bg);margin-bottom:var(--wp--preset--spacing--30);margin-top:var(--wp--preset--spacing--30);padding:var(--wp--preset--spacing--30)}.wp-block-seo44-jump-links-heading{flex-basis:100%}.wp-block-seo44-jump-links nav>ol li,.wp-block-seo44-jump-links nav>ul li{margin:0;padding:0}.wp-block-seo44-jump-links.list-style-none nav>ol,.wp-block-seo44-jump-links.list-style-none nav>ul{list-style-type:none;padding-right:0}.wp-block-seo44-jump-links.is-layout-horizontal ol,.wp-block-seo44-jump-links.is-layout-horizontal ul{display:flex;flex-wrap:wrap;gap:0 .5em;list-style-type:none;margin:-.5em 0 0;padding:0}.wp-block-seo44-jump-links.is-layout-horizontal ol li,.wp-block-seo44-jump-links.is-layout-horizontal ul li{margin:.5em 0 0}.wp-block-seo44-jump-links li a{color:var(--seo44-link-color,#0073aa)}.wp-block-seo44-jump-links.is-layout-horizontal li a{background-color:var(--seo44-link-bg);border-color:var(--seo44-link-border-color);border-radius:var(--seo44-link-radius);border-style:solid;border-width:1px;display:inline-block;padding:.5em 1em;text-decoration:none}.wp-block-seo44-jump-links.is-layout-horizontal li a:hover{background-color:var(--seo44-link-hover-bg);text-decoration:underline;text-underline-offset:.1em}.wp-block-seo44-jump-links.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-collapsible>nav>ul{flex-wrap:wrap;max-height:2.5em;overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links .seo-44-show-more{border:1px solid;border-radius:4px;cursor:pointer;display:none;line-height:1;padding:0}.wp-block-seo44-jump-links .seo-44-show-more svg{fill:currentColor;height:30px;width:30px}.wp-block-seo44-jump-links .seo-44-show-more .arrow-up,.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-down{display:none}.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-up{display:inline-block}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ol,.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ul{display:inline-block;max-height:calc(var(--jump-link-font-size, 1em)*1.9*2);max-width:calc(100% - 40px);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal) .seo-44-show-more{margin-top:calc(var(--jump-link-font-size, 1em)*1.8);vertical-align:top}.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ul{max-height:calc(var(--jump-link-font-size, 1em)*1.7 + 1.5em);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ul{max-height:1000px}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav{align-items:flex-start;display:flex;flex-wrap:wrap;gap:.5em}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ul{flex-basis:0;flex-grow:1}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>.seo-44-show-more{flex-shrink:0;margin-top:.5em}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ul li.seo44-jump-link-level-3{font-size:.95em;margin-right:1.5em;opacity:.9}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ul li.seo44-jump-link-level-4{font-size:.9em;list-style-type:circle;margin-right:3em;opacity:.85}.wp-block-seo44-jump-links.list-style-none nav>ol li.seo44-jump-link-level-4,.wp-block-seo44-jump-links.list-style-none nav>ul li.seo44-jump-link-level-4{list-style-type:none}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ol li.seo44-jump-link-level-3{font-size:.95em;opacity:.9;padding-right:1.5em}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ol li.seo44-jump-link-level-4{font-size:.9em;opacity:.85;padding-right:3em}.wp-block-seo44-jump-links.is-sticky{background-color:var(--seo44-block-bg,#fff);position:sticky;position:-webkit-sticky;top:var(--seo44-sticky-offset,20px);z-index:10}@media(max-width:781px){.wp-block-seo44-jump-links.is-sticky.sticky-desktop-only{position:static;top:auto}}.wp-block-seo44-jump-links.is-sticky.is-stuck a.is-active{color:var(--seo44-link-color);font-weight:700}.wp-block-seo44-jump-links.is-sticky.is-stuck.is-layout-horizontal a.is-active{background-color:var(--seo44-link-hover-bg);text-decoration:none}.wp-block-seo44-jump-links.is-sticky.is-stuck:not(.is-layout-horizontal) a.is-active{border-right:3px solid var(--seo44-link-color);padding-right:.5em}.wp-block-seo44-jump-links{position:relative}.seo44-sticky-sentinel{height:1px;right:0;pointer-events:none;position:absolute;left:0;top:calc((var(--seo44-sticky-offset, 20px) + 3px)*-1);visibility:hidden}.wp-block-seo44-jump-links.is-sticky.is-stuck .wp-block-seo44-jump-links-heading{margin:0;max-height:0;opacity:0;overflow:hidden;transition:max-height .5s ease 1s,opacity .3s ease 1s,margin .5s ease 1s}.wp-block-seo44-jump-links-heading{margin-bottom:.25em;margin-top:0;max-height:100px;opacity:1;transition:max-height .5s ease,opacity .3s ease,margin .5s ease} -
jump-links-block-seo-44/tags/2.0/build/style-index.css
r3400036 r3403606 1 .wp-block-seo44-jump-links{ margin-bottom:1em}.wp-block-seo44-jump-links-heading{flex-basis:100%;font-size:calc(var(--jump-link-font-size, 1em)*1.375)}.wp-block-seo44-jump-links.list-style-none>ul{list-style-type:none;padding-left:0}.wp-block-seo44-jump-links.is-layout-horizontal ol,.wp-block-seo44-jump-links.is-layout-horizontal ul{display:flex;flex-wrap:wrap;gap:.5em;list-style-type:none;margin:.5em 0 1em;padding:0}.wp-block-seo44-jump-links.is-layout-horizontal li a{background-color:var(--link-bg-color);border-style:solid;border-width:1px;display:inline-block;padding:.5em 1em;text-decoration:none}.wp-block-seo44-jump-links.is-layout-horizontal li a:hover{background-color:var(--link-bg-hover-color);text-decoration:underline;text-underline-offset:.1em}.wp-block-seo44-jump-links.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-collapsible>nav>ul{flex-wrap:wrap;max-height:2.5em;overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links .seo-44-show-more{border:1px solid;border-radius:4px;cursor:pointer;display:none;line-height:1;padding:0}.wp-block-seo44-jump-links .seo-44-show-more svg{fill:currentColor;height:30px;width:30px}.wp-block-seo44-jump-links .seo-44-show-more .arrow-up,.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-down{display:none}.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-up{display:inline-block}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ol,.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ul{display:inline-block;max-height:calc(var(--jump-link-font-size, 1em)*1.7*2);max-width:calc(100% - 40px);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal) .seo-44-show-more{margin-top:calc(var(--jump-link-font-size, 1em)*1.8);vertical-align:top}.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ul{max-height:calc(var(--jump-link-font-size, 1em)*1.7 + 1.5em);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ul{max-height:1000px}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav{align-items:flex-start;display:flex;flex-wrap:wrap;gap:.5em}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ul{flex-basis:0;flex-grow:1}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>.seo-44-show-more{flex-shrink:0;margin-top:.5em}1 .wp-block-seo44-jump-links{background-color:var(--seo44-block-bg);margin-bottom:var(--wp--preset--spacing--30);margin-top:var(--wp--preset--spacing--30);padding:var(--wp--preset--spacing--30)}.wp-block-seo44-jump-links-heading{flex-basis:100%}.wp-block-seo44-jump-links nav>ol li,.wp-block-seo44-jump-links nav>ul li{margin:0;padding:0}.wp-block-seo44-jump-links.list-style-none nav>ol,.wp-block-seo44-jump-links.list-style-none nav>ul{list-style-type:none;padding-left:0}.wp-block-seo44-jump-links.is-layout-horizontal ol,.wp-block-seo44-jump-links.is-layout-horizontal ul{display:flex;flex-wrap:wrap;gap:0 .5em;list-style-type:none;margin:-.5em 0 0;padding:0}.wp-block-seo44-jump-links.is-layout-horizontal ol li,.wp-block-seo44-jump-links.is-layout-horizontal ul li{margin:.5em 0 0}.wp-block-seo44-jump-links li a{color:var(--seo44-link-color,#0073aa)}.wp-block-seo44-jump-links.is-layout-horizontal li a{background-color:var(--seo44-link-bg);border-color:var(--seo44-link-border-color);border-radius:var(--seo44-link-radius);border-style:solid;border-width:1px;display:inline-block;padding:.5em 1em;text-decoration:none}.wp-block-seo44-jump-links.is-layout-horizontal li a:hover{background-color:var(--seo44-link-hover-bg);text-decoration:underline;text-underline-offset:.1em}.wp-block-seo44-jump-links.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-collapsible>nav>ul{flex-wrap:wrap;max-height:2.5em;overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links .seo-44-show-more{border:1px solid;border-radius:4px;cursor:pointer;display:none;line-height:1;padding:0}.wp-block-seo44-jump-links .seo-44-show-more svg{fill:currentColor;height:30px;width:30px}.wp-block-seo44-jump-links .seo-44-show-more .arrow-up,.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-down{display:none}.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-up{display:inline-block}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ol,.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ul{display:inline-block;max-height:calc(var(--jump-link-font-size, 1em)*1.9*2);max-width:calc(100% - 40px);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal) .seo-44-show-more{margin-top:calc(var(--jump-link-font-size, 1em)*1.8);vertical-align:top}.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ul{max-height:calc(var(--jump-link-font-size, 1em)*1.7 + 1.5em);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ul{max-height:1000px}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav{align-items:flex-start;display:flex;flex-wrap:wrap;gap:.5em}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ul{flex-basis:0;flex-grow:1}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>.seo-44-show-more{flex-shrink:0;margin-top:.5em}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ul li.seo44-jump-link-level-3{font-size:.95em;margin-left:1.5em;opacity:.9}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ul li.seo44-jump-link-level-4{font-size:.9em;list-style-type:circle;margin-left:3em;opacity:.85}.wp-block-seo44-jump-links.list-style-none nav>ol li.seo44-jump-link-level-4,.wp-block-seo44-jump-links.list-style-none nav>ul li.seo44-jump-link-level-4{list-style-type:none}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ol li.seo44-jump-link-level-3{font-size:.95em;opacity:.9;padding-left:1.5em}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ol li.seo44-jump-link-level-4{font-size:.9em;opacity:.85;padding-left:3em}.wp-block-seo44-jump-links.is-sticky{background-color:var(--seo44-block-bg,#fff);position:sticky;position:-webkit-sticky;top:var(--seo44-sticky-offset,20px);z-index:10}@media(max-width:781px){.wp-block-seo44-jump-links.is-sticky.sticky-desktop-only{position:static;top:auto}}.wp-block-seo44-jump-links.is-sticky.is-stuck a.is-active{color:var(--seo44-link-color);font-weight:700}.wp-block-seo44-jump-links.is-sticky.is-stuck.is-layout-horizontal a.is-active{background-color:var(--seo44-link-hover-bg);text-decoration:none}.wp-block-seo44-jump-links.is-sticky.is-stuck:not(.is-layout-horizontal) a.is-active{border-left:3px solid var(--seo44-link-color);padding-left:.5em}.wp-block-seo44-jump-links{position:relative}.seo44-sticky-sentinel{height:1px;left:0;pointer-events:none;position:absolute;right:0;top:calc((var(--seo44-sticky-offset, 20px) + 3px)*-1);visibility:hidden}.wp-block-seo44-jump-links.is-sticky.is-stuck .wp-block-seo44-jump-links-heading{margin:0;max-height:0;opacity:0;overflow:hidden;transition:max-height .5s ease 1s,opacity .3s ease 1s,margin .5s ease 1s}.wp-block-seo44-jump-links-heading{margin-bottom:.25em;margin-top:0;max-height:100px;opacity:1;transition:max-height .5s ease,opacity .3s ease,margin .5s ease} -
jump-links-block-seo-44/tags/2.0/build/view.asset.php
r3400036 r3403606 1 <?php return array('dependencies' => array(), 'version' => ' dddf910b044fd87910cb');1 <?php return array('dependencies' => array(), 'version' => '5d75a6211fafff395ca9'); -
jump-links-block-seo-44/tags/2.0/build/view.js
r3400036 r3403606 1 window.addEventListener("load",function(){document.querySelectorAll(".wp-block-seo44-jump-links").forEach(e=>{if(e. querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.getAttribute("href"),s=document.querySelector(t);s&&s.scrollIntoView({behavior:"smooth"})})}),e.classList.contains("is-collapsible")){const t=e.querySelector(".seo-44-show-more");if(t){t.style.display="inline-block";const s=window.seo44JumpLinksL10n||{},o=s.showMore||"Show More",i=s.showLess||"Show Less";t.setAttribute("aria-label",o),t.addEventListener("click",function(){e.classList.toggle("is-expanded");const s=e.classList.contains("is-expanded");t.setAttribute("aria-expanded",s),s?t.setAttribute("aria-label",i):t.setAttribute("aria-label",o)})}}})});1 window.addEventListener("load",function(){document.querySelectorAll(".wp-block-seo44-jump-links").forEach(e=>{if(e.addEventListener("click",function(t){const s=t.target.closest('a[href^="#"]');if(s){t.preventDefault();const o=s.getAttribute("href"),i=document.querySelector(o);if(i)if(e.classList.contains("is-sticky")){let t=30;const s=e.getAttribute("data-seo44-jump-offset");s&&(t=parseInt(s,10));const o=i.getBoundingClientRect().top+window.scrollY-t;window.scrollTo({top:o,behavior:"smooth"})}else i.scrollIntoView({behavior:"smooth"})}}),e.classList.contains("is-collapsible")){const t=e.querySelector(".seo-44-show-more");if(t){t.style.display="inline-block";const s=window.seo44JumpLinksL10n||{},o=s.showMore||"Show More",i=s.showLess||"Show Less";t.setAttribute("aria-label",o),t.addEventListener("click",function(){e.classList.toggle("is-expanded");const s=e.classList.contains("is-expanded");t.setAttribute("aria-expanded",s),s?t.setAttribute("aria-label",i):t.setAttribute("aria-label",o)})}}if(e.classList.contains("is-sticky")&&"IntersectionObserver"in window){const t=new IntersectionObserver(t=>{t.forEach(t=>{!t.isIntersecting&&t.boundingClientRect.top<0?e.classList.add("is-stuck"):e.classList.remove("is-stuck")})},{threshold:0,rootMargin:"0px"});e.querySelectorAll(".seo44-sticky-sentinel").forEach(e=>{t.observe(e)})}if("IntersectionObserver"in window){const t=new IntersectionObserver(t=>{t.forEach(t=>{if(t.isIntersecting){const s=t.target.getAttribute("id"),o=e.querySelector(`a[href="#${s}"]`);o&&(e.querySelectorAll("a").forEach(e=>e.classList.remove("is-active")),o.classList.add("is-active"))}})},{root:null,rootMargin:"-100px 0px -60% 0px",threshold:0});e.querySelectorAll('a[href^="#"]').forEach(e=>{const s=e.getAttribute("href").substring(1),o=document.getElementById(s);o&&t.observe(o)})}})}); -
jump-links-block-seo-44/tags/2.0/changelog.txt
r3400046 r3403606 1 1 == Changelog == 2 3 = 2.0.0 = 4 * FEATURE: **Sticky Positioning:** Keep your table of contents visible while users scroll. Includes a "Top Offset" slider to clear sticky headers, a "Jump Offset" slider to ensure that the sticky header does not cover the heading text, and a "Disable on Mobile" toggle to preserve screen space on small devices. 5 * FEATURE: **Auto-Hide Title:** Implemented a smart "sticky state" detection. When the block sticks, the title gently collapses and fades out to keep the interface clean (this occurs when a block title is used alongside sticky positioning). 6 * FEATURE: **Smart Indentation:** Added a "Create Visual Hierarchy" toggle. When enabled, H3 and H4 sub-headings are visually indented to create a clear, nested outline structure. 7 * FEATURE: **Block Background:** You can now set a background color for the entire block container, perfect for creating "card-style" floating navigation. 8 * FEATURE: **ScrollSpy:** Automatically highlights the active link in the table of contents as the user scrolls through the corresponding section of the post. 9 10 = 1.9.2 = 11 * FEATURE: Added support for Border and Spacing controls. You can now add borders, rounded corners, margins, and padding to the Jump Links block directly from the editor settings. 12 * FEATURE: Added a "Heading Level" control. You can now choose the specific HTML tag (H2, H3, H4, H5, Paragraph, or Div) for the "On This Page" heading to better match your document structure. 13 * REFACTOR: Optimized the block's styling logic to use CSS variables on the parent container instead of inline styles for every link. This reduces the block's HTML size and improves rendering performance. 14 * FIX: Resolved an accessibility and HTML validation issue where using multiple Jump Links blocks on a single page created duplicate element IDs. Each block now generates a unique instance ID. 15 * PERFORMANCE: Refactored the front-end JavaScript to use event delegation for smooth scrolling. This reduces memory usage by attaching a single event listener to the block instead of individual listeners for every link. 16 * TWEAK: Reorganized the sidebar settings for better clarity between Block Title settings and Content Inclusion settings. 17 2 18 = 1.9.1 = 3 19 * **FIX** (readme): Fixed a small typo in the readme.txt file. -
jump-links-block-seo-44/tags/2.0/jump-links-block.php
r3400046 r3403606 4 4 * Plugin URI: https://www.sethcreates.com/plugins-for-wordpress/jump-links-block-seo-44/ 5 5 * Description: A standalone custom block for automatically creating a customizable Jump Links table of contents. 6 * Version: 1.9. 16 * Version: 1.9.2 7 7 * Author: Seth Smigelski 8 8 * Author URI: https://www.sethcreates.com/plugins-for-wordpress/ -
jump-links-block-seo-44/tags/2.0/readme.txt
r3400046 r3403606 4 4 Requires at least: 5.5 5 5 Tested up to: 6.8 6 Stable tag: 1.9.16 Stable tag: 2.0.0 7 7 Requires PHP: 7.4 8 8 License: GPLv2 or later … … 32 32 33 33 **Enhance User Experience** 34 For long articles, a table of contents is essential. It allows readers to easily navigate to the sections they care about most, which reduces bounce rates and increases the time they spend on your page. Search engines place value on these positive user engagement signals.34 For long articles, a table of contents is essential. It allows readers to easily navigate to the sections they care about most, and see exactly where they are in the article at a glance, which reduces bounce rates and increases the time they spend on your page. Search engines place value on these positive user engagement signals. 35 35 36 36 **Provide Clear Context for Search Engines** … … 64 64 * **Layout Control:** Display your links in a standard vertical list or a modern horizontal, button-style layout. 65 65 66 * **List Styles:** Choose between a bulleted list (`<ul>`), a numbered list (`<ol>`), or no list styling at all. 67 66 68 * **Typography:** Control the **font size** with a simple picker, including a reset button. 67 69 68 * ** List Styles:** Choose between a bulleted list (`<ul>`), a numbered list (`<ol>`), or no list styling at all.70 * **Block Background:** Set a background color for the entire block container to make your table of contents pop or match your theme's card style. This setting extends upon the block margin, padding, and border options within the block styling tab. 69 71 70 72 * **Full Color Control:** Use integrated color pickers to customize: **Link Color**, **Other Text Color** (for bullets, numbers, and the main heading). 71 73 72 74 * **Conditional Horizontal Link Styles:** When in the horizontal layout, you can fine-tune the design with controls for **Link Background Color**, **Link Background Color on hover**, **Link Border Color**, and **border radius**. 75 76 * **Visual Hierarchy:** Optional **"Smart Indentation"** creates a nested outline look, making it easier for readers to scan your document structure in a larger Table of Contents (e.g., indenting H3s under H2s). 73 77 74 78 = Front-End Experience = … … 76 80 77 81 * **Collapsible List:** Optional feature to collapse long lists with an elegant "Show More" / "Show Less" SVG icon button to expand and contract the list horizontally or vertically. 82 83 * **Sticky Navigation:** Optionally, keep the table of contents pinned to the viewport as users scroll, ensuring navigation is always accessible for long articles. 84 85 * **Smart Sticky Controls:** Includes a **Top Offset** setting to prevent the block from hiding behind your site's sticky header, a **Jump Offset** setting to ensure that the sticky header does not cover the heading text, and a **Disable on Mobile** strategy to prevent it from blocking content on small screens. 86 87 * **Auto-Hide Title:** When using Sticky Positioning, the block title (e.g., "On This Page") automatically fades out and collapses once the block sticks to the top of the screen. This maximizes reading space while keeping the navigation links accessible. 88 89 * **Active Link Indicator (ScrollSpy):** As your readers scroll through the content, the table of contents automatically highlights the link for the section they are currently reading, giving them instant context on their progress. 78 90 79 91 == Installation == … … 134 146 **Note:** If one of the headings on your page is “Office Directions,” the ID created will be “office-directions.” This could create a potential conflict if you have another ID on your webpage named “office-directions.” In this case, assign a different ID to the block heading to resolve the conflict. 135 147 148 = How do I make the Table of Contents stay visible while scrolling? = 149 In the block settings sidebar, look for the **Position Settings** panel. Toggle on **"Sticky Position"**. 150 You can then use the **"Top Offset"** slider to adjust how far from the top of the screen the block sits (useful if you have a sticky site header). 151 152 = Why isn't the block "sticky" on my phone? = 153 The sticky feature includes a **"Disable on Mobile"** setting that is enabled by default. 154 Sticky elements on mobile devices often cover up too much reading space and lead to a poor user experience. If you want it sticky on mobile, you can uncheck this box in the **Position Settings** panel. 155 156 = Can I include more than one Jump Links Block per page? = 157 Yes. In fact, you can customize the second jump links block to appear different than the first. For example, you might have a horizontal jump links block at the top of your page containing jump links to each H2 heading. Lower on your webpage, you could add a second jump links block formatted as a numbered vertical list of links for each H3 heading in the biggest section of your page. 158 136 159 = Why does the "Show More" button not work in the editor? = 137 160 The collapsible functionality and the **Show More** button, which features a down arrow icon, are front-end features that function using a JavaScript file. They are designed to work only on the live, published page. To give you an accurate preview, the editor displays a non-functional replica of the "Show More" button when the feature is enabled. You can hover over it to see a helpful tooltip, and clicking it will show an informational notice confirming that it's interactive on the front end. … … 152 175 4. Published Vertical Jump Links, expanded and collapsed. 153 176 5. Published Horizontal Jump Links, expanded and collapsed. 177 6. Published Horizontal Jump Links with sticky navigation showing the Active Link Indicator. 154 178 155 179 == Changelog == 156 180 157 = 1.9.1 = 158 * FIX (readme): Fixed a small typo in the readme.txt file. 159 160 = 1.9.0 = 161 * HELLO WORLD: Initial release to the WordPress Plugin Directory. 181 = 2.0.0 = 182 * FEATURE: **Sticky Positioning:** Keep your table of contents visible while users scroll. Includes a "Top Offset" slider to clear sticky headers, a "Jump Offset" slider to ensure that the sticky header does not cover the heading text, and a "Disable on Mobile" toggle to preserve screen space on small devices. 183 * FEATURE: **Auto-Hide Title:** Implemented a smart "sticky state" detection. When the block sticks, the title gently collapses and fades out to keep the interface clean (this occurs when a block title is used alongside sticky positioning). 184 * FEATURE: **Smart Indentation:** Added a "Create Visual Hierarchy" toggle. When enabled, H3 and H4 sub-headings are visually indented to create a clear, nested outline structure. 185 * FEATURE: **Block Background:** You can now set a background color for the entire block container, perfect for creating "card-style" floating navigation. 186 * FEATURE: **ScrollSpy:** Automatically highlights the active link in the table of contents as the user scrolls through the corresponding section of the post. 187 188 = 1.9.2 = 189 * FEATURE: Added support for Border and Spacing controls. You can now add borders, rounded corners, margins, and padding to the Jump Links block directly from the editor settings. 190 * FEATURE: Added a "Title tag" control. You can now choose the specific HTML tag (H2, H3, H4, H5, Paragraph, or Div) for the "On This Page" heading to better match your document structure. 191 * REFACTOR: Optimized the block's styling logic to use CSS variables on the parent container instead of inline styles for every link. This reduces the block's HTML size and improves rendering performance. 192 * FIX: Resolved an accessibility and HTML validation issue where using multiple Jump Links blocks on a single page created duplicate element IDs. Each block now generates a unique instance ID. 193 * PERFORMANCE: Refactored the front-end JavaScript to use event delegation for smooth scrolling. This reduces memory usage by attaching a single event listener to the block instead of individual listeners for every link. 194 * TWEAK: Reorganized the sidebar settings for better clarity between Block Title settings and Content Inclusion settings. 195 162 196 163 197 For a complete list of changes, please see the [full changelog](https://seo44plugin.com/jump-links-block-seo-44/changelog/) or the changelog.txt file included with the plugin. -
jump-links-block-seo-44/trunk/README.md
r3400046 r3403606 6 6 * **Requires at least:** 5.5 7 7 * **Tested up to:** 6.8 8 * **Stable tag:** 1.9.18 * **Stable tag:** 2.0.0 9 9 * **Requires PHP:** 7.4 10 10 * **License:** GPLv2 or later … … 36 36 37 37 **Enhance User Experience:** 38 For long articles, a table of contents is essential. It allows readers to easily navigate to the sections they care about most, which reduces bounce rates and increases the time they spend on your page. Search engines place value on these positive user engagement signals.38 For long articles, a table of contents is essential. It allows readers to easily navigate to the sections they care about most, and see exactly where they are in the article at a glance, which reduces bounce rates and increases the time they spend on your page. Search engines place value on these positive user engagement signals. 39 39 40 40 **Provide Clear Context for Search Engines:** … … 72 72 73 73 * **Layout Control:** Display your links in a standard vertical list or a modern horizontal, button-style layout. 74 75 * **List Styles:** Choose between a bulleted list (`<ul>`), a numbered list (`<ol>`), or no list styling at all. 74 76 75 77 * **Typography:** Control the **font size** with a simple picker, including a reset button. 76 78 77 * ** List Styles:** Choose between a bulleted list (`<ul>`), a numbered list (`<ol>`), or no list styling at all.79 * **Block Background:** Set a background color for the entire block container to make your table of contents pop or match your theme's card style. This setting extends upon the block margin, padding, and border options within the block styling tab. 78 80 79 81 * **Full Color Control:** Use integrated color pickers to customize: **Link Color**, **Other Text Color** (for bullets, numbers, and the main heading). … … 81 83 * **Conditional Horizontal Link Styles:** When in the horizontal layout, you can fine-tune the design with controls for **Link Background Color**, **Link Background Color on hover**, **Link Border Color**, and **border radius**. 82 84 85 * **Visual Hierarchy:** Optional **"Smart Indentation"** creates a nested outline look, making it easier for readers to scan your document structure in a larger Table of Contents (e.g., indenting H3s under H2s). 86 83 87 --- 84 88 … … 88 92 89 93 * **Collapsible List:** Optional feature to collapse long lists with an elegant "Show More" / "Show Less" SVG icon button to expand and contract the list horizontally or vertically. 94 95 * **Sticky Navigation:** Optionally, keep the table of contents pinned to the viewport as users scroll, ensuring navigation is always accessible for long articles. 96 97 * **Smart Sticky Controls:** Includes a Top Offset setting to prevent the block from hiding behind your site's sticky header, and a Disable on Mobile strategy to prevent it from blocking content on small screens. 98 99 * **Auto-Hide Title:** When using Sticky Positioning, the block title (e.g., "On This Page") automatically fades out and collapses once the block sticks to the top of the screen. This maximizes reading space while keeping the navigation links accessible. 100 101 * **Active Link Indicator (ScrollSpy):** As your readers scroll through the content, the table of contents automatically highlights the link for the section they are currently reading, giving them instant context on their progress. 102 90 103 91 104 --- … … 154 167 **Note:** If one of the headings on your page is “Office Directions,” the ID created will be “office-directions.” This could create a potential conflict if you have another ID on your webpage named “office-directions.” In this case, assign a different ID to the block heading to resolve the conflict. 155 168 169 ### How do I make the Table of Contents stay visible while scrolling? 170 In the block settings sidebar, look for the **Position Settings** panel. Toggle on **"Sticky Position"**. 171 You can then use the **"Top Offset"** slider to adjust how far from the top of the screen the block sits (useful if you have a sticky site header). 172 173 ### Why isn't the block "sticky" on my phone? 174 The sticky feature includes a **"Disable on Mobile"** setting that is enabled by default. 175 Sticky elements on mobile devices often cover up too much reading space and lead to a poor user experience. If you want it sticky on mobile, you can uncheck this box in the **Position Settings** panel. 176 177 ### Can I include more than one Jump Links Block per page? 178 Yes. In fact, you can customize the second jump links block to appear different than the first. For example, you might have a horizontal jump links block at the top of your page containing jump links to each H2 heading. Lower on your webpage, you could add a second jump links block formatted as a numbered vertical list of links for each H3 heading in the biggest section of your page. 179 156 180 ### Why does the "Show More" button not work in the editor? 157 181 The collapsible functionality and the **Show More** button, which features a down arrow icon, are front-end features that function using a JavaScript file. They are designed to work only on the live, published page. To give you an accurate preview, the editor displays a non-functional replica of the "Show More" button when the feature is enabled. You can hover over it to see a helpful tooltip, and clicking it will show an informational notice confirming that it's interactive on the front end. … … 190 214 4. Published Vertical Jump Links, expanded and collapsed. 191 215 5. Published Horizontal Jump Links, expanded and collapsed. 216 6. Published Horizontal Jump Links with sticky navigation showing the Active Link Indicator. 192 217 193 218 --- 194 219 195 220 ## Changelog 196 197 ### 1.9.1 198 * FIX (readme): Fixed a small typo in the readme.txt file. 221 ### 2.0.0 222 * **FEATURE:** **Sticky Positioning:** Keep your table of contents visible while users scroll. Includes a "Top Offset" slider to clear sticky headers, a "Jump Offset" slider to ensure that the sticky header does not cover the heading text, and a "Disable on Mobile" toggle to preserve screen space on small devices. 223 * **FEATURE:** **Auto-Hide Title:** Implemented a smart "sticky state" detection. When the block sticks, the title gently collapses and fades out to keep the interface clean (this occurs when a block title is used alongside sticky positioning). 224 * **FEATURE:** **Smart Indentation:** Added a "Create Visual Hierarchy" toggle. When enabled, H3 and H4 sub-headings are visually indented to create a clear, nested outline structure. 225 * **FEATURE:** **Block Background:** You can now set a background color for the entire block container, perfect for creating "card-style" floating navigation. 226 * **FEATURE:** **ScrollSpy:** Automatically highlights the active link in the table of contents as the user scrolls through the corresponding section of the post. 227 228 ### 1.9.2 229 * **FEATURE:** Added support for Border and Spacing controls. You can now add borders, rounded corners, margins, and padding to the Jump Links block directly from the editor settings. 230 * **FEATURE:** Added a "Heading Level" control. You can now choose the specific HTML tag (H2, H3, H4, H5, Paragraph, or Div) for the "On This Page" heading to better match your document structure. 231 * **REFACTOR:** Optimized the block's styling logic to use CSS variables on the parent container instead of inline styles for every link. This reduces the block's HTML size and improves rendering performance. 232 * **FIX:** Resolved an accessibility and HTML validation issue where using multiple Jump Links blocks on a single page created duplicate element IDs. Each block now generates a unique instance ID. 233 * **PERFORMANCE:** Refactored the front-end JavaScript to use event delegation for smooth scrolling. This reduces memory usage by attaching a single event listener to the block instead of individual listeners for every link. 234 * **TWEAK:** Reorganized the sidebar settings for better clarity between Block Title settings and Content Inclusion settings. 199 235 200 236 ### 1.9.0 -
jump-links-block-seo-44/trunk/build/block.json
r3400046 r3403606 3 3 "apiVersion": 3, 4 4 "attributes": { 5 "blockInstanceId": { 6 "type": "string" 7 }, 8 "blockBackgroundColor": { 9 "type": "string" 10 }, 5 11 "linkColor": { 6 12 "type": "string", 7 "default": "#0 073aa"13 "default": "#046bd2" 8 14 }, 9 15 "linkBackgroundColor": { 10 16 "type": "string", 11 "default": "#f 0f0f0"17 "default": "#f4f4f4" 12 18 }, 13 19 "linkBackgroundColorHover": { 14 20 "type": "string", 15 "default": "#e 4e4e4"21 "default": "#efefef" 16 22 }, 17 23 "linkBorderColor": { … … 29 35 "type": "string" 30 36 }, 37 "headingTag": { 38 "type": "string", 39 "default": "h2" 40 }, 31 41 "headingLevels": { 32 42 "default": [ … … 43 53 "items": { 44 54 "properties": { 55 "level": { 56 "type": "integer" 57 }, 45 58 "anchor": { 46 59 "type": "string" … … 82 95 "textColor": { 83 96 "type": "string" 97 }, 98 "isSticky": { 99 "type": "boolean", 100 "default": false 101 }, 102 "stickyOffset": { 103 "type": "number", 104 "default": 30 105 }, 106 "jumpOffset": { 107 "type": "number", 108 "default": 120 109 }, 110 "stickyStrategy": { 111 "type": "string", 112 "default": "desktop-only" 113 }, 114 "isSmartIndentation": { 115 "type": "boolean", 116 "default": true 117 }, 118 "style": { 119 "type": "object", 120 "default": { 121 "spacing": { 122 "padding": "var:preset|spacing|30", 123 "margin": { 124 "top": "var:preset|spacing|30", 125 "bottom": "var:preset|spacing|30" 126 } 127 } 128 } 84 129 } 85 130 }, … … 92 137 "name": "seo44/jump-links", 93 138 "supports": { 94 "html": false 139 "html": false, 140 "spacing": { 141 "margin": true, 142 "padding": true 143 }, 144 "__experimentalBorder": { 145 "color": true, 146 "radius": true, 147 "style": true, 148 "width": true, 149 "__experimentalDefaultControls": { 150 "color": true, 151 "radius": true, 152 "style": true, 153 "width": true 154 } 155 } 95 156 }, 96 157 "textdomain": "jump-links-block-seo-44", 97 158 "title": "SEO 44 Jump Links", 98 "version": " 1.9.1",159 "version": "2.0.0", 99 160 "viewScript": "file:./view.js" 100 161 } -
jump-links-block-seo-44/trunk/build/index-rtl.css
r3400036 r3403606 1 .wp-block-seo44-jump-links{ margin-bottom:1em}.wp-block-seo44-jump-links-heading{flex-basis:100%;font-size:calc(var(--jump-link-font-size, 1em)*1.375)}.wp-block-seo44-jump-links.list-style-none>ul{list-style-type:none;padding-right:0}.wp-block-seo44-jump-links.is-layout-horizontal ol,.wp-block-seo44-jump-links.is-layout-horizontal ul{display:flex;flex-wrap:wrap;gap:.5em;list-style-type:none;margin:.5em 0 1em;padding:0}.wp-block-seo44-jump-links.is-layout-horizontal li a{background-color:var(--link-bg-color);border-style:solid;border-width:1px;display:inline-block;padding:.5em 1em;text-decoration:none}.wp-block-seo44-jump-links.is-layout-horizontal li a:hover{background-color:var(--link-bg-hover-color);text-decoration:underline;text-underline-offset:.1em}.wp-block-seo44-jump-links.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-collapsible>nav>ul{flex-wrap:wrap;max-height:2.5em;overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links .seo-44-show-more{border:1px solid;border-radius:4px;cursor:pointer;display:none;line-height:1;padding:0}.wp-block-seo44-jump-links .seo-44-show-more svg{fill:currentColor;height:30px;width:30px}.wp-block-seo44-jump-links .seo-44-show-more .arrow-up,.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-down{display:none}.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-up{display:inline-block}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ol,.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ul{display:inline-block;max-height:calc(var(--jump-link-font-size, 1em)*1.7*2);max-width:calc(100% - 40px);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal) .seo-44-show-more{margin-top:calc(var(--jump-link-font-size, 1em)*1.8);vertical-align:top}.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ul{max-height:calc(var(--jump-link-font-size, 1em)*1.7 + 1.5em);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ul{max-height:1000px}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav{align-items:flex-start;display:flex;flex-wrap:wrap;gap:.5em}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ul{flex-basis:0;flex-grow:1}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>.seo-44-show-more{flex-shrink:0;margin-top:.5em}.block-editor-block-list__block[data-type="seo44/jump-links"].is-collapsible.wp-block-seo44-jump-links .seo-44-show-more{display:inline-block}.wp-block-seo44-jump-links ol li .components-text-control,.wp-block-seo44-jump-links ul li .components-text-control{flex-grow:1}.components-panel__body .components-button-group{display:flex;gap:8px;margin-bottom:8px;width:100%}.components-panel__body .components-button-group .components-button{flex-grow:1;justify-content:center}.reorder-buttons .components-button{border:1px solid #999;border-radius:6px;margin:0 5px}.reorder-buttons .components-button:disabled{color:transparent;display:none}.wp-block-seo44-jump-links ol li .reorder-buttons,.wp-block-seo44-jump-links ul li .reorder-buttons{width:96px}.wp-block-seo44-jump-links ol li .components-toggle-control.components-toggle-control,.wp-block-seo44-jump-links ol li .reorder-buttons,.wp-block-seo44-jump-links ul li .components-toggle-control.components-toggle-control,.wp-block-seo44-jump-links ul li .reorder-buttons{display:inline-block;margin:0 5px 10px;vertical-align:middle}1 .wp-block-seo44-jump-links{background-color:var(--seo44-block-bg);margin-bottom:var(--wp--preset--spacing--30);margin-top:var(--wp--preset--spacing--30);padding:var(--wp--preset--spacing--30)}.wp-block-seo44-jump-links-heading{flex-basis:100%}.wp-block-seo44-jump-links nav>ol li,.wp-block-seo44-jump-links nav>ul li{margin:0;padding:0}.wp-block-seo44-jump-links.list-style-none nav>ol,.wp-block-seo44-jump-links.list-style-none nav>ul{list-style-type:none;padding-right:0}.wp-block-seo44-jump-links.is-layout-horizontal ol,.wp-block-seo44-jump-links.is-layout-horizontal ul{display:flex;flex-wrap:wrap;gap:0 .5em;list-style-type:none;margin:-.5em 0 0;padding:0}.wp-block-seo44-jump-links.is-layout-horizontal ol li,.wp-block-seo44-jump-links.is-layout-horizontal ul li{margin:.5em 0 0}.wp-block-seo44-jump-links li a{color:var(--seo44-link-color,#0073aa)}.wp-block-seo44-jump-links.is-layout-horizontal li a{background-color:var(--seo44-link-bg);border-color:var(--seo44-link-border-color);border-radius:var(--seo44-link-radius);border-style:solid;border-width:1px;display:inline-block;padding:.5em 1em;text-decoration:none}.wp-block-seo44-jump-links.is-layout-horizontal li a:hover{background-color:var(--seo44-link-hover-bg);text-decoration:underline;text-underline-offset:.1em}.wp-block-seo44-jump-links.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-collapsible>nav>ul{flex-wrap:wrap;max-height:2.5em;overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links .seo-44-show-more{border:1px solid;border-radius:4px;cursor:pointer;display:none;line-height:1;padding:0}.wp-block-seo44-jump-links .seo-44-show-more svg{fill:currentColor;height:30px;width:30px}.wp-block-seo44-jump-links .seo-44-show-more .arrow-up,.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-down{display:none}.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-up{display:inline-block}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ol,.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ul{display:inline-block;max-height:calc(var(--jump-link-font-size, 1em)*1.9*2);max-width:calc(100% - 40px);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal) .seo-44-show-more{margin-top:calc(var(--jump-link-font-size, 1em)*1.8);vertical-align:top}.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ul{max-height:calc(var(--jump-link-font-size, 1em)*1.7 + 1.5em);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ul{max-height:1000px}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav{align-items:flex-start;display:flex;flex-wrap:wrap;gap:.5em}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ul{flex-basis:0;flex-grow:1}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>.seo-44-show-more{flex-shrink:0;margin-top:.5em}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ul li.seo44-jump-link-level-3{font-size:.95em;margin-right:1.5em;opacity:.9}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ul li.seo44-jump-link-level-4{font-size:.9em;list-style-type:circle;margin-right:3em;opacity:.85}.wp-block-seo44-jump-links.list-style-none nav>ol li.seo44-jump-link-level-4,.wp-block-seo44-jump-links.list-style-none nav>ul li.seo44-jump-link-level-4{list-style-type:none}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ol li.seo44-jump-link-level-3{font-size:.95em;opacity:.9;padding-right:1.5em}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ol li.seo44-jump-link-level-4{font-size:.9em;opacity:.85;padding-right:3em}.wp-block-seo44-jump-links.is-sticky{background-color:var(--seo44-block-bg,#fff);position:sticky;position:-webkit-sticky;top:var(--seo44-sticky-offset,20px);z-index:10}@media(max-width:781px){.wp-block-seo44-jump-links.is-sticky.sticky-desktop-only{position:static;top:auto}}.wp-block-seo44-jump-links.is-sticky.is-stuck a.is-active{color:var(--seo44-link-color);font-weight:700}.wp-block-seo44-jump-links.is-sticky.is-stuck.is-layout-horizontal a.is-active{background-color:var(--seo44-link-hover-bg);text-decoration:none}.wp-block-seo44-jump-links.is-sticky.is-stuck:not(.is-layout-horizontal) a.is-active{border-right:3px solid var(--seo44-link-color);padding-right:.5em}.wp-block-seo44-jump-links{position:relative}.seo44-sticky-sentinel{height:1px;right:0;pointer-events:none;position:absolute;left:0;top:calc((var(--seo44-sticky-offset, 20px) + 3px)*-1);visibility:hidden}.wp-block-seo44-jump-links.is-sticky.is-stuck .wp-block-seo44-jump-links-heading{margin:0;max-height:0;opacity:0;overflow:hidden;transition:max-height .5s ease 1s,opacity .3s ease 1s,margin .5s ease 1s}.wp-block-seo44-jump-links-heading{margin-bottom:.25em;margin-top:0;max-height:100px;opacity:1;transition:max-height .5s ease,opacity .3s ease,margin .5s ease}.block-editor-block-list__block[data-type="seo44/jump-links"].is-collapsible.wp-block-seo44-jump-links .seo-44-show-more{display:inline-block}.wp-block-seo44-jump-links ol li .components-text-control,.wp-block-seo44-jump-links ul li .components-text-control{flex-grow:1}.components-panel__body .components-button-group{display:flex;gap:8px;margin-bottom:8px;width:100%}.components-panel__body .components-button-group .components-button{flex-grow:1;justify-content:center}.reorder-buttons .components-button{border:1px solid #999;border-radius:6px;margin:0 5px}.reorder-buttons .components-button:disabled{color:transparent;display:none}.wp-block-seo44-jump-links ol li .reorder-buttons,.wp-block-seo44-jump-links ul li .reorder-buttons{width:96px}.wp-block-seo44-jump-links ol li .components-toggle-control.components-toggle-control,.wp-block-seo44-jump-links ol li .reorder-buttons,.wp-block-seo44-jump-links ul li .components-toggle-control.components-toggle-control,.wp-block-seo44-jump-links ul li .reorder-buttons{display:inline-block;margin:0 5px 10px;vertical-align:middle} -
jump-links-block-seo-44/trunk/build/index.asset.php
r3400036 r3403606 1 <?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n'), 'version' => ' 02a6f20490b5ebe98441');1 <?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-i18n'), 'version' => 'abe95387150489ba035c'); -
jump-links-block-seo-44/trunk/build/index.css
r3400036 r3403606 1 .wp-block-seo44-jump-links{ margin-bottom:1em}.wp-block-seo44-jump-links-heading{flex-basis:100%;font-size:calc(var(--jump-link-font-size, 1em)*1.375)}.wp-block-seo44-jump-links.list-style-none>ul{list-style-type:none;padding-left:0}.wp-block-seo44-jump-links.is-layout-horizontal ol,.wp-block-seo44-jump-links.is-layout-horizontal ul{display:flex;flex-wrap:wrap;gap:.5em;list-style-type:none;margin:.5em 0 1em;padding:0}.wp-block-seo44-jump-links.is-layout-horizontal li a{background-color:var(--link-bg-color);border-style:solid;border-width:1px;display:inline-block;padding:.5em 1em;text-decoration:none}.wp-block-seo44-jump-links.is-layout-horizontal li a:hover{background-color:var(--link-bg-hover-color);text-decoration:underline;text-underline-offset:.1em}.wp-block-seo44-jump-links.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-collapsible>nav>ul{flex-wrap:wrap;max-height:2.5em;overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links .seo-44-show-more{border:1px solid;border-radius:4px;cursor:pointer;display:none;line-height:1;padding:0}.wp-block-seo44-jump-links .seo-44-show-more svg{fill:currentColor;height:30px;width:30px}.wp-block-seo44-jump-links .seo-44-show-more .arrow-up,.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-down{display:none}.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-up{display:inline-block}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ol,.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ul{display:inline-block;max-height:calc(var(--jump-link-font-size, 1em)*1.7*2);max-width:calc(100% - 40px);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal) .seo-44-show-more{margin-top:calc(var(--jump-link-font-size, 1em)*1.8);vertical-align:top}.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ul{max-height:calc(var(--jump-link-font-size, 1em)*1.7 + 1.5em);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ul{max-height:1000px}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav{align-items:flex-start;display:flex;flex-wrap:wrap;gap:.5em}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ul{flex-basis:0;flex-grow:1}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>.seo-44-show-more{flex-shrink:0;margin-top:.5em}.block-editor-block-list__block[data-type="seo44/jump-links"].is-collapsible.wp-block-seo44-jump-links .seo-44-show-more{display:inline-block}.wp-block-seo44-jump-links ol li .components-text-control,.wp-block-seo44-jump-links ul li .components-text-control{flex-grow:1}.components-panel__body .components-button-group{display:flex;gap:8px;margin-bottom:8px;width:100%}.components-panel__body .components-button-group .components-button{flex-grow:1;justify-content:center}.reorder-buttons .components-button{border:1px solid #999;border-radius:6px;margin:0 5px}.reorder-buttons .components-button:disabled{color:transparent;display:none}.wp-block-seo44-jump-links ol li .reorder-buttons,.wp-block-seo44-jump-links ul li .reorder-buttons{width:96px}.wp-block-seo44-jump-links ol li .components-toggle-control.components-toggle-control,.wp-block-seo44-jump-links ol li .reorder-buttons,.wp-block-seo44-jump-links ul li .components-toggle-control.components-toggle-control,.wp-block-seo44-jump-links ul li .reorder-buttons{display:inline-block;margin:0 5px 10px;vertical-align:middle}1 .wp-block-seo44-jump-links{background-color:var(--seo44-block-bg);margin-bottom:var(--wp--preset--spacing--30);margin-top:var(--wp--preset--spacing--30);padding:var(--wp--preset--spacing--30)}.wp-block-seo44-jump-links-heading{flex-basis:100%}.wp-block-seo44-jump-links nav>ol li,.wp-block-seo44-jump-links nav>ul li{margin:0;padding:0}.wp-block-seo44-jump-links.list-style-none nav>ol,.wp-block-seo44-jump-links.list-style-none nav>ul{list-style-type:none;padding-left:0}.wp-block-seo44-jump-links.is-layout-horizontal ol,.wp-block-seo44-jump-links.is-layout-horizontal ul{display:flex;flex-wrap:wrap;gap:0 .5em;list-style-type:none;margin:-.5em 0 0;padding:0}.wp-block-seo44-jump-links.is-layout-horizontal ol li,.wp-block-seo44-jump-links.is-layout-horizontal ul li{margin:.5em 0 0}.wp-block-seo44-jump-links li a{color:var(--seo44-link-color,#0073aa)}.wp-block-seo44-jump-links.is-layout-horizontal li a{background-color:var(--seo44-link-bg);border-color:var(--seo44-link-border-color);border-radius:var(--seo44-link-radius);border-style:solid;border-width:1px;display:inline-block;padding:.5em 1em;text-decoration:none}.wp-block-seo44-jump-links.is-layout-horizontal li a:hover{background-color:var(--seo44-link-hover-bg);text-decoration:underline;text-underline-offset:.1em}.wp-block-seo44-jump-links.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-collapsible>nav>ul{flex-wrap:wrap;max-height:2.5em;overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links .seo-44-show-more{border:1px solid;border-radius:4px;cursor:pointer;display:none;line-height:1;padding:0}.wp-block-seo44-jump-links .seo-44-show-more svg{fill:currentColor;height:30px;width:30px}.wp-block-seo44-jump-links .seo-44-show-more .arrow-up,.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-down{display:none}.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-up{display:inline-block}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ol,.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ul{display:inline-block;max-height:calc(var(--jump-link-font-size, 1em)*1.9*2);max-width:calc(100% - 40px);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal) .seo-44-show-more{margin-top:calc(var(--jump-link-font-size, 1em)*1.8);vertical-align:top}.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ul{max-height:calc(var(--jump-link-font-size, 1em)*1.7 + 1.5em);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ul{max-height:1000px}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav{align-items:flex-start;display:flex;flex-wrap:wrap;gap:.5em}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ul{flex-basis:0;flex-grow:1}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>.seo-44-show-more{flex-shrink:0;margin-top:.5em}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ul li.seo44-jump-link-level-3{font-size:.95em;margin-left:1.5em;opacity:.9}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ul li.seo44-jump-link-level-4{font-size:.9em;list-style-type:circle;margin-left:3em;opacity:.85}.wp-block-seo44-jump-links.list-style-none nav>ol li.seo44-jump-link-level-4,.wp-block-seo44-jump-links.list-style-none nav>ul li.seo44-jump-link-level-4{list-style-type:none}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ol li.seo44-jump-link-level-3{font-size:.95em;opacity:.9;padding-left:1.5em}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ol li.seo44-jump-link-level-4{font-size:.9em;opacity:.85;padding-left:3em}.wp-block-seo44-jump-links.is-sticky{background-color:var(--seo44-block-bg,#fff);position:sticky;position:-webkit-sticky;top:var(--seo44-sticky-offset,20px);z-index:10}@media(max-width:781px){.wp-block-seo44-jump-links.is-sticky.sticky-desktop-only{position:static;top:auto}}.wp-block-seo44-jump-links.is-sticky.is-stuck a.is-active{color:var(--seo44-link-color);font-weight:700}.wp-block-seo44-jump-links.is-sticky.is-stuck.is-layout-horizontal a.is-active{background-color:var(--seo44-link-hover-bg);text-decoration:none}.wp-block-seo44-jump-links.is-sticky.is-stuck:not(.is-layout-horizontal) a.is-active{border-left:3px solid var(--seo44-link-color);padding-left:.5em}.wp-block-seo44-jump-links{position:relative}.seo44-sticky-sentinel{height:1px;left:0;pointer-events:none;position:absolute;right:0;top:calc((var(--seo44-sticky-offset, 20px) + 3px)*-1);visibility:hidden}.wp-block-seo44-jump-links.is-sticky.is-stuck .wp-block-seo44-jump-links-heading{margin:0;max-height:0;opacity:0;overflow:hidden;transition:max-height .5s ease 1s,opacity .3s ease 1s,margin .5s ease 1s}.wp-block-seo44-jump-links-heading{margin-bottom:.25em;margin-top:0;max-height:100px;opacity:1;transition:max-height .5s ease,opacity .3s ease,margin .5s ease}.block-editor-block-list__block[data-type="seo44/jump-links"].is-collapsible.wp-block-seo44-jump-links .seo-44-show-more{display:inline-block}.wp-block-seo44-jump-links ol li .components-text-control,.wp-block-seo44-jump-links ul li .components-text-control{flex-grow:1}.components-panel__body .components-button-group{display:flex;gap:8px;margin-bottom:8px;width:100%}.components-panel__body .components-button-group .components-button{flex-grow:1;justify-content:center}.reorder-buttons .components-button{border:1px solid #999;border-radius:6px;margin:0 5px}.reorder-buttons .components-button:disabled{color:transparent;display:none}.wp-block-seo44-jump-links ol li .reorder-buttons,.wp-block-seo44-jump-links ul li .reorder-buttons{width:96px}.wp-block-seo44-jump-links ol li .components-toggle-control.components-toggle-control,.wp-block-seo44-jump-links ol li .reorder-buttons,.wp-block-seo44-jump-links ul li .components-toggle-control.components-toggle-control,.wp-block-seo44-jump-links ul li .reorder-buttons{display:inline-block;margin:0 5px 10px;vertical-align:middle} -
jump-links-block-seo-44/trunk/build/index.js
r3400036 r3403606 1 (()=>{"use strict";var e,l={313:()=>{const e=window.wp.blocks,l=window.React,o=window.wp.i18n,t=window.wp.blockEditor,n=window.wp.components, i=window.wp.data,a=window.wp.element;function s(e){return(new DOMParser).parseFromString(e,"text/html").body.textContent||""}const r=(0,l.createElement)("svg",{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M3 21v-2h18v2zm8-4v-6.175L9.4 12.4L8 11l4-4l4 4l-1.4 1.4l-1.6-1.575V17zM3 5V3h18v2z"})),c=(0,l.createElement)("svg",{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M3 5V3h18v2zm9 12l-4-4l1.4-1.4l1.6 1.575V7h2v6.175l1.6-1.575L16 13zm-9 4v-2h18v2z"})),u=(0,l.createElement)("svg",{className:"arrow-down",width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M12 16l-6-6 1.41-1.41L12 13.17l4.59-4.58L18 10l-6 6z"})),k=JSON.parse('{"UU":"seo44/jump-links"}');(0,e.registerBlockType)(k.UU,{edit:function({attributes:e,setAttributes:k}){const{headingLevels:m,headings:d,layout:h,showHeading:p,headingText:b,isEditing:g,isCollapsible:_,listStyle:v,fontSize:w,textColor:E,linkColor:C,linkBackgroundColor:f,linkBackgroundColorHover:j,linkBorderColor:x,linkBorderRadius:y}=e,z={color:E,fontSize:w,"--jump-link-font-size":w||"18px"},B={"--link-bg-color":"horizontal"===h?f:void 0,borderColor:"horizontal"===h?x:void 0,borderRadius:"horizontal"===h&&y?`${y}px`:void 0,color:C,"--link-bg-hover-color":"horizontal"===h?j:void 0},S="ol"===v?"ol":"ul",{createInfoNotice:T}=(0,i.useDispatch)("core/notices"),L=(0,t.useBlockProps)({style:z});L.className=`${L.className} ${"horizontal"===h?"is-layout-horizontal":""} ${_&&!g?"is-collapsible":""} ${"none"===v?"list-style-none":""}`.trim();const N=(0,i.useSelect)(e=>e("core/block-editor").getBlocks(),[]),{updateBlockAttributes:P}=(0,i.useDispatch)("core/block-editor");(0,a.useEffect)(()=>{const e=N.filter(e=>"core/heading"===e.name&&m.includes(`h${e.attributes.level}`)),l=new Set;let t=!1;const n=new Map(d.map(e=>[e.anchor,e])),i=[];for(const o of e){const e=s(o.attributes.content);let a=o.attributes.anchor||e.toLowerCase().replace(/[^a-z0-9\s-]/g,"").trim().replace(/\s+/g,"-"),r=a,c=2;for(;l.has(r);)r=`${a}-${c}`,c++,t=!0;l.add(r),o.attributes.anchor!==r&&P(o.clientId,{anchor:r});const u=n.get(o.attributes.anchor)||n.get(r),k=u&&u.linkText!==u.text?u.linkText:e,m=!u||u.isVisible;i.push({anchor:r,text:e,linkText:k,isVisible:m})}JSON.stringify(i)!==JSON.stringify(d)&&k({headings:i}),t&&T((0,o.__)("Jump Links Block: Duplicate headings were found. Unique IDs have been auto-generated, but this may be a sign of redundancy. Please review your headings for clarity.","jump-links-block-seo-44"),{To:"snackbar"})},[N,m,d,k,P,T]),(0,a.useEffect)(()=>{"horizontal"===h&&"none"!==v&&k({listStyle:"none"})},[h,v,k]);const M=(e,l)=>{const o=[...d],t=o.splice(e,1)[0];"up"===l?o.splice(e-1,0,t):o.splice(e+1,0,t),k({headings:o})},O=e=>{const l=m.includes(e)?m.filter(l=>l!==e):[...m,e];k({headingLevels:l.sort()})};return(0,l.createElement)(l.Fragment,null,(0,l.createElement)(t.InspectorControls,null,(0,l.createElement)(n.PanelBody,{title:(0,o.__)("Presentation","jump-links-block-seo-44")},(0,l.createElement)(n.ButtonGroup,null,(0,l.createElement)(n.Button,{isPrimary:!g,isPressed:!g,onClick:()=>k({isEditing:!1})},(0,o.__)("Viewing Mode","jump-links-block-seo-44")),(0,l.createElement)(n.Button,{isPrimary:g,isPressed:g,onClick:()=>k({isEditing:!0})},(0,o.__)("Editing Mode","jump-links-block-seo-44"))),(0,l.createElement)("p",{className:"description"},(0,o.__)("Switch to Editing Mode to customize link text, visibility, and order.","jump-links-block-seo-44"))),(0,l.createElement)(n.PanelBody,{title:(0,o.__)("Appearance","jump-links-block-seo-44")},(0,l.createElement)("p",null,(0,l.createElement)("strong",null,(0,o.__)("Layout","jump-links-block-seo-44"))),(0,l.createElement)(n.ButtonGroup,null,(0,l.createElement)(n.Button,{isPrimary:"vertical"===h,isPressed:"vertical"===h,onClick:()=>k({layout:"vertical"})},(0,o.__)("Vertical","jump-links-block-seo-44")),(0,l.createElement)(n.Button,{isPrimary:"horizontal"===h,isPressed:"horizontal"===h,onClick:()=>k({layout:"horizontal"})},(0,o.__)("Horizontal","jump-links-block-seo-44"))),(0,l.createElement)(n.ToggleControl,{label:(0,o.__)("Make Jump Links Area Expandable","jump-links-block-seo-44"),help:(0,o.__)('Conserve screen space by collapsing a long list of jump links, providing users with an elegant "show more" button to see the entire list.',"jump-links-block-seo-44"),checked:_,onChange:()=>k({isCollapsible:!_})}),(0,l.createElement)(n.SelectControl,{label:(0,o.__)("List Style","jump-links-block-seo-44"),value:v,options:[{label:(0,o.__)("Bulleted","jump-links-block-seo-44"),value:"ul"},{label:(0,o.__)("Numbered","jump-links-block-seo-44"),value:"ol"},{label:(0,o.__)("None","jump-links-block-seo-44"),value:"none"}],onChange:e=>k({listStyle:e}),disabled:"horizontal"===h}),(0,l.createElement)(n.FontSizePicker,{fontSizes:[{name:(0,o.__)("S","jump-links-block-seo-44"),slug:"small",size:"14px"},{name:(0,o.__)("M","jump-links-block-seo-44"),slug:"normal",size:"17px"},{name:(0,o.__)("L","jump-links-block-seo-44"),slug:"large",size:"20px"},{name:(0,o.__)("XL","jump-links-block-seo-44"),slug:"extra-large",size:"23px"}],value:w,onChange:e=>k({fontSize:e}),withReset:!0}),(0,l.createElement)(t.PanelColorSettings,{title:(0,o.__)("Colors","jump-links-block-seo-44"),colorSettings:[{value:C,onChange:e=>k({linkColor:e}),label:(0,o.__)("Link Color","jump-links-block-seo-44")},{value:E,onChange:e=>k({textColor:e}),label:(0,o.__)("Other Text Color","jump-links-block-seo-44")}]}),"horizontal"===h&&(0,l.createElement)(l.Fragment,null,(0,l.createElement)("hr",null),(0,l.createElement)("p",null,(0,l.createElement)("strong",null,(0,o.__)("Horizontal Link Styles","jump-links-block-seo-44"))),(0,l.createElement)(t.PanelColorSettings,{title:(0,o.__)("Link Colors","jump-links-block-seo-44"),colorSettings:[{value:f,onChange:e=>k({linkBackgroundColor:e}),label:(0,o.__)("Background","jump-links-block-seo-44")},{value:j,onChange:e=>k({linkBackgroundColorHover:e}),label:(0,o.__)("Background Hover","jump-links-block-seo-44")},{value:x,onChange:e=>k({linkBorderColor:e}),label:(0,o.__)("Border","jump-links-block-seo-44")}]}),(0,l.createElement)(n.RangeControl,{label:(0,o.__)("Link Border Radius","jump-links-block-seo-44"),value:y,onChange:e=>k({linkBorderRadius:e}),min:0,max:50}))),(0,l.createElement)(n.PanelBody,{title:(0,o.__)("Heading Settings","jump-links-block-seo-44")},(0,l.createElement)(n.ToggleControl,{label:(0,o.__)("Show Heading for Jump Links Block (off by default)","jump-links-block-seo-44"),checked:p,onChange:()=>k({showHeading:!p})}),p&&(0,l.createElement)(n.TextControl,{label:(0,o.__)("Heading Text","jump-links-block-seo-44"),value:b,onChange:e=>k({headingText:e})}),(0,l.createElement)("p",null,(0,o.__)("Select heading levels to include:","jump-links-block-seo-44")),(0,l.createElement)(n.CheckboxControl,{label:"H2",checked:m.includes("h2"),onChange:()=>O("h2")}),(0,l.createElement)(n.CheckboxControl,{label:"H3",checked:m.includes("h3"),onChange:()=>O("h3")}),(0,l.createElement)(n.CheckboxControl,{label:"H4",checked:m.includes("h4"),onChange:()=>O("h4")}))),(0,l.createElement)("div",{...L},p&&(0,l.createElement)(t.RichText,{tagName:"div",className:"wp-block-seo44-jump-links-heading",value:b,onChange:e=>k({headingText:e}),placeholder:(0,o.__)("On This Page","jump-links-block-seo-44")}),d.length>0?(0,l.createElement)("nav",{"aria-label":(0,o.__)("Table of contents","jump-links-block-seo-44")},(0,l.createElement)(S,{id:"seo44-jump-links-list"},d.map((e,t)=>g?(0,l.createElement)("li",{key:e.anchor},(0,l.createElement)(n.TextControl,{value:e.linkText,onChange:e=>((e,l)=>{const o=[...d];o[e].linkText=l,k({headings:o})})(t,e)}),(0,l.createElement)("div",{className:"edit-controls-wrapper"},(0,l.createElement)("div",{className:"reorder-buttons"},(0,l.createElement)(n.Button,{icon:r,label:(0,o.__)("Move Up","jump-links-block-seo-44"),onClick:()=>M(t,"up"),disabled:0===t}),(0,l.createElement)(n.Button,{icon:c,label:(0,o.__)("Move Down","jump-links-block-seo-44"),onClick:()=>M(t,"down"),disabled:t===d.length-1})),(0,l.createElement)(n.ToggleControl,{label:!1!==e.isVisible?(0,o.__)("Included","jump-links-block-seo-44"):(0,o.__)("This Jump Link will not be shown","jump-links-block-seo-44"),checked:!1!==e.isVisible,onChange:()=>(e=>{const l=[...d];l[e].isVisible=!l[e].isVisible,k({headings:l})})(t)}))):!1!==e.isVisible&&(0,l.createElement)("li",{key:e.anchor},(0,l.createElement)("a",{href:`#${e.anchor}`,style:B,onClick:e=>e.preventDefault()},e.linkText)))),!g&&_&&d.length>0&&(0,l.createElement)(n.Tooltip,{text:(0,o.__)("This button is functional on the front-end to expand the list.","jump-links-block-seo-44")},(0,l.createElement)("button",{type:"button",className:"seo-44-show-more","aria-label":(0,o.__)("Show More","jump-links-block-seo-44"),"aria-expanded":"false","aria-controls":"seo44-jump-links-list",onClick:()=>{T((0,o.__)('The "Show More" button is interactive on the published page.',"jump-links-block-seo-44"),{type:"snackbar"})}},u))):(0,l.createElement)("p",null,(0,o.__)("No headings found. Select a heading level in the block settings to generate links.","jump-links-block-seo-44"))))},save:function({attributes:e}){const{headings:n,showHeading:i,headingText:a,layout:s,isCollapsible:r,listStyle:c,fontSize:u,textColor:k,linkColor:m,linkBackgroundColor:d,linkBackgroundColorHover:h,linkBorderColor:p,linkBorderRadius:b}=e,g={color:k,fontSize:u,"--jump-link-font-size":u||"18px"},_={"--link-bg-color":"horizontal"===s?d:void 0,borderColor:"horizontal"===s?p:void 0,borderRadius:"horizontal"===s&&b?`${b}px`:void 0,color:m,"--link-bg-hover-color":"horizontal"===s?h:void 0},v="ol"===c?"ol":"ul",w=t.useBlockProps.save({className:`${"horizontal"===s?"is-layout-horizontal":""} ${r?"is-collapsible":""} ${"none"===c?"list-style-none":""}`.trim(),style:g}),E=(0,l.createElement)("svg",{className:"arrow-down",width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M12 16l-6-6 1.41-1.41L12 13.17l4.59-4.58L18 10l-6 6z"})),C=(0,l.createElement)("svg",{className:"arrow-up",width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14l-6-6z"}));return(0,l.createElement)("div",{...w},i&&(0,l.createElement)(t.RichText.Content,{tagName:"div",className:"wp-block-seo44-jump-links-heading",value:a}),n&&n.length>0&&(0,l.createElement)("nav",{"aria-label":(0,o.__)("Table of contents","jump-links-block-seo-44")},(0,l.createElement)(v,{id:"seo44-jump-links-list"},n.filter(e=>!1!==e.isVisible).map(e=>(0,l.createElement)("li",{key:e.anchor},(0,l.createElement)("a",{href:`#${e.anchor}`,style:_},e.linkText)))),r&&(0,l.createElement)("button",{type:"button",className:"seo-44-show-more","aria-label":(0,o.__)("Show More","jump-links-block-seo-44"),"aria-expanded":"false","aria-controls":"seo44-jump-links-list"},E,C)))}})}},o={};function t(e){var n=o[e];if(void 0!==n)return n.exports;var i=o[e]={exports:{}};return l[e](i,i.exports,t),i.exports}t.m=l,e=[],t.O=(l,o,n,i)=>{if(!o){var a=1/0;for(u=0;u<e.length;u++){for(var[o,n,i]=e[u],s=!0,r=0;r<o.length;r++)(!1&i||a>=i)&&Object.keys(t.O).every(e=>t.O[e](o[r]))?o.splice(r--,1):(s=!1,i<a&&(a=i));if(s){e.splice(u--,1);var c=n();void 0!==c&&(l=c)}}return l}i=i||0;for(var u=e.length;u>0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[o,n,i]},t.o=(e,l)=>Object.prototype.hasOwnProperty.call(e,l),(()=>{var e={57:0,350:0};t.O.j=l=>0===e[l];var l=(l,o)=>{var n,i,[a,s,r]=o,c=0;if(a.some(l=>0!==e[l])){for(n in s)t.o(s,n)&&(t.m[n]=s[n]);if(r)var u=r(t)}for(l&&l(o);c<a.length;c++)i=a[c],t.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return t.O(u)},o=globalThis.webpackChunkseo_44_jump_links_block=globalThis.webpackChunkseo_44_jump_links_block||[];o.forEach(l.bind(null,0)),o.push=l.bind(null,o.push.bind(o))})();var n=t.O(void 0,[350],()=>t(313));n=t.O(n)})();1 (()=>{"use strict";var e,l={313:()=>{const e=window.wp.blocks,l=window.React,o=window.wp.i18n,t=window.wp.blockEditor,n=window.wp.components,s=window.wp.data,a=window.wp.element;function i(e){return(new DOMParser).parseFromString(e,"text/html").body.textContent||""}const r=(0,l.createElement)("svg",{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M3 21v-2h18v2zm8-4v-6.175L9.4 12.4L8 11l4-4l4 4l-1.4 1.4l-1.6-1.575V17zM3 5V3h18v2z"})),c=(0,l.createElement)("svg",{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M3 5V3h18v2zm9 12l-4-4l1.4-1.4l1.6 1.575V7h2v6.175l1.6-1.575L16 13zm-9 4v-2h18v2z"})),k=(0,l.createElement)("svg",{className:"arrow-down",width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M12 16l-6-6 1.41-1.41L12 13.17l4.59-4.58L18 10l-6 6z"})),u=JSON.parse('{"UU":"seo44/jump-links"}');(0,e.registerBlockType)(u.UU,{edit:function({attributes:e,setAttributes:u}){const{headingLevels:m,headings:h,showHeading:p,headingText:d,headingTag:b,layout:g,listStyle:_,isEditing:v,isCollapsible:f,isSmartIndentation:x,fontSize:w,textColor:C,linkColor:E,blockBackgroundColor:j,linkBackgroundColor:y,linkBackgroundColorHover:B,linkBorderColor:S,linkBorderRadius:z,isSticky:T,stickyOffset:N,jumpOffset:H,stickyStrategy:M}=e,P={color:C,fontSize:w,"--jump-link-font-size":w||"18px","--seo44-link-color":E,"--seo44-link-bg":"horizontal"===g?y:void 0,"--seo44-link-hover-bg":"horizontal"===g?B:void 0,"--seo44-link-border-color":"horizontal"===g?S:void 0,"--seo44-link-radius":"horizontal"===g&&z?`${z}px`:void 0,"--seo44-block-bg":j,"--seo44-sticky-offset":T?`${N}px`:void 0},O="ol"===_?"ol":"ul",{createInfoNotice:I}=(0,s.useDispatch)("core/notices"),L=e.blockInstanceId?`seo44-jump-links-list-${e.blockInstanceId}`:"seo44-jump-links-list",$=(0,t.useBlockProps)({style:P});$.className=`${$.className} ${"horizontal"===g?"is-layout-horizontal":""} ${f&&!v?"is-collapsible":""} ${"none"===_?"list-style-none":""}`.trim();const D=(0,s.useSelect)(e=>e("core/block-editor").getBlocks(),[]),{updateBlockAttributes:V}=(0,s.useDispatch)("core/block-editor");(0,a.useEffect)(()=>{const l={};e.blockInstanceId||(l.blockInstanceId=Math.random().toString(36).substr(2,9)),Object.keys(l).length>0&&u(l);const t=D.filter(e=>"core/heading"===e.name&&m.includes(`h${e.attributes.level}`)),n=new Set;let s=!1;const a=new Map(h.map(e=>[e.anchor,e])),r=[];for(const e of t){const l=i(e.attributes.content);let o=e.attributes.anchor||l.toLowerCase().replace(/[^a-z0-9\s-]/g,"").trim().replace(/\s+/g,"-"),t=o,c=2;for(;n.has(t);)t=`${o}-${c}`,c++,s=!0;n.add(t),e.attributes.anchor!==t&&V(e.clientId,{anchor:t});const k=a.get(e.attributes.anchor)||a.get(t),u=k&&k.linkText!==k.text?k.linkText:l,m=!k||k.isVisible;r.push({anchor:t,text:l,linkText:u,isVisible:m,level:e.attributes.level})}JSON.stringify(r)!==JSON.stringify(h)&&u({headings:r}),s&&I((0,o.__)("Jump Links Block: Duplicate headings were found. Unique IDs have been auto-generated, but this may be a sign of redundancy. Please review your headings for clarity.","jump-links-block-seo-44"),{type:"snackbar"})},[D,m,h,e.blockInstanceId,u,V,I]),(0,a.useEffect)(()=>{"horizontal"===g&&"none"!==_&&u({listStyle:"none"})},[g,_,u]);const R=(e,l)=>{const o=[...h],t=o.splice(e,1)[0];"up"===l?o.splice(e-1,0,t):o.splice(e+1,0,t),u({headings:o})},J=e=>{const l=m.includes(e)?m.filter(l=>l!==e):[...m,e];u({headingLevels:l.sort()})};return(0,l.createElement)(a.Fragment,null,(0,l.createElement)(t.InspectorControls,null,(0,l.createElement)(n.PanelBody,{title:(0,o.__)("Presentation","jump-links-block-seo-44")},(0,l.createElement)(n.ButtonGroup,null,(0,l.createElement)(n.Button,{isPrimary:!v,isPressed:!v,onClick:()=>u({isEditing:!1})},(0,o.__)("Viewing Mode","jump-links-block-seo-44")),(0,l.createElement)(n.Button,{isPrimary:v,isPressed:v,onClick:()=>u({isEditing:!0})},(0,o.__)("Editing Mode","jump-links-block-seo-44"))),(0,l.createElement)("p",{className:"description"},(0,o.__)("Switch to Editing Mode to customize link text, visibility, and order.","jump-links-block-seo-44"))),(0,l.createElement)(n.PanelBody,{title:(0,o.__)("Appearance","jump-links-block-seo-44")},(0,l.createElement)("p",null,(0,l.createElement)("strong",null,(0,o.__)("Layout","jump-links-block-seo-44"))),(0,l.createElement)(n.ButtonGroup,null,(0,l.createElement)(n.Button,{isPrimary:"vertical"===g,isPressed:"vertical"===g,onClick:()=>u({layout:"vertical"})},(0,o.__)("Vertical","jump-links-block-seo-44")),(0,l.createElement)(n.Button,{isPrimary:"horizontal"===g,isPressed:"horizontal"===g,onClick:()=>u({layout:"horizontal"})},(0,o.__)("Horizontal","jump-links-block-seo-44"))),(0,l.createElement)(n.ToggleControl,{label:(0,o.__)("Make Jump Links Area Expandable","jump-links-block-seo-44"),help:(0,o.__)('Conserve screen space by collapsing a long list of jump links, providing users with an elegant "show more" button to see the entire list.',"jump-links-block-seo-44"),checked:f,onChange:()=>u({isCollapsible:!f}),__nextHasNoMarginBottom:!0}),(0,l.createElement)(n.SelectControl,{label:(0,o.__)("List Style","jump-links-block-seo-44"),value:_,options:[{label:(0,o.__)("Bulleted","jump-links-block-seo-44"),value:"ul"},{label:(0,o.__)("Numbered","jump-links-block-seo-44"),value:"ol"},{label:(0,o.__)("None","jump-links-block-seo-44"),value:"none"}],onChange:e=>u({listStyle:e}),disabled:"horizontal"===g,__nextHasNoMarginBottom:!0,__next40pxDefaultSize:!0}),(0,l.createElement)(n.FontSizePicker,{fontSizes:[{name:(0,o.__)("S","jump-links-block-seo-44"),slug:"small",size:"14px"},{name:(0,o.__)("M","jump-links-block-seo-44"),slug:"normal",size:"17px"},{name:(0,o.__)("L","jump-links-block-seo-44"),slug:"large",size:"20px"},{name:(0,o.__)("XL","jump-links-block-seo-44"),slug:"extra-large",size:"23px"}],value:w,onChange:e=>u({fontSize:e}),withReset:!0,__next40pxDefaultSize:!0}),(0,l.createElement)(t.PanelColorSettings,{title:(0,o.__)("Colors","jump-links-block-seo-44"),colorSettings:[{value:j,onChange:e=>u({blockBackgroundColor:e}),label:(0,o.__)("Block Background","jump-links-block-seo-44")},{value:E,onChange:e=>u({linkColor:e}),label:(0,o.__)("Link Color","jump-links-block-seo-44")},{value:C,onChange:e=>u({textColor:e}),label:(0,o.__)("Other Text Color","jump-links-block-seo-44")}]}),"horizontal"===g&&(0,l.createElement)(a.Fragment,null,(0,l.createElement)("hr",null),(0,l.createElement)("p",null,(0,l.createElement)("strong",null,(0,o.__)("Horizontal Link Styles","jump-links-block-seo-44"))),(0,l.createElement)(t.PanelColorSettings,{title:(0,o.__)("Link Colors","jump-links-block-seo-44"),colorSettings:[{value:y,onChange:e=>u({linkBackgroundColor:e}),label:(0,o.__)("Background","jump-links-block-seo-44")},{value:B,onChange:e=>u({linkBackgroundColorHover:e}),label:(0,o.__)("Background Hover","jump-links-block-seo-44")},{value:S,onChange:e=>u({linkBorderColor:e}),label:(0,o.__)("Border","jump-links-block-seo-44")}]}),(0,l.createElement)(n.RangeControl,{label:(0,o.__)("Link Border Radius","jump-links-block-seo-44"),value:z,onChange:e=>u({linkBorderRadius:e}),min:0,max:50,__nextHasNoMarginBottom:!0,__next40pxDefaultSize:!0}))),(0,l.createElement)(n.PanelBody,{title:(0,o.__)("Content Settings","jump-links-block-seo-44")},(0,l.createElement)(n.ToggleControl,{label:(0,o.__)("Display Block Title","jump-links-block-seo-44"),checked:p,onChange:()=>u({showHeading:!p}),__nextHasNoMarginBottom:!0}),p&&(0,l.createElement)(a.Fragment,null,(0,l.createElement)(n.TextControl,{label:(0,o.__)("Title Text","jump-links-block-seo-44"),value:d,onChange:e=>u({headingText:e}),help:(0,o.__)("The text that appears above your list of links.","jump-links-block-seo-44")}),(0,l.createElement)(n.SelectControl,{label:(0,o.__)("Title Tag","jump-links-block-seo-44"),value:b,options:[{label:"H2",value:"h2"},{label:"H3",value:"h3"},{label:"H4",value:"h4"},{label:"H5",value:"h5"},{label:"Paragraph (Bold)",value:"p"},{label:"Div (No Semantic Value)",value:"div"}],onChange:e=>u({headingTag:e}),help:(0,o.__)("Choose a level that fits your page's structure.","search-appearance-toolkit-seo-44"),__nextHasNoMarginBottom:!0,__next40pxDefaultSize:!0})),(0,l.createElement)("hr",null),(0,l.createElement)("p",null,(0,l.createElement)("strong",null,(0,o.__)("Included Headings","jump-links-block-seo-44"))),(0,l.createElement)("p",{className:"description",style:{marginBottom:"10px"}},(0,o.__)("Select which heading levels from your post content should appear in the jump links list.","jump-links-block-seo-44")),(0,l.createElement)(n.CheckboxControl,{label:"H2",checked:m.includes("h2"),onChange:()=>J("h2")}),(0,l.createElement)(n.CheckboxControl,{label:"H3",checked:m.includes("h3"),onChange:()=>J("h3")}),(0,l.createElement)(n.CheckboxControl,{label:"H4",checked:m.includes("h4"),onChange:()=>J("h4")}),(0,l.createElement)(n.ToggleControl,{label:(0,o.__)("Create Visual Hierarchy","jump-links-block-seo-44"),help:(0,o.__)("Indents sub-headings (H3, H4) to create a nested outline structure.","jump-links-block-seo-44"),checked:x,onChange:()=>u({isSmartIndentation:!x}),__nextHasNoMarginBottom:!0})),(0,l.createElement)(n.PanelBody,{title:(0,o.__)("Position Settings","jump-links-block-seo-44")},(0,l.createElement)(n.ToggleControl,{label:(0,o.__)("Sticky Position","jump-links-block-seo-44"),help:(0,o.__)("Keep the table of contents visible while scrolling.","jump-links-block-seo-44"),checked:T,onChange:()=>u({isSticky:!T}),__nextHasNoMarginBottom:!0}),T&&(0,l.createElement)(a.Fragment,null,(0,l.createElement)("p",{className:"description",style:{marginBottom:"15px"}},(0,o.__)("Customize how the block behaves when it sticks to the top of the screen.","jump-links-block-seo-44")),(0,l.createElement)(n.RangeControl,{label:(0,o.__)("Top Offset (px)","jump-links-block-seo-44"),help:(0,o.__)("The distance between the top of the screen and the block when stuck (useful for clearing sticky headers).","jump-links-block-seo-44"),value:N,onChange:e=>u({stickyOffset:e}),min:0,max:200,__nextHasNoMarginBottom:!0,__next40pxDefaultSize:!0}),(0,l.createElement)(n.RangeControl,{label:(0,o.__)("Jump Offset (px)","jump-links-block-seo-44"),help:(0,o.__)("The buffer distance to stop *before* the heading. Increase this if your sticky header covers the text.","jump-links-block-seo-44"),value:H,onChange:e=>u({jumpOffset:e}),min:0,max:200,__nextHasNoMarginBottom:!0,__next40pxDefaultSize:!0}),(0,l.createElement)(n.ToggleControl,{label:(0,o.__)("Disable on Mobile","jump-links-block-seo-44"),help:(0,o.__)("Prevents the block from sticking on small screens to save reading space.","jump-links-block-seo-44"),checked:"desktop-only"===M,onChange:e=>u({stickyStrategy:e?"desktop-only":"always"}),__nextHasNoMarginBottom:!0})))),(0,l.createElement)("div",{...$},p&&(0,l.createElement)(t.RichText,{tagName:b,className:"wp-block-seo44-jump-links-heading",value:d,onChange:e=>u({headingText:e}),placeholder:(0,o.__)("On This Page","jump-links-block-seo-44")}),h.length>0?(0,l.createElement)("nav",{"aria-label":(0,o.__)("Table of contents","jump-links-block-seo-44")},(0,l.createElement)(O,{id:L},h.map((e,t)=>v?(0,l.createElement)("li",{key:e.anchor},(0,l.createElement)(n.TextControl,{value:e.linkText,onChange:e=>((e,l)=>{const o=[...h];o[e].linkText=l,u({headings:o})})(t,e)}),(0,l.createElement)("div",{className:"edit-controls-wrapper"},(0,l.createElement)("div",{className:"reorder-buttons"},(0,l.createElement)(n.Button,{icon:r,label:(0,o.__)("Move Up","jump-links-block-seo-44"),onClick:()=>R(t,"up"),disabled:0===t}),(0,l.createElement)(n.Button,{icon:c,label:(0,o.__)("Move Down","jump-links-block-seo-44"),onClick:()=>R(t,"down"),disabled:t===h.length-1})),(0,l.createElement)(n.ToggleControl,{label:!1!==e.isVisible?(0,o.__)("Included","jump-links-block-seo-44"):(0,o.__)("This Jump Link will not be shown","jump-links-block-seo-44"),checked:!1!==e.isVisible,onChange:()=>(e=>{const l=[...h];l[e].isVisible=!l[e].isVisible,u({headings:l})})(t),__nextHasNoMarginBottom:!0}))):!1!==e.isVisible&&(0,l.createElement)("li",{key:e.anchor,className:x?`seo44-jump-link-level-${e.level}`:""},(0,l.createElement)("a",{href:`#${e.anchor}`,onClick:e=>e.preventDefault()},e.linkText)))),!v&&f&&h.length>0&&(0,l.createElement)(n.Tooltip,{text:(0,o.__)("This button is functional on the front-end to expand the list.","jump-links-block-seo-44")},(0,l.createElement)("button",{type:"button",className:"seo-44-show-more","aria-label":(0,o.__)("Show More","jump-links-block-seo-44"),"aria-expanded":"false","aria-controls":L,onClick:()=>{I((0,o.__)('The "Show More" button is interactive on the published page.',"jump-links-block-seo-44"),{type:"snackbar"})}},k))):(0,l.createElement)("p",null,(0,o.__)("No headings found. Select a heading level in the block settings to generate links.","jump-links-block-seo-44"))))},save:function({attributes:e}){const{blockInstanceId:n,layout:s,isCollapsible:a,isSmartIndentation:i,headings:r,showHeading:c,headingText:k,headingTag:u,listStyle:m,fontSize:h,textColor:p,linkColor:d,blockBackgroundColor:b,linkBackgroundColor:g,linkBackgroundColorHover:_,linkBorderColor:v,linkBorderRadius:f,isSticky:x,stickyOffset:w,jumpOffset:C,stickyStrategy:E}=e,j={color:p,fontSize:h,"--jump-link-font-size":h||"18px","--seo44-block-bg":b,"--seo44-link-color":d,"--seo44-link-bg":"horizontal"===s?g:void 0,"--seo44-link-hover-bg":"horizontal"===s?_:void 0,"--seo44-link-border-color":"horizontal"===s?v:void 0,"--seo44-link-radius":"horizontal"===s&&f?`${f}px`:void 0,"--seo44-sticky-offset":x?`${w}px`:void 0},y="ol"===m?"ol":"ul",B=`seo44-jump-links-list-${n}`,S=t.useBlockProps.save({className:`${"horizontal"===s?"is-layout-horizontal":""} ${a?"is-collapsible":""} ${"none"===m?"list-style-none":""} ${x?"is-sticky":""} ${"desktop-only"===E?"sticky-desktop-only":""}`.trim(),style:j,"data-seo44-jump-offset":x?C:30}),z=(0,l.createElement)("svg",{className:"arrow-down",width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M12 16l-6-6 1.41-1.41L12 13.17l4.59-4.58L18 10l-6 6z"})),T=(0,l.createElement)("svg",{className:"arrow-up",width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"},(0,l.createElement)("path",{d:"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14l-6-6z"}));return(0,l.createElement)("div",{...S},(0,l.createElement)("div",{className:"seo44-sticky-sentinel","aria-hidden":"true"}),c&&(0,l.createElement)(t.RichText.Content,{tagName:u||"h2",className:"wp-block-seo44-jump-links-heading",value:k}),r&&r.length>0&&(0,l.createElement)("nav",{"aria-label":(0,o.__)("Table of contents","jump-links-block-seo-44")},(0,l.createElement)(y,{id:B},r.filter(e=>!1!==e.isVisible).map(e=>(0,l.createElement)("li",{key:e.anchor,className:i?`seo44-jump-link-level-${e.level}`:""},(0,l.createElement)("a",{href:`#${e.anchor}`},e.linkText)))),a&&(0,l.createElement)("button",{type:"button",className:"seo-44-show-more","aria-label":(0,o.__)("Show More","jump-links-block-seo-44"),"aria-expanded":"false","aria-controls":B},z,T)))}})}},o={};function t(e){var n=o[e];if(void 0!==n)return n.exports;var s=o[e]={exports:{}};return l[e](s,s.exports,t),s.exports}t.m=l,e=[],t.O=(l,o,n,s)=>{if(!o){var a=1/0;for(k=0;k<e.length;k++){for(var[o,n,s]=e[k],i=!0,r=0;r<o.length;r++)(!1&s||a>=s)&&Object.keys(t.O).every(e=>t.O[e](o[r]))?o.splice(r--,1):(i=!1,s<a&&(a=s));if(i){e.splice(k--,1);var c=n();void 0!==c&&(l=c)}}return l}s=s||0;for(var k=e.length;k>0&&e[k-1][2]>s;k--)e[k]=e[k-1];e[k]=[o,n,s]},t.o=(e,l)=>Object.prototype.hasOwnProperty.call(e,l),(()=>{var e={57:0,350:0};t.O.j=l=>0===e[l];var l=(l,o)=>{var n,s,[a,i,r]=o,c=0;if(a.some(l=>0!==e[l])){for(n in i)t.o(i,n)&&(t.m[n]=i[n]);if(r)var k=r(t)}for(l&&l(o);c<a.length;c++)s=a[c],t.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return t.O(k)},o=globalThis.webpackChunkseo_44_jump_links_block=globalThis.webpackChunkseo_44_jump_links_block||[];o.forEach(l.bind(null,0)),o.push=l.bind(null,o.push.bind(o))})();var n=t.O(void 0,[350],()=>t(313));n=t.O(n)})(); -
jump-links-block-seo-44/trunk/build/style-index-rtl.css
r3400036 r3403606 1 .wp-block-seo44-jump-links{ margin-bottom:1em}.wp-block-seo44-jump-links-heading{flex-basis:100%;font-size:calc(var(--jump-link-font-size, 1em)*1.375)}.wp-block-seo44-jump-links.list-style-none>ul{list-style-type:none;padding-right:0}.wp-block-seo44-jump-links.is-layout-horizontal ol,.wp-block-seo44-jump-links.is-layout-horizontal ul{display:flex;flex-wrap:wrap;gap:.5em;list-style-type:none;margin:.5em 0 1em;padding:0}.wp-block-seo44-jump-links.is-layout-horizontal li a{background-color:var(--link-bg-color);border-style:solid;border-width:1px;display:inline-block;padding:.5em 1em;text-decoration:none}.wp-block-seo44-jump-links.is-layout-horizontal li a:hover{background-color:var(--link-bg-hover-color);text-decoration:underline;text-underline-offset:.1em}.wp-block-seo44-jump-links.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-collapsible>nav>ul{flex-wrap:wrap;max-height:2.5em;overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links .seo-44-show-more{border:1px solid;border-radius:4px;cursor:pointer;display:none;line-height:1;padding:0}.wp-block-seo44-jump-links .seo-44-show-more svg{fill:currentColor;height:30px;width:30px}.wp-block-seo44-jump-links .seo-44-show-more .arrow-up,.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-down{display:none}.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-up{display:inline-block}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ol,.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ul{display:inline-block;max-height:calc(var(--jump-link-font-size, 1em)*1.7*2);max-width:calc(100% - 40px);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal) .seo-44-show-more{margin-top:calc(var(--jump-link-font-size, 1em)*1.8);vertical-align:top}.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ul{max-height:calc(var(--jump-link-font-size, 1em)*1.7 + 1.5em);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ul{max-height:1000px}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav{align-items:flex-start;display:flex;flex-wrap:wrap;gap:.5em}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ul{flex-basis:0;flex-grow:1}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>.seo-44-show-more{flex-shrink:0;margin-top:.5em}1 .wp-block-seo44-jump-links{background-color:var(--seo44-block-bg);margin-bottom:var(--wp--preset--spacing--30);margin-top:var(--wp--preset--spacing--30);padding:var(--wp--preset--spacing--30)}.wp-block-seo44-jump-links-heading{flex-basis:100%}.wp-block-seo44-jump-links nav>ol li,.wp-block-seo44-jump-links nav>ul li{margin:0;padding:0}.wp-block-seo44-jump-links.list-style-none nav>ol,.wp-block-seo44-jump-links.list-style-none nav>ul{list-style-type:none;padding-right:0}.wp-block-seo44-jump-links.is-layout-horizontal ol,.wp-block-seo44-jump-links.is-layout-horizontal ul{display:flex;flex-wrap:wrap;gap:0 .5em;list-style-type:none;margin:-.5em 0 0;padding:0}.wp-block-seo44-jump-links.is-layout-horizontal ol li,.wp-block-seo44-jump-links.is-layout-horizontal ul li{margin:.5em 0 0}.wp-block-seo44-jump-links li a{color:var(--seo44-link-color,#0073aa)}.wp-block-seo44-jump-links.is-layout-horizontal li a{background-color:var(--seo44-link-bg);border-color:var(--seo44-link-border-color);border-radius:var(--seo44-link-radius);border-style:solid;border-width:1px;display:inline-block;padding:.5em 1em;text-decoration:none}.wp-block-seo44-jump-links.is-layout-horizontal li a:hover{background-color:var(--seo44-link-hover-bg);text-decoration:underline;text-underline-offset:.1em}.wp-block-seo44-jump-links.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-collapsible>nav>ul{flex-wrap:wrap;max-height:2.5em;overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links .seo-44-show-more{border:1px solid;border-radius:4px;cursor:pointer;display:none;line-height:1;padding:0}.wp-block-seo44-jump-links .seo-44-show-more svg{fill:currentColor;height:30px;width:30px}.wp-block-seo44-jump-links .seo-44-show-more .arrow-up,.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-down{display:none}.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-up{display:inline-block}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ol,.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ul{display:inline-block;max-height:calc(var(--jump-link-font-size, 1em)*1.9*2);max-width:calc(100% - 40px);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal) .seo-44-show-more{margin-top:calc(var(--jump-link-font-size, 1em)*1.8);vertical-align:top}.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ul{max-height:calc(var(--jump-link-font-size, 1em)*1.7 + 1.5em);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ul{max-height:1000px}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav{align-items:flex-start;display:flex;flex-wrap:wrap;gap:.5em}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ul{flex-basis:0;flex-grow:1}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>.seo-44-show-more{flex-shrink:0;margin-top:.5em}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ul li.seo44-jump-link-level-3{font-size:.95em;margin-right:1.5em;opacity:.9}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ul li.seo44-jump-link-level-4{font-size:.9em;list-style-type:circle;margin-right:3em;opacity:.85}.wp-block-seo44-jump-links.list-style-none nav>ol li.seo44-jump-link-level-4,.wp-block-seo44-jump-links.list-style-none nav>ul li.seo44-jump-link-level-4{list-style-type:none}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ol li.seo44-jump-link-level-3{font-size:.95em;opacity:.9;padding-right:1.5em}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ol li.seo44-jump-link-level-4{font-size:.9em;opacity:.85;padding-right:3em}.wp-block-seo44-jump-links.is-sticky{background-color:var(--seo44-block-bg,#fff);position:sticky;position:-webkit-sticky;top:var(--seo44-sticky-offset,20px);z-index:10}@media(max-width:781px){.wp-block-seo44-jump-links.is-sticky.sticky-desktop-only{position:static;top:auto}}.wp-block-seo44-jump-links.is-sticky.is-stuck a.is-active{color:var(--seo44-link-color);font-weight:700}.wp-block-seo44-jump-links.is-sticky.is-stuck.is-layout-horizontal a.is-active{background-color:var(--seo44-link-hover-bg);text-decoration:none}.wp-block-seo44-jump-links.is-sticky.is-stuck:not(.is-layout-horizontal) a.is-active{border-right:3px solid var(--seo44-link-color);padding-right:.5em}.wp-block-seo44-jump-links{position:relative}.seo44-sticky-sentinel{height:1px;right:0;pointer-events:none;position:absolute;left:0;top:calc((var(--seo44-sticky-offset, 20px) + 3px)*-1);visibility:hidden}.wp-block-seo44-jump-links.is-sticky.is-stuck .wp-block-seo44-jump-links-heading{margin:0;max-height:0;opacity:0;overflow:hidden;transition:max-height .5s ease 1s,opacity .3s ease 1s,margin .5s ease 1s}.wp-block-seo44-jump-links-heading{margin-bottom:.25em;margin-top:0;max-height:100px;opacity:1;transition:max-height .5s ease,opacity .3s ease,margin .5s ease} -
jump-links-block-seo-44/trunk/build/style-index.css
r3400036 r3403606 1 .wp-block-seo44-jump-links{ margin-bottom:1em}.wp-block-seo44-jump-links-heading{flex-basis:100%;font-size:calc(var(--jump-link-font-size, 1em)*1.375)}.wp-block-seo44-jump-links.list-style-none>ul{list-style-type:none;padding-left:0}.wp-block-seo44-jump-links.is-layout-horizontal ol,.wp-block-seo44-jump-links.is-layout-horizontal ul{display:flex;flex-wrap:wrap;gap:.5em;list-style-type:none;margin:.5em 0 1em;padding:0}.wp-block-seo44-jump-links.is-layout-horizontal li a{background-color:var(--link-bg-color);border-style:solid;border-width:1px;display:inline-block;padding:.5em 1em;text-decoration:none}.wp-block-seo44-jump-links.is-layout-horizontal li a:hover{background-color:var(--link-bg-hover-color);text-decoration:underline;text-underline-offset:.1em}.wp-block-seo44-jump-links.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-collapsible>nav>ul{flex-wrap:wrap;max-height:2.5em;overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links .seo-44-show-more{border:1px solid;border-radius:4px;cursor:pointer;display:none;line-height:1;padding:0}.wp-block-seo44-jump-links .seo-44-show-more svg{fill:currentColor;height:30px;width:30px}.wp-block-seo44-jump-links .seo-44-show-more .arrow-up,.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-down{display:none}.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-up{display:inline-block}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ol,.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ul{display:inline-block;max-height:calc(var(--jump-link-font-size, 1em)*1.7*2);max-width:calc(100% - 40px);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal) .seo-44-show-more{margin-top:calc(var(--jump-link-font-size, 1em)*1.8);vertical-align:top}.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ul{max-height:calc(var(--jump-link-font-size, 1em)*1.7 + 1.5em);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ul{max-height:1000px}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav{align-items:flex-start;display:flex;flex-wrap:wrap;gap:.5em}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ul{flex-basis:0;flex-grow:1}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>.seo-44-show-more{flex-shrink:0;margin-top:.5em}1 .wp-block-seo44-jump-links{background-color:var(--seo44-block-bg);margin-bottom:var(--wp--preset--spacing--30);margin-top:var(--wp--preset--spacing--30);padding:var(--wp--preset--spacing--30)}.wp-block-seo44-jump-links-heading{flex-basis:100%}.wp-block-seo44-jump-links nav>ol li,.wp-block-seo44-jump-links nav>ul li{margin:0;padding:0}.wp-block-seo44-jump-links.list-style-none nav>ol,.wp-block-seo44-jump-links.list-style-none nav>ul{list-style-type:none;padding-left:0}.wp-block-seo44-jump-links.is-layout-horizontal ol,.wp-block-seo44-jump-links.is-layout-horizontal ul{display:flex;flex-wrap:wrap;gap:0 .5em;list-style-type:none;margin:-.5em 0 0;padding:0}.wp-block-seo44-jump-links.is-layout-horizontal ol li,.wp-block-seo44-jump-links.is-layout-horizontal ul li{margin:.5em 0 0}.wp-block-seo44-jump-links li a{color:var(--seo44-link-color,#0073aa)}.wp-block-seo44-jump-links.is-layout-horizontal li a{background-color:var(--seo44-link-bg);border-color:var(--seo44-link-border-color);border-radius:var(--seo44-link-radius);border-style:solid;border-width:1px;display:inline-block;padding:.5em 1em;text-decoration:none}.wp-block-seo44-jump-links.is-layout-horizontal li a:hover{background-color:var(--seo44-link-hover-bg);text-decoration:underline;text-underline-offset:.1em}.wp-block-seo44-jump-links.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-collapsible>nav>ul{flex-wrap:wrap;max-height:2.5em;overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links .seo-44-show-more{border:1px solid;border-radius:4px;cursor:pointer;display:none;line-height:1;padding:0}.wp-block-seo44-jump-links .seo-44-show-more svg{fill:currentColor;height:30px;width:30px}.wp-block-seo44-jump-links .seo-44-show-more .arrow-up,.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-down{display:none}.wp-block-seo44-jump-links.is-expanded .seo-44-show-more .arrow-up{display:inline-block}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ol,.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal)>nav>ul{display:inline-block;max-height:calc(var(--jump-link-font-size, 1em)*1.9*2);max-width:calc(100% - 40px);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible:not(.is-layout-horizontal) .seo-44-show-more{margin-top:calc(var(--jump-link-font-size, 1em)*1.8);vertical-align:top}.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-layout-horizontal>nav>ul{max-height:calc(var(--jump-link-font-size, 1em)*1.7 + 1.5em);overflow:hidden;transition:max-height .3s ease-in-out}.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ol,.wp-block-seo44-jump-links.is-collapsible.is-expanded>nav>ul{max-height:1000px}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav{align-items:flex-start;display:flex;flex-wrap:wrap;gap:.5em}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ol,.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>ul{flex-basis:0;flex-grow:1}.wp-block-seo44-jump-links.is-layout-horizontal.is-collapsible>nav>.seo-44-show-more{flex-shrink:0;margin-top:.5em}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ul li.seo44-jump-link-level-3{font-size:.95em;margin-left:1.5em;opacity:.9}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ul li.seo44-jump-link-level-4{font-size:.9em;list-style-type:circle;margin-left:3em;opacity:.85}.wp-block-seo44-jump-links.list-style-none nav>ol li.seo44-jump-link-level-4,.wp-block-seo44-jump-links.list-style-none nav>ul li.seo44-jump-link-level-4{list-style-type:none}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ol li.seo44-jump-link-level-3{font-size:.95em;opacity:.9;padding-left:1.5em}.wp-block-seo44-jump-links:not(.is-layout-horizontal) ol li.seo44-jump-link-level-4{font-size:.9em;opacity:.85;padding-left:3em}.wp-block-seo44-jump-links.is-sticky{background-color:var(--seo44-block-bg,#fff);position:sticky;position:-webkit-sticky;top:var(--seo44-sticky-offset,20px);z-index:10}@media(max-width:781px){.wp-block-seo44-jump-links.is-sticky.sticky-desktop-only{position:static;top:auto}}.wp-block-seo44-jump-links.is-sticky.is-stuck a.is-active{color:var(--seo44-link-color);font-weight:700}.wp-block-seo44-jump-links.is-sticky.is-stuck.is-layout-horizontal a.is-active{background-color:var(--seo44-link-hover-bg);text-decoration:none}.wp-block-seo44-jump-links.is-sticky.is-stuck:not(.is-layout-horizontal) a.is-active{border-left:3px solid var(--seo44-link-color);padding-left:.5em}.wp-block-seo44-jump-links{position:relative}.seo44-sticky-sentinel{height:1px;left:0;pointer-events:none;position:absolute;right:0;top:calc((var(--seo44-sticky-offset, 20px) + 3px)*-1);visibility:hidden}.wp-block-seo44-jump-links.is-sticky.is-stuck .wp-block-seo44-jump-links-heading{margin:0;max-height:0;opacity:0;overflow:hidden;transition:max-height .5s ease 1s,opacity .3s ease 1s,margin .5s ease 1s}.wp-block-seo44-jump-links-heading{margin-bottom:.25em;margin-top:0;max-height:100px;opacity:1;transition:max-height .5s ease,opacity .3s ease,margin .5s ease} -
jump-links-block-seo-44/trunk/build/view.asset.php
r3400036 r3403606 1 <?php return array('dependencies' => array(), 'version' => ' dddf910b044fd87910cb');1 <?php return array('dependencies' => array(), 'version' => '5d75a6211fafff395ca9'); -
jump-links-block-seo-44/trunk/build/view.js
r3400036 r3403606 1 window.addEventListener("load",function(){document.querySelectorAll(".wp-block-seo44-jump-links").forEach(e=>{if(e. querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();const t=this.getAttribute("href"),s=document.querySelector(t);s&&s.scrollIntoView({behavior:"smooth"})})}),e.classList.contains("is-collapsible")){const t=e.querySelector(".seo-44-show-more");if(t){t.style.display="inline-block";const s=window.seo44JumpLinksL10n||{},o=s.showMore||"Show More",i=s.showLess||"Show Less";t.setAttribute("aria-label",o),t.addEventListener("click",function(){e.classList.toggle("is-expanded");const s=e.classList.contains("is-expanded");t.setAttribute("aria-expanded",s),s?t.setAttribute("aria-label",i):t.setAttribute("aria-label",o)})}}})});1 window.addEventListener("load",function(){document.querySelectorAll(".wp-block-seo44-jump-links").forEach(e=>{if(e.addEventListener("click",function(t){const s=t.target.closest('a[href^="#"]');if(s){t.preventDefault();const o=s.getAttribute("href"),i=document.querySelector(o);if(i)if(e.classList.contains("is-sticky")){let t=30;const s=e.getAttribute("data-seo44-jump-offset");s&&(t=parseInt(s,10));const o=i.getBoundingClientRect().top+window.scrollY-t;window.scrollTo({top:o,behavior:"smooth"})}else i.scrollIntoView({behavior:"smooth"})}}),e.classList.contains("is-collapsible")){const t=e.querySelector(".seo-44-show-more");if(t){t.style.display="inline-block";const s=window.seo44JumpLinksL10n||{},o=s.showMore||"Show More",i=s.showLess||"Show Less";t.setAttribute("aria-label",o),t.addEventListener("click",function(){e.classList.toggle("is-expanded");const s=e.classList.contains("is-expanded");t.setAttribute("aria-expanded",s),s?t.setAttribute("aria-label",i):t.setAttribute("aria-label",o)})}}if(e.classList.contains("is-sticky")&&"IntersectionObserver"in window){const t=new IntersectionObserver(t=>{t.forEach(t=>{!t.isIntersecting&&t.boundingClientRect.top<0?e.classList.add("is-stuck"):e.classList.remove("is-stuck")})},{threshold:0,rootMargin:"0px"});e.querySelectorAll(".seo44-sticky-sentinel").forEach(e=>{t.observe(e)})}if("IntersectionObserver"in window){const t=new IntersectionObserver(t=>{t.forEach(t=>{if(t.isIntersecting){const s=t.target.getAttribute("id"),o=e.querySelector(`a[href="#${s}"]`);o&&(e.querySelectorAll("a").forEach(e=>e.classList.remove("is-active")),o.classList.add("is-active"))}})},{root:null,rootMargin:"-100px 0px -60% 0px",threshold:0});e.querySelectorAll('a[href^="#"]').forEach(e=>{const s=e.getAttribute("href").substring(1),o=document.getElementById(s);o&&t.observe(o)})}})}); -
jump-links-block-seo-44/trunk/changelog.txt
r3400046 r3403606 1 1 == Changelog == 2 3 = 2.0.0 = 4 * FEATURE: **Sticky Positioning:** Keep your table of contents visible while users scroll. Includes a "Top Offset" slider to clear sticky headers, a "Jump Offset" slider to ensure that the sticky header does not cover the heading text, and a "Disable on Mobile" toggle to preserve screen space on small devices. 5 * FEATURE: **Auto-Hide Title:** Implemented a smart "sticky state" detection. When the block sticks, the title gently collapses and fades out to keep the interface clean (this occurs when a block title is used alongside sticky positioning). 6 * FEATURE: **Smart Indentation:** Added a "Create Visual Hierarchy" toggle. When enabled, H3 and H4 sub-headings are visually indented to create a clear, nested outline structure. 7 * FEATURE: **Block Background:** You can now set a background color for the entire block container, perfect for creating "card-style" floating navigation. 8 * FEATURE: **ScrollSpy:** Automatically highlights the active link in the table of contents as the user scrolls through the corresponding section of the post. 9 10 = 1.9.2 = 11 * FEATURE: Added support for Border and Spacing controls. You can now add borders, rounded corners, margins, and padding to the Jump Links block directly from the editor settings. 12 * FEATURE: Added a "Heading Level" control. You can now choose the specific HTML tag (H2, H3, H4, H5, Paragraph, or Div) for the "On This Page" heading to better match your document structure. 13 * REFACTOR: Optimized the block's styling logic to use CSS variables on the parent container instead of inline styles for every link. This reduces the block's HTML size and improves rendering performance. 14 * FIX: Resolved an accessibility and HTML validation issue where using multiple Jump Links blocks on a single page created duplicate element IDs. Each block now generates a unique instance ID. 15 * PERFORMANCE: Refactored the front-end JavaScript to use event delegation for smooth scrolling. This reduces memory usage by attaching a single event listener to the block instead of individual listeners for every link. 16 * TWEAK: Reorganized the sidebar settings for better clarity between Block Title settings and Content Inclusion settings. 17 2 18 = 1.9.1 = 3 19 * **FIX** (readme): Fixed a small typo in the readme.txt file. -
jump-links-block-seo-44/trunk/jump-links-block.php
r3400046 r3403606 4 4 * Plugin URI: https://www.sethcreates.com/plugins-for-wordpress/jump-links-block-seo-44/ 5 5 * Description: A standalone custom block for automatically creating a customizable Jump Links table of contents. 6 * Version: 1.9. 16 * Version: 1.9.2 7 7 * Author: Seth Smigelski 8 8 * Author URI: https://www.sethcreates.com/plugins-for-wordpress/ -
jump-links-block-seo-44/trunk/readme.txt
r3400046 r3403606 4 4 Requires at least: 5.5 5 5 Tested up to: 6.8 6 Stable tag: 1.9.16 Stable tag: 2.0.0 7 7 Requires PHP: 7.4 8 8 License: GPLv2 or later … … 32 32 33 33 **Enhance User Experience** 34 For long articles, a table of contents is essential. It allows readers to easily navigate to the sections they care about most, which reduces bounce rates and increases the time they spend on your page. Search engines place value on these positive user engagement signals.34 For long articles, a table of contents is essential. It allows readers to easily navigate to the sections they care about most, and see exactly where they are in the article at a glance, which reduces bounce rates and increases the time they spend on your page. Search engines place value on these positive user engagement signals. 35 35 36 36 **Provide Clear Context for Search Engines** … … 64 64 * **Layout Control:** Display your links in a standard vertical list or a modern horizontal, button-style layout. 65 65 66 * **List Styles:** Choose between a bulleted list (`<ul>`), a numbered list (`<ol>`), or no list styling at all. 67 66 68 * **Typography:** Control the **font size** with a simple picker, including a reset button. 67 69 68 * ** List Styles:** Choose between a bulleted list (`<ul>`), a numbered list (`<ol>`), or no list styling at all.70 * **Block Background:** Set a background color for the entire block container to make your table of contents pop or match your theme's card style. This setting extends upon the block margin, padding, and border options within the block styling tab. 69 71 70 72 * **Full Color Control:** Use integrated color pickers to customize: **Link Color**, **Other Text Color** (for bullets, numbers, and the main heading). 71 73 72 74 * **Conditional Horizontal Link Styles:** When in the horizontal layout, you can fine-tune the design with controls for **Link Background Color**, **Link Background Color on hover**, **Link Border Color**, and **border radius**. 75 76 * **Visual Hierarchy:** Optional **"Smart Indentation"** creates a nested outline look, making it easier for readers to scan your document structure in a larger Table of Contents (e.g., indenting H3s under H2s). 73 77 74 78 = Front-End Experience = … … 76 80 77 81 * **Collapsible List:** Optional feature to collapse long lists with an elegant "Show More" / "Show Less" SVG icon button to expand and contract the list horizontally or vertically. 82 83 * **Sticky Navigation:** Optionally, keep the table of contents pinned to the viewport as users scroll, ensuring navigation is always accessible for long articles. 84 85 * **Smart Sticky Controls:** Includes a **Top Offset** setting to prevent the block from hiding behind your site's sticky header, a **Jump Offset** setting to ensure that the sticky header does not cover the heading text, and a **Disable on Mobile** strategy to prevent it from blocking content on small screens. 86 87 * **Auto-Hide Title:** When using Sticky Positioning, the block title (e.g., "On This Page") automatically fades out and collapses once the block sticks to the top of the screen. This maximizes reading space while keeping the navigation links accessible. 88 89 * **Active Link Indicator (ScrollSpy):** As your readers scroll through the content, the table of contents automatically highlights the link for the section they are currently reading, giving them instant context on their progress. 78 90 79 91 == Installation == … … 134 146 **Note:** If one of the headings on your page is “Office Directions,” the ID created will be “office-directions.” This could create a potential conflict if you have another ID on your webpage named “office-directions.” In this case, assign a different ID to the block heading to resolve the conflict. 135 147 148 = How do I make the Table of Contents stay visible while scrolling? = 149 In the block settings sidebar, look for the **Position Settings** panel. Toggle on **"Sticky Position"**. 150 You can then use the **"Top Offset"** slider to adjust how far from the top of the screen the block sits (useful if you have a sticky site header). 151 152 = Why isn't the block "sticky" on my phone? = 153 The sticky feature includes a **"Disable on Mobile"** setting that is enabled by default. 154 Sticky elements on mobile devices often cover up too much reading space and lead to a poor user experience. If you want it sticky on mobile, you can uncheck this box in the **Position Settings** panel. 155 156 = Can I include more than one Jump Links Block per page? = 157 Yes. In fact, you can customize the second jump links block to appear different than the first. For example, you might have a horizontal jump links block at the top of your page containing jump links to each H2 heading. Lower on your webpage, you could add a second jump links block formatted as a numbered vertical list of links for each H3 heading in the biggest section of your page. 158 136 159 = Why does the "Show More" button not work in the editor? = 137 160 The collapsible functionality and the **Show More** button, which features a down arrow icon, are front-end features that function using a JavaScript file. They are designed to work only on the live, published page. To give you an accurate preview, the editor displays a non-functional replica of the "Show More" button when the feature is enabled. You can hover over it to see a helpful tooltip, and clicking it will show an informational notice confirming that it's interactive on the front end. … … 152 175 4. Published Vertical Jump Links, expanded and collapsed. 153 176 5. Published Horizontal Jump Links, expanded and collapsed. 177 6. Published Horizontal Jump Links with sticky navigation showing the Active Link Indicator. 154 178 155 179 == Changelog == 156 180 157 = 1.9.1 = 158 * FIX (readme): Fixed a small typo in the readme.txt file. 159 160 = 1.9.0 = 161 * HELLO WORLD: Initial release to the WordPress Plugin Directory. 181 = 2.0.0 = 182 * FEATURE: **Sticky Positioning:** Keep your table of contents visible while users scroll. Includes a "Top Offset" slider to clear sticky headers, a "Jump Offset" slider to ensure that the sticky header does not cover the heading text, and a "Disable on Mobile" toggle to preserve screen space on small devices. 183 * FEATURE: **Auto-Hide Title:** Implemented a smart "sticky state" detection. When the block sticks, the title gently collapses and fades out to keep the interface clean (this occurs when a block title is used alongside sticky positioning). 184 * FEATURE: **Smart Indentation:** Added a "Create Visual Hierarchy" toggle. When enabled, H3 and H4 sub-headings are visually indented to create a clear, nested outline structure. 185 * FEATURE: **Block Background:** You can now set a background color for the entire block container, perfect for creating "card-style" floating navigation. 186 * FEATURE: **ScrollSpy:** Automatically highlights the active link in the table of contents as the user scrolls through the corresponding section of the post. 187 188 = 1.9.2 = 189 * FEATURE: Added support for Border and Spacing controls. You can now add borders, rounded corners, margins, and padding to the Jump Links block directly from the editor settings. 190 * FEATURE: Added a "Title tag" control. You can now choose the specific HTML tag (H2, H3, H4, H5, Paragraph, or Div) for the "On This Page" heading to better match your document structure. 191 * REFACTOR: Optimized the block's styling logic to use CSS variables on the parent container instead of inline styles for every link. This reduces the block's HTML size and improves rendering performance. 192 * FIX: Resolved an accessibility and HTML validation issue where using multiple Jump Links blocks on a single page created duplicate element IDs. Each block now generates a unique instance ID. 193 * PERFORMANCE: Refactored the front-end JavaScript to use event delegation for smooth scrolling. This reduces memory usage by attaching a single event listener to the block instead of individual listeners for every link. 194 * TWEAK: Reorganized the sidebar settings for better clarity between Block Title settings and Content Inclusion settings. 195 162 196 163 197 For a complete list of changes, please see the [full changelog](https://seo44plugin.com/jump-links-block-seo-44/changelog/) or the changelog.txt file included with the plugin.
Note: See TracChangeset
for help on using the changeset viewer.