@hiai-gg/docsmint 0.7.4 → 0.7.6
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/README.md +2 -2
- package/dist/backend/index.js +130026 -129609
- package/dist/backend-account-runtime-cleanup.js +2 -0
- package/dist/backend-api-key-facade.js +2 -0
- package/dist/backend-pipeline-cancellation.js +2 -0
- package/dist/frontend/CategoryDialog-D_xFSWGh.js +630 -0
- package/dist/frontend/ConfirmDialog-Cfq3D2Di.js +221 -0
- package/dist/frontend/{CreateSnapshotDialog-CojnWChs.js → CreateSnapshotDialog-BHODxZWK.js} +53 -52
- package/dist/frontend/{DatePicker-7FAbIOGg.js → DatePicker-CZyCnQ1q.js} +62 -64
- package/dist/frontend/{DeleteDialog-BIlqRb1u.js → DeleteDialog-DaJOO6SB.js} +17 -17
- package/dist/frontend/FolderNode-C_91NlEO.js +307 -0
- package/dist/frontend/{FolderTreeSelector-BMB1MS9N.js → FolderTreeSelector-DqO-f0nt.js} +7 -7
- package/dist/frontend/HiAiEditor-DtUGbQg6.js +3160 -0
- package/dist/frontend/{HiaiDocsExtensionProvider-OSn96BBw.js → HiaiDocsExtensionProvider-Cc3yzW5I.js} +5 -3
- package/dist/frontend/{Icon-Db-o32_E.js → Icon-y7xxAIC6.js} +1 -1
- package/dist/frontend/{SettingsDialog-DatuxOVX.js → SettingsDialog-BlIZqk2-.js} +169 -158
- package/dist/frontend/ShareDialog-CmX-VoJ9.js +273 -0
- package/dist/frontend/Sidebar-BVGm5BRR.js +2147 -0
- package/dist/frontend/{TagCreateDialog-Ch21yuWV.js → TagCreateDialog-BlGz4O9Z.js} +45 -36
- package/dist/frontend/action_cancel-Cuxsznzz.js +5 -0
- package/dist/frontend/action_close-BJm_52wm.js +5 -0
- package/dist/frontend/action_create-CtBQrRuj.js +5 -0
- package/dist/frontend/action_delete-BXBIzvn0.js +5 -0
- package/dist/frontend/action_go_to-VmK5jmEk.js +5 -0
- package/dist/frontend/action_loading-BLCGJVA9.js +5 -0
- package/dist/frontend/action_save-BRN2Z_GP.js +5 -0
- package/dist/frontend/api/attachments.js +1 -1
- package/dist/frontend/api/categories.js +1 -1
- package/dist/frontend/api/folders.js +1 -1
- package/dist/frontend/api/settings.js +1 -1
- package/dist/frontend/api/share.js +1 -1
- package/dist/frontend/api/tags.js +1 -1
- package/dist/frontend/app-shell.js +8 -8
- package/dist/frontend/{attachments-B2aH3hXF.js → attachments-C225gTA7.js} +2 -2
- package/dist/frontend/{auth-client-CnDZwPfp.js → auth-client-DCMne8vd.js} +630 -615
- package/dist/frontend/{bundle-mjs-DllmqUxV.js → bundle-mjs-CZ3g1Uzr.js} +35 -42
- package/dist/frontend/{camera-CzCxBOpc.js → camera-BI-BtnIm.js} +2 -2
- package/dist/frontend/{categories-X7gK8azc.js → categories-Bjcc41We.js} +1 -1
- package/dist/frontend/categories_update_error-4aSI8PTr.js +5 -0
- package/dist/frontend/{check-BIi-Ghti.js → check-sdTlLwi9.js} +2 -2
- package/dist/frontend/{chevron-down-C2ft7XUV.js → chevron-down-DlBnIE7Y.js} +2 -2
- package/dist/frontend/{circle-check-BrqfiQH1.js → circle-check-hWC-HeKu.js} +2 -2
- package/dist/frontend/{clock-Dz86E4Kz.js → clock-C4FHq-9q.js} +2 -2
- package/dist/frontend/collaboration.js +208 -103
- package/dist/frontend/components/category-dialog.js +1 -1
- package/dist/frontend/components/create-snapshot-dialog.js +1 -1
- package/dist/frontend/components/delete-dialog.js +1 -1
- package/dist/frontend/components/editor/compact-editor.js +1 -1
- package/dist/frontend/components/editor/document-editor.js +1 -1
- package/dist/frontend/components/editor/document-title.js +3 -2
- package/dist/frontend/components/editor/docx-serializer.js +140 -125
- package/dist/frontend/components/editor/extensions.js +1 -1
- package/dist/frontend/components/editor/markdown-toggle.js +9 -9
- package/dist/frontend/components/editor/markdown.js +1 -1
- package/dist/frontend/components/folder-node.js +1 -1
- package/dist/frontend/components/folder-tree-selector.js +1 -1
- package/dist/frontend/components/save-as-dialog.js +34 -25
- package/dist/frontend/components/settings.js +1 -1
- package/dist/frontend/components/share-dialog.js +1 -1
- package/dist/frontend/components/sidebar.js +1 -1
- package/dist/frontend/components/tag-create-dialog.js +1 -1
- package/dist/frontend/components/version-history.js +181 -176
- package/dist/frontend/{confirm-dialog-8T6vsWL7.js → confirm-dialog-BFTxjLv-.js} +46 -37
- package/dist/frontend/{copy-CvCh4ZVt.js → copy-4H99lwAQ.js} +2 -2
- package/dist/frontend/dashboard.js +462 -456
- package/dist/frontend/{db-Bo1t_76T.js → db-CbFRFAm2.js} +40 -38
- package/dist/frontend/{dialog-CiSwD-_v.js → dialog-tHAH3-9M.js} +10 -10
- package/dist/frontend/dist-Cg1BpNS7.js +2262 -0
- package/dist/frontend/dndzone-BrakBHwm.js +1375 -0
- package/dist/frontend/doc_title_label-DS9jSIh2.js +5 -0
- package/dist/frontend/doc_title_placeholder-DBQpM1aH.js +5 -0
- package/dist/frontend/{document-drop-coordinator-C4xHMjwC.js → document-drop-coordinator-Da7HcXgv.js} +1 -1
- package/dist/frontend/document-drop-coordinator.js +1 -1
- package/dist/frontend/{dropdown-menu-Bi5Iipwf.js → dropdown-menu-AJYeFPHu.js} +145 -145
- package/dist/frontend/{editor-content-sanitizer-CC_A8aaI.js → editor-content-sanitizer-CWjqiz0T.js} +30 -30
- package/dist/frontend/{editorExtensions--HusV819.js → editorExtensions-B-mKiWqq.js} +5085 -6220
- package/dist/frontend/editor_markdown_placeholder-BIWDUF1E.js +5 -0
- package/dist/frontend/error_dismiss-Dx_JbRjs.js +5 -0
- package/dist/frontend/error_generic-CzNtmBT4.js +5 -0
- package/dist/frontend/extension.js +1 -1
- package/dist/frontend/{folder-Cx60MRpi.js → folder-BAX6qBYy.js} +3 -3
- package/dist/frontend/{folders-ONG03Dkv.js → folders-CC0UWkZH.js} +3 -3
- package/dist/frontend/folders_rename-BJo4Gipq.js +5 -0
- package/dist/frontend/i18n.js +1007 -6
- package/dist/frontend/{identity-Ynrglr5i.js → identity-O4lAuchv.js} +2 -2
- package/dist/frontend/{input-N9dNSOWF.js → input-CrlYAH2S.js} +2 -2
- package/dist/frontend/{label-CK72_fw8.js → label-B0syEfns.js} +2 -2
- package/dist/frontend/{markdown-H6QB53zu.js → markdown-CMij27Gg.js} +1 -1
- package/dist/frontend/offline/identity.js +1 -1
- package/dist/frontend/{floating-layer-anchor-BGIndLY-.js → popper-layer-force-mount-BAYjg6Pp.js} +2476 -2564
- package/dist/frontend/{rolldown-runtime-CWhphoD1.js → rolldown-runtime-DArdT4gl.js} +2 -2
- package/dist/frontend/{rotate-ccw-ta4NosZ0.js → rotate-ccw-DtZDfSK3.js} +2 -2
- package/dist/frontend/runtime-CwWSo6c9.js +128 -0
- package/dist/frontend/{schemas-DwtKylCJ.js → schemas-CdPhcuru.js} +6 -7
- package/dist/frontend/scroll_to_top_aria-CvkNF_Hu.js +5 -0
- package/dist/frontend/search.js +237 -265
- package/dist/frontend/search_title-DOC0cPlQ.js +5 -0
- package/dist/frontend/{select-value-BD1DToYs.js → select-value-D9VqY5n5.js} +575 -572
- package/dist/frontend/{settings-BR48ihB4.js → settings-DJW8JkdF.js} +1 -1
- package/dist/frontend/{share-D7JtkC85.js → share-D5yo0JOh.js} +2 -1
- package/dist/frontend/share_copied-DPxVzfWh.js +5 -0
- package/dist/frontend/share_toggle_password-DdxfIjj1.js +5 -0
- package/dist/frontend/shared-document.js +1 -1
- package/dist/frontend/sidebar_uncategorized-qJ2_Aonf.js +5 -0
- package/dist/frontend/sort_relevance-DwYX5MO9.js +5 -0
- package/dist/frontend/{tag-DhVFHMcV.js → tag-ChpMfbfa.js} +3 -3
- package/dist/frontend/{tags-BdCaMGfj.js → tags-CzPNUoFw.js} +1 -1
- package/dist/frontend/tags_load_error-BKjA1pI0.js +5 -0
- package/dist/frontend/tags_new-BiNAJ9Bx.js +5 -0
- package/dist/frontend/{textarea-pl_fDBre.js → textarea-l_gRXsrH.js} +2 -2
- package/dist/frontend/theme.js +1 -1
- package/dist/frontend/{theme.svelte-DG3RS7wv.js → theme.svelte-Bzitjfh9.js} +2 -2
- package/dist/frontend/theme_system-BBNUhYKh.js +5 -0
- package/dist/frontend/utils/dndzone.js +1 -1
- package/dist/frontend/utils-B4LKx7VS.js +7 -0
- package/dist/frontend/{utils-DrfHTcei.js → utils-BovMJHdA.js} +2 -2
- package/dist/frontend/utils.js +1 -1
- package/dist/frontend/version_create_snapshot-3bu-0qzH.js +5 -0
- package/dist/frontend/version_restored_from-dVRN3Zdk.js +5 -0
- package/dist/frontend/version_snapshot_label_placeholder-DrMikux0.js +5 -0
- package/dist/frontend/weekday_we-C5H_M-df.js +5 -0
- package/dist/frontend/{x-cfdlccjs.js → x-B2ifxSH7.js} +2 -2
- package/dist/frontend/{awareness-snQ3RD9f.js → yjs-VUcKqaKW.js} +835 -944
- package/dist/frontend-ssr/api/attachments.js +92 -1
- package/dist/frontend-ssr/api/categories.js +1 -1
- package/dist/frontend-ssr/api/documents.js +1 -1
- package/dist/frontend-ssr/api/folders.js +1 -1
- package/dist/frontend-ssr/api/settings.js +1 -1
- package/dist/frontend-ssr/api/share.js +30 -1
- package/dist/frontend-ssr/api/tags.js +1 -1
- package/dist/frontend-ssr/app-shell.js +25 -18
- package/dist/frontend-ssr/assets/{CategoryDialog-DsXe54EF.js → CategoryDialog-C41IBNWG.js} +26 -35
- package/dist/frontend-ssr/assets/ConfirmDialog-CWO0HBaS.js +424 -0
- package/dist/frontend-ssr/assets/{CreateSnapshotDialog-D3-PjXVr.js → CreateSnapshotDialog-CECCRK0d.js} +12 -18
- package/dist/frontend-ssr/assets/{DatePicker-C9suIA1S.js → DatePicker-TZVeMZ2S.js} +32 -20
- package/dist/frontend-ssr/assets/{DeleteDialog-DxtMrS1O.js → DeleteDialog-BVnmzR2e.js} +5 -7
- package/dist/frontend-ssr/assets/{FolderNode-ChD10Elp.js → FolderNode-CClgk8BL.js} +7 -7
- package/dist/frontend-ssr/assets/{FolderTreeSelector-Bxi8EqMm.js → FolderTreeSelector-DnrKCYtl.js} +17 -20
- package/dist/frontend-ssr/assets/{HiAiEditor-2X3Uyg1B.js → HiAiEditor-_-m7MJDd.js} +330 -254
- package/dist/frontend-ssr/assets/{Icon-QwirKi9Y.js → Icon-Clqe8D8X.js} +28 -16
- package/dist/frontend-ssr/assets/{SettingsDialog-DDy0hN8x.js → SettingsDialog-BdvHRAxF.js} +45 -49
- package/dist/frontend-ssr/assets/{ShareDialog-BwW_wF4G.js → ShareDialog-DHPbSHZg.js} +5 -6
- package/dist/frontend-ssr/assets/{Sidebar-Dy-5gXOf.js → Sidebar-B3Saqn0O.js} +90 -93
- package/dist/frontend-ssr/assets/{TagCreateDialog-BPzgOaX8.js → TagCreateDialog-CPg-nG0D.js} +14 -14
- package/dist/frontend-ssr/assets/action_cancel-OVgQDP5Q.js +22 -0
- package/dist/frontend-ssr/assets/action_close-DagDyMXk.js +22 -0
- package/dist/frontend-ssr/assets/action_create-hqJWjyqh.js +22 -0
- package/dist/frontend-ssr/assets/action_delete-B1-16jSo.js +22 -0
- package/dist/frontend-ssr/assets/action_go_to-DQScgw7P.js +22 -0
- package/dist/frontend-ssr/assets/action_save-Bx7vlLZI.js +22 -0
- package/dist/frontend-ssr/assets/{api-keys-DIbclwj5.js → api-keys-CHOrbU-Q.js} +1 -1
- package/dist/frontend-ssr/assets/{auth-client-CojKIzqy.js → auth-client-DzkZlSQ8.js} +295 -261
- package/dist/frontend-ssr/assets/{camera-D6s20LDi.js → camera-Dwwtgvfn.js} +10 -6
- package/dist/frontend-ssr/assets/{categories-av9xjeg5.js → categories-C_dxFoHi.js} +1 -1
- package/dist/frontend-ssr/assets/categories_update_error-DkKgsqdD.js +202 -0
- package/dist/frontend-ssr/assets/{chevron-down-CvqKATjM.js → chevron-down-C6BTPJFz.js} +10 -6
- package/dist/frontend-ssr/assets/{chevron-right-DKD7WXjz.js → chevron-right-CseGE1qd.js} +10 -6
- package/dist/frontend-ssr/assets/{circle-check-CPS9dKEo.js → circle-check-BRhWPZo1.js} +10 -6
- package/dist/frontend-ssr/assets/{client-DZMkDkDn.js → client-rfwQYYHY.js} +4 -2
- package/dist/frontend-ssr/assets/{clock-CzsE58TH.js → clock-DpP_Y7WP.js} +10 -6
- package/dist/frontend-ssr/assets/{confirm-dialog-wYC07DPx.js → confirm-dialog-DeOR0SnQ.js} +44 -31
- package/dist/frontend-ssr/assets/{copy-DkkCPkBL.js → copy-DRMKiRZ0.js} +10 -6
- package/dist/frontend-ssr/assets/{db-BhwJPEkn.js → db-CUkQe9AU.js} +1 -1
- package/dist/frontend-ssr/assets/{dialog-ClcuF7nD.js → dialog--tDgDGw9.js} +12 -15
- package/dist/frontend-ssr/assets/{dndzone-DMvTO_Jz.js → dndzone-WtNaDxoQ.js} +309 -77
- package/dist/frontend-ssr/assets/doc_title_label-Ev_ltlh3.js +22 -0
- package/dist/frontend-ssr/assets/doc_title_placeholder-DSHpUb7w.js +22 -0
- package/dist/frontend-ssr/assets/{documents-CZ-wQohy.js → documents-CEuA1V6N.js} +1 -1
- package/dist/frontend-ssr/assets/{dropdown-menu-BKMGVNLL.js → dropdown-menu-CdEpn_LT.js} +74 -75
- package/dist/frontend-ssr/assets/editor_markdown_placeholder-BpezdkOr.js +42 -0
- package/dist/frontend-ssr/assets/editor_toolbar_undo-CKJAOqv2.js +562 -0
- package/dist/frontend-ssr/assets/error_generic-DTK0kwxT.js +42 -0
- package/dist/frontend-ssr/assets/{folder-DYIE-XPP.js → folder-DszunwKc.js} +10 -6
- package/dist/frontend-ssr/assets/{folders-BX30gHv6.js → folders-BOXeb9hz.js} +3 -2
- package/dist/frontend-ssr/assets/folders_rename-DvciOb6K.js +122 -0
- package/dist/frontend-ssr/assets/{identity-DcMMBKWg.js → identity-veXobEfE.js} +2 -2
- package/dist/frontend-ssr/assets/{input-DcDR8L8M.js → input-BlAj7LzC.js} +2 -2
- package/dist/frontend-ssr/assets/{label-Cz0_svJx.js → label-BRToaMg9.js} +2 -2
- package/dist/frontend-ssr/assets/{loader-circle-CIEWGyfP.js → loader-circle-BpRVrMZg.js} +10 -6
- package/dist/frontend-ssr/assets/{floating-layer-anchor-BoiiIEiK.js → popper-layer-force-mount-Djnq7l7a.js} +3684 -3674
- package/dist/frontend-ssr/assets/{rotate-ccw-dJSqPyTd.js → rotate-ccw-1GOD_yt_.js} +10 -6
- package/dist/frontend-ssr/assets/runtime-O78RzRqx.js +559 -0
- package/dist/frontend-ssr/assets/scroll_to_top_aria-BN4ZfOnM.js +22 -0
- package/dist/frontend-ssr/assets/search_title-CKUsQDT0.js +22 -0
- package/dist/frontend-ssr/assets/search_toggle_filters-hS9rvQhC.js +282 -0
- package/dist/frontend-ssr/assets/{select-value-CaDktvDW.js → select-value-BCWSsoTd.js} +204 -218
- package/dist/frontend-ssr/assets/{settings-Mp8EuFSn.js → settings-DwAcLGM1.js} +2 -2
- package/dist/frontend-ssr/assets/share_copied-BxU9rjXG.js +602 -0
- package/dist/frontend-ssr/assets/share_toggle_password-C6OmroqR.js +202 -0
- package/dist/frontend-ssr/assets/sidebar_uncategorized-Dx-LTd5w.js +102 -0
- package/dist/frontend-ssr/assets/{tag-BmiVU_Ej.js → tag-DFh6nF9R.js} +19 -11
- package/dist/frontend-ssr/assets/{tag-store.svelte-BM1lUI_P.js → tag-store.svelte-QRysvGKe.js} +1 -1
- package/dist/frontend-ssr/assets/{tags-BQsI_6OW.js → tags-BBCoFYro.js} +1 -1
- package/dist/frontend-ssr/assets/tags_load_error-CPrc6Gzs.js +362 -0
- package/dist/frontend-ssr/assets/tags_new-VmMr9v2V.js +62 -0
- package/dist/frontend-ssr/assets/{textarea-BGrjPOgU.js → textarea-BuszTo9i.js} +2 -2
- package/dist/frontend-ssr/assets/{theme.svelte-CN3BUhJG.js → theme.svelte-shZrSxz8.js} +1 -1
- package/dist/frontend-ssr/assets/theme_system-BucaNntV.js +362 -0
- package/dist/frontend-ssr/assets/{utils-Cg_R05dR.js → utils-BK35BJKQ.js} +1 -1
- package/dist/frontend-ssr/assets/version_create_snapshot-COHzwjle.js +22 -0
- package/dist/frontend-ssr/assets/version_restored_from-CertjFDl.js +242 -0
- package/dist/frontend-ssr/assets/version_snapshot_label_placeholder-Cy_rMCij.js +222 -0
- package/dist/frontend-ssr/assets/weekday_we-DrI3U230.js +422 -0
- package/dist/frontend-ssr/components/category-dialog.js +1 -1
- package/dist/frontend-ssr/components/create-snapshot-dialog.js +1 -1
- package/dist/frontend-ssr/components/delete-dialog.js +1 -1
- package/dist/frontend-ssr/components/editor/compact-editor.js +1 -1
- package/dist/frontend-ssr/components/editor/document-editor.js +1 -1
- package/dist/frontend-ssr/components/editor/document-title.js +2 -1
- package/dist/frontend-ssr/components/editor/markdown-toggle.js +2 -2
- package/dist/frontend-ssr/components/folder-node.js +1 -1
- package/dist/frontend-ssr/components/folder-tree-selector.js +1 -1
- package/dist/frontend-ssr/components/save-as-dialog.js +12 -14
- package/dist/frontend-ssr/components/settings.js +1 -1
- package/dist/frontend-ssr/components/share-dialog.js +1 -1
- package/dist/frontend-ssr/components/sidebar.js +1 -1
- package/dist/frontend-ssr/components/tag-create-dialog.js +1 -1
- package/dist/frontend-ssr/components/version-history.js +47 -51
- package/dist/frontend-ssr/dashboard.js +243 -232
- package/dist/frontend-ssr/i18n.js +6698 -1
- package/dist/frontend-ssr/offline/identity.js +1 -1
- package/dist/frontend-ssr/search.js +28 -31
- package/dist/frontend-ssr/shared-document.js +1 -2
- package/dist/frontend-ssr/theme.js +1 -1
- package/dist/frontend-ssr/utils/dndzone.js +1 -1
- package/dist/lifecycle-runtime.js +4437 -2019
- package/dist/mcp-cli.js +1 -1
- package/dist/mcp-server.js +1 -1
- package/package.json +7 -7
- package/packages/cli/src/index.ts +1 -1
- package/packages/db/src/schema.ts +2 -0
- package/server.json +2 -2
- package/dist/frontend/CategoryDialog-bQKMpVFD.js +0 -631
- package/dist/frontend/ConfirmDialog-DF7kgkyq.js +0 -139
- package/dist/frontend/FolderNode-Cf443LBa.js +0 -298
- package/dist/frontend/HiAiEditor-CMZ-eL8s.js +0 -2992
- package/dist/frontend/ShareDialog-Bwz2y3Le.js +0 -281
- package/dist/frontend/Sidebar-C_t5RrOJ.js +0 -2101
- package/dist/frontend/dist-DQa_OHOa.js +0 -268
- package/dist/frontend/dndzone-BzsOINtP.js +0 -1199
- package/dist/frontend/messages-DTRe4U2V.js +0 -1093
- package/dist/frontend/utils-CMQRlxbx.js +0 -7
- package/dist/frontend-ssr/assets/ConfirmDialog-DrH653ua.js +0 -136
- package/dist/frontend-ssr/assets/attachments-BdkOp8ha.js +0 -93
- package/dist/frontend-ssr/assets/messages-B1TjVIH8.js +0 -11147
- package/dist/frontend-ssr/assets/share-qTqvd6Lu.js +0 -30
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { t as Icon } from "./Icon-
|
|
1
|
+
import { t as Icon } from "./Icon-Clqe8D8X.js";
|
|
2
2
|
import * as $ from "svelte/internal/server";
|
|
3
|
-
//#region ../node_modules/.bun/lucide-svelte@0.
|
|
3
|
+
//#region ../node_modules/.bun/lucide-svelte@1.0.1+7a2629d9b18e82d0/node_modules/lucide-svelte/dist/icons/rotate-ccw.svelte
|
|
4
4
|
function Rotate_ccw($$renderer, $$props) {
|
|
5
5
|
const $$sanitized_props = $.sanitize_props($$props);
|
|
6
6
|
/**
|
|
7
|
-
* @license lucide-svelte
|
|
7
|
+
* @license lucide-svelte v1.0.1 - ISC
|
|
8
8
|
*
|
|
9
9
|
* ISC License
|
|
10
10
|
*
|
|
11
|
-
* Copyright (c)
|
|
11
|
+
* Copyright (c) 2026 Lucide Icons and Contributors
|
|
12
12
|
*
|
|
13
13
|
* Permission to use, copy, modify, and/or distribute this software for any
|
|
14
14
|
* purpose with or without fee is hereby granted, provided that the above
|
|
@@ -24,9 +24,13 @@ function Rotate_ccw($$renderer, $$props) {
|
|
|
24
24
|
*
|
|
25
25
|
* ---
|
|
26
26
|
*
|
|
27
|
-
* The
|
|
27
|
+
* The following Lucide icons are derived from the Feather project:
|
|
28
28
|
*
|
|
29
|
-
*
|
|
29
|
+
* airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
|
|
30
|
+
*
|
|
31
|
+
* The MIT License (MIT) (for the icons listed above)
|
|
32
|
+
*
|
|
33
|
+
* Copyright (c) 2013-present Cole Bemis
|
|
30
34
|
*
|
|
31
35
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
32
36
|
* of this software and associated documentation files (the "Software"), to deal
|
|
@@ -0,0 +1,559 @@
|
|
|
1
|
+
//#region src/lib/paraglide/runtime.js
|
|
2
|
+
/** @type {any} */
|
|
3
|
+
var URLPattern = {};
|
|
4
|
+
/**
|
|
5
|
+
* The project's locales that have been specified in the settings.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* if (locales.includes(userSelectedLocale) === false) {
|
|
9
|
+
* throw new Error('Locale is not available');
|
|
10
|
+
* }
|
|
11
|
+
*/
|
|
12
|
+
var locales = ["en"];
|
|
13
|
+
/** @type {string} */
|
|
14
|
+
var cookieName = "PARAGLIDE_LOCALE";
|
|
15
|
+
/** @type {number} */
|
|
16
|
+
var cookieMaxAge = 3456e4;
|
|
17
|
+
/**
|
|
18
|
+
* @type {Array<"cookie" | "baseLocale" | "globalVariable" | "url" | "preferredLanguage" | "localStorage" | `custom-${string}`>}
|
|
19
|
+
*/
|
|
20
|
+
var strategy = [
|
|
21
|
+
"cookie",
|
|
22
|
+
"globalVariable",
|
|
23
|
+
"baseLocale"
|
|
24
|
+
];
|
|
25
|
+
/**
|
|
26
|
+
* Route-level strategy overrides.
|
|
27
|
+
*
|
|
28
|
+
* `match` uses URLPattern syntax.
|
|
29
|
+
*
|
|
30
|
+
* @type {Array<{
|
|
31
|
+
* match: string;
|
|
32
|
+
* strategy?: Array<"cookie" | "baseLocale" | "globalVariable" | "url" | "preferredLanguage" | "localStorage" | `custom-${string}`>;
|
|
33
|
+
* exclude?: boolean;
|
|
34
|
+
* }>}
|
|
35
|
+
*/
|
|
36
|
+
var routeStrategies = [];
|
|
37
|
+
/**
|
|
38
|
+
* @typedef {{
|
|
39
|
+
* getStore(): {
|
|
40
|
+
* locale?: Locale,
|
|
41
|
+
* origin?: string,
|
|
42
|
+
* messageCalls?: Set<string>
|
|
43
|
+
* } | undefined,
|
|
44
|
+
* run: (store: { locale?: Locale, origin?: string, messageCalls?: Set<string>},
|
|
45
|
+
* cb: any) => any
|
|
46
|
+
* }} ParaglideAsyncLocalStorage
|
|
47
|
+
*/
|
|
48
|
+
/**
|
|
49
|
+
* Server side async local storage that is set by `serverMiddleware()`.
|
|
50
|
+
*
|
|
51
|
+
* The variable is used to retrieve the locale and origin in a server-side
|
|
52
|
+
* rendering context without effecting other requests.
|
|
53
|
+
*
|
|
54
|
+
* @type {ParaglideAsyncLocalStorage | undefined}
|
|
55
|
+
*/
|
|
56
|
+
var serverAsyncLocalStorage = void 0;
|
|
57
|
+
var isServer = typeof window === "undefined";
|
|
58
|
+
/** @type {any} */ globalThis.__paraglide = globalThis.__paraglide ?? {};
|
|
59
|
+
/** @type {any} */ globalThis.__paraglide.ssr = globalThis.__paraglide.ssr ?? {};
|
|
60
|
+
/**
|
|
61
|
+
* This is a fallback to get started with a custom
|
|
62
|
+
* strategy and avoid type errors.
|
|
63
|
+
*
|
|
64
|
+
* The implementation is overwritten
|
|
65
|
+
* by `overwriteGetLocale()` and `defineSetLocale()`.
|
|
66
|
+
*
|
|
67
|
+
* @type {Locale | undefined}
|
|
68
|
+
*/
|
|
69
|
+
var _locale;
|
|
70
|
+
var localeInitiallySet = false;
|
|
71
|
+
/**
|
|
72
|
+
* Get the current locale.
|
|
73
|
+
*
|
|
74
|
+
* The locale is resolved using your configured strategies (URL, cookie, localStorage, etc.)
|
|
75
|
+
* in the order they are defined. In SSR contexts, the locale is retrieved from AsyncLocalStorage
|
|
76
|
+
* which is set by the `paraglideMiddleware()`.
|
|
77
|
+
*
|
|
78
|
+
* @see https://paraglidejs.com/strategy - Configure locale detection strategies
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* if (getLocale() === 'de') {
|
|
82
|
+
* console.log('Germany 🇩🇪');
|
|
83
|
+
* } else if (getLocale() === 'nl') {
|
|
84
|
+
* console.log('Netherlands 🇳🇱');
|
|
85
|
+
* }
|
|
86
|
+
*
|
|
87
|
+
* @returns {Locale} The current locale.
|
|
88
|
+
*/
|
|
89
|
+
var getLocale = () => {
|
|
90
|
+
if (serverAsyncLocalStorage) {
|
|
91
|
+
const locale = serverAsyncLocalStorage?.getStore()?.locale;
|
|
92
|
+
if (locale) return locale;
|
|
93
|
+
}
|
|
94
|
+
let strategyToUse = strategy;
|
|
95
|
+
if (!isServer && typeof window !== "undefined" && window.location?.href) strategyToUse = getStrategyForUrl(window.location.href);
|
|
96
|
+
const resolved = resolveLocaleWithStrategies(strategyToUse, typeof window !== "undefined" ? window.location?.href : void 0);
|
|
97
|
+
if (resolved) {
|
|
98
|
+
if (!localeInitiallySet) {
|
|
99
|
+
_locale = resolved;
|
|
100
|
+
localeInitiallySet = true;
|
|
101
|
+
setLocale(resolved, { reload: false });
|
|
102
|
+
}
|
|
103
|
+
return resolved;
|
|
104
|
+
}
|
|
105
|
+
throw new Error("No locale found. Read the docs https://paraglidejs.com/errors#no-locale-found");
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* @param {typeof strategy} strategyToUse
|
|
109
|
+
* @param {string | undefined} urlForUrlStrategy
|
|
110
|
+
* @returns {Locale | undefined}
|
|
111
|
+
*/
|
|
112
|
+
function resolveLocaleWithStrategies(strategyToUse, urlForUrlStrategy) {
|
|
113
|
+
/** @type {string | undefined} */
|
|
114
|
+
let locale;
|
|
115
|
+
for (const strat of strategyToUse) {
|
|
116
|
+
if (strat === "cookie") locale = extractLocaleFromCookie();
|
|
117
|
+
else if (strat === "baseLocale") locale = "en";
|
|
118
|
+
else if (strat === "globalVariable" && _locale !== void 0) locale = _locale;
|
|
119
|
+
else if (isCustomStrategy(strat) && customClientStrategies.has(strat)) {
|
|
120
|
+
const handler = customClientStrategies.get(strat);
|
|
121
|
+
if (handler) {
|
|
122
|
+
const result = handler.getLocale();
|
|
123
|
+
if (result instanceof Promise) continue;
|
|
124
|
+
if (result !== void 0) return assertIsLocale(result);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
const matchedLocale = toLocale(locale);
|
|
128
|
+
if (matchedLocale) return matchedLocale;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Navigates to the localized URL, or reloads the current page
|
|
133
|
+
*
|
|
134
|
+
* @param {string} [newLocation] The new location
|
|
135
|
+
*/
|
|
136
|
+
var navigateOrReload = (newLocation) => {
|
|
137
|
+
if (newLocation) window.location.href = newLocation;
|
|
138
|
+
else window.location.reload();
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* @typedef {(newLocale: Locale, options?: { reload?: boolean }) => void | Promise<void>} SetLocaleFn
|
|
142
|
+
*/
|
|
143
|
+
/**
|
|
144
|
+
* Set the locale.
|
|
145
|
+
*
|
|
146
|
+
* Updates the locale using your configured strategies (cookie, localStorage, URL, etc.).
|
|
147
|
+
* By default, this navigates the client to the localized URL or reloads the current
|
|
148
|
+
* document to reflect the new locale. `reload: false` is a narrow browser-only escape
|
|
149
|
+
* hatch for a fully client-rendered, non-URL-routed surface that owns its reactive
|
|
150
|
+
* updates and document state. It does not re-render the UI or update the document.
|
|
151
|
+
* Do not use it for normal locale pickers, URL-routed pages, or switching an SSR,
|
|
152
|
+
* SSG, or hydrated document. It is incompatible with per-locale builds.
|
|
153
|
+
*
|
|
154
|
+
* If any custom strategy's `setLocale` function is async, then this function
|
|
155
|
+
* will become async as well.
|
|
156
|
+
*
|
|
157
|
+
* @see https://paraglidejs.com/strategy
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* setLocale('en');
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* setLocale('en', { reload: false });
|
|
164
|
+
*
|
|
165
|
+
* @type {SetLocaleFn}
|
|
166
|
+
*/
|
|
167
|
+
var setLocale = (newLocale, options) => {
|
|
168
|
+
const optionsWithDefaults = {
|
|
169
|
+
reload: true,
|
|
170
|
+
...options
|
|
171
|
+
};
|
|
172
|
+
/** @type {Locale | undefined} */
|
|
173
|
+
let currentLocale;
|
|
174
|
+
try {
|
|
175
|
+
currentLocale = getLocale();
|
|
176
|
+
} catch {}
|
|
177
|
+
/** @type {Array<Promise<void>>} */
|
|
178
|
+
const customSetLocalePromises = [];
|
|
179
|
+
/** @type {string | undefined} */
|
|
180
|
+
let newLocation = void 0;
|
|
181
|
+
let strategyToUse = strategy;
|
|
182
|
+
if (!isServer && typeof window !== "undefined" && window.location?.href) strategyToUse = getStrategyForUrl(window.location.href);
|
|
183
|
+
for (const strat of strategyToUse) if (strat === "globalVariable") _locale = newLocale;
|
|
184
|
+
else if (strat === "cookie") {
|
|
185
|
+
if (isServer || typeof document === "undefined" || typeof window === "undefined") continue;
|
|
186
|
+
const cookieString = `${cookieName}=${newLocale}; path=/; max-age=${cookieMaxAge}`;
|
|
187
|
+
document.cookie = cookieString;
|
|
188
|
+
clearLocaleCookieCache();
|
|
189
|
+
} else if (strat === "baseLocale") continue;
|
|
190
|
+
else if (isCustomStrategy(strat) && customClientStrategies.has(strat)) {
|
|
191
|
+
const handler = customClientStrategies.get(strat);
|
|
192
|
+
if (handler) {
|
|
193
|
+
let result = handler.setLocale(newLocale);
|
|
194
|
+
if (result instanceof Promise) {
|
|
195
|
+
result = result.catch((error) => {
|
|
196
|
+
throw new Error(`Custom strategy "${strat}" setLocale failed.`, { cause: error });
|
|
197
|
+
});
|
|
198
|
+
customSetLocalePromises.push(result);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
const runReload = () => {
|
|
203
|
+
if (!isServer && optionsWithDefaults.reload && window.location && newLocale !== currentLocale) navigateOrReload(newLocation);
|
|
204
|
+
};
|
|
205
|
+
if (customSetLocalePromises.length) return Promise.all(customSetLocalePromises).then(() => {
|
|
206
|
+
runReload();
|
|
207
|
+
});
|
|
208
|
+
runReload();
|
|
209
|
+
};
|
|
210
|
+
/**
|
|
211
|
+
* The origin of the current URL.
|
|
212
|
+
*
|
|
213
|
+
* Defaults to "http://example.com" in non-browser environments. If this
|
|
214
|
+
* behavior is not desired, the implementation can be overwritten
|
|
215
|
+
* by `overwriteGetUrlOrigin()`.
|
|
216
|
+
*
|
|
217
|
+
* @type {() => string}
|
|
218
|
+
*/
|
|
219
|
+
var getUrlOrigin = () => {
|
|
220
|
+
if (serverAsyncLocalStorage) return serverAsyncLocalStorage.getStore()?.origin ?? "http://fallback.com";
|
|
221
|
+
else if (typeof window !== "undefined") return window.location.origin;
|
|
222
|
+
return "http://fallback.com";
|
|
223
|
+
};
|
|
224
|
+
/**
|
|
225
|
+
* Coerces a locale-like string to the canonical locale value used by the runtime.
|
|
226
|
+
*
|
|
227
|
+
* @param {unknown} value
|
|
228
|
+
* @returns {Locale | undefined}
|
|
229
|
+
*/
|
|
230
|
+
function toLocale(value) {
|
|
231
|
+
if (typeof value !== "string") return;
|
|
232
|
+
const lowerValue = value.toLowerCase();
|
|
233
|
+
for (const locale of locales) if (locale.toLowerCase() === lowerValue) return locale;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Asserts that the input can be normalized to a locale.
|
|
237
|
+
*
|
|
238
|
+
* @param {unknown} input - The input to check.
|
|
239
|
+
* @returns {Locale} The input normalized to a Locale.
|
|
240
|
+
* @throws {Error} If the input is not a locale.
|
|
241
|
+
*/
|
|
242
|
+
function assertIsLocale(input) {
|
|
243
|
+
const locale = toLocale(input);
|
|
244
|
+
if (locale) return locale;
|
|
245
|
+
throw new Error(`Invalid locale: ${input}. Expected one of: ${locales.join(", ")}`);
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Applies the configured trailing slash policy to a URL.
|
|
249
|
+
*
|
|
250
|
+
* The root pathname always remains `/`. Query parameters and hashes are not
|
|
251
|
+
* modified.
|
|
252
|
+
*
|
|
253
|
+
* @param {URL} url
|
|
254
|
+
* @returns {URL}
|
|
255
|
+
*/
|
|
256
|
+
function normalizeTrailingSlash(url) {
|
|
257
|
+
return url;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Matches a canonical URL while allowing configured patterns to retain their
|
|
261
|
+
* existing trailing slash style.
|
|
262
|
+
*
|
|
263
|
+
* @param {URLPattern} pattern
|
|
264
|
+
* @param {URL} url
|
|
265
|
+
* @returns {any}
|
|
266
|
+
*/
|
|
267
|
+
function execUrlPattern(pattern, url) {
|
|
268
|
+
return pattern.exec(url.href);
|
|
269
|
+
}
|
|
270
|
+
var cookieNamePattern = cookieName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
271
|
+
var localeCookiePattern = new RegExp(`(?:^|;\\s*)${cookieNamePattern}=([^;]*)`);
|
|
272
|
+
var noCachedLocale = Symbol();
|
|
273
|
+
/** @type {Locale | undefined | typeof noCachedLocale} */
|
|
274
|
+
var cachedLocaleFromCookie = noCachedLocale;
|
|
275
|
+
/**
|
|
276
|
+
* Clears the cached locale from `document.cookie`.
|
|
277
|
+
*/
|
|
278
|
+
function clearLocaleCookieCache() {
|
|
279
|
+
cachedLocaleFromCookie = noCachedLocale;
|
|
280
|
+
}
|
|
281
|
+
function scheduleLocaleCookieCacheClear() {
|
|
282
|
+
if (typeof queueMicrotask === "function") queueMicrotask(clearLocaleCookieCache);
|
|
283
|
+
else Promise.resolve().then(clearLocaleCookieCache);
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Extracts a cookie from the document.
|
|
287
|
+
*
|
|
288
|
+
* Will return undefined if the document is not available or if the cookie is not set.
|
|
289
|
+
* The `document` object is not available in server-side rendering, so this function should not be called in that context.
|
|
290
|
+
*
|
|
291
|
+
* @returns {Locale | undefined}
|
|
292
|
+
*/
|
|
293
|
+
function extractLocaleFromCookie() {
|
|
294
|
+
if (typeof document === "undefined") return;
|
|
295
|
+
if (cachedLocaleFromCookie !== noCachedLocale) return cachedLocaleFromCookie;
|
|
296
|
+
const locale = document.cookie.match(localeCookiePattern)?.[1];
|
|
297
|
+
cachedLocaleFromCookie = toLocale(locale);
|
|
298
|
+
scheduleLocaleCookieCacheClear();
|
|
299
|
+
return cachedLocaleFromCookie;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Low-level URL de-localization function, primarily used in server contexts.
|
|
303
|
+
*
|
|
304
|
+
* This function is designed for server-side usage where you need precise control
|
|
305
|
+
* over URL de-localization, such as in middleware or request handlers. It works with
|
|
306
|
+
* URL objects and always returns absolute URLs.
|
|
307
|
+
*
|
|
308
|
+
* For client-side UI components, use `deLocalizeHref()` instead, which provides
|
|
309
|
+
* a more convenient API with relative paths.
|
|
310
|
+
*
|
|
311
|
+
* @see https://paraglidejs.com/i18n-routing
|
|
312
|
+
*
|
|
313
|
+
* @example
|
|
314
|
+
* ```typescript
|
|
315
|
+
* // Server middleware example
|
|
316
|
+
* app.use((req, res, next) => {
|
|
317
|
+
* const url = new URL(req.url, `${req.protocol}://${req.headers.host}`);
|
|
318
|
+
* const baseUrl = deLocalizeUrl(url);
|
|
319
|
+
*
|
|
320
|
+
* // Store the base URL for later use
|
|
321
|
+
* req.baseUrl = baseUrl;
|
|
322
|
+
* next();
|
|
323
|
+
* });
|
|
324
|
+
* ```
|
|
325
|
+
*
|
|
326
|
+
* @example
|
|
327
|
+
* ```typescript
|
|
328
|
+
* // Using with URL patterns
|
|
329
|
+
* const url = new URL("https://example.com/de/about");
|
|
330
|
+
* deLocalizeUrl(url); // => URL("https://example.com/about")
|
|
331
|
+
*
|
|
332
|
+
* // Using with domain-based localization
|
|
333
|
+
* const url = new URL("https://de.example.com/store");
|
|
334
|
+
* deLocalizeUrl(url); // => URL("https://example.com/store")
|
|
335
|
+
* ```
|
|
336
|
+
*
|
|
337
|
+
* @param {string | URL} url - The URL to de-localize. If string, must be absolute.
|
|
338
|
+
* @returns {URL} The de-localized URL, always absolute
|
|
339
|
+
*/
|
|
340
|
+
function deLocalizeUrl(url) {
|
|
341
|
+
return deLocalizeUrlDefaultPattern(url);
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* De-localizes a URL using the default pattern (/:locale/*)
|
|
345
|
+
* @param {string|URL} url
|
|
346
|
+
* @returns {URL}
|
|
347
|
+
*/
|
|
348
|
+
function deLocalizeUrlDefaultPattern(url) {
|
|
349
|
+
const urlObj = normalizeTrailingSlash(typeof url === "string" ? new URL(url, getUrlOrigin()) : new URL(url));
|
|
350
|
+
const pathSegments = urlObj.pathname.split("/").filter(Boolean);
|
|
351
|
+
if (pathSegments.length > 0 && toLocale(pathSegments[0])) urlObj.pathname = "/" + pathSegments.slice(1).join("/");
|
|
352
|
+
return normalizeTrailingSlash(urlObj);
|
|
353
|
+
}
|
|
354
|
+
/** @type {string | undefined} */
|
|
355
|
+
var cachedRouteStrategyUrl;
|
|
356
|
+
/** @type {{ match: string; strategy?: typeof strategy; exclude?: boolean } | undefined} */
|
|
357
|
+
var cachedRouteStrategy;
|
|
358
|
+
/**
|
|
359
|
+
* Match route policy against both the public URL and its canonical URL.
|
|
360
|
+
*
|
|
361
|
+
* The function is deliberately separate from variables.js: configuration is
|
|
362
|
+
* inert data, while canonicalization and route selection form a routing layer.
|
|
363
|
+
*
|
|
364
|
+
* @param {string | URL} url
|
|
365
|
+
* @returns {{ match: string; strategy?: typeof strategy; exclude?: boolean } | undefined}
|
|
366
|
+
*/
|
|
367
|
+
function findMatchingRouteStrategy(url) {
|
|
368
|
+
if (routeStrategies.length === 0) return;
|
|
369
|
+
const urlString = typeof url === "string" ? url : url.href;
|
|
370
|
+
if (cachedRouteStrategyUrl === urlString) return cachedRouteStrategy;
|
|
371
|
+
const publicUrl = normalizeTrailingSlash(new URL(urlString, "http://example.com"));
|
|
372
|
+
const canonicalUrl = deLocalizeUrl(publicUrl);
|
|
373
|
+
const candidateUrls = canonicalUrl.href === publicUrl.href ? [publicUrl] : [publicUrl, canonicalUrl];
|
|
374
|
+
let match;
|
|
375
|
+
for (const candidateUrl of candidateUrls) {
|
|
376
|
+
for (const routeStrategy of routeStrategies) if (execUrlPattern(new URLPattern(routeStrategy.match, candidateUrl.href), candidateUrl)) {
|
|
377
|
+
match = routeStrategy;
|
|
378
|
+
break;
|
|
379
|
+
}
|
|
380
|
+
if (match) break;
|
|
381
|
+
}
|
|
382
|
+
cachedRouteStrategyUrl = urlString;
|
|
383
|
+
cachedRouteStrategy = match;
|
|
384
|
+
return match;
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Returns the strategy to use for a specific URL.
|
|
388
|
+
*
|
|
389
|
+
* If no route strategy matches (or the matching rule is `exclude: true`),
|
|
390
|
+
* the global strategy is returned.
|
|
391
|
+
*
|
|
392
|
+
* @param {string | URL} url
|
|
393
|
+
* @returns {typeof strategy}
|
|
394
|
+
*/
|
|
395
|
+
function getStrategyForUrl(url) {
|
|
396
|
+
const routeStrategy = findMatchingRouteStrategy(url);
|
|
397
|
+
if (routeStrategy && routeStrategy.exclude !== true && Array.isArray(routeStrategy.strategy)) return routeStrategy.strategy;
|
|
398
|
+
return strategy;
|
|
399
|
+
}
|
|
400
|
+
/** @type {Map<string, CustomClientStrategyHandler>} */
|
|
401
|
+
var customClientStrategies = /* @__PURE__ */ new Map();
|
|
402
|
+
/**
|
|
403
|
+
* Checks if the given strategy is a custom strategy.
|
|
404
|
+
*
|
|
405
|
+
* @param {unknown} strategy The name of the custom strategy to validate.
|
|
406
|
+
* Must be a string that starts with "custom-" followed by alphanumeric characters, hyphens, or underscores.
|
|
407
|
+
* @returns {boolean} Returns true if it is a custom strategy, false otherwise.
|
|
408
|
+
*/
|
|
409
|
+
function isCustomStrategy(strategy) {
|
|
410
|
+
return typeof strategy === "string" && /^custom-[A-Za-z0-9_-]+$/.test(strategy);
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* A locale that is available in the project.
|
|
414
|
+
*
|
|
415
|
+
* @example
|
|
416
|
+
* setLocale(request.locale as Locale)
|
|
417
|
+
*
|
|
418
|
+
* @typedef {typeof locales[number]} Locale
|
|
419
|
+
*/
|
|
420
|
+
/**
|
|
421
|
+
* A branded type representing a localized string.
|
|
422
|
+
*
|
|
423
|
+
* Message functions return this type instead of \`string\`, enabling TypeScript
|
|
424
|
+
* to distinguish translated strings from regular strings at compile time.
|
|
425
|
+
* This allows you to enforce that only properly localized content is used
|
|
426
|
+
* in your UI components.
|
|
427
|
+
*
|
|
428
|
+
* Since \`LocalizedString\` is a branded subtype of \`string\`, it remains fully
|
|
429
|
+
* backward compatible—you can pass it anywhere a \`string\` is expected.
|
|
430
|
+
*
|
|
431
|
+
* @example
|
|
432
|
+
* // Enforce localized strings in your components
|
|
433
|
+
* function PageTitle(props: { title: LocalizedString }) {
|
|
434
|
+
* return <h1>{props.title}</h1>
|
|
435
|
+
* }
|
|
436
|
+
*
|
|
437
|
+
* // ✅ Correct: using a message function
|
|
438
|
+
* <PageTitle title={m.welcome_title()} />
|
|
439
|
+
*
|
|
440
|
+
* // ❌ Type error: raw strings are not LocalizedString
|
|
441
|
+
* <PageTitle title="Welcome" />
|
|
442
|
+
*
|
|
443
|
+
* @example
|
|
444
|
+
* // LocalizedString is assignable to string (backward compatible)
|
|
445
|
+
* const localized: LocalizedString = m.greeting()
|
|
446
|
+
* const str: string = localized // ✅ works fine
|
|
447
|
+
*
|
|
448
|
+
* // But string is not assignable to LocalizedString
|
|
449
|
+
* const raw: LocalizedString = "Hello" // ❌ Type error
|
|
450
|
+
*
|
|
451
|
+
* @example
|
|
452
|
+
* // Catches accidental string concatenation
|
|
453
|
+
* function showMessage(msg: LocalizedString) { ... }
|
|
454
|
+
*
|
|
455
|
+
* showMessage(m.hello()) // ✅
|
|
456
|
+
* showMessage("Hello " + userName) // ❌ Type error
|
|
457
|
+
* showMessage(m.hello_user({ name: userName })) // ✅ use params instead
|
|
458
|
+
*
|
|
459
|
+
* @typedef {string & { readonly __brand: 'LocalizedString' }} LocalizedString
|
|
460
|
+
*/
|
|
461
|
+
/**
|
|
462
|
+
* A single markup option passed to a tag instance.
|
|
463
|
+
*
|
|
464
|
+
* @typedef {{
|
|
465
|
+
* name: string;
|
|
466
|
+
* value: unknown;
|
|
467
|
+
* }} MessageMarkupOption
|
|
468
|
+
*/
|
|
469
|
+
/**
|
|
470
|
+
* A single static markup attribute attached to a tag instance.
|
|
471
|
+
*
|
|
472
|
+
* @typedef {{
|
|
473
|
+
* name: string;
|
|
474
|
+
* value: string | true;
|
|
475
|
+
* }} MessageMarkupAttribute
|
|
476
|
+
*/
|
|
477
|
+
/**
|
|
478
|
+
* Record of markup options for a tag instance.
|
|
479
|
+
*
|
|
480
|
+
* @typedef {Record<string, unknown>} MessageMarkupOptions
|
|
481
|
+
*/
|
|
482
|
+
/**
|
|
483
|
+
* Record of markup attributes for a tag instance.
|
|
484
|
+
*
|
|
485
|
+
* @typedef {Record<string, string | true>} MessageMarkupAttributes
|
|
486
|
+
*/
|
|
487
|
+
/**
|
|
488
|
+
* Type-level schema for a single markup tag.
|
|
489
|
+
*
|
|
490
|
+
* @typedef {{
|
|
491
|
+
* options: MessageMarkupOptions;
|
|
492
|
+
* attributes: MessageMarkupAttributes;
|
|
493
|
+
* children: boolean;
|
|
494
|
+
* }} MessageMarkupTag
|
|
495
|
+
*/
|
|
496
|
+
/**
|
|
497
|
+
* Type-level schema for all markup tags in a message.
|
|
498
|
+
*
|
|
499
|
+
* @typedef {Record<string, MessageMarkupTag>} MessageMarkupSchema
|
|
500
|
+
*/
|
|
501
|
+
/**
|
|
502
|
+
* Type-only metadata attached to compiled message functions.
|
|
503
|
+
*
|
|
504
|
+
* @template Inputs
|
|
505
|
+
* @template Options
|
|
506
|
+
* @template {MessageMarkupSchema} [Markup = MessageMarkupSchema]
|
|
507
|
+
* @typedef {{
|
|
508
|
+
* readonly __paraglide?: {
|
|
509
|
+
* inputs: Inputs;
|
|
510
|
+
* options: Options;
|
|
511
|
+
* markup: Markup;
|
|
512
|
+
* };
|
|
513
|
+
* }} MessageMetadata
|
|
514
|
+
*/
|
|
515
|
+
/**
|
|
516
|
+
* A compiled, framework-neutral message part.
|
|
517
|
+
*
|
|
518
|
+
* @typedef {{
|
|
519
|
+
* type: "text";
|
|
520
|
+
* value: string;
|
|
521
|
+
* } | {
|
|
522
|
+
* type: "markup-start";
|
|
523
|
+
* name: string;
|
|
524
|
+
* options: MessageMarkupOptions;
|
|
525
|
+
* attributes: MessageMarkupAttributes;
|
|
526
|
+
* } | {
|
|
527
|
+
* type: "markup-end";
|
|
528
|
+
* name: string;
|
|
529
|
+
* options: MessageMarkupOptions;
|
|
530
|
+
* attributes: MessageMarkupAttributes;
|
|
531
|
+
* } | {
|
|
532
|
+
* type: "markup-standalone";
|
|
533
|
+
* name: string;
|
|
534
|
+
* options: MessageMarkupOptions;
|
|
535
|
+
* attributes: MessageMarkupAttributes;
|
|
536
|
+
* }} MessagePart
|
|
537
|
+
*/
|
|
538
|
+
/**
|
|
539
|
+
* A message function is a message for a specific locale.
|
|
540
|
+
*
|
|
541
|
+
* @example
|
|
542
|
+
* m.hello({ name: 'world' })
|
|
543
|
+
*
|
|
544
|
+
* @typedef {(inputs?: Record<string, never>) => LocalizedString} MessageFunction
|
|
545
|
+
*/
|
|
546
|
+
/**
|
|
547
|
+
* A message bundle function that selects the message to be returned.
|
|
548
|
+
*
|
|
549
|
+
* Uses `getLocale()` under the hood to determine the locale with an option.
|
|
550
|
+
*
|
|
551
|
+
* @template {string} T
|
|
552
|
+
*
|
|
553
|
+
* @example
|
|
554
|
+
* * m.hello({ name: 'world' }, { locale: "en" })
|
|
555
|
+
*
|
|
556
|
+
* @typedef {(params: Record<string, never>, options: { locale: T }) => LocalizedString} MessageBundleFunction
|
|
557
|
+
*/
|
|
558
|
+
//#endregion
|
|
559
|
+
export { locales as n, setLocale as r, getLocale as t };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { t as getLocale } from "./runtime-O78RzRqx.js";
|
|
2
|
+
//#region src/lib/paraglide/messages/scroll_to_top_aria.js
|
|
3
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
4
|
+
/** @typedef {{}} Scroll_To_Top_AriaInputs */
|
|
5
|
+
var en_scroll_to_top_aria = () => {
|
|
6
|
+
return `Scroll to top`;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* | output |
|
|
10
|
+
* | --- |
|
|
11
|
+
* | "Scroll to top" |
|
|
12
|
+
*
|
|
13
|
+
* @param {Scroll_To_Top_AriaInputs} inputs
|
|
14
|
+
* @param {{ locale?: "en" }} options
|
|
15
|
+
* @returns {LocalizedString}
|
|
16
|
+
*/
|
|
17
|
+
var scroll_to_top_aria = ((inputs = {}, options = {}) => {
|
|
18
|
+
options.locale ?? getLocale();
|
|
19
|
+
return en_scroll_to_top_aria(inputs);
|
|
20
|
+
});
|
|
21
|
+
//#endregion
|
|
22
|
+
export { scroll_to_top_aria as t };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { t as getLocale } from "./runtime-O78RzRqx.js";
|
|
2
|
+
//#region src/lib/paraglide/messages/search_title.js
|
|
3
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
4
|
+
/** @typedef {{}} Search_TitleInputs */
|
|
5
|
+
var en_search_title = () => {
|
|
6
|
+
return `Search`;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* | output |
|
|
10
|
+
* | --- |
|
|
11
|
+
* | "Search" |
|
|
12
|
+
*
|
|
13
|
+
* @param {Search_TitleInputs} inputs
|
|
14
|
+
* @param {{ locale?: "en" }} options
|
|
15
|
+
* @returns {LocalizedString}
|
|
16
|
+
*/
|
|
17
|
+
var search_title = ((inputs = {}, options = {}) => {
|
|
18
|
+
options.locale ?? getLocale();
|
|
19
|
+
return en_search_title(inputs);
|
|
20
|
+
});
|
|
21
|
+
//#endregion
|
|
22
|
+
export { search_title as t };
|