@concordance-wiki/site 0.1.0
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 +674 -0
- package/README.md +130 -0
- package/assets/css/accessibility.css +57 -0
- package/assets/css/chrome/bar.css +37 -0
- package/assets/css/chrome/breadcrumb.css +34 -0
- package/assets/css/chrome/breakpoints.css +291 -0
- package/assets/css/chrome/contract-viewer.css +84 -0
- package/assets/css/chrome/document.css +125 -0
- package/assets/css/chrome/drawer.css +210 -0
- package/assets/css/chrome/footer.css +102 -0
- package/assets/css/chrome/grouped-files.css +58 -0
- package/assets/css/chrome/labels.css +54 -0
- package/assets/css/chrome/links.css +23 -0
- package/assets/css/chrome/measure.css +13 -0
- package/assets/css/chrome/mode-switch.css +26 -0
- package/assets/css/chrome/panel-handle.css +232 -0
- package/assets/css/chrome/panel.css +92 -0
- package/assets/css/chrome/pins.css +321 -0
- package/assets/css/chrome/search-clear.css +28 -0
- package/assets/css/chrome/search-field.css +67 -0
- package/assets/css/chrome/space-tree.css +106 -0
- package/assets/css/chrome/suggestions.css +100 -0
- package/assets/css/chrome/tabs.css +85 -0
- package/assets/css/controls.css +30 -0
- package/assets/css/pages/about.css +219 -0
- package/assets/css/pages/api-page.css +200 -0
- package/assets/css/pages/category-list.css +349 -0
- package/assets/css/pages/decision-page.css +43 -0
- package/assets/css/pages/document-page.css +212 -0
- package/assets/css/pages/edge-cases.css +450 -0
- package/assets/css/pages/entity-article.css +140 -0
- package/assets/css/pages/entity-page.css +109 -0
- package/assets/css/pages/gallery.css +74 -0
- package/assets/css/pages/home-columns.css +148 -0
- package/assets/css/pages/home-shortcuts.css +40 -0
- package/assets/css/pages/home.css +81 -0
- package/assets/css/pages/index.css +302 -0
- package/assets/css/pages/keyword-page.css +262 -0
- package/assets/css/pages/meeting-page.css +109 -0
- package/assets/css/pages/mentions.css +267 -0
- package/assets/css/pages/neighbourhood-map.css +100 -0
- package/assets/css/pages/neighbourhood-open.css +262 -0
- package/assets/css/pages/neighbourhood.css +60 -0
- package/assets/css/pages/screen-page.css +108 -0
- package/assets/css/pages/search-results.css +405 -0
- package/assets/css/pages/space.css +251 -0
- package/assets/css/pages/spaces.css +176 -0
- package/assets/css/pages/todo.css +44 -0
- package/assets/css/reset.css +21 -0
- package/assets/css/typography.css +104 -0
- package/assets/fonts/OFL.txt +95 -0
- package/assets/fonts/ibm-plex-mono-normal-400-latin-ext.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-normal-400-latin.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-normal-500-latin-ext.woff2 +0 -0
- package/assets/fonts/ibm-plex-mono-normal-500-latin.woff2 +0 -0
- package/assets/fonts/instrument-sans-italic-400-700-latin-ext.woff2 +0 -0
- package/assets/fonts/instrument-sans-italic-400-700-latin.woff2 +0 -0
- package/assets/fonts/instrument-sans-normal-400-700-latin-ext.woff2 +0 -0
- package/assets/fonts/instrument-sans-normal-400-700-latin.woff2 +0 -0
- package/dist/a11y/check.d.ts +14 -0
- package/dist/a11y/check.d.ts.map +1 -0
- package/dist/a11y/check.js +442 -0
- package/dist/a11y/check.js.map +1 -0
- package/dist/a11y/contrast.d.ts +32 -0
- package/dist/a11y/contrast.d.ts.map +1 -0
- package/dist/a11y/contrast.js +82 -0
- package/dist/a11y/contrast.js.map +1 -0
- package/dist/budget.d.ts +25 -0
- package/dist/budget.d.ts.map +1 -0
- package/dist/budget.js +26 -0
- package/dist/budget.js.map +1 -0
- package/dist/build/about.d.ts +21 -0
- package/dist/build/about.d.ts.map +1 -0
- package/dist/build/about.js +125 -0
- package/dist/build/about.js.map +1 -0
- package/dist/build/assemble.d.ts +54 -0
- package/dist/build/assemble.d.ts.map +1 -0
- package/dist/build/assemble.js +67 -0
- package/dist/build/assemble.js.map +1 -0
- package/dist/build/category.d.ts +118 -0
- package/dist/build/category.d.ts.map +1 -0
- package/dist/build/category.js +400 -0
- package/dist/build/category.js.map +1 -0
- package/dist/build/context.d.ts +111 -0
- package/dist/build/context.d.ts.map +1 -0
- package/dist/build/context.js +181 -0
- package/dist/build/context.js.map +1 -0
- package/dist/build/decision.d.ts +30 -0
- package/dist/build/decision.d.ts.map +1 -0
- package/dist/build/decision.js +187 -0
- package/dist/build/decision.js.map +1 -0
- package/dist/build/default-theme.d.ts +10 -0
- package/dist/build/default-theme.d.ts.map +1 -0
- package/dist/build/default-theme.js +36 -0
- package/dist/build/default-theme.js.map +1 -0
- package/dist/build/entity-page.d.ts +140 -0
- package/dist/build/entity-page.d.ts.map +1 -0
- package/dist/build/entity-page.js +782 -0
- package/dist/build/entity-page.js.map +1 -0
- package/dist/build/footer.d.ts +39 -0
- package/dist/build/footer.d.ts.map +1 -0
- package/dist/build/footer.js +123 -0
- package/dist/build/footer.js.map +1 -0
- package/dist/build/fragments.d.ts +92 -0
- package/dist/build/fragments.d.ts.map +1 -0
- package/dist/build/fragments.js +115 -0
- package/dist/build/fragments.js.map +1 -0
- package/dist/build/grouping.d.ts +21 -0
- package/dist/build/grouping.d.ts.map +1 -0
- package/dist/build/grouping.js +71 -0
- package/dist/build/grouping.js.map +1 -0
- package/dist/build/home.d.ts +56 -0
- package/dist/build/home.d.ts.map +1 -0
- package/dist/build/home.js +214 -0
- package/dist/build/home.js.map +1 -0
- package/dist/build/index-page.d.ts +71 -0
- package/dist/build/index-page.d.ts.map +1 -0
- package/dist/build/index-page.js +267 -0
- package/dist/build/index-page.js.map +1 -0
- package/dist/build/keyword-page.d.ts +80 -0
- package/dist/build/keyword-page.d.ts.map +1 -0
- package/dist/build/keyword-page.js +297 -0
- package/dist/build/keyword-page.js.map +1 -0
- package/dist/build/kinds.d.ts +4 -0
- package/dist/build/kinds.d.ts.map +1 -0
- package/dist/build/kinds.js +22 -0
- package/dist/build/kinds.js.map +1 -0
- package/dist/build/meeting.d.ts +56 -0
- package/dist/build/meeting.d.ts.map +1 -0
- package/dist/build/meeting.js +285 -0
- package/dist/build/meeting.js.map +1 -0
- package/dist/build/mentions.d.ts +68 -0
- package/dist/build/mentions.d.ts.map +1 -0
- package/dist/build/mentions.js +412 -0
- package/dist/build/mentions.js.map +1 -0
- package/dist/build/not-found.d.ts +23 -0
- package/dist/build/not-found.d.ts.map +1 -0
- package/dist/build/not-found.js +70 -0
- package/dist/build/not-found.js.map +1 -0
- package/dist/build/operations.d.ts +27 -0
- package/dist/build/operations.d.ts.map +1 -0
- package/dist/build/operations.js +99 -0
- package/dist/build/operations.js.map +1 -0
- package/dist/build/paths.d.ts +45 -0
- package/dist/build/paths.d.ts.map +1 -0
- package/dist/build/paths.js +74 -0
- package/dist/build/paths.js.map +1 -0
- package/dist/build/redirect.d.ts +20 -0
- package/dist/build/redirect.d.ts.map +1 -0
- package/dist/build/redirect.js +31 -0
- package/dist/build/redirect.js.map +1 -0
- package/dist/build/site.d.ts +99 -0
- package/dist/build/site.d.ts.map +1 -0
- package/dist/build/site.js +338 -0
- package/dist/build/site.js.map +1 -0
- package/dist/build/space.d.ts +82 -0
- package/dist/build/space.d.ts.map +1 -0
- package/dist/build/space.js +248 -0
- package/dist/build/space.js.map +1 -0
- package/dist/build/spaces.d.ts +48 -0
- package/dist/build/spaces.d.ts.map +1 -0
- package/dist/build/spaces.js +210 -0
- package/dist/build/spaces.js.map +1 -0
- package/dist/build/todo.d.ts +24 -0
- package/dist/build/todo.d.ts.map +1 -0
- package/dist/build/todo.js +107 -0
- package/dist/build/todo.js.map +1 -0
- package/dist/css/fonts.d.ts +30 -0
- package/dist/css/fonts.d.ts.map +1 -0
- package/dist/css/fonts.js +51 -0
- package/dist/css/fonts.js.map +1 -0
- package/dist/css/stylesheet.d.ts +28 -0
- package/dist/css/stylesheet.d.ts.map +1 -0
- package/dist/css/stylesheet.js +94 -0
- package/dist/css/stylesheet.js.map +1 -0
- package/dist/css/theme-config.d.ts +2 -0
- package/dist/css/theme-config.d.ts.map +1 -0
- package/dist/css/theme-config.js +2 -0
- package/dist/css/theme-config.js.map +1 -0
- package/dist/css/tokens.d.ts +17 -0
- package/dist/css/tokens.d.ts.map +1 -0
- package/dist/css/tokens.js +90 -0
- package/dist/css/tokens.js.map +1 -0
- package/dist/gallery/boards.d.ts +146 -0
- package/dist/gallery/boards.d.ts.map +1 -0
- package/dist/gallery/boards.js +158 -0
- package/dist/gallery/boards.js.map +1 -0
- package/dist/gallery/build.d.ts +43 -0
- package/dist/gallery/build.d.ts.map +1 -0
- package/dist/gallery/build.js +129 -0
- package/dist/gallery/build.js.map +1 -0
- package/dist/gallery/fixtures/about.d.ts +10 -0
- package/dist/gallery/fixtures/about.d.ts.map +1 -0
- package/dist/gallery/fixtures/about.js +57 -0
- package/dist/gallery/fixtures/about.js.map +1 -0
- package/dist/gallery/fixtures/api-page.d.ts +8 -0
- package/dist/gallery/fixtures/api-page.d.ts.map +1 -0
- package/dist/gallery/fixtures/api-page.js +423 -0
- package/dist/gallery/fixtures/api-page.js.map +1 -0
- package/dist/gallery/fixtures/category-list.d.ts +10 -0
- package/dist/gallery/fixtures/category-list.d.ts.map +1 -0
- package/dist/gallery/fixtures/category-list.js +106 -0
- package/dist/gallery/fixtures/category-list.js.map +1 -0
- package/dist/gallery/fixtures/chrome.d.ts +22 -0
- package/dist/gallery/fixtures/chrome.d.ts.map +1 -0
- package/dist/gallery/fixtures/chrome.js +100 -0
- package/dist/gallery/fixtures/chrome.js.map +1 -0
- package/dist/gallery/fixtures/corpus.d.ts +62 -0
- package/dist/gallery/fixtures/corpus.d.ts.map +1 -0
- package/dist/gallery/fixtures/corpus.js +90 -0
- package/dist/gallery/fixtures/corpus.js.map +1 -0
- package/dist/gallery/fixtures/decision-page.d.ts +12 -0
- package/dist/gallery/fixtures/decision-page.d.ts.map +1 -0
- package/dist/gallery/fixtures/decision-page.js +287 -0
- package/dist/gallery/fixtures/decision-page.js.map +1 -0
- package/dist/gallery/fixtures/degraded.d.ts +18 -0
- package/dist/gallery/fixtures/degraded.d.ts.map +1 -0
- package/dist/gallery/fixtures/degraded.js +95 -0
- package/dist/gallery/fixtures/degraded.js.map +1 -0
- package/dist/gallery/fixtures/document-blocks.d.ts +4 -0
- package/dist/gallery/fixtures/document-blocks.d.ts.map +1 -0
- package/dist/gallery/fixtures/document-blocks.js +68 -0
- package/dist/gallery/fixtures/document-blocks.js.map +1 -0
- package/dist/gallery/fixtures/document-page.d.ts +6 -0
- package/dist/gallery/fixtures/document-page.d.ts.map +1 -0
- package/dist/gallery/fixtures/document-page.js +314 -0
- package/dist/gallery/fixtures/document-page.js.map +1 -0
- package/dist/gallery/fixtures/edge-cases.d.ts +25 -0
- package/dist/gallery/fixtures/edge-cases.d.ts.map +1 -0
- package/dist/gallery/fixtures/edge-cases.js +165 -0
- package/dist/gallery/fixtures/edge-cases.js.map +1 -0
- package/dist/gallery/fixtures/entity-page-twin.d.ts +8 -0
- package/dist/gallery/fixtures/entity-page-twin.d.ts.map +1 -0
- package/dist/gallery/fixtures/entity-page-twin.js +68 -0
- package/dist/gallery/fixtures/entity-page-twin.js.map +1 -0
- package/dist/gallery/fixtures/entity-page.d.ts +12 -0
- package/dist/gallery/fixtures/entity-page.d.ts.map +1 -0
- package/dist/gallery/fixtures/entity-page.js +244 -0
- package/dist/gallery/fixtures/entity-page.js.map +1 -0
- package/dist/gallery/fixtures/home.d.ts +9 -0
- package/dist/gallery/fixtures/home.d.ts.map +1 -0
- package/dist/gallery/fixtures/home.js +145 -0
- package/dist/gallery/fixtures/home.js.map +1 -0
- package/dist/gallery/fixtures/index-page.d.ts +4 -0
- package/dist/gallery/fixtures/index-page.d.ts.map +1 -0
- package/dist/gallery/fixtures/index-page.js +145 -0
- package/dist/gallery/fixtures/index-page.js.map +1 -0
- package/dist/gallery/fixtures/keyword-page.d.ts +7 -0
- package/dist/gallery/fixtures/keyword-page.d.ts.map +1 -0
- package/dist/gallery/fixtures/keyword-page.js +344 -0
- package/dist/gallery/fixtures/keyword-page.js.map +1 -0
- package/dist/gallery/fixtures/meeting-page.d.ts +11 -0
- package/dist/gallery/fixtures/meeting-page.d.ts.map +1 -0
- package/dist/gallery/fixtures/meeting-page.js +303 -0
- package/dist/gallery/fixtures/meeting-page.js.map +1 -0
- package/dist/gallery/fixtures/mentions.d.ts +6 -0
- package/dist/gallery/fixtures/mentions.d.ts.map +1 -0
- package/dist/gallery/fixtures/mentions.js +28 -0
- package/dist/gallery/fixtures/mentions.js.map +1 -0
- package/dist/gallery/fixtures/neighbourhood.d.ts +7 -0
- package/dist/gallery/fixtures/neighbourhood.d.ts.map +1 -0
- package/dist/gallery/fixtures/neighbourhood.js +96 -0
- package/dist/gallery/fixtures/neighbourhood.js.map +1 -0
- package/dist/gallery/fixtures/pins.d.ts +6 -0
- package/dist/gallery/fixtures/pins.d.ts.map +1 -0
- package/dist/gallery/fixtures/pins.js +24 -0
- package/dist/gallery/fixtures/pins.js.map +1 -0
- package/dist/gallery/fixtures/screen-page.d.ts +4 -0
- package/dist/gallery/fixtures/screen-page.d.ts.map +1 -0
- package/dist/gallery/fixtures/screen-page.js +266 -0
- package/dist/gallery/fixtures/screen-page.js.map +1 -0
- package/dist/gallery/fixtures/search-results.d.ts +12 -0
- package/dist/gallery/fixtures/search-results.d.ts.map +1 -0
- package/dist/gallery/fixtures/search-results.js +242 -0
- package/dist/gallery/fixtures/search-results.js.map +1 -0
- package/dist/gallery/fixtures/spaces.d.ts +15 -0
- package/dist/gallery/fixtures/spaces.d.ts.map +1 -0
- package/dist/gallery/fixtures/spaces.js +125 -0
- package/dist/gallery/fixtures/spaces.js.map +1 -0
- package/dist/gallery/fixtures/theme.d.ts +4 -0
- package/dist/gallery/fixtures/theme.d.ts.map +1 -0
- package/dist/gallery/fixtures/theme.js +4 -0
- package/dist/gallery/fixtures/theme.js.map +1 -0
- package/dist/gallery/fixtures/todo.d.ts +3 -0
- package/dist/gallery/fixtures/todo.d.ts.map +1 -0
- package/dist/gallery/fixtures/todo.js +13 -0
- package/dist/gallery/fixtures/todo.js.map +1 -0
- package/dist/gallery/fixtures.d.ts +24 -0
- package/dist/gallery/fixtures.d.ts.map +1 -0
- package/dist/gallery/fixtures.js +28 -0
- package/dist/gallery/fixtures.js.map +1 -0
- package/dist/gallery/index-page.d.ts +17 -0
- package/dist/gallery/index-page.d.ts.map +1 -0
- package/dist/gallery/index-page.js +41 -0
- package/dist/gallery/index-page.js.map +1 -0
- package/dist/gallery/no-script.d.ts +3 -0
- package/dist/gallery/no-script.d.ts.map +1 -0
- package/dist/gallery/no-script.js +11 -0
- package/dist/gallery/no-script.js.map +1 -0
- package/dist/gallery/page.d.ts +43 -0
- package/dist/gallery/page.d.ts.map +1 -0
- package/dist/gallery/page.js +8 -0
- package/dist/gallery/page.js.map +1 -0
- package/dist/gallery/pages.d.ts +6 -0
- package/dist/gallery/pages.d.ts.map +1 -0
- package/dist/gallery/pages.js +135 -0
- package/dist/gallery/pages.js.map +1 -0
- package/dist/gallery/skeleton.d.ts +6 -0
- package/dist/gallery/skeleton.d.ts.map +1 -0
- package/dist/gallery/skeleton.js +81 -0
- package/dist/gallery/skeleton.js.map +1 -0
- package/dist/gallery/spaces.d.ts +15 -0
- package/dist/gallery/spaces.d.ts.map +1 -0
- package/dist/gallery/spaces.js +125 -0
- package/dist/gallery/spaces.js.map +1 -0
- package/dist/gallery/states/about-corporate.d.ts +3 -0
- package/dist/gallery/states/about-corporate.d.ts.map +1 -0
- package/dist/gallery/states/about-corporate.js +16 -0
- package/dist/gallery/states/about-corporate.js.map +1 -0
- package/dist/gallery/states/about-sections.d.ts +3 -0
- package/dist/gallery/states/about-sections.d.ts.map +1 -0
- package/dist/gallery/states/about-sections.js +16 -0
- package/dist/gallery/states/about-sections.js.map +1 -0
- package/dist/gallery/states/age-notice.d.ts +3 -0
- package/dist/gallery/states/age-notice.d.ts.map +1 -0
- package/dist/gallery/states/age-notice.js +18 -0
- package/dist/gallery/states/age-notice.js.map +1 -0
- package/dist/gallery/states/api-page-corporate.d.ts +3 -0
- package/dist/gallery/states/api-page-corporate.d.ts.map +1 -0
- package/dist/gallery/states/api-page-corporate.js +16 -0
- package/dist/gallery/states/api-page-corporate.js.map +1 -0
- package/dist/gallery/states/api-page-no-contract.d.ts +3 -0
- package/dist/gallery/states/api-page-no-contract.d.ts.map +1 -0
- package/dist/gallery/states/api-page-no-contract.js +16 -0
- package/dist/gallery/states/api-page-no-contract.js.map +1 -0
- package/dist/gallery/states/api-page-no-script.d.ts +3 -0
- package/dist/gallery/states/api-page-no-script.d.ts.map +1 -0
- package/dist/gallery/states/api-page-no-script.js +10 -0
- package/dist/gallery/states/api-page-no-script.js.map +1 -0
- package/dist/gallery/states/category-corporate.d.ts +3 -0
- package/dist/gallery/states/category-corporate.d.ts.map +1 -0
- package/dist/gallery/states/category-corporate.js +16 -0
- package/dist/gallery/states/category-corporate.js.map +1 -0
- package/dist/gallery/states/decision-page-corporate.d.ts +3 -0
- package/dist/gallery/states/decision-page-corporate.d.ts.map +1 -0
- package/dist/gallery/states/decision-page-corporate.js +16 -0
- package/dist/gallery/states/decision-page-corporate.js.map +1 -0
- package/dist/gallery/states/document-page-corporate.d.ts +3 -0
- package/dist/gallery/states/document-page-corporate.d.ts.map +1 -0
- package/dist/gallery/states/document-page-corporate.js +16 -0
- package/dist/gallery/states/document-page-corporate.js.map +1 -0
- package/dist/gallery/states/document-page-no-preview.d.ts +3 -0
- package/dist/gallery/states/document-page-no-preview.d.ts.map +1 -0
- package/dist/gallery/states/document-page-no-preview.js +17 -0
- package/dist/gallery/states/document-page-no-preview.js.map +1 -0
- package/dist/gallery/states/document-page-no-script.d.ts +3 -0
- package/dist/gallery/states/document-page-no-script.d.ts.map +1 -0
- package/dist/gallery/states/document-page-no-script.js +10 -0
- package/dist/gallery/states/document-page-no-script.js.map +1 -0
- package/dist/gallery/states/entity-page-contract.d.ts +3 -0
- package/dist/gallery/states/entity-page-contract.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-contract.js +13 -0
- package/dist/gallery/states/entity-page-contract.js.map +1 -0
- package/dist/gallery/states/entity-page-corporate.d.ts +3 -0
- package/dist/gallery/states/entity-page-corporate.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-corporate.js +16 -0
- package/dist/gallery/states/entity-page-corporate.js.map +1 -0
- package/dist/gallery/states/entity-page-dark.d.ts +3 -0
- package/dist/gallery/states/entity-page-dark.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-dark.js +17 -0
- package/dist/gallery/states/entity-page-dark.js.map +1 -0
- package/dist/gallery/states/entity-page-document.d.ts +3 -0
- package/dist/gallery/states/entity-page-document.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-document.js +13 -0
- package/dist/gallery/states/entity-page-document.js.map +1 -0
- package/dist/gallery/states/entity-page-drawer.d.ts +3 -0
- package/dist/gallery/states/entity-page-drawer.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-drawer.js +17 -0
- package/dist/gallery/states/entity-page-drawer.js.map +1 -0
- package/dist/gallery/states/entity-page-empty.d.ts +3 -0
- package/dist/gallery/states/entity-page-empty.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-empty.js +19 -0
- package/dist/gallery/states/entity-page-empty.js.map +1 -0
- package/dist/gallery/states/entity-page-map.d.ts +3 -0
- package/dist/gallery/states/entity-page-map.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-map.js +16 -0
- package/dist/gallery/states/entity-page-map.js.map +1 -0
- package/dist/gallery/states/entity-page-no-property.d.ts +3 -0
- package/dist/gallery/states/entity-page-no-property.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-no-property.js +16 -0
- package/dist/gallery/states/entity-page-no-property.js.map +1 -0
- package/dist/gallery/states/entity-page-no-script.d.ts +3 -0
- package/dist/gallery/states/entity-page-no-script.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-no-script.js +10 -0
- package/dist/gallery/states/entity-page-no-script.js.map +1 -0
- package/dist/gallery/states/entity-page-panel-folded.d.ts +3 -0
- package/dist/gallery/states/entity-page-panel-folded.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-panel-folded.js +17 -0
- package/dist/gallery/states/entity-page-panel-folded.js.map +1 -0
- package/dist/gallery/states/entity-page-phone.d.ts +3 -0
- package/dist/gallery/states/entity-page-phone.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-phone.js +17 -0
- package/dist/gallery/states/entity-page-phone.js.map +1 -0
- package/dist/gallery/states/entity-page-pins.d.ts +3 -0
- package/dist/gallery/states/entity-page-pins.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-pins.js +17 -0
- package/dist/gallery/states/entity-page-pins.js.map +1 -0
- package/dist/gallery/states/entity-page-tablet.d.ts +3 -0
- package/dist/gallery/states/entity-page-tablet.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-tablet.js +17 -0
- package/dist/gallery/states/entity-page-tablet.js.map +1 -0
- package/dist/gallery/states/entity-page-with-twin.d.ts +3 -0
- package/dist/gallery/states/entity-page-with-twin.d.ts.map +1 -0
- package/dist/gallery/states/entity-page-with-twin.js +16 -0
- package/dist/gallery/states/entity-page-with-twin.js.map +1 -0
- package/dist/gallery/states/entity-page.d.ts +3 -0
- package/dist/gallery/states/entity-page.d.ts.map +1 -0
- package/dist/gallery/states/entity-page.js +13 -0
- package/dist/gallery/states/entity-page.js.map +1 -0
- package/dist/gallery/states/footer-alone.d.ts +3 -0
- package/dist/gallery/states/footer-alone.d.ts.map +1 -0
- package/dist/gallery/states/footer-alone.js +16 -0
- package/dist/gallery/states/footer-alone.js.map +1 -0
- package/dist/gallery/states/footer-corporate.d.ts +3 -0
- package/dist/gallery/states/footer-corporate.d.ts.map +1 -0
- package/dist/gallery/states/footer-corporate.js +16 -0
- package/dist/gallery/states/footer-corporate.js.map +1 -0
- package/dist/gallery/states/footer-text.d.ts +3 -0
- package/dist/gallery/states/footer-text.d.ts.map +1 -0
- package/dist/gallery/states/footer-text.js +15 -0
- package/dist/gallery/states/footer-text.js.map +1 -0
- package/dist/gallery/states/header-logo.d.ts +3 -0
- package/dist/gallery/states/header-logo.d.ts.map +1 -0
- package/dist/gallery/states/header-logo.js +15 -0
- package/dist/gallery/states/header-logo.js.map +1 -0
- package/dist/gallery/states/home-corporate.d.ts +3 -0
- package/dist/gallery/states/home-corporate.d.ts.map +1 -0
- package/dist/gallery/states/home-corporate.js +16 -0
- package/dist/gallery/states/home-corporate.js.map +1 -0
- package/dist/gallery/states/home-dark.d.ts +3 -0
- package/dist/gallery/states/home-dark.d.ts.map +1 -0
- package/dist/gallery/states/home-dark.js +17 -0
- package/dist/gallery/states/home-dark.js.map +1 -0
- package/dist/gallery/states/home-no-script.d.ts +3 -0
- package/dist/gallery/states/home-no-script.d.ts.map +1 -0
- package/dist/gallery/states/home-no-script.js +10 -0
- package/dist/gallery/states/home-no-script.js.map +1 -0
- package/dist/gallery/states/home-single-source.d.ts +3 -0
- package/dist/gallery/states/home-single-source.d.ts.map +1 -0
- package/dist/gallery/states/home-single-source.js +16 -0
- package/dist/gallery/states/home-single-source.js.map +1 -0
- package/dist/gallery/states/home.d.ts +3 -0
- package/dist/gallery/states/home.d.ts.map +1 -0
- package/dist/gallery/states/home.js +13 -0
- package/dist/gallery/states/home.js.map +1 -0
- package/dist/gallery/states/index-corporate.d.ts +3 -0
- package/dist/gallery/states/index-corporate.d.ts.map +1 -0
- package/dist/gallery/states/index-corporate.js +16 -0
- package/dist/gallery/states/index-corporate.js.map +1 -0
- package/dist/gallery/states/index-page.d.ts +3 -0
- package/dist/gallery/states/index-page.d.ts.map +1 -0
- package/dist/gallery/states/index-page.js +13 -0
- package/dist/gallery/states/index-page.js.map +1 -0
- package/dist/gallery/states/keyword-page-corporate.d.ts +3 -0
- package/dist/gallery/states/keyword-page-corporate.d.ts.map +1 -0
- package/dist/gallery/states/keyword-page-corporate.js +16 -0
- package/dist/gallery/states/keyword-page-corporate.js.map +1 -0
- package/dist/gallery/states/keyword-page-empty.d.ts +3 -0
- package/dist/gallery/states/keyword-page-empty.d.ts.map +1 -0
- package/dist/gallery/states/keyword-page-empty.js +21 -0
- package/dist/gallery/states/keyword-page-empty.js.map +1 -0
- package/dist/gallery/states/keyword-page-no-script.d.ts +3 -0
- package/dist/gallery/states/keyword-page-no-script.d.ts.map +1 -0
- package/dist/gallery/states/keyword-page-no-script.js +10 -0
- package/dist/gallery/states/keyword-page-no-script.js.map +1 -0
- package/dist/gallery/states/keyword-page-no-timecode.d.ts +3 -0
- package/dist/gallery/states/keyword-page-no-timecode.d.ts.map +1 -0
- package/dist/gallery/states/keyword-page-no-timecode.js +16 -0
- package/dist/gallery/states/keyword-page-no-timecode.js.map +1 -0
- package/dist/gallery/states/keyword-page.d.ts +3 -0
- package/dist/gallery/states/keyword-page.d.ts.map +1 -0
- package/dist/gallery/states/keyword-page.js +13 -0
- package/dist/gallery/states/keyword-page.js.map +1 -0
- package/dist/gallery/states/meeting-page-corporate.d.ts +3 -0
- package/dist/gallery/states/meeting-page-corporate.d.ts.map +1 -0
- package/dist/gallery/states/meeting-page-corporate.js +16 -0
- package/dist/gallery/states/meeting-page-corporate.js.map +1 -0
- package/dist/gallery/states/meeting-page-no-script.d.ts +3 -0
- package/dist/gallery/states/meeting-page-no-script.d.ts.map +1 -0
- package/dist/gallery/states/meeting-page-no-script.js +10 -0
- package/dist/gallery/states/meeting-page-no-script.js.map +1 -0
- package/dist/gallery/states/mentions-panel-empty.d.ts +3 -0
- package/dist/gallery/states/mentions-panel-empty.d.ts.map +1 -0
- package/dist/gallery/states/mentions-panel-empty.js +15 -0
- package/dist/gallery/states/mentions-panel-empty.js.map +1 -0
- package/dist/gallery/states/mentions-panel-island.d.ts +3 -0
- package/dist/gallery/states/mentions-panel-island.d.ts.map +1 -0
- package/dist/gallery/states/mentions-panel-island.js +20 -0
- package/dist/gallery/states/mentions-panel-island.js.map +1 -0
- package/dist/gallery/states/mentions-panel.d.ts +3 -0
- package/dist/gallery/states/mentions-panel.d.ts.map +1 -0
- package/dist/gallery/states/mentions-panel.js +16 -0
- package/dist/gallery/states/mentions-panel.js.map +1 -0
- package/dist/gallery/states/neighbourhood-empty.d.ts +3 -0
- package/dist/gallery/states/neighbourhood-empty.d.ts.map +1 -0
- package/dist/gallery/states/neighbourhood-empty.js +16 -0
- package/dist/gallery/states/neighbourhood-empty.js.map +1 -0
- package/dist/gallery/states/neighbourhood-full.d.ts +3 -0
- package/dist/gallery/states/neighbourhood-full.d.ts.map +1 -0
- package/dist/gallery/states/neighbourhood-full.js +16 -0
- package/dist/gallery/states/neighbourhood-full.js.map +1 -0
- package/dist/gallery/states/neighbourhood-overflow.d.ts +3 -0
- package/dist/gallery/states/neighbourhood-overflow.d.ts.map +1 -0
- package/dist/gallery/states/neighbourhood-overflow.js +16 -0
- package/dist/gallery/states/neighbourhood-overflow.js.map +1 -0
- package/dist/gallery/states/neighbourhood.d.ts +3 -0
- package/dist/gallery/states/neighbourhood.d.ts.map +1 -0
- package/dist/gallery/states/neighbourhood.js +16 -0
- package/dist/gallery/states/neighbourhood.js.map +1 -0
- package/dist/gallery/states/not-found-corporate.d.ts +3 -0
- package/dist/gallery/states/not-found-corporate.d.ts.map +1 -0
- package/dist/gallery/states/not-found-corporate.js +16 -0
- package/dist/gallery/states/not-found-corporate.js.map +1 -0
- package/dist/gallery/states/not-found-nearby.d.ts +3 -0
- package/dist/gallery/states/not-found-nearby.d.ts.map +1 -0
- package/dist/gallery/states/not-found-nearby.js +16 -0
- package/dist/gallery/states/not-found-nearby.js.map +1 -0
- package/dist/gallery/states/screen-page-corporate.d.ts +3 -0
- package/dist/gallery/states/screen-page-corporate.d.ts.map +1 -0
- package/dist/gallery/states/screen-page-corporate.js +16 -0
- package/dist/gallery/states/screen-page-corporate.js.map +1 -0
- package/dist/gallery/states/search-results-corporate.d.ts +3 -0
- package/dist/gallery/states/search-results-corporate.d.ts.map +1 -0
- package/dist/gallery/states/search-results-corporate.js +16 -0
- package/dist/gallery/states/search-results-corporate.js.map +1 -0
- package/dist/gallery/states/search-results-empty.d.ts +3 -0
- package/dist/gallery/states/search-results-empty.d.ts.map +1 -0
- package/dist/gallery/states/search-results-empty.js +13 -0
- package/dist/gallery/states/search-results-empty.js.map +1 -0
- package/dist/gallery/states/search-results-filtered.d.ts +3 -0
- package/dist/gallery/states/search-results-filtered.d.ts.map +1 -0
- package/dist/gallery/states/search-results-filtered.js +16 -0
- package/dist/gallery/states/search-results-filtered.js.map +1 -0
- package/dist/gallery/states/search-results-no-script.d.ts +3 -0
- package/dist/gallery/states/search-results-no-script.d.ts.map +1 -0
- package/dist/gallery/states/search-results-no-script.js +10 -0
- package/dist/gallery/states/search-results-no-script.js.map +1 -0
- package/dist/gallery/states/search-results.d.ts +3 -0
- package/dist/gallery/states/search-results.d.ts.map +1 -0
- package/dist/gallery/states/search-results.js +13 -0
- package/dist/gallery/states/search-results.js.map +1 -0
- package/dist/gallery/states/shell-rtl.d.ts +3 -0
- package/dist/gallery/states/shell-rtl.d.ts.map +1 -0
- package/dist/gallery/states/shell-rtl.js +14 -0
- package/dist/gallery/states/shell-rtl.js.map +1 -0
- package/dist/gallery/states/space-corporate.d.ts +3 -0
- package/dist/gallery/states/space-corporate.d.ts.map +1 -0
- package/dist/gallery/states/space-corporate.js +16 -0
- package/dist/gallery/states/space-corporate.js.map +1 -0
- package/dist/gallery/states/spaces-corporate.d.ts +3 -0
- package/dist/gallery/states/spaces-corporate.d.ts.map +1 -0
- package/dist/gallery/states/spaces-corporate.js +16 -0
- package/dist/gallery/states/spaces-corporate.js.map +1 -0
- package/dist/gallery/states/todo-corporate.d.ts +3 -0
- package/dist/gallery/states/todo-corporate.d.ts.map +1 -0
- package/dist/gallery/states/todo-corporate.js +16 -0
- package/dist/gallery/states/todo-corporate.js.map +1 -0
- package/dist/gallery/states/todo-empty.d.ts +3 -0
- package/dist/gallery/states/todo-empty.d.ts.map +1 -0
- package/dist/gallery/states/todo-empty.js +12 -0
- package/dist/gallery/states/todo-empty.js.map +1 -0
- package/dist/gallery/states/todo.d.ts +3 -0
- package/dist/gallery/states/todo.d.ts.map +1 -0
- package/dist/gallery/states/todo.js +13 -0
- package/dist/gallery/states/todo.js.map +1 -0
- package/dist/gallery/types.d.ts +27 -0
- package/dist/gallery/types.d.ts.map +1 -0
- package/dist/gallery/types.js +107 -0
- package/dist/gallery/types.js.map +1 -0
- package/dist/gallery/width-switch.d.ts +11 -0
- package/dist/gallery/width-switch.d.ts.map +1 -0
- package/dist/gallery/width-switch.js +18 -0
- package/dist/gallery/width-switch.js.map +1 -0
- package/dist/gallery/width.client.d.ts +2 -0
- package/dist/gallery/width.client.d.ts.map +1 -0
- package/dist/gallery/width.client.js +6 -0
- package/dist/gallery/width.client.js.map +1 -0
- package/dist/gallery/width.d.ts +35 -0
- package/dist/gallery/width.d.ts.map +1 -0
- package/dist/gallery/width.js +40 -0
- package/dist/gallery/width.js.map +1 -0
- package/dist/index.d.ts +95 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +82 -0
- package/dist/index.js.map +1 -0
- package/dist/islands/age.client.d.ts +2 -0
- package/dist/islands/age.client.d.ts.map +1 -0
- package/dist/islands/age.client.js +6 -0
- package/dist/islands/age.client.js.map +1 -0
- package/dist/islands/age.d.ts +43 -0
- package/dist/islands/age.d.ts.map +1 -0
- package/dist/islands/age.js +67 -0
- package/dist/islands/age.js.map +1 -0
- package/dist/islands/bundle.d.ts +50 -0
- package/dist/islands/bundle.d.ts.map +1 -0
- package/dist/islands/bundle.js +152 -0
- package/dist/islands/bundle.js.map +1 -0
- package/dist/islands/category-list.client.d.ts +2 -0
- package/dist/islands/category-list.client.d.ts.map +1 -0
- package/dist/islands/category-list.client.js +5 -0
- package/dist/islands/category-list.client.js.map +1 -0
- package/dist/islands/contract-viewer.client.d.ts +2 -0
- package/dist/islands/contract-viewer.client.d.ts.map +1 -0
- package/dist/islands/contract-viewer.client.js +5 -0
- package/dist/islands/contract-viewer.client.js.map +1 -0
- package/dist/islands/document-viewer.client.d.ts +2 -0
- package/dist/islands/document-viewer.client.d.ts.map +1 -0
- package/dist/islands/document-viewer.client.js +10 -0
- package/dist/islands/document-viewer.client.js.map +1 -0
- package/dist/islands/document-viewer.d.ts +41 -0
- package/dist/islands/document-viewer.d.ts.map +1 -0
- package/dist/islands/document-viewer.js +130 -0
- package/dist/islands/document-viewer.js.map +1 -0
- package/dist/islands/editable.d.ts +12 -0
- package/dist/islands/editable.d.ts.map +1 -0
- package/dist/islands/editable.js +12 -0
- package/dist/islands/editable.js.map +1 -0
- package/dist/islands/element.d.ts +3 -0
- package/dist/islands/element.d.ts.map +1 -0
- package/dist/islands/element.js +3 -0
- package/dist/islands/element.js.map +1 -0
- package/dist/islands/island.d.ts +10 -0
- package/dist/islands/island.d.ts.map +1 -0
- package/dist/islands/island.js +24 -0
- package/dist/islands/island.js.map +1 -0
- package/dist/islands/mentions-panel.client.d.ts +2 -0
- package/dist/islands/mentions-panel.client.d.ts.map +1 -0
- package/dist/islands/mentions-panel.client.js +10 -0
- package/dist/islands/mentions-panel.client.js.map +1 -0
- package/dist/islands/mentions-rest.d.ts +22 -0
- package/dist/islands/mentions-rest.d.ts.map +1 -0
- package/dist/islands/mentions-rest.js +44 -0
- package/dist/islands/mentions-rest.js.map +1 -0
- package/dist/islands/mode-switch.client.d.ts +2 -0
- package/dist/islands/mode-switch.client.d.ts.map +1 -0
- package/dist/islands/mode-switch.client.js +14 -0
- package/dist/islands/mode-switch.client.js.map +1 -0
- package/dist/islands/mode-switch.d.ts +54 -0
- package/dist/islands/mode-switch.d.ts.map +1 -0
- package/dist/islands/mode-switch.js +64 -0
- package/dist/islands/mode-switch.js.map +1 -0
- package/dist/islands/mount.d.ts +11 -0
- package/dist/islands/mount.d.ts.map +1 -0
- package/dist/islands/mount.js +14 -0
- package/dist/islands/mount.js.map +1 -0
- package/dist/islands/not-found.client.d.ts +2 -0
- package/dist/islands/not-found.client.d.ts.map +1 -0
- package/dist/islands/not-found.client.js +18 -0
- package/dist/islands/not-found.client.js.map +1 -0
- package/dist/islands/not-found.d.ts +56 -0
- package/dist/islands/not-found.d.ts.map +1 -0
- package/dist/islands/not-found.js +138 -0
- package/dist/islands/not-found.js.map +1 -0
- package/dist/islands/panels.client.d.ts +2 -0
- package/dist/islands/panels.client.d.ts.map +1 -0
- package/dist/islands/panels.client.js +6 -0
- package/dist/islands/panels.client.js.map +1 -0
- package/dist/islands/panels.d.ts +48 -0
- package/dist/islands/panels.d.ts.map +1 -0
- package/dist/islands/panels.js +95 -0
- package/dist/islands/panels.js.map +1 -0
- package/dist/islands/pins.client.d.ts +2 -0
- package/dist/islands/pins.client.d.ts.map +1 -0
- package/dist/islands/pins.client.js +6 -0
- package/dist/islands/pins.client.js.map +1 -0
- package/dist/islands/pins.d.ts +30 -0
- package/dist/islands/pins.d.ts.map +1 -0
- package/dist/islands/pins.js +134 -0
- package/dist/islands/pins.js.map +1 -0
- package/dist/islands/search.client.d.ts +2 -0
- package/dist/islands/search.client.d.ts.map +1 -0
- package/dist/islands/search.client.js +58 -0
- package/dist/islands/search.client.js.map +1 -0
- package/dist/islands/search.d.ts +221 -0
- package/dist/islands/search.d.ts.map +1 -0
- package/dist/islands/search.js +606 -0
- package/dist/islands/search.js.map +1 -0
- package/dist/islands/shards.d.ts +27 -0
- package/dist/islands/shards.d.ts.map +1 -0
- package/dist/islands/shards.js +39 -0
- package/dist/islands/shards.js.map +1 -0
- package/dist/islands/tabs.client.d.ts +2 -0
- package/dist/islands/tabs.client.d.ts.map +1 -0
- package/dist/islands/tabs.client.js +6 -0
- package/dist/islands/tabs.client.js.map +1 -0
- package/dist/islands/tabs.d.ts +24 -0
- package/dist/islands/tabs.d.ts.map +1 -0
- package/dist/islands/tabs.js +79 -0
- package/dist/islands/tabs.js.map +1 -0
- package/dist/islands/toc.client.d.ts +2 -0
- package/dist/islands/toc.client.d.ts.map +1 -0
- package/dist/islands/toc.client.js +11 -0
- package/dist/islands/toc.client.js.map +1 -0
- package/dist/islands/toc.d.ts +37 -0
- package/dist/islands/toc.d.ts.map +1 -0
- package/dist/islands/toc.js +50 -0
- package/dist/islands/toc.js.map +1 -0
- package/dist/islands/trail.client.d.ts +2 -0
- package/dist/islands/trail.client.d.ts.map +1 -0
- package/dist/islands/trail.client.js +12 -0
- package/dist/islands/trail.client.js.map +1 -0
- package/dist/islands/trail.d.ts +95 -0
- package/dist/islands/trail.d.ts.map +1 -0
- package/dist/islands/trail.js +223 -0
- package/dist/islands/trail.js.map +1 -0
- package/dist/islands/viewer-pdf.client.d.ts +7 -0
- package/dist/islands/viewer-pdf.client.d.ts.map +1 -0
- package/dist/islands/viewer-pdf.client.js +13 -0
- package/dist/islands/viewer-pdf.client.js.map +1 -0
- package/dist/islands/viewer-pdf.d.ts +50 -0
- package/dist/islands/viewer-pdf.d.ts.map +1 -0
- package/dist/islands/viewer-pdf.js +157 -0
- package/dist/islands/viewer-pdf.js.map +1 -0
- package/dist/markdown/figures.d.ts +16 -0
- package/dist/markdown/figures.d.ts.map +1 -0
- package/dist/markdown/figures.js +26 -0
- package/dist/markdown/figures.js.map +1 -0
- package/dist/markdown/marks.d.ts +14 -0
- package/dist/markdown/marks.d.ts.map +1 -0
- package/dist/markdown/marks.js +10 -0
- package/dist/markdown/marks.js.map +1 -0
- package/dist/markdown/render.d.ts +67 -0
- package/dist/markdown/render.d.ts.map +1 -0
- package/dist/markdown/render.js +402 -0
- package/dist/markdown/render.js.map +1 -0
- package/dist/mode.d.ts +21 -0
- package/dist/mode.d.ts.map +1 -0
- package/dist/mode.js +25 -0
- package/dist/mode.js.map +1 -0
- package/dist/neighbourhood/layout.d.ts +58 -0
- package/dist/neighbourhood/layout.d.ts.map +1 -0
- package/dist/neighbourhood/layout.js +171 -0
- package/dist/neighbourhood/layout.js.map +1 -0
- package/dist/order.d.ts +2 -0
- package/dist/order.d.ts.map +1 -0
- package/dist/order.js +5 -0
- package/dist/order.js.map +1 -0
- package/dist/panels.d.ts +21 -0
- package/dist/panels.d.ts.map +1 -0
- package/dist/panels.js +31 -0
- package/dist/panels.js.map +1 -0
- package/dist/pins.d.ts +46 -0
- package/dist/pins.d.ts.map +1 -0
- package/dist/pins.js +132 -0
- package/dist/pins.js.map +1 -0
- package/dist/render.d.ts +38 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +64 -0
- package/dist/render.js.map +1 -0
- package/dist/search/build.d.ts +91 -0
- package/dist/search/build.d.ts.map +1 -0
- package/dist/search/build.js +256 -0
- package/dist/search/build.js.map +1 -0
- package/dist/search/facets.d.ts +40 -0
- package/dist/search/facets.d.ts.map +1 -0
- package/dist/search/facets.js +159 -0
- package/dist/search/facets.js.map +1 -0
- package/dist/search/highlight.d.ts +13 -0
- package/dist/search/highlight.d.ts.map +1 -0
- package/dist/search/highlight.js +72 -0
- package/dist/search/highlight.js.map +1 -0
- package/dist/search/shared.d.ts +194 -0
- package/dist/search/shared.d.ts.map +1 -0
- package/dist/search/shared.js +166 -0
- package/dist/search/shared.js.map +1 -0
- package/dist/search/state.d.ts +30 -0
- package/dist/search/state.d.ts.map +1 -0
- package/dist/search/state.js +82 -0
- package/dist/search/state.js.map +1 -0
- package/dist/slots.d.ts +1768 -0
- package/dist/slots.d.ts.map +1 -0
- package/dist/slots.js +57 -0
- package/dist/slots.js.map +1 -0
- package/dist/theme/chrome.d.ts +30 -0
- package/dist/theme/chrome.d.ts.map +1 -0
- package/dist/theme/chrome.js +59 -0
- package/dist/theme/chrome.js.map +1 -0
- package/dist/theme/context.d.ts +18 -0
- package/dist/theme/context.d.ts.map +1 -0
- package/dist/theme/context.js +38 -0
- package/dist/theme/context.js.map +1 -0
- package/dist/theme/default/about.d.ts +12 -0
- package/dist/theme/default/about.d.ts.map +1 -0
- package/dist/theme/default/about.js +88 -0
- package/dist/theme/default/about.js.map +1 -0
- package/dist/theme/default/age-notice.d.ts +36 -0
- package/dist/theme/default/age-notice.d.ts.map +1 -0
- package/dist/theme/default/age-notice.js +18 -0
- package/dist/theme/default/age-notice.js.map +1 -0
- package/dist/theme/default/api-page.d.ts +28 -0
- package/dist/theme/default/api-page.d.ts.map +1 -0
- package/dist/theme/default/api-page.js +47 -0
- package/dist/theme/default/api-page.js.map +1 -0
- package/dist/theme/default/attributes.d.ts +20 -0
- package/dist/theme/default/attributes.d.ts.map +1 -0
- package/dist/theme/default/attributes.js +20 -0
- package/dist/theme/default/attributes.js.map +1 -0
- package/dist/theme/default/category-island.d.ts +80 -0
- package/dist/theme/default/category-island.d.ts.map +1 -0
- package/dist/theme/default/category-island.js +161 -0
- package/dist/theme/default/category-island.js.map +1 -0
- package/dist/theme/default/category-list.d.ts +14 -0
- package/dist/theme/default/category-list.d.ts.map +1 -0
- package/dist/theme/default/category-list.js +47 -0
- package/dist/theme/default/category-list.js.map +1 -0
- package/dist/theme/default/contract-section.d.ts +13 -0
- package/dist/theme/default/contract-section.d.ts.map +1 -0
- package/dist/theme/default/contract-section.js +66 -0
- package/dist/theme/default/contract-section.js.map +1 -0
- package/dist/theme/default/contract-viewer.d.ts +46 -0
- package/dist/theme/default/contract-viewer.d.ts.map +1 -0
- package/dist/theme/default/contract-viewer.js +105 -0
- package/dist/theme/default/contract-viewer.js.map +1 -0
- package/dist/theme/default/decision-page.d.ts +24 -0
- package/dist/theme/default/decision-page.d.ts.map +1 -0
- package/dist/theme/default/decision-page.js +91 -0
- package/dist/theme/default/decision-page.js.map +1 -0
- package/dist/theme/default/document-page.d.ts +23 -0
- package/dist/theme/default/document-page.d.ts.map +1 -0
- package/dist/theme/default/document-page.js +143 -0
- package/dist/theme/default/document-page.js.map +1 -0
- package/dist/theme/default/document-viewer.d.ts +70 -0
- package/dist/theme/default/document-viewer.d.ts.map +1 -0
- package/dist/theme/default/document-viewer.js +93 -0
- package/dist/theme/default/document-viewer.js.map +1 -0
- package/dist/theme/default/drawer.d.ts +20 -0
- package/dist/theme/default/drawer.d.ts.map +1 -0
- package/dist/theme/default/drawer.js +25 -0
- package/dist/theme/default/drawer.js.map +1 -0
- package/dist/theme/default/entity-page.d.ts +75 -0
- package/dist/theme/default/entity-page.d.ts.map +1 -0
- package/dist/theme/default/entity-page.js +140 -0
- package/dist/theme/default/entity-page.js.map +1 -0
- package/dist/theme/default/footer.d.ts +15 -0
- package/dist/theme/default/footer.d.ts.map +1 -0
- package/dist/theme/default/footer.js +57 -0
- package/dist/theme/default/footer.js.map +1 -0
- package/dist/theme/default/glyphs.d.ts +19 -0
- package/dist/theme/default/glyphs.d.ts.map +1 -0
- package/dist/theme/default/glyphs.js +56 -0
- package/dist/theme/default/glyphs.js.map +1 -0
- package/dist/theme/default/grouped-files.d.ts +12 -0
- package/dist/theme/default/grouped-files.d.ts.map +1 -0
- package/dist/theme/default/grouped-files.js +11 -0
- package/dist/theme/default/grouped-files.js.map +1 -0
- package/dist/theme/default/header.d.ts +11 -0
- package/dist/theme/default/header.d.ts.map +1 -0
- package/dist/theme/default/header.js +23 -0
- package/dist/theme/default/header.js.map +1 -0
- package/dist/theme/default/home.d.ts +13 -0
- package/dist/theme/default/home.d.ts.map +1 -0
- package/dist/theme/default/home.js +45 -0
- package/dist/theme/default/home.js.map +1 -0
- package/dist/theme/default/index-page.d.ts +29 -0
- package/dist/theme/default/index-page.d.ts.map +1 -0
- package/dist/theme/default/index-page.js +97 -0
- package/dist/theme/default/index-page.js.map +1 -0
- package/dist/theme/default/index.d.ts +13 -0
- package/dist/theme/default/index.d.ts.map +1 -0
- package/dist/theme/default/index.js +55 -0
- package/dist/theme/default/index.js.map +1 -0
- package/dist/theme/default/keyword-page.d.ts +20 -0
- package/dist/theme/default/keyword-page.d.ts.map +1 -0
- package/dist/theme/default/keyword-page.js +68 -0
- package/dist/theme/default/keyword-page.js.map +1 -0
- package/dist/theme/default/labels.d.ts +223 -0
- package/dist/theme/default/labels.d.ts.map +1 -0
- package/dist/theme/default/labels.js +223 -0
- package/dist/theme/default/labels.js.map +1 -0
- package/dist/theme/default/meeting-page.d.ts +20 -0
- package/dist/theme/default/meeting-page.d.ts.map +1 -0
- package/dist/theme/default/meeting-page.js +122 -0
- package/dist/theme/default/meeting-page.js.map +1 -0
- package/dist/theme/default/mention-list.d.ts +70 -0
- package/dist/theme/default/mention-list.d.ts.map +1 -0
- package/dist/theme/default/mention-list.js +99 -0
- package/dist/theme/default/mention-list.js.map +1 -0
- package/dist/theme/default/mentions-island.d.ts +100 -0
- package/dist/theme/default/mentions-island.d.ts.map +1 -0
- package/dist/theme/default/mentions-island.js +169 -0
- package/dist/theme/default/mentions-island.js.map +1 -0
- package/dist/theme/default/mentions-more.d.ts +22 -0
- package/dist/theme/default/mentions-more.d.ts.map +1 -0
- package/dist/theme/default/mentions-more.js +25 -0
- package/dist/theme/default/mentions-more.js.map +1 -0
- package/dist/theme/default/mentions-panel.d.ts +16 -0
- package/dist/theme/default/mentions-panel.d.ts.map +1 -0
- package/dist/theme/default/mentions-panel.js +50 -0
- package/dist/theme/default/mentions-panel.js.map +1 -0
- package/dist/theme/default/mode-switch.d.ts +9 -0
- package/dist/theme/default/mode-switch.d.ts.map +1 -0
- package/dist/theme/default/mode-switch.js +19 -0
- package/dist/theme/default/mode-switch.js.map +1 -0
- package/dist/theme/default/neighbourhood.d.ts +29 -0
- package/dist/theme/default/neighbourhood.d.ts.map +1 -0
- package/dist/theme/default/neighbourhood.js +146 -0
- package/dist/theme/default/neighbourhood.js.map +1 -0
- package/dist/theme/default/not-found.d.ts +14 -0
- package/dist/theme/default/not-found.d.ts.map +1 -0
- package/dist/theme/default/not-found.js +27 -0
- package/dist/theme/default/not-found.js.map +1 -0
- package/dist/theme/default/page-notice.d.ts +10 -0
- package/dist/theme/default/page-notice.d.ts.map +1 -0
- package/dist/theme/default/page-notice.js +11 -0
- package/dist/theme/default/page-notice.js.map +1 -0
- package/dist/theme/default/panel-block.d.ts +14 -0
- package/dist/theme/default/panel-block.d.ts.map +1 -0
- package/dist/theme/default/panel-block.js +9 -0
- package/dist/theme/default/panel-block.js.map +1 -0
- package/dist/theme/default/panel-handle.d.ts +29 -0
- package/dist/theme/default/panel-handle.d.ts.map +1 -0
- package/dist/theme/default/panel-handle.js +35 -0
- package/dist/theme/default/panel-handle.js.map +1 -0
- package/dist/theme/default/pins.d.ts +22 -0
- package/dist/theme/default/pins.d.ts.map +1 -0
- package/dist/theme/default/pins.js +53 -0
- package/dist/theme/default/pins.js.map +1 -0
- package/dist/theme/default/plugin.d.ts +11 -0
- package/dist/theme/default/plugin.d.ts.map +1 -0
- package/dist/theme/default/plugin.js +28 -0
- package/dist/theme/default/plugin.js.map +1 -0
- package/dist/theme/default/result-list.d.ts +13 -0
- package/dist/theme/default/result-list.d.ts.map +1 -0
- package/dist/theme/default/result-list.js +27 -0
- package/dist/theme/default/result-list.js.map +1 -0
- package/dist/theme/default/search-island.d.ts +29 -0
- package/dist/theme/default/search-island.d.ts.map +1 -0
- package/dist/theme/default/search-island.js +45 -0
- package/dist/theme/default/search-island.js.map +1 -0
- package/dist/theme/default/search-results.d.ts +12 -0
- package/dist/theme/default/search-results.d.ts.map +1 -0
- package/dist/theme/default/search-results.js +85 -0
- package/dist/theme/default/search-results.js.map +1 -0
- package/dist/theme/default/search-suggestions.d.ts +51 -0
- package/dist/theme/default/search-suggestions.d.ts.map +1 -0
- package/dist/theme/default/search-suggestions.js +55 -0
- package/dist/theme/default/search-suggestions.js.map +1 -0
- package/dist/theme/default/shell.d.ts +4 -0
- package/dist/theme/default/shell.d.ts.map +1 -0
- package/dist/theme/default/shell.js +16 -0
- package/dist/theme/default/shell.js.map +1 -0
- package/dist/theme/default/space-tree.d.ts +24 -0
- package/dist/theme/default/space-tree.d.ts.map +1 -0
- package/dist/theme/default/space-tree.js +50 -0
- package/dist/theme/default/space-tree.js.map +1 -0
- package/dist/theme/default/space.d.ts +14 -0
- package/dist/theme/default/space.d.ts.map +1 -0
- package/dist/theme/default/space.js +47 -0
- package/dist/theme/default/space.js.map +1 -0
- package/dist/theme/default/spaces.d.ts +12 -0
- package/dist/theme/default/spaces.d.ts.map +1 -0
- package/dist/theme/default/spaces.js +35 -0
- package/dist/theme/default/spaces.js.map +1 -0
- package/dist/theme/default/tabs.d.ts +38 -0
- package/dist/theme/default/tabs.d.ts.map +1 -0
- package/dist/theme/default/tabs.js +29 -0
- package/dist/theme/default/tabs.js.map +1 -0
- package/dist/theme/default/toc.d.ts +19 -0
- package/dist/theme/default/toc.d.ts.map +1 -0
- package/dist/theme/default/toc.js +26 -0
- package/dist/theme/default/toc.js.map +1 -0
- package/dist/theme/default/todo.d.ts +8 -0
- package/dist/theme/default/todo.d.ts.map +1 -0
- package/dist/theme/default/todo.js +33 -0
- package/dist/theme/default/todo.js.map +1 -0
- package/dist/theme/default/trail.d.ts +9 -0
- package/dist/theme/default/trail.d.ts.map +1 -0
- package/dist/theme/default/trail.js +24 -0
- package/dist/theme/default/trail.js.map +1 -0
- package/dist/theme/load.d.ts +45 -0
- package/dist/theme/load.d.ts.map +1 -0
- package/dist/theme/load.js +123 -0
- package/dist/theme/load.js.map +1 -0
- package/dist/theme/node-loader.d.ts +10 -0
- package/dist/theme/node-loader.d.ts.map +1 -0
- package/dist/theme/node-loader.js +36 -0
- package/dist/theme/node-loader.js.map +1 -0
- package/dist/theme/resolve.d.ts +27 -0
- package/dist/theme/resolve.d.ts.map +1 -0
- package/dist/theme/resolve.js +184 -0
- package/dist/theme/resolve.js.map +1 -0
- package/dist/theme/types.d.ts +44 -0
- package/dist/theme/types.d.ts.map +1 -0
- package/dist/theme/types.js +2 -0
- package/dist/theme/types.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a title marks the words of a query: the start of every token a word prefixes, compared
|
|
3
|
+
* on the same folded form as the index. Nothing here reaches Node either: the island marks
|
|
4
|
+
* the titles of the live results.
|
|
5
|
+
*/
|
|
6
|
+
import { normalizeQuery } from "./shared.js";
|
|
7
|
+
const alphanumeric = /[\p{L}\p{N}]/u;
|
|
8
|
+
function foldCharacters(text) {
|
|
9
|
+
return Array.from(text).map((character) => ({
|
|
10
|
+
text: character,
|
|
11
|
+
folded: normalizeQuery(character),
|
|
12
|
+
}));
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The span of a token whose folded form the longest word of the query covers; none when no word
|
|
16
|
+
* prefixes the token. A word is matched against the token from its first letter or digit, as
|
|
17
|
+
* the index trims the punctuation at the edges of a token, and the mark carries the combining
|
|
18
|
+
* marks that follow its last letter, so that an accent is never cut from its letter.
|
|
19
|
+
*/
|
|
20
|
+
function matchedSpan(token, words) {
|
|
21
|
+
const start = token.findIndex((character) => alphanumeric.test(character.folded));
|
|
22
|
+
if (start < 0)
|
|
23
|
+
return undefined;
|
|
24
|
+
const folded = token
|
|
25
|
+
.slice(start)
|
|
26
|
+
.map((character) => character.folded)
|
|
27
|
+
.join("");
|
|
28
|
+
const longest = words
|
|
29
|
+
.filter((word) => folded.startsWith(word))
|
|
30
|
+
.reduce((best, word) => Math.max(best, word.length), 0);
|
|
31
|
+
if (longest === 0)
|
|
32
|
+
return undefined;
|
|
33
|
+
let covered = 0;
|
|
34
|
+
let end = start;
|
|
35
|
+
while (end < token.length && (covered < longest || token[end]?.folded === "")) {
|
|
36
|
+
// The loop stops before the end of the token: its folded form holds at least `longest` characters.
|
|
37
|
+
covered += token[end].folded.length;
|
|
38
|
+
end += 1;
|
|
39
|
+
}
|
|
40
|
+
return { start, end };
|
|
41
|
+
}
|
|
42
|
+
function textOf(characters) {
|
|
43
|
+
return characters.map((character) => character.text).join("");
|
|
44
|
+
}
|
|
45
|
+
/** The title cut into pieces, the start of every token a word of the query prefixes marked; one plain piece when nothing matches. */
|
|
46
|
+
export function markTitle(title, words) {
|
|
47
|
+
const pieces = [];
|
|
48
|
+
const push = (text, marked) => {
|
|
49
|
+
if (text === "")
|
|
50
|
+
return;
|
|
51
|
+
const last = pieces[pieces.length - 1];
|
|
52
|
+
if (last?.marked === marked) {
|
|
53
|
+
last.text += text;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
pieces.push({ text, marked });
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
for (const part of title.split(/(\s+)/)) {
|
|
60
|
+
const token = foldCharacters(part);
|
|
61
|
+
const span = /^\s*$/.test(part) ? undefined : matchedSpan(token, words);
|
|
62
|
+
if (span === undefined) {
|
|
63
|
+
push(part, false);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
push(textOf(token.slice(0, span.start)), false);
|
|
67
|
+
push(textOf(token.slice(span.start, span.end)), true);
|
|
68
|
+
push(textOf(token.slice(span.end)), false);
|
|
69
|
+
}
|
|
70
|
+
return pieces.length === 0 ? [{ text: "", marked: false }] : pieces;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=highlight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.js","sourceRoot":"","sources":["../../src/search/highlight.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the index builder and the island in the browser share: the layout of the index files,
|
|
3
|
+
* the normalisation of a query and the ranking. Nothing here reaches Node, so that the same
|
|
4
|
+
* module is bundled into the island.
|
|
5
|
+
*/
|
|
6
|
+
import type { SearchField, SearchResultsProps } from "../slots.js";
|
|
7
|
+
/** Folder of the index under the output folder; also the folder of the results page. */
|
|
8
|
+
export declare const SEARCH_DIRECTORY = "search";
|
|
9
|
+
/** The island of the header field and of the results page; one bundle wires both. */
|
|
10
|
+
export declare const SEARCH_ISLAND = "search";
|
|
11
|
+
/** The suggestions under the header field are rendered into the element of this class by the island. */
|
|
12
|
+
export declare const SUGGESTIONS_CLASS = "search-suggestions";
|
|
13
|
+
/** The button clearing a search field, served hidden; the island shows it while the field holds a query. */
|
|
14
|
+
export declare const CLEAR_CLASS = "search-clear";
|
|
15
|
+
/** Name of the entity table file, `search/meta.js`; never a shard name, which is at most two characters. */
|
|
16
|
+
export declare const SEARCH_META = "meta";
|
|
17
|
+
/** The global the shard files call back: `window.__concordanceSearch.shard(name, data)`. */
|
|
18
|
+
export declare const SEARCH_GLOBAL = "__concordanceSearch";
|
|
19
|
+
/** A shard gathers every token sharing its first characters; a query word shorter than this is not looked up. */
|
|
20
|
+
export declare const SHARD_PREFIX_LENGTH = 2;
|
|
21
|
+
/** The type stored for a keyword page, which has no type of its own; the type facet lists it dotted. */
|
|
22
|
+
export declare const KEYWORD_TYPE = "keyword";
|
|
23
|
+
/**
|
|
24
|
+
* What the client entry reads from an island: the field of the header, with the root of the
|
|
25
|
+
* site where the index lives, or the results of the search page, which the entry fills from
|
|
26
|
+
* the query in the address and as the reader types.
|
|
27
|
+
*/
|
|
28
|
+
export interface SearchIslandProps {
|
|
29
|
+
/** Href of the root of the site from the page; absent when there is no index to load. */
|
|
30
|
+
root?: string;
|
|
31
|
+
search?: SearchField;
|
|
32
|
+
/** `true` for the field at the head of the home page, drawn large with its live results in the flow of the page. */
|
|
33
|
+
home?: boolean;
|
|
34
|
+
results?: SearchResultsProps;
|
|
35
|
+
}
|
|
36
|
+
/** One row of the entity table, in model order; the client turns `url` into an href from its page. */
|
|
37
|
+
export interface SearchEntry {
|
|
38
|
+
id: string;
|
|
39
|
+
title: string;
|
|
40
|
+
/** The type of the entity, `keyword` for a keyword page. */
|
|
41
|
+
type: string;
|
|
42
|
+
/** Path of the page under the output folder. */
|
|
43
|
+
url: string;
|
|
44
|
+
application?: string;
|
|
45
|
+
domain?: string;
|
|
46
|
+
status: string;
|
|
47
|
+
source: string;
|
|
48
|
+
/** The summary of the note, what its row shows under the title. */
|
|
49
|
+
summary?: string;
|
|
50
|
+
/** The other names of the note, when it declares some. */
|
|
51
|
+
aliases?: string[];
|
|
52
|
+
/** The title of the broader term the note declares, or the value as written when it names no page. */
|
|
53
|
+
broader?: string;
|
|
54
|
+
/** How many pages cite the entity: the distinct sources of the links pointing at it. */
|
|
55
|
+
cited?: number;
|
|
56
|
+
/** `true` for a keyword page, the page of a recurring expression nobody defined. */
|
|
57
|
+
keyword?: true;
|
|
58
|
+
/** How many times the expression was read and in how many files, for a keyword page. */
|
|
59
|
+
occurrences?: number;
|
|
60
|
+
documents?: number;
|
|
61
|
+
}
|
|
62
|
+
/** The facets of the results page, in the order they are shown; each one filters on the field of the same name. */
|
|
63
|
+
export declare const FACET_NAMES: readonly ["type", "source", "domain", "application"];
|
|
64
|
+
export type FacetName = (typeof FACET_NAMES)[number];
|
|
65
|
+
/** The fifth facet, on the keyword pages: its parameter in the address and its name in the view. */
|
|
66
|
+
export declare const NOTELESS_FACET = "nonote";
|
|
67
|
+
/** What the no-note facet does with the keyword pages: keeps them among the results, keeps them alone, or leaves them out. */
|
|
68
|
+
export declare const NOTELESS_FILTERS: readonly ["any", "only", "exclude"];
|
|
69
|
+
export type NotelessFilter = (typeof NOTELESS_FILTERS)[number];
|
|
70
|
+
/**
|
|
71
|
+
* A plural message frozen at build for the browser: the text of every plural category of the
|
|
72
|
+
* locale, `#` standing for the number; `plural` picks the category with `Intl.PluralRules`.
|
|
73
|
+
*/
|
|
74
|
+
export type PluralForms = Record<string, string>;
|
|
75
|
+
/** The strings of the results page, formatted at build in the site language and written in the table. */
|
|
76
|
+
export interface SearchLabels {
|
|
77
|
+
/** Heading of the facets. */
|
|
78
|
+
facets: string;
|
|
79
|
+
/** Heading of every facet, by name. */
|
|
80
|
+
facet: Record<FacetName, string>;
|
|
81
|
+
activeFilters: string;
|
|
82
|
+
removeFilter: string;
|
|
83
|
+
clear: string;
|
|
84
|
+
noResult: string;
|
|
85
|
+
/** "No result for {query}", the placeholder filled in the browser. */
|
|
86
|
+
noResultFor: string;
|
|
87
|
+
/** "N results, most cited first", by plural category. */
|
|
88
|
+
results: PluralForms;
|
|
89
|
+
/** The note under the facets: that the counters are set at publication and the filtering runs in the browser. */
|
|
90
|
+
countersNote: string;
|
|
91
|
+
/** The no-note facet: its heading and its three values. */
|
|
92
|
+
noteless: Record<"label" | NotelessFilter, string>;
|
|
93
|
+
/** "cited in N pages", by plural category, for the row of a note. */
|
|
94
|
+
cited: PluralForms;
|
|
95
|
+
/** "Also called: {aliases}" and "Broader term: {term}", the placeholders filled in the browser. */
|
|
96
|
+
alsoCalled: string;
|
|
97
|
+
broader: string;
|
|
98
|
+
/** "Used in N documents, never defined in the glossary", by plural category, for the row of a keyword page. */
|
|
99
|
+
usedIn: PluralForms;
|
|
100
|
+
/** The note under the results: that the words without a note appear dotted among the others. */
|
|
101
|
+
notelessNote: string;
|
|
102
|
+
/** The lead of the closest form proposed when nothing matches. */
|
|
103
|
+
closestForm: string;
|
|
104
|
+
/** "N occurrences", by plural category, for the closest form when it is a keyword page. */
|
|
105
|
+
occurrences: PluralForms;
|
|
106
|
+
/** "Show the next N", by plural category, on the button under the rows drawn so far. */
|
|
107
|
+
showNext: PluralForms;
|
|
108
|
+
/** "No result for {query} with the filters {filters}", by plural category of the filters, the placeholders filled in the browser. */
|
|
109
|
+
noResultFiltered: PluralForms;
|
|
110
|
+
/** The sentence under that notice: the word exists, on none of the pages the filter keeps. */
|
|
111
|
+
existsElsewhere: string;
|
|
112
|
+
/** "Remove the filter {label}", the placeholder filled in the browser. */
|
|
113
|
+
liftFilter: string;
|
|
114
|
+
/** The sentence under the notice of a word no file uses. */
|
|
115
|
+
noFileUses: string;
|
|
116
|
+
/** The exit to the page of the word itself. */
|
|
117
|
+
seeWordPage: string;
|
|
118
|
+
/** The line explaining that the search matches the start of words. */
|
|
119
|
+
prefixNote: string;
|
|
120
|
+
}
|
|
121
|
+
/** The number of entities carrying every value of every facet, values in code-unit order; the keyword pages and the others under `nonote`. */
|
|
122
|
+
export type FacetCounts = Record<FacetName, Record<string, number>> & {
|
|
123
|
+
nonote: Record<Exclude<NotelessFilter, "any">, number>;
|
|
124
|
+
};
|
|
125
|
+
export interface SearchMeta {
|
|
126
|
+
entities: SearchEntry[];
|
|
127
|
+
/** Every shard written, sorted, so that the client never asks for one that does not exist. */
|
|
128
|
+
shards: string[];
|
|
129
|
+
/** Labels of the types, titles of the applications and domains, by identifier, in the site language. */
|
|
130
|
+
types: Record<string, string>;
|
|
131
|
+
applications: Record<string, string>;
|
|
132
|
+
domains: Record<string, string>;
|
|
133
|
+
/** The declared sources, each labelled by its title, else its name, so that the facet lists them like the others. */
|
|
134
|
+
sources: Record<string, string>;
|
|
135
|
+
/** The names of the glossary sources, sorted: a note of one of them is a glossary term, whose row in the live results counts its citations rather than quoting its definition. */
|
|
136
|
+
glossary: string[];
|
|
137
|
+
/** The counts of every facet value over the whole table: what the results page shows before a query. */
|
|
138
|
+
counts: FacetCounts;
|
|
139
|
+
labels: SearchLabels;
|
|
140
|
+
/** BCP 47 tag of the site, for the plural rules of the counts. */
|
|
141
|
+
locale: string;
|
|
142
|
+
/** Bytes of every shard file together; the entity table is not counted in itself. */
|
|
143
|
+
bytes: number;
|
|
144
|
+
}
|
|
145
|
+
/** The text of a plural message for a count: the category's text, `other` when the locale has none for it, the number written in the locale. */
|
|
146
|
+
export declare function plural(forms: PluralForms, count: number, locale: string): string;
|
|
147
|
+
/** Token to its `[entity index, weight]` pairs, indices ascending. */
|
|
148
|
+
export type ShardData = Record<string, [number, number][]>;
|
|
149
|
+
/**
|
|
150
|
+
* The form a query is compared on, the same the language packs give to the indexed text: case
|
|
151
|
+
* and accents folded, typographic apostrophes unified, whitespace collapsed.
|
|
152
|
+
*/
|
|
153
|
+
export declare function normalizeQuery(text: string): string;
|
|
154
|
+
/** Punctuation trimmed at both ends of a word; the inside stays so that a hyphenated word is one token. */
|
|
155
|
+
export declare function trimEdges(word: string): string;
|
|
156
|
+
/** The words of a query that are looked up, in order, without repetition; a word too short for a shard is dropped. */
|
|
157
|
+
export declare function queryWords(query: string): string[];
|
|
158
|
+
/** The shard a token belongs to: its first characters. */
|
|
159
|
+
export declare function shardOf(token: string): string;
|
|
160
|
+
/**
|
|
161
|
+
* File name of a shard or of the entity table under `search/`, without extension: letters and
|
|
162
|
+
* digits stay, any other character becomes `_` and its code point, so that the name is safe on
|
|
163
|
+
* every file system and in a URL.
|
|
164
|
+
*/
|
|
165
|
+
export declare function shardFile(name: string): string;
|
|
166
|
+
/** The href of an index file from a page, given the href of the `search/` folder from that page. */
|
|
167
|
+
export declare function shardHref(index: string, name: string): string;
|
|
168
|
+
/** The text of a shard file: a classic script calling the global back, so that it loads over `file://` as behind a server. */
|
|
169
|
+
export declare function shardScript(name: string, json: string): string;
|
|
170
|
+
export interface Ranked {
|
|
171
|
+
/** Index in the entity table. */
|
|
172
|
+
entity: number;
|
|
173
|
+
score: number;
|
|
174
|
+
}
|
|
175
|
+
/** What the ranking reads of the table: whether an entity is a keyword page, and how many pages cite it. */
|
|
176
|
+
export interface RankOrder {
|
|
177
|
+
keyword?: (entity: number) => boolean;
|
|
178
|
+
cited?: (entity: number) => number;
|
|
179
|
+
}
|
|
180
|
+
export declare function rank(words: readonly string[], shards: ReadonlyMap<string, ShardData>, order?: RankOrder): Ranked[];
|
|
181
|
+
export interface ClosestForm {
|
|
182
|
+
/** Index in the entity table. */
|
|
183
|
+
entity: number;
|
|
184
|
+
/** The title or the alias matched, as written. */
|
|
185
|
+
form: string;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* The form of the dictionary closest to a query that matched nothing: the title or alias sharing
|
|
189
|
+
* the longest prefix with the query, at least a shard's worth of it; the shortest form among
|
|
190
|
+
* equals, so that a word beats the expressions starting with it, then the earliest in the table;
|
|
191
|
+
* none when no form shares that much.
|
|
192
|
+
*/
|
|
193
|
+
export declare function closestForm(query: string, entries: readonly SearchEntry[]): ClosestForm | undefined;
|
|
194
|
+
//# sourceMappingURL=shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/search/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the index builder and the island in the browser share: the layout of the index files,
|
|
3
|
+
* the normalisation of a query and the ranking. Nothing here reaches Node, so that the same
|
|
4
|
+
* module is bundled into the island.
|
|
5
|
+
*/
|
|
6
|
+
/** Folder of the index under the output folder; also the folder of the results page. */
|
|
7
|
+
export const SEARCH_DIRECTORY = "search";
|
|
8
|
+
/** The island of the header field and of the results page; one bundle wires both. */
|
|
9
|
+
export const SEARCH_ISLAND = "search";
|
|
10
|
+
/** The suggestions under the header field are rendered into the element of this class by the island. */
|
|
11
|
+
export const SUGGESTIONS_CLASS = "search-suggestions";
|
|
12
|
+
/** The button clearing a search field, served hidden; the island shows it while the field holds a query. */
|
|
13
|
+
export const CLEAR_CLASS = "search-clear";
|
|
14
|
+
/** Name of the entity table file, `search/meta.js`; never a shard name, which is at most two characters. */
|
|
15
|
+
export const SEARCH_META = "meta";
|
|
16
|
+
/** The global the shard files call back: `window.__concordanceSearch.shard(name, data)`. */
|
|
17
|
+
export const SEARCH_GLOBAL = "__concordanceSearch";
|
|
18
|
+
/** A shard gathers every token sharing its first characters; a query word shorter than this is not looked up. */
|
|
19
|
+
export const SHARD_PREFIX_LENGTH = 2;
|
|
20
|
+
/** The type stored for a keyword page, which has no type of its own; the type facet lists it dotted. */
|
|
21
|
+
export const KEYWORD_TYPE = "keyword";
|
|
22
|
+
/** The facets of the results page, in the order they are shown; each one filters on the field of the same name. */
|
|
23
|
+
export const FACET_NAMES = ["type", "source", "domain", "application"];
|
|
24
|
+
/** The fifth facet, on the keyword pages: its parameter in the address and its name in the view. */
|
|
25
|
+
export const NOTELESS_FACET = "nonote";
|
|
26
|
+
/** What the no-note facet does with the keyword pages: keeps them among the results, keeps them alone, or leaves them out. */
|
|
27
|
+
export const NOTELESS_FILTERS = ["any", "only", "exclude"];
|
|
28
|
+
/** The text of a plural message for a count: the category's text, `other` when the locale has none for it, the number written in the locale. */
|
|
29
|
+
export function plural(forms, count, locale) {
|
|
30
|
+
const text = forms[new Intl.PluralRules(locale).select(count)] ?? forms["other"] ?? "";
|
|
31
|
+
return text.replaceAll("#", new Intl.NumberFormat(locale).format(count));
|
|
32
|
+
}
|
|
33
|
+
const combiningMarks = /\p{M}+/gu;
|
|
34
|
+
const apostrophes = /[’ʼ]/g;
|
|
35
|
+
// The trailing run starts right after a letter or digit: retrying inside the run would make the runtime quadratic.
|
|
36
|
+
const edges = /^[^\p{L}\p{N}]+|(?<![^\p{L}\p{N}])[^\p{L}\p{N}]+$/gu;
|
|
37
|
+
/**
|
|
38
|
+
* The form a query is compared on, the same the language packs give to the indexed text: case
|
|
39
|
+
* and accents folded, typographic apostrophes unified, whitespace collapsed.
|
|
40
|
+
*/
|
|
41
|
+
export function normalizeQuery(text) {
|
|
42
|
+
return text
|
|
43
|
+
.normalize("NFD")
|
|
44
|
+
.replace(combiningMarks, "")
|
|
45
|
+
.toLowerCase()
|
|
46
|
+
.replace(apostrophes, "'")
|
|
47
|
+
.replace(/\s+/g, " ")
|
|
48
|
+
.trim();
|
|
49
|
+
}
|
|
50
|
+
/** Punctuation trimmed at both ends of a word; the inside stays so that a hyphenated word is one token. */
|
|
51
|
+
export function trimEdges(word) {
|
|
52
|
+
return word.replace(edges, "");
|
|
53
|
+
}
|
|
54
|
+
/** The words of a query that are looked up, in order, without repetition; a word too short for a shard is dropped. */
|
|
55
|
+
export function queryWords(query) {
|
|
56
|
+
const words = [];
|
|
57
|
+
for (const raw of normalizeQuery(query).split(" ")) {
|
|
58
|
+
const word = trimEdges(raw);
|
|
59
|
+
if (word.length >= SHARD_PREFIX_LENGTH && !words.includes(word)) {
|
|
60
|
+
words.push(word);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return words;
|
|
64
|
+
}
|
|
65
|
+
/** The shard a token belongs to: its first characters. */
|
|
66
|
+
export function shardOf(token) {
|
|
67
|
+
return Array.from(token).slice(0, SHARD_PREFIX_LENGTH).join("");
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* File name of a shard or of the entity table under `search/`, without extension: letters and
|
|
71
|
+
* digits stay, any other character becomes `_` and its code point, so that the name is safe on
|
|
72
|
+
* every file system and in a URL.
|
|
73
|
+
*/
|
|
74
|
+
export function shardFile(name) {
|
|
75
|
+
return Array.from(name)
|
|
76
|
+
.map((character) => /[a-z0-9]/.test(character)
|
|
77
|
+
? character
|
|
78
|
+
: // A character spread from a string always has a code point.
|
|
79
|
+
`_${character.codePointAt(0).toString(16).padStart(4, "0")}`)
|
|
80
|
+
.join("");
|
|
81
|
+
}
|
|
82
|
+
/** The href of an index file from a page, given the href of the `search/` folder from that page. */
|
|
83
|
+
export function shardHref(index, name) {
|
|
84
|
+
return `${index}${shardFile(name)}.js`;
|
|
85
|
+
}
|
|
86
|
+
/** The text of a shard file: a classic script calling the global back, so that it loads over `file://` as behind a server. */
|
|
87
|
+
export function shardScript(name, json) {
|
|
88
|
+
return `window.${SEARCH_GLOBAL}.shard(${JSON.stringify(name)},${json});\n`;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* The entities matching every word of the query as a prefix of one of their tokens, best first:
|
|
92
|
+
* each word counts the heaviest token it prefixes, the score is their sum, and ties go to the
|
|
93
|
+
* most cited, then keep the table order, except that a keyword page, when `keyword` names it,
|
|
94
|
+
* never comes before an entity of the same score. The shards given are those of the words; a
|
|
95
|
+
* word without a shard matches nothing.
|
|
96
|
+
*/
|
|
97
|
+
/** The heaviest token of every entity that the word prefixes, from the shard of the word. */
|
|
98
|
+
function bestWeights(word, shards) {
|
|
99
|
+
const best = new Map();
|
|
100
|
+
const shard = shards.get(shardOf(word)) ?? {};
|
|
101
|
+
for (const [token, pairs] of Object.entries(shard)) {
|
|
102
|
+
if (!token.startsWith(word))
|
|
103
|
+
continue;
|
|
104
|
+
for (const [entity, weight] of pairs) {
|
|
105
|
+
best.set(entity, Math.max(best.get(entity) ?? 0, weight));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return best;
|
|
109
|
+
}
|
|
110
|
+
export function rank(words, shards, order = {}) {
|
|
111
|
+
const keyword = order.keyword ?? (() => false);
|
|
112
|
+
const cited = order.cited ?? (() => 0);
|
|
113
|
+
let scores;
|
|
114
|
+
for (const word of words) {
|
|
115
|
+
const best = bestWeights(word, shards);
|
|
116
|
+
if (scores === undefined) {
|
|
117
|
+
scores = best;
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const kept = new Map();
|
|
121
|
+
for (const [entity, score] of scores) {
|
|
122
|
+
const weight = best.get(entity);
|
|
123
|
+
if (weight !== undefined)
|
|
124
|
+
kept.set(entity, score + weight);
|
|
125
|
+
}
|
|
126
|
+
scores = kept;
|
|
127
|
+
}
|
|
128
|
+
return [...(scores ?? new Map())]
|
|
129
|
+
.map(([entity, score]) => ({ entity, score }))
|
|
130
|
+
.sort((a, b) => b.score - a.score ||
|
|
131
|
+
Number(keyword(a.entity)) - Number(keyword(b.entity)) ||
|
|
132
|
+
cited(b.entity) - cited(a.entity) ||
|
|
133
|
+
a.entity - b.entity);
|
|
134
|
+
}
|
|
135
|
+
/** The forms of an entry the dictionary knows: its title, then its aliases. */
|
|
136
|
+
function formsOf(entry) {
|
|
137
|
+
return [entry.title, ...(entry.aliases ?? [])];
|
|
138
|
+
}
|
|
139
|
+
function commonPrefixLength(a, b) {
|
|
140
|
+
let length = 0;
|
|
141
|
+
while (length < a.length && length < b.length && a[length] === b[length])
|
|
142
|
+
length += 1;
|
|
143
|
+
return length;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* The form of the dictionary closest to a query that matched nothing: the title or alias sharing
|
|
147
|
+
* the longest prefix with the query, at least a shard's worth of it; the shortest form among
|
|
148
|
+
* equals, so that a word beats the expressions starting with it, then the earliest in the table;
|
|
149
|
+
* none when no form shares that much.
|
|
150
|
+
*/
|
|
151
|
+
export function closestForm(query, entries) {
|
|
152
|
+
const wanted = normalizeQuery(query);
|
|
153
|
+
let best;
|
|
154
|
+
let longest = SHARD_PREFIX_LENGTH - 1;
|
|
155
|
+
for (const [entity, entry] of entries.entries()) {
|
|
156
|
+
for (const form of formsOf(entry)) {
|
|
157
|
+
const length = commonPrefixLength(wanted, normalizeQuery(form));
|
|
158
|
+
if (length > longest || (length === longest && form.length < (best?.form.length ?? 0))) {
|
|
159
|
+
longest = length;
|
|
160
|
+
best = { entity, form };
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return best;
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/search/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The state of a search as the address of the results page carries it: `?q=…` for the query,
|
|
3
|
+
* then one parameter per facet with its selected values separated by commas, `type=term,screen`.
|
|
4
|
+
* Nothing here reaches Node either: the island parses and writes the addresses.
|
|
5
|
+
*/
|
|
6
|
+
import { type FacetName, type NotelessFilter } from "./shared.js";
|
|
7
|
+
export interface SearchState {
|
|
8
|
+
query: string;
|
|
9
|
+
/** The selected values of every facet, in code-unit order; an empty list leaves the facet open. */
|
|
10
|
+
filters: Record<FacetName, string[]>;
|
|
11
|
+
/** What is done with the keyword pages; `any` keeps them among the results and is the default. */
|
|
12
|
+
noteless: NotelessFilter;
|
|
13
|
+
}
|
|
14
|
+
/** The parameter of the query in the address. */
|
|
15
|
+
export declare const QUERY_PARAMETER = "q";
|
|
16
|
+
export declare function emptyState(): SearchState;
|
|
17
|
+
/** The state an address carries; a parameter absent or empty leaves its part of the state empty. */
|
|
18
|
+
export declare function parseSearchState(search: string): SearchState;
|
|
19
|
+
/** The query string of a state, `?q=…&type=…`, parameters in a fixed order; empty for the empty state. */
|
|
20
|
+
export declare function searchQueryString(state: SearchState): string;
|
|
21
|
+
export declare function hasFilters(state: SearchState): boolean;
|
|
22
|
+
export declare function isSelected(state: SearchState, name: FacetName, value: string): boolean;
|
|
23
|
+
/** The state with a facet value selected when it is not, lifted when it is; the rest untouched. */
|
|
24
|
+
export declare function toggleValue(state: SearchState, name: FacetName, value: string): SearchState;
|
|
25
|
+
/** The state with the no-note facet on a value, or back to `any` when that value is the current one. */
|
|
26
|
+
export declare function toggleNoteless(state: SearchState, value: NotelessFilter): SearchState;
|
|
27
|
+
/** The state with every facet open again, the query kept. */
|
|
28
|
+
export declare function clearFilters(state: SearchState): SearchState;
|
|
29
|
+
export declare function withQuery(state: SearchState, query: string): SearchState;
|
|
30
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/search/state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,mGAAmG;IACnG,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IACrC,kGAAkG;IAClG,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,iDAAiD;AACjD,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,wBAAgB,UAAU,IAAI,WAAW,CAMxC;AAaD,oGAAoG;AACpG,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAU5D;AAOD,0GAA0G;AAC1G,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAS5D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAEtD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtF;AAED,mGAAmG;AACnG,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAK3F;AAED,wGAAwG;AACxG,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,GAAG,WAAW,CAErF;AAED,6DAA6D;AAC7D,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAE5D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAExE"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The state of a search as the address of the results page carries it: `?q=…` for the query,
|
|
3
|
+
* then one parameter per facet with its selected values separated by commas, `type=term,screen`.
|
|
4
|
+
* Nothing here reaches Node either: the island parses and writes the addresses.
|
|
5
|
+
*/
|
|
6
|
+
import { byCodeUnit } from "../order.js";
|
|
7
|
+
import { FACET_NAMES, NOTELESS_FACET, NOTELESS_FILTERS, } from "./shared.js";
|
|
8
|
+
/** The parameter of the query in the address. */
|
|
9
|
+
export const QUERY_PARAMETER = "q";
|
|
10
|
+
export function emptyState() {
|
|
11
|
+
return {
|
|
12
|
+
query: "",
|
|
13
|
+
filters: { type: [], source: [], domain: [], application: [] },
|
|
14
|
+
noteless: "any",
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function isNotelessFilter(value) {
|
|
18
|
+
// Widened so that any string can be looked up; the guard narrows it back.
|
|
19
|
+
return NOTELESS_FILTERS.includes(value);
|
|
20
|
+
}
|
|
21
|
+
/** The values of a facet parameter: split on commas, blanks dropped, once each, in code-unit order. */
|
|
22
|
+
function valuesOf(parameter) {
|
|
23
|
+
if (parameter === null)
|
|
24
|
+
return [];
|
|
25
|
+
return [...new Set(parameter.split(",").filter((value) => value !== ""))].sort(byCodeUnit);
|
|
26
|
+
}
|
|
27
|
+
/** The state an address carries; a parameter absent or empty leaves its part of the state empty. */
|
|
28
|
+
export function parseSearchState(search) {
|
|
29
|
+
const parameters = new URLSearchParams(search);
|
|
30
|
+
const state = emptyState();
|
|
31
|
+
state.query = parameters.get(QUERY_PARAMETER) ?? "";
|
|
32
|
+
for (const name of FACET_NAMES) {
|
|
33
|
+
state.filters[name] = valuesOf(parameters.get(name));
|
|
34
|
+
}
|
|
35
|
+
const noteless = parameters.get(NOTELESS_FACET) ?? "any";
|
|
36
|
+
if (isNotelessFilter(noteless))
|
|
37
|
+
state.noteless = noteless;
|
|
38
|
+
return state;
|
|
39
|
+
}
|
|
40
|
+
/** A parameter value as the address shows it: readable, a space as `+`, a comma kept between the values of a facet. */
|
|
41
|
+
function encode(value) {
|
|
42
|
+
return encodeURIComponent(value).replaceAll("%20", "+").replaceAll("%2C", ",");
|
|
43
|
+
}
|
|
44
|
+
/** The query string of a state, `?q=…&type=…`, parameters in a fixed order; empty for the empty state. */
|
|
45
|
+
export function searchQueryString(state) {
|
|
46
|
+
const parts = [];
|
|
47
|
+
if (state.query !== "")
|
|
48
|
+
parts.push(`${QUERY_PARAMETER}=${encode(state.query)}`);
|
|
49
|
+
for (const name of FACET_NAMES) {
|
|
50
|
+
const values = state.filters[name];
|
|
51
|
+
if (values.length > 0)
|
|
52
|
+
parts.push(`${name}=${values.map(encode).join(",")}`);
|
|
53
|
+
}
|
|
54
|
+
if (state.noteless !== "any")
|
|
55
|
+
parts.push(`${NOTELESS_FACET}=${state.noteless}`);
|
|
56
|
+
return parts.length === 0 ? "" : `?${parts.join("&")}`;
|
|
57
|
+
}
|
|
58
|
+
export function hasFilters(state) {
|
|
59
|
+
return state.noteless !== "any" || FACET_NAMES.some((name) => state.filters[name].length > 0);
|
|
60
|
+
}
|
|
61
|
+
export function isSelected(state, name, value) {
|
|
62
|
+
return state.filters[name].includes(value);
|
|
63
|
+
}
|
|
64
|
+
/** The state with a facet value selected when it is not, lifted when it is; the rest untouched. */
|
|
65
|
+
export function toggleValue(state, name, value) {
|
|
66
|
+
const values = isSelected(state, name, value)
|
|
67
|
+
? state.filters[name].filter((selected) => selected !== value)
|
|
68
|
+
: [...state.filters[name], value].sort(byCodeUnit);
|
|
69
|
+
return { ...state, filters: { ...state.filters, [name]: values } };
|
|
70
|
+
}
|
|
71
|
+
/** The state with the no-note facet on a value, or back to `any` when that value is the current one. */
|
|
72
|
+
export function toggleNoteless(state, value) {
|
|
73
|
+
return { ...state, noteless: state.noteless === value ? "any" : value };
|
|
74
|
+
}
|
|
75
|
+
/** The state with every facet open again, the query kept. */
|
|
76
|
+
export function clearFilters(state) {
|
|
77
|
+
return { ...emptyState(), query: state.query };
|
|
78
|
+
}
|
|
79
|
+
export function withQuery(state, query) {
|
|
80
|
+
return { ...state, query };
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/search/state.ts"],"names":[],"mappings":"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"}
|