@fusion.dev/helix-headless 0.0.0-dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/custom-elements.json +75202 -0
- package/dist/accordion/index.d.ts +2 -0
- package/dist/accordion/index.js +2 -0
- package/dist/accordion/item/accordion-item.d.ts +141 -0
- package/dist/accordion/item/accordion-item.js +214 -0
- package/dist/accordion/root/accordion-root.d.ts +57 -0
- package/dist/accordion/root/accordion-root.js +96 -0
- package/dist/announcement/index.d.ts +1 -0
- package/dist/announcement/index.js +1 -0
- package/dist/announcement/root/announcement-root.d.ts +106 -0
- package/dist/announcement/root/announcement-root.js +144 -0
- package/dist/app-header/index.d.ts +1 -0
- package/dist/app-header/index.js +1 -0
- package/dist/app-header/root/app-header-root.d.ts +113 -0
- package/dist/app-header/root/app-header-root.js +147 -0
- package/dist/avatar/group/avatar-group.d.ts +116 -0
- package/dist/avatar/group/avatar-group.js +136 -0
- package/dist/avatar/index.d.ts +2 -0
- package/dist/avatar/index.js +2 -0
- package/dist/avatar/root/avatar-root.d.ts +71 -0
- package/dist/avatar/root/avatar-root.js +147 -0
- package/dist/badge/index.d.ts +1 -0
- package/dist/badge/index.js +1 -0
- package/dist/badge/root/badge-root.d.ts +61 -0
- package/dist/badge/root/badge-root.js +121 -0
- package/dist/bar-chart/index.d.ts +1 -0
- package/dist/bar-chart/index.js +1 -0
- package/dist/bar-chart/root/bar-chart-root.d.ts +266 -0
- package/dist/bar-chart/root/bar-chart-root.js +515 -0
- package/dist/blockquote/index.d.ts +1 -0
- package/dist/blockquote/index.js +1 -0
- package/dist/blockquote/root/blockquote-root.d.ts +51 -0
- package/dist/blockquote/root/blockquote-root.js +84 -0
- package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +104 -0
- package/dist/breadcrumbs/breadcrumb/breadcrumb.js +137 -0
- package/dist/breadcrumbs/index.d.ts +2 -0
- package/dist/breadcrumbs/index.js +2 -0
- package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +77 -0
- package/dist/breadcrumbs/root/breadcrumbs-root.js +94 -0
- package/dist/button/index.d.ts +1 -0
- package/dist/button/index.js +1 -0
- package/dist/button/root/button-root.d.ts +251 -0
- package/dist/button/root/button-root.js +401 -0
- package/dist/button-group/index.d.ts +1 -0
- package/dist/button-group/index.js +1 -0
- package/dist/button-group/root/button-group-root.d.ts +62 -0
- package/dist/button-group/root/button-group-root.js +62 -0
- package/dist/callout/index.d.ts +1 -0
- package/dist/callout/index.js +1 -0
- package/dist/callout/root/callout-root.d.ts +72 -0
- package/dist/callout/root/callout-root.js +90 -0
- package/dist/card/index.d.ts +1 -0
- package/dist/card/index.js +1 -0
- package/dist/card/root/card-root.d.ts +54 -0
- package/dist/card/root/card-root.js +71 -0
- package/dist/carousel/index.d.ts +1 -0
- package/dist/carousel/index.js +1 -0
- package/dist/carousel/root/carousel-root.d.ts +399 -0
- package/dist/carousel/root/carousel-root.js +723 -0
- package/dist/chat/composer/chat-composer.d.ts +160 -0
- package/dist/chat/composer/chat-composer.js +273 -0
- package/dist/chat/index.d.ts +3 -0
- package/dist/chat/index.js +3 -0
- package/dist/chat/message/chat-message.d.ts +170 -0
- package/dist/chat/message/chat-message.js +271 -0
- package/dist/chat/root/chat-root.d.ts +216 -0
- package/dist/chat/root/chat-root.js +389 -0
- package/dist/checkbox/index.d.ts +1 -0
- package/dist/checkbox/index.js +1 -0
- package/dist/checkbox/root/checkbox-root.d.ts +108 -0
- package/dist/checkbox/root/checkbox-root.js +207 -0
- package/dist/checkbox-group/index.d.ts +1 -0
- package/dist/checkbox-group/index.js +1 -0
- package/dist/checkbox-group/root/checkbox-group-root.d.ts +155 -0
- package/dist/checkbox-group/root/checkbox-group-root.js +293 -0
- package/dist/code/index.d.ts +1 -0
- package/dist/code/index.js +1 -0
- package/dist/code/root/code-root.d.ts +36 -0
- package/dist/code/root/code-root.js +43 -0
- package/dist/code-block/index.d.ts +1 -0
- package/dist/code-block/index.js +1 -0
- package/dist/code-block/root/code-block-root.d.ts +112 -0
- package/dist/code-block/root/code-block-root.js +155 -0
- package/dist/color-input/index.d.ts +1 -0
- package/dist/color-input/index.js +1 -0
- package/dist/color-input/root/color-input-root.d.ts +227 -0
- package/dist/color-input/root/color-input-root.js +456 -0
- package/dist/color-picker/color.d.ts +74 -0
- package/dist/color-picker/color.js +238 -0
- package/dist/color-picker/index.d.ts +2 -0
- package/dist/color-picker/index.js +2 -0
- package/dist/color-picker/root/color-picker-root.d.ts +303 -0
- package/dist/color-picker/root/color-picker-root.js +576 -0
- package/dist/combobox/index.d.ts +1 -0
- package/dist/combobox/index.js +1 -0
- package/dist/combobox/root/combobox-root.d.ts +396 -0
- package/dist/combobox/root/combobox-root.js +808 -0
- package/dist/command/index.d.ts +1 -0
- package/dist/command/index.js +1 -0
- package/dist/command/root/command-root.d.ts +166 -0
- package/dist/command/root/command-root.js +353 -0
- package/dist/copy-button/index.d.ts +1 -0
- package/dist/copy-button/index.js +1 -0
- package/dist/copy-button/root/copy-button-root.d.ts +154 -0
- package/dist/copy-button/root/copy-button-root.js +225 -0
- package/dist/data-table/index.d.ts +2 -0
- package/dist/data-table/index.js +2 -0
- package/dist/data-table/root/data-table-root.d.ts +392 -0
- package/dist/data-table/root/data-table-root.js +729 -0
- package/dist/data-table/root/order.d.ts +116 -0
- package/dist/data-table/root/order.js +175 -0
- package/dist/date-input/index.d.ts +1 -0
- package/dist/date-input/index.js +1 -0
- package/dist/date-input/root/date-input-root.d.ts +361 -0
- package/dist/date-input/root/date-input-root.js +791 -0
- package/dist/date-picker/index.d.ts +1 -0
- package/dist/date-picker/index.js +1 -0
- package/dist/date-picker/root/date-picker-root.d.ts +361 -0
- package/dist/date-picker/root/date-picker-root.js +837 -0
- package/dist/dialog/index.d.ts +1 -0
- package/dist/dialog/index.js +1 -0
- package/dist/dialog/root/dialog-root.d.ts +185 -0
- package/dist/dialog/root/dialog-root.js +319 -0
- package/dist/divider/index.d.ts +1 -0
- package/dist/divider/index.js +1 -0
- package/dist/divider/root/divider-root.d.ts +68 -0
- package/dist/divider/root/divider-root.js +116 -0
- package/dist/donut-chart/index.d.ts +1 -0
- package/dist/donut-chart/index.js +1 -0
- package/dist/donut-chart/root/donut-chart-root.d.ts +209 -0
- package/dist/donut-chart/root/donut-chart-root.js +395 -0
- package/dist/drawer/index.d.ts +1 -0
- package/dist/drawer/index.js +1 -0
- package/dist/drawer/root/drawer-root.d.ts +144 -0
- package/dist/drawer/root/drawer-root.js +222 -0
- package/dist/drilldown/index.d.ts +2 -0
- package/dist/drilldown/index.js +2 -0
- package/dist/drilldown/item/drilldown-item.d.ts +87 -0
- package/dist/drilldown/item/drilldown-item.js +152 -0
- package/dist/drilldown/root/drilldown-root.d.ts +115 -0
- package/dist/drilldown/root/drilldown-root.js +263 -0
- package/dist/element-events.generated.d.ts +1 -0
- package/dist/element-events.generated.js +125 -0
- package/dist/empty/index.d.ts +1 -0
- package/dist/empty/index.js +1 -0
- package/dist/empty/root/empty-root.d.ts +47 -0
- package/dist/empty/root/empty-root.js +68 -0
- package/dist/file-input/index.d.ts +1 -0
- package/dist/file-input/index.js +1 -0
- package/dist/file-input/root/file-input-root.d.ts +196 -0
- package/dist/file-input/root/file-input-root.js +488 -0
- package/dist/format-date/index.d.ts +1 -0
- package/dist/format-date/index.js +1 -0
- package/dist/format-date/root/format-date-root.d.ts +151 -0
- package/dist/format-date/root/format-date-root.js +266 -0
- package/dist/heatmap/index.d.ts +2 -0
- package/dist/heatmap/index.js +2 -0
- package/dist/heatmap/root/buckets.d.ts +62 -0
- package/dist/heatmap/root/buckets.js +85 -0
- package/dist/heatmap/root/heatmap-root.d.ts +330 -0
- package/dist/heatmap/root/heatmap-root.js +526 -0
- package/dist/icon/index.d.ts +1 -0
- package/dist/icon/index.js +1 -0
- package/dist/icon/root/icon-root.d.ts +53 -0
- package/dist/icon/root/icon-root.js +93 -0
- package/dist/icon-button/index.d.ts +1 -0
- package/dist/icon-button/index.js +1 -0
- package/dist/icon-button/root/icon-button-root.d.ts +40 -0
- package/dist/icon-button/root/icon-button-root.js +46 -0
- package/dist/image/index.d.ts +1 -0
- package/dist/image/index.js +1 -0
- package/dist/image/root/image-root.d.ts +213 -0
- package/dist/image/root/image-root.js +335 -0
- package/dist/index.d.ts +99 -0
- package/dist/index.js +99 -0
- package/dist/input/index.d.ts +1 -0
- package/dist/input/index.js +1 -0
- package/dist/input/root/input-root.d.ts +281 -0
- package/dist/input/root/input-root.js +472 -0
- package/dist/kbd/index.d.ts +1 -0
- package/dist/kbd/index.js +1 -0
- package/dist/kbd/root/kbd-root.d.ts +98 -0
- package/dist/kbd/root/kbd-root.js +230 -0
- package/dist/legend/index.d.ts +1 -0
- package/dist/legend/index.js +1 -0
- package/dist/legend/root/legend-root.d.ts +83 -0
- package/dist/legend/root/legend-root.js +125 -0
- package/dist/line-chart/index.d.ts +1 -0
- package/dist/line-chart/index.js +1 -0
- package/dist/line-chart/root/line-chart-root.d.ts +238 -0
- package/dist/line-chart/root/line-chart-root.js +365 -0
- package/dist/list/index.d.ts +2 -0
- package/dist/list/index.js +2 -0
- package/dist/list/item/list-item.d.ts +95 -0
- package/dist/list/item/list-item.js +148 -0
- package/dist/list/root/list-root.d.ts +72 -0
- package/dist/list/root/list-root.js +61 -0
- package/dist/listbox/index.d.ts +1 -0
- package/dist/listbox/index.js +1 -0
- package/dist/listbox/root/listbox-root.d.ts +357 -0
- package/dist/listbox/root/listbox-root.js +890 -0
- package/dist/loader/index.d.ts +1 -0
- package/dist/loader/index.js +1 -0
- package/dist/loader/root/loader-root.d.ts +52 -0
- package/dist/loader/root/loader-root.js +74 -0
- package/dist/megamenu/index.d.ts +1 -0
- package/dist/megamenu/index.js +1 -0
- package/dist/megamenu/root/megamenu-root.d.ts +254 -0
- package/dist/megamenu/root/megamenu-root.js +526 -0
- package/dist/menu/index.d.ts +2 -0
- package/dist/menu/index.js +2 -0
- package/dist/menu/item/menu-item.d.ts +231 -0
- package/dist/menu/item/menu-item.js +405 -0
- package/dist/menu/root/menu-root.d.ts +158 -0
- package/dist/menu/root/menu-root.js +422 -0
- package/dist/meter/index.d.ts +1 -0
- package/dist/meter/index.js +1 -0
- package/dist/meter/root/meter-root.d.ts +234 -0
- package/dist/meter/root/meter-root.js +316 -0
- package/dist/navigation/index.d.ts +1 -0
- package/dist/navigation/index.js +1 -0
- package/dist/navigation/root/navigation-root.d.ts +55 -0
- package/dist/navigation/root/navigation-root.js +130 -0
- package/dist/notifications/index.d.ts +2 -0
- package/dist/notifications/index.js +2 -0
- package/dist/notifications/notification/notification.d.ts +181 -0
- package/dist/notifications/notification/notification.js +305 -0
- package/dist/notifications/root/notifications-root.d.ts +168 -0
- package/dist/notifications/root/notifications-root.js +291 -0
- package/dist/number-input/index.d.ts +1 -0
- package/dist/number-input/index.js +1 -0
- package/dist/number-input/root/number-input-root.d.ts +282 -0
- package/dist/number-input/root/number-input-root.js +592 -0
- package/dist/option/group/option-group.d.ts +38 -0
- package/dist/option/group/option-group.js +58 -0
- package/dist/option/index.d.ts +2 -0
- package/dist/option/index.js +2 -0
- package/dist/option/root/option-root.d.ts +194 -0
- package/dist/option/root/option-root.js +247 -0
- package/dist/outline/index.d.ts +1 -0
- package/dist/outline/index.js +1 -0
- package/dist/outline/root/outline-root.d.ts +237 -0
- package/dist/outline/root/outline-root.js +519 -0
- package/dist/pagination/index.d.ts +3 -0
- package/dist/pagination/index.js +3 -0
- package/dist/pagination/root/pagination-root.d.ts +390 -0
- package/dist/pagination/root/pagination-root.js +695 -0
- package/dist/pagination/size/pagination-size.d.ts +127 -0
- package/dist/pagination/size/pagination-size.js +232 -0
- package/dist/pagination/summary/pagination-summary.d.ts +90 -0
- package/dist/pagination/summary/pagination-summary.js +145 -0
- package/dist/pin-input/index.d.ts +1 -0
- package/dist/pin-input/index.js +1 -0
- package/dist/pin-input/root/pin-input-root.d.ts +292 -0
- package/dist/pin-input/root/pin-input-root.js +553 -0
- package/dist/popover/index.d.ts +1 -0
- package/dist/popover/index.js +1 -0
- package/dist/popover/root/popover-root.d.ts +108 -0
- package/dist/popover/root/popover-root.js +231 -0
- package/dist/progress/index.d.ts +1 -0
- package/dist/progress/index.js +1 -0
- package/dist/progress/root/progress-root.d.ts +125 -0
- package/dist/progress/root/progress-root.js +212 -0
- package/dist/qr-code/index.d.ts +1 -0
- package/dist/qr-code/index.js +1 -0
- package/dist/qr-code/root/qr-code-root.d.ts +93 -0
- package/dist/qr-code/root/qr-code-root.js +233 -0
- package/dist/quote/index.d.ts +1 -0
- package/dist/quote/index.js +1 -0
- package/dist/quote/root/quote-root.d.ts +36 -0
- package/dist/quote/root/quote-root.js +50 -0
- package/dist/radio/group/radio-group.d.ts +84 -0
- package/dist/radio/group/radio-group.js +170 -0
- package/dist/radio/index.d.ts +2 -0
- package/dist/radio/index.js +2 -0
- package/dist/radio/root/radio-root.d.ts +102 -0
- package/dist/radio/root/radio-root.js +151 -0
- package/dist/rating/index.d.ts +1 -0
- package/dist/rating/index.js +1 -0
- package/dist/rating/root/rating-root.d.ts +242 -0
- package/dist/rating/root/rating-root.js +484 -0
- package/dist/scroll-area/index.d.ts +1 -0
- package/dist/scroll-area/index.js +1 -0
- package/dist/scroll-area/root/scroll-area-root.d.ts +96 -0
- package/dist/scroll-area/root/scroll-area-root.js +215 -0
- package/dist/select/index.d.ts +1 -0
- package/dist/select/index.js +1 -0
- package/dist/select/root/select-root.d.ts +170 -0
- package/dist/select/root/select-root.js +419 -0
- package/dist/skeleton/index.d.ts +1 -0
- package/dist/skeleton/index.js +1 -0
- package/dist/skeleton/root/skeleton-root.d.ts +31 -0
- package/dist/skeleton/root/skeleton-root.js +42 -0
- package/dist/slider/index.d.ts +1 -0
- package/dist/slider/index.js +1 -0
- package/dist/slider/root/slider-root.d.ts +235 -0
- package/dist/slider/root/slider-root.js +488 -0
- package/dist/sparkline/index.d.ts +1 -0
- package/dist/sparkline/index.js +1 -0
- package/dist/sparkline/root/sparkline-root.d.ts +147 -0
- package/dist/sparkline/root/sparkline-root.js +278 -0
- package/dist/speed-dial/index.d.ts +2 -0
- package/dist/speed-dial/index.js +2 -0
- package/dist/speed-dial/item/speed-dial-item.d.ts +71 -0
- package/dist/speed-dial/item/speed-dial-item.js +113 -0
- package/dist/speed-dial/root/speed-dial-root.d.ts +122 -0
- package/dist/speed-dial/root/speed-dial-root.js +251 -0
- package/dist/splitter/index.d.ts +1 -0
- package/dist/splitter/index.js +1 -0
- package/dist/splitter/root/splitter-root.d.ts +491 -0
- package/dist/splitter/root/splitter-root.js +1030 -0
- package/dist/stat/group/stat-group.d.ts +30 -0
- package/dist/stat/group/stat-group.js +47 -0
- package/dist/stat/index.d.ts +2 -0
- package/dist/stat/index.js +2 -0
- package/dist/stat/root/stat-root.d.ts +62 -0
- package/dist/stat/root/stat-root.js +51 -0
- package/dist/steps/index.d.ts +2 -0
- package/dist/steps/index.js +2 -0
- package/dist/steps/root/steps-root.d.ts +110 -0
- package/dist/steps/root/steps-root.js +130 -0
- package/dist/steps/step/step.d.ts +139 -0
- package/dist/steps/step/step.js +215 -0
- package/dist/switch/index.d.ts +1 -0
- package/dist/switch/index.js +1 -0
- package/dist/switch/root/switch-root.d.ts +74 -0
- package/dist/switch/root/switch-root.js +153 -0
- package/dist/table/cell/table-cell.d.ts +34 -0
- package/dist/table/cell/table-cell.js +52 -0
- package/dist/table/column/table-column.d.ts +165 -0
- package/dist/table/column/table-column.js +222 -0
- package/dist/table/index.d.ts +4 -0
- package/dist/table/index.js +4 -0
- package/dist/table/root/table-root.d.ts +98 -0
- package/dist/table/root/table-root.js +161 -0
- package/dist/table/row/table-row.d.ts +27 -0
- package/dist/table/row/table-row.js +42 -0
- package/dist/tabs/index.d.ts +3 -0
- package/dist/tabs/index.js +3 -0
- package/dist/tabs/panel/tab-panel.d.ts +67 -0
- package/dist/tabs/panel/tab-panel.js +98 -0
- package/dist/tabs/root/tabs-root.d.ts +123 -0
- package/dist/tabs/root/tabs-root.js +217 -0
- package/dist/tabs/tab/tab.d.ts +64 -0
- package/dist/tabs/tab/tab.js +116 -0
- package/dist/tag/index.d.ts +1 -0
- package/dist/tag/index.js +1 -0
- package/dist/tag/root/tag-root.d.ts +41 -0
- package/dist/tag/root/tag-root.js +67 -0
- package/dist/textarea/index.d.ts +1 -0
- package/dist/textarea/index.js +1 -0
- package/dist/textarea/root/textarea-root.d.ts +215 -0
- package/dist/textarea/root/textarea-root.js +380 -0
- package/dist/time-input/index.d.ts +1 -0
- package/dist/time-input/index.js +1 -0
- package/dist/time-input/root/time-input-root.d.ts +322 -0
- package/dist/time-input/root/time-input-root.js +661 -0
- package/dist/time-picker/index.d.ts +1 -0
- package/dist/time-picker/index.js +1 -0
- package/dist/time-picker/root/time-picker-root.d.ts +380 -0
- package/dist/time-picker/root/time-picker-root.js +669 -0
- package/dist/timeline/index.d.ts +2 -0
- package/dist/timeline/index.js +2 -0
- package/dist/timeline/item/timeline-item.d.ts +81 -0
- package/dist/timeline/item/timeline-item.js +128 -0
- package/dist/timeline/root/timeline-root.d.ts +52 -0
- package/dist/timeline/root/timeline-root.js +72 -0
- package/dist/toast/index.d.ts +2 -0
- package/dist/toast/index.js +2 -0
- package/dist/toast/item/toast-item.d.ts +183 -0
- package/dist/toast/item/toast-item.js +345 -0
- package/dist/toast/root/toast-root.d.ts +72 -0
- package/dist/toast/root/toast-root.js +87 -0
- package/dist/toggle/group/toggle-group.d.ts +140 -0
- package/dist/toggle/group/toggle-group.js +278 -0
- package/dist/toggle/index.d.ts +2 -0
- package/dist/toggle/index.js +2 -0
- package/dist/toggle/root/toggle-root.d.ts +99 -0
- package/dist/toggle/root/toggle-root.js +146 -0
- package/dist/toolbar/index.d.ts +1 -0
- package/dist/toolbar/index.js +1 -0
- package/dist/toolbar/root/toolbar-root.d.ts +105 -0
- package/dist/toolbar/root/toolbar-root.js +260 -0
- package/dist/tooltip/index.d.ts +1 -0
- package/dist/tooltip/index.js +1 -0
- package/dist/tooltip/root/tooltip-root.d.ts +388 -0
- package/dist/tooltip/root/tooltip-root.js +707 -0
- package/dist/tour/index.d.ts +2 -0
- package/dist/tour/index.js +2 -0
- package/dist/tour/root/tour-root.d.ts +161 -0
- package/dist/tour/root/tour-root.js +351 -0
- package/dist/tour/stop/tour-stop.d.ts +131 -0
- package/dist/tour/stop/tour-stop.js +249 -0
- package/dist/tree/index.d.ts +2 -0
- package/dist/tree/index.js +2 -0
- package/dist/tree/item/tree-item.d.ts +208 -0
- package/dist/tree/item/tree-item.js +381 -0
- package/dist/tree/root/tree-root.d.ts +88 -0
- package/dist/tree/root/tree-root.js +287 -0
- package/dist/trend/index.d.ts +1 -0
- package/dist/trend/index.js +1 -0
- package/dist/trend/root/trend-root.d.ts +67 -0
- package/dist/trend/root/trend-root.js +106 -0
- package/dist/video/index.d.ts +1 -0
- package/dist/video/index.js +1 -0
- package/dist/video/root/video-root.d.ts +711 -0
- package/dist/video/root/video-root.js +1821 -0
- package/dist/video-playlist/index.d.ts +3 -0
- package/dist/video-playlist/index.js +3 -0
- package/dist/video-playlist/item/video-playlist-item.d.ts +101 -0
- package/dist/video-playlist/item/video-playlist-item.js +162 -0
- package/dist/video-playlist/menu/video-playlist-menu.d.ts +121 -0
- package/dist/video-playlist/menu/video-playlist-menu.js +237 -0
- package/dist/video-playlist/root/video-playlist-root.d.ts +108 -0
- package/dist/video-playlist/root/video-playlist-root.js +218 -0
- package/dist/virtual-list/index.d.ts +1 -0
- package/dist/virtual-list/index.js +1 -0
- package/dist/virtual-list/root/virtual-list-root.d.ts +121 -0
- package/dist/virtual-list/root/virtual-list-root.js +221 -0
- package/jsx.d.ts +49767 -0
- package/package.json +77 -0
- package/svelte.d.ts +129 -0
- package/vue.d.ts +9242 -0
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { HelixElement } from '@fusion.dev/helix-core';
|
|
2
|
+
import { type PropertyValues, type TemplateResult } from 'lit';
|
|
3
|
+
/**
|
|
4
|
+
* @summary Links to the headings on this page, marking the one being read.
|
|
5
|
+
*
|
|
6
|
+
* @description
|
|
7
|
+
* A table of contents, named for the job. Three of the obvious names are taken
|
|
8
|
+
* by things that are not this: `Outline` is a CSS property and the focus ring's
|
|
9
|
+
* whole vocabulary, `Contents` is `display: contents` and the `content` part
|
|
10
|
+
* half this library renders, and `TableOfContents` would sit beside `Table` and
|
|
11
|
+
* `TableColumn` and read as a third part of that family. `Outline` sits beside
|
|
12
|
+
* `Navigation`, which is the same job at the other scale: one navigates a site, the
|
|
13
|
+
* other navigates a document.
|
|
14
|
+
*
|
|
15
|
+
* **The links are the consumer's own anchors**, the same as `Navigation`. A router
|
|
16
|
+
* renders its own `<a>` and cannot render one inside this shadow root, and the
|
|
17
|
+
* hrefs are fragments the page already knows.
|
|
18
|
+
*
|
|
19
|
+
* **What is current is decided by position, not by intersection.** The obvious
|
|
20
|
+
* build is an `IntersectionObserver` with a thin band near the top of the
|
|
21
|
+
* window, and it fails in both directions: with headings far apart nothing is
|
|
22
|
+
* in the band and the marker goes out entirely, and with headings close
|
|
23
|
+
* together several are and it flickers between them. So the observer is only
|
|
24
|
+
* the *trigger*, and the answer is computed from where the headings actually
|
|
25
|
+
* are: the current section is the last one whose top has passed the reading
|
|
26
|
+
* line, or the first heading before any of them has.
|
|
27
|
+
*
|
|
28
|
+
* That rule is what a reader means. Two headings on screen at once are not
|
|
29
|
+
* ambiguous to a person: they are reading under the upper one.
|
|
30
|
+
*
|
|
31
|
+
* **`aria-current="location"`, and it is written onto the consumer's anchor.**
|
|
32
|
+
* This library does not normally write to light-DOM children, because an
|
|
33
|
+
* attribute added after upgrade is one a server's markup never had. It is right
|
|
34
|
+
* here for the reason `Carousel` names its slides: what is current is derived
|
|
35
|
+
* from scroll position, so no server could have rendered it and there is
|
|
36
|
+
* nothing for hydration to disagree with. `location` rather than `page`, which
|
|
37
|
+
* is what `Navigation` uses: `page` means this is the page, and every one of these
|
|
38
|
+
* is the same page.
|
|
39
|
+
*
|
|
40
|
+
* @since 0.1.0
|
|
41
|
+
* @status experimental
|
|
42
|
+
* @category navigation
|
|
43
|
+
* @aliases Table of contents, On this page, Outline
|
|
44
|
+
* @documentation https://helix.fusion.dev/components/outline
|
|
45
|
+
*
|
|
46
|
+
* @slot - The links, as anchors with fragment hrefs.
|
|
47
|
+
*
|
|
48
|
+
* @event {HelixBeforeActivateEvent} helix-before-activate - The section being read has changed, carrying its id as the value. Cancelable: refusing it takes the decision and nothing moves.
|
|
49
|
+
*
|
|
50
|
+
* @csspart indicator - The mark that travels to the section being read.
|
|
51
|
+
* @csspart nav - The navigation landmark.
|
|
52
|
+
*/
|
|
53
|
+
export declare class HelixHeadlessOutline extends HelixElement {
|
|
54
|
+
private readonly indicator;
|
|
55
|
+
/**
|
|
56
|
+
* Accessible name for the navigation.
|
|
57
|
+
*/
|
|
58
|
+
label: string;
|
|
59
|
+
/**
|
|
60
|
+
* How far below the top of the window a heading counts as reached, in pixels.
|
|
61
|
+
*
|
|
62
|
+
* The reading line. A page with a sticky masthead sets this to its height, or
|
|
63
|
+
* a little more: without it the current section changes as a heading slides
|
|
64
|
+
* under the chrome rather than as it reaches the top of what can be seen.
|
|
65
|
+
*/
|
|
66
|
+
offset: number;
|
|
67
|
+
/**
|
|
68
|
+
* How a click on one of these links travels to its section.
|
|
69
|
+
*
|
|
70
|
+
* The platform's own vocabulary, because this is the platform's own option:
|
|
71
|
+
* `auto` defers to whatever `scroll-behavior` the page has set on its scroll
|
|
72
|
+
* container, which is the honest default and means an outline changes nothing
|
|
73
|
+
* a consumer did not ask it to. `smooth` slides, `instant` jumps.
|
|
74
|
+
*
|
|
75
|
+
* **`auto` is also the only value that leaves the navigation to the browser.**
|
|
76
|
+
* A fragment link does four things: it scrolls, it writes the hash, it pushes
|
|
77
|
+
* a history entry, and it moves the sequential focus point so the next Tab
|
|
78
|
+
* continues from the heading rather than from the link. Choosing a behavior
|
|
79
|
+
* means intercepting the click, and an interception that does only the first
|
|
80
|
+
* of those is a keyboard reader stranded in the contents list. So the other
|
|
81
|
+
* three are done by hand here, and only when there is a reason to take over.
|
|
82
|
+
*
|
|
83
|
+
* `smooth` becomes `instant` under `prefers-reduced-motion: reduce`. That is
|
|
84
|
+
* read at the click rather than cached, because a reader can change it while
|
|
85
|
+
* the page is open and this is the only motion in the component that
|
|
86
|
+
* JavaScript rather than CSS decides.
|
|
87
|
+
*/
|
|
88
|
+
behavior: ScrollBehavior;
|
|
89
|
+
/**
|
|
90
|
+
* The id of the section being read, or empty before anything is measured.
|
|
91
|
+
*
|
|
92
|
+
* Read-only, and a getter rather than a property for that reason: it is
|
|
93
|
+
* derived from where the page is scrolled to, so a consumer setting it would
|
|
94
|
+
* be overwritten by the next thing that crossed the reading line. Every other
|
|
95
|
+
* writable property in this library that a component also writes is state a
|
|
96
|
+
* consumer can own; this one cannot be, and saying so with the type is better
|
|
97
|
+
* than saying it in a sentence nobody reads.
|
|
98
|
+
*/
|
|
99
|
+
get current(): string;
|
|
100
|
+
/**
|
|
101
|
+
* What `current` reports, which only `mark` writes.
|
|
102
|
+
*/
|
|
103
|
+
private reading;
|
|
104
|
+
private observer;
|
|
105
|
+
private resize;
|
|
106
|
+
/** The links, in document order. Empty on the server, which has no tree. */
|
|
107
|
+
private get links();
|
|
108
|
+
/** What each link points at, paired with the link, skipping anything missing. */
|
|
109
|
+
private get sections();
|
|
110
|
+
/**
|
|
111
|
+
* Works out which section is being read, and marks its link.
|
|
112
|
+
*
|
|
113
|
+
* Positional rather than a reading of what intersects, for the reason above.
|
|
114
|
+
* The comparison is against `offset` and not zero, so the reading line is
|
|
115
|
+
* wherever the page says the top of the readable area is.
|
|
116
|
+
*/
|
|
117
|
+
private mark;
|
|
118
|
+
/** Where the destination is set, whether measured or asked for. */
|
|
119
|
+
private markTo;
|
|
120
|
+
/**
|
|
121
|
+
* Whether the page has no more scroll left.
|
|
122
|
+
*
|
|
123
|
+
* `Math.ceil` and a pixel of slack, because a fractional device pixel ratio
|
|
124
|
+
* leaves the position a hair under the height at the very bottom and an exact
|
|
125
|
+
* comparison never fires.
|
|
126
|
+
*
|
|
127
|
+
* **All three numbers off the same element**, which this did not do: it added
|
|
128
|
+
* `scrollY` and `innerHeight`, both of the window, and compared them against
|
|
129
|
+
* `documentElement.scrollHeight`. Those are one coordinate system only while
|
|
130
|
+
* the viewport is what scrolls, and the body takes that job the moment it
|
|
131
|
+
* becomes a scroll container. Measured on a page whose body is
|
|
132
|
+
* `overflow: clip visible`, which is a pair CSS resolves by making the
|
|
133
|
+
* `visible` axis `auto`: `documentElement.scrollTop` read 1126 at the bottom
|
|
134
|
+
* of the page and `window.scrollY` read 240, so a contents rail never learned
|
|
135
|
+
* it had reached the end and its last item stayed unreachable. That page is
|
|
136
|
+
* this library's own base layer.
|
|
137
|
+
*
|
|
138
|
+
* `clientHeight` rather than `innerHeight` for the same reason, and because it
|
|
139
|
+
* is the one that excludes a scrollbar, which is what `scrollHeight` is
|
|
140
|
+
* measured against.
|
|
141
|
+
*/
|
|
142
|
+
private get atEnd();
|
|
143
|
+
/** The frame a mark is already scheduled for, so a scroll asks for one. */
|
|
144
|
+
private frame;
|
|
145
|
+
/** Where a click said to go, while the page is still on its way there. */
|
|
146
|
+
private landing;
|
|
147
|
+
/** The guard behind `scrollend`, in case it never comes. */
|
|
148
|
+
private landed;
|
|
149
|
+
/**
|
|
150
|
+
* The two things an `IntersectionObserver` cannot see, and one listener for
|
|
151
|
+
* both.
|
|
152
|
+
*
|
|
153
|
+
* This component's own note said the observer keeps the marker honest without
|
|
154
|
+
* a scroll listener. It was wrong twice.
|
|
155
|
+
*
|
|
156
|
+
* *At the bottom*, arriving at the end of a page changes no intersection: a
|
|
157
|
+
* short last section is fully visible long before the final pixel, so its
|
|
158
|
+
* ratio reached 1 and stopped moving. Nothing fires for the scroll that ends
|
|
159
|
+
* the page.
|
|
160
|
+
*
|
|
161
|
+
* *And at the end of a smooth scroll*, which is the one that showed up in
|
|
162
|
+
* use. Clicking a link in the contents list scrolled to the section and left
|
|
163
|
+
* the mark where it was. Measured on the shipped example: after clicking
|
|
164
|
+
* `#usage` the heading sat at 72px, exactly the reading line, and `current`
|
|
165
|
+
* was still `install`. The observer fires several times during the travel and
|
|
166
|
+
* the last of them lands a frame or two before the final position, where the
|
|
167
|
+
* heading has not crossed yet, and no callback follows for the rest of the
|
|
168
|
+
* way.
|
|
169
|
+
*
|
|
170
|
+
* There was a listener already, added for the first of those, and it compared
|
|
171
|
+
* two numbers and marked only when the answer *changed*. That was too clever
|
|
172
|
+
* by half: it fixed the bottom and could not fix the settle. Marking once per
|
|
173
|
+
* animation frame while a scroll is happening covers both and every other case
|
|
174
|
+
* of the same shape, and the cost is what `mark()` costs, a `getBoundingClientRect`
|
|
175
|
+
* per section on frames a reader is already scrolling through. Passive, and
|
|
176
|
+
* coalesced to one call per frame however many events arrive.
|
|
177
|
+
*/
|
|
178
|
+
private readonly handleScroll;
|
|
179
|
+
/**
|
|
180
|
+
* Gives every section the same reading line the marker uses.
|
|
181
|
+
*
|
|
182
|
+
* `offset` described where the top of the readable area is and was read by
|
|
183
|
+
* exactly one thing, the marker. Click a link and the browser put the heading
|
|
184
|
+
* against the very top of the window, underneath the sticky masthead whose
|
|
185
|
+
* height the consumer had just finished measuring for us. So the component
|
|
186
|
+
* knew about the chrome when deciding what you were reading and forgot about
|
|
187
|
+
* it when taking you somewhere, which is the same number meaning two things.
|
|
188
|
+
*
|
|
189
|
+
* `scroll-margin-block-start` rather than an interception, because it is the
|
|
190
|
+
* property the platform provides for exactly this and the UA honours it on
|
|
191
|
+
* ordinary fragment navigation, on `scrollIntoView`, and on a browser
|
|
192
|
+
* restoring a position. Nothing has to be taken over to get it.
|
|
193
|
+
*
|
|
194
|
+
* Written onto the consumer's element, like `aria-current` above and for the
|
|
195
|
+
* same reason: it is derived from a property describing the page's chrome,
|
|
196
|
+
* so no server rendered it and there is nothing to disagree with. Cleared
|
|
197
|
+
* rather than set to `0px` when there is no offset, so the common case leaves
|
|
198
|
+
* no attribute at all.
|
|
199
|
+
*/
|
|
200
|
+
private reach;
|
|
201
|
+
/**
|
|
202
|
+
* Takes a link's click, but only where `auto` would not have done the job.
|
|
203
|
+
*
|
|
204
|
+
* Left the platform's wherever it can be: a modified click is a new tab or a
|
|
205
|
+
* download and none of this applies, a click something else has already
|
|
206
|
+
* handled is not ours, and `auto` is the whole point of `auto`.
|
|
207
|
+
*/
|
|
208
|
+
private readonly handleClick;
|
|
209
|
+
/**
|
|
210
|
+
* Watches every section, and re-marks whenever any of them crosses anything.
|
|
211
|
+
*
|
|
212
|
+
* The thresholds are what make the trigger frequent enough: an observer fires
|
|
213
|
+
* on entering and leaving, and a long section scrolled slowly crosses neither
|
|
214
|
+
* for a long time. Asking for a callback at each quarter of visibility is
|
|
215
|
+
* cheap and keeps the marker honest without a scroll listener.
|
|
216
|
+
*/
|
|
217
|
+
private watch;
|
|
218
|
+
/**
|
|
219
|
+
* The set changed: watch it, and measure it.
|
|
220
|
+
*
|
|
221
|
+
* Both, for the reason the tab strip records: the host renders before its
|
|
222
|
+
* links have anything to point at, so the first measurement finds nothing,
|
|
223
|
+
* and without a second one at `slotchange` the mark stays unplaced for the
|
|
224
|
+
* life of the page.
|
|
225
|
+
*/
|
|
226
|
+
private readonly handleSlotChange;
|
|
227
|
+
disconnectedCallback(): void;
|
|
228
|
+
connectedCallback(): void;
|
|
229
|
+
protected firstUpdated(changed: PropertyValues): void;
|
|
230
|
+
protected updated(changed: PropertyValues): void;
|
|
231
|
+
protected render(): TemplateResult;
|
|
232
|
+
}
|
|
233
|
+
declare global {
|
|
234
|
+
interface HTMLElementTagNameMap {
|
|
235
|
+
'helix-headless-outline': HelixHeadlessOutline;
|
|
236
|
+
}
|
|
237
|
+
}
|