Plugin Directory

Changeset 3403606


Ignore:
Timestamp:
11/26/2025 06:04:28 PM (3 months ago)
Author:
sethsm
Message:

Update to version 2.0 from GitHub

Location:
jump-links-block-seo-44
Files:
3 added
29 edited
1 copied

Legend:

Unmodified
Added
Removed
  • jump-links-block-seo-44/tags/2.0/README.md

    r3400046 r3403606  
    66* **Requires at least:** 5.5
    77* **Tested up to:** 6.8
    8 * **Stable tag:** 1.9.1
     8* **Stable tag:** 2.0.0
    99* **Requires PHP:** 7.4
    1010* **License:** GPLv2 or later
     
    3636
    3737**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.
     38For 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.
    3939
    4040**Provide Clear Context for Search Engines:**
     
    7272
    7373* **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.
    7476
    7577* **Typography:** Control the **font size** with a simple picker, including a reset button.
    7678
    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.
    7880
    7981* **Full Color Control:** Use integrated color pickers to customize: **Link Color**, **Other Text Color** (for bullets, numbers, and the main heading).
     
    8183* **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**.
    8284
     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
    8387---
    8488
     
    8892
    8993* **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
    90103
    91104---
     
    154167**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.
    155168
     169### How do I make the Table of Contents stay visible while scrolling?
     170In the block settings sidebar, look for the **Position Settings** panel. Toggle on **"Sticky Position"**.
     171You 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?
     174The sticky feature includes a **"Disable on Mobile"** setting that is enabled by default.
     175Sticky 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?
     178Yes. 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
    156180### Why does the "Show More" button not work in the editor?
    157181The 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.
     
    1902144. Published Vertical Jump Links, expanded and collapsed.
    1912155. Published Horizontal Jump Links, expanded and collapsed.
     2166. Published Horizontal Jump Links with sticky navigation showing the Active Link Indicator.
    192217
    193218---
    194219
    195220## 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.
    199235
    200236### 1.9.0
  • jump-links-block-seo-44/tags/2.0/build/block.json

    r3400046 r3403606  
    33  "apiVersion": 3,
    44  "attributes": {
     5    "blockInstanceId": {
     6      "type": "string"
     7    },
     8    "blockBackgroundColor": {
     9      "type": "string"
     10    },
    511    "linkColor": {
    612      "type": "string",
    7       "default": "#0073aa"
     13      "default": "#046bd2"
    814    },
    915    "linkBackgroundColor": {
    1016      "type": "string",
    11       "default": "#f0f0f0"
     17      "default": "#f4f4f4"
    1218    },
    1319    "linkBackgroundColorHover": {
    1420      "type": "string",
    15       "default": "#e4e4e4"
     21      "default": "#efefef"
    1622    },
    1723    "linkBorderColor": {
     
    2935      "type": "string"
    3036    },
     37    "headingTag": {
     38      "type": "string",
     39      "default": "h2"
     40    },
    3141    "headingLevels": {
    3242      "default": [
     
    4353      "items": {
    4454        "properties": {
     55          "level": {
     56            "type": "integer"
     57          },
    4558          "anchor": {
    4659            "type": "string"
     
    8295    "textColor": {
    8396      "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      }
    84129    }
    85130  },
     
    92137  "name": "seo44/jump-links",
    93138  "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    }
    95156  },
    96157  "textdomain": "jump-links-block-seo-44",
    97158  "title": "SEO 44 Jump Links",
    98   "version": "1.9.1",
     159  "version": "2.0.0",
    99160  "viewScript": "file:./view.js"
    100161}
  • 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)})}}})});
     1window.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  
    11== 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
    218= 1.9.1 =
    319* **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  
    44 * Plugin URI:        https://www.sethcreates.com/plugins-for-wordpress/jump-links-block-seo-44/
    55 * Description:       A standalone custom block for automatically creating a customizable Jump Links table of contents.
    6  * Version:           1.9.1
     6 * Version:           1.9.2
    77 * Author:            Seth Smigelski
    88 * Author URI:          https://www.sethcreates.com/plugins-for-wordpress/
  • jump-links-block-seo-44/tags/2.0/readme.txt

    r3400046 r3403606  
    44Requires at least: 5.5
    55Tested up to: 6.8
    6 Stable tag: 1.9.1
     6Stable tag: 2.0.0
    77Requires PHP: 7.4
    88License: GPLv2 or later
     
    3232
    3333**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.
     34For 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.
    3535
    3636**Provide Clear Context for Search Engines**
     
    6464* **Layout Control:** Display your links in a standard vertical list or a modern horizontal, button-style layout.
    6565
     66* **List Styles:** Choose between a bulleted list (`<ul>`), a numbered list (`<ol>`), or no list styling at all.
     67
    6668* **Typography:** Control the **font size** with a simple picker, including a reset button.
    6769
    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.
    6971
    7072* **Full Color Control:** Use integrated color pickers to customize: **Link Color**, **Other Text Color** (for bullets, numbers, and the main heading).
    7173
    7274* **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).
    7377
    7478= Front-End Experience =
     
    7680
    7781* **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.
    7890
    7991== Installation ==
     
    134146**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.
    135147
     148= How do I make the Table of Contents stay visible while scrolling? =
     149In the block settings sidebar, look for the **Position Settings** panel. Toggle on **"Sticky Position"**.
     150You 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? =
     153The sticky feature includes a **"Disable on Mobile"** setting that is enabled by default.
     154Sticky 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? =
     157Yes. 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
    136159= Why does the "Show More" button not work in the editor? =
    137160The 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.
     
    1521754. Published Vertical Jump Links, expanded and collapsed.
    1531765. Published Horizontal Jump Links, expanded and collapsed.
     1776. Published Horizontal Jump Links with sticky navigation showing the Active Link Indicator.
    154178
    155179== Changelog ==
    156180
    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
    162196
    163197For 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  
    66* **Requires at least:** 5.5
    77* **Tested up to:** 6.8
    8 * **Stable tag:** 1.9.1
     8* **Stable tag:** 2.0.0
    99* **Requires PHP:** 7.4
    1010* **License:** GPLv2 or later
     
    3636
    3737**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.
     38For 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.
    3939
    4040**Provide Clear Context for Search Engines:**
     
    7272
    7373* **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.
    7476
    7577* **Typography:** Control the **font size** with a simple picker, including a reset button.
    7678
    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.
    7880
    7981* **Full Color Control:** Use integrated color pickers to customize: **Link Color**, **Other Text Color** (for bullets, numbers, and the main heading).
     
    8183* **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**.
    8284
     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
    8387---
    8488
     
    8892
    8993* **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
    90103
    91104---
     
    154167**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.
    155168
     169### How do I make the Table of Contents stay visible while scrolling?
     170In the block settings sidebar, look for the **Position Settings** panel. Toggle on **"Sticky Position"**.
     171You 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?
     174The sticky feature includes a **"Disable on Mobile"** setting that is enabled by default.
     175Sticky 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?
     178Yes. 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
    156180### Why does the "Show More" button not work in the editor?
    157181The 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.
     
    1902144. Published Vertical Jump Links, expanded and collapsed.
    1912155. Published Horizontal Jump Links, expanded and collapsed.
     2166. Published Horizontal Jump Links with sticky navigation showing the Active Link Indicator.
    192217
    193218---
    194219
    195220## 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.
    199235
    200236### 1.9.0
  • jump-links-block-seo-44/trunk/build/block.json

    r3400046 r3403606  
    33  "apiVersion": 3,
    44  "attributes": {
     5    "blockInstanceId": {
     6      "type": "string"
     7    },
     8    "blockBackgroundColor": {
     9      "type": "string"
     10    },
    511    "linkColor": {
    612      "type": "string",
    7       "default": "#0073aa"
     13      "default": "#046bd2"
    814    },
    915    "linkBackgroundColor": {
    1016      "type": "string",
    11       "default": "#f0f0f0"
     17      "default": "#f4f4f4"
    1218    },
    1319    "linkBackgroundColorHover": {
    1420      "type": "string",
    15       "default": "#e4e4e4"
     21      "default": "#efefef"
    1622    },
    1723    "linkBorderColor": {
     
    2935      "type": "string"
    3036    },
     37    "headingTag": {
     38      "type": "string",
     39      "default": "h2"
     40    },
    3141    "headingLevels": {
    3242      "default": [
     
    4353      "items": {
    4454        "properties": {
     55          "level": {
     56            "type": "integer"
     57          },
    4558          "anchor": {
    4659            "type": "string"
     
    8295    "textColor": {
    8396      "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      }
    84129    }
    85130  },
     
    92137  "name": "seo44/jump-links",
    93138  "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    }
    95156  },
    96157  "textdomain": "jump-links-block-seo-44",
    97158  "title": "SEO 44 Jump Links",
    98   "version": "1.9.1",
     159  "version": "2.0.0",
    99160  "viewScript": "file:./view.js"
    100161}
  • 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)})}}})});
     1window.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  
    11== 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
    218= 1.9.1 =
    319* **FIX** (readme): Fixed a small typo in the readme.txt file.
  • jump-links-block-seo-44/trunk/jump-links-block.php

    r3400046 r3403606  
    44 * Plugin URI:        https://www.sethcreates.com/plugins-for-wordpress/jump-links-block-seo-44/
    55 * Description:       A standalone custom block for automatically creating a customizable Jump Links table of contents.
    6  * Version:           1.9.1
     6 * Version:           1.9.2
    77 * Author:            Seth Smigelski
    88 * Author URI:          https://www.sethcreates.com/plugins-for-wordpress/
  • jump-links-block-seo-44/trunk/readme.txt

    r3400046 r3403606  
    44Requires at least: 5.5
    55Tested up to: 6.8
    6 Stable tag: 1.9.1
     6Stable tag: 2.0.0
    77Requires PHP: 7.4
    88License: GPLv2 or later
     
    3232
    3333**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.
     34For 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.
    3535
    3636**Provide Clear Context for Search Engines**
     
    6464* **Layout Control:** Display your links in a standard vertical list or a modern horizontal, button-style layout.
    6565
     66* **List Styles:** Choose between a bulleted list (`<ul>`), a numbered list (`<ol>`), or no list styling at all.
     67
    6668* **Typography:** Control the **font size** with a simple picker, including a reset button.
    6769
    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.
    6971
    7072* **Full Color Control:** Use integrated color pickers to customize: **Link Color**, **Other Text Color** (for bullets, numbers, and the main heading).
    7173
    7274* **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).
    7377
    7478= Front-End Experience =
     
    7680
    7781* **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.
    7890
    7991== Installation ==
     
    134146**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.
    135147
     148= How do I make the Table of Contents stay visible while scrolling? =
     149In the block settings sidebar, look for the **Position Settings** panel. Toggle on **"Sticky Position"**.
     150You 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? =
     153The sticky feature includes a **"Disable on Mobile"** setting that is enabled by default.
     154Sticky 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? =
     157Yes. 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
    136159= Why does the "Show More" button not work in the editor? =
    137160The 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.
     
    1521754. Published Vertical Jump Links, expanded and collapsed.
    1531765. Published Horizontal Jump Links, expanded and collapsed.
     1776. Published Horizontal Jump Links with sticky navigation showing the Active Link Indicator.
    154178
    155179== Changelog ==
    156180
    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
    162196
    163197For 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.