@svgrid/grid 2.2.32 → 2.4.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/README.md +199 -199
- package/dist/DockNodeView.svelte +1 -1
- package/dist/FlexRender.svelte +96 -96
- package/dist/GridFooter.svelte +178 -179
- package/dist/GridMenus.svelte +705 -782
- package/dist/SvAutoComplete.svelte +165 -165
- package/dist/SvAvatar.svelte +75 -75
- package/dist/SvCalendar.svelte +503 -503
- package/dist/SvCarousel.svelte +141 -141
- package/dist/SvCheckBox.svelte +102 -102
- package/dist/SvCircularProgress.svelte +109 -109
- package/dist/SvColorInput.svelte +181 -181
- package/dist/SvComboBox.svelte +275 -275
- package/dist/SvContextMenu.svelte +116 -116
- package/dist/SvCountryInput.svelte +160 -160
- package/dist/SvDateRangeInput.svelte +1 -1
- package/dist/SvDrawer.svelte +254 -254
- package/dist/SvDropDownList.svelte +374 -374
- package/dist/SvDurationInput.svelte +126 -126
- package/dist/SvField.svelte +293 -293
- package/dist/SvForm.svelte +437 -437
- package/dist/SvGrid.css +2814 -2804
- package/dist/SvGrid.svelte +3490 -3513
- package/dist/SvGridChart.svelte +1716 -1724
- package/dist/SvGridChartPanel.svelte +485 -485
- package/dist/SvGridChartView.svelte +70 -70
- package/dist/SvGridDropdown.svelte +728 -728
- package/dist/SvGridSelect.svelte +266 -268
- package/dist/SvGroupCell.svelte +116 -116
- package/dist/SvKbd.svelte +1 -1
- package/dist/SvList.svelte +1 -1
- package/dist/SvListBox.svelte +326 -326
- package/dist/SvMaskedInput.svelte +122 -122
- package/dist/SvMenu.svelte +124 -124
- package/dist/SvMenuList.svelte +146 -146
- package/dist/SvMenubar.svelte +1 -1
- package/dist/SvMultiSelect.svelte +289 -290
- package/dist/SvNumberInput.svelte +168 -168
- package/dist/SvOtpInput.svelte +158 -158
- package/dist/SvPasswordInput.svelte +151 -151
- package/dist/SvPhoneInput.svelte +133 -133
- package/dist/SvPopover.svelte +197 -197
- package/dist/SvProgress.svelte +116 -116
- package/dist/SvRadioGroup.svelte +107 -107
- package/dist/SvRating.svelte +112 -112
- package/dist/SvResult.svelte +73 -73
- package/dist/SvRichText.svelte +211 -207
- package/dist/SvRowGroupPanel.svelte +170 -170
- package/dist/SvScrollArea.svelte +61 -61
- package/dist/SvSlider.svelte +200 -200
- package/dist/SvSwitchButton.svelte +108 -108
- package/dist/SvTagsInput.svelte +112 -112
- package/dist/SvTextInput.svelte +147 -147
- package/dist/SvTimePicker.svelte +245 -245
- package/dist/SvToaster.svelte +159 -159
- package/dist/SvToggleButton.svelte +85 -85
- package/dist/SvTooltip.svelte +161 -161
- package/dist/SvTour.svelte +208 -204
- package/dist/SvTree.svelte +444 -444
- package/dist/SvTreeSelect.svelte +235 -237
- package/dist/cdn/{GridMenus-C6ixSGWW.js → GridMenus-BpVcKyUr.js} +5 -7
- package/dist/cdn/{GridMenus-Cyk3qpJ7.js → GridMenus-CeXL5IW4.js} +153 -152
- package/dist/cdn/{SvDateTimePicker-ClqtVIj3.js → SvDateTimePicker-DSUhIta8.js} +165 -165
- package/dist/cdn/{SvDateTimePicker-CdqaP61H.js → SvDateTimePicker-h9kPyszT.js} +572 -555
- package/dist/cdn/{SvGridChart-BcLCYvw9.js → SvGridChart-Bs2GIR2Q.js} +28 -21
- package/dist/cdn/{SvGridChart-BhnFdLd0.js → SvGridChart-CwhFz7GV.js} +2 -2
- package/dist/cdn/{SvGridChartPanel-Cmx9DHAS.js → SvGridChartPanel-1WXuStzM.js} +2 -2
- package/dist/cdn/{SvGridChartPanel-DvjwxLvK.js → SvGridChartPanel-e5_nqNP9.js} +22 -14
- package/dist/cdn/{SvGridChartView-PwqI4s02.js → SvGridChartView-SmPW10dI.js} +3 -3
- package/dist/cdn/{SvGridChartView-B40DTJSX.js → SvGridChartView-eSPuJE6g.js} +2 -2
- package/dist/cdn/{SvGridDropdown-D0VdjeR8.js → SvGridDropdown-B1ZcLpgs.js} +1 -1
- package/dist/cdn/{SvGridDropdown-Dh-2ej8j.js → SvGridDropdown-CtdbHcIS.js} +6 -5
- package/dist/cdn/{chart-T1usDN0o.js → chart-i4XcXyHJ.js} +12 -10
- package/dist/cdn/disclose-version-Dr7rEVv-.js +2866 -0
- package/dist/cdn/{export-format-JT5pWVT8.js → export-format-Cv1Dll6k.js} +66 -245
- package/dist/cdn/{src-CgD-wiuS.js → src-DbeN1ReZ.js} +9223 -8944
- package/dist/cdn/{src-BgHjWF0Q.js → src-DmEQFW5_.js} +9023 -8828
- package/dist/cdn/svgrid.js +9 -9
- package/dist/cdn/svgrid.svelte-external.js +9 -9
- package/dist/chart-export.js +8 -8
- package/dist/chart.d.ts +2 -0
- package/dist/chart.js +1 -4
- package/dist/columns.js +9 -2
- package/dist/createMenu.svelte.js +0 -1
- package/dist/createPopoverSelect.svelte.d.ts +2 -2
- package/dist/editing.js +1 -1
- package/dist/export-format.js +3 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/_svelte_metadata.json +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/_metadata.json +178 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/attachments-qzRy9DX4.js +3843 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/attachments-qzRy9DX4.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/constants-RLNOXCpz.js +23 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/constants-RLNOXCpz.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/dev-DPd12uEU.js +1925 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/dev-DPd12uEU.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/events-CDC4DKuQ.js +206 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/events-CDC4DKuQ.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/flags-BD-lYX7s.js +20 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/flags-BD-lYX7s.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/hydration-D3UBU2t8.js +264 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/hydration-D3UBU2t8.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/legacy-client-B0ZUlbSQ.js +698 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/legacy-client-B0ZUlbSQ.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/package.json +3 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte.js +135 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_animate.js +57 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_animate.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_attachments.js +2 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_compiler.js +46691 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_compiler.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_easing.js +239 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_easing.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_events.js +2 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal.js +6 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_client.js +7 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_disclose-version.js +6 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_disclose-version.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_async.js +7 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_async.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_legacy.js +7 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_legacy.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_tracing.js +7 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_tracing.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_server.js +6 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_legacy.js +85 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_legacy.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_motion.js +561 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_motion.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity.js +26 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity_window.js +124 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity_window.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_server.js +2 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_store.js +91 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_store.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_transition.js +242 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_transition.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-lObbumRX.js +497 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-lObbumRX.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-mR9mAWyK.js +4929 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-mR9mAWyK.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/validate-CezNmRkM.js +192 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/validate-CezNmRkM.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/version-BHHo0WE-.js +10 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/version-BHHo0WE-.js.map +1 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/warnings-yiExAB06.js +140 -0
- package/dist/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/warnings-yiExAB06.js.map +1 -0
- package/dist/selection.js +0 -1
- package/package.json +11 -10
- package/src/DockNodeView.svelte +1 -1
- package/src/FlexRender.svelte +96 -96
- package/src/GridFooter.svelte +178 -179
- package/src/GridMenus.svelte +705 -782
- package/src/SvAutoComplete.svelte +165 -165
- package/src/SvAvatar.svelte +75 -75
- package/src/SvCalendar.svelte +503 -503
- package/src/SvCalendar.test.ts +226 -226
- package/src/SvCarousel.svelte +141 -141
- package/src/SvCheckBox.svelte +102 -102
- package/src/SvCircularProgress.svelte +109 -109
- package/src/SvColorInput.svelte +181 -181
- package/src/SvComboBox.svelte +275 -275
- package/src/SvContextMenu.svelte +116 -116
- package/src/SvCountryInput.svelte +160 -160
- package/src/SvDateRangeInput.svelte +1 -1
- package/src/SvDrawer.svelte +254 -254
- package/src/SvDropDownList.svelte +374 -374
- package/src/SvDurationInput.svelte +126 -126
- package/src/SvField.svelte +293 -293
- package/src/SvForm.svelte +437 -437
- package/src/SvForm.test.ts +411 -411
- package/src/SvGrid.controller.svelte.ts +3680 -3685
- package/src/SvGrid.css +2814 -2804
- package/src/SvGrid.svelte +3490 -3513
- package/src/SvGrid.types.ts +1708 -1709
- package/src/SvGridChart.svelte +1716 -1724
- package/src/SvGridChartPanel.svelte +485 -485
- package/src/SvGridChartView.svelte +70 -70
- package/src/SvGridDropdown.svelte +728 -728
- package/src/SvGridSelect.svelte +266 -268
- package/src/SvGroupCell.svelte +116 -116
- package/src/SvKbd.svelte +1 -1
- package/src/SvList.svelte +1 -1
- package/src/SvListBox.svelte +326 -326
- package/src/SvMaskedInput.svelte +122 -122
- package/src/SvMenu.svelte +124 -124
- package/src/SvMenu.test.ts +97 -97
- package/src/SvMenuList.svelte +146 -146
- package/src/SvMenubar.svelte +1 -1
- package/src/SvMultiSelect.svelte +289 -290
- package/src/SvNumberInput.svelte +168 -168
- package/src/SvOtpInput.svelte +158 -158
- package/src/SvPasswordInput.svelte +151 -151
- package/src/SvPhoneInput.svelte +133 -133
- package/src/SvPopover.svelte +197 -197
- package/src/SvProgress.svelte +116 -116
- package/src/SvRadioGroup.svelte +107 -107
- package/src/SvRating.svelte +112 -112
- package/src/SvResult.svelte +73 -73
- package/src/SvRichText.svelte +211 -207
- package/src/SvRowGroupPanel.svelte +170 -170
- package/src/SvScrollArea.svelte +61 -61
- package/src/SvSlider.svelte +200 -200
- package/src/SvSwitchButton.svelte +108 -108
- package/src/SvTagsInput.svelte +112 -112
- package/src/SvTextInput.svelte +147 -147
- package/src/SvTimePicker.svelte +245 -245
- package/src/SvToaster.svelte +159 -159
- package/src/SvToaster.test.ts +95 -95
- package/src/SvToggleButton.svelte +85 -85
- package/src/SvTooltip.svelte +161 -161
- package/src/SvTour.svelte +208 -204
- package/src/SvTree.svelte +444 -444
- package/src/SvTreeSelect.svelte +235 -237
- package/src/a11y/dismissable.test.ts +119 -119
- package/src/a11y/dismissable.ts +114 -114
- package/src/a11y.contract.test.ts +49 -49
- package/src/a11y.test.ts +59 -59
- package/src/a11y.ts +61 -61
- package/src/ai.test.ts +502 -502
- package/src/ai.ts +1391 -1391
- package/src/build-api.coverage.test.ts +633 -633
- package/src/build-api.ts +805 -910
- package/src/builtin-editors.grid.test.ts +85 -85
- package/src/cell-formatting.test.ts +1 -1
- package/src/cell-formatting.ts +169 -169
- package/src/cell-render.test.ts +513 -513
- package/src/cell-render.ts +496 -590
- package/src/cell-values.ts +118 -118
- package/src/chart-export.ts +201 -201
- package/src/chart-view.svelte.ts +36 -36
- package/src/chart.ts +2295 -2296
- package/src/clipboard.ts +0 -102
- package/src/collaboration.test.ts +104 -104
- package/src/collaboration.ts +167 -167
- package/src/columns.ts +7 -117
- package/src/core.performance.test.ts +30 -30
- package/src/core.ts +1261 -1261
- package/src/createAutocomplete.svelte.ts +132 -132
- package/src/createCombobox.svelte.ts +191 -191
- package/src/createCountryInput.svelte.ts +157 -157
- package/src/createDropdownList.svelte.ts +168 -168
- package/src/createForm.svelte.ts +386 -386
- package/src/createGrid.svelte.ts +42 -42
- package/src/createGrid.test.ts +10 -10
- package/src/createGridState.svelte.ts +17 -17
- package/src/createListbox.svelte.ts +250 -250
- package/src/createMenu.svelte.ts +224 -225
- package/src/createPopoverSelect.svelte.ts +213 -213
- package/src/createSlider.svelte.ts +191 -191
- package/src/createTooltip.svelte.ts +144 -144
- package/src/createTree.svelte.ts +319 -319
- package/src/editing.test.ts +949 -949
- package/src/editing.ts +606 -709
- package/src/editor-contract.ts +164 -164
- package/src/editor-registry.grid.test.ts +144 -146
- package/src/editor-registry.ts +122 -122
- package/src/export-data-api.test.ts +126 -126
- package/src/export-format.test.ts +107 -107
- package/src/export-format.ts +601 -598
- package/src/features.ts +0 -90
- package/src/filter-operators.ts +157 -157
- package/src/flex-render.ts +3 -3
- package/src/form-field.ts +127 -127
- package/src/group-display.test.ts +167 -167
- package/src/group-display.ts +200 -200
- package/src/index.ts +724 -724
- package/src/js-scroller.svelte.ts +173 -173
- package/src/keyboard-handlers.coverage.test.ts +1 -1
- package/src/keyboard-handlers.ts +270 -390
- package/src/keyboard.test.ts +59 -59
- package/src/keyboard.ts +97 -97
- package/src/list-nav.test.ts +49 -49
- package/src/list-nav.ts +29 -29
- package/src/list-option.test.ts +56 -56
- package/src/list-option.ts +172 -172
- package/src/menus.test.ts +0 -1
- package/src/menus.ts +567 -679
- package/src/merge-objects.ts +48 -48
- package/src/new-features.test.ts +3 -1
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/_svelte_metadata.json +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/_metadata.json +178 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/attachments-qzRy9DX4.js +3843 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/attachments-qzRy9DX4.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/constants-RLNOXCpz.js +23 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/constants-RLNOXCpz.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/dev-DPd12uEU.js +1925 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/dev-DPd12uEU.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/events-CDC4DKuQ.js +206 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/events-CDC4DKuQ.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/flags-BD-lYX7s.js +20 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/flags-BD-lYX7s.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/hydration-D3UBU2t8.js +264 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/hydration-D3UBU2t8.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/legacy-client-B0ZUlbSQ.js +698 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/legacy-client-B0ZUlbSQ.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/package.json +3 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte.js +135 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_animate.js +57 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_animate.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_attachments.js +2 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_compiler.js +46691 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_compiler.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_easing.js +239 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_easing.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_events.js +2 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal.js +6 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_client.js +7 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_disclose-version.js +6 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_disclose-version.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_async.js +7 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_async.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_legacy.js +7 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_legacy.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_tracing.js +7 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_flags_tracing.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_internal_server.js +6 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_legacy.js +85 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_legacy.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_motion.js +561 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_motion.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity.js +26 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity_window.js +124 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_reactivity_window.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_server.js +2 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_store.js +91 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_store.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_transition.js +242 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/svelte_transition.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-lObbumRX.js +497 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-lObbumRX.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-mR9mAWyK.js +4929 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/utils-mR9mAWyK.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/validate-CezNmRkM.js +192 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/validate-CezNmRkM.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/version-BHHo0WE-.js +10 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/version-BHHo0WE-.js.map +1 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/warnings-yiExAB06.js +140 -0
- package/src/node_modules/.vite/vitest/67d8ed22ed986c5e2e948f64d892f30be166cc36/deps___vitest__/warnings-yiExAB06.js.map +1 -0
- package/src/overlays.test.ts +90 -90
- package/src/render-component.ts +28 -28
- package/src/row-drag.test.ts +1 -1
- package/src/row-resize.test.ts +1 -2
- package/src/row-resize.ts +210 -210
- package/src/scheduler-model.test.ts +562 -562
- package/src/scheduler-model.ts +872 -872
- package/src/scroll-sync.test.ts +4 -7
- package/src/scroll-sync.ts +0 -122
- package/src/selection.test.ts +754 -754
- package/src/selection.ts +491 -600
- package/src/server-data-source.test.ts +289 -289
- package/src/server-data-source.ts +413 -413
- package/src/server-group-model.test.ts +2 -2
- package/src/sparkline.test.ts +68 -68
- package/src/sparkline.ts +169 -169
- package/src/spreadsheet.test.ts +488 -488
- package/src/spreadsheet.ts +312 -312
- package/src/static-functions.ts +11 -11
- package/src/subscribe.ts +38 -38
- package/src/summaries.ts +0 -112
- package/src/svgrid-wrapper.types.ts +526 -526
- package/src/svgrid.async-editor-options.test.ts +271 -271
- package/src/svgrid.auto-row-height.test.ts +204 -204
- package/src/svgrid.behavior.test.ts +705 -706
- package/src/svgrid.charting.test.ts +534 -534
- package/src/svgrid.column-reorder.test.ts +0 -8
- package/src/svgrid.comments-autocomplete.test.ts +123 -123
- package/src/svgrid.context-menu.test.ts +147 -147
- package/src/svgrid.features.test.ts +157 -157
- package/src/svgrid.filter-depth.test.ts +163 -163
- package/src/svgrid.filter-menu-listbox.svelte.test.ts +322 -322
- package/src/svgrid.filter-menu-scroll.test.ts +112 -112
- package/src/svgrid.footer-pagesize.svelte.test.ts +86 -0
- package/src/svgrid.grand-total.test.ts +188 -188
- package/src/svgrid.group-display-mode.test.ts +171 -171
- package/src/svgrid.group-footers.test.ts +121 -121
- package/src/svgrid.group-pagination.test.ts +153 -153
- package/src/svgrid.new-features.wrapper.test.ts +251 -251
- package/src/svgrid.tree-data.test.ts +186 -186
- package/src/svgrid.wrapper.test.ts +40 -40
- package/src/svgriddropdown.async-panel.svelte.test.ts +195 -195
- package/src/test-setup.ts +62 -62
- package/src/themes/index.ts +257 -257
- package/src/toast-store.svelte.ts +246 -246
- package/src/toast-store.test.ts +147 -147
- package/src/tree-row-model.test.ts +168 -169
- package/src/ui-buttons.test.ts +144 -144
- package/src/ui-inputs.test.ts +118 -118
- package/src/ui-localization.test.ts +113 -113
- package/src/ui-range.test.ts +70 -70
- package/src/ui-selection.test.ts +155 -155
- package/src/ui-tier1.test.ts +142 -142
- package/src/virtual.test.ts +88 -88
- package/src/virtualization/column-virtualizer.test.ts +27 -27
- package/src/virtualization/column-virtualizer.ts +30 -30
- package/src/virtualization/svelte-virtualizer.svelte.ts +26 -26
- package/src/virtualization/types.ts +30 -30
- package/src/virtualization/virtualizer.test.ts +47 -47
- package/src/virtualization/virtualizer.ts +296 -296
- package/dist/cdn/disclose-version-DoD9AFD_.js +0 -2958
|
@@ -0,0 +1,1925 @@
|
|
|
1
|
+
import { $n as STALE_REACTION, Cr as lifecycle_outside_component, Rn as get_stack, Sr as invalid_snippet_arguments, dr as has_own_property, hr as noop, ir as deferred, mr as is_promise, t as subscribe_to_store, wr as missing_context } from "./utils-mR9mAWyK.js";
|
|
2
|
+
import { t as async_mode_flag } from "./flags-BD-lYX7s.js";
|
|
3
|
+
import { l as UNINITIALIZED, n as FILENAME } from "./constants-RLNOXCpz.js";
|
|
4
|
+
import { i as EMPTY_COMMENT, n as BLOCK_OPEN, o as is_tag_valid_with_ancestor, r as BLOCK_OPEN_ELSE, s as is_tag_valid_with_parent, t as BLOCK_CLOSE } from "./hydration-D3UBU2t8.js";
|
|
5
|
+
import { _ as is_void, a as is_boolean_attribute, b as escape_html, f as is_raw_text_element, i as hash, t as REGEX_VALID_TAG_NAME } from "./utils-lObbumRX.js";
|
|
6
|
+
import { a as attr, c as to_style, o as clsx, r as validate_store, s as to_class } from "./validate-CezNmRkM.js";
|
|
7
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/errors.js
|
|
8
|
+
/**
|
|
9
|
+
* The node API `AsyncLocalStorage` is not available, but is required to use async server rendering.
|
|
10
|
+
* @returns {never}
|
|
11
|
+
*/
|
|
12
|
+
function async_local_storage_unavailable() {
|
|
13
|
+
const error = /* @__PURE__ */ new Error(`async_local_storage_unavailable\nThe node API \`AsyncLocalStorage\` is not available, but is required to use async server rendering.\nhttps://svelte.dev/e/async_local_storage_unavailable`);
|
|
14
|
+
error.name = "Svelte error";
|
|
15
|
+
throw error;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Encountered asynchronous work while rendering synchronously.
|
|
19
|
+
* @returns {never}
|
|
20
|
+
*/
|
|
21
|
+
function await_invalid() {
|
|
22
|
+
const error = /* @__PURE__ */ new Error(`await_invalid\nEncountered asynchronous work while rendering synchronously.\nhttps://svelte.dev/e/await_invalid`);
|
|
23
|
+
error.name = "Svelte error";
|
|
24
|
+
throw error;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* `<svelte:element this="%tag%">` is not a valid element name — the element will not be rendered
|
|
28
|
+
* @param {string} tag
|
|
29
|
+
* @returns {never}
|
|
30
|
+
*/
|
|
31
|
+
function dynamic_element_invalid_tag(tag) {
|
|
32
|
+
const error = /* @__PURE__ */ new Error(`dynamic_element_invalid_tag\n\`<svelte:element this="${tag}">\` is not a valid element name — the element will not be rendered\nhttps://svelte.dev/e/dynamic_element_invalid_tag`);
|
|
33
|
+
error.name = "Svelte error";
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The `html` property of server render results has been deprecated. Use `body` instead.
|
|
38
|
+
* @returns {never}
|
|
39
|
+
*/
|
|
40
|
+
function html_deprecated() {
|
|
41
|
+
const error = /* @__PURE__ */ new Error(`html_deprecated\nThe \`html\` property of server render results has been deprecated. Use \`body\` instead.\nhttps://svelte.dev/e/html_deprecated`);
|
|
42
|
+
error.name = "Svelte error";
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Attempted to set `hydratable` with key `%key%` twice with different values.
|
|
47
|
+
*
|
|
48
|
+
* %stack%
|
|
49
|
+
* @param {string} key
|
|
50
|
+
* @param {string} stack
|
|
51
|
+
* @returns {never}
|
|
52
|
+
*/
|
|
53
|
+
function hydratable_clobbering(key, stack) {
|
|
54
|
+
const error = /* @__PURE__ */ new Error(`hydratable_clobbering\nAttempted to set \`hydratable\` with key \`${key}\` twice with different values.
|
|
55
|
+
|
|
56
|
+
${stack}\nhttps://svelte.dev/e/hydratable_clobbering`);
|
|
57
|
+
error.name = "Svelte error";
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Failed to serialize `hydratable` data for key `%key%`.
|
|
62
|
+
*
|
|
63
|
+
* `hydratable` can serialize anything [`uneval` from `devalue`](https://npmjs.com/package/uneval) can, plus Promises.
|
|
64
|
+
*
|
|
65
|
+
* Cause:
|
|
66
|
+
* %stack%
|
|
67
|
+
* @param {string} key
|
|
68
|
+
* @param {string} stack
|
|
69
|
+
* @returns {never}
|
|
70
|
+
*/
|
|
71
|
+
function hydratable_serialization_failed(key, stack) {
|
|
72
|
+
const error = /* @__PURE__ */ new Error(`hydratable_serialization_failed\nFailed to serialize \`hydratable\` data for key \`${key}\`.
|
|
73
|
+
|
|
74
|
+
\`hydratable\` can serialize anything [\`uneval\` from \`devalue\`](https://npmjs.com/package/uneval) can, plus Promises.
|
|
75
|
+
|
|
76
|
+
Cause:
|
|
77
|
+
${stack}\nhttps://svelte.dev/e/hydratable_serialization_failed`);
|
|
78
|
+
error.name = "Svelte error";
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* `csp.nonce` was set while `csp.hash` was `true`. These options cannot be used simultaneously.
|
|
83
|
+
* @returns {never}
|
|
84
|
+
*/
|
|
85
|
+
function invalid_csp() {
|
|
86
|
+
const error = /* @__PURE__ */ new Error(`invalid_csp\n\`csp.nonce\` was set while \`csp.hash\` was \`true\`. These options cannot be used simultaneously.\nhttps://svelte.dev/e/invalid_csp`);
|
|
87
|
+
error.name = "Svelte error";
|
|
88
|
+
throw error;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* The `idPrefix` option cannot include `--`.
|
|
92
|
+
* @returns {never}
|
|
93
|
+
*/
|
|
94
|
+
function invalid_id_prefix() {
|
|
95
|
+
const error = /* @__PURE__ */ new Error(`invalid_id_prefix\nThe \`idPrefix\` option cannot include \`--\`.\nhttps://svelte.dev/e/invalid_id_prefix`);
|
|
96
|
+
error.name = "Svelte error";
|
|
97
|
+
throw error;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* `%name%(...)` is not available on the server
|
|
101
|
+
* @param {string} name
|
|
102
|
+
* @returns {never}
|
|
103
|
+
*/
|
|
104
|
+
function lifecycle_function_unavailable(name) {
|
|
105
|
+
const error = /* @__PURE__ */ new Error(`lifecycle_function_unavailable\n\`${name}(...)\` is not available on the server\nhttps://svelte.dev/e/lifecycle_function_unavailable`);
|
|
106
|
+
error.name = "Svelte error";
|
|
107
|
+
throw error;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Could not resolve `render` context.
|
|
111
|
+
* @returns {never}
|
|
112
|
+
*/
|
|
113
|
+
function server_context_required() {
|
|
114
|
+
const error = /* @__PURE__ */ new Error(`server_context_required\nCould not resolve \`render\` context.\nhttps://svelte.dev/e/server_context_required`);
|
|
115
|
+
error.name = "Svelte error";
|
|
116
|
+
throw error;
|
|
117
|
+
}
|
|
118
|
+
//#endregion
|
|
119
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/context.js
|
|
120
|
+
/** @import { SSRContext } from '#server' */
|
|
121
|
+
/** @type {SSRContext | null} */
|
|
122
|
+
var ssr_context = null;
|
|
123
|
+
/** @param {SSRContext | null} v */
|
|
124
|
+
function set_ssr_context(v) {
|
|
125
|
+
ssr_context = v;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* @template T
|
|
129
|
+
* @returns {[() => T, (context: T) => T]}
|
|
130
|
+
* @since 5.40.0
|
|
131
|
+
*/
|
|
132
|
+
function createContext() {
|
|
133
|
+
const key = {};
|
|
134
|
+
return [() => {
|
|
135
|
+
if (!hasContext(key)) missing_context();
|
|
136
|
+
return getContext(key);
|
|
137
|
+
}, (context) => setContext(key, context)];
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* @template T
|
|
141
|
+
* @param {any} key
|
|
142
|
+
* @returns {T}
|
|
143
|
+
*/
|
|
144
|
+
function getContext(key) {
|
|
145
|
+
return get_or_init_context_map("getContext").get(key);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* @template T
|
|
149
|
+
* @param {any} key
|
|
150
|
+
* @param {T} context
|
|
151
|
+
* @returns {T}
|
|
152
|
+
*/
|
|
153
|
+
function setContext(key, context) {
|
|
154
|
+
get_or_init_context_map("setContext").set(key, context);
|
|
155
|
+
return context;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* @param {any} key
|
|
159
|
+
* @returns {boolean}
|
|
160
|
+
*/
|
|
161
|
+
function hasContext(key) {
|
|
162
|
+
return get_or_init_context_map("hasContext").has(key);
|
|
163
|
+
}
|
|
164
|
+
/** @returns {Map<any, any>} */
|
|
165
|
+
function getAllContexts() {
|
|
166
|
+
return get_or_init_context_map("getAllContexts");
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* @param {string} name
|
|
170
|
+
* @returns {Map<unknown, unknown>}
|
|
171
|
+
*/
|
|
172
|
+
function get_or_init_context_map(name) {
|
|
173
|
+
if (ssr_context === null) lifecycle_outside_component(name);
|
|
174
|
+
return ssr_context.c ??= new Map(get_parent_context(ssr_context) || void 0);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* @param {Function} [fn]
|
|
178
|
+
*/
|
|
179
|
+
function push(fn) {
|
|
180
|
+
ssr_context = {
|
|
181
|
+
p: ssr_context,
|
|
182
|
+
c: null,
|
|
183
|
+
r: null
|
|
184
|
+
};
|
|
185
|
+
ssr_context.function = fn;
|
|
186
|
+
ssr_context.element = ssr_context.p?.element;
|
|
187
|
+
}
|
|
188
|
+
function pop() {
|
|
189
|
+
ssr_context = ssr_context.p;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* @param {SSRContext} ssr_context
|
|
193
|
+
* @returns {Map<unknown, unknown> | null}
|
|
194
|
+
*/
|
|
195
|
+
function get_parent_context(ssr_context) {
|
|
196
|
+
let parent = ssr_context.p;
|
|
197
|
+
while (parent !== null) {
|
|
198
|
+
const context_map = parent.c;
|
|
199
|
+
if (context_map !== null) return context_map;
|
|
200
|
+
parent = parent.p;
|
|
201
|
+
}
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Wraps an `await` expression in such a way that the component context that was
|
|
206
|
+
* active before the expression evaluated can be reapplied afterwards —
|
|
207
|
+
* `await a + b()` becomes `(await $.save(a))() + b()`, meaning `b()` will have access
|
|
208
|
+
* to the context of its component.
|
|
209
|
+
* @template T
|
|
210
|
+
* @param {Promise<T>} promise
|
|
211
|
+
* @returns {Promise<() => T>}
|
|
212
|
+
*/
|
|
213
|
+
async function save(promise) {
|
|
214
|
+
var previous_context = ssr_context;
|
|
215
|
+
var value = await promise;
|
|
216
|
+
return () => {
|
|
217
|
+
ssr_context = previous_context;
|
|
218
|
+
return value;
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
//#endregion
|
|
222
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/abort-signal.js
|
|
223
|
+
/** @type {AbortController | null} */
|
|
224
|
+
var controller = null;
|
|
225
|
+
function abort() {
|
|
226
|
+
controller?.abort(STALE_REACTION);
|
|
227
|
+
controller = null;
|
|
228
|
+
}
|
|
229
|
+
function getAbortSignal() {
|
|
230
|
+
return (controller ??= new AbortController()).signal;
|
|
231
|
+
}
|
|
232
|
+
//#endregion
|
|
233
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/render-context.js
|
|
234
|
+
/** @import { AsyncLocalStorage } from 'node:async_hooks' */
|
|
235
|
+
/** @import { RenderContext } from '#server' */
|
|
236
|
+
/** @type {Promise<void> | null} */
|
|
237
|
+
var current_render = null;
|
|
238
|
+
/** @type {RenderContext | null} */
|
|
239
|
+
var context = null;
|
|
240
|
+
/** @returns {RenderContext} */
|
|
241
|
+
function get_render_context() {
|
|
242
|
+
const store = context ?? als?.getStore();
|
|
243
|
+
if (!store) server_context_required();
|
|
244
|
+
return store;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* @template T
|
|
248
|
+
* @param {() => Promise<T>} fn
|
|
249
|
+
* @returns {Promise<T>}
|
|
250
|
+
*/
|
|
251
|
+
async function with_render_context(fn) {
|
|
252
|
+
context = { hydratable: {
|
|
253
|
+
lookup: /* @__PURE__ */ new Map(),
|
|
254
|
+
comparisons: [],
|
|
255
|
+
unresolved_promises: /* @__PURE__ */ new Map()
|
|
256
|
+
} };
|
|
257
|
+
if (in_webcontainer()) {
|
|
258
|
+
const { promise, resolve } = deferred();
|
|
259
|
+
const previous_render = current_render;
|
|
260
|
+
current_render = promise;
|
|
261
|
+
await previous_render;
|
|
262
|
+
return fn().finally(resolve);
|
|
263
|
+
}
|
|
264
|
+
try {
|
|
265
|
+
if (als === null) async_local_storage_unavailable();
|
|
266
|
+
return als.run(context, fn);
|
|
267
|
+
} finally {
|
|
268
|
+
context = null;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
/** @type {AsyncLocalStorage<RenderContext | null> | null} */
|
|
272
|
+
var als = null;
|
|
273
|
+
/** @type {Promise<void> | null} */
|
|
274
|
+
var als_import = null;
|
|
275
|
+
/**
|
|
276
|
+
*
|
|
277
|
+
* @returns {Promise<void>}
|
|
278
|
+
*/
|
|
279
|
+
function init_render_context() {
|
|
280
|
+
als_import ??= import("node:async_hooks").then((hooks) => {
|
|
281
|
+
als = new hooks.AsyncLocalStorage();
|
|
282
|
+
}).then(noop, noop);
|
|
283
|
+
return als_import;
|
|
284
|
+
}
|
|
285
|
+
function in_webcontainer() {
|
|
286
|
+
return !!globalThis.process?.versions?.webcontainer;
|
|
287
|
+
}
|
|
288
|
+
var MAX_ARRAY_INDEX = 2 ** 32 - 1 - 1;
|
|
289
|
+
//#endregion
|
|
290
|
+
//#region ../../../node_modules/.pnpm/devalue@5.8.1/node_modules/devalue/src/utils.js
|
|
291
|
+
/** @type {Record<string, string>} */
|
|
292
|
+
var escaped = {
|
|
293
|
+
"<": "\\u003C",
|
|
294
|
+
"\\": "\\\\",
|
|
295
|
+
"\b": "\\b",
|
|
296
|
+
"\f": "\\f",
|
|
297
|
+
"\n": "\\n",
|
|
298
|
+
"\r": "\\r",
|
|
299
|
+
" ": "\\t",
|
|
300
|
+
"\u2028": "\\u2028",
|
|
301
|
+
"\u2029": "\\u2029"
|
|
302
|
+
};
|
|
303
|
+
var DevalueError = class extends Error {
|
|
304
|
+
/**
|
|
305
|
+
* @param {string} message
|
|
306
|
+
* @param {string[]} keys
|
|
307
|
+
* @param {any} [value] - The value that failed to be serialized
|
|
308
|
+
* @param {any} [root] - The root value being serialized
|
|
309
|
+
*/
|
|
310
|
+
constructor(message, keys, value, root) {
|
|
311
|
+
super(message);
|
|
312
|
+
this.name = "DevalueError";
|
|
313
|
+
this.path = keys.join("");
|
|
314
|
+
this.value = value;
|
|
315
|
+
this.root = root;
|
|
316
|
+
}
|
|
317
|
+
};
|
|
318
|
+
/** @param {any} thing */
|
|
319
|
+
function is_primitive(thing) {
|
|
320
|
+
return thing === null || typeof thing !== "object" && typeof thing !== "function";
|
|
321
|
+
}
|
|
322
|
+
var object_proto_names = /* @__PURE__ */ Object.getOwnPropertyNames(Object.prototype).sort().join("\0");
|
|
323
|
+
/** @param {any} thing */
|
|
324
|
+
function is_plain_object(thing) {
|
|
325
|
+
const proto = Object.getPrototypeOf(thing);
|
|
326
|
+
return proto === Object.prototype || proto === null || Object.getPrototypeOf(proto) === null || Object.getOwnPropertyNames(proto).sort().join("\0") === object_proto_names;
|
|
327
|
+
}
|
|
328
|
+
/** @param {any} thing */
|
|
329
|
+
function get_type(thing) {
|
|
330
|
+
return Object.prototype.toString.call(thing).slice(8, -1);
|
|
331
|
+
}
|
|
332
|
+
/** @param {string} char */
|
|
333
|
+
function get_escaped_char(char) {
|
|
334
|
+
switch (char) {
|
|
335
|
+
case "\"": return "\\\"";
|
|
336
|
+
case "<": return "\\u003C";
|
|
337
|
+
case "\\": return "\\\\";
|
|
338
|
+
case "\n": return "\\n";
|
|
339
|
+
case "\r": return "\\r";
|
|
340
|
+
case " ": return "\\t";
|
|
341
|
+
case "\b": return "\\b";
|
|
342
|
+
case "\f": return "\\f";
|
|
343
|
+
case "\u2028": return "\\u2028";
|
|
344
|
+
case "\u2029": return "\\u2029";
|
|
345
|
+
default: return char < " " ? `\\u${char.charCodeAt(0).toString(16).padStart(4, "0")}` : "";
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
/** @param {string} str */
|
|
349
|
+
function stringify_string(str) {
|
|
350
|
+
let result = "";
|
|
351
|
+
let last_pos = 0;
|
|
352
|
+
const len = str.length;
|
|
353
|
+
for (let i = 0; i < len; i += 1) {
|
|
354
|
+
const char = str[i];
|
|
355
|
+
const replacement = get_escaped_char(char);
|
|
356
|
+
if (replacement) {
|
|
357
|
+
result += str.slice(last_pos, i) + replacement;
|
|
358
|
+
last_pos = i + 1;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
return `"${last_pos === 0 ? str : result + str.slice(last_pos)}"`;
|
|
362
|
+
}
|
|
363
|
+
/** @param {Record<string | symbol, any>} object */
|
|
364
|
+
function enumerable_symbols(object) {
|
|
365
|
+
return Object.getOwnPropertySymbols(object).filter((symbol) => Object.getOwnPropertyDescriptor(object, symbol).enumerable);
|
|
366
|
+
}
|
|
367
|
+
var is_identifier = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/;
|
|
368
|
+
/** @param {string} key */
|
|
369
|
+
function stringify_key(key) {
|
|
370
|
+
return is_identifier.test(key) ? "." + key : "[" + JSON.stringify(key) + "]";
|
|
371
|
+
}
|
|
372
|
+
/** @param {number} n */
|
|
373
|
+
function is_valid_array_index(n) {
|
|
374
|
+
if (!Number.isInteger(n)) return false;
|
|
375
|
+
if (n < 0) return false;
|
|
376
|
+
if (n > MAX_ARRAY_INDEX) return false;
|
|
377
|
+
return true;
|
|
378
|
+
}
|
|
379
|
+
/** @param {string} s */
|
|
380
|
+
function is_valid_array_index_string(s) {
|
|
381
|
+
if (s.length === 0) return false;
|
|
382
|
+
if (s.length > 1 && s.charCodeAt(0) === 48) return false;
|
|
383
|
+
for (let i = 0; i < s.length; i++) {
|
|
384
|
+
const c = s.charCodeAt(i);
|
|
385
|
+
if (c < 48 || c > 57) return false;
|
|
386
|
+
}
|
|
387
|
+
return is_valid_array_index(+s);
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Finds the populated indices of an array.
|
|
391
|
+
* @param {unknown[]} array
|
|
392
|
+
*/
|
|
393
|
+
function valid_array_indices(array) {
|
|
394
|
+
const keys = Object.keys(array);
|
|
395
|
+
for (var i = keys.length - 1; i >= 0; i--) if (is_valid_array_index_string(keys[i])) break;
|
|
396
|
+
keys.length = i + 1;
|
|
397
|
+
return keys;
|
|
398
|
+
}
|
|
399
|
+
//#endregion
|
|
400
|
+
//#region ../../../node_modules/.pnpm/devalue@5.8.1/node_modules/devalue/src/uneval.js
|
|
401
|
+
var chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$";
|
|
402
|
+
var unsafe_chars = /[<\b\f\n\r\t\0\u2028\u2029]/g;
|
|
403
|
+
var reserved = /^(?:do|if|in|for|int|let|new|try|var|byte|case|char|else|enum|goto|long|this|void|with|await|break|catch|class|const|final|float|short|super|throw|while|yield|delete|double|export|import|native|return|switch|throws|typeof|boolean|default|extends|finally|package|private|abstract|continue|debugger|function|volatile|interface|protected|transient|implements|instanceof|synchronized)$/;
|
|
404
|
+
/**
|
|
405
|
+
* Turn a value into the JavaScript that creates an equivalent value
|
|
406
|
+
* @param {any} value
|
|
407
|
+
* @param {(value: any, uneval: (value: any) => string) => string | void} [replacer]
|
|
408
|
+
*/
|
|
409
|
+
function uneval(value, replacer) {
|
|
410
|
+
const counts = /* @__PURE__ */ new Map();
|
|
411
|
+
/** @type {string[]} */
|
|
412
|
+
const keys = [];
|
|
413
|
+
const custom = /* @__PURE__ */ new Map();
|
|
414
|
+
/** @param {any} thing */
|
|
415
|
+
function walk(thing) {
|
|
416
|
+
if (!is_primitive(thing)) {
|
|
417
|
+
if (counts.has(thing)) {
|
|
418
|
+
counts.set(thing, counts.get(thing) + 1);
|
|
419
|
+
return;
|
|
420
|
+
}
|
|
421
|
+
counts.set(thing, 1);
|
|
422
|
+
if (replacer) {
|
|
423
|
+
const str = replacer(thing, (value) => uneval(value, replacer));
|
|
424
|
+
if (typeof str === "string") {
|
|
425
|
+
custom.set(thing, str);
|
|
426
|
+
return;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
if (typeof thing === "function") throw new DevalueError(`Cannot stringify a function`, keys, thing, value);
|
|
430
|
+
switch (get_type(thing)) {
|
|
431
|
+
case "Number":
|
|
432
|
+
case "BigInt":
|
|
433
|
+
case "String":
|
|
434
|
+
case "Boolean":
|
|
435
|
+
case "Date":
|
|
436
|
+
case "RegExp":
|
|
437
|
+
case "URL":
|
|
438
|
+
case "URLSearchParams": return;
|
|
439
|
+
case "Array":
|
|
440
|
+
/** @type {any[]} */ thing.forEach((value, i) => {
|
|
441
|
+
keys.push(`[${i}]`);
|
|
442
|
+
walk(value);
|
|
443
|
+
keys.pop();
|
|
444
|
+
});
|
|
445
|
+
break;
|
|
446
|
+
case "Set":
|
|
447
|
+
Array.from(thing).forEach(walk);
|
|
448
|
+
break;
|
|
449
|
+
case "Map":
|
|
450
|
+
for (const [key, value] of thing) {
|
|
451
|
+
keys.push(`.get(${is_primitive(key) ? stringify_primitive(key) : "..."})`);
|
|
452
|
+
walk(value);
|
|
453
|
+
keys.pop();
|
|
454
|
+
}
|
|
455
|
+
break;
|
|
456
|
+
case "Int8Array":
|
|
457
|
+
case "Uint8Array":
|
|
458
|
+
case "Uint8ClampedArray":
|
|
459
|
+
case "Int16Array":
|
|
460
|
+
case "Uint16Array":
|
|
461
|
+
case "Float16Array":
|
|
462
|
+
case "Int32Array":
|
|
463
|
+
case "Uint32Array":
|
|
464
|
+
case "Float32Array":
|
|
465
|
+
case "Float64Array":
|
|
466
|
+
case "BigInt64Array":
|
|
467
|
+
case "BigUint64Array":
|
|
468
|
+
case "DataView":
|
|
469
|
+
walk(thing.buffer);
|
|
470
|
+
return;
|
|
471
|
+
case "ArrayBuffer": return;
|
|
472
|
+
case "Temporal.Duration":
|
|
473
|
+
case "Temporal.Instant":
|
|
474
|
+
case "Temporal.PlainDate":
|
|
475
|
+
case "Temporal.PlainTime":
|
|
476
|
+
case "Temporal.PlainDateTime":
|
|
477
|
+
case "Temporal.PlainMonthDay":
|
|
478
|
+
case "Temporal.PlainYearMonth":
|
|
479
|
+
case "Temporal.ZonedDateTime": return;
|
|
480
|
+
default:
|
|
481
|
+
if (!is_plain_object(thing)) throw new DevalueError(`Cannot stringify arbitrary non-POJOs`, keys, thing, value);
|
|
482
|
+
if (enumerable_symbols(thing).length > 0) throw new DevalueError(`Cannot stringify POJOs with symbolic keys`, keys, thing, value);
|
|
483
|
+
for (const key of Object.keys(thing)) {
|
|
484
|
+
if (key === "__proto__") throw new DevalueError(`Cannot stringify objects with __proto__ keys`, keys, thing, value);
|
|
485
|
+
keys.push(stringify_key(key));
|
|
486
|
+
walk(thing[key]);
|
|
487
|
+
keys.pop();
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
} else if (typeof thing === "symbol") throw new DevalueError(`Cannot stringify a Symbol primitive`, keys, thing, value);
|
|
491
|
+
}
|
|
492
|
+
walk(value);
|
|
493
|
+
const names = /* @__PURE__ */ new Map();
|
|
494
|
+
Array.from(counts).filter((entry) => entry[1] > 1).sort((a, b) => b[1] - a[1]).forEach((entry, i) => {
|
|
495
|
+
names.set(entry[0], get_name(i));
|
|
496
|
+
});
|
|
497
|
+
/**
|
|
498
|
+
* @param {any} thing
|
|
499
|
+
* @returns {string}
|
|
500
|
+
*/
|
|
501
|
+
function stringify(thing) {
|
|
502
|
+
if (names.has(thing)) return names.get(thing);
|
|
503
|
+
if (is_primitive(thing)) return stringify_primitive(thing);
|
|
504
|
+
if (custom.has(thing)) return custom.get(thing);
|
|
505
|
+
const type = get_type(thing);
|
|
506
|
+
switch (type) {
|
|
507
|
+
case "Number":
|
|
508
|
+
case "String":
|
|
509
|
+
case "Boolean":
|
|
510
|
+
case "BigInt": return `Object(${stringify(thing.valueOf())})`;
|
|
511
|
+
case "RegExp":
|
|
512
|
+
const { source, flags } = thing;
|
|
513
|
+
return flags ? `new RegExp(${stringify_string(source)},"${flags}")` : `new RegExp(${stringify_string(source)})`;
|
|
514
|
+
case "Date": return `new Date(${thing.getTime()})`;
|
|
515
|
+
case "URL": return `new URL(${stringify_string(thing.toString())})`;
|
|
516
|
+
case "URLSearchParams": return `new URLSearchParams(${stringify_string(thing.toString())})`;
|
|
517
|
+
case "Array": {
|
|
518
|
+
let has_holes = false;
|
|
519
|
+
let result = "[";
|
|
520
|
+
for (let i = 0; i < thing.length; i += 1) {
|
|
521
|
+
if (i > 0) result += ",";
|
|
522
|
+
if (Object.hasOwn(thing, i)) result += stringify(thing[i]);
|
|
523
|
+
else if (!has_holes) {
|
|
524
|
+
const populated_keys = valid_array_indices(thing);
|
|
525
|
+
const population = populated_keys.length;
|
|
526
|
+
const d = String(thing.length).length;
|
|
527
|
+
if (thing.length + 2 > 25 + d + population * (d + 2)) {
|
|
528
|
+
const entries = populated_keys.map((k) => `${k}:${stringify(thing[k])}`).join(",");
|
|
529
|
+
return `Object.assign(Array(${thing.length}),{${entries}})`;
|
|
530
|
+
}
|
|
531
|
+
has_holes = true;
|
|
532
|
+
i -= 1;
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
const tail = thing.length === 0 || thing.length - 1 in thing ? "" : ",";
|
|
536
|
+
return result + tail + "]";
|
|
537
|
+
}
|
|
538
|
+
case "Set":
|
|
539
|
+
case "Map": return `new ${type}([${Array.from(thing).map(stringify).join(",")}])`;
|
|
540
|
+
case "Int8Array":
|
|
541
|
+
case "Uint8Array":
|
|
542
|
+
case "Uint8ClampedArray":
|
|
543
|
+
case "Int16Array":
|
|
544
|
+
case "Uint16Array":
|
|
545
|
+
case "Float16Array":
|
|
546
|
+
case "Int32Array":
|
|
547
|
+
case "Uint32Array":
|
|
548
|
+
case "Float32Array":
|
|
549
|
+
case "Float64Array":
|
|
550
|
+
case "BigInt64Array":
|
|
551
|
+
case "BigUint64Array": {
|
|
552
|
+
let str = `new ${type}`;
|
|
553
|
+
if (!names.has(thing.buffer)) {
|
|
554
|
+
const array = new thing.constructor(thing.buffer);
|
|
555
|
+
str += `([${array}])`;
|
|
556
|
+
} else str += `(${stringify(thing.buffer)})`;
|
|
557
|
+
if (thing.byteLength !== thing.buffer.byteLength) {
|
|
558
|
+
const start = thing.byteOffset / thing.BYTES_PER_ELEMENT;
|
|
559
|
+
const end = start + thing.length;
|
|
560
|
+
str += `.subarray(${start},${end})`;
|
|
561
|
+
}
|
|
562
|
+
return str;
|
|
563
|
+
}
|
|
564
|
+
case "DataView": {
|
|
565
|
+
let str = `new DataView`;
|
|
566
|
+
if (!names.has(thing.buffer)) str += `(new Uint8Array([${new Uint8Array(thing.buffer)}]).buffer`;
|
|
567
|
+
else str += `(${stringify(thing.buffer)}`;
|
|
568
|
+
if (thing.byteLength !== thing.buffer.byteLength) str += `,${thing.startOffset},${thing.byteLength}`;
|
|
569
|
+
return str + ")";
|
|
570
|
+
}
|
|
571
|
+
case "ArrayBuffer": return `new Uint8Array([${new Uint8Array(thing).toString()}]).buffer`;
|
|
572
|
+
case "Temporal.Duration":
|
|
573
|
+
case "Temporal.Instant":
|
|
574
|
+
case "Temporal.PlainDate":
|
|
575
|
+
case "Temporal.PlainTime":
|
|
576
|
+
case "Temporal.PlainDateTime":
|
|
577
|
+
case "Temporal.PlainMonthDay":
|
|
578
|
+
case "Temporal.PlainYearMonth":
|
|
579
|
+
case "Temporal.ZonedDateTime": return `${type}.from(${stringify_string(thing.toString())})`;
|
|
580
|
+
default:
|
|
581
|
+
const keys = Object.keys(thing);
|
|
582
|
+
const obj = keys.map((key) => `${safe_key(key)}:${stringify(thing[key])}`).join(",");
|
|
583
|
+
if (Object.getPrototypeOf(thing) === null) return keys.length > 0 ? `{${obj},__proto__:null}` : `{__proto__:null}`;
|
|
584
|
+
return `{${obj}}`;
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
const str = stringify(value);
|
|
588
|
+
if (names.size) {
|
|
589
|
+
/** @type {string[]} */
|
|
590
|
+
const params = [];
|
|
591
|
+
/** @type {string[]} */
|
|
592
|
+
const statements = [];
|
|
593
|
+
/** @type {string[]} */
|
|
594
|
+
const values = [];
|
|
595
|
+
names.forEach((name, thing) => {
|
|
596
|
+
params.push(name);
|
|
597
|
+
if (custom.has(thing)) {
|
|
598
|
+
values.push(custom.get(thing));
|
|
599
|
+
return;
|
|
600
|
+
}
|
|
601
|
+
if (is_primitive(thing)) {
|
|
602
|
+
values.push(stringify_primitive(thing));
|
|
603
|
+
return;
|
|
604
|
+
}
|
|
605
|
+
const type = get_type(thing);
|
|
606
|
+
switch (type) {
|
|
607
|
+
case "Number":
|
|
608
|
+
case "String":
|
|
609
|
+
case "Boolean":
|
|
610
|
+
case "BigInt":
|
|
611
|
+
values.push(`Object(${stringify(thing.valueOf())})`);
|
|
612
|
+
break;
|
|
613
|
+
case "RegExp":
|
|
614
|
+
const { source, flags } = thing;
|
|
615
|
+
const regexp = flags ? `new RegExp(${stringify_string(source)},"${flags}")` : `new RegExp(${stringify_string(source)})`;
|
|
616
|
+
values.push(regexp);
|
|
617
|
+
break;
|
|
618
|
+
case "Date":
|
|
619
|
+
values.push(`new Date(${thing.getTime()})`);
|
|
620
|
+
break;
|
|
621
|
+
case "URL":
|
|
622
|
+
values.push(`new URL(${stringify_string(thing.toString())})`);
|
|
623
|
+
break;
|
|
624
|
+
case "URLSearchParams":
|
|
625
|
+
values.push(`new URLSearchParams(${stringify_string(thing.toString())})`);
|
|
626
|
+
break;
|
|
627
|
+
case "Array":
|
|
628
|
+
values.push(`Array(${thing.length})`);
|
|
629
|
+
/** @type {any[]} */ thing.forEach((v, i) => {
|
|
630
|
+
statements.push(`${name}[${i}]=${stringify(v)}`);
|
|
631
|
+
});
|
|
632
|
+
break;
|
|
633
|
+
case "Set":
|
|
634
|
+
values.push(`new Set`);
|
|
635
|
+
statements.push(`${name}.${Array.from(thing).map((v) => `add(${stringify(v)})`).join(".")}`);
|
|
636
|
+
break;
|
|
637
|
+
case "Map":
|
|
638
|
+
values.push(`new Map`);
|
|
639
|
+
statements.push(`${name}.${Array.from(thing).map(([k, v]) => `set(${stringify(k)}, ${stringify(v)})`).join(".")}`);
|
|
640
|
+
break;
|
|
641
|
+
case "Int8Array":
|
|
642
|
+
case "Uint8Array":
|
|
643
|
+
case "Uint8ClampedArray":
|
|
644
|
+
case "Int16Array":
|
|
645
|
+
case "Uint16Array":
|
|
646
|
+
case "Float16Array":
|
|
647
|
+
case "Int32Array":
|
|
648
|
+
case "Uint32Array":
|
|
649
|
+
case "Float32Array":
|
|
650
|
+
case "Float64Array":
|
|
651
|
+
case "BigInt64Array":
|
|
652
|
+
case "BigUint64Array": {
|
|
653
|
+
let str = `new ${type}`;
|
|
654
|
+
if (!names.has(thing.buffer)) {
|
|
655
|
+
const array = new thing.constructor(thing.buffer);
|
|
656
|
+
str += `([${array}])`;
|
|
657
|
+
} else str += `(${stringify(thing.buffer)})`;
|
|
658
|
+
if (thing.byteLength !== thing.buffer.byteLength) {
|
|
659
|
+
const start = thing.byteOffset / thing.BYTES_PER_ELEMENT;
|
|
660
|
+
const end = start + thing.length;
|
|
661
|
+
str += `.subarray(${start},${end})`;
|
|
662
|
+
}
|
|
663
|
+
values.push(`{}`);
|
|
664
|
+
statements.push(`${name}=${str}`);
|
|
665
|
+
break;
|
|
666
|
+
}
|
|
667
|
+
case "DataView": {
|
|
668
|
+
let str = `new DataView`;
|
|
669
|
+
if (!names.has(thing.buffer)) str += `(new Uint8Array([${new Uint8Array(thing.buffer)}]).buffer`;
|
|
670
|
+
else str += `(${stringify(thing.buffer)}`;
|
|
671
|
+
if (thing.byteLength !== thing.buffer.byteLength) str += `,${thing.byteOffset},${thing.byteLength}`;
|
|
672
|
+
str += ")";
|
|
673
|
+
values.push(`{}`);
|
|
674
|
+
statements.push(`${name}=${str}`);
|
|
675
|
+
break;
|
|
676
|
+
}
|
|
677
|
+
case "ArrayBuffer":
|
|
678
|
+
values.push(`new Uint8Array([${new Uint8Array(thing)}]).buffer`);
|
|
679
|
+
break;
|
|
680
|
+
default:
|
|
681
|
+
values.push(Object.getPrototypeOf(thing) === null ? "Object.create(null)" : "{}");
|
|
682
|
+
Object.keys(thing).forEach((key) => {
|
|
683
|
+
statements.push(`${name}${safe_prop(key)}=${stringify(thing[key])}`);
|
|
684
|
+
});
|
|
685
|
+
}
|
|
686
|
+
});
|
|
687
|
+
statements.push(`return ${str}`);
|
|
688
|
+
return `(function(${params.join(",")}){${statements.join(";")}}(${values.join(",")}))`;
|
|
689
|
+
} else return str;
|
|
690
|
+
}
|
|
691
|
+
/** @param {number} num */
|
|
692
|
+
function get_name(num) {
|
|
693
|
+
let name = "";
|
|
694
|
+
do {
|
|
695
|
+
name = chars[num % 54] + name;
|
|
696
|
+
num = ~~(num / 54) - 1;
|
|
697
|
+
} while (num >= 0);
|
|
698
|
+
return reserved.test(name) ? `${name}0` : name;
|
|
699
|
+
}
|
|
700
|
+
/** @param {string} c */
|
|
701
|
+
function escape_unsafe_char(c) {
|
|
702
|
+
return escaped[c] || c;
|
|
703
|
+
}
|
|
704
|
+
/** @param {string} str */
|
|
705
|
+
function escape_unsafe_chars(str) {
|
|
706
|
+
return str.replace(unsafe_chars, escape_unsafe_char);
|
|
707
|
+
}
|
|
708
|
+
/** @param {string} key */
|
|
709
|
+
function safe_key(key) {
|
|
710
|
+
return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key) ? key : escape_unsafe_chars(JSON.stringify(key));
|
|
711
|
+
}
|
|
712
|
+
/** @param {string} key */
|
|
713
|
+
function safe_prop(key) {
|
|
714
|
+
return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key) ? `.${key}` : `[${escape_unsafe_chars(JSON.stringify(key))}]`;
|
|
715
|
+
}
|
|
716
|
+
/** @param {any} thing */
|
|
717
|
+
function stringify_primitive(thing) {
|
|
718
|
+
const type = typeof thing;
|
|
719
|
+
if (type === "string") return stringify_string(thing);
|
|
720
|
+
if (thing === void 0) return "void 0";
|
|
721
|
+
if (thing === 0 && 1 / thing < 0) return "-0";
|
|
722
|
+
const str = String(thing);
|
|
723
|
+
if (type === "number") return str.replace(/^(-)?0\./, "$1.");
|
|
724
|
+
if (type === "bigint") return thing + "n";
|
|
725
|
+
return str;
|
|
726
|
+
}
|
|
727
|
+
//#endregion
|
|
728
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/warnings.js
|
|
729
|
+
var bold = "font-weight: bold";
|
|
730
|
+
var normal = "font-weight: normal";
|
|
731
|
+
/**
|
|
732
|
+
* A `hydratable` value with key `%key%` was created, but at least part of it was not used during the render.
|
|
733
|
+
*
|
|
734
|
+
* The `hydratable` was initialized in:
|
|
735
|
+
* %stack%
|
|
736
|
+
* @param {string} key
|
|
737
|
+
* @param {string} stack
|
|
738
|
+
*/
|
|
739
|
+
function unresolved_hydratable(key, stack) {
|
|
740
|
+
console.warn(`%c[svelte] unresolved_hydratable\n%cA \`hydratable\` value with key \`${key}\` was created, but at least part of it was not used during the render.
|
|
741
|
+
|
|
742
|
+
The \`hydratable\` was initialized in:
|
|
743
|
+
${stack}\nhttps://svelte.dev/e/unresolved_hydratable`, bold, normal);
|
|
744
|
+
}
|
|
745
|
+
//#endregion
|
|
746
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/blocks/html.js
|
|
747
|
+
/**
|
|
748
|
+
* @param {string} value
|
|
749
|
+
*/
|
|
750
|
+
function html(value) {
|
|
751
|
+
var html = String(value ?? "");
|
|
752
|
+
return `<!--${hash(html)}-->` + html + "<!---->";
|
|
753
|
+
}
|
|
754
|
+
//#endregion
|
|
755
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/index.js
|
|
756
|
+
var INVALID_ATTR_NAME_CHAR_REGEX = /[\s'">/=\u{FDD0}-\u{FDEF}\u{FFFE}\u{FFFF}\u{1FFFE}\u{1FFFF}\u{2FFFE}\u{2FFFF}\u{3FFFE}\u{3FFFF}\u{4FFFE}\u{4FFFF}\u{5FFFE}\u{5FFFF}\u{6FFFE}\u{6FFFF}\u{7FFFE}\u{7FFFF}\u{8FFFE}\u{8FFFF}\u{9FFFE}\u{9FFFF}\u{AFFFE}\u{AFFFF}\u{BFFFE}\u{BFFFF}\u{CFFFE}\u{CFFFF}\u{DFFFE}\u{DFFFF}\u{EFFFE}\u{EFFFF}\u{FFFFE}\u{FFFFF}\u{10FFFE}\u{10FFFF}]/u;
|
|
757
|
+
/**
|
|
758
|
+
* @param {Renderer} renderer
|
|
759
|
+
* @param {string} tag
|
|
760
|
+
* @param {() => void} attributes_fn
|
|
761
|
+
* @param {() => void} children_fn
|
|
762
|
+
* @returns {void}
|
|
763
|
+
*/
|
|
764
|
+
function element(renderer, tag, attributes_fn = noop, children_fn = noop) {
|
|
765
|
+
renderer.push("<!---->");
|
|
766
|
+
if (tag) {
|
|
767
|
+
if (!REGEX_VALID_TAG_NAME.test(tag)) dynamic_element_invalid_tag(tag);
|
|
768
|
+
renderer.push(`<${tag}`);
|
|
769
|
+
attributes_fn();
|
|
770
|
+
renderer.push(`>`);
|
|
771
|
+
if (!is_void(tag)) {
|
|
772
|
+
children_fn();
|
|
773
|
+
if (!is_raw_text_element(tag)) renderer.push(EMPTY_COMMENT);
|
|
774
|
+
renderer.push(`</${tag}>`);
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
renderer.push("<!---->");
|
|
778
|
+
}
|
|
779
|
+
/**
|
|
780
|
+
* Only available on the server and when compiling with the `server` option.
|
|
781
|
+
* Takes a component and returns an object with `body` and `head` properties on it, which you can use to populate the HTML when server-rendering your app.
|
|
782
|
+
* @template {Record<string, any>} Props
|
|
783
|
+
* @param {Component<Props> | ComponentType<SvelteComponent<Props>>} component
|
|
784
|
+
* @param {{ props?: Omit<Props, '$$slots' | '$$events'>; context?: Map<any, any>; idPrefix?: string; csp?: Csp; transformError?: (error: unknown) => unknown }} [options]
|
|
785
|
+
* @returns {RenderOutput}
|
|
786
|
+
*/
|
|
787
|
+
function render(component, options = {}) {
|
|
788
|
+
if (options.csp?.hash && options.csp.nonce) invalid_csp();
|
|
789
|
+
return Renderer.render(component, options);
|
|
790
|
+
}
|
|
791
|
+
/**
|
|
792
|
+
* @param {string} hash
|
|
793
|
+
* @param {Renderer} renderer
|
|
794
|
+
* @param {(renderer: Renderer) => Promise<void> | void} fn
|
|
795
|
+
* @returns {void}
|
|
796
|
+
*/
|
|
797
|
+
function head(hash, renderer, fn) {
|
|
798
|
+
renderer.head((renderer) => {
|
|
799
|
+
renderer.push(`<!--${hash}-->`);
|
|
800
|
+
renderer.child(fn);
|
|
801
|
+
renderer.push(EMPTY_COMMENT);
|
|
802
|
+
});
|
|
803
|
+
}
|
|
804
|
+
/**
|
|
805
|
+
* @param {Renderer} renderer
|
|
806
|
+
* @param {boolean} is_html
|
|
807
|
+
* @param {Record<string, string>} props
|
|
808
|
+
* @param {() => void} component
|
|
809
|
+
* @param {boolean} dynamic
|
|
810
|
+
* @returns {void}
|
|
811
|
+
*/
|
|
812
|
+
function css_props(renderer, is_html, props, component, dynamic = false) {
|
|
813
|
+
const styles = style_object_to_string(props);
|
|
814
|
+
if (is_html) renderer.push(`<svelte-css-wrapper style="display: contents; ${styles}">`);
|
|
815
|
+
else renderer.push(`<g style="${styles}">`);
|
|
816
|
+
component();
|
|
817
|
+
if (!dynamic) renderer.push("<!---->");
|
|
818
|
+
if (is_html) renderer.push("</svelte-css-wrapper>");
|
|
819
|
+
else renderer.push("</g>");
|
|
820
|
+
}
|
|
821
|
+
/**
|
|
822
|
+
* @param {Record<string, unknown>} attrs
|
|
823
|
+
* @param {string} [css_hash]
|
|
824
|
+
* @param {Record<string, boolean>} [classes]
|
|
825
|
+
* @param {Record<string, string>} [styles]
|
|
826
|
+
* @param {number} [flags]
|
|
827
|
+
* @returns {string}
|
|
828
|
+
*/
|
|
829
|
+
function attributes(attrs, css_hash, classes, styles, flags = 0) {
|
|
830
|
+
if (styles) attrs.style = to_style(attrs.style, styles);
|
|
831
|
+
if (attrs.class) attrs.class = clsx(attrs.class);
|
|
832
|
+
if (css_hash || classes) attrs.class = to_class(attrs.class, css_hash, classes);
|
|
833
|
+
let attr_str = "";
|
|
834
|
+
let name;
|
|
835
|
+
const is_html = (flags & 1) === 0;
|
|
836
|
+
const lowercase = (flags & 2) === 0;
|
|
837
|
+
const is_input = (flags & 4) !== 0;
|
|
838
|
+
for (name of Object.keys(attrs)) {
|
|
839
|
+
if (typeof attrs[name] === "function") continue;
|
|
840
|
+
if (name[0] === "$" && name[1] === "$") continue;
|
|
841
|
+
if (name === "" || INVALID_ATTR_NAME_CHAR_REGEX.test(name)) continue;
|
|
842
|
+
var value = attrs[name];
|
|
843
|
+
var lower = name.toLowerCase();
|
|
844
|
+
if (lowercase) name = lower;
|
|
845
|
+
if (lower.length > 2 && lower.startsWith("on")) continue;
|
|
846
|
+
if (is_input) {
|
|
847
|
+
if (name === "defaultvalue" || name === "defaultchecked") {
|
|
848
|
+
name = name === "defaultvalue" ? "value" : "checked";
|
|
849
|
+
if (attrs[name]) continue;
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
attr_str += attr(name, value, is_html && is_boolean_attribute(name));
|
|
853
|
+
}
|
|
854
|
+
return attr_str;
|
|
855
|
+
}
|
|
856
|
+
/**
|
|
857
|
+
* @param {Record<string, unknown>[]} props
|
|
858
|
+
* @returns {Record<string, unknown>}
|
|
859
|
+
*/
|
|
860
|
+
function spread_props(props) {
|
|
861
|
+
/** @type {Record<string, unknown>} */
|
|
862
|
+
const merged_props = {};
|
|
863
|
+
let key;
|
|
864
|
+
for (let i = 0; i < props.length; i++) {
|
|
865
|
+
const obj = props[i];
|
|
866
|
+
if (obj == null) continue;
|
|
867
|
+
for (key of Object.keys(obj)) {
|
|
868
|
+
const desc = Object.getOwnPropertyDescriptor(obj, key);
|
|
869
|
+
if (desc) Object.defineProperty(merged_props, key, desc);
|
|
870
|
+
else merged_props[key] = obj[key];
|
|
871
|
+
}
|
|
872
|
+
}
|
|
873
|
+
return merged_props;
|
|
874
|
+
}
|
|
875
|
+
/**
|
|
876
|
+
* @param {unknown} value
|
|
877
|
+
* @returns {string}
|
|
878
|
+
*/
|
|
879
|
+
function stringify(value) {
|
|
880
|
+
return typeof value === "string" ? value : value == null ? "" : value + "";
|
|
881
|
+
}
|
|
882
|
+
/** @param {Record<string, string>} style_object */
|
|
883
|
+
function style_object_to_string(style_object) {
|
|
884
|
+
return Object.keys(style_object).filter(
|
|
885
|
+
/** @param {any} key */
|
|
886
|
+
(key) => style_object[key] != null && style_object[key] !== ""
|
|
887
|
+
).map(
|
|
888
|
+
/** @param {any} key */
|
|
889
|
+
(key) => `${key}: ${escape_html(style_object[key], true)};`
|
|
890
|
+
).join(" ");
|
|
891
|
+
}
|
|
892
|
+
/**
|
|
893
|
+
* @param {any} value
|
|
894
|
+
* @param {string | undefined} [hash]
|
|
895
|
+
* @param {Record<string, boolean>} [directives]
|
|
896
|
+
*/
|
|
897
|
+
function attr_class(value, hash, directives) {
|
|
898
|
+
var result = to_class(value, hash, directives);
|
|
899
|
+
return result ? ` class="${escape_html(result, true)}"` : "";
|
|
900
|
+
}
|
|
901
|
+
/**
|
|
902
|
+
* @param {any} value
|
|
903
|
+
* @param {Record<string,any>|[Record<string,any>,Record<string,any>]} [directives]
|
|
904
|
+
*/
|
|
905
|
+
function attr_style(value, directives) {
|
|
906
|
+
var result = to_style(value, directives);
|
|
907
|
+
return result ? ` style="${escape_html(result, true)}"` : "";
|
|
908
|
+
}
|
|
909
|
+
/**
|
|
910
|
+
* @template V
|
|
911
|
+
* @param {Record<string, [any, any, any]>} store_values
|
|
912
|
+
* @param {string} store_name
|
|
913
|
+
* @param {Store<V> | null | undefined} store
|
|
914
|
+
* @returns {V}
|
|
915
|
+
*/
|
|
916
|
+
function store_get(store_values, store_name, store) {
|
|
917
|
+
validate_store(store, store_name.slice(1));
|
|
918
|
+
if (store_name in store_values && store_values[store_name][0] === store) return store_values[store_name][2];
|
|
919
|
+
store_values[store_name]?.[1]();
|
|
920
|
+
store_values[store_name] = [
|
|
921
|
+
store,
|
|
922
|
+
null,
|
|
923
|
+
void 0
|
|
924
|
+
];
|
|
925
|
+
const unsub = subscribe_to_store(
|
|
926
|
+
store,
|
|
927
|
+
/** @param {any} v */
|
|
928
|
+
(v) => store_values[store_name][2] = v
|
|
929
|
+
);
|
|
930
|
+
store_values[store_name][1] = unsub;
|
|
931
|
+
return store_values[store_name][2];
|
|
932
|
+
}
|
|
933
|
+
/**
|
|
934
|
+
* Sets the new value of a store and returns that value.
|
|
935
|
+
* @template V
|
|
936
|
+
* @param {Store<V>} store
|
|
937
|
+
* @param {V} value
|
|
938
|
+
* @returns {V}
|
|
939
|
+
*/
|
|
940
|
+
function store_set(store, value) {
|
|
941
|
+
store.set(value);
|
|
942
|
+
return value;
|
|
943
|
+
}
|
|
944
|
+
/**
|
|
945
|
+
* Updates a store with a new value.
|
|
946
|
+
* @template V
|
|
947
|
+
* @param {Record<string, [any, any, any]>} store_values
|
|
948
|
+
* @param {string} store_name
|
|
949
|
+
* @param {Store<V>} store
|
|
950
|
+
* @param {any} expression
|
|
951
|
+
*/
|
|
952
|
+
function store_mutate(store_values, store_name, store, expression) {
|
|
953
|
+
store_set(store, store_get(store_values, store_name, store));
|
|
954
|
+
return expression;
|
|
955
|
+
}
|
|
956
|
+
/**
|
|
957
|
+
* @param {Record<string, [any, any, any]>} store_values
|
|
958
|
+
* @param {string} store_name
|
|
959
|
+
* @param {Store<number>} store
|
|
960
|
+
* @param {1 | -1} [d]
|
|
961
|
+
* @returns {number}
|
|
962
|
+
*/
|
|
963
|
+
function update_store(store_values, store_name, store, d = 1) {
|
|
964
|
+
let store_value = store_get(store_values, store_name, store);
|
|
965
|
+
store.set(store_value + d);
|
|
966
|
+
return store_value;
|
|
967
|
+
}
|
|
968
|
+
/**
|
|
969
|
+
* @param {Record<string, [any, any, any]>} store_values
|
|
970
|
+
* @param {string} store_name
|
|
971
|
+
* @param {Store<number>} store
|
|
972
|
+
* @param {1 | -1} [d]
|
|
973
|
+
* @returns {number}
|
|
974
|
+
*/
|
|
975
|
+
function update_store_pre(store_values, store_name, store, d = 1) {
|
|
976
|
+
const value = store_get(store_values, store_name, store) + d;
|
|
977
|
+
store.set(value);
|
|
978
|
+
return value;
|
|
979
|
+
}
|
|
980
|
+
/** @param {Record<string, [any, any, any]>} store_values */
|
|
981
|
+
function unsubscribe_stores(store_values) {
|
|
982
|
+
for (const store_name of Object.keys(store_values)) store_values[store_name][1]();
|
|
983
|
+
}
|
|
984
|
+
/**
|
|
985
|
+
* @param {Renderer} renderer
|
|
986
|
+
* @param {Record<string, any>} $$props
|
|
987
|
+
* @param {string} name
|
|
988
|
+
* @param {Record<string, unknown>} slot_props
|
|
989
|
+
* @param {null | (() => void)} fallback_fn
|
|
990
|
+
* @returns {void}
|
|
991
|
+
*/
|
|
992
|
+
function slot(renderer, $$props, name, slot_props, fallback_fn) {
|
|
993
|
+
var slot_fn = $$props.$$slots?.[name];
|
|
994
|
+
if (slot_fn === true) slot_fn = $$props[name === "default" ? "children" : name];
|
|
995
|
+
if (slot_fn !== void 0) slot_fn(renderer, slot_props);
|
|
996
|
+
else fallback_fn?.();
|
|
997
|
+
}
|
|
998
|
+
/**
|
|
999
|
+
* @param {Record<string, unknown>} props
|
|
1000
|
+
* @param {string[]} rest
|
|
1001
|
+
* @returns {Record<string, unknown>}
|
|
1002
|
+
*/
|
|
1003
|
+
function rest_props(props, rest) {
|
|
1004
|
+
/** @type {Record<string, unknown>} */
|
|
1005
|
+
const rest_props = {};
|
|
1006
|
+
let key;
|
|
1007
|
+
for (key of Object.keys(props)) if (!rest.includes(key)) rest_props[key] = props[key];
|
|
1008
|
+
return rest_props;
|
|
1009
|
+
}
|
|
1010
|
+
/**
|
|
1011
|
+
* @param {Record<string, unknown>} props
|
|
1012
|
+
* @returns {Record<string, unknown>}
|
|
1013
|
+
*/
|
|
1014
|
+
function sanitize_props(props) {
|
|
1015
|
+
const { children, $$slots, ...sanitized } = props;
|
|
1016
|
+
return sanitized;
|
|
1017
|
+
}
|
|
1018
|
+
/**
|
|
1019
|
+
* @param {Record<string, any>} props
|
|
1020
|
+
* @returns {Record<string, boolean>}
|
|
1021
|
+
*/
|
|
1022
|
+
function sanitize_slots(props) {
|
|
1023
|
+
/** @type {Record<string, boolean>} */
|
|
1024
|
+
const sanitized = {};
|
|
1025
|
+
if (props.children) sanitized.default = true;
|
|
1026
|
+
for (const key of Object.keys(props.$$slots || {})) sanitized[key] = true;
|
|
1027
|
+
return sanitized;
|
|
1028
|
+
}
|
|
1029
|
+
/**
|
|
1030
|
+
* Legacy mode: If the prop has a fallback and is bound in the
|
|
1031
|
+
* parent component, propagate the fallback value upwards.
|
|
1032
|
+
* @param {Record<string, unknown>} props_parent
|
|
1033
|
+
* @param {Record<string, unknown>} props_now
|
|
1034
|
+
*/
|
|
1035
|
+
function bind_props(props_parent, props_now) {
|
|
1036
|
+
for (const key of Object.keys(props_now)) {
|
|
1037
|
+
const initial_value = props_parent[key];
|
|
1038
|
+
const value = props_now[key];
|
|
1039
|
+
if (initial_value === void 0 && value !== void 0 && Object.getOwnPropertyDescriptor(props_parent, key)?.set) props_parent[key] = value;
|
|
1040
|
+
}
|
|
1041
|
+
}
|
|
1042
|
+
/**
|
|
1043
|
+
* @template V
|
|
1044
|
+
* @param {Renderer} renderer
|
|
1045
|
+
* @param {Promise<V>} promise
|
|
1046
|
+
* @param {null | (() => void)} pending_fn
|
|
1047
|
+
* @param {(value: V) => void} then_fn
|
|
1048
|
+
* @returns {void}
|
|
1049
|
+
*/
|
|
1050
|
+
function await_block(renderer, promise, pending_fn, then_fn) {
|
|
1051
|
+
if (is_promise(promise)) {
|
|
1052
|
+
renderer.push(BLOCK_OPEN);
|
|
1053
|
+
promise.then(null, noop);
|
|
1054
|
+
if (pending_fn !== null) pending_fn();
|
|
1055
|
+
} else if (then_fn !== null) {
|
|
1056
|
+
renderer.push(BLOCK_OPEN_ELSE);
|
|
1057
|
+
then_fn(promise);
|
|
1058
|
+
}
|
|
1059
|
+
}
|
|
1060
|
+
/** @param {any} array_like_or_iterator */
|
|
1061
|
+
function ensure_array_like(array_like_or_iterator) {
|
|
1062
|
+
if (array_like_or_iterator) return array_like_or_iterator.length !== void 0 ? array_like_or_iterator : Array.from(array_like_or_iterator);
|
|
1063
|
+
return [];
|
|
1064
|
+
}
|
|
1065
|
+
/**
|
|
1066
|
+
* @template V
|
|
1067
|
+
* @param {() => V} get_value
|
|
1068
|
+
*/
|
|
1069
|
+
function once(get_value) {
|
|
1070
|
+
let value = UNINITIALIZED;
|
|
1071
|
+
return () => {
|
|
1072
|
+
if (value === UNINITIALIZED) value = get_value();
|
|
1073
|
+
return value;
|
|
1074
|
+
};
|
|
1075
|
+
}
|
|
1076
|
+
/**
|
|
1077
|
+
* Create an unique ID
|
|
1078
|
+
* @param {Renderer} renderer
|
|
1079
|
+
* @returns {string}
|
|
1080
|
+
*/
|
|
1081
|
+
function props_id(renderer) {
|
|
1082
|
+
const uid = renderer.global.uid();
|
|
1083
|
+
renderer.push("<!--$" + uid + "-->");
|
|
1084
|
+
return uid;
|
|
1085
|
+
}
|
|
1086
|
+
/**
|
|
1087
|
+
* @template T
|
|
1088
|
+
* @param {()=>T} fn
|
|
1089
|
+
* @returns {(new_value?: T) => (T | void)}
|
|
1090
|
+
*/
|
|
1091
|
+
function derived(fn) {
|
|
1092
|
+
const get_value = ssr_context === null ? fn : once(fn);
|
|
1093
|
+
/** @type {T | undefined} */
|
|
1094
|
+
let updated_value;
|
|
1095
|
+
return function(new_value) {
|
|
1096
|
+
if (arguments.length === 0) return updated_value ?? get_value();
|
|
1097
|
+
updated_value = new_value;
|
|
1098
|
+
return updated_value;
|
|
1099
|
+
};
|
|
1100
|
+
}
|
|
1101
|
+
/**
|
|
1102
|
+
* @template {number | bigint} T
|
|
1103
|
+
* @param {(value?: T) => T} derived
|
|
1104
|
+
* @param {1 | -1} [d]
|
|
1105
|
+
* @returns {T}
|
|
1106
|
+
*/
|
|
1107
|
+
function update_derived(derived, d = 1) {
|
|
1108
|
+
const value = derived();
|
|
1109
|
+
derived(value + (typeof value === "bigint" ? BigInt(d) : d));
|
|
1110
|
+
return value;
|
|
1111
|
+
}
|
|
1112
|
+
/**
|
|
1113
|
+
* @template {number | bigint} T
|
|
1114
|
+
* @param {(value?: T) => T} derived
|
|
1115
|
+
* @param {1 | -1} [d]
|
|
1116
|
+
* @returns {T}
|
|
1117
|
+
*/
|
|
1118
|
+
function update_derived_pre(derived, d = 1) {
|
|
1119
|
+
const old_value = derived();
|
|
1120
|
+
const value = old_value + (typeof old_value === "bigint" ? BigInt(d) : d);
|
|
1121
|
+
derived(value);
|
|
1122
|
+
return value;
|
|
1123
|
+
}
|
|
1124
|
+
/**
|
|
1125
|
+
* @template T
|
|
1126
|
+
* @param {()=>T} fn
|
|
1127
|
+
*/
|
|
1128
|
+
function async_derived(fn) {
|
|
1129
|
+
return Promise.resolve(fn()).then((value) => {
|
|
1130
|
+
return () => value;
|
|
1131
|
+
});
|
|
1132
|
+
}
|
|
1133
|
+
//#endregion
|
|
1134
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/crypto.js
|
|
1135
|
+
var text_encoder;
|
|
1136
|
+
var crypto;
|
|
1137
|
+
/** @param {string} module_name */
|
|
1138
|
+
var obfuscated_import = (module_name) => import(
|
|
1139
|
+
/* @vite-ignore */
|
|
1140
|
+
module_name
|
|
1141
|
+
);
|
|
1142
|
+
/** @param {string} data */
|
|
1143
|
+
async function sha256(data) {
|
|
1144
|
+
text_encoder ??= new TextEncoder();
|
|
1145
|
+
crypto ??= globalThis.crypto?.subtle?.digest ? globalThis.crypto : (await obfuscated_import("node:crypto")).webcrypto;
|
|
1146
|
+
return base64_encode(await crypto.subtle.digest("SHA-256", text_encoder.encode(data)));
|
|
1147
|
+
}
|
|
1148
|
+
/**
|
|
1149
|
+
* @param {Uint8Array} bytes
|
|
1150
|
+
* @returns {string}
|
|
1151
|
+
*/
|
|
1152
|
+
function base64_encode(bytes) {
|
|
1153
|
+
if (globalThis.Buffer) return globalThis.Buffer.from(bytes).toString("base64");
|
|
1154
|
+
let binary = "";
|
|
1155
|
+
for (let i = 0; i < bytes.length; i++) binary += String.fromCharCode(bytes[i]);
|
|
1156
|
+
return btoa(binary);
|
|
1157
|
+
}
|
|
1158
|
+
//#endregion
|
|
1159
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/renderer.js
|
|
1160
|
+
/** @import { Component } from 'svelte' */
|
|
1161
|
+
/** @import { Csp, HydratableContext, RenderOutput, SSRContext, SyncRenderOutput, Sha256Source } from './types.js' */
|
|
1162
|
+
/** @import { MaybePromise } from '#shared' */
|
|
1163
|
+
/** @typedef {'head' | 'body'} RendererType */
|
|
1164
|
+
/** @typedef {{ [key in RendererType]: string }} AccumulatedContent */
|
|
1165
|
+
/**
|
|
1166
|
+
* @typedef {string | Renderer} RendererItem
|
|
1167
|
+
*/
|
|
1168
|
+
/**
|
|
1169
|
+
* Renderers are basically a tree of `string | Renderer`s, where each `Renderer` in the tree represents
|
|
1170
|
+
* work that may or may not have completed. A renderer can be {@link collect}ed to aggregate the
|
|
1171
|
+
* content from itself and all of its children, but this will throw if any of the children are
|
|
1172
|
+
* performing asynchronous work. To asynchronously collect a renderer, just `await` it.
|
|
1173
|
+
*
|
|
1174
|
+
* The `string` values within a renderer are always associated with the {@link type} of that renderer. To switch types,
|
|
1175
|
+
* call {@link child} with a different `type` argument.
|
|
1176
|
+
*/
|
|
1177
|
+
var Renderer = class Renderer {
|
|
1178
|
+
/**
|
|
1179
|
+
* The contents of the renderer.
|
|
1180
|
+
* @type {RendererItem[]}
|
|
1181
|
+
*/
|
|
1182
|
+
#out = [];
|
|
1183
|
+
/**
|
|
1184
|
+
* Any `onDestroy` callbacks registered during execution of this renderer.
|
|
1185
|
+
* @type {(() => void)[] | undefined}
|
|
1186
|
+
*/
|
|
1187
|
+
#on_destroy = void 0;
|
|
1188
|
+
/**
|
|
1189
|
+
* Whether this renderer is a component body.
|
|
1190
|
+
* @type {boolean}
|
|
1191
|
+
*/
|
|
1192
|
+
#is_component_body = false;
|
|
1193
|
+
/**
|
|
1194
|
+
* If set, this renderer is an error boundary. When async collection
|
|
1195
|
+
* of the children fails, the failed snippet is rendered instead.
|
|
1196
|
+
* @type {{
|
|
1197
|
+
* failed: (renderer: Renderer, error: unknown, reset: () => void) => void;
|
|
1198
|
+
* transformError: (error: unknown) => unknown;
|
|
1199
|
+
* context: SSRContext | null;
|
|
1200
|
+
* } | null}
|
|
1201
|
+
*/
|
|
1202
|
+
#boundary = null;
|
|
1203
|
+
/**
|
|
1204
|
+
* The type of string content that this renderer is accumulating.
|
|
1205
|
+
* @type {RendererType}
|
|
1206
|
+
*/
|
|
1207
|
+
type;
|
|
1208
|
+
/** @type {Renderer | undefined} */
|
|
1209
|
+
#parent;
|
|
1210
|
+
/**
|
|
1211
|
+
* Asynchronous work associated with this renderer
|
|
1212
|
+
* @type {Promise<void> | undefined}
|
|
1213
|
+
*/
|
|
1214
|
+
promise = void 0;
|
|
1215
|
+
/**
|
|
1216
|
+
* State which is associated with the content tree as a whole.
|
|
1217
|
+
* It will be re-exposed, uncopied, on all children.
|
|
1218
|
+
* @type {SSRState}
|
|
1219
|
+
* @readonly
|
|
1220
|
+
*/
|
|
1221
|
+
global;
|
|
1222
|
+
/**
|
|
1223
|
+
* State that is local to the branch it is declared in.
|
|
1224
|
+
* It will be shallow-copied to all children.
|
|
1225
|
+
*
|
|
1226
|
+
* @type {{ select_value: string | undefined }}
|
|
1227
|
+
*/
|
|
1228
|
+
local;
|
|
1229
|
+
/**
|
|
1230
|
+
* @param {SSRState} global
|
|
1231
|
+
* @param {Renderer | undefined} [parent]
|
|
1232
|
+
*/
|
|
1233
|
+
constructor(global, parent) {
|
|
1234
|
+
this.#parent = parent;
|
|
1235
|
+
this.global = global;
|
|
1236
|
+
this.local = parent ? { ...parent.local } : { select_value: void 0 };
|
|
1237
|
+
this.type = parent ? parent.type : "body";
|
|
1238
|
+
}
|
|
1239
|
+
/**
|
|
1240
|
+
* @param {(renderer: Renderer) => void} fn
|
|
1241
|
+
*/
|
|
1242
|
+
head(fn) {
|
|
1243
|
+
const head = new Renderer(this.global, this);
|
|
1244
|
+
head.type = "head";
|
|
1245
|
+
this.#out.push(head);
|
|
1246
|
+
head.child(fn);
|
|
1247
|
+
}
|
|
1248
|
+
/**
|
|
1249
|
+
* @param {Array<Promise<void>>} blockers
|
|
1250
|
+
* @param {(renderer: Renderer) => void} fn
|
|
1251
|
+
*/
|
|
1252
|
+
async_block(blockers, fn) {
|
|
1253
|
+
this.#out.push(BLOCK_OPEN);
|
|
1254
|
+
this.async(blockers, fn);
|
|
1255
|
+
this.#out.push(BLOCK_CLOSE);
|
|
1256
|
+
}
|
|
1257
|
+
/**
|
|
1258
|
+
* @param {Array<Promise<void>>} blockers
|
|
1259
|
+
* @param {(renderer: Renderer) => void} fn
|
|
1260
|
+
*/
|
|
1261
|
+
async(blockers, fn) {
|
|
1262
|
+
let callback = fn;
|
|
1263
|
+
if (blockers.length > 0) {
|
|
1264
|
+
const context = ssr_context;
|
|
1265
|
+
callback = (renderer) => {
|
|
1266
|
+
return Promise.all(blockers).then(() => {
|
|
1267
|
+
const previous_context = ssr_context;
|
|
1268
|
+
try {
|
|
1269
|
+
set_ssr_context(context);
|
|
1270
|
+
return fn(renderer);
|
|
1271
|
+
} finally {
|
|
1272
|
+
set_ssr_context(previous_context);
|
|
1273
|
+
}
|
|
1274
|
+
});
|
|
1275
|
+
};
|
|
1276
|
+
}
|
|
1277
|
+
this.child(callback);
|
|
1278
|
+
}
|
|
1279
|
+
/**
|
|
1280
|
+
* @param {Array<() => void>} thunks
|
|
1281
|
+
*/
|
|
1282
|
+
run(thunks) {
|
|
1283
|
+
const context = ssr_context;
|
|
1284
|
+
let promise = Promise.resolve(thunks[0]());
|
|
1285
|
+
const promises = [promise];
|
|
1286
|
+
for (const fn of thunks.slice(1)) {
|
|
1287
|
+
promise = promise.then(() => {
|
|
1288
|
+
const previous_context = ssr_context;
|
|
1289
|
+
set_ssr_context(context);
|
|
1290
|
+
try {
|
|
1291
|
+
return fn();
|
|
1292
|
+
} finally {
|
|
1293
|
+
set_ssr_context(previous_context);
|
|
1294
|
+
}
|
|
1295
|
+
});
|
|
1296
|
+
promises.push(promise);
|
|
1297
|
+
}
|
|
1298
|
+
promise.catch(noop);
|
|
1299
|
+
this.promise = promise;
|
|
1300
|
+
return promises;
|
|
1301
|
+
}
|
|
1302
|
+
/**
|
|
1303
|
+
* @param {(renderer: Renderer) => MaybePromise<void>} fn
|
|
1304
|
+
*/
|
|
1305
|
+
child_block(fn) {
|
|
1306
|
+
this.#out.push(BLOCK_OPEN);
|
|
1307
|
+
this.child(fn);
|
|
1308
|
+
this.#out.push(BLOCK_CLOSE);
|
|
1309
|
+
}
|
|
1310
|
+
/**
|
|
1311
|
+
* Create a child renderer. The child renderer inherits the state from the parent,
|
|
1312
|
+
* but has its own content.
|
|
1313
|
+
* @param {(renderer: Renderer) => MaybePromise<void>} fn
|
|
1314
|
+
*/
|
|
1315
|
+
child(fn) {
|
|
1316
|
+
const child = new Renderer(this.global, this);
|
|
1317
|
+
this.#out.push(child);
|
|
1318
|
+
const parent = ssr_context;
|
|
1319
|
+
set_ssr_context({
|
|
1320
|
+
...ssr_context,
|
|
1321
|
+
p: parent,
|
|
1322
|
+
c: null,
|
|
1323
|
+
r: child
|
|
1324
|
+
});
|
|
1325
|
+
const result = fn(child);
|
|
1326
|
+
set_ssr_context(parent);
|
|
1327
|
+
if (result instanceof Promise) {
|
|
1328
|
+
result.catch(noop);
|
|
1329
|
+
result.finally(() => set_ssr_context(null)).catch(noop);
|
|
1330
|
+
if (child.global.mode === "sync") await_invalid();
|
|
1331
|
+
child.promise = result;
|
|
1332
|
+
}
|
|
1333
|
+
return child;
|
|
1334
|
+
}
|
|
1335
|
+
/**
|
|
1336
|
+
* Render children inside an error boundary. If the children throw and the API-level
|
|
1337
|
+
* `transformError` transform handles the error (doesn't re-throw), the `failed` snippet is
|
|
1338
|
+
* rendered instead. Otherwise the error propagates.
|
|
1339
|
+
*
|
|
1340
|
+
* @param {{ failed?: (renderer: Renderer, error: unknown, reset: () => void) => void }} props
|
|
1341
|
+
* @param {(renderer: Renderer) => MaybePromise<void>} children_fn
|
|
1342
|
+
*/
|
|
1343
|
+
boundary(props, children_fn) {
|
|
1344
|
+
const child = new Renderer(this.global, this);
|
|
1345
|
+
this.#out.push(child);
|
|
1346
|
+
const parent_context = ssr_context;
|
|
1347
|
+
if (props.failed) child.#boundary = {
|
|
1348
|
+
failed: props.failed,
|
|
1349
|
+
transformError: this.global.transformError,
|
|
1350
|
+
context: parent_context
|
|
1351
|
+
};
|
|
1352
|
+
set_ssr_context({
|
|
1353
|
+
...ssr_context,
|
|
1354
|
+
p: parent_context,
|
|
1355
|
+
c: null,
|
|
1356
|
+
r: child
|
|
1357
|
+
});
|
|
1358
|
+
try {
|
|
1359
|
+
const result = children_fn(child);
|
|
1360
|
+
set_ssr_context(parent_context);
|
|
1361
|
+
if (result instanceof Promise) {
|
|
1362
|
+
if (child.global.mode === "sync") await_invalid();
|
|
1363
|
+
result.catch(noop);
|
|
1364
|
+
child.promise = result;
|
|
1365
|
+
}
|
|
1366
|
+
} catch (error) {
|
|
1367
|
+
set_ssr_context(parent_context);
|
|
1368
|
+
const failed_snippet = props.failed;
|
|
1369
|
+
if (!failed_snippet) throw error;
|
|
1370
|
+
const result = this.global.transformError(error);
|
|
1371
|
+
child.#out.length = 0;
|
|
1372
|
+
child.#boundary = null;
|
|
1373
|
+
if (result instanceof Promise) {
|
|
1374
|
+
if (this.global.mode === "sync") await_invalid();
|
|
1375
|
+
child.promise = result.then((transformed) => {
|
|
1376
|
+
set_ssr_context(parent_context);
|
|
1377
|
+
child.#out.push(Renderer.#serialize_failed_boundary(transformed));
|
|
1378
|
+
failed_snippet(child, transformed, noop);
|
|
1379
|
+
child.#out.push(BLOCK_CLOSE);
|
|
1380
|
+
});
|
|
1381
|
+
child.promise.catch(noop);
|
|
1382
|
+
} else {
|
|
1383
|
+
child.#out.push(Renderer.#serialize_failed_boundary(result));
|
|
1384
|
+
failed_snippet(child, result, noop);
|
|
1385
|
+
child.#out.push(BLOCK_CLOSE);
|
|
1386
|
+
}
|
|
1387
|
+
}
|
|
1388
|
+
}
|
|
1389
|
+
/**
|
|
1390
|
+
* Create a component renderer. The component renderer inherits the state from the parent,
|
|
1391
|
+
* but has its own content. It is treated as an ordering boundary for ondestroy callbacks.
|
|
1392
|
+
* @param {(renderer: Renderer) => MaybePromise<void>} fn
|
|
1393
|
+
* @param {Function} [component_fn]
|
|
1394
|
+
* @returns {void}
|
|
1395
|
+
*/
|
|
1396
|
+
component(fn, component_fn) {
|
|
1397
|
+
push(component_fn);
|
|
1398
|
+
const child = this.child(fn);
|
|
1399
|
+
child.#is_component_body = true;
|
|
1400
|
+
pop();
|
|
1401
|
+
}
|
|
1402
|
+
/**
|
|
1403
|
+
* @param {Record<string, any>} attrs
|
|
1404
|
+
* @param {(renderer: Renderer) => void} fn
|
|
1405
|
+
* @param {string | undefined} [css_hash]
|
|
1406
|
+
* @param {Record<string, boolean> | undefined} [classes]
|
|
1407
|
+
* @param {Record<string, string> | undefined} [styles]
|
|
1408
|
+
* @param {number | undefined} [flags]
|
|
1409
|
+
* @param {boolean | undefined} [is_rich]
|
|
1410
|
+
* @returns {void}
|
|
1411
|
+
*/
|
|
1412
|
+
select(attrs, fn, css_hash, classes, styles, flags, is_rich) {
|
|
1413
|
+
const { value, ...select_attrs } = attrs;
|
|
1414
|
+
this.push(`<select${attributes(select_attrs, css_hash, classes, styles, flags)}>`);
|
|
1415
|
+
this.child((renderer) => {
|
|
1416
|
+
renderer.local.select_value = value;
|
|
1417
|
+
fn(renderer);
|
|
1418
|
+
});
|
|
1419
|
+
this.push(`${is_rich ? "<!>" : ""}</select>`);
|
|
1420
|
+
}
|
|
1421
|
+
/**
|
|
1422
|
+
* @param {Record<string, any>} attrs
|
|
1423
|
+
* @param {string | number | boolean | ((renderer: Renderer) => void)} body
|
|
1424
|
+
* @param {string | undefined} [css_hash]
|
|
1425
|
+
* @param {Record<string, boolean> | undefined} [classes]
|
|
1426
|
+
* @param {Record<string, string> | undefined} [styles]
|
|
1427
|
+
* @param {number | undefined} [flags]
|
|
1428
|
+
* @param {boolean | undefined} [is_rich]
|
|
1429
|
+
*/
|
|
1430
|
+
option(attrs, body, css_hash, classes, styles, flags, is_rich) {
|
|
1431
|
+
this.#out.push(`<option${attributes(attrs, css_hash, classes, styles, flags)}`);
|
|
1432
|
+
/**
|
|
1433
|
+
* @param {Renderer} renderer
|
|
1434
|
+
* @param {any} value
|
|
1435
|
+
* @param {{ head?: string, body: any }} content
|
|
1436
|
+
*/
|
|
1437
|
+
const close = (renderer, value, { head, body }) => {
|
|
1438
|
+
if (has_own_property.call(attrs, "value")) value = attrs.value;
|
|
1439
|
+
if (value === this.local.select_value) renderer.#out.push(" selected=\"\"");
|
|
1440
|
+
renderer.#out.push(`>${body}${is_rich ? "<!>" : ""}</option>`);
|
|
1441
|
+
if (head) renderer.head((child) => child.push(head));
|
|
1442
|
+
};
|
|
1443
|
+
if (typeof body === "function") this.child((renderer) => {
|
|
1444
|
+
const r = new Renderer(this.global, this);
|
|
1445
|
+
body(r);
|
|
1446
|
+
if (this.global.mode === "async") return r.#collect_content_async().then((content) => {
|
|
1447
|
+
close(renderer, content.body.replaceAll("<!---->", ""), content);
|
|
1448
|
+
});
|
|
1449
|
+
else {
|
|
1450
|
+
const content = r.#collect_content();
|
|
1451
|
+
close(renderer, content.body.replaceAll("<!---->", ""), content);
|
|
1452
|
+
}
|
|
1453
|
+
});
|
|
1454
|
+
else close(this, body, { body: escape_html(body) });
|
|
1455
|
+
}
|
|
1456
|
+
/**
|
|
1457
|
+
* @param {(renderer: Renderer) => void} fn
|
|
1458
|
+
*/
|
|
1459
|
+
title(fn) {
|
|
1460
|
+
const path = this.get_path();
|
|
1461
|
+
/** @param {string} head */
|
|
1462
|
+
const close = (head) => {
|
|
1463
|
+
this.global.set_title(head, path);
|
|
1464
|
+
};
|
|
1465
|
+
this.child((renderer) => {
|
|
1466
|
+
const r = new Renderer(renderer.global, renderer);
|
|
1467
|
+
fn(r);
|
|
1468
|
+
if (renderer.global.mode === "async") return r.#collect_content_async().then((content) => {
|
|
1469
|
+
close(content.head);
|
|
1470
|
+
});
|
|
1471
|
+
else close(r.#collect_content().head);
|
|
1472
|
+
});
|
|
1473
|
+
}
|
|
1474
|
+
/**
|
|
1475
|
+
* @param {string | (() => Promise<string>)} content
|
|
1476
|
+
*/
|
|
1477
|
+
push(content) {
|
|
1478
|
+
if (typeof content === "function") this.child(async (renderer) => renderer.push(await content()));
|
|
1479
|
+
else this.#out.push(content);
|
|
1480
|
+
}
|
|
1481
|
+
/**
|
|
1482
|
+
* @param {() => void} fn
|
|
1483
|
+
*/
|
|
1484
|
+
on_destroy(fn) {
|
|
1485
|
+
(this.#on_destroy ??= []).push(fn);
|
|
1486
|
+
}
|
|
1487
|
+
/**
|
|
1488
|
+
* @returns {number[]}
|
|
1489
|
+
*/
|
|
1490
|
+
get_path() {
|
|
1491
|
+
return this.#parent ? [...this.#parent.get_path(), this.#parent.#out.indexOf(this)] : [];
|
|
1492
|
+
}
|
|
1493
|
+
/**
|
|
1494
|
+
* @deprecated this is needed for legacy component bindings
|
|
1495
|
+
*/
|
|
1496
|
+
copy() {
|
|
1497
|
+
const copy = new Renderer(this.global, this.#parent);
|
|
1498
|
+
copy.#out = this.#out.map((item) => item instanceof Renderer ? item.copy() : item);
|
|
1499
|
+
copy.promise = this.promise;
|
|
1500
|
+
return copy;
|
|
1501
|
+
}
|
|
1502
|
+
/**
|
|
1503
|
+
* @param {Renderer} other
|
|
1504
|
+
* @deprecated this is needed for legacy component bindings
|
|
1505
|
+
*/
|
|
1506
|
+
subsume(other) {
|
|
1507
|
+
if (this.global.mode !== other.global.mode) throw new Error("invariant: A renderer cannot switch modes. If you're seeing this, there's a compiler bug. File an issue!");
|
|
1508
|
+
this.local = other.local;
|
|
1509
|
+
this.#out = other.#out.map((item, i) => {
|
|
1510
|
+
const current = this.#out[i];
|
|
1511
|
+
if (current instanceof Renderer && item instanceof Renderer) {
|
|
1512
|
+
current.subsume(item);
|
|
1513
|
+
return current;
|
|
1514
|
+
}
|
|
1515
|
+
return item;
|
|
1516
|
+
});
|
|
1517
|
+
this.promise = other.promise;
|
|
1518
|
+
this.type = other.type;
|
|
1519
|
+
}
|
|
1520
|
+
get length() {
|
|
1521
|
+
return this.#out.length;
|
|
1522
|
+
}
|
|
1523
|
+
/**
|
|
1524
|
+
* Creates the hydration comment that marks the start of a failed boundary.
|
|
1525
|
+
* The error is JSON-serialized and embedded inside an HTML comment for the client
|
|
1526
|
+
* to parse during hydration. The JSON is escaped to prevent `-->` or `<!--` sequences
|
|
1527
|
+
* from breaking out of the comment (XSS). Uses unicode escapes which `JSON.parse()`
|
|
1528
|
+
* handles transparently.
|
|
1529
|
+
* @param {unknown} error
|
|
1530
|
+
* @returns {string}
|
|
1531
|
+
*/
|
|
1532
|
+
static #serialize_failed_boundary(error) {
|
|
1533
|
+
return `<!--[?${JSON.stringify(error).replace(/>/g, "\\u003e").replace(/</g, "\\u003c")}-->`;
|
|
1534
|
+
}
|
|
1535
|
+
/**
|
|
1536
|
+
* Only available on the server and when compiling with the `server` option.
|
|
1537
|
+
* Takes a component and returns an object with `body` and `head` properties on it, which you can use to populate the HTML when server-rendering your app.
|
|
1538
|
+
* @template {Record<string, any>} Props
|
|
1539
|
+
* @param {Component<Props>} component
|
|
1540
|
+
* @param {{ props?: Omit<Props, '$$slots' | '$$events'>; context?: Map<any, any>; idPrefix?: string; csp?: Csp }} [options]
|
|
1541
|
+
* @returns {RenderOutput}
|
|
1542
|
+
*/
|
|
1543
|
+
static render(component, options = {}) {
|
|
1544
|
+
/** @type {AccumulatedContent | undefined} */
|
|
1545
|
+
let sync;
|
|
1546
|
+
/** @type {Promise<AccumulatedContent & { hashes: { script: Sha256Source[] } }> | undefined} */
|
|
1547
|
+
let async;
|
|
1548
|
+
const result = {};
|
|
1549
|
+
Object.defineProperties(result, {
|
|
1550
|
+
html: { get: () => {
|
|
1551
|
+
return (sync ??= Renderer.#render(component, options)).body;
|
|
1552
|
+
} },
|
|
1553
|
+
head: { get: () => {
|
|
1554
|
+
return (sync ??= Renderer.#render(component, options)).head;
|
|
1555
|
+
} },
|
|
1556
|
+
body: { get: () => {
|
|
1557
|
+
return (sync ??= Renderer.#render(component, options)).body;
|
|
1558
|
+
} },
|
|
1559
|
+
hashes: { value: { script: "" } },
|
|
1560
|
+
then: { value: (onfulfilled, onrejected) => {
|
|
1561
|
+
if (!async_mode_flag) {
|
|
1562
|
+
const result = sync ??= Renderer.#render(component, options);
|
|
1563
|
+
const user_result = onfulfilled({
|
|
1564
|
+
head: result.head,
|
|
1565
|
+
body: result.body,
|
|
1566
|
+
html: result.body,
|
|
1567
|
+
hashes: { script: [] }
|
|
1568
|
+
});
|
|
1569
|
+
return Promise.resolve(user_result);
|
|
1570
|
+
}
|
|
1571
|
+
async ??= init_render_context().then(() => with_render_context(() => Renderer.#render_async(component, options)));
|
|
1572
|
+
return async.then((result) => {
|
|
1573
|
+
Object.defineProperty(result, "html", { get: () => {
|
|
1574
|
+
html_deprecated();
|
|
1575
|
+
} });
|
|
1576
|
+
return onfulfilled(result);
|
|
1577
|
+
}, onrejected);
|
|
1578
|
+
} }
|
|
1579
|
+
});
|
|
1580
|
+
return result;
|
|
1581
|
+
}
|
|
1582
|
+
/**
|
|
1583
|
+
* Collect all of the `onDestroy` callbacks registered during rendering. In an async context, this is only safe to call
|
|
1584
|
+
* after awaiting `collect_async`.
|
|
1585
|
+
*
|
|
1586
|
+
* Child renderers are "porous" and don't affect execution order, but component body renderers
|
|
1587
|
+
* create ordering boundaries. Within a renderer, callbacks run in order until hitting a component boundary.
|
|
1588
|
+
* @returns {Iterable<() => void>}
|
|
1589
|
+
*/
|
|
1590
|
+
*#collect_on_destroy() {
|
|
1591
|
+
for (const component of this.#traverse_components()) yield* component.#collect_ondestroy();
|
|
1592
|
+
}
|
|
1593
|
+
/**
|
|
1594
|
+
* Performs a depth-first search of renderers, yielding the deepest components first, then additional components as we backtrack up the tree.
|
|
1595
|
+
* @returns {Iterable<Renderer>}
|
|
1596
|
+
*/
|
|
1597
|
+
*#traverse_components() {
|
|
1598
|
+
for (const child of this.#out) if (typeof child !== "string") yield* child.#traverse_components();
|
|
1599
|
+
if (this.#is_component_body) yield this;
|
|
1600
|
+
}
|
|
1601
|
+
/**
|
|
1602
|
+
* @returns {Iterable<() => void>}
|
|
1603
|
+
*/
|
|
1604
|
+
*#collect_ondestroy() {
|
|
1605
|
+
if (this.#on_destroy) for (const fn of this.#on_destroy) yield fn;
|
|
1606
|
+
for (const child of this.#out) if (child instanceof Renderer && !child.#is_component_body) yield* child.#collect_ondestroy();
|
|
1607
|
+
}
|
|
1608
|
+
/**
|
|
1609
|
+
* Render a component. Throws if any of the children are performing asynchronous work.
|
|
1610
|
+
*
|
|
1611
|
+
* @template {Record<string, any>} Props
|
|
1612
|
+
* @param {Component<Props>} component
|
|
1613
|
+
* @param {{ props?: Omit<Props, '$$slots' | '$$events'>; context?: Map<any, any>; idPrefix?: string }} options
|
|
1614
|
+
* @returns {AccumulatedContent}
|
|
1615
|
+
*/
|
|
1616
|
+
static #render(component, options) {
|
|
1617
|
+
var previous_context = ssr_context;
|
|
1618
|
+
try {
|
|
1619
|
+
const renderer = Renderer.#open_render("sync", component, options);
|
|
1620
|
+
const content = renderer.#collect_content();
|
|
1621
|
+
return Renderer.#close_render(content, renderer);
|
|
1622
|
+
} finally {
|
|
1623
|
+
abort();
|
|
1624
|
+
set_ssr_context(previous_context);
|
|
1625
|
+
}
|
|
1626
|
+
}
|
|
1627
|
+
/**
|
|
1628
|
+
* Render a component.
|
|
1629
|
+
*
|
|
1630
|
+
* @template {Record<string, any>} Props
|
|
1631
|
+
* @param {Component<Props>} component
|
|
1632
|
+
* @param {{ props?: Omit<Props, '$$slots' | '$$events'>; context?: Map<any, any>; idPrefix?: string; csp?: Csp }} options
|
|
1633
|
+
* @returns {Promise<AccumulatedContent & { hashes: { script: Sha256Source[] } }>}
|
|
1634
|
+
*/
|
|
1635
|
+
static async #render_async(component, options) {
|
|
1636
|
+
const previous_context = ssr_context;
|
|
1637
|
+
try {
|
|
1638
|
+
const renderer = Renderer.#open_render("async", component, options);
|
|
1639
|
+
const content = await renderer.#collect_content_async();
|
|
1640
|
+
const hydratables = await renderer.#collect_hydratables();
|
|
1641
|
+
if (hydratables !== null) content.head = hydratables + content.head;
|
|
1642
|
+
return Renderer.#close_render(content, renderer);
|
|
1643
|
+
} finally {
|
|
1644
|
+
set_ssr_context(previous_context);
|
|
1645
|
+
abort();
|
|
1646
|
+
}
|
|
1647
|
+
}
|
|
1648
|
+
/**
|
|
1649
|
+
* Collect all of the code from the `out` array and return it as a string, or a promise resolving to a string.
|
|
1650
|
+
* @param {AccumulatedContent} content
|
|
1651
|
+
* @returns {AccumulatedContent}
|
|
1652
|
+
*/
|
|
1653
|
+
#collect_content(content = {
|
|
1654
|
+
head: "",
|
|
1655
|
+
body: ""
|
|
1656
|
+
}) {
|
|
1657
|
+
for (const item of this.#out) if (typeof item === "string") content[this.type] += item;
|
|
1658
|
+
else if (item instanceof Renderer) item.#collect_content(content);
|
|
1659
|
+
return content;
|
|
1660
|
+
}
|
|
1661
|
+
/**
|
|
1662
|
+
* Collect all of the code from the `out` array and return it as a string.
|
|
1663
|
+
* @param {AccumulatedContent} content
|
|
1664
|
+
* @returns {Promise<AccumulatedContent>}
|
|
1665
|
+
*/
|
|
1666
|
+
async #collect_content_async(content = {
|
|
1667
|
+
head: "",
|
|
1668
|
+
body: ""
|
|
1669
|
+
}) {
|
|
1670
|
+
await this.promise;
|
|
1671
|
+
for (const item of this.#out) if (typeof item === "string") content[this.type] += item;
|
|
1672
|
+
else if (item instanceof Renderer) if (item.#boundary) {
|
|
1673
|
+
/** @type {AccumulatedContent} */
|
|
1674
|
+
const boundary_content = {
|
|
1675
|
+
head: "",
|
|
1676
|
+
body: ""
|
|
1677
|
+
};
|
|
1678
|
+
try {
|
|
1679
|
+
await item.#collect_content_async(boundary_content);
|
|
1680
|
+
content.head += boundary_content.head;
|
|
1681
|
+
content.body += boundary_content.body;
|
|
1682
|
+
} catch (error) {
|
|
1683
|
+
const { context, failed, transformError } = item.#boundary;
|
|
1684
|
+
set_ssr_context(context);
|
|
1685
|
+
let promise = transformError(error);
|
|
1686
|
+
set_ssr_context(null);
|
|
1687
|
+
let transformed = await promise;
|
|
1688
|
+
set_ssr_context(context);
|
|
1689
|
+
const failed_renderer = new Renderer(item.global, item);
|
|
1690
|
+
failed_renderer.type = item.type;
|
|
1691
|
+
failed_renderer.#out.push(Renderer.#serialize_failed_boundary(transformed));
|
|
1692
|
+
failed(failed_renderer, transformed, noop);
|
|
1693
|
+
failed_renderer.#out.push(BLOCK_CLOSE);
|
|
1694
|
+
await failed_renderer.#collect_content_async(content);
|
|
1695
|
+
}
|
|
1696
|
+
} else await item.#collect_content_async(content);
|
|
1697
|
+
return content;
|
|
1698
|
+
}
|
|
1699
|
+
async #collect_hydratables() {
|
|
1700
|
+
const ctx = get_render_context().hydratable;
|
|
1701
|
+
for (const [_, key] of ctx.unresolved_promises) unresolved_hydratable(key, ctx.lookup.get(key)?.stack ?? "<missing stack trace>");
|
|
1702
|
+
for (const comparison of ctx.comparisons) await comparison;
|
|
1703
|
+
return await this.#hydratable_block(ctx);
|
|
1704
|
+
}
|
|
1705
|
+
/**
|
|
1706
|
+
* @template {Record<string, any>} Props
|
|
1707
|
+
* @param {'sync' | 'async'} mode
|
|
1708
|
+
* @param {import('svelte').Component<Props>} component
|
|
1709
|
+
* @param {{ props?: Omit<Props, '$$slots' | '$$events'>; context?: Map<any, any>; idPrefix?: string; csp?: Csp; transformError?: (error: unknown) => unknown }} options
|
|
1710
|
+
* @returns {Renderer}
|
|
1711
|
+
*/
|
|
1712
|
+
static #open_render(mode, component, options) {
|
|
1713
|
+
if (options.idPrefix?.includes("--")) invalid_id_prefix();
|
|
1714
|
+
var previous_context = ssr_context;
|
|
1715
|
+
try {
|
|
1716
|
+
const renderer = new Renderer(new SSRState(mode, options.idPrefix ? options.idPrefix + "-" : "", options.csp, options.transformError));
|
|
1717
|
+
set_ssr_context({
|
|
1718
|
+
p: null,
|
|
1719
|
+
c: options.context ?? null,
|
|
1720
|
+
r: renderer
|
|
1721
|
+
});
|
|
1722
|
+
renderer.push(BLOCK_OPEN);
|
|
1723
|
+
component(renderer, options.props ?? {});
|
|
1724
|
+
renderer.push(BLOCK_CLOSE);
|
|
1725
|
+
return renderer;
|
|
1726
|
+
} finally {
|
|
1727
|
+
set_ssr_context(previous_context);
|
|
1728
|
+
}
|
|
1729
|
+
}
|
|
1730
|
+
/**
|
|
1731
|
+
* @param {AccumulatedContent} content
|
|
1732
|
+
* @param {Renderer} renderer
|
|
1733
|
+
* @returns {AccumulatedContent & { hashes: { script: Sha256Source[] } }}
|
|
1734
|
+
*/
|
|
1735
|
+
static #close_render(content, renderer) {
|
|
1736
|
+
for (const cleanup of renderer.#collect_on_destroy()) cleanup();
|
|
1737
|
+
let head = content.head + renderer.global.get_title();
|
|
1738
|
+
let body = content.body;
|
|
1739
|
+
for (const { hash, code } of renderer.global.css) head += `<style id="${hash}">${code}</style>`;
|
|
1740
|
+
return {
|
|
1741
|
+
head,
|
|
1742
|
+
body,
|
|
1743
|
+
hashes: { script: renderer.global.csp.script_hashes }
|
|
1744
|
+
};
|
|
1745
|
+
}
|
|
1746
|
+
/**
|
|
1747
|
+
* @param {HydratableContext} ctx
|
|
1748
|
+
*/
|
|
1749
|
+
async #hydratable_block(ctx) {
|
|
1750
|
+
if (ctx.lookup.size === 0) return null;
|
|
1751
|
+
let entries = [];
|
|
1752
|
+
let has_promises = false;
|
|
1753
|
+
for (const [k, v] of ctx.lookup) {
|
|
1754
|
+
if (v.promises) {
|
|
1755
|
+
has_promises = true;
|
|
1756
|
+
for (const p of v.promises) await p;
|
|
1757
|
+
}
|
|
1758
|
+
entries.push(`[${uneval(k)},${v.serialized}]`);
|
|
1759
|
+
}
|
|
1760
|
+
let prelude = `const h = (window.__svelte ??= {}).h ??= new Map();`;
|
|
1761
|
+
if (has_promises) prelude = `const r = (v) => Promise.resolve(v);
|
|
1762
|
+
${prelude}`;
|
|
1763
|
+
const body = `
|
|
1764
|
+
{
|
|
1765
|
+
${prelude}
|
|
1766
|
+
|
|
1767
|
+
for (const [k, v] of [
|
|
1768
|
+
${entries.join(",\n ")}
|
|
1769
|
+
]) {
|
|
1770
|
+
h.set(k, v);
|
|
1771
|
+
}
|
|
1772
|
+
}
|
|
1773
|
+
`;
|
|
1774
|
+
let csp_attr = "";
|
|
1775
|
+
if (this.global.csp.nonce) csp_attr = ` nonce="${this.global.csp.nonce}"`;
|
|
1776
|
+
else if (this.global.csp.hash) {
|
|
1777
|
+
const hash = await sha256(body);
|
|
1778
|
+
this.global.csp.script_hashes.push(`sha256-${hash}`);
|
|
1779
|
+
}
|
|
1780
|
+
return `\n\t\t<script${csp_attr}>${body}<\/script>`;
|
|
1781
|
+
}
|
|
1782
|
+
};
|
|
1783
|
+
var SSRState = class {
|
|
1784
|
+
/** @readonly @type {Csp & { script_hashes: Sha256Source[] }} */
|
|
1785
|
+
csp;
|
|
1786
|
+
/** @readonly @type {'sync' | 'async'} */
|
|
1787
|
+
mode;
|
|
1788
|
+
/** @readonly @type {() => string} */
|
|
1789
|
+
uid;
|
|
1790
|
+
/** @readonly @type {Set<{ hash: string; code: string }>} */
|
|
1791
|
+
css = /* @__PURE__ */ new Set();
|
|
1792
|
+
/**
|
|
1793
|
+
* `transformError` passed to `render`. Called when an error boundary catches an error.
|
|
1794
|
+
* Throws by default if unset in `render`.
|
|
1795
|
+
* @type {(error: unknown) => unknown}
|
|
1796
|
+
*/
|
|
1797
|
+
transformError;
|
|
1798
|
+
/** @type {{ path: number[], value: string }} */
|
|
1799
|
+
#title = {
|
|
1800
|
+
path: [],
|
|
1801
|
+
value: ""
|
|
1802
|
+
};
|
|
1803
|
+
/**
|
|
1804
|
+
* @param {'sync' | 'async'} mode
|
|
1805
|
+
* @param {string} id_prefix
|
|
1806
|
+
* @param {Csp} csp
|
|
1807
|
+
* @param {((error: unknown) => unknown) | undefined} [transformError]
|
|
1808
|
+
*/
|
|
1809
|
+
constructor(mode, id_prefix = "", csp = { hash: false }, transformError) {
|
|
1810
|
+
this.mode = mode;
|
|
1811
|
+
this.csp = {
|
|
1812
|
+
...csp,
|
|
1813
|
+
script_hashes: []
|
|
1814
|
+
};
|
|
1815
|
+
this.transformError = transformError ?? ((error) => {
|
|
1816
|
+
throw error;
|
|
1817
|
+
});
|
|
1818
|
+
let uid = 1;
|
|
1819
|
+
this.uid = () => `${id_prefix}s${uid++}`;
|
|
1820
|
+
}
|
|
1821
|
+
get_title() {
|
|
1822
|
+
return this.#title.value;
|
|
1823
|
+
}
|
|
1824
|
+
/**
|
|
1825
|
+
* Performs a depth-first (lexicographic) comparison using the path. Rejects sets
|
|
1826
|
+
* from earlier than or equal to the current value.
|
|
1827
|
+
* @param {string} value
|
|
1828
|
+
* @param {number[]} path
|
|
1829
|
+
*/
|
|
1830
|
+
set_title(value, path) {
|
|
1831
|
+
const current = this.#title.path;
|
|
1832
|
+
let i = 0;
|
|
1833
|
+
let l = Math.min(path.length, current.length);
|
|
1834
|
+
while (i < l && path[i] === current[i]) i += 1;
|
|
1835
|
+
if (path[i] === void 0) return;
|
|
1836
|
+
if (current[i] === void 0 || path[i] > current[i]) {
|
|
1837
|
+
this.#title.path = path;
|
|
1838
|
+
this.#title.value = value;
|
|
1839
|
+
}
|
|
1840
|
+
}
|
|
1841
|
+
};
|
|
1842
|
+
//#endregion
|
|
1843
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/server/dev.js
|
|
1844
|
+
/** @import { SSRContext } from '#server' */
|
|
1845
|
+
/**
|
|
1846
|
+
* @typedef {{
|
|
1847
|
+
* tag: string;
|
|
1848
|
+
* parent: undefined | Element;
|
|
1849
|
+
* filename: undefined | string;
|
|
1850
|
+
* line: number;
|
|
1851
|
+
* column: number;
|
|
1852
|
+
* }} Element
|
|
1853
|
+
*/
|
|
1854
|
+
/**
|
|
1855
|
+
* This is exported so that it can be cleared between tests
|
|
1856
|
+
* @type {Set<string>}
|
|
1857
|
+
*/
|
|
1858
|
+
var seen;
|
|
1859
|
+
/**
|
|
1860
|
+
* @param {Renderer} renderer
|
|
1861
|
+
* @param {string} message
|
|
1862
|
+
*/
|
|
1863
|
+
function print_error(renderer, message) {
|
|
1864
|
+
message = `node_invalid_placement_ssr: ${message}\n\nThis can cause content to shift around as the browser repairs the HTML, and will likely result in a \`hydration_mismatch\` warning.`;
|
|
1865
|
+
if ((seen ??= /* @__PURE__ */ new Set()).has(message)) return;
|
|
1866
|
+
seen.add(message);
|
|
1867
|
+
console.error(message);
|
|
1868
|
+
renderer.head((r) => r.push(`<script>console.error(${JSON.stringify(message).replaceAll("</", "<\\u002f")})<\/script>`));
|
|
1869
|
+
}
|
|
1870
|
+
/**
|
|
1871
|
+
* @param {Renderer} renderer
|
|
1872
|
+
* @param {string} tag
|
|
1873
|
+
* @param {number} line
|
|
1874
|
+
* @param {number} column
|
|
1875
|
+
*/
|
|
1876
|
+
function push_element(renderer, tag, line, column) {
|
|
1877
|
+
var context = ssr_context;
|
|
1878
|
+
var filename = context.function[FILENAME];
|
|
1879
|
+
var parent = context.element;
|
|
1880
|
+
var element = {
|
|
1881
|
+
tag,
|
|
1882
|
+
parent,
|
|
1883
|
+
filename,
|
|
1884
|
+
line,
|
|
1885
|
+
column
|
|
1886
|
+
};
|
|
1887
|
+
if (parent !== void 0) {
|
|
1888
|
+
var ancestor = parent.parent;
|
|
1889
|
+
var ancestors = [parent.tag];
|
|
1890
|
+
const child_loc = filename ? `${filename}:${line}:${column}` : void 0;
|
|
1891
|
+
const parent_loc = parent.filename ? `${parent.filename}:${parent.line}:${parent.column}` : void 0;
|
|
1892
|
+
const message = is_tag_valid_with_parent(tag, parent.tag, child_loc, parent_loc);
|
|
1893
|
+
if (message) print_error(renderer, message);
|
|
1894
|
+
while (ancestor != null) {
|
|
1895
|
+
ancestors.push(ancestor.tag);
|
|
1896
|
+
const message = is_tag_valid_with_ancestor(tag, ancestors, child_loc, ancestor.filename ? `${ancestor.filename}:${ancestor.line}:${ancestor.column}` : void 0);
|
|
1897
|
+
if (message) print_error(renderer, message);
|
|
1898
|
+
ancestor = ancestor.parent;
|
|
1899
|
+
}
|
|
1900
|
+
}
|
|
1901
|
+
set_ssr_context({
|
|
1902
|
+
...context,
|
|
1903
|
+
p: context,
|
|
1904
|
+
element
|
|
1905
|
+
});
|
|
1906
|
+
}
|
|
1907
|
+
function pop_element() {
|
|
1908
|
+
set_ssr_context(
|
|
1909
|
+
/** @type {SSRContext} */
|
|
1910
|
+
ssr_context.p
|
|
1911
|
+
);
|
|
1912
|
+
}
|
|
1913
|
+
/**
|
|
1914
|
+
* @param {Renderer} renderer
|
|
1915
|
+
*/
|
|
1916
|
+
function validate_snippet_args(renderer) {
|
|
1917
|
+
if (typeof renderer !== "object" || !(renderer instanceof Renderer)) invalid_snippet_arguments();
|
|
1918
|
+
}
|
|
1919
|
+
function get_user_code_location() {
|
|
1920
|
+
return get_stack().filter((line) => line.trim().startsWith("at ")).map((line) => line.replace(/\((.*):\d+:\d+\)$/, (_, file) => `(${file})`)).join("\n");
|
|
1921
|
+
}
|
|
1922
|
+
//#endregion
|
|
1923
|
+
export { update_derived_pre as A, hasContext as B, spread_props as C, stringify as D, store_set as E, get_render_context as F, hydratable_serialization_failed as G, setContext as H, getAbortSignal as I, lifecycle_function_unavailable as K, createContext as L, update_store_pre as M, html as N, unsubscribe_stores as O, uneval as P, getAllContexts as R, slot as S, store_mutate as T, ssr_context as U, save as V, hydratable_clobbering as W, props_id as _, async_derived as a, sanitize_props as b, attributes as c, css_props as d, derived as f, once as g, head as h, validate_snippet_args as i, update_store as j, update_derived as k, await_block as l, ensure_array_like as m, pop_element as n, attr_class as o, element as p, push_element as r, attr_style as s, get_user_code_location as t, bind_props as u, render as v, store_get as w, sanitize_slots as x, rest_props as y, getContext as z };
|
|
1924
|
+
|
|
1925
|
+
//# sourceMappingURL=dev-DPd12uEU.js.map
|