@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,4929 @@
|
|
|
1
|
+
import { a as legacy_mode_flag, o as tracing_mode_flag, t as async_mode_flag } from "./flags-BD-lYX7s.js";
|
|
2
|
+
import { i as HYDRATION_ERROR, l as UNINITIALIZED, n as FILENAME } from "./constants-RLNOXCpz.js";
|
|
3
|
+
import { _ as svelte_boundary_reset_noop, h as state_proxy_equality_mismatch, n as await_reactivity_loss, o as derived_inert, r as await_waterfall, u as hydration_mismatch } from "./warnings-yiExAB06.js";
|
|
4
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/shared/errors.js
|
|
5
|
+
/**
|
|
6
|
+
* Cannot use `%name%(...)` unless the `experimental.async` compiler option is `true`
|
|
7
|
+
* @param {string} name
|
|
8
|
+
* @returns {never}
|
|
9
|
+
*/
|
|
10
|
+
function experimental_async_required(name) {
|
|
11
|
+
{
|
|
12
|
+
const error = /* @__PURE__ */ new Error(`experimental_async_required\nCannot use \`${name}(...)\` unless the \`experimental.async\` compiler option is \`true\`\nhttps://svelte.dev/e/experimental_async_required`);
|
|
13
|
+
error.name = "Svelte error";
|
|
14
|
+
throw error;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Cannot use `{@render children(...)}` if the parent component uses `let:` directives. Consider using a named snippet instead
|
|
19
|
+
* @returns {never}
|
|
20
|
+
*/
|
|
21
|
+
function invalid_default_snippet() {
|
|
22
|
+
{
|
|
23
|
+
const error = /* @__PURE__ */ new Error(`invalid_default_snippet\nCannot use \`{@render children(...)}\` if the parent component uses \`let:\` directives. Consider using a named snippet instead\nhttps://svelte.dev/e/invalid_default_snippet`);
|
|
24
|
+
error.name = "Svelte error";
|
|
25
|
+
throw error;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A snippet function was passed invalid arguments. Snippets should only be instantiated via `{@render ...}`
|
|
30
|
+
* @returns {never}
|
|
31
|
+
*/
|
|
32
|
+
function invalid_snippet_arguments() {
|
|
33
|
+
{
|
|
34
|
+
const error = /* @__PURE__ */ new Error(`invalid_snippet_arguments\nA snippet function was passed invalid arguments. Snippets should only be instantiated via \`{@render ...}\`\nhttps://svelte.dev/e/invalid_snippet_arguments`);
|
|
35
|
+
error.name = "Svelte error";
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* An invariant violation occurred, meaning Svelte's internal assumptions were flawed. This is a bug in Svelte, not your app — please open an issue at https://github.com/sveltejs/svelte, citing the following message: "%message%"
|
|
41
|
+
* @param {string} message
|
|
42
|
+
* @returns {never}
|
|
43
|
+
*/
|
|
44
|
+
function invariant_violation(message) {
|
|
45
|
+
{
|
|
46
|
+
const error = /* @__PURE__ */ new Error(`invariant_violation\nAn invariant violation occurred, meaning Svelte's internal assumptions were flawed. This is a bug in Svelte, not your app — please open an issue at https://github.com/sveltejs/svelte, citing the following message: "${message}"\nhttps://svelte.dev/e/invariant_violation`);
|
|
47
|
+
error.name = "Svelte error";
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* `%name%(...)` can only be used during component initialisation
|
|
53
|
+
* @param {string} name
|
|
54
|
+
* @returns {never}
|
|
55
|
+
*/
|
|
56
|
+
function lifecycle_outside_component(name) {
|
|
57
|
+
{
|
|
58
|
+
const error = /* @__PURE__ */ new Error(`lifecycle_outside_component\n\`${name}(...)\` can only be used during component initialisation\nhttps://svelte.dev/e/lifecycle_outside_component`);
|
|
59
|
+
error.name = "Svelte error";
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Context was not set in a parent component
|
|
65
|
+
* @returns {never}
|
|
66
|
+
*/
|
|
67
|
+
function missing_context() {
|
|
68
|
+
{
|
|
69
|
+
const error = /* @__PURE__ */ new Error(`missing_context\nContext was not set in a parent component\nhttps://svelte.dev/e/missing_context`);
|
|
70
|
+
error.name = "Svelte error";
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Attempted to render a snippet without a `{@render}` block. This would cause the snippet code to be stringified instead of its content being rendered to the DOM. To fix this, change `{snippet}` to `{@render snippet()}`.
|
|
76
|
+
* @returns {never}
|
|
77
|
+
*/
|
|
78
|
+
function snippet_without_render_tag() {
|
|
79
|
+
{
|
|
80
|
+
const error = /* @__PURE__ */ new Error(`snippet_without_render_tag\nAttempted to render a snippet without a \`{@render}\` block. This would cause the snippet code to be stringified instead of its content being rendered to the DOM. To fix this, change \`{snippet}\` to \`{@render snippet()}\`.\nhttps://svelte.dev/e/snippet_without_render_tag`);
|
|
81
|
+
error.name = "Svelte error";
|
|
82
|
+
throw error;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* `%name%` is not a store with a `subscribe` method
|
|
87
|
+
* @param {string} name
|
|
88
|
+
* @returns {never}
|
|
89
|
+
*/
|
|
90
|
+
function store_invalid_shape(name) {
|
|
91
|
+
{
|
|
92
|
+
const error = /* @__PURE__ */ new Error(`store_invalid_shape\n\`${name}\` is not a store with a \`subscribe\` method\nhttps://svelte.dev/e/store_invalid_shape`);
|
|
93
|
+
error.name = "Svelte error";
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* The `this` prop on `<svelte:element>` must be a string, if defined
|
|
99
|
+
* @returns {never}
|
|
100
|
+
*/
|
|
101
|
+
function svelte_element_invalid_this_value() {
|
|
102
|
+
{
|
|
103
|
+
const error = /* @__PURE__ */ new Error(`svelte_element_invalid_this_value\nThe \`this\` prop on \`<svelte:element>\` must be a string, if defined\nhttps://svelte.dev/e/svelte_element_invalid_this_value`);
|
|
104
|
+
error.name = "Svelte error";
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//#endregion
|
|
109
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/shared/utils.js
|
|
110
|
+
var is_array = Array.isArray;
|
|
111
|
+
var index_of = Array.prototype.indexOf;
|
|
112
|
+
var includes = Array.prototype.includes;
|
|
113
|
+
var array_from = Array.from;
|
|
114
|
+
var object_keys = Object.keys;
|
|
115
|
+
var define_property = Object.defineProperty;
|
|
116
|
+
var get_descriptor = Object.getOwnPropertyDescriptor;
|
|
117
|
+
var get_descriptors = Object.getOwnPropertyDescriptors;
|
|
118
|
+
var object_prototype = Object.prototype;
|
|
119
|
+
var array_prototype = Array.prototype;
|
|
120
|
+
var get_prototype_of = Object.getPrototypeOf;
|
|
121
|
+
var is_extensible = Object.isExtensible;
|
|
122
|
+
var has_own_property = Object.prototype.hasOwnProperty;
|
|
123
|
+
/**
|
|
124
|
+
* @param {any} thing
|
|
125
|
+
* @returns {thing is Function}
|
|
126
|
+
*/
|
|
127
|
+
function is_function(thing) {
|
|
128
|
+
return typeof thing === "function";
|
|
129
|
+
}
|
|
130
|
+
var noop = () => {};
|
|
131
|
+
/**
|
|
132
|
+
* @template [T=any]
|
|
133
|
+
* @param {any} value
|
|
134
|
+
* @returns {value is PromiseLike<T>}
|
|
135
|
+
*/
|
|
136
|
+
function is_promise(value) {
|
|
137
|
+
return typeof value?.then === "function";
|
|
138
|
+
}
|
|
139
|
+
/** @param {Function} fn */
|
|
140
|
+
function run$1(fn) {
|
|
141
|
+
return fn();
|
|
142
|
+
}
|
|
143
|
+
/** @param {Array<() => void>} arr */
|
|
144
|
+
function run_all(arr) {
|
|
145
|
+
for (var i = 0; i < arr.length; i++) arr[i]();
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* TODO replace with Promise.withResolvers once supported widely enough
|
|
149
|
+
* @template [T=void]
|
|
150
|
+
*/
|
|
151
|
+
function deferred() {
|
|
152
|
+
/** @type {(value: T) => void} */
|
|
153
|
+
var resolve;
|
|
154
|
+
/** @type {(reason: any) => void} */
|
|
155
|
+
var reject;
|
|
156
|
+
return {
|
|
157
|
+
promise: new Promise((res, rej) => {
|
|
158
|
+
resolve = res;
|
|
159
|
+
reject = rej;
|
|
160
|
+
}),
|
|
161
|
+
resolve,
|
|
162
|
+
reject
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* @template V
|
|
167
|
+
* @param {V} value
|
|
168
|
+
* @param {V | (() => V)} fallback
|
|
169
|
+
* @param {boolean} [lazy]
|
|
170
|
+
* @returns {V}
|
|
171
|
+
*/
|
|
172
|
+
function fallback(value, fallback, lazy = false) {
|
|
173
|
+
return value === void 0 ? lazy ? fallback() : fallback : value;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* When encountering a situation like `let [a, b, c] = $derived(blah())`,
|
|
177
|
+
* we need to stash an intermediate value that `a`, `b`, and `c` derive
|
|
178
|
+
* from, in case it's an iterable
|
|
179
|
+
* @template T
|
|
180
|
+
* @param {ArrayLike<T> | Iterable<T>} value
|
|
181
|
+
* @param {number} [n]
|
|
182
|
+
* @returns {Array<T>}
|
|
183
|
+
*/
|
|
184
|
+
function to_array(value, n) {
|
|
185
|
+
if (Array.isArray(value)) return value;
|
|
186
|
+
if (n === void 0 || !(Symbol.iterator in value)) return Array.from(value);
|
|
187
|
+
/** @type {T[]} */
|
|
188
|
+
const array = [];
|
|
189
|
+
for (const element of value) {
|
|
190
|
+
array.push(element);
|
|
191
|
+
if (array.length === n) break;
|
|
192
|
+
}
|
|
193
|
+
return array;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* @param {Record<string | symbol, unknown>} obj
|
|
197
|
+
* @param {Array<string | symbol>} keys
|
|
198
|
+
* @returns {Record<string | symbol, unknown>}
|
|
199
|
+
*/
|
|
200
|
+
function exclude_from_object(obj, keys) {
|
|
201
|
+
/** @type {Record<string | symbol, unknown>} */
|
|
202
|
+
var result = {};
|
|
203
|
+
for (var key in obj) if (!keys.includes(key)) result[key] = obj[key];
|
|
204
|
+
for (var symbol of Object.getOwnPropertySymbols(obj)) if (Object.propertyIsEnumerable.call(obj, symbol) && !keys.includes(symbol)) result[symbol] = obj[symbol];
|
|
205
|
+
return result;
|
|
206
|
+
}
|
|
207
|
+
//#endregion
|
|
208
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/constants.js
|
|
209
|
+
/**
|
|
210
|
+
* An effect that does not destroy its child effects when it reruns.
|
|
211
|
+
* Runs as part of render effects, i.e. not eagerly as part of tree traversal or effect flushing.
|
|
212
|
+
*/
|
|
213
|
+
var MANAGED_EFFECT = 1 << 24;
|
|
214
|
+
var CLEAN = 1024;
|
|
215
|
+
var DIRTY = 2048;
|
|
216
|
+
var MAYBE_DIRTY = 4096;
|
|
217
|
+
var INERT = 8192;
|
|
218
|
+
var DESTROYED = 16384;
|
|
219
|
+
/** Set once a reaction has run for the first time */
|
|
220
|
+
var REACTION_RAN = 32768;
|
|
221
|
+
/** Effect is in the process of getting destroyed. Can be observed in child teardown functions */
|
|
222
|
+
var DESTROYING = 1 << 25;
|
|
223
|
+
/**
|
|
224
|
+
* 'Transparent' effects do not create a transition boundary.
|
|
225
|
+
* This is on a block effect 99% of the time but may also be on a branch effect if its parent block effect was pruned
|
|
226
|
+
*/
|
|
227
|
+
var EFFECT_TRANSPARENT = 65536;
|
|
228
|
+
var EAGER_EFFECT = 1 << 17;
|
|
229
|
+
var HEAD_EFFECT = 1 << 18;
|
|
230
|
+
var EFFECT_PRESERVED = 1 << 19;
|
|
231
|
+
var USER_EFFECT = 1 << 20;
|
|
232
|
+
var EFFECT_OFFSCREEN = 1 << 25;
|
|
233
|
+
/**
|
|
234
|
+
* Tells that we marked this derived and its reactions as visited during the "mark as (maybe) dirty"-phase.
|
|
235
|
+
* Will be lifted during execution of the derived and during checking its dirty state (both are necessary
|
|
236
|
+
* because a derived might be checked but not executed). This is a pure performance optimization flag and
|
|
237
|
+
* should not be used for any other purpose!
|
|
238
|
+
*/
|
|
239
|
+
var WAS_MARKED = 65536;
|
|
240
|
+
var REACTION_IS_UPDATING = 1 << 21;
|
|
241
|
+
var ASYNC = 1 << 22;
|
|
242
|
+
var ERROR_VALUE = 1 << 23;
|
|
243
|
+
var STATE_SYMBOL = Symbol("$state");
|
|
244
|
+
var LEGACY_PROPS = Symbol("legacy props");
|
|
245
|
+
var LOADING_ATTR_SYMBOL = Symbol("");
|
|
246
|
+
var PROXY_PATH_SYMBOL = Symbol("proxy path");
|
|
247
|
+
var ATTRIBUTES_CACHE = Symbol("attributes");
|
|
248
|
+
var CLASS_CACHE = Symbol("class");
|
|
249
|
+
var STYLE_CACHE = Symbol("style");
|
|
250
|
+
var TEXT_CACHE = Symbol("text");
|
|
251
|
+
var FORM_RESET_HANDLER = Symbol("form reset");
|
|
252
|
+
/** An anchor might change, via this symbol on the original anchor we can tell HMR about the updated anchor */
|
|
253
|
+
var HMR_ANCHOR = Symbol("hmr anchor");
|
|
254
|
+
/** allow users to ignore aborted signal errors if `reason.name === 'StaleReactionError` */
|
|
255
|
+
var STALE_REACTION = new class StaleReactionError extends Error {
|
|
256
|
+
name = "StaleReactionError";
|
|
257
|
+
message = "The reaction that called `getAbortSignal()` was re-run or destroyed";
|
|
258
|
+
}();
|
|
259
|
+
var IS_XHTML = !!globalThis.document?.contentType && /* @__PURE__ */ globalThis.document.contentType.includes("xml");
|
|
260
|
+
//#endregion
|
|
261
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/shared/dev.js
|
|
262
|
+
/**
|
|
263
|
+
* @param {string} label
|
|
264
|
+
* @returns {Error & { stack: string } | null}
|
|
265
|
+
*/
|
|
266
|
+
function get_error(label) {
|
|
267
|
+
const error = /* @__PURE__ */ new Error();
|
|
268
|
+
const stack = get_stack();
|
|
269
|
+
if (stack.length === 0) return null;
|
|
270
|
+
stack.unshift("\n");
|
|
271
|
+
define_property(error, "stack", { value: stack.join("\n") });
|
|
272
|
+
define_property(error, "name", { value: label });
|
|
273
|
+
return error;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* @returns {string[]}
|
|
277
|
+
*/
|
|
278
|
+
function get_stack() {
|
|
279
|
+
const limit = Error.stackTraceLimit;
|
|
280
|
+
Error.stackTraceLimit = Infinity;
|
|
281
|
+
const stack = (/* @__PURE__ */ new Error()).stack;
|
|
282
|
+
Error.stackTraceLimit = limit;
|
|
283
|
+
if (!stack) return [];
|
|
284
|
+
const lines = stack.split("\n");
|
|
285
|
+
const new_lines = [];
|
|
286
|
+
for (let i = 0; i < lines.length; i++) {
|
|
287
|
+
const line = lines[i];
|
|
288
|
+
const posixified = line.replaceAll("\\", "/");
|
|
289
|
+
if (line.trim() === "Error") continue;
|
|
290
|
+
if (line.includes("validate_each_keys")) return [];
|
|
291
|
+
if (posixified.includes("svelte/src/internal") || posixified.includes("node_modules/.vite")) continue;
|
|
292
|
+
new_lines.push(line);
|
|
293
|
+
}
|
|
294
|
+
return new_lines;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* @param {boolean} condition
|
|
298
|
+
* @param {string} message
|
|
299
|
+
*/
|
|
300
|
+
function invariant(condition, message) {
|
|
301
|
+
if (!condition) invariant_violation(message);
|
|
302
|
+
}
|
|
303
|
+
//#endregion
|
|
304
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/errors.js
|
|
305
|
+
/**
|
|
306
|
+
* Cannot create a `$derived(...)` with an `await` expression outside of an effect tree
|
|
307
|
+
* @returns {never}
|
|
308
|
+
*/
|
|
309
|
+
function async_derived_orphan() {
|
|
310
|
+
{
|
|
311
|
+
const error = /* @__PURE__ */ new Error(`async_derived_orphan\nCannot create a \`$derived(...)\` with an \`await\` expression outside of an effect tree\nhttps://svelte.dev/e/async_derived_orphan`);
|
|
312
|
+
error.name = "Svelte error";
|
|
313
|
+
throw error;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Using `bind:value` together with a checkbox input is not allowed. Use `bind:checked` instead
|
|
318
|
+
* @returns {never}
|
|
319
|
+
*/
|
|
320
|
+
function bind_invalid_checkbox_value() {
|
|
321
|
+
{
|
|
322
|
+
const error = /* @__PURE__ */ new Error(`bind_invalid_checkbox_value\nUsing \`bind:value\` together with a checkbox input is not allowed. Use \`bind:checked\` instead\nhttps://svelte.dev/e/bind_invalid_checkbox_value`);
|
|
323
|
+
error.name = "Svelte error";
|
|
324
|
+
throw error;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Calling `%method%` on a component instance (of %component%) is no longer valid in Svelte 5
|
|
329
|
+
* @param {string} method
|
|
330
|
+
* @param {string} component
|
|
331
|
+
* @returns {never}
|
|
332
|
+
*/
|
|
333
|
+
function component_api_changed(method, component) {
|
|
334
|
+
{
|
|
335
|
+
const error = /* @__PURE__ */ new Error(`component_api_changed\nCalling \`${method}\` on a component instance (of ${component}) is no longer valid in Svelte 5\nhttps://svelte.dev/e/component_api_changed`);
|
|
336
|
+
error.name = "Svelte error";
|
|
337
|
+
throw error;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Attempted to instantiate %component% with `new %name%`, which is no longer valid in Svelte 5. If this component is not under your control, set the `compatibility.componentApi` compiler option to `4` to keep it working.
|
|
342
|
+
* @param {string} component
|
|
343
|
+
* @param {string} name
|
|
344
|
+
* @returns {never}
|
|
345
|
+
*/
|
|
346
|
+
function component_api_invalid_new(component, name) {
|
|
347
|
+
{
|
|
348
|
+
const error = /* @__PURE__ */ new Error(`component_api_invalid_new\nAttempted to instantiate ${component} with \`new ${name}\`, which is no longer valid in Svelte 5. If this component is not under your control, set the \`compatibility.componentApi\` compiler option to \`4\` to keep it working.\nhttps://svelte.dev/e/component_api_invalid_new`);
|
|
349
|
+
error.name = "Svelte error";
|
|
350
|
+
throw error;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* A derived value cannot reference itself recursively
|
|
355
|
+
* @returns {never}
|
|
356
|
+
*/
|
|
357
|
+
function derived_references_self() {
|
|
358
|
+
{
|
|
359
|
+
const error = /* @__PURE__ */ new Error(`derived_references_self\nA derived value cannot reference itself recursively\nhttps://svelte.dev/e/derived_references_self`);
|
|
360
|
+
error.name = "Svelte error";
|
|
361
|
+
throw error;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Keyed each block has duplicate key `%value%` at indexes %a% and %b%
|
|
366
|
+
* @param {string} a
|
|
367
|
+
* @param {string} b
|
|
368
|
+
* @param {string | undefined | null} [value]
|
|
369
|
+
* @returns {never}
|
|
370
|
+
*/
|
|
371
|
+
function each_key_duplicate(a, b, value) {
|
|
372
|
+
{
|
|
373
|
+
const error = /* @__PURE__ */ new Error(`each_key_duplicate\n${value ? `Keyed each block has duplicate key \`${value}\` at indexes ${a} and ${b}` : `Keyed each block has duplicate key at indexes ${a} and ${b}`}\nhttps://svelte.dev/e/each_key_duplicate`);
|
|
374
|
+
error.name = "Svelte error";
|
|
375
|
+
throw error;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Keyed each block has key that is not idempotent — the key for item at index %index% was `%a%` but is now `%b%`. Keys must be the same each time for a given item
|
|
380
|
+
* @param {string} index
|
|
381
|
+
* @param {string} a
|
|
382
|
+
* @param {string} b
|
|
383
|
+
* @returns {never}
|
|
384
|
+
*/
|
|
385
|
+
function each_key_volatile(index, a, b) {
|
|
386
|
+
{
|
|
387
|
+
const error = /* @__PURE__ */ new Error(`each_key_volatile\nKeyed each block has key that is not idempotent — the key for item at index ${index} was \`${a}\` but is now \`${b}\`. Keys must be the same each time for a given item\nhttps://svelte.dev/e/each_key_volatile`);
|
|
388
|
+
error.name = "Svelte error";
|
|
389
|
+
throw error;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* `%rune%` cannot be used inside an effect cleanup function
|
|
394
|
+
* @param {string} rune
|
|
395
|
+
* @returns {never}
|
|
396
|
+
*/
|
|
397
|
+
function effect_in_teardown(rune) {
|
|
398
|
+
{
|
|
399
|
+
const error = /* @__PURE__ */ new Error(`effect_in_teardown\n\`${rune}\` cannot be used inside an effect cleanup function\nhttps://svelte.dev/e/effect_in_teardown`);
|
|
400
|
+
error.name = "Svelte error";
|
|
401
|
+
throw error;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Effect cannot be created inside a `$derived` value that was not itself created inside an effect
|
|
406
|
+
* @returns {never}
|
|
407
|
+
*/
|
|
408
|
+
function effect_in_unowned_derived() {
|
|
409
|
+
{
|
|
410
|
+
const error = /* @__PURE__ */ new Error(`effect_in_unowned_derived\nEffect cannot be created inside a \`$derived\` value that was not itself created inside an effect\nhttps://svelte.dev/e/effect_in_unowned_derived`);
|
|
411
|
+
error.name = "Svelte error";
|
|
412
|
+
throw error;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* `%rune%` can only be used inside an effect (e.g. during component initialisation)
|
|
417
|
+
* @param {string} rune
|
|
418
|
+
* @returns {never}
|
|
419
|
+
*/
|
|
420
|
+
function effect_orphan(rune) {
|
|
421
|
+
{
|
|
422
|
+
const error = /* @__PURE__ */ new Error(`effect_orphan\n\`${rune}\` can only be used inside an effect (e.g. during component initialisation)\nhttps://svelte.dev/e/effect_orphan`);
|
|
423
|
+
error.name = "Svelte error";
|
|
424
|
+
throw error;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* `$effect.pending()` can only be called inside an effect or derived
|
|
429
|
+
* @returns {never}
|
|
430
|
+
*/
|
|
431
|
+
function effect_pending_outside_reaction() {
|
|
432
|
+
{
|
|
433
|
+
const error = /* @__PURE__ */ new Error(`effect_pending_outside_reaction\n\`$effect.pending()\` can only be called inside an effect or derived\nhttps://svelte.dev/e/effect_pending_outside_reaction`);
|
|
434
|
+
error.name = "Svelte error";
|
|
435
|
+
throw error;
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Maximum update depth exceeded. This typically indicates that an effect reads and writes the same piece of state
|
|
440
|
+
* @returns {never}
|
|
441
|
+
*/
|
|
442
|
+
function effect_update_depth_exceeded() {
|
|
443
|
+
{
|
|
444
|
+
const error = /* @__PURE__ */ new Error(`effect_update_depth_exceeded\nMaximum update depth exceeded. This typically indicates that an effect reads and writes the same piece of state\nhttps://svelte.dev/e/effect_update_depth_exceeded`);
|
|
445
|
+
error.name = "Svelte error";
|
|
446
|
+
throw error;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
/**
|
|
450
|
+
* Failed to hydrate the application
|
|
451
|
+
* @returns {never}
|
|
452
|
+
*/
|
|
453
|
+
function hydration_failed() {
|
|
454
|
+
{
|
|
455
|
+
const error = /* @__PURE__ */ new Error(`hydration_failed\nFailed to hydrate the application\nhttps://svelte.dev/e/hydration_failed`);
|
|
456
|
+
error.name = "Svelte error";
|
|
457
|
+
throw error;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Could not `{@render}` snippet due to the expression being `null` or `undefined`. Consider using optional chaining `{@render snippet?.()}`
|
|
462
|
+
* @returns {never}
|
|
463
|
+
*/
|
|
464
|
+
function invalid_snippet() {
|
|
465
|
+
{
|
|
466
|
+
const error = /* @__PURE__ */ new Error(`invalid_snippet\nCould not \`{@render}\` snippet due to the expression being \`null\` or \`undefined\`. Consider using optional chaining \`{@render snippet?.()}\`\nhttps://svelte.dev/e/invalid_snippet`);
|
|
467
|
+
error.name = "Svelte error";
|
|
468
|
+
throw error;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Cannot do `bind:%key%={undefined}` when `%key%` has a fallback value
|
|
473
|
+
* @param {string} key
|
|
474
|
+
* @returns {never}
|
|
475
|
+
*/
|
|
476
|
+
function props_invalid_value(key) {
|
|
477
|
+
{
|
|
478
|
+
const error = /* @__PURE__ */ new Error(`props_invalid_value\nCannot do \`bind:${key}={undefined}\` when \`${key}\` has a fallback value\nhttps://svelte.dev/e/props_invalid_value`);
|
|
479
|
+
error.name = "Svelte error";
|
|
480
|
+
throw error;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
/**
|
|
484
|
+
* Rest element properties of `$props()` such as `%property%` are readonly
|
|
485
|
+
* @param {string} property
|
|
486
|
+
* @returns {never}
|
|
487
|
+
*/
|
|
488
|
+
function props_rest_readonly(property) {
|
|
489
|
+
{
|
|
490
|
+
const error = /* @__PURE__ */ new Error(`props_rest_readonly\nRest element properties of \`$props()\` such as \`${property}\` are readonly\nhttps://svelte.dev/e/props_rest_readonly`);
|
|
491
|
+
error.name = "Svelte error";
|
|
492
|
+
throw error;
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* The `%rune%` rune is only available inside `.svelte` and `.svelte.js/ts` files
|
|
497
|
+
* @param {string} rune
|
|
498
|
+
* @returns {never}
|
|
499
|
+
*/
|
|
500
|
+
function rune_outside_svelte(rune) {
|
|
501
|
+
{
|
|
502
|
+
const error = /* @__PURE__ */ new Error(`rune_outside_svelte\nThe \`${rune}\` rune is only available inside \`.svelte\` and \`.svelte.js/ts\` files\nhttps://svelte.dev/e/rune_outside_svelte`);
|
|
503
|
+
error.name = "Svelte error";
|
|
504
|
+
throw error;
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Property descriptors defined on `$state` objects must contain `value` and always be `enumerable`, `configurable` and `writable`.
|
|
509
|
+
* @returns {never}
|
|
510
|
+
*/
|
|
511
|
+
function state_descriptors_fixed() {
|
|
512
|
+
{
|
|
513
|
+
const error = /* @__PURE__ */ new Error(`state_descriptors_fixed\nProperty descriptors defined on \`$state\` objects must contain \`value\` and always be \`enumerable\`, \`configurable\` and \`writable\`.\nhttps://svelte.dev/e/state_descriptors_fixed`);
|
|
514
|
+
error.name = "Svelte error";
|
|
515
|
+
throw error;
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* Cannot set prototype of `$state` object
|
|
520
|
+
* @returns {never}
|
|
521
|
+
*/
|
|
522
|
+
function state_prototype_fixed() {
|
|
523
|
+
{
|
|
524
|
+
const error = /* @__PURE__ */ new Error(`state_prototype_fixed\nCannot set prototype of \`$state\` object\nhttps://svelte.dev/e/state_prototype_fixed`);
|
|
525
|
+
error.name = "Svelte error";
|
|
526
|
+
throw error;
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* Updating state inside `$derived(...)`, `$inspect(...)` or a template expression is forbidden. If the value should not be reactive, declare it without `$state`
|
|
531
|
+
* @returns {never}
|
|
532
|
+
*/
|
|
533
|
+
function state_unsafe_mutation() {
|
|
534
|
+
{
|
|
535
|
+
const error = /* @__PURE__ */ new Error(`state_unsafe_mutation\nUpdating state inside \`$derived(...)\`, \`$inspect(...)\` or a template expression is forbidden. If the value should not be reactive, declare it without \`$state\`\nhttps://svelte.dev/e/state_unsafe_mutation`);
|
|
536
|
+
error.name = "Svelte error";
|
|
537
|
+
throw error;
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* A `<svelte:boundary>` `reset` function cannot be called while an error is still being handled
|
|
542
|
+
* @returns {never}
|
|
543
|
+
*/
|
|
544
|
+
function svelte_boundary_reset_onerror() {
|
|
545
|
+
{
|
|
546
|
+
const error = /* @__PURE__ */ new Error(`svelte_boundary_reset_onerror\nA \`<svelte:boundary>\` \`reset\` function cannot be called while an error is still being handled\nhttps://svelte.dev/e/svelte_boundary_reset_onerror`);
|
|
547
|
+
error.name = "Svelte error";
|
|
548
|
+
throw error;
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
//#endregion
|
|
552
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/hydration.js
|
|
553
|
+
/** @import { TemplateNode } from '#client' */
|
|
554
|
+
/**
|
|
555
|
+
* Use this variable to guard everything related to hydration code so it can be treeshaken out
|
|
556
|
+
* if the user doesn't use the `hydrate` method and these code paths are therefore not needed.
|
|
557
|
+
*/
|
|
558
|
+
var hydrating = false;
|
|
559
|
+
/** @param {boolean} value */
|
|
560
|
+
function set_hydrating(value) {
|
|
561
|
+
hydrating = value;
|
|
562
|
+
}
|
|
563
|
+
/**
|
|
564
|
+
* The node that is currently being hydrated. This starts out as the first node inside the opening
|
|
565
|
+
* <!--[--> comment, and updates each time a component calls `$.child(...)` or `$.sibling(...)`.
|
|
566
|
+
* When entering a block (e.g. `{#if ...}`), `hydrate_node` is the block opening comment; by the
|
|
567
|
+
* time we leave the block it is the closing comment, which serves as the block's anchor.
|
|
568
|
+
* @type {TemplateNode}
|
|
569
|
+
*/
|
|
570
|
+
var hydrate_node;
|
|
571
|
+
/** @param {TemplateNode | null} node */
|
|
572
|
+
function set_hydrate_node(node) {
|
|
573
|
+
if (node === null) {
|
|
574
|
+
hydration_mismatch();
|
|
575
|
+
throw HYDRATION_ERROR;
|
|
576
|
+
}
|
|
577
|
+
return hydrate_node = node;
|
|
578
|
+
}
|
|
579
|
+
function hydrate_next() {
|
|
580
|
+
return set_hydrate_node(/* @__PURE__ */ get_next_sibling(hydrate_node));
|
|
581
|
+
}
|
|
582
|
+
/** @param {TemplateNode} node */
|
|
583
|
+
function reset(node) {
|
|
584
|
+
if (!hydrating) return;
|
|
585
|
+
if (/* @__PURE__ */ get_next_sibling(hydrate_node) !== null) {
|
|
586
|
+
hydration_mismatch();
|
|
587
|
+
throw HYDRATION_ERROR;
|
|
588
|
+
}
|
|
589
|
+
hydrate_node = node;
|
|
590
|
+
}
|
|
591
|
+
/**
|
|
592
|
+
* @param {HTMLTemplateElement} template
|
|
593
|
+
*/
|
|
594
|
+
function hydrate_template(template) {
|
|
595
|
+
if (hydrating) hydrate_node = template.content;
|
|
596
|
+
}
|
|
597
|
+
function next(count = 1) {
|
|
598
|
+
if (hydrating) {
|
|
599
|
+
var i = count;
|
|
600
|
+
var node = hydrate_node;
|
|
601
|
+
while (i--) node = /* @__PURE__ */ get_next_sibling(node);
|
|
602
|
+
hydrate_node = node;
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
/**
|
|
606
|
+
* Skips or removes (depending on {@link remove}) all nodes starting at `hydrate_node` up until the next hydration end comment
|
|
607
|
+
* @param {boolean} remove
|
|
608
|
+
*/
|
|
609
|
+
function skip_nodes(remove = true) {
|
|
610
|
+
var depth = 0;
|
|
611
|
+
var node = hydrate_node;
|
|
612
|
+
while (true) {
|
|
613
|
+
if (node.nodeType === 8) {
|
|
614
|
+
var data = node.data;
|
|
615
|
+
if (data === "]") {
|
|
616
|
+
if (depth === 0) return node;
|
|
617
|
+
depth -= 1;
|
|
618
|
+
} else if (data === "[" || data === "[!" || data[0] === "[" && !isNaN(Number(data.slice(1)))) depth += 1;
|
|
619
|
+
}
|
|
620
|
+
var next = /* @__PURE__ */ get_next_sibling(node);
|
|
621
|
+
if (remove) node.remove();
|
|
622
|
+
node = next;
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
/**
|
|
626
|
+
*
|
|
627
|
+
* @param {TemplateNode} node
|
|
628
|
+
*/
|
|
629
|
+
function read_hydration_instruction(node) {
|
|
630
|
+
if (!node || node.nodeType !== 8) {
|
|
631
|
+
hydration_mismatch();
|
|
632
|
+
throw HYDRATION_ERROR;
|
|
633
|
+
}
|
|
634
|
+
return node.data;
|
|
635
|
+
}
|
|
636
|
+
//#endregion
|
|
637
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/reactivity/equality.js
|
|
638
|
+
/** @import { Equals } from '#client' */
|
|
639
|
+
/** @type {Equals} */
|
|
640
|
+
function equals$1(value) {
|
|
641
|
+
return value === this.v;
|
|
642
|
+
}
|
|
643
|
+
/**
|
|
644
|
+
* @param {unknown} a
|
|
645
|
+
* @param {unknown} b
|
|
646
|
+
* @returns {boolean}
|
|
647
|
+
*/
|
|
648
|
+
function safe_not_equal(a, b) {
|
|
649
|
+
return a != a ? b == b : a !== b || a !== null && typeof a === "object" || typeof a === "function";
|
|
650
|
+
}
|
|
651
|
+
/** @type {Equals} */
|
|
652
|
+
function safe_equals(value) {
|
|
653
|
+
return !safe_not_equal(value, this.v);
|
|
654
|
+
}
|
|
655
|
+
//#endregion
|
|
656
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/shared/warnings.js
|
|
657
|
+
var bold = "font-weight: bold";
|
|
658
|
+
var normal = "font-weight: normal";
|
|
659
|
+
/**
|
|
660
|
+
* `<svelte:element this="%tag%">` is a void element — it cannot have content
|
|
661
|
+
* @param {string} tag
|
|
662
|
+
*/
|
|
663
|
+
function dynamic_void_element_content(tag) {
|
|
664
|
+
console.warn(`%c[svelte] dynamic_void_element_content\n%c\`<svelte:element this="${tag}">\` is a void element — it cannot have content\nhttps://svelte.dev/e/dynamic_void_element_content`, bold, normal);
|
|
665
|
+
}
|
|
666
|
+
/**
|
|
667
|
+
* The following properties cannot be cloned with `$state.snapshot` — the return value contains the originals:
|
|
668
|
+
*
|
|
669
|
+
* %properties%
|
|
670
|
+
* @param {string | undefined | null} [properties]
|
|
671
|
+
*/
|
|
672
|
+
function state_snapshot_uncloneable(properties) {
|
|
673
|
+
console.warn(`%c[svelte] state_snapshot_uncloneable\n%c${properties ? `The following properties cannot be cloned with \`$state.snapshot\` — the return value contains the originals:
|
|
674
|
+
|
|
675
|
+
${properties}` : "Value cannot be cloned with `$state.snapshot` — the original value was returned"}\nhttps://svelte.dev/e/state_snapshot_uncloneable`, bold, normal);
|
|
676
|
+
}
|
|
677
|
+
//#endregion
|
|
678
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/shared/clone.js
|
|
679
|
+
/** @import { Snapshot } from './types' */
|
|
680
|
+
/**
|
|
681
|
+
* In dev, we keep track of which properties could not be cloned. In prod
|
|
682
|
+
* we don't bother, but we keep a dummy array around so that the
|
|
683
|
+
* signature stays the same
|
|
684
|
+
* @type {string[]}
|
|
685
|
+
*/
|
|
686
|
+
var empty = [];
|
|
687
|
+
/**
|
|
688
|
+
* @template T
|
|
689
|
+
* @param {T} value
|
|
690
|
+
* @param {boolean} [skip_warning]
|
|
691
|
+
* @param {boolean} [no_tojson]
|
|
692
|
+
* @returns {Snapshot<T>}
|
|
693
|
+
*/
|
|
694
|
+
function snapshot(value, skip_warning = false, no_tojson = false) {
|
|
695
|
+
if (!skip_warning) {
|
|
696
|
+
/** @type {string[]} */
|
|
697
|
+
const paths = [];
|
|
698
|
+
const copy = clone(value, /* @__PURE__ */ new Map(), "", paths, null, no_tojson);
|
|
699
|
+
if (paths.length === 1 && paths[0] === "") state_snapshot_uncloneable();
|
|
700
|
+
else if (paths.length > 0) {
|
|
701
|
+
const slice = paths.length > 10 ? paths.slice(0, 7) : paths.slice(0, 10);
|
|
702
|
+
const excess = paths.length - slice.length;
|
|
703
|
+
let uncloned = slice.map((path) => `- <value>${path}`).join("\n");
|
|
704
|
+
if (excess > 0) uncloned += `\n- ...and ${excess} more`;
|
|
705
|
+
state_snapshot_uncloneable(uncloned);
|
|
706
|
+
}
|
|
707
|
+
return copy;
|
|
708
|
+
}
|
|
709
|
+
return clone(value, /* @__PURE__ */ new Map(), "", empty, null, no_tojson);
|
|
710
|
+
}
|
|
711
|
+
/**
|
|
712
|
+
* @template T
|
|
713
|
+
* @param {T} value
|
|
714
|
+
* @param {Map<T, Snapshot<T>>} cloned
|
|
715
|
+
* @param {string} path
|
|
716
|
+
* @param {string[]} paths
|
|
717
|
+
* @param {null | T} [original] The original value, if `value` was produced from a `toJSON` call
|
|
718
|
+
* @param {boolean} [no_tojson]
|
|
719
|
+
* @returns {Snapshot<T>}
|
|
720
|
+
*/
|
|
721
|
+
function clone(value, cloned, path, paths, original = null, no_tojson = false) {
|
|
722
|
+
if (typeof value === "object" && value !== null) {
|
|
723
|
+
var unwrapped = cloned.get(value);
|
|
724
|
+
if (unwrapped !== void 0) return unwrapped;
|
|
725
|
+
if (value instanceof Map) return new Map(value);
|
|
726
|
+
if (value instanceof Set) return new Set(value);
|
|
727
|
+
if (is_array(value)) {
|
|
728
|
+
var copy = Array(value.length);
|
|
729
|
+
cloned.set(value, copy);
|
|
730
|
+
if (original !== null) cloned.set(original, copy);
|
|
731
|
+
for (var i = 0; i < value.length; i += 1) {
|
|
732
|
+
var element = value[i];
|
|
733
|
+
if (i in value) copy[i] = clone(element, cloned, `${path}[${i}]`, paths, null, no_tojson);
|
|
734
|
+
}
|
|
735
|
+
return copy;
|
|
736
|
+
}
|
|
737
|
+
if (get_prototype_of(value) === object_prototype) {
|
|
738
|
+
/** @type {Snapshot<any>} */
|
|
739
|
+
copy = {};
|
|
740
|
+
cloned.set(value, copy);
|
|
741
|
+
if (original !== null) cloned.set(original, copy);
|
|
742
|
+
for (var key of Object.keys(value)) copy[key] = clone(value[key], cloned, `${path}.${key}`, paths, null, no_tojson);
|
|
743
|
+
return copy;
|
|
744
|
+
}
|
|
745
|
+
if (value instanceof Date) return structuredClone(value);
|
|
746
|
+
if (typeof value.toJSON === "function" && !no_tojson) return clone(
|
|
747
|
+
/** @type {T & { toJSON(): any } } */
|
|
748
|
+
value.toJSON(),
|
|
749
|
+
cloned,
|
|
750
|
+
`${path}.toJSON()`,
|
|
751
|
+
paths,
|
|
752
|
+
value
|
|
753
|
+
);
|
|
754
|
+
}
|
|
755
|
+
if (value instanceof EventTarget) return value;
|
|
756
|
+
try {
|
|
757
|
+
return structuredClone(value);
|
|
758
|
+
} catch (e) {
|
|
759
|
+
paths.push(path);
|
|
760
|
+
return value;
|
|
761
|
+
}
|
|
762
|
+
}
|
|
763
|
+
//#endregion
|
|
764
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dev/tracing.js
|
|
765
|
+
/** @import { Derived, Reaction, Value } from '#client' */
|
|
766
|
+
/**
|
|
767
|
+
* @typedef {{
|
|
768
|
+
* traces: Error[];
|
|
769
|
+
* }} TraceEntry
|
|
770
|
+
*/
|
|
771
|
+
/** @type {{ reaction: Reaction | null, entries: Map<Value, TraceEntry> } | null} */
|
|
772
|
+
var tracing_expressions = null;
|
|
773
|
+
/**
|
|
774
|
+
* @param {Value} signal
|
|
775
|
+
* @param {TraceEntry} [entry]
|
|
776
|
+
*/
|
|
777
|
+
function log_entry(signal, entry) {
|
|
778
|
+
const value = signal.v;
|
|
779
|
+
if (value === UNINITIALIZED) return;
|
|
780
|
+
const type = get_type(signal);
|
|
781
|
+
const current_reaction = active_reaction;
|
|
782
|
+
const dirty = signal.wv > current_reaction.wv || current_reaction.wv === 0;
|
|
783
|
+
const style = dirty ? "color: CornflowerBlue; font-weight: bold" : "color: grey; font-weight: normal";
|
|
784
|
+
console.groupCollapsed(signal.label ? `%c${type}%c ${signal.label}` : `%c${type}%c`, style, dirty ? "font-weight: normal" : style, typeof value === "object" && value !== null && STATE_SYMBOL in value ? snapshot(value, true) : value);
|
|
785
|
+
if (type === "$derived") {
|
|
786
|
+
const deps = new Set(
|
|
787
|
+
/** @type {Derived} */
|
|
788
|
+
signal.deps
|
|
789
|
+
);
|
|
790
|
+
for (const dep of deps) log_entry(dep);
|
|
791
|
+
}
|
|
792
|
+
if (signal.created) console.log(signal.created);
|
|
793
|
+
if (dirty && signal.updated) {
|
|
794
|
+
for (const updated of signal.updated.values()) if (updated.error) console.log(updated.error);
|
|
795
|
+
}
|
|
796
|
+
if (entry) for (var trace of entry.traces) console.log(trace);
|
|
797
|
+
console.groupEnd();
|
|
798
|
+
}
|
|
799
|
+
/**
|
|
800
|
+
* @param {Value} signal
|
|
801
|
+
* @returns {'$state' | '$derived' | 'store'}
|
|
802
|
+
*/
|
|
803
|
+
function get_type(signal) {
|
|
804
|
+
if ((signal.f & 4194306) !== 0) return "$derived";
|
|
805
|
+
return signal.label?.startsWith("$") ? "store" : "$state";
|
|
806
|
+
}
|
|
807
|
+
/**
|
|
808
|
+
* @template T
|
|
809
|
+
* @param {() => string} label
|
|
810
|
+
* @param {() => T} fn
|
|
811
|
+
*/
|
|
812
|
+
function trace(label, fn) {
|
|
813
|
+
var previously_tracing_expressions = tracing_expressions;
|
|
814
|
+
try {
|
|
815
|
+
tracing_expressions = {
|
|
816
|
+
entries: /* @__PURE__ */ new Map(),
|
|
817
|
+
reaction: active_reaction
|
|
818
|
+
};
|
|
819
|
+
var start = performance.now();
|
|
820
|
+
var value = fn();
|
|
821
|
+
var time = (performance.now() - start).toFixed(2);
|
|
822
|
+
var prefix = untrack(label);
|
|
823
|
+
if (!effect_tracking()) console.log(`${prefix} %cran outside of an effect (${time}ms)`, "color: grey");
|
|
824
|
+
else if (tracing_expressions.entries.size === 0) console.log(`${prefix} %cno reactive dependencies (${time}ms)`, "color: grey");
|
|
825
|
+
else {
|
|
826
|
+
console.group(`${prefix} %c(${time}ms)`, "color: grey");
|
|
827
|
+
var entries = tracing_expressions.entries;
|
|
828
|
+
untrack(() => {
|
|
829
|
+
for (const [signal, traces] of entries) log_entry(signal, traces);
|
|
830
|
+
});
|
|
831
|
+
tracing_expressions = null;
|
|
832
|
+
console.groupEnd();
|
|
833
|
+
}
|
|
834
|
+
return value;
|
|
835
|
+
} finally {
|
|
836
|
+
tracing_expressions = previously_tracing_expressions;
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
/**
|
|
840
|
+
* @param {Value} source
|
|
841
|
+
* @param {string} label
|
|
842
|
+
*/
|
|
843
|
+
function tag(source, label) {
|
|
844
|
+
source.label = label;
|
|
845
|
+
tag_proxy(source.v, label);
|
|
846
|
+
return source;
|
|
847
|
+
}
|
|
848
|
+
/**
|
|
849
|
+
* @param {unknown} value
|
|
850
|
+
* @param {string} label
|
|
851
|
+
*/
|
|
852
|
+
function tag_proxy(value, label) {
|
|
853
|
+
value?.[PROXY_PATH_SYMBOL]?.(label);
|
|
854
|
+
return value;
|
|
855
|
+
}
|
|
856
|
+
//#endregion
|
|
857
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/context.js
|
|
858
|
+
/** @import { ComponentContext, DevStackEntry, Effect } from '#client' */
|
|
859
|
+
/** @type {ComponentContext | null} */
|
|
860
|
+
var component_context = null;
|
|
861
|
+
/** @param {ComponentContext | null} context */
|
|
862
|
+
function set_component_context(context) {
|
|
863
|
+
component_context = context;
|
|
864
|
+
}
|
|
865
|
+
/** @type {DevStackEntry | null} */
|
|
866
|
+
var dev_stack = null;
|
|
867
|
+
/** @param {DevStackEntry | null} stack */
|
|
868
|
+
function set_dev_stack(stack) {
|
|
869
|
+
dev_stack = stack;
|
|
870
|
+
}
|
|
871
|
+
/**
|
|
872
|
+
* Execute a callback with a new dev stack entry
|
|
873
|
+
* @param {() => any} callback - Function to execute
|
|
874
|
+
* @param {DevStackEntry['type']} type - Type of block/component
|
|
875
|
+
* @param {any} component - Component function
|
|
876
|
+
* @param {number} line - Line number
|
|
877
|
+
* @param {number} column - Column number
|
|
878
|
+
* @param {Record<string, any>} [additional] - Any additional properties to add to the dev stack entry
|
|
879
|
+
* @returns {any}
|
|
880
|
+
*/
|
|
881
|
+
function add_svelte_meta(callback, type, component, line, column, additional) {
|
|
882
|
+
const parent = dev_stack;
|
|
883
|
+
dev_stack = {
|
|
884
|
+
type,
|
|
885
|
+
file: component[FILENAME],
|
|
886
|
+
line,
|
|
887
|
+
column,
|
|
888
|
+
parent,
|
|
889
|
+
...additional
|
|
890
|
+
};
|
|
891
|
+
try {
|
|
892
|
+
return callback();
|
|
893
|
+
} finally {
|
|
894
|
+
dev_stack = parent;
|
|
895
|
+
}
|
|
896
|
+
}
|
|
897
|
+
/**
|
|
898
|
+
* The current component function. Different from current component context:
|
|
899
|
+
* ```html
|
|
900
|
+
* <!-- App.svelte -->
|
|
901
|
+
* <Foo>
|
|
902
|
+
* <Bar /> <!-- context == Foo.svelte, function == App.svelte -->
|
|
903
|
+
* </Foo>
|
|
904
|
+
* ```
|
|
905
|
+
* @type {ComponentContext['function']}
|
|
906
|
+
*/
|
|
907
|
+
var dev_current_component_function = null;
|
|
908
|
+
/** @param {ComponentContext['function']} fn */
|
|
909
|
+
function set_dev_current_component_function(fn) {
|
|
910
|
+
dev_current_component_function = fn;
|
|
911
|
+
}
|
|
912
|
+
/**
|
|
913
|
+
* @param {Record<string, unknown>} props
|
|
914
|
+
* @param {any} runes
|
|
915
|
+
* @param {Function} [fn]
|
|
916
|
+
* @returns {void}
|
|
917
|
+
*/
|
|
918
|
+
function push(props, runes = false, fn) {
|
|
919
|
+
component_context = {
|
|
920
|
+
p: component_context,
|
|
921
|
+
i: false,
|
|
922
|
+
c: null,
|
|
923
|
+
e: null,
|
|
924
|
+
s: props,
|
|
925
|
+
x: null,
|
|
926
|
+
r: active_effect,
|
|
927
|
+
l: legacy_mode_flag && !runes ? {
|
|
928
|
+
s: null,
|
|
929
|
+
u: null,
|
|
930
|
+
$: []
|
|
931
|
+
} : null
|
|
932
|
+
};
|
|
933
|
+
component_context.function = fn;
|
|
934
|
+
dev_current_component_function = fn;
|
|
935
|
+
}
|
|
936
|
+
/**
|
|
937
|
+
* @template {Record<string, any>} T
|
|
938
|
+
* @param {T} [component]
|
|
939
|
+
* @returns {T}
|
|
940
|
+
*/
|
|
941
|
+
function pop(component) {
|
|
942
|
+
var context = component_context;
|
|
943
|
+
var effects = context.e;
|
|
944
|
+
if (effects !== null) {
|
|
945
|
+
context.e = null;
|
|
946
|
+
for (var fn of effects) create_user_effect(fn);
|
|
947
|
+
}
|
|
948
|
+
if (component !== void 0) context.x = component;
|
|
949
|
+
context.i = true;
|
|
950
|
+
component_context = context.p;
|
|
951
|
+
dev_current_component_function = component_context?.function ?? null;
|
|
952
|
+
return component ?? {};
|
|
953
|
+
}
|
|
954
|
+
/** @returns {boolean} */
|
|
955
|
+
function is_runes() {
|
|
956
|
+
return !legacy_mode_flag || component_context !== null && component_context.l === null;
|
|
957
|
+
}
|
|
958
|
+
//#endregion
|
|
959
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/task.js
|
|
960
|
+
/** @type {Array<() => void>} */
|
|
961
|
+
var micro_tasks = [];
|
|
962
|
+
function run_micro_tasks() {
|
|
963
|
+
var tasks = micro_tasks;
|
|
964
|
+
micro_tasks = [];
|
|
965
|
+
run_all(tasks);
|
|
966
|
+
}
|
|
967
|
+
/**
|
|
968
|
+
* @param {() => void} fn
|
|
969
|
+
*/
|
|
970
|
+
function queue_micro_task(fn) {
|
|
971
|
+
if (micro_tasks.length === 0 && !is_flushing_sync) {
|
|
972
|
+
var tasks = micro_tasks;
|
|
973
|
+
queueMicrotask(() => {
|
|
974
|
+
if (tasks === micro_tasks) run_micro_tasks();
|
|
975
|
+
});
|
|
976
|
+
}
|
|
977
|
+
micro_tasks.push(fn);
|
|
978
|
+
}
|
|
979
|
+
/**
|
|
980
|
+
* Synchronously run any queued tasks.
|
|
981
|
+
*/
|
|
982
|
+
function flush_tasks() {
|
|
983
|
+
while (micro_tasks.length > 0) run_micro_tasks();
|
|
984
|
+
}
|
|
985
|
+
//#endregion
|
|
986
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/error-handling.js
|
|
987
|
+
/** @import { Derived, Effect } from '#client' */
|
|
988
|
+
/** @import { Boundary } from './dom/blocks/boundary.js' */
|
|
989
|
+
var adjustments = /* @__PURE__ */ new WeakMap();
|
|
990
|
+
/**
|
|
991
|
+
* @param {unknown} error
|
|
992
|
+
*/
|
|
993
|
+
function handle_error(error) {
|
|
994
|
+
var effect = active_effect;
|
|
995
|
+
if (effect === null) {
|
|
996
|
+
/** @type {Derived} */ active_reaction.f |= ERROR_VALUE;
|
|
997
|
+
return error;
|
|
998
|
+
}
|
|
999
|
+
if (error instanceof Error && !adjustments.has(error)) adjustments.set(error, get_adjustments(error, effect));
|
|
1000
|
+
if ((effect.f & 32768) === 0 && (effect.f & 4) === 0) {
|
|
1001
|
+
if (!effect.parent && error instanceof Error) apply_adjustments(error);
|
|
1002
|
+
throw error;
|
|
1003
|
+
}
|
|
1004
|
+
invoke_error_boundary(error, effect);
|
|
1005
|
+
}
|
|
1006
|
+
/**
|
|
1007
|
+
* @param {unknown} error
|
|
1008
|
+
* @param {Effect | null} effect
|
|
1009
|
+
*/
|
|
1010
|
+
function invoke_error_boundary(error, effect) {
|
|
1011
|
+
while (effect !== null) {
|
|
1012
|
+
if ((effect.f & 128) !== 0) {
|
|
1013
|
+
if ((effect.f & 32768) === 0) throw error;
|
|
1014
|
+
try {
|
|
1015
|
+
/** @type {Boundary} */ effect.b.error(error);
|
|
1016
|
+
return;
|
|
1017
|
+
} catch (e) {
|
|
1018
|
+
error = e;
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1021
|
+
effect = effect.parent;
|
|
1022
|
+
}
|
|
1023
|
+
if (error instanceof Error) apply_adjustments(error);
|
|
1024
|
+
throw error;
|
|
1025
|
+
}
|
|
1026
|
+
/**
|
|
1027
|
+
* Add useful information to the error message/stack in development
|
|
1028
|
+
* @param {Error} error
|
|
1029
|
+
* @param {Effect} effect
|
|
1030
|
+
*/
|
|
1031
|
+
function get_adjustments(error, effect) {
|
|
1032
|
+
const message_descriptor = get_descriptor(error, "message");
|
|
1033
|
+
if (message_descriptor && !message_descriptor.configurable) return;
|
|
1034
|
+
var indent = is_firefox ? " " : " ";
|
|
1035
|
+
var component_stack = `\n${indent}in ${effect.fn?.name || "<unknown>"}`;
|
|
1036
|
+
var context = effect.ctx;
|
|
1037
|
+
while (context !== null) {
|
|
1038
|
+
component_stack += `\n${indent}in ${context.function?.[FILENAME].split("/").pop()}`;
|
|
1039
|
+
context = context.p;
|
|
1040
|
+
}
|
|
1041
|
+
return {
|
|
1042
|
+
message: error.message + `\n${component_stack}\n`,
|
|
1043
|
+
stack: error.stack?.split("\n").filter((line) => !line.includes("svelte/src/internal")).join("\n")
|
|
1044
|
+
};
|
|
1045
|
+
}
|
|
1046
|
+
/**
|
|
1047
|
+
* @param {Error} error
|
|
1048
|
+
*/
|
|
1049
|
+
function apply_adjustments(error) {
|
|
1050
|
+
const adjusted = adjustments.get(error);
|
|
1051
|
+
if (adjusted) {
|
|
1052
|
+
define_property(error, "message", { value: adjusted.message });
|
|
1053
|
+
define_property(error, "stack", { value: adjusted.stack });
|
|
1054
|
+
}
|
|
1055
|
+
}
|
|
1056
|
+
//#endregion
|
|
1057
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/reactivity/status.js
|
|
1058
|
+
/** @import { Derived, Signal } from '#client' */
|
|
1059
|
+
var STATUS_MASK = ~(DIRTY | MAYBE_DIRTY | CLEAN);
|
|
1060
|
+
/**
|
|
1061
|
+
* @param {Signal} signal
|
|
1062
|
+
* @param {number} status
|
|
1063
|
+
*/
|
|
1064
|
+
function set_signal_status(signal, status) {
|
|
1065
|
+
signal.f = signal.f & STATUS_MASK | status;
|
|
1066
|
+
}
|
|
1067
|
+
/**
|
|
1068
|
+
* Set a derived's status to CLEAN or MAYBE_DIRTY based on its connection state.
|
|
1069
|
+
* @param {Derived} derived
|
|
1070
|
+
*/
|
|
1071
|
+
function update_derived_status(derived) {
|
|
1072
|
+
if ((derived.f & 512) !== 0 || derived.deps === null) set_signal_status(derived, CLEAN);
|
|
1073
|
+
else set_signal_status(derived, MAYBE_DIRTY);
|
|
1074
|
+
}
|
|
1075
|
+
//#endregion
|
|
1076
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/reactivity/utils.js
|
|
1077
|
+
/** @import { Derived, Effect, Value } from '#client' */
|
|
1078
|
+
/**
|
|
1079
|
+
* @param {Value[] | null} deps
|
|
1080
|
+
*/
|
|
1081
|
+
function clear_marked(deps) {
|
|
1082
|
+
if (deps === null) return;
|
|
1083
|
+
for (const dep of deps) {
|
|
1084
|
+
if ((dep.f & 2) === 0 || (dep.f & 65536) === 0) continue;
|
|
1085
|
+
dep.f ^= WAS_MARKED;
|
|
1086
|
+
clear_marked(
|
|
1087
|
+
/** @type {Derived} */
|
|
1088
|
+
dep.deps
|
|
1089
|
+
);
|
|
1090
|
+
}
|
|
1091
|
+
}
|
|
1092
|
+
/**
|
|
1093
|
+
* @param {Effect} effect
|
|
1094
|
+
* @param {Set<Effect>} dirty_effects
|
|
1095
|
+
* @param {Set<Effect>} maybe_dirty_effects
|
|
1096
|
+
*/
|
|
1097
|
+
function defer_effect(effect, dirty_effects, maybe_dirty_effects) {
|
|
1098
|
+
if ((effect.f & 2048) !== 0) dirty_effects.add(effect);
|
|
1099
|
+
else if ((effect.f & 4096) !== 0) maybe_dirty_effects.add(effect);
|
|
1100
|
+
clear_marked(effect.deps);
|
|
1101
|
+
set_signal_status(effect, CLEAN);
|
|
1102
|
+
}
|
|
1103
|
+
//#endregion
|
|
1104
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/store/shared/index.js
|
|
1105
|
+
/** @import { Readable, StartStopNotifier, Subscriber, Unsubscriber, Updater, Writable } from '../public.js' */
|
|
1106
|
+
/** @import { Stores, StoresValues, SubscribeInvalidateTuple } from '../private.js' */
|
|
1107
|
+
/**
|
|
1108
|
+
* @type {Array<SubscribeInvalidateTuple<any> | any>}
|
|
1109
|
+
*/
|
|
1110
|
+
var subscriber_queue = [];
|
|
1111
|
+
/**
|
|
1112
|
+
* Creates a `Readable` store that allows reading by subscription.
|
|
1113
|
+
*
|
|
1114
|
+
* @template T
|
|
1115
|
+
* @param {T} [value] initial value
|
|
1116
|
+
* @param {StartStopNotifier<T>} [start]
|
|
1117
|
+
* @returns {Readable<T>}
|
|
1118
|
+
*/
|
|
1119
|
+
function readable(value, start) {
|
|
1120
|
+
return { subscribe: writable(value, start).subscribe };
|
|
1121
|
+
}
|
|
1122
|
+
/**
|
|
1123
|
+
* Create a `Writable` store that allows both updating and reading by subscription.
|
|
1124
|
+
*
|
|
1125
|
+
* @template T
|
|
1126
|
+
* @param {T} [value] initial value
|
|
1127
|
+
* @param {StartStopNotifier<T>} [start]
|
|
1128
|
+
* @returns {Writable<T>}
|
|
1129
|
+
*/
|
|
1130
|
+
function writable(value, start = noop) {
|
|
1131
|
+
/** @type {Unsubscriber | null} */
|
|
1132
|
+
let stop = null;
|
|
1133
|
+
/** @type {Set<SubscribeInvalidateTuple<T>>} */
|
|
1134
|
+
const subscribers = /* @__PURE__ */ new Set();
|
|
1135
|
+
/**
|
|
1136
|
+
* @param {T} new_value
|
|
1137
|
+
* @returns {void}
|
|
1138
|
+
*/
|
|
1139
|
+
function set(new_value) {
|
|
1140
|
+
if (safe_not_equal(value, new_value)) {
|
|
1141
|
+
value = new_value;
|
|
1142
|
+
if (stop) {
|
|
1143
|
+
const run_queue = !subscriber_queue.length;
|
|
1144
|
+
for (const subscriber of subscribers) {
|
|
1145
|
+
subscriber[1]();
|
|
1146
|
+
subscriber_queue.push(subscriber, value);
|
|
1147
|
+
}
|
|
1148
|
+
if (run_queue) {
|
|
1149
|
+
for (let i = 0; i < subscriber_queue.length; i += 2) subscriber_queue[i][0](subscriber_queue[i + 1]);
|
|
1150
|
+
subscriber_queue.length = 0;
|
|
1151
|
+
}
|
|
1152
|
+
}
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
/**
|
|
1156
|
+
* @param {Updater<T>} fn
|
|
1157
|
+
* @returns {void}
|
|
1158
|
+
*/
|
|
1159
|
+
function update(fn) {
|
|
1160
|
+
set(fn(value));
|
|
1161
|
+
}
|
|
1162
|
+
/**
|
|
1163
|
+
* @param {Subscriber<T>} run
|
|
1164
|
+
* @param {() => void} [invalidate]
|
|
1165
|
+
* @returns {Unsubscriber}
|
|
1166
|
+
*/
|
|
1167
|
+
function subscribe(run, invalidate = noop) {
|
|
1168
|
+
/** @type {SubscribeInvalidateTuple<T>} */
|
|
1169
|
+
const subscriber = [run, invalidate];
|
|
1170
|
+
subscribers.add(subscriber);
|
|
1171
|
+
if (subscribers.size === 1) stop = start(set, update) || noop;
|
|
1172
|
+
run(value);
|
|
1173
|
+
return () => {
|
|
1174
|
+
subscribers.delete(subscriber);
|
|
1175
|
+
if (subscribers.size === 0 && stop) {
|
|
1176
|
+
stop();
|
|
1177
|
+
stop = null;
|
|
1178
|
+
}
|
|
1179
|
+
};
|
|
1180
|
+
}
|
|
1181
|
+
return {
|
|
1182
|
+
set,
|
|
1183
|
+
update,
|
|
1184
|
+
subscribe
|
|
1185
|
+
};
|
|
1186
|
+
}
|
|
1187
|
+
/**
|
|
1188
|
+
* Derived value store by synchronizing one or more readable stores and
|
|
1189
|
+
* applying an aggregation function over its input values.
|
|
1190
|
+
*
|
|
1191
|
+
* @template {Stores} S
|
|
1192
|
+
* @template T
|
|
1193
|
+
* @overload
|
|
1194
|
+
* @param {S} stores
|
|
1195
|
+
* @param {(values: StoresValues<S>, set: (value: T) => void, update: (fn: Updater<T>) => void) => Unsubscriber | void} fn
|
|
1196
|
+
* @param {T} [initial_value]
|
|
1197
|
+
* @returns {Readable<T>}
|
|
1198
|
+
*/
|
|
1199
|
+
/**
|
|
1200
|
+
* Derived value store by synchronizing one or more readable stores and
|
|
1201
|
+
* applying an aggregation function over its input values.
|
|
1202
|
+
*
|
|
1203
|
+
* @template {Stores} S
|
|
1204
|
+
* @template T
|
|
1205
|
+
* @overload
|
|
1206
|
+
* @param {S} stores
|
|
1207
|
+
* @param {(values: StoresValues<S>) => T} fn
|
|
1208
|
+
* @param {T} [initial_value]
|
|
1209
|
+
* @returns {Readable<T>}
|
|
1210
|
+
*/
|
|
1211
|
+
/**
|
|
1212
|
+
* @template {Stores} S
|
|
1213
|
+
* @template T
|
|
1214
|
+
* @param {S} stores
|
|
1215
|
+
* @param {Function} fn
|
|
1216
|
+
* @param {T} [initial_value]
|
|
1217
|
+
* @returns {Readable<T>}
|
|
1218
|
+
*/
|
|
1219
|
+
function derived$1(stores, fn, initial_value) {
|
|
1220
|
+
const single = !Array.isArray(stores);
|
|
1221
|
+
/** @type {Array<Readable<any>>} */
|
|
1222
|
+
const stores_array = single ? [stores] : stores;
|
|
1223
|
+
if (!stores_array.every(Boolean)) throw new Error("derived() expects stores as input, got a falsy value");
|
|
1224
|
+
const auto = fn.length < 2;
|
|
1225
|
+
return readable(initial_value, (set, update) => {
|
|
1226
|
+
let started = false;
|
|
1227
|
+
/** @type {T[]} */
|
|
1228
|
+
const values = [];
|
|
1229
|
+
let pending = 0;
|
|
1230
|
+
let cleanup = noop;
|
|
1231
|
+
const sync = () => {
|
|
1232
|
+
if (pending) return;
|
|
1233
|
+
cleanup();
|
|
1234
|
+
const result = fn(single ? values[0] : values, set, update);
|
|
1235
|
+
if (auto) set(result);
|
|
1236
|
+
else cleanup = typeof result === "function" ? result : noop;
|
|
1237
|
+
};
|
|
1238
|
+
const unsubscribers = stores_array.map((store, i) => subscribe_to_store(store, (value) => {
|
|
1239
|
+
values[i] = value;
|
|
1240
|
+
pending &= ~(1 << i);
|
|
1241
|
+
if (started) sync();
|
|
1242
|
+
}, () => {
|
|
1243
|
+
pending |= 1 << i;
|
|
1244
|
+
}));
|
|
1245
|
+
started = true;
|
|
1246
|
+
sync();
|
|
1247
|
+
return function stop() {
|
|
1248
|
+
run_all(unsubscribers);
|
|
1249
|
+
cleanup();
|
|
1250
|
+
started = false;
|
|
1251
|
+
};
|
|
1252
|
+
});
|
|
1253
|
+
}
|
|
1254
|
+
/**
|
|
1255
|
+
* Takes a store and returns a new one derived from the old one that is readable.
|
|
1256
|
+
*
|
|
1257
|
+
* @template T
|
|
1258
|
+
* @param {Readable<T>} store - store to make readonly
|
|
1259
|
+
* @returns {Readable<T>}
|
|
1260
|
+
*/
|
|
1261
|
+
function readonly(store) {
|
|
1262
|
+
return { subscribe: store.subscribe.bind(store) };
|
|
1263
|
+
}
|
|
1264
|
+
/**
|
|
1265
|
+
* Get the current value from a store by subscribing and immediately unsubscribing.
|
|
1266
|
+
*
|
|
1267
|
+
* @template T
|
|
1268
|
+
* @param {Readable<T>} store
|
|
1269
|
+
* @returns {T}
|
|
1270
|
+
*/
|
|
1271
|
+
function get$1(store) {
|
|
1272
|
+
let value;
|
|
1273
|
+
subscribe_to_store(store, (_) => value = _)();
|
|
1274
|
+
return value;
|
|
1275
|
+
}
|
|
1276
|
+
//#endregion
|
|
1277
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/reactivity/store.js
|
|
1278
|
+
/** @import { StoreReferencesContainer } from '#client' */
|
|
1279
|
+
/** @import { Store } from '#shared' */
|
|
1280
|
+
/**
|
|
1281
|
+
* We set this to `true` when updating a store so that we correctly
|
|
1282
|
+
* schedule effects if the update takes place inside a `$:` effect
|
|
1283
|
+
*/
|
|
1284
|
+
var legacy_is_updating_store = false;
|
|
1285
|
+
/**
|
|
1286
|
+
* Whether or not the prop currently being read is a store binding, as in
|
|
1287
|
+
* `<Child bind:x={$y} />`. If it is, we treat the prop as mutable even in
|
|
1288
|
+
* runes mode, and skip `binding_property_non_reactive` validation
|
|
1289
|
+
*/
|
|
1290
|
+
var is_store_binding = false;
|
|
1291
|
+
var IS_UNMOUNTED = Symbol("unmounted");
|
|
1292
|
+
/**
|
|
1293
|
+
* Gets the current value of a store. If the store isn't subscribed to yet, it will create a proxy
|
|
1294
|
+
* signal that will be updated when the store is. The store references container is needed to
|
|
1295
|
+
* track reassignments to stores and to track the correct component context.
|
|
1296
|
+
* @template V
|
|
1297
|
+
* @param {Store<V> | null | undefined} store
|
|
1298
|
+
* @param {string} store_name
|
|
1299
|
+
* @param {StoreReferencesContainer} stores
|
|
1300
|
+
* @returns {V}
|
|
1301
|
+
*/
|
|
1302
|
+
function store_get(store, store_name, stores) {
|
|
1303
|
+
const entry = stores[store_name] ??= {
|
|
1304
|
+
store: null,
|
|
1305
|
+
source: /* @__PURE__ */ mutable_source(void 0),
|
|
1306
|
+
unsubscribe: noop
|
|
1307
|
+
};
|
|
1308
|
+
entry.source.label = store_name;
|
|
1309
|
+
if (entry.store !== store && !(IS_UNMOUNTED in stores)) {
|
|
1310
|
+
entry.unsubscribe();
|
|
1311
|
+
entry.store = store ?? null;
|
|
1312
|
+
if (store == null) {
|
|
1313
|
+
entry.source.v = void 0;
|
|
1314
|
+
entry.unsubscribe = noop;
|
|
1315
|
+
} else {
|
|
1316
|
+
var is_synchronous_callback = true;
|
|
1317
|
+
entry.unsubscribe = subscribe_to_store(store, (v) => {
|
|
1318
|
+
if (is_synchronous_callback) entry.source.v = v;
|
|
1319
|
+
else set(entry.source, v);
|
|
1320
|
+
});
|
|
1321
|
+
is_synchronous_callback = false;
|
|
1322
|
+
}
|
|
1323
|
+
}
|
|
1324
|
+
if (store && IS_UNMOUNTED in stores) return get$1(store);
|
|
1325
|
+
return get(entry.source);
|
|
1326
|
+
}
|
|
1327
|
+
/**
|
|
1328
|
+
* Unsubscribe from a store if it's not the same as the one in the store references container.
|
|
1329
|
+
* We need this in addition to `store_get` because someone could unsubscribe from a store but
|
|
1330
|
+
* then never subscribe to the new one (if any), causing the subscription to stay open wrongfully.
|
|
1331
|
+
* @param {Store<any> | null | undefined} store
|
|
1332
|
+
* @param {string} store_name
|
|
1333
|
+
* @param {StoreReferencesContainer} stores
|
|
1334
|
+
*/
|
|
1335
|
+
function store_unsub(store, store_name, stores) {
|
|
1336
|
+
/** @type {StoreReferencesContainer[''] | undefined} */
|
|
1337
|
+
let entry = stores[store_name];
|
|
1338
|
+
if (entry && entry.store !== store) {
|
|
1339
|
+
entry.unsubscribe();
|
|
1340
|
+
entry.unsubscribe = noop;
|
|
1341
|
+
}
|
|
1342
|
+
return store;
|
|
1343
|
+
}
|
|
1344
|
+
/**
|
|
1345
|
+
* Sets the new value of a store and returns that value.
|
|
1346
|
+
* @template V
|
|
1347
|
+
* @param {Store<V>} store
|
|
1348
|
+
* @param {V} value
|
|
1349
|
+
* @returns {V}
|
|
1350
|
+
*/
|
|
1351
|
+
function store_set(store, value) {
|
|
1352
|
+
update_with_flag(store, value);
|
|
1353
|
+
return value;
|
|
1354
|
+
}
|
|
1355
|
+
/**
|
|
1356
|
+
* @param {StoreReferencesContainer} stores
|
|
1357
|
+
* @param {string} store_name
|
|
1358
|
+
*/
|
|
1359
|
+
function invalidate_store(stores, store_name) {
|
|
1360
|
+
var entry = stores[store_name];
|
|
1361
|
+
if (entry.store !== null) store_set(entry.store, entry.source.v);
|
|
1362
|
+
}
|
|
1363
|
+
/**
|
|
1364
|
+
* Unsubscribes from all auto-subscribed stores on destroy
|
|
1365
|
+
* @returns {[StoreReferencesContainer, ()=>void]}
|
|
1366
|
+
*/
|
|
1367
|
+
function setup_stores() {
|
|
1368
|
+
/** @type {StoreReferencesContainer} */
|
|
1369
|
+
const stores = {};
|
|
1370
|
+
function cleanup() {
|
|
1371
|
+
teardown(() => {
|
|
1372
|
+
for (var store_name in stores) stores[store_name].unsubscribe();
|
|
1373
|
+
define_property(stores, IS_UNMOUNTED, {
|
|
1374
|
+
enumerable: false,
|
|
1375
|
+
value: true
|
|
1376
|
+
});
|
|
1377
|
+
});
|
|
1378
|
+
}
|
|
1379
|
+
return [stores, cleanup];
|
|
1380
|
+
}
|
|
1381
|
+
/**
|
|
1382
|
+
* @param {Store<V>} store
|
|
1383
|
+
* @param {V} value
|
|
1384
|
+
* @template V
|
|
1385
|
+
*/
|
|
1386
|
+
function update_with_flag(store, value) {
|
|
1387
|
+
legacy_is_updating_store = true;
|
|
1388
|
+
try {
|
|
1389
|
+
store.set(value);
|
|
1390
|
+
} finally {
|
|
1391
|
+
legacy_is_updating_store = false;
|
|
1392
|
+
}
|
|
1393
|
+
}
|
|
1394
|
+
/**
|
|
1395
|
+
* Updates a store with a new value.
|
|
1396
|
+
* @param {Store<V>} store the store to update
|
|
1397
|
+
* @param {any} expression the expression that mutates the store
|
|
1398
|
+
* @param {V} new_value the new store value
|
|
1399
|
+
* @template V
|
|
1400
|
+
*/
|
|
1401
|
+
function store_mutate(store, expression, new_value) {
|
|
1402
|
+
update_with_flag(store, new_value);
|
|
1403
|
+
return expression;
|
|
1404
|
+
}
|
|
1405
|
+
/**
|
|
1406
|
+
* @param {Store<number>} store
|
|
1407
|
+
* @param {number} store_value
|
|
1408
|
+
* @param {1 | -1} [d]
|
|
1409
|
+
* @returns {number}
|
|
1410
|
+
*/
|
|
1411
|
+
function update_store(store, store_value, d = 1) {
|
|
1412
|
+
update_with_flag(store, store_value + d);
|
|
1413
|
+
return store_value;
|
|
1414
|
+
}
|
|
1415
|
+
/**
|
|
1416
|
+
* @param {Store<number>} store
|
|
1417
|
+
* @param {number} store_value
|
|
1418
|
+
* @param {1 | -1} [d]
|
|
1419
|
+
* @returns {number}
|
|
1420
|
+
*/
|
|
1421
|
+
function update_pre_store(store, store_value, d = 1) {
|
|
1422
|
+
const value = store_value + d;
|
|
1423
|
+
update_with_flag(store, value);
|
|
1424
|
+
return value;
|
|
1425
|
+
}
|
|
1426
|
+
/**
|
|
1427
|
+
* Called inside prop getters to communicate that the prop is a store binding
|
|
1428
|
+
*/
|
|
1429
|
+
function mark_store_binding() {
|
|
1430
|
+
is_store_binding = true;
|
|
1431
|
+
}
|
|
1432
|
+
/**
|
|
1433
|
+
* Returns a tuple that indicates whether `fn()` reads a prop that is a store binding.
|
|
1434
|
+
* Used to prevent `binding_property_non_reactive` validation false positives and
|
|
1435
|
+
* ensure that these props are treated as mutable even in runes mode
|
|
1436
|
+
* @template T
|
|
1437
|
+
* @param {() => T} fn
|
|
1438
|
+
* @returns {[T, boolean]}
|
|
1439
|
+
*/
|
|
1440
|
+
function capture_store_binding(fn) {
|
|
1441
|
+
var previous_is_store_binding = is_store_binding;
|
|
1442
|
+
try {
|
|
1443
|
+
is_store_binding = false;
|
|
1444
|
+
return [fn(), is_store_binding];
|
|
1445
|
+
} finally {
|
|
1446
|
+
is_store_binding = previous_is_store_binding;
|
|
1447
|
+
}
|
|
1448
|
+
}
|
|
1449
|
+
//#endregion
|
|
1450
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/reactivity/batch.js
|
|
1451
|
+
/** @import { Fork } from 'svelte' */
|
|
1452
|
+
/** @import { Derived, Effect, Reaction, Source, Value } from '#client' */
|
|
1453
|
+
/** @type {Batch | null} */
|
|
1454
|
+
var first_batch = null;
|
|
1455
|
+
/** @type {Batch | null} */
|
|
1456
|
+
var last_batch = null;
|
|
1457
|
+
/** @type {Batch | null} */
|
|
1458
|
+
var current_batch = null;
|
|
1459
|
+
/**
|
|
1460
|
+
* This is needed to avoid overwriting inputs
|
|
1461
|
+
* @type {Batch | null}
|
|
1462
|
+
*/
|
|
1463
|
+
var previous_batch = null;
|
|
1464
|
+
/**
|
|
1465
|
+
* When time travelling (i.e. working in one batch, while other batches
|
|
1466
|
+
* still have ongoing work), we ignore the real values of affected
|
|
1467
|
+
* signals in favour of their values within the batch
|
|
1468
|
+
* @type {Map<Value, any> | null}
|
|
1469
|
+
*/
|
|
1470
|
+
var batch_values = null;
|
|
1471
|
+
/** @type {Effect | null} */
|
|
1472
|
+
var last_scheduled_effect = null;
|
|
1473
|
+
var is_flushing_sync = false;
|
|
1474
|
+
var is_processing = false;
|
|
1475
|
+
/**
|
|
1476
|
+
* During traversal, this is an array. Newly created effects are (if not immediately
|
|
1477
|
+
* executed) pushed to this array, rather than going through the scheduling
|
|
1478
|
+
* rigamarole that would cause another turn of the flush loop.
|
|
1479
|
+
* @type {Effect[] | null}
|
|
1480
|
+
*/
|
|
1481
|
+
var collected_effects = null;
|
|
1482
|
+
/**
|
|
1483
|
+
* An array of effects that are marked during traversal as a result of a `set`
|
|
1484
|
+
* (not `internal_set`) call. These will be added to the next batch and
|
|
1485
|
+
* trigger another `batch.process()`
|
|
1486
|
+
* @type {Effect[] | null}
|
|
1487
|
+
* @deprecated when we get rid of legacy mode and stores, we can get rid of this
|
|
1488
|
+
*/
|
|
1489
|
+
var legacy_updates = null;
|
|
1490
|
+
var flush_count = 0;
|
|
1491
|
+
/** @type {Set<Value>} */
|
|
1492
|
+
var source_stacks = /* @__PURE__ */ new Set();
|
|
1493
|
+
var uid = 1;
|
|
1494
|
+
var Batch = class Batch {
|
|
1495
|
+
id = uid++;
|
|
1496
|
+
/** True as soon as `#process` was called */
|
|
1497
|
+
#started = false;
|
|
1498
|
+
linked = true;
|
|
1499
|
+
/** @type {Batch | null} */
|
|
1500
|
+
#prev = null;
|
|
1501
|
+
/** @type {Batch | null} */
|
|
1502
|
+
#next = null;
|
|
1503
|
+
/** @type {Map<Effect, ReturnType<typeof deferred<any>>>} */
|
|
1504
|
+
async_deriveds = /* @__PURE__ */ new Map();
|
|
1505
|
+
/**
|
|
1506
|
+
* The current values of any signals that are updated in this batch.
|
|
1507
|
+
* Tuple format: [value, is_derived] (note: is_derived is false for deriveds, too, if they were overridden via assignment)
|
|
1508
|
+
* They keys of this map are identical to `this.#previous`
|
|
1509
|
+
* @type {Map<Value, [any, boolean]>}
|
|
1510
|
+
*/
|
|
1511
|
+
current = /* @__PURE__ */ new Map();
|
|
1512
|
+
/**
|
|
1513
|
+
* The values of any signals (sources and deriveds) that are updated in this batch _before_ those updates took place.
|
|
1514
|
+
* They keys of this map are identical to `this.#current`
|
|
1515
|
+
* @type {Map<Value, any>}
|
|
1516
|
+
*/
|
|
1517
|
+
previous = /* @__PURE__ */ new Map();
|
|
1518
|
+
/**
|
|
1519
|
+
* Async effects which this batch doesn't take into account anymore when calculating blockers,
|
|
1520
|
+
* as it has a value for it already.
|
|
1521
|
+
* @type {Set<Effect>}
|
|
1522
|
+
*/
|
|
1523
|
+
unblocked = /* @__PURE__ */ new Set();
|
|
1524
|
+
/**
|
|
1525
|
+
* When the batch is committed (and the DOM is updated), we need to remove old branches
|
|
1526
|
+
* and append new ones by calling the functions added inside (if/each/key/etc) blocks
|
|
1527
|
+
* @type {Set<(batch: Batch) => void>}
|
|
1528
|
+
*/
|
|
1529
|
+
#commit_callbacks = /* @__PURE__ */ new Set();
|
|
1530
|
+
/**
|
|
1531
|
+
* If a fork is discarded, we need to destroy any effects that are no longer needed
|
|
1532
|
+
* @type {Set<(batch: Batch) => void>}
|
|
1533
|
+
*/
|
|
1534
|
+
#discard_callbacks = /* @__PURE__ */ new Set();
|
|
1535
|
+
/**
|
|
1536
|
+
* Callbacks that should run only when a fork is committed.
|
|
1537
|
+
* @type {Set<(batch: Batch) => void>}
|
|
1538
|
+
*/
|
|
1539
|
+
#fork_commit_callbacks = /* @__PURE__ */ new Set();
|
|
1540
|
+
/**
|
|
1541
|
+
* The number of async effects that are currently in flight
|
|
1542
|
+
*/
|
|
1543
|
+
#pending = 0;
|
|
1544
|
+
/**
|
|
1545
|
+
* Async effects that are currently in flight, _not_ inside a pending boundary
|
|
1546
|
+
* @type {Map<Effect, number>}
|
|
1547
|
+
*/
|
|
1548
|
+
#blocking_pending = /* @__PURE__ */ new Map();
|
|
1549
|
+
/**
|
|
1550
|
+
* A deferred that resolves when the batch is committed, used with `settled()`
|
|
1551
|
+
* TODO replace with Promise.withResolvers once supported widely enough
|
|
1552
|
+
* @type {{ promise: Promise<void>, resolve: (value?: any) => void, reject: (reason: unknown) => void } | null}
|
|
1553
|
+
*/
|
|
1554
|
+
#deferred = null;
|
|
1555
|
+
/**
|
|
1556
|
+
* The root effects that need to be flushed
|
|
1557
|
+
* @type {Effect[]}
|
|
1558
|
+
*/
|
|
1559
|
+
#roots = [];
|
|
1560
|
+
/**
|
|
1561
|
+
* Effects created while this batch was active.
|
|
1562
|
+
* @type {Effect[]}
|
|
1563
|
+
*/
|
|
1564
|
+
#new_effects = [];
|
|
1565
|
+
/**
|
|
1566
|
+
* Deferred effects (which run after async work has completed) that are DIRTY
|
|
1567
|
+
* @type {Set<Effect>}
|
|
1568
|
+
*/
|
|
1569
|
+
#dirty_effects = /* @__PURE__ */ new Set();
|
|
1570
|
+
/**
|
|
1571
|
+
* Deferred effects that are MAYBE_DIRTY
|
|
1572
|
+
* @type {Set<Effect>}
|
|
1573
|
+
*/
|
|
1574
|
+
#maybe_dirty_effects = /* @__PURE__ */ new Set();
|
|
1575
|
+
/**
|
|
1576
|
+
* A map of branches that still exist, but will be destroyed when this batch
|
|
1577
|
+
* is committed — we skip over these during `process`.
|
|
1578
|
+
* The value contains child effects that were dirty/maybe_dirty before being reset,
|
|
1579
|
+
* so they can be rescheduled if the branch survives.
|
|
1580
|
+
* @type {Map<Effect, { d: Effect[], m: Effect[] }>}
|
|
1581
|
+
*/
|
|
1582
|
+
#skipped_branches = /* @__PURE__ */ new Map();
|
|
1583
|
+
/**
|
|
1584
|
+
* Inverse of #skipped_branches which we need to tell prior batches to unskip them when committing
|
|
1585
|
+
* @type {Set<Effect>}
|
|
1586
|
+
*/
|
|
1587
|
+
#unskipped_branches = /* @__PURE__ */ new Set();
|
|
1588
|
+
is_fork = false;
|
|
1589
|
+
#decrement_queued = false;
|
|
1590
|
+
#is_deferred() {
|
|
1591
|
+
if (this.is_fork) return true;
|
|
1592
|
+
for (const effect of this.#blocking_pending.keys()) {
|
|
1593
|
+
var e = effect;
|
|
1594
|
+
var skipped = false;
|
|
1595
|
+
while (e.parent !== null) {
|
|
1596
|
+
if (this.#skipped_branches.has(e)) {
|
|
1597
|
+
skipped = true;
|
|
1598
|
+
break;
|
|
1599
|
+
}
|
|
1600
|
+
e = e.parent;
|
|
1601
|
+
}
|
|
1602
|
+
if (!skipped) return true;
|
|
1603
|
+
}
|
|
1604
|
+
return false;
|
|
1605
|
+
}
|
|
1606
|
+
/**
|
|
1607
|
+
* Add an effect to the #skipped_branches map and reset its children
|
|
1608
|
+
* @param {Effect} effect
|
|
1609
|
+
*/
|
|
1610
|
+
skip_effect(effect) {
|
|
1611
|
+
if (!this.#skipped_branches.has(effect)) this.#skipped_branches.set(effect, {
|
|
1612
|
+
d: [],
|
|
1613
|
+
m: []
|
|
1614
|
+
});
|
|
1615
|
+
this.#unskipped_branches.delete(effect);
|
|
1616
|
+
}
|
|
1617
|
+
/**
|
|
1618
|
+
* Remove an effect from the #skipped_branches map and reschedule
|
|
1619
|
+
* any tracked dirty/maybe_dirty child effects
|
|
1620
|
+
* @param {Effect} effect
|
|
1621
|
+
* @param {(e: Effect) => void} callback
|
|
1622
|
+
*/
|
|
1623
|
+
unskip_effect(effect, callback = (e) => this.schedule(e)) {
|
|
1624
|
+
var tracked = this.#skipped_branches.get(effect);
|
|
1625
|
+
if (tracked) {
|
|
1626
|
+
this.#skipped_branches.delete(effect);
|
|
1627
|
+
for (var e of tracked.d) {
|
|
1628
|
+
set_signal_status(e, DIRTY);
|
|
1629
|
+
callback(e);
|
|
1630
|
+
}
|
|
1631
|
+
for (e of tracked.m) {
|
|
1632
|
+
set_signal_status(e, MAYBE_DIRTY);
|
|
1633
|
+
callback(e);
|
|
1634
|
+
}
|
|
1635
|
+
}
|
|
1636
|
+
this.#unskipped_branches.add(effect);
|
|
1637
|
+
}
|
|
1638
|
+
#process() {
|
|
1639
|
+
this.#started = true;
|
|
1640
|
+
if (flush_count++ > 1e3) {
|
|
1641
|
+
this.#unlink();
|
|
1642
|
+
infinite_loop_guard();
|
|
1643
|
+
}
|
|
1644
|
+
for (const value of this.current.keys()) source_stacks.add(value);
|
|
1645
|
+
if (!this.#is_deferred()) {
|
|
1646
|
+
for (const e of this.#dirty_effects) {
|
|
1647
|
+
this.#maybe_dirty_effects.delete(e);
|
|
1648
|
+
set_signal_status(e, DIRTY);
|
|
1649
|
+
this.schedule(e);
|
|
1650
|
+
}
|
|
1651
|
+
for (const e of this.#maybe_dirty_effects) {
|
|
1652
|
+
set_signal_status(e, MAYBE_DIRTY);
|
|
1653
|
+
this.schedule(e);
|
|
1654
|
+
}
|
|
1655
|
+
}
|
|
1656
|
+
const roots = this.#roots;
|
|
1657
|
+
this.#roots = [];
|
|
1658
|
+
this.apply();
|
|
1659
|
+
/** @type {Effect[]} */
|
|
1660
|
+
var effects = collected_effects = [];
|
|
1661
|
+
/** @type {Effect[]} */
|
|
1662
|
+
var render_effects = [];
|
|
1663
|
+
/**
|
|
1664
|
+
* @type {Effect[]}
|
|
1665
|
+
* @deprecated when we get rid of legacy mode and stores, we can get rid of this
|
|
1666
|
+
*/
|
|
1667
|
+
var updates = legacy_updates = [];
|
|
1668
|
+
for (const root of roots) try {
|
|
1669
|
+
this.#traverse(root, effects, render_effects);
|
|
1670
|
+
} catch (e) {
|
|
1671
|
+
reset_all(root);
|
|
1672
|
+
throw e;
|
|
1673
|
+
}
|
|
1674
|
+
current_batch = null;
|
|
1675
|
+
if (updates.length > 0) {
|
|
1676
|
+
var batch = Batch.ensure();
|
|
1677
|
+
for (const e of updates) batch.schedule(e);
|
|
1678
|
+
}
|
|
1679
|
+
collected_effects = null;
|
|
1680
|
+
legacy_updates = null;
|
|
1681
|
+
if (this.#is_deferred()) {
|
|
1682
|
+
this.#defer_effects(render_effects);
|
|
1683
|
+
this.#defer_effects(effects);
|
|
1684
|
+
for (const [e, t] of this.#skipped_branches) reset_branch(e, t);
|
|
1685
|
+
if (updates.length > 0)
|
|
1686
|
+
/** @type {Batch} */ current_batch.#process();
|
|
1687
|
+
return;
|
|
1688
|
+
}
|
|
1689
|
+
const earlier_batch = this.#find_earlier_batch();
|
|
1690
|
+
if (earlier_batch) {
|
|
1691
|
+
earlier_batch.#merge(this);
|
|
1692
|
+
return;
|
|
1693
|
+
}
|
|
1694
|
+
this.#dirty_effects.clear();
|
|
1695
|
+
this.#maybe_dirty_effects.clear();
|
|
1696
|
+
for (const fn of this.#commit_callbacks) fn(this);
|
|
1697
|
+
this.#commit_callbacks.clear();
|
|
1698
|
+
previous_batch = this;
|
|
1699
|
+
flush_queued_effects(render_effects);
|
|
1700
|
+
flush_queued_effects(effects);
|
|
1701
|
+
previous_batch = null;
|
|
1702
|
+
this.#deferred?.resolve();
|
|
1703
|
+
var next_batch = current_batch;
|
|
1704
|
+
if (this.linked && this.#pending === 0) this.#unlink();
|
|
1705
|
+
if (async_mode_flag && !this.linked) {
|
|
1706
|
+
this.#commit();
|
|
1707
|
+
current_batch = next_batch;
|
|
1708
|
+
}
|
|
1709
|
+
if (this.#roots.length > 0) {
|
|
1710
|
+
if (next_batch === null) {
|
|
1711
|
+
next_batch = this;
|
|
1712
|
+
this.#link();
|
|
1713
|
+
}
|
|
1714
|
+
const batch = next_batch;
|
|
1715
|
+
batch.#roots.push(...this.#roots.filter((r) => !batch.#roots.includes(r)));
|
|
1716
|
+
}
|
|
1717
|
+
if (next_batch !== null) next_batch.#process();
|
|
1718
|
+
}
|
|
1719
|
+
/**
|
|
1720
|
+
* Traverse the effect tree, executing effects or stashing
|
|
1721
|
+
* them for later execution as appropriate
|
|
1722
|
+
* @param {Effect} root
|
|
1723
|
+
* @param {Effect[]} effects
|
|
1724
|
+
* @param {Effect[]} render_effects
|
|
1725
|
+
*/
|
|
1726
|
+
#traverse(root, effects, render_effects) {
|
|
1727
|
+
root.f ^= CLEAN;
|
|
1728
|
+
var effect = root.first;
|
|
1729
|
+
while (effect !== null) {
|
|
1730
|
+
var flags = effect.f;
|
|
1731
|
+
var is_branch = (flags & 96) !== 0;
|
|
1732
|
+
if (!(is_branch && (flags & 1024) !== 0 || (flags & 8192) !== 0 || this.#skipped_branches.has(effect)) && effect.fn !== null) {
|
|
1733
|
+
if (is_branch) effect.f ^= CLEAN;
|
|
1734
|
+
else if ((flags & 4) !== 0) effects.push(effect);
|
|
1735
|
+
else if (async_mode_flag && (flags & 16777224) !== 0) render_effects.push(effect);
|
|
1736
|
+
else if (is_dirty(effect)) {
|
|
1737
|
+
if ((flags & 16) !== 0) this.#maybe_dirty_effects.add(effect);
|
|
1738
|
+
update_effect(effect);
|
|
1739
|
+
}
|
|
1740
|
+
var child = effect.first;
|
|
1741
|
+
if (child !== null) {
|
|
1742
|
+
effect = child;
|
|
1743
|
+
continue;
|
|
1744
|
+
}
|
|
1745
|
+
}
|
|
1746
|
+
while (effect !== null) {
|
|
1747
|
+
var next = effect.next;
|
|
1748
|
+
if (next !== null) {
|
|
1749
|
+
effect = next;
|
|
1750
|
+
break;
|
|
1751
|
+
}
|
|
1752
|
+
effect = effect.parent;
|
|
1753
|
+
}
|
|
1754
|
+
}
|
|
1755
|
+
}
|
|
1756
|
+
#find_earlier_batch() {
|
|
1757
|
+
var batch = this.#prev;
|
|
1758
|
+
while (batch !== null) {
|
|
1759
|
+
if (!batch.is_fork) {
|
|
1760
|
+
for (const [value, [, is_derived]] of this.current) if (batch.current.has(value) && !is_derived) return batch;
|
|
1761
|
+
}
|
|
1762
|
+
batch = batch.#prev;
|
|
1763
|
+
}
|
|
1764
|
+
return null;
|
|
1765
|
+
}
|
|
1766
|
+
/**
|
|
1767
|
+
* @param {Batch} batch
|
|
1768
|
+
*/
|
|
1769
|
+
#merge(batch) {
|
|
1770
|
+
for (const [source, value] of batch.current) {
|
|
1771
|
+
if (!this.previous.has(source) && batch.previous.has(source)) this.previous.set(source, batch.previous.get(source));
|
|
1772
|
+
this.current.set(source, value);
|
|
1773
|
+
}
|
|
1774
|
+
for (const [effect, deferred] of batch.async_deriveds) {
|
|
1775
|
+
const d = this.async_deriveds.get(effect);
|
|
1776
|
+
if (d) deferred.promise.then(d.resolve);
|
|
1777
|
+
}
|
|
1778
|
+
/**
|
|
1779
|
+
* mark all effects that depend on `batch.current`, except the
|
|
1780
|
+
* async effects that we just resolved (TODO unless they depend
|
|
1781
|
+
* on values in this batch that are NOT in the later batch?).
|
|
1782
|
+
* Through this we also will populate the correct #skipped_branches,
|
|
1783
|
+
* oncommit callbacks etc, so we don't need to merge them separately.
|
|
1784
|
+
* @param {Value} value
|
|
1785
|
+
*/
|
|
1786
|
+
const mark = (value) => {
|
|
1787
|
+
var reactions = value.reactions;
|
|
1788
|
+
if (reactions === null) return;
|
|
1789
|
+
for (const reaction of reactions) {
|
|
1790
|
+
var flags = reaction.f;
|
|
1791
|
+
if ((flags & 2) !== 0) mark(reaction);
|
|
1792
|
+
else {
|
|
1793
|
+
var effect = reaction;
|
|
1794
|
+
if (flags & 4194320 && !this.async_deriveds.has(effect)) {
|
|
1795
|
+
this.#maybe_dirty_effects.delete(effect);
|
|
1796
|
+
set_signal_status(effect, DIRTY);
|
|
1797
|
+
this.schedule(effect);
|
|
1798
|
+
}
|
|
1799
|
+
}
|
|
1800
|
+
}
|
|
1801
|
+
};
|
|
1802
|
+
for (const source of this.current.keys()) mark(source);
|
|
1803
|
+
this.oncommit(() => batch.discard());
|
|
1804
|
+
batch.#unlink();
|
|
1805
|
+
current_batch = this;
|
|
1806
|
+
this.#process();
|
|
1807
|
+
}
|
|
1808
|
+
/**
|
|
1809
|
+
* @param {Effect[]} effects
|
|
1810
|
+
*/
|
|
1811
|
+
#defer_effects(effects) {
|
|
1812
|
+
for (var i = 0; i < effects.length; i += 1) defer_effect(effects[i], this.#dirty_effects, this.#maybe_dirty_effects);
|
|
1813
|
+
}
|
|
1814
|
+
/**
|
|
1815
|
+
* Associate a change to a given source with the current
|
|
1816
|
+
* batch, noting its previous and current values
|
|
1817
|
+
* @param {Value} source
|
|
1818
|
+
* @param {any} value
|
|
1819
|
+
* @param {boolean} [is_derived]
|
|
1820
|
+
*/
|
|
1821
|
+
capture(source, value, is_derived = false) {
|
|
1822
|
+
if (source.v !== UNINITIALIZED && !this.previous.has(source)) this.previous.set(source, source.v);
|
|
1823
|
+
if ((source.f & 8388608) === 0) {
|
|
1824
|
+
this.current.set(source, [value, is_derived]);
|
|
1825
|
+
batch_values?.set(source, value);
|
|
1826
|
+
}
|
|
1827
|
+
if (!this.is_fork) source.v = value;
|
|
1828
|
+
}
|
|
1829
|
+
activate() {
|
|
1830
|
+
current_batch = this;
|
|
1831
|
+
}
|
|
1832
|
+
deactivate() {
|
|
1833
|
+
current_batch = null;
|
|
1834
|
+
batch_values = null;
|
|
1835
|
+
}
|
|
1836
|
+
flush() {
|
|
1837
|
+
try {
|
|
1838
|
+
source_stacks.clear();
|
|
1839
|
+
is_processing = true;
|
|
1840
|
+
current_batch = this;
|
|
1841
|
+
this.#process();
|
|
1842
|
+
} finally {
|
|
1843
|
+
flush_count = 0;
|
|
1844
|
+
last_scheduled_effect = null;
|
|
1845
|
+
collected_effects = null;
|
|
1846
|
+
legacy_updates = null;
|
|
1847
|
+
is_processing = false;
|
|
1848
|
+
current_batch = null;
|
|
1849
|
+
batch_values = null;
|
|
1850
|
+
old_values.clear();
|
|
1851
|
+
for (const source of source_stacks) source.updated = null;
|
|
1852
|
+
}
|
|
1853
|
+
}
|
|
1854
|
+
discard() {
|
|
1855
|
+
for (const fn of this.#discard_callbacks) fn(this);
|
|
1856
|
+
this.#discard_callbacks.clear();
|
|
1857
|
+
this.#fork_commit_callbacks.clear();
|
|
1858
|
+
this.#unlink();
|
|
1859
|
+
}
|
|
1860
|
+
/**
|
|
1861
|
+
* @param {Effect} effect
|
|
1862
|
+
*/
|
|
1863
|
+
register_created_effect(effect) {
|
|
1864
|
+
this.#new_effects.push(effect);
|
|
1865
|
+
}
|
|
1866
|
+
#commit() {
|
|
1867
|
+
this.#unlink();
|
|
1868
|
+
for (let batch = first_batch; batch !== null; batch = batch.#next) {
|
|
1869
|
+
var is_earlier = batch.id < this.id;
|
|
1870
|
+
/** @type {Source[]} */
|
|
1871
|
+
var sources = [];
|
|
1872
|
+
for (const [source, [value, is_derived]] of this.current) {
|
|
1873
|
+
if (batch.current.has(source)) {
|
|
1874
|
+
var batch_value = batch.current.get(source)[0];
|
|
1875
|
+
if (is_earlier && value !== batch_value) batch.current.set(source, [value, is_derived]);
|
|
1876
|
+
else continue;
|
|
1877
|
+
}
|
|
1878
|
+
sources.push(source);
|
|
1879
|
+
}
|
|
1880
|
+
if (is_earlier) for (const [effect, deferred] of this.async_deriveds) {
|
|
1881
|
+
const d = batch.async_deriveds.get(effect);
|
|
1882
|
+
if (d) deferred.promise.then(d.resolve);
|
|
1883
|
+
}
|
|
1884
|
+
if (!batch.#started) continue;
|
|
1885
|
+
var others = [...batch.current.keys()].filter((s) => !this.current.has(s));
|
|
1886
|
+
if (others.length === 0) {
|
|
1887
|
+
if (is_earlier) batch.discard();
|
|
1888
|
+
} else if (sources.length > 0) {
|
|
1889
|
+
if (!batch.#decrement_queued) invariant(batch.#roots.length === 0, "Batch has scheduled roots");
|
|
1890
|
+
if (is_earlier) for (const unskipped of this.#unskipped_branches) batch.unskip_effect(unskipped, (e) => {
|
|
1891
|
+
if ((e.f & 4194320) !== 0) batch.schedule(e);
|
|
1892
|
+
else batch.#defer_effects([e]);
|
|
1893
|
+
});
|
|
1894
|
+
batch.activate();
|
|
1895
|
+
/** @type {Set<Value>} */
|
|
1896
|
+
var marked = /* @__PURE__ */ new Set();
|
|
1897
|
+
/** @type {Map<Reaction, boolean>} */
|
|
1898
|
+
var checked = /* @__PURE__ */ new Map();
|
|
1899
|
+
for (var source of sources) mark_effects(source, others, marked, checked);
|
|
1900
|
+
checked = /* @__PURE__ */ new Map();
|
|
1901
|
+
var current_unequal = [...batch.current.keys()].filter((c) => this.current.has(c) ? this.current.get(c)[0] !== c.v : true);
|
|
1902
|
+
if (current_unequal.length > 0) {
|
|
1903
|
+
for (const effect of this.#new_effects) if ((effect.f & 155648) === 0 && depends_on(effect, current_unequal, checked)) if ((effect.f & 4194320) !== 0) {
|
|
1904
|
+
set_signal_status(effect, DIRTY);
|
|
1905
|
+
batch.schedule(effect);
|
|
1906
|
+
} else batch.#dirty_effects.add(effect);
|
|
1907
|
+
}
|
|
1908
|
+
if (batch.#roots.length > 0 && !batch.#decrement_queued) {
|
|
1909
|
+
batch.apply();
|
|
1910
|
+
for (var root of batch.#roots) batch.#traverse(root, [], []);
|
|
1911
|
+
batch.#roots = [];
|
|
1912
|
+
}
|
|
1913
|
+
batch.deactivate();
|
|
1914
|
+
}
|
|
1915
|
+
}
|
|
1916
|
+
}
|
|
1917
|
+
/**
|
|
1918
|
+
* @param {boolean} blocking
|
|
1919
|
+
* @param {Effect} effect
|
|
1920
|
+
*/
|
|
1921
|
+
increment(blocking, effect) {
|
|
1922
|
+
this.#pending += 1;
|
|
1923
|
+
if (blocking) {
|
|
1924
|
+
let blocking_pending_count = this.#blocking_pending.get(effect) ?? 0;
|
|
1925
|
+
this.#blocking_pending.set(effect, blocking_pending_count + 1);
|
|
1926
|
+
}
|
|
1927
|
+
}
|
|
1928
|
+
/**
|
|
1929
|
+
* @param {boolean} blocking
|
|
1930
|
+
* @param {Effect} effect
|
|
1931
|
+
*/
|
|
1932
|
+
decrement(blocking, effect) {
|
|
1933
|
+
this.#pending -= 1;
|
|
1934
|
+
if (blocking) {
|
|
1935
|
+
let blocking_pending_count = this.#blocking_pending.get(effect) ?? 0;
|
|
1936
|
+
if (blocking_pending_count === 1) this.#blocking_pending.delete(effect);
|
|
1937
|
+
else this.#blocking_pending.set(effect, blocking_pending_count - 1);
|
|
1938
|
+
}
|
|
1939
|
+
if (this.#decrement_queued) return;
|
|
1940
|
+
this.#decrement_queued = true;
|
|
1941
|
+
queue_micro_task(() => {
|
|
1942
|
+
this.#decrement_queued = false;
|
|
1943
|
+
if (this.linked) this.flush();
|
|
1944
|
+
});
|
|
1945
|
+
}
|
|
1946
|
+
/**
|
|
1947
|
+
* @param {Set<Effect>} dirty_effects
|
|
1948
|
+
* @param {Set<Effect>} maybe_dirty_effects
|
|
1949
|
+
*/
|
|
1950
|
+
transfer_effects(dirty_effects, maybe_dirty_effects) {
|
|
1951
|
+
for (const e of dirty_effects) this.#dirty_effects.add(e);
|
|
1952
|
+
for (const e of maybe_dirty_effects) this.#maybe_dirty_effects.add(e);
|
|
1953
|
+
dirty_effects.clear();
|
|
1954
|
+
maybe_dirty_effects.clear();
|
|
1955
|
+
}
|
|
1956
|
+
/** @param {(batch: Batch) => void} fn */
|
|
1957
|
+
oncommit(fn) {
|
|
1958
|
+
this.#commit_callbacks.add(fn);
|
|
1959
|
+
}
|
|
1960
|
+
/** @param {(batch: Batch) => void} fn */
|
|
1961
|
+
ondiscard(fn) {
|
|
1962
|
+
this.#discard_callbacks.add(fn);
|
|
1963
|
+
}
|
|
1964
|
+
/** @param {(batch: Batch) => void} fn */
|
|
1965
|
+
on_fork_commit(fn) {
|
|
1966
|
+
this.#fork_commit_callbacks.add(fn);
|
|
1967
|
+
}
|
|
1968
|
+
run_fork_commit_callbacks() {
|
|
1969
|
+
for (const fn of this.#fork_commit_callbacks) fn(this);
|
|
1970
|
+
this.#fork_commit_callbacks.clear();
|
|
1971
|
+
}
|
|
1972
|
+
settled() {
|
|
1973
|
+
return (this.#deferred ??= deferred()).promise;
|
|
1974
|
+
}
|
|
1975
|
+
static ensure() {
|
|
1976
|
+
if (current_batch === null) {
|
|
1977
|
+
const batch = current_batch = new Batch();
|
|
1978
|
+
batch.#link();
|
|
1979
|
+
if (!is_processing && !is_flushing_sync) queue_micro_task(() => {
|
|
1980
|
+
if (!batch.#started) batch.flush();
|
|
1981
|
+
});
|
|
1982
|
+
}
|
|
1983
|
+
return current_batch;
|
|
1984
|
+
}
|
|
1985
|
+
apply() {
|
|
1986
|
+
if (!async_mode_flag || !this.is_fork && this.#prev === null && this.#next === null) {
|
|
1987
|
+
batch_values = null;
|
|
1988
|
+
return;
|
|
1989
|
+
}
|
|
1990
|
+
batch_values = /* @__PURE__ */ new Map();
|
|
1991
|
+
for (const [source, [value]] of this.current) batch_values.set(source, value);
|
|
1992
|
+
for (let batch = first_batch; batch !== null; batch = batch.#next) {
|
|
1993
|
+
if (batch === this || batch.is_fork) continue;
|
|
1994
|
+
var intersects = false;
|
|
1995
|
+
if (batch.id < this.id) for (const [source, [, is_derived]] of batch.current) {
|
|
1996
|
+
if (is_derived) continue;
|
|
1997
|
+
if (this.current.has(source)) {
|
|
1998
|
+
intersects = true;
|
|
1999
|
+
break;
|
|
2000
|
+
}
|
|
2001
|
+
}
|
|
2002
|
+
if (!intersects) {
|
|
2003
|
+
for (const [source, previous] of batch.previous) if (!batch_values.has(source)) batch_values.set(source, previous);
|
|
2004
|
+
}
|
|
2005
|
+
}
|
|
2006
|
+
}
|
|
2007
|
+
/**
|
|
2008
|
+
*
|
|
2009
|
+
* @param {Effect} effect
|
|
2010
|
+
*/
|
|
2011
|
+
schedule(effect) {
|
|
2012
|
+
last_scheduled_effect = effect;
|
|
2013
|
+
if (effect.b?.is_pending && (effect.f & 16777228) !== 0 && (effect.f & 32768) === 0) {
|
|
2014
|
+
effect.b.defer_effect(effect);
|
|
2015
|
+
return;
|
|
2016
|
+
}
|
|
2017
|
+
var e = effect;
|
|
2018
|
+
while (e.parent !== null) {
|
|
2019
|
+
e = e.parent;
|
|
2020
|
+
var flags = e.f;
|
|
2021
|
+
if (collected_effects !== null && e === active_effect) {
|
|
2022
|
+
if (async_mode_flag) return;
|
|
2023
|
+
if ((active_reaction === null || (active_reaction.f & 2) === 0) && !legacy_is_updating_store) return;
|
|
2024
|
+
}
|
|
2025
|
+
if ((flags & 96) !== 0) {
|
|
2026
|
+
if ((flags & 1024) === 0) return;
|
|
2027
|
+
e.f ^= CLEAN;
|
|
2028
|
+
}
|
|
2029
|
+
}
|
|
2030
|
+
this.#roots.push(e);
|
|
2031
|
+
}
|
|
2032
|
+
#link() {
|
|
2033
|
+
if (last_batch === null) first_batch = last_batch = this;
|
|
2034
|
+
else {
|
|
2035
|
+
last_batch.#next = this;
|
|
2036
|
+
this.#prev = last_batch;
|
|
2037
|
+
}
|
|
2038
|
+
last_batch = this;
|
|
2039
|
+
}
|
|
2040
|
+
#unlink() {
|
|
2041
|
+
var prev = this.#prev;
|
|
2042
|
+
var next = this.#next;
|
|
2043
|
+
if (prev === null) first_batch = next;
|
|
2044
|
+
else prev.#next = next;
|
|
2045
|
+
if (next === null) last_batch = prev;
|
|
2046
|
+
else next.#prev = prev;
|
|
2047
|
+
this.linked = false;
|
|
2048
|
+
}
|
|
2049
|
+
};
|
|
2050
|
+
/**
|
|
2051
|
+
* Synchronously flush any pending updates.
|
|
2052
|
+
* Returns void if no callback is provided, otherwise returns the result of calling the callback.
|
|
2053
|
+
* @template [T=void]
|
|
2054
|
+
* @param {(() => T) | undefined} [fn]
|
|
2055
|
+
* @returns {T}
|
|
2056
|
+
*/
|
|
2057
|
+
function flushSync(fn) {
|
|
2058
|
+
var was_flushing_sync = is_flushing_sync;
|
|
2059
|
+
is_flushing_sync = true;
|
|
2060
|
+
try {
|
|
2061
|
+
var result;
|
|
2062
|
+
if (fn) {
|
|
2063
|
+
if (current_batch !== null && !current_batch.is_fork) current_batch.flush();
|
|
2064
|
+
result = fn();
|
|
2065
|
+
}
|
|
2066
|
+
while (true) {
|
|
2067
|
+
flush_tasks();
|
|
2068
|
+
if (current_batch === null) return result;
|
|
2069
|
+
current_batch.flush();
|
|
2070
|
+
}
|
|
2071
|
+
} finally {
|
|
2072
|
+
is_flushing_sync = was_flushing_sync;
|
|
2073
|
+
}
|
|
2074
|
+
}
|
|
2075
|
+
function infinite_loop_guard() {
|
|
2076
|
+
var updates = /* @__PURE__ */ new Map();
|
|
2077
|
+
for (const source of current_batch.current.keys()) for (const [stack, update] of source.updated ?? []) {
|
|
2078
|
+
var entry = updates.get(stack);
|
|
2079
|
+
if (!entry) {
|
|
2080
|
+
entry = {
|
|
2081
|
+
error: update.error,
|
|
2082
|
+
count: 0
|
|
2083
|
+
};
|
|
2084
|
+
updates.set(stack, entry);
|
|
2085
|
+
}
|
|
2086
|
+
entry.count += update.count;
|
|
2087
|
+
}
|
|
2088
|
+
for (const update of updates.values()) if (update.error) console.error(update.error);
|
|
2089
|
+
try {
|
|
2090
|
+
effect_update_depth_exceeded();
|
|
2091
|
+
} catch (error) {
|
|
2092
|
+
define_property(error, "stack", { value: "" });
|
|
2093
|
+
invoke_error_boundary(error, last_scheduled_effect);
|
|
2094
|
+
}
|
|
2095
|
+
}
|
|
2096
|
+
/** @type {Set<Effect> | null} */
|
|
2097
|
+
var eager_block_effects = null;
|
|
2098
|
+
/**
|
|
2099
|
+
* @param {Array<Effect>} effects
|
|
2100
|
+
* @returns {void}
|
|
2101
|
+
*/
|
|
2102
|
+
function flush_queued_effects(effects) {
|
|
2103
|
+
var length = effects.length;
|
|
2104
|
+
if (length === 0) return;
|
|
2105
|
+
var i = 0;
|
|
2106
|
+
while (i < length) {
|
|
2107
|
+
var effect = effects[i++];
|
|
2108
|
+
if ((effect.f & 24576) === 0 && is_dirty(effect)) {
|
|
2109
|
+
eager_block_effects = /* @__PURE__ */ new Set();
|
|
2110
|
+
update_effect(effect);
|
|
2111
|
+
if (effect.deps === null && effect.first === null && effect.nodes === null && effect.teardown === null && effect.ac === null) unlink_effect(effect);
|
|
2112
|
+
if (eager_block_effects?.size > 0) {
|
|
2113
|
+
old_values.clear();
|
|
2114
|
+
for (const e of eager_block_effects) {
|
|
2115
|
+
if ((e.f & 24576) !== 0) continue;
|
|
2116
|
+
/** @type {Effect[]} */
|
|
2117
|
+
const ordered_effects = [e];
|
|
2118
|
+
let ancestor = e.parent;
|
|
2119
|
+
while (ancestor !== null) {
|
|
2120
|
+
if (eager_block_effects.has(ancestor)) {
|
|
2121
|
+
eager_block_effects.delete(ancestor);
|
|
2122
|
+
ordered_effects.push(ancestor);
|
|
2123
|
+
}
|
|
2124
|
+
ancestor = ancestor.parent;
|
|
2125
|
+
}
|
|
2126
|
+
for (let j = ordered_effects.length - 1; j >= 0; j--) {
|
|
2127
|
+
const e = ordered_effects[j];
|
|
2128
|
+
if ((e.f & 24576) !== 0) continue;
|
|
2129
|
+
update_effect(e);
|
|
2130
|
+
}
|
|
2131
|
+
}
|
|
2132
|
+
eager_block_effects.clear();
|
|
2133
|
+
}
|
|
2134
|
+
}
|
|
2135
|
+
}
|
|
2136
|
+
eager_block_effects = null;
|
|
2137
|
+
}
|
|
2138
|
+
/**
|
|
2139
|
+
* This is similar to `mark_reactions`, but it only marks async/block effects
|
|
2140
|
+
* depending on `value` and at least one of the other `sources`, so that
|
|
2141
|
+
* these effects can re-run after another batch has been committed
|
|
2142
|
+
* @param {Value} value
|
|
2143
|
+
* @param {Source[]} sources
|
|
2144
|
+
* @param {Set<Value>} marked
|
|
2145
|
+
* @param {Map<Reaction, boolean>} checked
|
|
2146
|
+
*/
|
|
2147
|
+
function mark_effects(value, sources, marked, checked) {
|
|
2148
|
+
if (marked.has(value)) return;
|
|
2149
|
+
marked.add(value);
|
|
2150
|
+
if (value.reactions !== null) for (const reaction of value.reactions) {
|
|
2151
|
+
const flags = reaction.f;
|
|
2152
|
+
if ((flags & 2) !== 0) mark_effects(reaction, sources, marked, checked);
|
|
2153
|
+
else if ((flags & 4194320) !== 0 && (flags & 2048) === 0 && depends_on(reaction, sources, checked)) {
|
|
2154
|
+
set_signal_status(reaction, DIRTY);
|
|
2155
|
+
schedule_effect(reaction);
|
|
2156
|
+
}
|
|
2157
|
+
}
|
|
2158
|
+
}
|
|
2159
|
+
/**
|
|
2160
|
+
* @param {Reaction} reaction
|
|
2161
|
+
* @param {Source[]} sources
|
|
2162
|
+
* @param {Map<Reaction, boolean>} checked
|
|
2163
|
+
*/
|
|
2164
|
+
function depends_on(reaction, sources, checked) {
|
|
2165
|
+
const depends = checked.get(reaction);
|
|
2166
|
+
if (depends !== void 0) return depends;
|
|
2167
|
+
if (reaction.deps !== null) for (const dep of reaction.deps) {
|
|
2168
|
+
if (includes.call(sources, dep)) return true;
|
|
2169
|
+
if ((dep.f & 2) !== 0 && depends_on(dep, sources, checked)) {
|
|
2170
|
+
checked.set(dep, true);
|
|
2171
|
+
return true;
|
|
2172
|
+
}
|
|
2173
|
+
}
|
|
2174
|
+
checked.set(reaction, false);
|
|
2175
|
+
return false;
|
|
2176
|
+
}
|
|
2177
|
+
/**
|
|
2178
|
+
* @param {Effect} effect
|
|
2179
|
+
* @returns {void}
|
|
2180
|
+
*/
|
|
2181
|
+
function schedule_effect(effect) {
|
|
2182
|
+
/** @type {Batch} */ current_batch.schedule(effect);
|
|
2183
|
+
}
|
|
2184
|
+
/** @type {Source<number>[]} */
|
|
2185
|
+
var eager_versions = [];
|
|
2186
|
+
function eager_flush() {
|
|
2187
|
+
flushSync(() => {
|
|
2188
|
+
const eager = eager_versions;
|
|
2189
|
+
eager_versions = [];
|
|
2190
|
+
for (const version of eager) update(version);
|
|
2191
|
+
});
|
|
2192
|
+
}
|
|
2193
|
+
/** @type {Map<Reaction, Source<number>>} */
|
|
2194
|
+
var version_map = /* @__PURE__ */ new Map();
|
|
2195
|
+
/**
|
|
2196
|
+
* Implementation of `$state.eager(fn())`
|
|
2197
|
+
* @template T
|
|
2198
|
+
* @param {() => T} fn
|
|
2199
|
+
* @returns {T}
|
|
2200
|
+
*/
|
|
2201
|
+
function eager(fn) {
|
|
2202
|
+
var initial = true;
|
|
2203
|
+
var value = void 0;
|
|
2204
|
+
if (active_reaction === null) return fn();
|
|
2205
|
+
let parent = active_reaction;
|
|
2206
|
+
let version = version_map.get(parent) ?? source(0);
|
|
2207
|
+
version_map.set(parent, version);
|
|
2208
|
+
teardown(() => {
|
|
2209
|
+
if (parent.f & 33554432) version_map.delete(parent);
|
|
2210
|
+
});
|
|
2211
|
+
get(version);
|
|
2212
|
+
eager_effect(() => {
|
|
2213
|
+
if (initial) {
|
|
2214
|
+
var previous_batch_values = batch_values;
|
|
2215
|
+
try {
|
|
2216
|
+
batch_values = null;
|
|
2217
|
+
value = fn();
|
|
2218
|
+
} finally {
|
|
2219
|
+
batch_values = previous_batch_values;
|
|
2220
|
+
}
|
|
2221
|
+
return;
|
|
2222
|
+
}
|
|
2223
|
+
if (eager_versions.length === 0) queue_micro_task(eager_flush);
|
|
2224
|
+
eager_versions.push(version);
|
|
2225
|
+
});
|
|
2226
|
+
initial = false;
|
|
2227
|
+
return value;
|
|
2228
|
+
}
|
|
2229
|
+
/**
|
|
2230
|
+
* Mark all the effects inside a skipped branch CLEAN, so that
|
|
2231
|
+
* they can be correctly rescheduled later. Tracks dirty and maybe_dirty
|
|
2232
|
+
* effects so they can be rescheduled if the branch survives.
|
|
2233
|
+
* @param {Effect} effect
|
|
2234
|
+
* @param {{ d: Effect[], m: Effect[] }} tracked
|
|
2235
|
+
*/
|
|
2236
|
+
function reset_branch(effect, tracked) {
|
|
2237
|
+
if ((effect.f & 32) !== 0 && (effect.f & 1024) !== 0) return;
|
|
2238
|
+
if ((effect.f & 2048) !== 0) tracked.d.push(effect);
|
|
2239
|
+
else if ((effect.f & 4096) !== 0) tracked.m.push(effect);
|
|
2240
|
+
set_signal_status(effect, CLEAN);
|
|
2241
|
+
var e = effect.first;
|
|
2242
|
+
while (e !== null) {
|
|
2243
|
+
reset_branch(e, tracked);
|
|
2244
|
+
e = e.next;
|
|
2245
|
+
}
|
|
2246
|
+
}
|
|
2247
|
+
/**
|
|
2248
|
+
* Mark an entire effect tree clean following an error
|
|
2249
|
+
* @param {Effect} effect
|
|
2250
|
+
*/
|
|
2251
|
+
function reset_all(effect) {
|
|
2252
|
+
set_signal_status(effect, CLEAN);
|
|
2253
|
+
var e = effect.first;
|
|
2254
|
+
while (e !== null) {
|
|
2255
|
+
reset_all(e);
|
|
2256
|
+
e = e.next;
|
|
2257
|
+
}
|
|
2258
|
+
}
|
|
2259
|
+
//#endregion
|
|
2260
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/reactivity/create-subscriber.js
|
|
2261
|
+
/**
|
|
2262
|
+
* Returns a `subscribe` function that integrates external event-based systems with Svelte's reactivity.
|
|
2263
|
+
* It's particularly useful for integrating with web APIs like `MediaQuery`, `IntersectionObserver`, or `WebSocket`.
|
|
2264
|
+
*
|
|
2265
|
+
* If `subscribe` is called inside an effect (including indirectly, for example inside a getter),
|
|
2266
|
+
* the `start` callback will be called with an `update` function. Whenever `update` is called, the effect re-runs.
|
|
2267
|
+
*
|
|
2268
|
+
* If `start` returns a cleanup function, it will be called when the effect is destroyed.
|
|
2269
|
+
*
|
|
2270
|
+
* If `subscribe` is called in multiple effects, `start` will only be called once as long as the effects
|
|
2271
|
+
* are active, and the returned teardown function will only be called when all effects are destroyed.
|
|
2272
|
+
*
|
|
2273
|
+
* It's best understood with an example. Here's an implementation of [`MediaQuery`](https://svelte.dev/docs/svelte/svelte-reactivity#MediaQuery):
|
|
2274
|
+
*
|
|
2275
|
+
* ```js
|
|
2276
|
+
* import { createSubscriber } from 'svelte/reactivity';
|
|
2277
|
+
* import { on } from 'svelte/events';
|
|
2278
|
+
*
|
|
2279
|
+
* export class MediaQuery {
|
|
2280
|
+
* #query;
|
|
2281
|
+
* #subscribe;
|
|
2282
|
+
*
|
|
2283
|
+
* constructor(query) {
|
|
2284
|
+
* this.#query = window.matchMedia(`(${query})`);
|
|
2285
|
+
*
|
|
2286
|
+
* this.#subscribe = createSubscriber((update) => {
|
|
2287
|
+
* // when the `change` event occurs, re-run any effects that read `this.current`
|
|
2288
|
+
* const off = on(this.#query, 'change', update);
|
|
2289
|
+
*
|
|
2290
|
+
* // stop listening when all the effects are destroyed
|
|
2291
|
+
* return () => off();
|
|
2292
|
+
* });
|
|
2293
|
+
* }
|
|
2294
|
+
*
|
|
2295
|
+
* get current() {
|
|
2296
|
+
* // This makes the getter reactive, if read in an effect
|
|
2297
|
+
* this.#subscribe();
|
|
2298
|
+
*
|
|
2299
|
+
* // Return the current state of the query, whether or not we're in an effect
|
|
2300
|
+
* return this.#query.matches;
|
|
2301
|
+
* }
|
|
2302
|
+
* }
|
|
2303
|
+
* ```
|
|
2304
|
+
* @param {(update: () => void) => (() => void) | void} start
|
|
2305
|
+
* @since 5.7.0
|
|
2306
|
+
*/
|
|
2307
|
+
function createSubscriber(start) {
|
|
2308
|
+
let subscribers = 0;
|
|
2309
|
+
let version = source(0);
|
|
2310
|
+
/** @type {(() => void) | void} */
|
|
2311
|
+
let stop;
|
|
2312
|
+
tag(version, "createSubscriber version");
|
|
2313
|
+
return () => {
|
|
2314
|
+
if (effect_tracking()) {
|
|
2315
|
+
get(version);
|
|
2316
|
+
render_effect(() => {
|
|
2317
|
+
if (subscribers === 0) stop = untrack(() => start(() => increment(version)));
|
|
2318
|
+
subscribers += 1;
|
|
2319
|
+
return () => {
|
|
2320
|
+
queue_micro_task(() => {
|
|
2321
|
+
subscribers -= 1;
|
|
2322
|
+
if (subscribers === 0) {
|
|
2323
|
+
stop?.();
|
|
2324
|
+
stop = void 0;
|
|
2325
|
+
increment(version);
|
|
2326
|
+
}
|
|
2327
|
+
});
|
|
2328
|
+
};
|
|
2329
|
+
});
|
|
2330
|
+
}
|
|
2331
|
+
};
|
|
2332
|
+
}
|
|
2333
|
+
//#endregion
|
|
2334
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/blocks/boundary.js
|
|
2335
|
+
/** @import { Effect, Source, TemplateNode, } from '#client' */
|
|
2336
|
+
/**
|
|
2337
|
+
* @typedef {{
|
|
2338
|
+
* onerror?: ((error: unknown, reset: () => void) => void) | null;
|
|
2339
|
+
* failed?: ((anchor: Node, error: () => unknown, reset: () => () => void) => void) | null;
|
|
2340
|
+
* pending?: ((anchor: Node) => void) | null;
|
|
2341
|
+
* }} BoundaryProps
|
|
2342
|
+
*/
|
|
2343
|
+
var flags = EFFECT_TRANSPARENT | EFFECT_PRESERVED;
|
|
2344
|
+
/**
|
|
2345
|
+
* @param {TemplateNode} node
|
|
2346
|
+
* @param {BoundaryProps} props
|
|
2347
|
+
* @param {((anchor: Node) => void)} children
|
|
2348
|
+
* @param {((error: unknown) => unknown) | undefined} [transform_error]
|
|
2349
|
+
* @returns {void}
|
|
2350
|
+
*/
|
|
2351
|
+
function boundary(node, props, children, transform_error) {
|
|
2352
|
+
new Boundary(node, props, children, transform_error);
|
|
2353
|
+
}
|
|
2354
|
+
var Boundary = class {
|
|
2355
|
+
/** @type {Boundary | null} */
|
|
2356
|
+
parent;
|
|
2357
|
+
is_pending = false;
|
|
2358
|
+
/**
|
|
2359
|
+
* API-level transformError transform function. Transforms errors before they reach the `failed` snippet.
|
|
2360
|
+
* Inherited from parent boundary, or defaults to identity.
|
|
2361
|
+
* @type {(error: unknown) => unknown}
|
|
2362
|
+
*/
|
|
2363
|
+
transform_error;
|
|
2364
|
+
/** @type {TemplateNode} */
|
|
2365
|
+
#anchor;
|
|
2366
|
+
/** @type {TemplateNode | null} */
|
|
2367
|
+
#hydrate_open = hydrating ? hydrate_node : null;
|
|
2368
|
+
/** @type {BoundaryProps} */
|
|
2369
|
+
#props;
|
|
2370
|
+
/** @type {((anchor: Node) => void)} */
|
|
2371
|
+
#children;
|
|
2372
|
+
/** @type {Effect} */
|
|
2373
|
+
#effect;
|
|
2374
|
+
/** @type {Effect | null} */
|
|
2375
|
+
#main_effect = null;
|
|
2376
|
+
/** @type {Effect | null} */
|
|
2377
|
+
#pending_effect = null;
|
|
2378
|
+
/** @type {Effect | null} */
|
|
2379
|
+
#failed_effect = null;
|
|
2380
|
+
/** @type {DocumentFragment | null} */
|
|
2381
|
+
#offscreen_fragment = null;
|
|
2382
|
+
#local_pending_count = 0;
|
|
2383
|
+
#pending_count = 0;
|
|
2384
|
+
#pending_count_update_queued = false;
|
|
2385
|
+
/** @type {Set<Effect>} */
|
|
2386
|
+
#dirty_effects = /* @__PURE__ */ new Set();
|
|
2387
|
+
/** @type {Set<Effect>} */
|
|
2388
|
+
#maybe_dirty_effects = /* @__PURE__ */ new Set();
|
|
2389
|
+
/**
|
|
2390
|
+
* A source containing the number of pending async deriveds/expressions.
|
|
2391
|
+
* Only created if `$effect.pending()` is used inside the boundary,
|
|
2392
|
+
* otherwise updating the source results in needless `Batch.ensure()`
|
|
2393
|
+
* calls followed by no-op flushes
|
|
2394
|
+
* @type {Source<number> | null}
|
|
2395
|
+
*/
|
|
2396
|
+
#effect_pending = null;
|
|
2397
|
+
#effect_pending_subscriber = createSubscriber(() => {
|
|
2398
|
+
this.#effect_pending = source(this.#local_pending_count);
|
|
2399
|
+
tag(this.#effect_pending, "$effect.pending()");
|
|
2400
|
+
return () => {
|
|
2401
|
+
this.#effect_pending = null;
|
|
2402
|
+
};
|
|
2403
|
+
});
|
|
2404
|
+
/**
|
|
2405
|
+
* @param {TemplateNode} node
|
|
2406
|
+
* @param {BoundaryProps} props
|
|
2407
|
+
* @param {((anchor: Node) => void)} children
|
|
2408
|
+
* @param {((error: unknown) => unknown) | undefined} [transform_error]
|
|
2409
|
+
*/
|
|
2410
|
+
constructor(node, props, children, transform_error) {
|
|
2411
|
+
this.#anchor = node;
|
|
2412
|
+
this.#props = props;
|
|
2413
|
+
this.#children = (anchor) => {
|
|
2414
|
+
var effect = active_effect;
|
|
2415
|
+
effect.b = this;
|
|
2416
|
+
effect.f |= 128;
|
|
2417
|
+
children(anchor);
|
|
2418
|
+
};
|
|
2419
|
+
this.parent = active_effect.b;
|
|
2420
|
+
this.transform_error = transform_error ?? this.parent?.transform_error ?? ((e) => e);
|
|
2421
|
+
this.#effect = block(() => {
|
|
2422
|
+
if (hydrating) {
|
|
2423
|
+
const comment = this.#hydrate_open;
|
|
2424
|
+
hydrate_next();
|
|
2425
|
+
const server_rendered_pending = comment.data === "[!";
|
|
2426
|
+
if (comment.data.startsWith("[?")) {
|
|
2427
|
+
const serialized_error = JSON.parse(comment.data.slice(2));
|
|
2428
|
+
this.#hydrate_failed_content(serialized_error);
|
|
2429
|
+
} else if (server_rendered_pending) this.#hydrate_pending_content();
|
|
2430
|
+
else this.#hydrate_resolved_content();
|
|
2431
|
+
} else this.#render();
|
|
2432
|
+
}, flags);
|
|
2433
|
+
if (hydrating) this.#anchor = hydrate_node;
|
|
2434
|
+
}
|
|
2435
|
+
#hydrate_resolved_content() {
|
|
2436
|
+
try {
|
|
2437
|
+
this.#main_effect = branch(() => this.#children(this.#anchor));
|
|
2438
|
+
} catch (error) {
|
|
2439
|
+
this.error(error);
|
|
2440
|
+
}
|
|
2441
|
+
}
|
|
2442
|
+
/**
|
|
2443
|
+
* @param {unknown} error The deserialized error from the server's hydration comment
|
|
2444
|
+
*/
|
|
2445
|
+
#hydrate_failed_content(error) {
|
|
2446
|
+
const failed = this.#props.failed;
|
|
2447
|
+
if (!failed) return;
|
|
2448
|
+
this.#failed_effect = branch(() => {
|
|
2449
|
+
failed(this.#anchor, () => error, () => () => {});
|
|
2450
|
+
});
|
|
2451
|
+
}
|
|
2452
|
+
#hydrate_pending_content() {
|
|
2453
|
+
const pending = this.#props.pending;
|
|
2454
|
+
if (!pending) return;
|
|
2455
|
+
this.is_pending = true;
|
|
2456
|
+
this.#pending_effect = branch(() => pending(this.#anchor));
|
|
2457
|
+
queue_micro_task(() => {
|
|
2458
|
+
var fragment = this.#offscreen_fragment = document.createDocumentFragment();
|
|
2459
|
+
var anchor = create_text();
|
|
2460
|
+
fragment.append(anchor);
|
|
2461
|
+
this.#main_effect = this.#run(() => {
|
|
2462
|
+
return branch(() => this.#children(anchor));
|
|
2463
|
+
});
|
|
2464
|
+
if (this.#pending_count === 0) {
|
|
2465
|
+
this.#anchor.before(fragment);
|
|
2466
|
+
this.#offscreen_fragment = null;
|
|
2467
|
+
pause_effect(this.#pending_effect, () => {
|
|
2468
|
+
this.#pending_effect = null;
|
|
2469
|
+
});
|
|
2470
|
+
this.#resolve(current_batch);
|
|
2471
|
+
}
|
|
2472
|
+
});
|
|
2473
|
+
}
|
|
2474
|
+
#render() {
|
|
2475
|
+
try {
|
|
2476
|
+
this.is_pending = this.has_pending_snippet();
|
|
2477
|
+
this.#pending_count = 0;
|
|
2478
|
+
this.#local_pending_count = 0;
|
|
2479
|
+
this.#main_effect = branch(() => {
|
|
2480
|
+
this.#children(this.#anchor);
|
|
2481
|
+
});
|
|
2482
|
+
if (this.#pending_count > 0) {
|
|
2483
|
+
var fragment = this.#offscreen_fragment = document.createDocumentFragment();
|
|
2484
|
+
move_effect(this.#main_effect, fragment);
|
|
2485
|
+
const pending = this.#props.pending;
|
|
2486
|
+
this.#pending_effect = branch(() => pending(this.#anchor));
|
|
2487
|
+
} else this.#resolve(current_batch);
|
|
2488
|
+
} catch (error) {
|
|
2489
|
+
this.error(error);
|
|
2490
|
+
}
|
|
2491
|
+
}
|
|
2492
|
+
/**
|
|
2493
|
+
* @param {Batch} batch
|
|
2494
|
+
*/
|
|
2495
|
+
#resolve(batch) {
|
|
2496
|
+
this.is_pending = false;
|
|
2497
|
+
batch.transfer_effects(this.#dirty_effects, this.#maybe_dirty_effects);
|
|
2498
|
+
}
|
|
2499
|
+
/**
|
|
2500
|
+
* Defer an effect inside a pending boundary until the boundary resolves
|
|
2501
|
+
* @param {Effect} effect
|
|
2502
|
+
*/
|
|
2503
|
+
defer_effect(effect) {
|
|
2504
|
+
defer_effect(effect, this.#dirty_effects, this.#maybe_dirty_effects);
|
|
2505
|
+
}
|
|
2506
|
+
/**
|
|
2507
|
+
* Returns `false` if the effect exists inside a boundary whose pending snippet is shown
|
|
2508
|
+
* @returns {boolean}
|
|
2509
|
+
*/
|
|
2510
|
+
is_rendered() {
|
|
2511
|
+
return !this.is_pending && (!this.parent || this.parent.is_rendered());
|
|
2512
|
+
}
|
|
2513
|
+
has_pending_snippet() {
|
|
2514
|
+
return !!this.#props.pending;
|
|
2515
|
+
}
|
|
2516
|
+
/**
|
|
2517
|
+
* @template T
|
|
2518
|
+
* @param {() => T} fn
|
|
2519
|
+
*/
|
|
2520
|
+
#run(fn) {
|
|
2521
|
+
var previous_effect = active_effect;
|
|
2522
|
+
var previous_reaction = active_reaction;
|
|
2523
|
+
var previous_ctx = component_context;
|
|
2524
|
+
set_active_effect(this.#effect);
|
|
2525
|
+
set_active_reaction(this.#effect);
|
|
2526
|
+
set_component_context(this.#effect.ctx);
|
|
2527
|
+
try {
|
|
2528
|
+
Batch.ensure();
|
|
2529
|
+
return fn();
|
|
2530
|
+
} catch (e) {
|
|
2531
|
+
handle_error(e);
|
|
2532
|
+
return null;
|
|
2533
|
+
} finally {
|
|
2534
|
+
set_active_effect(previous_effect);
|
|
2535
|
+
set_active_reaction(previous_reaction);
|
|
2536
|
+
set_component_context(previous_ctx);
|
|
2537
|
+
}
|
|
2538
|
+
}
|
|
2539
|
+
/**
|
|
2540
|
+
* Updates the pending count associated with the currently visible pending snippet,
|
|
2541
|
+
* if any, such that we can replace the snippet with content once work is done
|
|
2542
|
+
* @param {1 | -1} d
|
|
2543
|
+
* @param {Batch} batch
|
|
2544
|
+
*/
|
|
2545
|
+
#update_pending_count(d, batch) {
|
|
2546
|
+
if (!this.has_pending_snippet()) {
|
|
2547
|
+
if (this.parent) this.parent.#update_pending_count(d, batch);
|
|
2548
|
+
return;
|
|
2549
|
+
}
|
|
2550
|
+
this.#pending_count += d;
|
|
2551
|
+
if (this.#pending_count === 0) {
|
|
2552
|
+
this.#resolve(batch);
|
|
2553
|
+
if (this.#pending_effect) pause_effect(this.#pending_effect, () => {
|
|
2554
|
+
this.#pending_effect = null;
|
|
2555
|
+
});
|
|
2556
|
+
if (this.#offscreen_fragment) {
|
|
2557
|
+
this.#anchor.before(this.#offscreen_fragment);
|
|
2558
|
+
this.#offscreen_fragment = null;
|
|
2559
|
+
}
|
|
2560
|
+
}
|
|
2561
|
+
}
|
|
2562
|
+
/**
|
|
2563
|
+
* Update the source that powers `$effect.pending()` inside this boundary,
|
|
2564
|
+
* and controls when the current `pending` snippet (if any) is removed.
|
|
2565
|
+
* Do not call from inside the class
|
|
2566
|
+
* @param {1 | -1} d
|
|
2567
|
+
* @param {Batch} batch
|
|
2568
|
+
*/
|
|
2569
|
+
update_pending_count(d, batch) {
|
|
2570
|
+
this.#update_pending_count(d, batch);
|
|
2571
|
+
this.#local_pending_count += d;
|
|
2572
|
+
if (!this.#effect_pending || this.#pending_count_update_queued) return;
|
|
2573
|
+
this.#pending_count_update_queued = true;
|
|
2574
|
+
queue_micro_task(() => {
|
|
2575
|
+
this.#pending_count_update_queued = false;
|
|
2576
|
+
if (this.#effect_pending) internal_set(this.#effect_pending, this.#local_pending_count);
|
|
2577
|
+
});
|
|
2578
|
+
}
|
|
2579
|
+
get_effect_pending() {
|
|
2580
|
+
this.#effect_pending_subscriber();
|
|
2581
|
+
return get(this.#effect_pending);
|
|
2582
|
+
}
|
|
2583
|
+
/** @param {unknown} error */
|
|
2584
|
+
error(error) {
|
|
2585
|
+
if (!this.#props.onerror && !this.#props.failed) throw error;
|
|
2586
|
+
if (current_batch?.is_fork) {
|
|
2587
|
+
if (this.#main_effect) current_batch.skip_effect(this.#main_effect);
|
|
2588
|
+
if (this.#pending_effect) current_batch.skip_effect(this.#pending_effect);
|
|
2589
|
+
if (this.#failed_effect) current_batch.skip_effect(this.#failed_effect);
|
|
2590
|
+
current_batch.on_fork_commit(() => {
|
|
2591
|
+
this.#handle_error(error);
|
|
2592
|
+
});
|
|
2593
|
+
} else this.#handle_error(error);
|
|
2594
|
+
}
|
|
2595
|
+
/**
|
|
2596
|
+
* @param {unknown} error
|
|
2597
|
+
*/
|
|
2598
|
+
#handle_error(error) {
|
|
2599
|
+
if (this.#main_effect) {
|
|
2600
|
+
destroy_effect(this.#main_effect);
|
|
2601
|
+
this.#main_effect = null;
|
|
2602
|
+
}
|
|
2603
|
+
if (this.#pending_effect) {
|
|
2604
|
+
destroy_effect(this.#pending_effect);
|
|
2605
|
+
this.#pending_effect = null;
|
|
2606
|
+
}
|
|
2607
|
+
if (this.#failed_effect) {
|
|
2608
|
+
destroy_effect(this.#failed_effect);
|
|
2609
|
+
this.#failed_effect = null;
|
|
2610
|
+
}
|
|
2611
|
+
if (hydrating) {
|
|
2612
|
+
set_hydrate_node(this.#hydrate_open);
|
|
2613
|
+
next();
|
|
2614
|
+
set_hydrate_node(skip_nodes());
|
|
2615
|
+
}
|
|
2616
|
+
var onerror = this.#props.onerror;
|
|
2617
|
+
let failed = this.#props.failed;
|
|
2618
|
+
var did_reset = false;
|
|
2619
|
+
var calling_on_error = false;
|
|
2620
|
+
const reset = () => {
|
|
2621
|
+
if (did_reset) {
|
|
2622
|
+
svelte_boundary_reset_noop();
|
|
2623
|
+
return;
|
|
2624
|
+
}
|
|
2625
|
+
did_reset = true;
|
|
2626
|
+
if (calling_on_error) svelte_boundary_reset_onerror();
|
|
2627
|
+
if (this.#failed_effect !== null) pause_effect(this.#failed_effect, () => {
|
|
2628
|
+
this.#failed_effect = null;
|
|
2629
|
+
});
|
|
2630
|
+
this.#run(() => {
|
|
2631
|
+
this.#render();
|
|
2632
|
+
});
|
|
2633
|
+
};
|
|
2634
|
+
/** @param {unknown} transformed_error */
|
|
2635
|
+
const handle_error_result = (transformed_error) => {
|
|
2636
|
+
try {
|
|
2637
|
+
calling_on_error = true;
|
|
2638
|
+
onerror?.(transformed_error, reset);
|
|
2639
|
+
calling_on_error = false;
|
|
2640
|
+
} catch (error) {
|
|
2641
|
+
invoke_error_boundary(error, this.#effect && this.#effect.parent);
|
|
2642
|
+
}
|
|
2643
|
+
if (failed) this.#failed_effect = this.#run(() => {
|
|
2644
|
+
try {
|
|
2645
|
+
return branch(() => {
|
|
2646
|
+
var effect = active_effect;
|
|
2647
|
+
effect.b = this;
|
|
2648
|
+
effect.f |= 128;
|
|
2649
|
+
failed(this.#anchor, () => transformed_error, () => reset);
|
|
2650
|
+
});
|
|
2651
|
+
} catch (error) {
|
|
2652
|
+
invoke_error_boundary(error, this.#effect.parent);
|
|
2653
|
+
return null;
|
|
2654
|
+
}
|
|
2655
|
+
});
|
|
2656
|
+
};
|
|
2657
|
+
queue_micro_task(() => {
|
|
2658
|
+
/** @type {unknown} */
|
|
2659
|
+
var result;
|
|
2660
|
+
try {
|
|
2661
|
+
result = this.transform_error(error);
|
|
2662
|
+
} catch (e) {
|
|
2663
|
+
invoke_error_boundary(e, this.#effect && this.#effect.parent);
|
|
2664
|
+
return;
|
|
2665
|
+
}
|
|
2666
|
+
if (result !== null && typeof result === "object" && typeof result.then === "function")
|
|
2667
|
+
/** @type {any} */ result.then(
|
|
2668
|
+
handle_error_result,
|
|
2669
|
+
/** @param {unknown} e */
|
|
2670
|
+
(e) => invoke_error_boundary(e, this.#effect && this.#effect.parent)
|
|
2671
|
+
);
|
|
2672
|
+
else handle_error_result(result);
|
|
2673
|
+
});
|
|
2674
|
+
}
|
|
2675
|
+
};
|
|
2676
|
+
function pending() {
|
|
2677
|
+
if (active_effect === null) effect_pending_outside_reaction();
|
|
2678
|
+
var boundary = active_effect.b;
|
|
2679
|
+
if (boundary === null) return 0;
|
|
2680
|
+
return boundary.get_effect_pending();
|
|
2681
|
+
}
|
|
2682
|
+
//#endregion
|
|
2683
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/reactivity/async.js
|
|
2684
|
+
/** @import { Blocker, Effect, Value } from '#client' */
|
|
2685
|
+
/**
|
|
2686
|
+
* @param {Blocker[]} blockers
|
|
2687
|
+
* @param {Array<() => any>} sync
|
|
2688
|
+
* @param {Array<() => Promise<any>>} async
|
|
2689
|
+
* @param {(values: Value[]) => any} fn
|
|
2690
|
+
*/
|
|
2691
|
+
function flatten(blockers, sync, async, fn) {
|
|
2692
|
+
const d = is_runes() ? derived : derived_safe_equal;
|
|
2693
|
+
var pending = blockers.filter((b) => !b.settled);
|
|
2694
|
+
if (async.length === 0 && pending.length === 0) {
|
|
2695
|
+
fn(sync.map(d));
|
|
2696
|
+
return;
|
|
2697
|
+
}
|
|
2698
|
+
var parent = active_effect;
|
|
2699
|
+
var restore = capture();
|
|
2700
|
+
var blocker_promise = pending.length === 1 ? pending[0].promise : pending.length > 1 ? Promise.all(pending.map((b) => b.promise)) : null;
|
|
2701
|
+
/** @param {Value[]} values */
|
|
2702
|
+
function finish(values) {
|
|
2703
|
+
if ((parent.f & 16384) !== 0) return;
|
|
2704
|
+
restore();
|
|
2705
|
+
try {
|
|
2706
|
+
fn(values);
|
|
2707
|
+
} catch (error) {
|
|
2708
|
+
invoke_error_boundary(error, parent);
|
|
2709
|
+
}
|
|
2710
|
+
unset_context();
|
|
2711
|
+
}
|
|
2712
|
+
var decrement_pending = increment_pending();
|
|
2713
|
+
if (async.length === 0) {
|
|
2714
|
+
/** @type {Promise<any>} */ blocker_promise.then(() => finish(sync.map(d))).finally(decrement_pending);
|
|
2715
|
+
return;
|
|
2716
|
+
}
|
|
2717
|
+
function run() {
|
|
2718
|
+
Promise.all(async.map((expression) => /* @__PURE__ */ async_derived(expression))).then((result) => finish([...sync.map(d), ...result])).catch((error) => invoke_error_boundary(error, parent)).finally(decrement_pending);
|
|
2719
|
+
}
|
|
2720
|
+
if (blocker_promise) blocker_promise.then(() => {
|
|
2721
|
+
restore();
|
|
2722
|
+
run();
|
|
2723
|
+
unset_context();
|
|
2724
|
+
});
|
|
2725
|
+
else run();
|
|
2726
|
+
}
|
|
2727
|
+
/**
|
|
2728
|
+
* @param {Blocker[]} blockers
|
|
2729
|
+
* @param {(values: Value[]) => any} fn
|
|
2730
|
+
*/
|
|
2731
|
+
function run_after_blockers(blockers, fn) {
|
|
2732
|
+
flatten(blockers, [], [], fn);
|
|
2733
|
+
}
|
|
2734
|
+
/**
|
|
2735
|
+
* Captures the current effect context so that we can restore it after
|
|
2736
|
+
* some asynchronous work has happened (so that e.g. `await a + b`
|
|
2737
|
+
* causes `b` to be registered as a dependency).
|
|
2738
|
+
*/
|
|
2739
|
+
function capture() {
|
|
2740
|
+
var previous_effect = active_effect;
|
|
2741
|
+
var previous_reaction = active_reaction;
|
|
2742
|
+
var previous_component_context = component_context;
|
|
2743
|
+
var previous_batch = current_batch;
|
|
2744
|
+
var previous_dev_stack = dev_stack;
|
|
2745
|
+
return function restore(activate_batch = true) {
|
|
2746
|
+
set_active_effect(previous_effect);
|
|
2747
|
+
set_active_reaction(previous_reaction);
|
|
2748
|
+
set_component_context(previous_component_context);
|
|
2749
|
+
if (activate_batch && (previous_effect.f & 16384) === 0) {
|
|
2750
|
+
previous_batch?.activate();
|
|
2751
|
+
previous_batch?.apply();
|
|
2752
|
+
}
|
|
2753
|
+
set_reactivity_loss_tracker(null);
|
|
2754
|
+
set_dev_stack(previous_dev_stack);
|
|
2755
|
+
};
|
|
2756
|
+
}
|
|
2757
|
+
/**
|
|
2758
|
+
* Wraps an `await` expression in such a way that the effect context that was
|
|
2759
|
+
* active before the expression evaluated can be reapplied afterwards —
|
|
2760
|
+
* `await a + b` becomes `(await $.save(a))() + b`
|
|
2761
|
+
* @template T
|
|
2762
|
+
* @param {Promise<T>} promise
|
|
2763
|
+
* @returns {Promise<() => T>}
|
|
2764
|
+
*/
|
|
2765
|
+
async function save(promise) {
|
|
2766
|
+
var restore = capture();
|
|
2767
|
+
var value = await promise;
|
|
2768
|
+
return () => {
|
|
2769
|
+
restore();
|
|
2770
|
+
return value;
|
|
2771
|
+
};
|
|
2772
|
+
}
|
|
2773
|
+
/**
|
|
2774
|
+
* Reset `current_async_effect` after the `promise` resolves, so
|
|
2775
|
+
* that we can emit `await_reactivity_loss` warnings
|
|
2776
|
+
* @template T
|
|
2777
|
+
* @param {Promise<T>} promise
|
|
2778
|
+
* @returns {Promise<() => T>}
|
|
2779
|
+
*/
|
|
2780
|
+
async function track_reactivity_loss(promise) {
|
|
2781
|
+
var previous_async_effect = reactivity_loss_tracker;
|
|
2782
|
+
queueMicrotask(() => {
|
|
2783
|
+
if (reactivity_loss_tracker === previous_async_effect) set_reactivity_loss_tracker(null);
|
|
2784
|
+
});
|
|
2785
|
+
var value = await promise;
|
|
2786
|
+
return () => {
|
|
2787
|
+
set_reactivity_loss_tracker(previous_async_effect);
|
|
2788
|
+
queueMicrotask(() => {
|
|
2789
|
+
if (reactivity_loss_tracker === previous_async_effect) set_reactivity_loss_tracker(null);
|
|
2790
|
+
});
|
|
2791
|
+
return value;
|
|
2792
|
+
};
|
|
2793
|
+
}
|
|
2794
|
+
/**
|
|
2795
|
+
* Used in `for await` loops in DEV, so
|
|
2796
|
+
* that we can emit `await_reactivity_loss` warnings
|
|
2797
|
+
* after each `async_iterator` result resolves and
|
|
2798
|
+
* after the `async_iterator` return resolves (if it runs)
|
|
2799
|
+
* @template T
|
|
2800
|
+
* @template TReturn
|
|
2801
|
+
* @param {Iterable<T> | AsyncIterable<T>} iterable
|
|
2802
|
+
* @returns {AsyncGenerator<T, TReturn | undefined>}
|
|
2803
|
+
*/
|
|
2804
|
+
async function* for_await_track_reactivity_loss(iterable) {
|
|
2805
|
+
/** @type {AsyncIterator<T, TReturn>} */
|
|
2806
|
+
const iterator = iterable[Symbol.asyncIterator]?.() ?? iterable[Symbol.iterator]?.();
|
|
2807
|
+
if (iterator === void 0) throw new TypeError("value is not async iterable");
|
|
2808
|
+
let invoke_return = true;
|
|
2809
|
+
try {
|
|
2810
|
+
while (true) {
|
|
2811
|
+
const { done, value } = (await track_reactivity_loss(iterator.next()))();
|
|
2812
|
+
if (done) {
|
|
2813
|
+
invoke_return = false;
|
|
2814
|
+
break;
|
|
2815
|
+
}
|
|
2816
|
+
var prev = reactivity_loss_tracker;
|
|
2817
|
+
try {
|
|
2818
|
+
yield value;
|
|
2819
|
+
} catch (e) {
|
|
2820
|
+
set_reactivity_loss_tracker(prev);
|
|
2821
|
+
if (iterator.return !== void 0) (await track_reactivity_loss(iterator.return()))();
|
|
2822
|
+
throw e;
|
|
2823
|
+
}
|
|
2824
|
+
set_reactivity_loss_tracker(prev);
|
|
2825
|
+
}
|
|
2826
|
+
} catch (error) {
|
|
2827
|
+
invoke_return = false;
|
|
2828
|
+
throw error;
|
|
2829
|
+
} finally {
|
|
2830
|
+
if (invoke_return && iterator.return !== void 0) return (await track_reactivity_loss(iterator.return()))().value;
|
|
2831
|
+
}
|
|
2832
|
+
}
|
|
2833
|
+
function unset_context(deactivate_batch = true) {
|
|
2834
|
+
set_active_effect(null);
|
|
2835
|
+
set_active_reaction(null);
|
|
2836
|
+
set_component_context(null);
|
|
2837
|
+
if (deactivate_batch) current_batch?.deactivate();
|
|
2838
|
+
set_reactivity_loss_tracker(null);
|
|
2839
|
+
set_dev_stack(null);
|
|
2840
|
+
}
|
|
2841
|
+
/**
|
|
2842
|
+
* @param {Array<() => void | Promise<void>>} thunks
|
|
2843
|
+
*/
|
|
2844
|
+
function run(thunks) {
|
|
2845
|
+
const restore = capture();
|
|
2846
|
+
const decrement_pending = increment_pending();
|
|
2847
|
+
var active = active_effect;
|
|
2848
|
+
/** @type {null | { error: any }} */
|
|
2849
|
+
var errored = null;
|
|
2850
|
+
/** @param {any} error */
|
|
2851
|
+
const handle_error = (error) => {
|
|
2852
|
+
errored = { error };
|
|
2853
|
+
if (!aborted(active)) invoke_error_boundary(error, active);
|
|
2854
|
+
};
|
|
2855
|
+
var promise = Promise.resolve(thunks[0]()).catch(handle_error);
|
|
2856
|
+
/** @type {Blocker} */
|
|
2857
|
+
var blocker = {
|
|
2858
|
+
promise,
|
|
2859
|
+
settled: false
|
|
2860
|
+
};
|
|
2861
|
+
var blockers = [blocker];
|
|
2862
|
+
promise.finally(() => {
|
|
2863
|
+
blocker.settled = true;
|
|
2864
|
+
unset_context();
|
|
2865
|
+
});
|
|
2866
|
+
for (const fn of thunks.slice(1)) {
|
|
2867
|
+
promise = promise.then(() => {
|
|
2868
|
+
restore();
|
|
2869
|
+
try {
|
|
2870
|
+
if (errored) throw errored.error;
|
|
2871
|
+
if (aborted(active)) throw STALE_REACTION;
|
|
2872
|
+
return fn();
|
|
2873
|
+
} finally {
|
|
2874
|
+
unset_context();
|
|
2875
|
+
}
|
|
2876
|
+
}).catch(handle_error);
|
|
2877
|
+
const blocker = {
|
|
2878
|
+
promise,
|
|
2879
|
+
settled: false
|
|
2880
|
+
};
|
|
2881
|
+
blockers.push(blocker);
|
|
2882
|
+
promise.finally(() => {
|
|
2883
|
+
blocker.settled = true;
|
|
2884
|
+
unset_context();
|
|
2885
|
+
});
|
|
2886
|
+
}
|
|
2887
|
+
promise.then(() => Promise.resolve()).finally(decrement_pending);
|
|
2888
|
+
return blockers;
|
|
2889
|
+
}
|
|
2890
|
+
/**
|
|
2891
|
+
* @param {Blocker[]} blockers
|
|
2892
|
+
*/
|
|
2893
|
+
function wait(blockers) {
|
|
2894
|
+
return Promise.all(blockers.map((b) => b.promise));
|
|
2895
|
+
}
|
|
2896
|
+
/**
|
|
2897
|
+
* @returns {(skip?: boolean) => void}
|
|
2898
|
+
*/
|
|
2899
|
+
function increment_pending() {
|
|
2900
|
+
var effect = active_effect;
|
|
2901
|
+
var boundary = effect.b;
|
|
2902
|
+
var batch = current_batch;
|
|
2903
|
+
var blocking = boundary.is_rendered();
|
|
2904
|
+
boundary.update_pending_count(1, batch);
|
|
2905
|
+
batch.increment(blocking, effect);
|
|
2906
|
+
return () => {
|
|
2907
|
+
boundary.update_pending_count(-1, batch);
|
|
2908
|
+
batch.decrement(blocking, effect);
|
|
2909
|
+
};
|
|
2910
|
+
}
|
|
2911
|
+
//#endregion
|
|
2912
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/reactivity/deriveds.js
|
|
2913
|
+
/** @import { Derived, Effect, Reaction, Source, Value } from '#client' */
|
|
2914
|
+
/** @import { Batch } from './batch.js'; */
|
|
2915
|
+
/** @import { Boundary } from '../dom/blocks/boundary.js'; */
|
|
2916
|
+
/**
|
|
2917
|
+
* This allows us to track 'reactivity loss' that occurs when signals
|
|
2918
|
+
* are read after a non-context-restoring `await`. Dev-only
|
|
2919
|
+
* @type {{ effect: Effect, effect_deps: Set<Value>, warned: boolean } | null}
|
|
2920
|
+
*/
|
|
2921
|
+
var reactivity_loss_tracker = null;
|
|
2922
|
+
/** @param {{ effect: Effect, effect_deps: Set<Value>, warned: boolean } | null} v */
|
|
2923
|
+
function set_reactivity_loss_tracker(v) {
|
|
2924
|
+
reactivity_loss_tracker = v;
|
|
2925
|
+
}
|
|
2926
|
+
var recent_async_deriveds = /* @__PURE__ */ new Set();
|
|
2927
|
+
/**
|
|
2928
|
+
* @template V
|
|
2929
|
+
* @param {() => V} fn
|
|
2930
|
+
* @returns {Derived<V>}
|
|
2931
|
+
*/
|
|
2932
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
2933
|
+
function derived(fn) {
|
|
2934
|
+
var flags = 2 | DIRTY;
|
|
2935
|
+
if (active_effect !== null) active_effect.f |= EFFECT_PRESERVED;
|
|
2936
|
+
/** @type {Derived<V>} */
|
|
2937
|
+
const signal = {
|
|
2938
|
+
ctx: component_context,
|
|
2939
|
+
deps: null,
|
|
2940
|
+
effects: null,
|
|
2941
|
+
equals: equals$1,
|
|
2942
|
+
f: flags,
|
|
2943
|
+
fn,
|
|
2944
|
+
reactions: null,
|
|
2945
|
+
rv: 0,
|
|
2946
|
+
v: UNINITIALIZED,
|
|
2947
|
+
wv: 0,
|
|
2948
|
+
parent: active_effect,
|
|
2949
|
+
ac: null
|
|
2950
|
+
};
|
|
2951
|
+
if (tracing_mode_flag) signal.created = get_error("created at");
|
|
2952
|
+
return signal;
|
|
2953
|
+
}
|
|
2954
|
+
var OBSOLETE = Symbol("obsolete");
|
|
2955
|
+
/**
|
|
2956
|
+
* @template V
|
|
2957
|
+
* @param {() => V | Promise<V>} fn
|
|
2958
|
+
* @param {string} [label]
|
|
2959
|
+
* @param {string} [location] If provided, print a warning if the value is not read immediately after update
|
|
2960
|
+
* @returns {Promise<Source<V>>}
|
|
2961
|
+
*/
|
|
2962
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
2963
|
+
function async_derived(fn, label, location) {
|
|
2964
|
+
let parent = active_effect;
|
|
2965
|
+
if (parent === null) async_derived_orphan();
|
|
2966
|
+
var promise = void 0;
|
|
2967
|
+
var signal = source(UNINITIALIZED);
|
|
2968
|
+
signal.label = label ?? fn.toString();
|
|
2969
|
+
var should_suspend = !active_reaction;
|
|
2970
|
+
/** @type {Set<ReturnType<typeof deferred<V>>>} */
|
|
2971
|
+
var deferreds = /* @__PURE__ */ new Set();
|
|
2972
|
+
async_effect(() => {
|
|
2973
|
+
var effect = active_effect;
|
|
2974
|
+
reactivity_loss_tracker = {
|
|
2975
|
+
effect,
|
|
2976
|
+
effect_deps: /* @__PURE__ */ new Set(),
|
|
2977
|
+
warned: false
|
|
2978
|
+
};
|
|
2979
|
+
/** @type {ReturnType<typeof deferred<V>>} */
|
|
2980
|
+
var d = deferred();
|
|
2981
|
+
promise = d.promise;
|
|
2982
|
+
try {
|
|
2983
|
+
Promise.resolve(fn()).then(d.resolve, (e) => {
|
|
2984
|
+
if (e !== STALE_REACTION) d.reject(e);
|
|
2985
|
+
}).finally(unset_context);
|
|
2986
|
+
} catch (error) {
|
|
2987
|
+
d.reject(error);
|
|
2988
|
+
unset_context();
|
|
2989
|
+
}
|
|
2990
|
+
if (reactivity_loss_tracker) {
|
|
2991
|
+
if (effect.deps !== null) for (let i = 0; i < skipped_deps; i += 1) reactivity_loss_tracker.effect_deps.add(effect.deps[i]);
|
|
2992
|
+
if (new_deps !== null) for (let i = 0; i < new_deps.length; i += 1) reactivity_loss_tracker.effect_deps.add(new_deps[i]);
|
|
2993
|
+
}
|
|
2994
|
+
reactivity_loss_tracker = null;
|
|
2995
|
+
var batch = current_batch;
|
|
2996
|
+
if (should_suspend) {
|
|
2997
|
+
if ((effect.f & 32768) !== 0) var decrement_pending = increment_pending();
|
|
2998
|
+
if (parent.b.is_rendered()) batch.async_deriveds.get(effect)?.reject(OBSOLETE);
|
|
2999
|
+
else for (const d of deferreds.values()) d.reject(OBSOLETE);
|
|
3000
|
+
deferreds.add(d);
|
|
3001
|
+
batch.async_deriveds.set(effect, d);
|
|
3002
|
+
}
|
|
3003
|
+
/**
|
|
3004
|
+
* @param {any} value
|
|
3005
|
+
* @param {unknown} error
|
|
3006
|
+
*/
|
|
3007
|
+
const handler = (value, error = void 0) => {
|
|
3008
|
+
reactivity_loss_tracker = null;
|
|
3009
|
+
decrement_pending?.();
|
|
3010
|
+
deferreds.delete(d);
|
|
3011
|
+
if (error === OBSOLETE) return;
|
|
3012
|
+
batch.activate();
|
|
3013
|
+
if (error) {
|
|
3014
|
+
signal.f |= ERROR_VALUE;
|
|
3015
|
+
internal_set(signal, error);
|
|
3016
|
+
} else {
|
|
3017
|
+
if ((signal.f & 8388608) !== 0) signal.f ^= ERROR_VALUE;
|
|
3018
|
+
internal_set(signal, value);
|
|
3019
|
+
if (location !== void 0) {
|
|
3020
|
+
recent_async_deriveds.add(signal);
|
|
3021
|
+
setTimeout(() => {
|
|
3022
|
+
if (recent_async_deriveds.has(signal) && (effect.f & 16384) === 0) {
|
|
3023
|
+
await_waterfall(signal.label, location);
|
|
3024
|
+
recent_async_deriveds.delete(signal);
|
|
3025
|
+
}
|
|
3026
|
+
});
|
|
3027
|
+
}
|
|
3028
|
+
}
|
|
3029
|
+
batch.deactivate();
|
|
3030
|
+
};
|
|
3031
|
+
d.promise.then(handler, (e) => handler(null, e || "unknown"));
|
|
3032
|
+
});
|
|
3033
|
+
teardown(() => {
|
|
3034
|
+
for (const d of deferreds) d.reject(OBSOLETE);
|
|
3035
|
+
});
|
|
3036
|
+
signal.f |= ASYNC;
|
|
3037
|
+
return new Promise((fulfil) => {
|
|
3038
|
+
/** @param {Promise<V>} p */
|
|
3039
|
+
function next(p) {
|
|
3040
|
+
function go() {
|
|
3041
|
+
if (p === promise) fulfil(signal);
|
|
3042
|
+
else next(promise);
|
|
3043
|
+
}
|
|
3044
|
+
p.then(go, go);
|
|
3045
|
+
}
|
|
3046
|
+
next(promise);
|
|
3047
|
+
});
|
|
3048
|
+
}
|
|
3049
|
+
/**
|
|
3050
|
+
* @template V
|
|
3051
|
+
* @param {() => V} fn
|
|
3052
|
+
* @returns {Derived<V>}
|
|
3053
|
+
*/
|
|
3054
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
3055
|
+
function user_derived(fn) {
|
|
3056
|
+
const d = /* @__PURE__ */ derived(fn);
|
|
3057
|
+
if (!async_mode_flag) push_reaction_value(d);
|
|
3058
|
+
return d;
|
|
3059
|
+
}
|
|
3060
|
+
/**
|
|
3061
|
+
* @template V
|
|
3062
|
+
* @param {() => V} fn
|
|
3063
|
+
* @returns {Derived<V>}
|
|
3064
|
+
*/
|
|
3065
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
3066
|
+
function derived_safe_equal(fn) {
|
|
3067
|
+
const signal = /* @__PURE__ */ derived(fn);
|
|
3068
|
+
signal.equals = safe_equals;
|
|
3069
|
+
return signal;
|
|
3070
|
+
}
|
|
3071
|
+
/**
|
|
3072
|
+
* @param {Derived} derived
|
|
3073
|
+
* @returns {void}
|
|
3074
|
+
*/
|
|
3075
|
+
function destroy_derived_effects(derived) {
|
|
3076
|
+
var effects = derived.effects;
|
|
3077
|
+
if (effects !== null) {
|
|
3078
|
+
derived.effects = null;
|
|
3079
|
+
for (var i = 0; i < effects.length; i += 1) destroy_effect(effects[i]);
|
|
3080
|
+
}
|
|
3081
|
+
}
|
|
3082
|
+
/**
|
|
3083
|
+
* The currently updating deriveds, used to detect infinite recursion
|
|
3084
|
+
* in dev mode and provide a nicer error than 'too much recursion'
|
|
3085
|
+
* @type {Derived[]}
|
|
3086
|
+
*/
|
|
3087
|
+
var stack = [];
|
|
3088
|
+
/**
|
|
3089
|
+
* @template T
|
|
3090
|
+
* @param {Derived} derived
|
|
3091
|
+
* @returns {T}
|
|
3092
|
+
*/
|
|
3093
|
+
function execute_derived(derived) {
|
|
3094
|
+
var value;
|
|
3095
|
+
var prev_active_effect = active_effect;
|
|
3096
|
+
var parent = derived.parent;
|
|
3097
|
+
if (!is_destroying_effect && parent !== null && derived.v !== UNINITIALIZED && (parent.f & 24576) !== 0) {
|
|
3098
|
+
derived_inert();
|
|
3099
|
+
return derived.v;
|
|
3100
|
+
}
|
|
3101
|
+
set_active_effect(parent);
|
|
3102
|
+
{
|
|
3103
|
+
let prev_eager_effects = eager_effects;
|
|
3104
|
+
set_eager_effects(/* @__PURE__ */ new Set());
|
|
3105
|
+
try {
|
|
3106
|
+
if (includes.call(stack, derived)) derived_references_self();
|
|
3107
|
+
stack.push(derived);
|
|
3108
|
+
derived.f &= ~WAS_MARKED;
|
|
3109
|
+
destroy_derived_effects(derived);
|
|
3110
|
+
value = update_reaction(derived);
|
|
3111
|
+
} finally {
|
|
3112
|
+
set_active_effect(prev_active_effect);
|
|
3113
|
+
set_eager_effects(prev_eager_effects);
|
|
3114
|
+
stack.pop();
|
|
3115
|
+
}
|
|
3116
|
+
}
|
|
3117
|
+
return value;
|
|
3118
|
+
}
|
|
3119
|
+
/**
|
|
3120
|
+
* @param {Derived} derived
|
|
3121
|
+
* @returns {void}
|
|
3122
|
+
*/
|
|
3123
|
+
function update_derived(derived) {
|
|
3124
|
+
var value = execute_derived(derived);
|
|
3125
|
+
if (!derived.equals(value)) {
|
|
3126
|
+
derived.wv = increment_write_version();
|
|
3127
|
+
if (!current_batch?.is_fork || derived.deps === null) {
|
|
3128
|
+
if (current_batch !== null) {
|
|
3129
|
+
current_batch.capture(derived, value, true);
|
|
3130
|
+
previous_batch?.capture(derived, value, true);
|
|
3131
|
+
} else derived.v = value;
|
|
3132
|
+
if (derived.deps === null) {
|
|
3133
|
+
set_signal_status(derived, CLEAN);
|
|
3134
|
+
return;
|
|
3135
|
+
}
|
|
3136
|
+
}
|
|
3137
|
+
}
|
|
3138
|
+
if (is_destroying_effect) return;
|
|
3139
|
+
if (batch_values !== null) {
|
|
3140
|
+
if (effect_tracking() || current_batch?.is_fork) batch_values.set(derived, value);
|
|
3141
|
+
} else update_derived_status(derived);
|
|
3142
|
+
}
|
|
3143
|
+
/**
|
|
3144
|
+
* @param {Derived} derived
|
|
3145
|
+
*/
|
|
3146
|
+
function freeze_derived_effects(derived) {
|
|
3147
|
+
if (derived.effects === null) return;
|
|
3148
|
+
for (const e of derived.effects) if (e.teardown || e.ac) {
|
|
3149
|
+
e.teardown?.();
|
|
3150
|
+
e.ac?.abort(STALE_REACTION);
|
|
3151
|
+
if (e.fn !== null) e.teardown = noop;
|
|
3152
|
+
e.ac = null;
|
|
3153
|
+
remove_reactions(e, 0);
|
|
3154
|
+
destroy_effect_children(e);
|
|
3155
|
+
}
|
|
3156
|
+
}
|
|
3157
|
+
/**
|
|
3158
|
+
* @param {Derived} derived
|
|
3159
|
+
*/
|
|
3160
|
+
function unfreeze_derived_effects(derived) {
|
|
3161
|
+
if (derived.effects === null) return;
|
|
3162
|
+
for (const e of derived.effects) if (e.teardown && e.fn !== null) update_effect(e);
|
|
3163
|
+
}
|
|
3164
|
+
//#endregion
|
|
3165
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/reactivity/sources.js
|
|
3166
|
+
/** @import { Derived, Effect, Source, Value } from '#client' */
|
|
3167
|
+
/** @type {Set<Effect>} */
|
|
3168
|
+
var eager_effects = /* @__PURE__ */ new Set();
|
|
3169
|
+
/** @type {Map<Source, any>} */
|
|
3170
|
+
var old_values = /* @__PURE__ */ new Map();
|
|
3171
|
+
/**
|
|
3172
|
+
* @param {Set<any>} v
|
|
3173
|
+
*/
|
|
3174
|
+
function set_eager_effects(v) {
|
|
3175
|
+
eager_effects = v;
|
|
3176
|
+
}
|
|
3177
|
+
var eager_effects_deferred = false;
|
|
3178
|
+
function set_eager_effects_deferred() {
|
|
3179
|
+
eager_effects_deferred = true;
|
|
3180
|
+
}
|
|
3181
|
+
/**
|
|
3182
|
+
* @template V
|
|
3183
|
+
* @param {V} v
|
|
3184
|
+
* @param {Error | null} [stack]
|
|
3185
|
+
* @returns {Source<V>}
|
|
3186
|
+
*/
|
|
3187
|
+
function source(v, stack) {
|
|
3188
|
+
/** @type {Value} */
|
|
3189
|
+
var signal = {
|
|
3190
|
+
f: 0,
|
|
3191
|
+
v,
|
|
3192
|
+
reactions: null,
|
|
3193
|
+
equals: equals$1,
|
|
3194
|
+
rv: 0,
|
|
3195
|
+
wv: 0
|
|
3196
|
+
};
|
|
3197
|
+
if (tracing_mode_flag) {
|
|
3198
|
+
signal.created = stack ?? get_error("created at");
|
|
3199
|
+
signal.updated = null;
|
|
3200
|
+
signal.set_during_effect = false;
|
|
3201
|
+
signal.trace = null;
|
|
3202
|
+
}
|
|
3203
|
+
return signal;
|
|
3204
|
+
}
|
|
3205
|
+
/**
|
|
3206
|
+
* @template V
|
|
3207
|
+
* @param {V} v
|
|
3208
|
+
* @param {Error | null} [stack]
|
|
3209
|
+
*/
|
|
3210
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
3211
|
+
function state(v, stack) {
|
|
3212
|
+
const s = source(v, stack);
|
|
3213
|
+
push_reaction_value(s);
|
|
3214
|
+
return s;
|
|
3215
|
+
}
|
|
3216
|
+
/**
|
|
3217
|
+
* @template V
|
|
3218
|
+
* @param {V} initial_value
|
|
3219
|
+
* @param {boolean} [immutable]
|
|
3220
|
+
* @returns {Source<V>}
|
|
3221
|
+
*/
|
|
3222
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
3223
|
+
function mutable_source(initial_value, immutable = false, trackable = true) {
|
|
3224
|
+
const s = source(initial_value);
|
|
3225
|
+
if (!immutable) s.equals = safe_equals;
|
|
3226
|
+
if (legacy_mode_flag && trackable && component_context !== null && component_context.l !== null) (component_context.l.s ??= []).push(s);
|
|
3227
|
+
return s;
|
|
3228
|
+
}
|
|
3229
|
+
/**
|
|
3230
|
+
* @template V
|
|
3231
|
+
* @param {Value<V>} source
|
|
3232
|
+
* @param {V} value
|
|
3233
|
+
*/
|
|
3234
|
+
function mutate(source, value) {
|
|
3235
|
+
set(source, untrack(() => get(source)));
|
|
3236
|
+
return value;
|
|
3237
|
+
}
|
|
3238
|
+
/**
|
|
3239
|
+
* @template V
|
|
3240
|
+
* @param {Source<V>} source
|
|
3241
|
+
* @param {V} value
|
|
3242
|
+
* @param {boolean} [should_proxy]
|
|
3243
|
+
* @returns {V}
|
|
3244
|
+
*/
|
|
3245
|
+
function set(source, value, should_proxy = false) {
|
|
3246
|
+
if (active_reaction !== null && (!untracking || (active_reaction.f & 131072) !== 0) && is_runes() && (active_reaction.f & 4325394) !== 0 && (current_sources === null || !includes.call(current_sources, source))) state_unsafe_mutation();
|
|
3247
|
+
let new_value = should_proxy ? proxy(value) : value;
|
|
3248
|
+
tag_proxy(new_value, source.label);
|
|
3249
|
+
return internal_set(source, new_value, legacy_updates);
|
|
3250
|
+
}
|
|
3251
|
+
/**
|
|
3252
|
+
* @template V
|
|
3253
|
+
* @param {Source<V>} source
|
|
3254
|
+
* @param {V} value
|
|
3255
|
+
* @param {Effect[] | null} [updated_during_traversal]
|
|
3256
|
+
* @returns {V}
|
|
3257
|
+
*/
|
|
3258
|
+
function internal_set(source, value, updated_during_traversal = null) {
|
|
3259
|
+
if (!source.equals(value)) {
|
|
3260
|
+
old_values.set(source, is_destroying_effect ? value : source.v);
|
|
3261
|
+
var batch = Batch.ensure();
|
|
3262
|
+
batch.capture(source, value);
|
|
3263
|
+
if (tracing_mode_flag || active_effect !== null) {
|
|
3264
|
+
source.updated ??= /* @__PURE__ */ new Map();
|
|
3265
|
+
const count = (source.updated.get("")?.count ?? 0) + 1;
|
|
3266
|
+
source.updated.set("", {
|
|
3267
|
+
error: null,
|
|
3268
|
+
count
|
|
3269
|
+
});
|
|
3270
|
+
if (tracing_mode_flag || count > 5) {
|
|
3271
|
+
const error = get_error("updated at");
|
|
3272
|
+
if (error !== null) {
|
|
3273
|
+
let entry = source.updated.get(error.stack);
|
|
3274
|
+
if (!entry) {
|
|
3275
|
+
entry = {
|
|
3276
|
+
error,
|
|
3277
|
+
count: 0
|
|
3278
|
+
};
|
|
3279
|
+
source.updated.set(error.stack, entry);
|
|
3280
|
+
}
|
|
3281
|
+
entry.count++;
|
|
3282
|
+
}
|
|
3283
|
+
}
|
|
3284
|
+
}
|
|
3285
|
+
if (active_effect !== null) source.set_during_effect = true;
|
|
3286
|
+
if ((source.f & 2) !== 0) {
|
|
3287
|
+
const derived = source;
|
|
3288
|
+
if ((source.f & 2048) !== 0) execute_derived(derived);
|
|
3289
|
+
if (batch_values === null) update_derived_status(derived);
|
|
3290
|
+
}
|
|
3291
|
+
source.wv = increment_write_version();
|
|
3292
|
+
mark_reactions(source, DIRTY, updated_during_traversal);
|
|
3293
|
+
if (is_runes() && active_effect !== null && (active_effect.f & 1024) !== 0 && (active_effect.f & 96) === 0) if (untracked_writes === null) set_untracked_writes([source]);
|
|
3294
|
+
else untracked_writes.push(source);
|
|
3295
|
+
if (!batch.is_fork && eager_effects.size > 0 && !eager_effects_deferred) flush_eager_effects();
|
|
3296
|
+
}
|
|
3297
|
+
return value;
|
|
3298
|
+
}
|
|
3299
|
+
function flush_eager_effects() {
|
|
3300
|
+
eager_effects_deferred = false;
|
|
3301
|
+
for (const effect of eager_effects) {
|
|
3302
|
+
if ((effect.f & 1024) !== 0) set_signal_status(effect, MAYBE_DIRTY);
|
|
3303
|
+
let dirty;
|
|
3304
|
+
try {
|
|
3305
|
+
dirty = is_dirty(effect);
|
|
3306
|
+
} catch {
|
|
3307
|
+
dirty = true;
|
|
3308
|
+
}
|
|
3309
|
+
if (dirty) update_effect(effect);
|
|
3310
|
+
}
|
|
3311
|
+
eager_effects.clear();
|
|
3312
|
+
}
|
|
3313
|
+
/**
|
|
3314
|
+
* @template {number | bigint} T
|
|
3315
|
+
* @param {Source<T>} source
|
|
3316
|
+
* @param {1 | -1} [d]
|
|
3317
|
+
* @returns {T}
|
|
3318
|
+
*/
|
|
3319
|
+
function update(source, d = 1) {
|
|
3320
|
+
var value = get(source);
|
|
3321
|
+
var result = d === 1 ? value++ : value--;
|
|
3322
|
+
set(source, value);
|
|
3323
|
+
return result;
|
|
3324
|
+
}
|
|
3325
|
+
/**
|
|
3326
|
+
* @template {number | bigint} T
|
|
3327
|
+
* @param {Source<T>} source
|
|
3328
|
+
* @param {1 | -1} [d]
|
|
3329
|
+
* @returns {T}
|
|
3330
|
+
*/
|
|
3331
|
+
function update_pre(source, d = 1) {
|
|
3332
|
+
var value = get(source);
|
|
3333
|
+
return set(source, d === 1 ? ++value : --value);
|
|
3334
|
+
}
|
|
3335
|
+
/**
|
|
3336
|
+
* Silently (without using `get`) increment a source
|
|
3337
|
+
* @param {Source<number>} source
|
|
3338
|
+
*/
|
|
3339
|
+
function increment(source) {
|
|
3340
|
+
set(source, source.v + 1);
|
|
3341
|
+
}
|
|
3342
|
+
/**
|
|
3343
|
+
* @param {Value} signal
|
|
3344
|
+
* @param {number} status should be DIRTY or MAYBE_DIRTY
|
|
3345
|
+
* @param {Effect[] | null} updated_during_traversal
|
|
3346
|
+
* @returns {void}
|
|
3347
|
+
*/
|
|
3348
|
+
function mark_reactions(signal, status, updated_during_traversal) {
|
|
3349
|
+
var reactions = signal.reactions;
|
|
3350
|
+
if (reactions === null) return;
|
|
3351
|
+
var runes = is_runes();
|
|
3352
|
+
var length = reactions.length;
|
|
3353
|
+
for (var i = 0; i < length; i++) {
|
|
3354
|
+
var reaction = reactions[i];
|
|
3355
|
+
var flags = reaction.f;
|
|
3356
|
+
if (!runes && reaction === active_effect) continue;
|
|
3357
|
+
var not_dirty = (flags & DIRTY) === 0;
|
|
3358
|
+
if (not_dirty) set_signal_status(reaction, status);
|
|
3359
|
+
if ((flags & 131072) !== 0) eager_effects.add(reaction);
|
|
3360
|
+
else if ((flags & 2) !== 0) {
|
|
3361
|
+
var derived = reaction;
|
|
3362
|
+
batch_values?.delete(derived);
|
|
3363
|
+
if ((flags & 65536) === 0) {
|
|
3364
|
+
if (flags & 512 && (active_effect === null || (active_effect.f & 2097152) === 0)) reaction.f |= WAS_MARKED;
|
|
3365
|
+
mark_reactions(derived, MAYBE_DIRTY, updated_during_traversal);
|
|
3366
|
+
}
|
|
3367
|
+
} else if (not_dirty) {
|
|
3368
|
+
var effect = reaction;
|
|
3369
|
+
if ((flags & 16) !== 0 && eager_block_effects !== null) eager_block_effects.add(effect);
|
|
3370
|
+
if (updated_during_traversal !== null) updated_during_traversal.push(effect);
|
|
3371
|
+
else schedule_effect(effect);
|
|
3372
|
+
}
|
|
3373
|
+
}
|
|
3374
|
+
}
|
|
3375
|
+
//#endregion
|
|
3376
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/proxy.js
|
|
3377
|
+
/** @import { Source } from '#client' */
|
|
3378
|
+
var regex_is_valid_identifier = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/;
|
|
3379
|
+
/**
|
|
3380
|
+
* @template T
|
|
3381
|
+
* @param {T} value
|
|
3382
|
+
* @returns {T}
|
|
3383
|
+
*/
|
|
3384
|
+
function proxy(value) {
|
|
3385
|
+
if (typeof value !== "object" || value === null || STATE_SYMBOL in value) return value;
|
|
3386
|
+
const prototype = get_prototype_of(value);
|
|
3387
|
+
if (prototype !== object_prototype && prototype !== array_prototype) return value;
|
|
3388
|
+
/** @type {Map<any, Source<any>>} */
|
|
3389
|
+
var sources = /* @__PURE__ */ new Map();
|
|
3390
|
+
var is_proxied_array = is_array(value);
|
|
3391
|
+
var version = /* @__PURE__ */ state(0);
|
|
3392
|
+
var stack = tracing_mode_flag ? get_error("created at") : null;
|
|
3393
|
+
var parent_version = update_version;
|
|
3394
|
+
/**
|
|
3395
|
+
* Executes the proxy in the context of the reaction it was originally created in, if any
|
|
3396
|
+
* @template T
|
|
3397
|
+
* @param {() => T} fn
|
|
3398
|
+
*/
|
|
3399
|
+
var with_parent = (fn) => {
|
|
3400
|
+
if (update_version === parent_version) return fn();
|
|
3401
|
+
var reaction = active_reaction;
|
|
3402
|
+
var version = update_version;
|
|
3403
|
+
set_active_reaction(null);
|
|
3404
|
+
set_update_version(parent_version);
|
|
3405
|
+
var result = fn();
|
|
3406
|
+
set_active_reaction(reaction);
|
|
3407
|
+
set_update_version(version);
|
|
3408
|
+
return result;
|
|
3409
|
+
};
|
|
3410
|
+
if (is_proxied_array) {
|
|
3411
|
+
sources.set("length", /* @__PURE__ */ state(
|
|
3412
|
+
/** @type {any[]} */
|
|
3413
|
+
value.length,
|
|
3414
|
+
stack
|
|
3415
|
+
));
|
|
3416
|
+
value = inspectable_array(value);
|
|
3417
|
+
}
|
|
3418
|
+
/** Used in dev for $inspect.trace() */
|
|
3419
|
+
var path = "";
|
|
3420
|
+
let updating = false;
|
|
3421
|
+
/** @param {string} new_path */
|
|
3422
|
+
function update_path(new_path) {
|
|
3423
|
+
if (updating) return;
|
|
3424
|
+
updating = true;
|
|
3425
|
+
path = new_path;
|
|
3426
|
+
tag(version, `${path} version`);
|
|
3427
|
+
for (const [prop, source] of sources) tag(source, get_label(path, prop));
|
|
3428
|
+
updating = false;
|
|
3429
|
+
}
|
|
3430
|
+
return new Proxy(value, {
|
|
3431
|
+
defineProperty(_, prop, descriptor) {
|
|
3432
|
+
if (!("value" in descriptor) || descriptor.configurable === false || descriptor.enumerable === false || descriptor.writable === false) state_descriptors_fixed();
|
|
3433
|
+
var s = sources.get(prop);
|
|
3434
|
+
if (s === void 0) with_parent(() => {
|
|
3435
|
+
var s = /* @__PURE__ */ state(descriptor.value, stack);
|
|
3436
|
+
sources.set(prop, s);
|
|
3437
|
+
if (typeof prop === "string") tag(s, get_label(path, prop));
|
|
3438
|
+
return s;
|
|
3439
|
+
});
|
|
3440
|
+
else set(s, descriptor.value, true);
|
|
3441
|
+
return true;
|
|
3442
|
+
},
|
|
3443
|
+
deleteProperty(target, prop) {
|
|
3444
|
+
var s = sources.get(prop);
|
|
3445
|
+
if (s === void 0) {
|
|
3446
|
+
if (prop in target) {
|
|
3447
|
+
const s = with_parent(() => /* @__PURE__ */ state(UNINITIALIZED, stack));
|
|
3448
|
+
sources.set(prop, s);
|
|
3449
|
+
increment(version);
|
|
3450
|
+
tag(s, get_label(path, prop));
|
|
3451
|
+
}
|
|
3452
|
+
} else {
|
|
3453
|
+
set(s, UNINITIALIZED);
|
|
3454
|
+
increment(version);
|
|
3455
|
+
}
|
|
3456
|
+
return true;
|
|
3457
|
+
},
|
|
3458
|
+
get(target, prop, receiver) {
|
|
3459
|
+
if (prop === STATE_SYMBOL) return value;
|
|
3460
|
+
if (prop === PROXY_PATH_SYMBOL) return update_path;
|
|
3461
|
+
var s = sources.get(prop);
|
|
3462
|
+
var exists = prop in target;
|
|
3463
|
+
if (s === void 0 && (!exists || get_descriptor(target, prop)?.writable)) {
|
|
3464
|
+
s = with_parent(() => {
|
|
3465
|
+
var s = /* @__PURE__ */ state(proxy(exists ? target[prop] : UNINITIALIZED), stack);
|
|
3466
|
+
tag(s, get_label(path, prop));
|
|
3467
|
+
return s;
|
|
3468
|
+
});
|
|
3469
|
+
sources.set(prop, s);
|
|
3470
|
+
}
|
|
3471
|
+
if (s !== void 0) {
|
|
3472
|
+
var v = get(s);
|
|
3473
|
+
return v === UNINITIALIZED ? void 0 : v;
|
|
3474
|
+
}
|
|
3475
|
+
return Reflect.get(target, prop, receiver);
|
|
3476
|
+
},
|
|
3477
|
+
getOwnPropertyDescriptor(target, prop) {
|
|
3478
|
+
var descriptor = Reflect.getOwnPropertyDescriptor(target, prop);
|
|
3479
|
+
if (descriptor && "value" in descriptor) {
|
|
3480
|
+
var s = sources.get(prop);
|
|
3481
|
+
if (s) descriptor.value = get(s);
|
|
3482
|
+
} else if (descriptor === void 0) {
|
|
3483
|
+
var source = sources.get(prop);
|
|
3484
|
+
var value = source?.v;
|
|
3485
|
+
if (source !== void 0 && value !== UNINITIALIZED) return {
|
|
3486
|
+
enumerable: true,
|
|
3487
|
+
configurable: true,
|
|
3488
|
+
value,
|
|
3489
|
+
writable: true
|
|
3490
|
+
};
|
|
3491
|
+
}
|
|
3492
|
+
return descriptor;
|
|
3493
|
+
},
|
|
3494
|
+
has(target, prop) {
|
|
3495
|
+
if (prop === STATE_SYMBOL) return true;
|
|
3496
|
+
var s = sources.get(prop);
|
|
3497
|
+
var has = s !== void 0 && s.v !== UNINITIALIZED || Reflect.has(target, prop);
|
|
3498
|
+
if (s !== void 0 || active_effect !== null && (!has || get_descriptor(target, prop)?.writable)) {
|
|
3499
|
+
if (s === void 0) {
|
|
3500
|
+
s = with_parent(() => {
|
|
3501
|
+
var s = /* @__PURE__ */ state(has ? proxy(target[prop]) : UNINITIALIZED, stack);
|
|
3502
|
+
tag(s, get_label(path, prop));
|
|
3503
|
+
return s;
|
|
3504
|
+
});
|
|
3505
|
+
sources.set(prop, s);
|
|
3506
|
+
}
|
|
3507
|
+
if (get(s) === UNINITIALIZED) return false;
|
|
3508
|
+
}
|
|
3509
|
+
return has;
|
|
3510
|
+
},
|
|
3511
|
+
set(target, prop, value, receiver) {
|
|
3512
|
+
var s = sources.get(prop);
|
|
3513
|
+
var has = prop in target;
|
|
3514
|
+
if (is_proxied_array && prop === "length") for (var i = value; i < s.v; i += 1) {
|
|
3515
|
+
var other_s = sources.get(i + "");
|
|
3516
|
+
if (other_s !== void 0) set(other_s, UNINITIALIZED);
|
|
3517
|
+
else if (i in target) {
|
|
3518
|
+
other_s = with_parent(() => /* @__PURE__ */ state(UNINITIALIZED, stack));
|
|
3519
|
+
sources.set(i + "", other_s);
|
|
3520
|
+
tag(other_s, get_label(path, i));
|
|
3521
|
+
}
|
|
3522
|
+
}
|
|
3523
|
+
if (s === void 0) {
|
|
3524
|
+
if (!has || get_descriptor(target, prop)?.writable) {
|
|
3525
|
+
s = with_parent(() => /* @__PURE__ */ state(void 0, stack));
|
|
3526
|
+
tag(s, get_label(path, prop));
|
|
3527
|
+
set(s, proxy(value));
|
|
3528
|
+
sources.set(prop, s);
|
|
3529
|
+
}
|
|
3530
|
+
} else {
|
|
3531
|
+
has = s.v !== UNINITIALIZED;
|
|
3532
|
+
var p = with_parent(() => proxy(value));
|
|
3533
|
+
set(s, p);
|
|
3534
|
+
}
|
|
3535
|
+
var descriptor = Reflect.getOwnPropertyDescriptor(target, prop);
|
|
3536
|
+
if (descriptor?.set) descriptor.set.call(receiver, value);
|
|
3537
|
+
if (!has) {
|
|
3538
|
+
if (is_proxied_array && typeof prop === "string") {
|
|
3539
|
+
var ls = sources.get("length");
|
|
3540
|
+
var n = Number(prop);
|
|
3541
|
+
if (Number.isInteger(n) && n >= ls.v) set(ls, n + 1);
|
|
3542
|
+
}
|
|
3543
|
+
increment(version);
|
|
3544
|
+
}
|
|
3545
|
+
return true;
|
|
3546
|
+
},
|
|
3547
|
+
ownKeys(target) {
|
|
3548
|
+
get(version);
|
|
3549
|
+
var own_keys = Reflect.ownKeys(target).filter((key) => {
|
|
3550
|
+
var source = sources.get(key);
|
|
3551
|
+
return source === void 0 || source.v !== UNINITIALIZED;
|
|
3552
|
+
});
|
|
3553
|
+
for (var [key, source] of sources) if (source.v !== UNINITIALIZED && !(key in target)) own_keys.push(key);
|
|
3554
|
+
return own_keys;
|
|
3555
|
+
},
|
|
3556
|
+
setPrototypeOf() {
|
|
3557
|
+
state_prototype_fixed();
|
|
3558
|
+
}
|
|
3559
|
+
});
|
|
3560
|
+
}
|
|
3561
|
+
/**
|
|
3562
|
+
* @param {string} path
|
|
3563
|
+
* @param {string | symbol} prop
|
|
3564
|
+
*/
|
|
3565
|
+
function get_label(path, prop) {
|
|
3566
|
+
if (typeof prop === "symbol") return `${path}[Symbol(${prop.description ?? ""})]`;
|
|
3567
|
+
if (regex_is_valid_identifier.test(prop)) return `${path}.${prop}`;
|
|
3568
|
+
return /^\d+$/.test(prop) ? `${path}[${prop}]` : `${path}['${prop}']`;
|
|
3569
|
+
}
|
|
3570
|
+
/**
|
|
3571
|
+
* @param {any} value
|
|
3572
|
+
*/
|
|
3573
|
+
function get_proxied_value(value) {
|
|
3574
|
+
try {
|
|
3575
|
+
if (value !== null && typeof value === "object" && STATE_SYMBOL in value) return value[STATE_SYMBOL];
|
|
3576
|
+
} catch {}
|
|
3577
|
+
return value;
|
|
3578
|
+
}
|
|
3579
|
+
/**
|
|
3580
|
+
* @param {any} a
|
|
3581
|
+
* @param {any} b
|
|
3582
|
+
*/
|
|
3583
|
+
function is(a, b) {
|
|
3584
|
+
return Object.is(get_proxied_value(a), get_proxied_value(b));
|
|
3585
|
+
}
|
|
3586
|
+
var ARRAY_MUTATING_METHODS = new Set([
|
|
3587
|
+
"copyWithin",
|
|
3588
|
+
"fill",
|
|
3589
|
+
"pop",
|
|
3590
|
+
"push",
|
|
3591
|
+
"reverse",
|
|
3592
|
+
"shift",
|
|
3593
|
+
"sort",
|
|
3594
|
+
"splice",
|
|
3595
|
+
"unshift"
|
|
3596
|
+
]);
|
|
3597
|
+
/**
|
|
3598
|
+
* Wrap array mutating methods so $inspect is triggered only once and
|
|
3599
|
+
* to prevent logging an array in intermediate state (e.g. with an empty slot)
|
|
3600
|
+
* @param {any[]} array
|
|
3601
|
+
*/
|
|
3602
|
+
function inspectable_array(array) {
|
|
3603
|
+
return new Proxy(array, { get(target, prop, receiver) {
|
|
3604
|
+
var value = Reflect.get(target, prop, receiver);
|
|
3605
|
+
if (!ARRAY_MUTATING_METHODS.has(prop)) return value;
|
|
3606
|
+
/**
|
|
3607
|
+
* @this {any[]}
|
|
3608
|
+
* @param {any[]} args
|
|
3609
|
+
*/
|
|
3610
|
+
return function(...args) {
|
|
3611
|
+
set_eager_effects_deferred();
|
|
3612
|
+
var result = value.apply(this, args);
|
|
3613
|
+
flush_eager_effects();
|
|
3614
|
+
return result;
|
|
3615
|
+
};
|
|
3616
|
+
} });
|
|
3617
|
+
}
|
|
3618
|
+
//#endregion
|
|
3619
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dev/equality.js
|
|
3620
|
+
function init_array_prototype_warnings() {
|
|
3621
|
+
const array_prototype = Array.prototype;
|
|
3622
|
+
const cleanup = Array.__svelte_cleanup;
|
|
3623
|
+
if (cleanup) cleanup();
|
|
3624
|
+
const { indexOf, lastIndexOf, includes } = array_prototype;
|
|
3625
|
+
array_prototype.indexOf = function(item, from_index) {
|
|
3626
|
+
const index = indexOf.call(this, item, from_index);
|
|
3627
|
+
if (index === -1) {
|
|
3628
|
+
for (let i = from_index ?? 0; i < this.length; i += 1) if (get_proxied_value(this[i]) === item) {
|
|
3629
|
+
state_proxy_equality_mismatch("array.indexOf(...)");
|
|
3630
|
+
break;
|
|
3631
|
+
}
|
|
3632
|
+
}
|
|
3633
|
+
return index;
|
|
3634
|
+
};
|
|
3635
|
+
array_prototype.lastIndexOf = function(item, from_index) {
|
|
3636
|
+
const index = lastIndexOf.call(this, item, from_index ?? this.length - 1);
|
|
3637
|
+
if (index === -1) {
|
|
3638
|
+
for (let i = 0; i <= (from_index ?? this.length - 1); i += 1) if (get_proxied_value(this[i]) === item) {
|
|
3639
|
+
state_proxy_equality_mismatch("array.lastIndexOf(...)");
|
|
3640
|
+
break;
|
|
3641
|
+
}
|
|
3642
|
+
}
|
|
3643
|
+
return index;
|
|
3644
|
+
};
|
|
3645
|
+
array_prototype.includes = function(item, from_index) {
|
|
3646
|
+
const has = includes.call(this, item, from_index);
|
|
3647
|
+
if (!has) {
|
|
3648
|
+
for (let i = 0; i < this.length; i += 1) if (get_proxied_value(this[i]) === item) {
|
|
3649
|
+
state_proxy_equality_mismatch("array.includes(...)");
|
|
3650
|
+
break;
|
|
3651
|
+
}
|
|
3652
|
+
}
|
|
3653
|
+
return has;
|
|
3654
|
+
};
|
|
3655
|
+
Array.__svelte_cleanup = () => {
|
|
3656
|
+
array_prototype.indexOf = indexOf;
|
|
3657
|
+
array_prototype.lastIndexOf = lastIndexOf;
|
|
3658
|
+
array_prototype.includes = includes;
|
|
3659
|
+
};
|
|
3660
|
+
}
|
|
3661
|
+
/**
|
|
3662
|
+
* @param {any} a
|
|
3663
|
+
* @param {any} b
|
|
3664
|
+
* @param {boolean} equal
|
|
3665
|
+
* @returns {boolean}
|
|
3666
|
+
*/
|
|
3667
|
+
function strict_equals(a, b, equal = true) {
|
|
3668
|
+
try {
|
|
3669
|
+
if (a === b !== (get_proxied_value(a) === get_proxied_value(b))) state_proxy_equality_mismatch(equal ? "===" : "!==");
|
|
3670
|
+
} catch {}
|
|
3671
|
+
return a === b === equal;
|
|
3672
|
+
}
|
|
3673
|
+
/**
|
|
3674
|
+
* @param {any} a
|
|
3675
|
+
* @param {any} b
|
|
3676
|
+
* @param {boolean} equal
|
|
3677
|
+
* @returns {boolean}
|
|
3678
|
+
*/
|
|
3679
|
+
function equals(a, b, equal = true) {
|
|
3680
|
+
if (a == b !== (get_proxied_value(a) == get_proxied_value(b))) state_proxy_equality_mismatch(equal ? "==" : "!=");
|
|
3681
|
+
return a == b === equal;
|
|
3682
|
+
}
|
|
3683
|
+
//#endregion
|
|
3684
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/operations.js
|
|
3685
|
+
/** @import { Effect, TemplateNode } from '#client' */
|
|
3686
|
+
/** @type {Window} */
|
|
3687
|
+
var $window;
|
|
3688
|
+
/** @type {Document} */
|
|
3689
|
+
var $document;
|
|
3690
|
+
/** @type {boolean} */
|
|
3691
|
+
var is_firefox;
|
|
3692
|
+
/** @type {() => Node | null} */
|
|
3693
|
+
var first_child_getter;
|
|
3694
|
+
/** @type {() => Node | null} */
|
|
3695
|
+
var next_sibling_getter;
|
|
3696
|
+
/**
|
|
3697
|
+
* Initialize these lazily to avoid issues when using the runtime in a server context
|
|
3698
|
+
* where these globals are not available while avoiding a separate server entry point
|
|
3699
|
+
*/
|
|
3700
|
+
function init_operations() {
|
|
3701
|
+
if ($window !== void 0) return;
|
|
3702
|
+
$window = window;
|
|
3703
|
+
$document = document;
|
|
3704
|
+
is_firefox = /Firefox/.test(navigator.userAgent);
|
|
3705
|
+
var element_prototype = Element.prototype;
|
|
3706
|
+
var node_prototype = Node.prototype;
|
|
3707
|
+
var text_prototype = Text.prototype;
|
|
3708
|
+
first_child_getter = get_descriptor(node_prototype, "firstChild").get;
|
|
3709
|
+
next_sibling_getter = get_descriptor(node_prototype, "nextSibling").get;
|
|
3710
|
+
if (is_extensible(element_prototype)) {
|
|
3711
|
+
/** @type {any} */ element_prototype[CLASS_CACHE] = void 0;
|
|
3712
|
+
/** @type {any} */ element_prototype[ATTRIBUTES_CACHE] = null;
|
|
3713
|
+
/** @type {any} */ element_prototype[STYLE_CACHE] = void 0;
|
|
3714
|
+
element_prototype.__e = void 0;
|
|
3715
|
+
}
|
|
3716
|
+
if (is_extensible(text_prototype))
|
|
3717
|
+
/** @type {any} */ text_prototype[TEXT_CACHE] = void 0;
|
|
3718
|
+
element_prototype.__svelte_meta = null;
|
|
3719
|
+
init_array_prototype_warnings();
|
|
3720
|
+
}
|
|
3721
|
+
/**
|
|
3722
|
+
* @param {string} value
|
|
3723
|
+
* @returns {Text}
|
|
3724
|
+
*/
|
|
3725
|
+
function create_text(value = "") {
|
|
3726
|
+
return document.createTextNode(value);
|
|
3727
|
+
}
|
|
3728
|
+
/**
|
|
3729
|
+
* @template {Node} N
|
|
3730
|
+
* @param {N} node
|
|
3731
|
+
*/
|
|
3732
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
3733
|
+
function get_first_child(node) {
|
|
3734
|
+
return first_child_getter.call(node);
|
|
3735
|
+
}
|
|
3736
|
+
/**
|
|
3737
|
+
* @template {Node} N
|
|
3738
|
+
* @param {N} node
|
|
3739
|
+
*/
|
|
3740
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
3741
|
+
function get_next_sibling(node) {
|
|
3742
|
+
return next_sibling_getter.call(node);
|
|
3743
|
+
}
|
|
3744
|
+
/**
|
|
3745
|
+
* Don't mark this as side-effect-free, hydration needs to walk all nodes
|
|
3746
|
+
* @template {Node} N
|
|
3747
|
+
* @param {N} node
|
|
3748
|
+
* @param {boolean} is_text
|
|
3749
|
+
* @returns {TemplateNode | null}
|
|
3750
|
+
*/
|
|
3751
|
+
function child(node, is_text) {
|
|
3752
|
+
if (!hydrating) return /* @__PURE__ */ get_first_child(node);
|
|
3753
|
+
var child = /* @__PURE__ */ get_first_child(hydrate_node);
|
|
3754
|
+
if (child === null) child = hydrate_node.appendChild(create_text());
|
|
3755
|
+
else if (is_text && child.nodeType !== 3) {
|
|
3756
|
+
var text = create_text();
|
|
3757
|
+
child?.before(text);
|
|
3758
|
+
set_hydrate_node(text);
|
|
3759
|
+
return text;
|
|
3760
|
+
}
|
|
3761
|
+
if (is_text) merge_text_nodes(child);
|
|
3762
|
+
set_hydrate_node(child);
|
|
3763
|
+
return child;
|
|
3764
|
+
}
|
|
3765
|
+
/**
|
|
3766
|
+
* Don't mark this as side-effect-free, hydration needs to walk all nodes
|
|
3767
|
+
* @param {TemplateNode} node
|
|
3768
|
+
* @param {boolean} [is_text]
|
|
3769
|
+
* @returns {TemplateNode | null}
|
|
3770
|
+
*/
|
|
3771
|
+
function first_child(node, is_text = false) {
|
|
3772
|
+
if (!hydrating) {
|
|
3773
|
+
var first = /* @__PURE__ */ get_first_child(node);
|
|
3774
|
+
if (first instanceof Comment && first.data === "") return /* @__PURE__ */ get_next_sibling(first);
|
|
3775
|
+
return first;
|
|
3776
|
+
}
|
|
3777
|
+
if (is_text) {
|
|
3778
|
+
if (hydrate_node?.nodeType !== 3) {
|
|
3779
|
+
var text = create_text();
|
|
3780
|
+
hydrate_node?.before(text);
|
|
3781
|
+
set_hydrate_node(text);
|
|
3782
|
+
return text;
|
|
3783
|
+
}
|
|
3784
|
+
merge_text_nodes(hydrate_node);
|
|
3785
|
+
}
|
|
3786
|
+
return hydrate_node;
|
|
3787
|
+
}
|
|
3788
|
+
/**
|
|
3789
|
+
* Don't mark this as side-effect-free, hydration needs to walk all nodes
|
|
3790
|
+
* @param {TemplateNode} node
|
|
3791
|
+
* @param {number} count
|
|
3792
|
+
* @param {boolean} is_text
|
|
3793
|
+
* @returns {TemplateNode | null}
|
|
3794
|
+
*/
|
|
3795
|
+
function sibling(node, count = 1, is_text = false) {
|
|
3796
|
+
let next_sibling = hydrating ? hydrate_node : node;
|
|
3797
|
+
var last_sibling;
|
|
3798
|
+
while (count--) {
|
|
3799
|
+
last_sibling = next_sibling;
|
|
3800
|
+
next_sibling = /* @__PURE__ */ get_next_sibling(next_sibling);
|
|
3801
|
+
}
|
|
3802
|
+
if (!hydrating) return next_sibling;
|
|
3803
|
+
if (is_text) {
|
|
3804
|
+
if (next_sibling?.nodeType !== 3) {
|
|
3805
|
+
var text = create_text();
|
|
3806
|
+
if (next_sibling === null) last_sibling?.after(text);
|
|
3807
|
+
else next_sibling.before(text);
|
|
3808
|
+
set_hydrate_node(text);
|
|
3809
|
+
return text;
|
|
3810
|
+
}
|
|
3811
|
+
merge_text_nodes(next_sibling);
|
|
3812
|
+
}
|
|
3813
|
+
set_hydrate_node(next_sibling);
|
|
3814
|
+
return next_sibling;
|
|
3815
|
+
}
|
|
3816
|
+
/**
|
|
3817
|
+
* @template {Node} N
|
|
3818
|
+
* @param {N} node
|
|
3819
|
+
* @returns {void}
|
|
3820
|
+
*/
|
|
3821
|
+
function clear_text_content(node) {
|
|
3822
|
+
node.textContent = "";
|
|
3823
|
+
}
|
|
3824
|
+
/**
|
|
3825
|
+
* Returns `true` if we're updating the current block, for example `condition` in
|
|
3826
|
+
* an `{#if condition}` block just changed. In this case, the branch should be
|
|
3827
|
+
* appended (or removed) at the same time as other updates within the
|
|
3828
|
+
* current `<svelte:boundary>`
|
|
3829
|
+
*/
|
|
3830
|
+
function should_defer_append() {
|
|
3831
|
+
if (!async_mode_flag) return false;
|
|
3832
|
+
if (eager_block_effects !== null) return false;
|
|
3833
|
+
return (active_effect.f & REACTION_RAN) !== 0;
|
|
3834
|
+
}
|
|
3835
|
+
/**
|
|
3836
|
+
* @template {keyof HTMLElementTagNameMap | string} T
|
|
3837
|
+
* @param {T} tag
|
|
3838
|
+
* @param {string} [namespace]
|
|
3839
|
+
* @param {string} [is]
|
|
3840
|
+
* @returns {T extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[T] : Element}
|
|
3841
|
+
*/
|
|
3842
|
+
function create_element(tag, namespace, is) {
|
|
3843
|
+
let options = is ? { is } : void 0;
|
|
3844
|
+
return document.createElementNS(namespace ?? "http://www.w3.org/1999/xhtml", tag, options);
|
|
3845
|
+
}
|
|
3846
|
+
function create_fragment() {
|
|
3847
|
+
return document.createDocumentFragment();
|
|
3848
|
+
}
|
|
3849
|
+
/**
|
|
3850
|
+
* @param {string} data
|
|
3851
|
+
* @returns
|
|
3852
|
+
*/
|
|
3853
|
+
function create_comment(data = "") {
|
|
3854
|
+
return document.createComment(data);
|
|
3855
|
+
}
|
|
3856
|
+
/**
|
|
3857
|
+
* @param {Element} element
|
|
3858
|
+
* @param {string} key
|
|
3859
|
+
* @param {string} value
|
|
3860
|
+
* @returns
|
|
3861
|
+
*/
|
|
3862
|
+
function set_attribute(element, key, value = "") {
|
|
3863
|
+
if (key.startsWith("xlink:")) {
|
|
3864
|
+
element.setAttributeNS("http://www.w3.org/1999/xlink", key, value);
|
|
3865
|
+
return;
|
|
3866
|
+
}
|
|
3867
|
+
return element.setAttribute(key, value);
|
|
3868
|
+
}
|
|
3869
|
+
/**
|
|
3870
|
+
* Browsers split text nodes larger than 65536 bytes when parsing.
|
|
3871
|
+
* For hydration to succeed, we need to stitch them back together
|
|
3872
|
+
* @param {Text} text
|
|
3873
|
+
*/
|
|
3874
|
+
function merge_text_nodes(text) {
|
|
3875
|
+
if (text.nodeValue.length < 65536) return;
|
|
3876
|
+
let next = text.nextSibling;
|
|
3877
|
+
while (next !== null && next.nodeType === 3) {
|
|
3878
|
+
next.remove();
|
|
3879
|
+
/** @type {string} */ text.nodeValue += next.nodeValue;
|
|
3880
|
+
next = text.nextSibling;
|
|
3881
|
+
}
|
|
3882
|
+
}
|
|
3883
|
+
//#endregion
|
|
3884
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/misc.js
|
|
3885
|
+
/**
|
|
3886
|
+
* @param {HTMLElement} dom
|
|
3887
|
+
* @param {boolean} value
|
|
3888
|
+
* @returns {void}
|
|
3889
|
+
*/
|
|
3890
|
+
function autofocus(dom, value) {
|
|
3891
|
+
if (value) {
|
|
3892
|
+
const body = document.body;
|
|
3893
|
+
dom.autofocus = true;
|
|
3894
|
+
queue_micro_task(() => {
|
|
3895
|
+
if (document.activeElement === body) dom.focus();
|
|
3896
|
+
});
|
|
3897
|
+
}
|
|
3898
|
+
}
|
|
3899
|
+
/**
|
|
3900
|
+
* The child of a textarea actually corresponds to the defaultValue property, so we need
|
|
3901
|
+
* to remove it upon hydration to avoid a bug when someone resets the form value.
|
|
3902
|
+
* @param {HTMLTextAreaElement} dom
|
|
3903
|
+
* @returns {void}
|
|
3904
|
+
*/
|
|
3905
|
+
function remove_textarea_child(dom) {
|
|
3906
|
+
if (hydrating && /* @__PURE__ */ get_first_child(dom) !== null) clear_text_content(dom);
|
|
3907
|
+
}
|
|
3908
|
+
var listening_to_form_reset = false;
|
|
3909
|
+
function add_form_reset_listener() {
|
|
3910
|
+
if (!listening_to_form_reset) {
|
|
3911
|
+
listening_to_form_reset = true;
|
|
3912
|
+
document.addEventListener("reset", (evt) => {
|
|
3913
|
+
Promise.resolve().then(() => {
|
|
3914
|
+
if (!evt.defaultPrevented) for (const e of evt.target.elements)
|
|
3915
|
+
/** @type {any} */ e[FORM_RESET_HANDLER]?.();
|
|
3916
|
+
});
|
|
3917
|
+
}, { capture: true });
|
|
3918
|
+
}
|
|
3919
|
+
}
|
|
3920
|
+
//#endregion
|
|
3921
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/bindings/shared.js
|
|
3922
|
+
/**
|
|
3923
|
+
* Fires the handler once immediately (unless corresponding arg is set to `false`),
|
|
3924
|
+
* then listens to the given events until the render effect context is destroyed
|
|
3925
|
+
* @param {EventTarget} target
|
|
3926
|
+
* @param {Array<string>} events
|
|
3927
|
+
* @param {(event?: Event) => void} handler
|
|
3928
|
+
* @param {any} call_handler_immediately
|
|
3929
|
+
*/
|
|
3930
|
+
function listen(target, events, handler, call_handler_immediately = true) {
|
|
3931
|
+
if (call_handler_immediately) handler();
|
|
3932
|
+
for (var name of events) target.addEventListener(name, handler);
|
|
3933
|
+
teardown(() => {
|
|
3934
|
+
for (var name of events) target.removeEventListener(name, handler);
|
|
3935
|
+
});
|
|
3936
|
+
}
|
|
3937
|
+
/**
|
|
3938
|
+
* @template T
|
|
3939
|
+
* @param {() => T} fn
|
|
3940
|
+
*/
|
|
3941
|
+
function without_reactive_context(fn) {
|
|
3942
|
+
var previous_reaction = active_reaction;
|
|
3943
|
+
var previous_effect = active_effect;
|
|
3944
|
+
set_active_reaction(null);
|
|
3945
|
+
set_active_effect(null);
|
|
3946
|
+
try {
|
|
3947
|
+
return fn();
|
|
3948
|
+
} finally {
|
|
3949
|
+
set_active_reaction(previous_reaction);
|
|
3950
|
+
set_active_effect(previous_effect);
|
|
3951
|
+
}
|
|
3952
|
+
}
|
|
3953
|
+
/**
|
|
3954
|
+
* Listen to the given event, and then instantiate a global form reset listener if not already done,
|
|
3955
|
+
* to notify all bindings when the form is reset
|
|
3956
|
+
* @param {HTMLElement} element
|
|
3957
|
+
* @param {string} event
|
|
3958
|
+
* @param {(is_reset?: true) => void} handler
|
|
3959
|
+
* @param {(is_reset?: true) => void} [on_reset]
|
|
3960
|
+
*/
|
|
3961
|
+
function listen_to_event_and_reset_event(element, event, handler, on_reset = handler) {
|
|
3962
|
+
element.addEventListener(event, () => without_reactive_context(handler));
|
|
3963
|
+
const prev = element[FORM_RESET_HANDLER];
|
|
3964
|
+
if (prev)
|
|
3965
|
+
/** @type {any} */ element[FORM_RESET_HANDLER] = () => {
|
|
3966
|
+
prev();
|
|
3967
|
+
on_reset(true);
|
|
3968
|
+
};
|
|
3969
|
+
else
|
|
3970
|
+
/** @type {any} */ element[FORM_RESET_HANDLER] = () => on_reset(true);
|
|
3971
|
+
add_form_reset_listener();
|
|
3972
|
+
}
|
|
3973
|
+
//#endregion
|
|
3974
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/reactivity/effects.js
|
|
3975
|
+
/** @import { Blocker, ComponentContext, ComponentContextLegacy, Derived, Effect, TemplateNode, TransitionManager } from '#client' */
|
|
3976
|
+
/**
|
|
3977
|
+
* @param {'$effect' | '$effect.pre' | '$inspect'} rune
|
|
3978
|
+
*/
|
|
3979
|
+
function validate_effect(rune) {
|
|
3980
|
+
if (active_effect === null) {
|
|
3981
|
+
if (active_reaction === null) effect_orphan(rune);
|
|
3982
|
+
effect_in_unowned_derived();
|
|
3983
|
+
}
|
|
3984
|
+
if (is_destroying_effect) effect_in_teardown(rune);
|
|
3985
|
+
}
|
|
3986
|
+
/**
|
|
3987
|
+
* @param {Effect} effect
|
|
3988
|
+
* @param {Effect} parent_effect
|
|
3989
|
+
*/
|
|
3990
|
+
function push_effect(effect, parent_effect) {
|
|
3991
|
+
var parent_last = parent_effect.last;
|
|
3992
|
+
if (parent_last === null) parent_effect.last = parent_effect.first = effect;
|
|
3993
|
+
else {
|
|
3994
|
+
parent_last.next = effect;
|
|
3995
|
+
effect.prev = parent_last;
|
|
3996
|
+
parent_effect.last = effect;
|
|
3997
|
+
}
|
|
3998
|
+
}
|
|
3999
|
+
/**
|
|
4000
|
+
* @param {number} type
|
|
4001
|
+
* @param {null | (() => void | (() => void))} fn
|
|
4002
|
+
* @returns {Effect}
|
|
4003
|
+
*/
|
|
4004
|
+
function create_effect(type, fn) {
|
|
4005
|
+
var parent = active_effect;
|
|
4006
|
+
while (parent !== null && (parent.f & 131072) !== 0) parent = parent.parent;
|
|
4007
|
+
if (parent !== null && (parent.f & 8192) !== 0) type |= INERT;
|
|
4008
|
+
/** @type {Effect} */
|
|
4009
|
+
var effect = {
|
|
4010
|
+
ctx: component_context,
|
|
4011
|
+
deps: null,
|
|
4012
|
+
nodes: null,
|
|
4013
|
+
f: type | DIRTY | 512,
|
|
4014
|
+
first: null,
|
|
4015
|
+
fn,
|
|
4016
|
+
last: null,
|
|
4017
|
+
next: null,
|
|
4018
|
+
parent,
|
|
4019
|
+
b: parent && parent.b,
|
|
4020
|
+
prev: null,
|
|
4021
|
+
teardown: null,
|
|
4022
|
+
wv: 0,
|
|
4023
|
+
ac: null
|
|
4024
|
+
};
|
|
4025
|
+
effect.component_function = dev_current_component_function;
|
|
4026
|
+
current_batch?.register_created_effect(effect);
|
|
4027
|
+
/** @type {Effect | null} */
|
|
4028
|
+
var e = effect;
|
|
4029
|
+
if ((type & 4) !== 0) if (collected_effects !== null) collected_effects.push(effect);
|
|
4030
|
+
else Batch.ensure().schedule(effect);
|
|
4031
|
+
else if (fn !== null) {
|
|
4032
|
+
try {
|
|
4033
|
+
update_effect(effect);
|
|
4034
|
+
} catch (e) {
|
|
4035
|
+
destroy_effect(effect);
|
|
4036
|
+
throw e;
|
|
4037
|
+
}
|
|
4038
|
+
if (e.deps === null && e.teardown === null && e.nodes === null && e.first === e.last && (e.f & 524288) === 0) {
|
|
4039
|
+
e = e.first;
|
|
4040
|
+
if ((type & 16) !== 0 && (type & 65536) !== 0 && e !== null) e.f |= EFFECT_TRANSPARENT;
|
|
4041
|
+
}
|
|
4042
|
+
}
|
|
4043
|
+
if (e !== null) {
|
|
4044
|
+
e.parent = parent;
|
|
4045
|
+
if (parent !== null) push_effect(e, parent);
|
|
4046
|
+
if (active_reaction !== null && (active_reaction.f & 2) !== 0 && (type & 64) === 0) {
|
|
4047
|
+
var derived = active_reaction;
|
|
4048
|
+
(derived.effects ??= []).push(e);
|
|
4049
|
+
}
|
|
4050
|
+
}
|
|
4051
|
+
return effect;
|
|
4052
|
+
}
|
|
4053
|
+
/**
|
|
4054
|
+
* Internal representation of `$effect.tracking()`
|
|
4055
|
+
* @returns {boolean}
|
|
4056
|
+
*/
|
|
4057
|
+
function effect_tracking() {
|
|
4058
|
+
return active_reaction !== null && !untracking;
|
|
4059
|
+
}
|
|
4060
|
+
/**
|
|
4061
|
+
* @param {() => void} fn
|
|
4062
|
+
*/
|
|
4063
|
+
function teardown(fn) {
|
|
4064
|
+
const effect = create_effect(8, null);
|
|
4065
|
+
set_signal_status(effect, CLEAN);
|
|
4066
|
+
effect.teardown = fn;
|
|
4067
|
+
return effect;
|
|
4068
|
+
}
|
|
4069
|
+
/**
|
|
4070
|
+
* Internal representation of `$effect(...)`
|
|
4071
|
+
* @param {() => void | (() => void)} fn
|
|
4072
|
+
*/
|
|
4073
|
+
function user_effect(fn) {
|
|
4074
|
+
validate_effect("$effect");
|
|
4075
|
+
define_property(fn, "name", { value: "$effect" });
|
|
4076
|
+
var flags = active_effect.f;
|
|
4077
|
+
if (!active_reaction && (flags & 32) !== 0 && (flags & 32768) === 0) {
|
|
4078
|
+
var context = component_context;
|
|
4079
|
+
(context.e ??= []).push(fn);
|
|
4080
|
+
} else return create_user_effect(fn);
|
|
4081
|
+
}
|
|
4082
|
+
/**
|
|
4083
|
+
* @param {() => void | (() => void)} fn
|
|
4084
|
+
*/
|
|
4085
|
+
function create_user_effect(fn) {
|
|
4086
|
+
return create_effect(4 | USER_EFFECT, fn);
|
|
4087
|
+
}
|
|
4088
|
+
/**
|
|
4089
|
+
* Internal representation of `$effect.pre(...)`
|
|
4090
|
+
* @param {() => void | (() => void)} fn
|
|
4091
|
+
* @returns {Effect}
|
|
4092
|
+
*/
|
|
4093
|
+
function user_pre_effect(fn) {
|
|
4094
|
+
validate_effect("$effect.pre");
|
|
4095
|
+
define_property(fn, "name", { value: "$effect.pre" });
|
|
4096
|
+
return create_effect(8 | USER_EFFECT, fn);
|
|
4097
|
+
}
|
|
4098
|
+
/** @param {() => void | (() => void)} fn */
|
|
4099
|
+
function eager_effect(fn) {
|
|
4100
|
+
return create_effect(EAGER_EFFECT, fn);
|
|
4101
|
+
}
|
|
4102
|
+
/**
|
|
4103
|
+
* Internal representation of `$effect.root(...)`
|
|
4104
|
+
* @param {() => void | (() => void)} fn
|
|
4105
|
+
* @returns {() => void}
|
|
4106
|
+
*/
|
|
4107
|
+
function effect_root(fn) {
|
|
4108
|
+
Batch.ensure();
|
|
4109
|
+
const effect = create_effect(64 | EFFECT_PRESERVED, fn);
|
|
4110
|
+
return () => {
|
|
4111
|
+
destroy_effect(effect);
|
|
4112
|
+
};
|
|
4113
|
+
}
|
|
4114
|
+
/**
|
|
4115
|
+
* An effect root whose children can transition out
|
|
4116
|
+
* @param {() => void} fn
|
|
4117
|
+
* @returns {(options?: { outro?: boolean }) => Promise<void>}
|
|
4118
|
+
*/
|
|
4119
|
+
function component_root(fn) {
|
|
4120
|
+
Batch.ensure();
|
|
4121
|
+
const effect = create_effect(64 | EFFECT_PRESERVED, fn);
|
|
4122
|
+
return (options = {}) => {
|
|
4123
|
+
return new Promise((fulfil) => {
|
|
4124
|
+
if (options.outro) pause_effect(effect, () => {
|
|
4125
|
+
destroy_effect(effect);
|
|
4126
|
+
fulfil(void 0);
|
|
4127
|
+
});
|
|
4128
|
+
else {
|
|
4129
|
+
destroy_effect(effect);
|
|
4130
|
+
fulfil(void 0);
|
|
4131
|
+
}
|
|
4132
|
+
});
|
|
4133
|
+
};
|
|
4134
|
+
}
|
|
4135
|
+
/**
|
|
4136
|
+
* @param {() => void | (() => void)} fn
|
|
4137
|
+
* @returns {Effect}
|
|
4138
|
+
*/
|
|
4139
|
+
function effect(fn) {
|
|
4140
|
+
return create_effect(4, fn);
|
|
4141
|
+
}
|
|
4142
|
+
/**
|
|
4143
|
+
* Internal representation of `$: ..`
|
|
4144
|
+
* @param {() => any} deps
|
|
4145
|
+
* @param {() => void | (() => void)} fn
|
|
4146
|
+
*/
|
|
4147
|
+
function legacy_pre_effect(deps, fn) {
|
|
4148
|
+
var context = component_context;
|
|
4149
|
+
/** @type {{ effect: null | Effect, ran: boolean, deps: () => any }} */
|
|
4150
|
+
var token = {
|
|
4151
|
+
effect: null,
|
|
4152
|
+
ran: false,
|
|
4153
|
+
deps
|
|
4154
|
+
};
|
|
4155
|
+
context.l.$.push(token);
|
|
4156
|
+
token.effect = render_effect(() => {
|
|
4157
|
+
deps();
|
|
4158
|
+
if (token.ran) return;
|
|
4159
|
+
token.ran = true;
|
|
4160
|
+
var effect = active_effect;
|
|
4161
|
+
try {
|
|
4162
|
+
set_active_effect(effect.parent);
|
|
4163
|
+
untrack(fn);
|
|
4164
|
+
} finally {
|
|
4165
|
+
set_active_effect(effect);
|
|
4166
|
+
}
|
|
4167
|
+
});
|
|
4168
|
+
}
|
|
4169
|
+
function legacy_pre_effect_reset() {
|
|
4170
|
+
var context = component_context;
|
|
4171
|
+
render_effect(() => {
|
|
4172
|
+
for (var token of context.l.$) {
|
|
4173
|
+
token.deps();
|
|
4174
|
+
var effect = token.effect;
|
|
4175
|
+
if ((effect.f & 1024) !== 0 && effect.deps !== null) set_signal_status(effect, MAYBE_DIRTY);
|
|
4176
|
+
if (is_dirty(effect)) update_effect(effect);
|
|
4177
|
+
token.ran = false;
|
|
4178
|
+
}
|
|
4179
|
+
});
|
|
4180
|
+
}
|
|
4181
|
+
/**
|
|
4182
|
+
* @param {() => void | (() => void)} fn
|
|
4183
|
+
* @returns {Effect}
|
|
4184
|
+
*/
|
|
4185
|
+
function async_effect(fn) {
|
|
4186
|
+
return create_effect(ASYNC | EFFECT_PRESERVED, fn);
|
|
4187
|
+
}
|
|
4188
|
+
/**
|
|
4189
|
+
* @param {() => void | (() => void)} fn
|
|
4190
|
+
* @returns {Effect}
|
|
4191
|
+
*/
|
|
4192
|
+
function render_effect(fn, flags = 0) {
|
|
4193
|
+
return create_effect(8 | flags, fn);
|
|
4194
|
+
}
|
|
4195
|
+
/**
|
|
4196
|
+
* @param {(...expressions: any) => void | (() => void)} fn
|
|
4197
|
+
* @param {Array<() => any>} sync
|
|
4198
|
+
* @param {Array<() => Promise<any>>} async
|
|
4199
|
+
* @param {Blocker[]} blockers
|
|
4200
|
+
*/
|
|
4201
|
+
function template_effect(fn, sync = [], async = [], blockers = []) {
|
|
4202
|
+
flatten(blockers, sync, async, (values) => {
|
|
4203
|
+
create_effect(8, () => fn(...values.map(get)));
|
|
4204
|
+
});
|
|
4205
|
+
}
|
|
4206
|
+
/**
|
|
4207
|
+
* Like `template_effect`, but with an effect which is deferred until the batch commits
|
|
4208
|
+
* @param {(...expressions: any) => void | (() => void)} fn
|
|
4209
|
+
* @param {Array<() => any>} sync
|
|
4210
|
+
* @param {Array<() => Promise<any>>} async
|
|
4211
|
+
* @param {Blocker[]} blockers
|
|
4212
|
+
*/
|
|
4213
|
+
function deferred_template_effect(fn, sync = [], async = [], blockers = []) {
|
|
4214
|
+
flatten(blockers, sync, async, (values) => {
|
|
4215
|
+
create_effect(4, () => fn(...values.map(get)));
|
|
4216
|
+
});
|
|
4217
|
+
}
|
|
4218
|
+
/**
|
|
4219
|
+
* @param {(() => void)} fn
|
|
4220
|
+
* @param {number} flags
|
|
4221
|
+
*/
|
|
4222
|
+
function block(fn, flags = 0) {
|
|
4223
|
+
var effect = create_effect(16 | flags, fn);
|
|
4224
|
+
effect.dev_stack = dev_stack;
|
|
4225
|
+
return effect;
|
|
4226
|
+
}
|
|
4227
|
+
/**
|
|
4228
|
+
* @param {(() => void)} fn
|
|
4229
|
+
* @param {number} flags
|
|
4230
|
+
*/
|
|
4231
|
+
function managed(fn, flags = 0) {
|
|
4232
|
+
var effect = create_effect(MANAGED_EFFECT | flags, fn);
|
|
4233
|
+
effect.dev_stack = dev_stack;
|
|
4234
|
+
return effect;
|
|
4235
|
+
}
|
|
4236
|
+
/**
|
|
4237
|
+
* @param {(() => void)} fn
|
|
4238
|
+
*/
|
|
4239
|
+
function branch(fn) {
|
|
4240
|
+
return create_effect(32 | EFFECT_PRESERVED, fn);
|
|
4241
|
+
}
|
|
4242
|
+
/**
|
|
4243
|
+
* @param {Effect} effect
|
|
4244
|
+
*/
|
|
4245
|
+
function execute_effect_teardown(effect) {
|
|
4246
|
+
var teardown = effect.teardown;
|
|
4247
|
+
if (teardown !== null) {
|
|
4248
|
+
const previously_destroying_effect = is_destroying_effect;
|
|
4249
|
+
const previous_reaction = active_reaction;
|
|
4250
|
+
set_is_destroying_effect(true);
|
|
4251
|
+
set_active_reaction(null);
|
|
4252
|
+
try {
|
|
4253
|
+
teardown.call(null);
|
|
4254
|
+
} finally {
|
|
4255
|
+
set_is_destroying_effect(previously_destroying_effect);
|
|
4256
|
+
set_active_reaction(previous_reaction);
|
|
4257
|
+
}
|
|
4258
|
+
}
|
|
4259
|
+
}
|
|
4260
|
+
/**
|
|
4261
|
+
* @param {Effect} signal
|
|
4262
|
+
* @param {boolean} remove_dom
|
|
4263
|
+
* @returns {void}
|
|
4264
|
+
*/
|
|
4265
|
+
function destroy_effect_children(signal, remove_dom = false) {
|
|
4266
|
+
var effect = signal.first;
|
|
4267
|
+
signal.first = signal.last = null;
|
|
4268
|
+
while (effect !== null) {
|
|
4269
|
+
const controller = effect.ac;
|
|
4270
|
+
if (controller !== null) without_reactive_context(() => {
|
|
4271
|
+
controller.abort(STALE_REACTION);
|
|
4272
|
+
});
|
|
4273
|
+
var next = effect.next;
|
|
4274
|
+
if ((effect.f & 64) !== 0) effect.parent = null;
|
|
4275
|
+
else destroy_effect(effect, remove_dom);
|
|
4276
|
+
effect = next;
|
|
4277
|
+
}
|
|
4278
|
+
}
|
|
4279
|
+
/**
|
|
4280
|
+
* @param {Effect} signal
|
|
4281
|
+
* @returns {void}
|
|
4282
|
+
*/
|
|
4283
|
+
function destroy_block_effect_children(signal) {
|
|
4284
|
+
var effect = signal.first;
|
|
4285
|
+
while (effect !== null) {
|
|
4286
|
+
var next = effect.next;
|
|
4287
|
+
if ((effect.f & 32) === 0) destroy_effect(effect);
|
|
4288
|
+
effect = next;
|
|
4289
|
+
}
|
|
4290
|
+
}
|
|
4291
|
+
/**
|
|
4292
|
+
* @param {Effect} effect
|
|
4293
|
+
* @param {boolean} [remove_dom]
|
|
4294
|
+
* @returns {void}
|
|
4295
|
+
*/
|
|
4296
|
+
function destroy_effect(effect, remove_dom = true) {
|
|
4297
|
+
var removed = false;
|
|
4298
|
+
if ((remove_dom || (effect.f & 262144) !== 0) && effect.nodes !== null && effect.nodes.end !== null) {
|
|
4299
|
+
remove_effect_dom(effect.nodes.start, effect.nodes.end);
|
|
4300
|
+
removed = true;
|
|
4301
|
+
}
|
|
4302
|
+
set_signal_status(effect, DESTROYING);
|
|
4303
|
+
destroy_effect_children(effect, remove_dom && !removed);
|
|
4304
|
+
remove_reactions(effect, 0);
|
|
4305
|
+
var transitions = effect.nodes && effect.nodes.t;
|
|
4306
|
+
if (transitions !== null) for (const transition of transitions) transition.stop();
|
|
4307
|
+
execute_effect_teardown(effect);
|
|
4308
|
+
effect.f ^= DESTROYING;
|
|
4309
|
+
effect.f |= DESTROYED;
|
|
4310
|
+
var parent = effect.parent;
|
|
4311
|
+
if (parent !== null && parent.first !== null) unlink_effect(effect);
|
|
4312
|
+
effect.component_function = null;
|
|
4313
|
+
effect.next = effect.prev = effect.teardown = effect.ctx = effect.deps = effect.fn = effect.nodes = effect.ac = effect.b = null;
|
|
4314
|
+
}
|
|
4315
|
+
/**
|
|
4316
|
+
*
|
|
4317
|
+
* @param {TemplateNode | null} node
|
|
4318
|
+
* @param {TemplateNode} end
|
|
4319
|
+
*/
|
|
4320
|
+
function remove_effect_dom(node, end) {
|
|
4321
|
+
while (node !== null) {
|
|
4322
|
+
/** @type {TemplateNode | null} */
|
|
4323
|
+
var next = node === end ? null : /* @__PURE__ */ get_next_sibling(node);
|
|
4324
|
+
node.remove();
|
|
4325
|
+
node = next;
|
|
4326
|
+
}
|
|
4327
|
+
}
|
|
4328
|
+
/**
|
|
4329
|
+
* Detach an effect from the effect tree, freeing up memory and
|
|
4330
|
+
* reducing the amount of work that happens on subsequent traversals
|
|
4331
|
+
* @param {Effect} effect
|
|
4332
|
+
*/
|
|
4333
|
+
function unlink_effect(effect) {
|
|
4334
|
+
var parent = effect.parent;
|
|
4335
|
+
var prev = effect.prev;
|
|
4336
|
+
var next = effect.next;
|
|
4337
|
+
if (prev !== null) prev.next = next;
|
|
4338
|
+
if (next !== null) next.prev = prev;
|
|
4339
|
+
if (parent !== null) {
|
|
4340
|
+
if (parent.first === effect) parent.first = next;
|
|
4341
|
+
if (parent.last === effect) parent.last = prev;
|
|
4342
|
+
}
|
|
4343
|
+
}
|
|
4344
|
+
/**
|
|
4345
|
+
* When a block effect is removed, we don't immediately destroy it or yank it
|
|
4346
|
+
* out of the DOM, because it might have transitions. Instead, we 'pause' it.
|
|
4347
|
+
* It stays around (in memory, and in the DOM) until outro transitions have
|
|
4348
|
+
* completed, and if the state change is reversed then we _resume_ it.
|
|
4349
|
+
* A paused effect does not update, and the DOM subtree becomes inert.
|
|
4350
|
+
* @param {Effect} effect
|
|
4351
|
+
* @param {() => void} [callback]
|
|
4352
|
+
* @param {boolean} [destroy]
|
|
4353
|
+
*/
|
|
4354
|
+
function pause_effect(effect, callback, destroy = true) {
|
|
4355
|
+
/** @type {TransitionManager[]} */
|
|
4356
|
+
var transitions = [];
|
|
4357
|
+
pause_children(effect, transitions, true);
|
|
4358
|
+
var fn = () => {
|
|
4359
|
+
if (destroy) destroy_effect(effect);
|
|
4360
|
+
if (callback) callback();
|
|
4361
|
+
};
|
|
4362
|
+
var remaining = transitions.length;
|
|
4363
|
+
if (remaining > 0) {
|
|
4364
|
+
var check = () => --remaining || fn();
|
|
4365
|
+
for (var transition of transitions) transition.out(check);
|
|
4366
|
+
} else fn();
|
|
4367
|
+
}
|
|
4368
|
+
/**
|
|
4369
|
+
* @param {Effect} effect
|
|
4370
|
+
* @param {TransitionManager[]} transitions
|
|
4371
|
+
* @param {boolean} local
|
|
4372
|
+
*/
|
|
4373
|
+
function pause_children(effect, transitions, local) {
|
|
4374
|
+
if ((effect.f & 8192) !== 0) return;
|
|
4375
|
+
effect.f ^= INERT;
|
|
4376
|
+
var t = effect.nodes && effect.nodes.t;
|
|
4377
|
+
if (t !== null) {
|
|
4378
|
+
for (const transition of t) if (transition.is_global || local) transitions.push(transition);
|
|
4379
|
+
}
|
|
4380
|
+
var child = effect.first;
|
|
4381
|
+
while (child !== null) {
|
|
4382
|
+
var sibling = child.next;
|
|
4383
|
+
if ((child.f & 64) === 0) {
|
|
4384
|
+
var transparent = (child.f & 65536) !== 0 || (child.f & 32) !== 0 && (effect.f & 16) !== 0;
|
|
4385
|
+
pause_children(child, transitions, transparent ? local : false);
|
|
4386
|
+
}
|
|
4387
|
+
child = sibling;
|
|
4388
|
+
}
|
|
4389
|
+
}
|
|
4390
|
+
/**
|
|
4391
|
+
* The opposite of `pause_effect`. We call this if (for example)
|
|
4392
|
+
* `x` becomes falsy then truthy: `{#if x}...{/if}`
|
|
4393
|
+
* @param {Effect} effect
|
|
4394
|
+
*/
|
|
4395
|
+
function resume_effect(effect) {
|
|
4396
|
+
resume_children(effect, true);
|
|
4397
|
+
}
|
|
4398
|
+
/**
|
|
4399
|
+
* @param {Effect} effect
|
|
4400
|
+
* @param {boolean} local
|
|
4401
|
+
*/
|
|
4402
|
+
function resume_children(effect, local) {
|
|
4403
|
+
if ((effect.f & 8192) === 0) return;
|
|
4404
|
+
effect.f ^= INERT;
|
|
4405
|
+
if ((effect.f & 1024) === 0) {
|
|
4406
|
+
set_signal_status(effect, DIRTY);
|
|
4407
|
+
Batch.ensure().schedule(effect);
|
|
4408
|
+
}
|
|
4409
|
+
var child = effect.first;
|
|
4410
|
+
while (child !== null) {
|
|
4411
|
+
var sibling = child.next;
|
|
4412
|
+
var transparent = (child.f & 65536) !== 0 || (child.f & 32) !== 0;
|
|
4413
|
+
resume_children(child, transparent ? local : false);
|
|
4414
|
+
child = sibling;
|
|
4415
|
+
}
|
|
4416
|
+
var t = effect.nodes && effect.nodes.t;
|
|
4417
|
+
if (t !== null) {
|
|
4418
|
+
for (const transition of t) if (transition.is_global || local) transition.in();
|
|
4419
|
+
}
|
|
4420
|
+
}
|
|
4421
|
+
function aborted(effect = active_effect) {
|
|
4422
|
+
return (effect.f & DESTROYED) !== 0;
|
|
4423
|
+
}
|
|
4424
|
+
/**
|
|
4425
|
+
* @param {Effect} effect
|
|
4426
|
+
* @param {DocumentFragment} fragment
|
|
4427
|
+
*/
|
|
4428
|
+
function move_effect(effect, fragment) {
|
|
4429
|
+
if (!effect.nodes) return;
|
|
4430
|
+
/** @type {TemplateNode | null} */
|
|
4431
|
+
var node = effect.nodes.start;
|
|
4432
|
+
var end = effect.nodes.end;
|
|
4433
|
+
while (node !== null) {
|
|
4434
|
+
/** @type {TemplateNode | null} */
|
|
4435
|
+
var next = node === end ? null : /* @__PURE__ */ get_next_sibling(node);
|
|
4436
|
+
fragment.append(node);
|
|
4437
|
+
node = next;
|
|
4438
|
+
}
|
|
4439
|
+
}
|
|
4440
|
+
//#endregion
|
|
4441
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/legacy.js
|
|
4442
|
+
/** @import { Value } from '#client' */
|
|
4443
|
+
/**
|
|
4444
|
+
* @type {Set<Value> | null}
|
|
4445
|
+
* @deprecated
|
|
4446
|
+
*/
|
|
4447
|
+
var captured_signals = null;
|
|
4448
|
+
/**
|
|
4449
|
+
* Capture an array of all the signals that are read when `fn` is called
|
|
4450
|
+
* @template T
|
|
4451
|
+
* @param {() => T} fn
|
|
4452
|
+
*/
|
|
4453
|
+
function capture_signals(fn) {
|
|
4454
|
+
var previous_captured_signals = captured_signals;
|
|
4455
|
+
try {
|
|
4456
|
+
captured_signals = /* @__PURE__ */ new Set();
|
|
4457
|
+
untrack(fn);
|
|
4458
|
+
if (previous_captured_signals !== null) for (var signal of captured_signals) previous_captured_signals.add(signal);
|
|
4459
|
+
return captured_signals;
|
|
4460
|
+
} finally {
|
|
4461
|
+
captured_signals = previous_captured_signals;
|
|
4462
|
+
}
|
|
4463
|
+
}
|
|
4464
|
+
/**
|
|
4465
|
+
* Invokes a function and captures all signals that are read during the invocation,
|
|
4466
|
+
* then invalidates them.
|
|
4467
|
+
* @param {() => any} fn
|
|
4468
|
+
* @deprecated
|
|
4469
|
+
*/
|
|
4470
|
+
function invalidate_inner_signals(fn) {
|
|
4471
|
+
for (var signal of capture_signals(fn)) internal_set(signal, signal.v);
|
|
4472
|
+
}
|
|
4473
|
+
//#endregion
|
|
4474
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/runtime.js
|
|
4475
|
+
/** @import { Derived, Effect, Reaction, Source, Value } from '#client' */
|
|
4476
|
+
var is_updating_effect = false;
|
|
4477
|
+
var is_destroying_effect = false;
|
|
4478
|
+
/** @param {boolean} value */
|
|
4479
|
+
function set_is_destroying_effect(value) {
|
|
4480
|
+
is_destroying_effect = value;
|
|
4481
|
+
}
|
|
4482
|
+
/** @type {null | Reaction} */
|
|
4483
|
+
var active_reaction = null;
|
|
4484
|
+
var untracking = false;
|
|
4485
|
+
/** @param {null | Reaction} reaction */
|
|
4486
|
+
function set_active_reaction(reaction) {
|
|
4487
|
+
active_reaction = reaction;
|
|
4488
|
+
}
|
|
4489
|
+
/** @type {null | Effect} */
|
|
4490
|
+
var active_effect = null;
|
|
4491
|
+
/** @param {null | Effect} effect */
|
|
4492
|
+
function set_active_effect(effect) {
|
|
4493
|
+
active_effect = effect;
|
|
4494
|
+
}
|
|
4495
|
+
/**
|
|
4496
|
+
* When sources are created within a reaction, reading and writing
|
|
4497
|
+
* them within that reaction should not cause a re-run
|
|
4498
|
+
* @type {null | Source[]}
|
|
4499
|
+
*/
|
|
4500
|
+
var current_sources = null;
|
|
4501
|
+
/** @param {Value} value */
|
|
4502
|
+
function push_reaction_value(value) {
|
|
4503
|
+
if (active_reaction !== null && (!async_mode_flag || (active_reaction.f & 2) !== 0)) if (current_sources === null) current_sources = [value];
|
|
4504
|
+
else current_sources.push(value);
|
|
4505
|
+
}
|
|
4506
|
+
/**
|
|
4507
|
+
* The dependencies of the reaction that is currently being executed. In many cases,
|
|
4508
|
+
* the dependencies are unchanged between runs, and so this will be `null` unless
|
|
4509
|
+
* and until a new dependency is accessed — we track this via `skipped_deps`
|
|
4510
|
+
* @type {null | Value[]}
|
|
4511
|
+
*/
|
|
4512
|
+
var new_deps = null;
|
|
4513
|
+
var skipped_deps = 0;
|
|
4514
|
+
/**
|
|
4515
|
+
* Tracks writes that the effect it's executed in doesn't listen to yet,
|
|
4516
|
+
* so that the dependency can be added to the effect later on if it then reads it
|
|
4517
|
+
* @type {null | Source[]}
|
|
4518
|
+
*/
|
|
4519
|
+
var untracked_writes = null;
|
|
4520
|
+
/** @param {null | Source[]} value */
|
|
4521
|
+
function set_untracked_writes(value) {
|
|
4522
|
+
untracked_writes = value;
|
|
4523
|
+
}
|
|
4524
|
+
/**
|
|
4525
|
+
* @type {number} Used by sources and deriveds for handling updates.
|
|
4526
|
+
* Version starts from 1 so that unowned deriveds differentiate between a created effect and a run one for tracing
|
|
4527
|
+
**/
|
|
4528
|
+
var write_version = 1;
|
|
4529
|
+
/** @type {number} Used to version each read of a source of derived to avoid duplicating depedencies inside a reaction */
|
|
4530
|
+
var read_version = 0;
|
|
4531
|
+
var update_version = read_version;
|
|
4532
|
+
/** @param {number} value */
|
|
4533
|
+
function set_update_version(value) {
|
|
4534
|
+
update_version = value;
|
|
4535
|
+
}
|
|
4536
|
+
function increment_write_version() {
|
|
4537
|
+
return ++write_version;
|
|
4538
|
+
}
|
|
4539
|
+
/**
|
|
4540
|
+
* Determines whether a derived or effect is dirty.
|
|
4541
|
+
* If it is MAYBE_DIRTY, will set the status to CLEAN
|
|
4542
|
+
* @param {Reaction} reaction
|
|
4543
|
+
* @returns {boolean}
|
|
4544
|
+
*/
|
|
4545
|
+
function is_dirty(reaction) {
|
|
4546
|
+
var flags = reaction.f;
|
|
4547
|
+
if ((flags & 2048) !== 0) return true;
|
|
4548
|
+
if (flags & 2) reaction.f &= ~WAS_MARKED;
|
|
4549
|
+
if ((flags & 4096) !== 0) {
|
|
4550
|
+
var dependencies = reaction.deps;
|
|
4551
|
+
var length = dependencies.length;
|
|
4552
|
+
for (var i = 0; i < length; i++) {
|
|
4553
|
+
var dependency = dependencies[i];
|
|
4554
|
+
if (is_dirty(dependency)) update_derived(dependency);
|
|
4555
|
+
if (dependency.wv > reaction.wv) return true;
|
|
4556
|
+
}
|
|
4557
|
+
if ((flags & 512) !== 0 && batch_values === null) set_signal_status(reaction, CLEAN);
|
|
4558
|
+
}
|
|
4559
|
+
return false;
|
|
4560
|
+
}
|
|
4561
|
+
/**
|
|
4562
|
+
* @param {Value} signal
|
|
4563
|
+
* @param {Effect} effect
|
|
4564
|
+
* @param {boolean} [root]
|
|
4565
|
+
*/
|
|
4566
|
+
function schedule_possible_effect_self_invalidation(signal, effect, root = true) {
|
|
4567
|
+
var reactions = signal.reactions;
|
|
4568
|
+
if (reactions === null) return;
|
|
4569
|
+
if (!async_mode_flag && current_sources !== null && includes.call(current_sources, signal)) return;
|
|
4570
|
+
for (var i = 0; i < reactions.length; i++) {
|
|
4571
|
+
var reaction = reactions[i];
|
|
4572
|
+
if ((reaction.f & 2) !== 0) schedule_possible_effect_self_invalidation(reaction, effect, false);
|
|
4573
|
+
else if (effect === reaction) {
|
|
4574
|
+
if (root) set_signal_status(reaction, DIRTY);
|
|
4575
|
+
else if ((reaction.f & 1024) !== 0) set_signal_status(reaction, MAYBE_DIRTY);
|
|
4576
|
+
schedule_effect(reaction);
|
|
4577
|
+
}
|
|
4578
|
+
}
|
|
4579
|
+
}
|
|
4580
|
+
/** @param {Reaction} reaction */
|
|
4581
|
+
function update_reaction(reaction) {
|
|
4582
|
+
var previous_deps = new_deps;
|
|
4583
|
+
var previous_skipped_deps = skipped_deps;
|
|
4584
|
+
var previous_untracked_writes = untracked_writes;
|
|
4585
|
+
var previous_reaction = active_reaction;
|
|
4586
|
+
var previous_sources = current_sources;
|
|
4587
|
+
var previous_component_context = component_context;
|
|
4588
|
+
var previous_untracking = untracking;
|
|
4589
|
+
var previous_update_version = update_version;
|
|
4590
|
+
var flags = reaction.f;
|
|
4591
|
+
new_deps = null;
|
|
4592
|
+
skipped_deps = 0;
|
|
4593
|
+
untracked_writes = null;
|
|
4594
|
+
active_reaction = (flags & 96) === 0 ? reaction : null;
|
|
4595
|
+
current_sources = null;
|
|
4596
|
+
set_component_context(reaction.ctx);
|
|
4597
|
+
untracking = false;
|
|
4598
|
+
update_version = ++read_version;
|
|
4599
|
+
if (reaction.ac !== null) {
|
|
4600
|
+
without_reactive_context(() => {
|
|
4601
|
+
/** @type {AbortController} */ reaction.ac.abort(STALE_REACTION);
|
|
4602
|
+
});
|
|
4603
|
+
reaction.ac = null;
|
|
4604
|
+
}
|
|
4605
|
+
try {
|
|
4606
|
+
reaction.f |= REACTION_IS_UPDATING;
|
|
4607
|
+
var fn = reaction.fn;
|
|
4608
|
+
var result = fn();
|
|
4609
|
+
reaction.f |= REACTION_RAN;
|
|
4610
|
+
var deps = reaction.deps;
|
|
4611
|
+
var is_fork = current_batch?.is_fork;
|
|
4612
|
+
if (new_deps !== null) {
|
|
4613
|
+
var i;
|
|
4614
|
+
if (!is_fork) remove_reactions(reaction, skipped_deps);
|
|
4615
|
+
if (deps !== null && skipped_deps > 0) {
|
|
4616
|
+
deps.length = skipped_deps + new_deps.length;
|
|
4617
|
+
for (i = 0; i < new_deps.length; i++) deps[skipped_deps + i] = new_deps[i];
|
|
4618
|
+
} else reaction.deps = deps = new_deps;
|
|
4619
|
+
if (effect_tracking() && (reaction.f & 512) !== 0) for (i = skipped_deps; i < deps.length; i++) (deps[i].reactions ??= []).push(reaction);
|
|
4620
|
+
} else if (!is_fork && deps !== null && skipped_deps < deps.length) {
|
|
4621
|
+
remove_reactions(reaction, skipped_deps);
|
|
4622
|
+
deps.length = skipped_deps;
|
|
4623
|
+
}
|
|
4624
|
+
if (is_runes() && untracked_writes !== null && !untracking && deps !== null && (reaction.f & 6146) === 0) for (i = 0; i < untracked_writes.length; i++) schedule_possible_effect_self_invalidation(untracked_writes[i], reaction);
|
|
4625
|
+
if (previous_reaction !== null && previous_reaction !== reaction) {
|
|
4626
|
+
read_version++;
|
|
4627
|
+
if (previous_reaction.deps !== null) for (let i = 0; i < previous_skipped_deps; i += 1) previous_reaction.deps[i].rv = read_version;
|
|
4628
|
+
if (previous_deps !== null) for (const dep of previous_deps) dep.rv = read_version;
|
|
4629
|
+
if (untracked_writes !== null) if (previous_untracked_writes === null) previous_untracked_writes = untracked_writes;
|
|
4630
|
+
else previous_untracked_writes.push(...untracked_writes);
|
|
4631
|
+
}
|
|
4632
|
+
if ((reaction.f & 8388608) !== 0) reaction.f ^= ERROR_VALUE;
|
|
4633
|
+
return result;
|
|
4634
|
+
} catch (error) {
|
|
4635
|
+
return handle_error(error);
|
|
4636
|
+
} finally {
|
|
4637
|
+
reaction.f ^= REACTION_IS_UPDATING;
|
|
4638
|
+
new_deps = previous_deps;
|
|
4639
|
+
skipped_deps = previous_skipped_deps;
|
|
4640
|
+
untracked_writes = previous_untracked_writes;
|
|
4641
|
+
active_reaction = previous_reaction;
|
|
4642
|
+
current_sources = previous_sources;
|
|
4643
|
+
set_component_context(previous_component_context);
|
|
4644
|
+
untracking = previous_untracking;
|
|
4645
|
+
update_version = previous_update_version;
|
|
4646
|
+
}
|
|
4647
|
+
}
|
|
4648
|
+
/**
|
|
4649
|
+
* @template V
|
|
4650
|
+
* @param {Reaction} signal
|
|
4651
|
+
* @param {Value<V>} dependency
|
|
4652
|
+
* @returns {void}
|
|
4653
|
+
*/
|
|
4654
|
+
function remove_reaction(signal, dependency) {
|
|
4655
|
+
let reactions = dependency.reactions;
|
|
4656
|
+
if (reactions !== null) {
|
|
4657
|
+
var index = index_of.call(reactions, signal);
|
|
4658
|
+
if (index !== -1) {
|
|
4659
|
+
var new_length = reactions.length - 1;
|
|
4660
|
+
if (new_length === 0) reactions = dependency.reactions = null;
|
|
4661
|
+
else {
|
|
4662
|
+
reactions[index] = reactions[new_length];
|
|
4663
|
+
reactions.pop();
|
|
4664
|
+
}
|
|
4665
|
+
}
|
|
4666
|
+
}
|
|
4667
|
+
if (reactions === null && (dependency.f & 2) !== 0 && (new_deps === null || !includes.call(new_deps, dependency))) {
|
|
4668
|
+
var derived = dependency;
|
|
4669
|
+
if ((derived.f & 512) !== 0) {
|
|
4670
|
+
derived.f ^= 512;
|
|
4671
|
+
derived.f &= ~WAS_MARKED;
|
|
4672
|
+
}
|
|
4673
|
+
if (derived.v !== UNINITIALIZED) update_derived_status(derived);
|
|
4674
|
+
freeze_derived_effects(derived);
|
|
4675
|
+
remove_reactions(derived, 0);
|
|
4676
|
+
}
|
|
4677
|
+
}
|
|
4678
|
+
/**
|
|
4679
|
+
* @param {Reaction} signal
|
|
4680
|
+
* @param {number} start_index
|
|
4681
|
+
* @returns {void}
|
|
4682
|
+
*/
|
|
4683
|
+
function remove_reactions(signal, start_index) {
|
|
4684
|
+
var dependencies = signal.deps;
|
|
4685
|
+
if (dependencies === null) return;
|
|
4686
|
+
for (var i = start_index; i < dependencies.length; i++) remove_reaction(signal, dependencies[i]);
|
|
4687
|
+
}
|
|
4688
|
+
/**
|
|
4689
|
+
* @param {Effect} effect
|
|
4690
|
+
* @returns {void}
|
|
4691
|
+
*/
|
|
4692
|
+
function update_effect(effect) {
|
|
4693
|
+
var flags = effect.f;
|
|
4694
|
+
if ((flags & 16384) !== 0) return;
|
|
4695
|
+
set_signal_status(effect, CLEAN);
|
|
4696
|
+
var previous_effect = active_effect;
|
|
4697
|
+
var was_updating_effect = is_updating_effect;
|
|
4698
|
+
active_effect = effect;
|
|
4699
|
+
is_updating_effect = true;
|
|
4700
|
+
var previous_component_fn = dev_current_component_function;
|
|
4701
|
+
set_dev_current_component_function(effect.component_function);
|
|
4702
|
+
var previous_stack = dev_stack;
|
|
4703
|
+
set_dev_stack(effect.dev_stack ?? dev_stack);
|
|
4704
|
+
try {
|
|
4705
|
+
if ((flags & 16777232) !== 0) destroy_block_effect_children(effect);
|
|
4706
|
+
else destroy_effect_children(effect);
|
|
4707
|
+
execute_effect_teardown(effect);
|
|
4708
|
+
var teardown = update_reaction(effect);
|
|
4709
|
+
effect.teardown = typeof teardown === "function" ? teardown : null;
|
|
4710
|
+
effect.wv = write_version;
|
|
4711
|
+
if (tracing_mode_flag && (effect.f & 2048) !== 0 && effect.deps !== null) {
|
|
4712
|
+
for (var dep of effect.deps) if (dep.set_during_effect) {
|
|
4713
|
+
dep.wv = increment_write_version();
|
|
4714
|
+
dep.set_during_effect = false;
|
|
4715
|
+
}
|
|
4716
|
+
}
|
|
4717
|
+
} finally {
|
|
4718
|
+
is_updating_effect = was_updating_effect;
|
|
4719
|
+
active_effect = previous_effect;
|
|
4720
|
+
set_dev_current_component_function(previous_component_fn);
|
|
4721
|
+
set_dev_stack(previous_stack);
|
|
4722
|
+
}
|
|
4723
|
+
}
|
|
4724
|
+
/**
|
|
4725
|
+
* Returns a promise that resolves once any pending state changes have been applied.
|
|
4726
|
+
* @returns {Promise<void>}
|
|
4727
|
+
*/
|
|
4728
|
+
async function tick() {
|
|
4729
|
+
if (async_mode_flag) return new Promise((f) => {
|
|
4730
|
+
requestAnimationFrame(() => f());
|
|
4731
|
+
setTimeout(() => f());
|
|
4732
|
+
});
|
|
4733
|
+
await Promise.resolve();
|
|
4734
|
+
flushSync();
|
|
4735
|
+
}
|
|
4736
|
+
/**
|
|
4737
|
+
* @template V
|
|
4738
|
+
* @param {Value<V>} signal
|
|
4739
|
+
* @returns {V}
|
|
4740
|
+
*/
|
|
4741
|
+
function get(signal) {
|
|
4742
|
+
var is_derived = (signal.f & 2) !== 0;
|
|
4743
|
+
captured_signals?.add(signal);
|
|
4744
|
+
if (active_reaction !== null && !untracking) {
|
|
4745
|
+
if (!(active_effect !== null && (active_effect.f & 16384) !== 0) && (current_sources === null || !includes.call(current_sources, signal))) {
|
|
4746
|
+
var deps = active_reaction.deps;
|
|
4747
|
+
if ((active_reaction.f & 2097152) !== 0) {
|
|
4748
|
+
if (signal.rv < read_version) {
|
|
4749
|
+
signal.rv = read_version;
|
|
4750
|
+
if (new_deps === null && deps !== null && deps[skipped_deps] === signal) skipped_deps++;
|
|
4751
|
+
else if (new_deps === null) new_deps = [signal];
|
|
4752
|
+
else new_deps.push(signal);
|
|
4753
|
+
}
|
|
4754
|
+
} else {
|
|
4755
|
+
active_reaction.deps ??= [];
|
|
4756
|
+
if (!includes.call(active_reaction.deps, signal)) active_reaction.deps.push(signal);
|
|
4757
|
+
var reactions = signal.reactions;
|
|
4758
|
+
if (reactions === null) signal.reactions = [active_reaction];
|
|
4759
|
+
else if (!includes.call(reactions, active_reaction)) reactions.push(active_reaction);
|
|
4760
|
+
}
|
|
4761
|
+
}
|
|
4762
|
+
}
|
|
4763
|
+
if (!untracking && reactivity_loss_tracker && !reactivity_loss_tracker.warned && (reactivity_loss_tracker.effect.f & 2097152) === 0 && !reactivity_loss_tracker.effect_deps.has(signal)) {
|
|
4764
|
+
reactivity_loss_tracker.warned = true;
|
|
4765
|
+
await_reactivity_loss(signal.label);
|
|
4766
|
+
var trace = get_error("traced at");
|
|
4767
|
+
if (trace) console.warn(trace);
|
|
4768
|
+
}
|
|
4769
|
+
recent_async_deriveds.delete(signal);
|
|
4770
|
+
if (tracing_mode_flag && !untracking && tracing_expressions !== null && active_reaction !== null && tracing_expressions.reaction === active_reaction) if (signal.trace) signal.trace();
|
|
4771
|
+
else {
|
|
4772
|
+
trace = get_error("traced at");
|
|
4773
|
+
if (trace) {
|
|
4774
|
+
var entry = tracing_expressions.entries.get(signal);
|
|
4775
|
+
if (entry === void 0) {
|
|
4776
|
+
entry = { traces: [] };
|
|
4777
|
+
tracing_expressions.entries.set(signal, entry);
|
|
4778
|
+
}
|
|
4779
|
+
var last = entry.traces[entry.traces.length - 1];
|
|
4780
|
+
if (trace.stack !== last?.stack) entry.traces.push(trace);
|
|
4781
|
+
}
|
|
4782
|
+
}
|
|
4783
|
+
if (is_destroying_effect && old_values.has(signal)) return old_values.get(signal);
|
|
4784
|
+
if (is_derived) {
|
|
4785
|
+
var derived = signal;
|
|
4786
|
+
if (is_destroying_effect) {
|
|
4787
|
+
var value = derived.v;
|
|
4788
|
+
if ((derived.f & 1024) === 0 && derived.reactions !== null || depends_on_old_values(derived)) value = execute_derived(derived);
|
|
4789
|
+
old_values.set(derived, value);
|
|
4790
|
+
return value;
|
|
4791
|
+
}
|
|
4792
|
+
var should_connect = (derived.f & 512) === 0 && !untracking && active_reaction !== null && (is_updating_effect || (active_reaction.f & 512) !== 0);
|
|
4793
|
+
var is_new = (derived.f & REACTION_RAN) === 0;
|
|
4794
|
+
if (is_dirty(derived)) {
|
|
4795
|
+
if (should_connect) derived.f |= 512;
|
|
4796
|
+
update_derived(derived);
|
|
4797
|
+
}
|
|
4798
|
+
if (should_connect && !is_new) {
|
|
4799
|
+
unfreeze_derived_effects(derived);
|
|
4800
|
+
reconnect(derived);
|
|
4801
|
+
}
|
|
4802
|
+
}
|
|
4803
|
+
if (batch_values?.has(signal)) return batch_values.get(signal);
|
|
4804
|
+
if ((signal.f & 8388608) !== 0) throw signal.v;
|
|
4805
|
+
return signal.v;
|
|
4806
|
+
}
|
|
4807
|
+
/**
|
|
4808
|
+
* (Re)connect a disconnected derived, so that it is notified
|
|
4809
|
+
* of changes in `mark_reactions`
|
|
4810
|
+
* @param {Derived} derived
|
|
4811
|
+
*/
|
|
4812
|
+
function reconnect(derived) {
|
|
4813
|
+
derived.f |= 512;
|
|
4814
|
+
if (derived.deps === null) return;
|
|
4815
|
+
for (const dep of derived.deps) {
|
|
4816
|
+
(dep.reactions ??= []).push(derived);
|
|
4817
|
+
if ((dep.f & 2) !== 0 && (dep.f & 512) === 0) {
|
|
4818
|
+
unfreeze_derived_effects(dep);
|
|
4819
|
+
reconnect(dep);
|
|
4820
|
+
}
|
|
4821
|
+
}
|
|
4822
|
+
}
|
|
4823
|
+
/** @param {Derived} derived */
|
|
4824
|
+
function depends_on_old_values(derived) {
|
|
4825
|
+
if (derived.v === UNINITIALIZED) return true;
|
|
4826
|
+
if (derived.deps === null) return false;
|
|
4827
|
+
for (const dep of derived.deps) {
|
|
4828
|
+
if (old_values.has(dep)) return true;
|
|
4829
|
+
if ((dep.f & 2) !== 0 && depends_on_old_values(dep)) return true;
|
|
4830
|
+
}
|
|
4831
|
+
return false;
|
|
4832
|
+
}
|
|
4833
|
+
/**
|
|
4834
|
+
* Like `get`, but checks for `undefined`. Used for `var` declarations because they can be accessed before being declared
|
|
4835
|
+
* @template V
|
|
4836
|
+
* @param {Value<V> | undefined} signal
|
|
4837
|
+
* @returns {V | undefined}
|
|
4838
|
+
*/
|
|
4839
|
+
function safe_get(signal) {
|
|
4840
|
+
return signal && get(signal);
|
|
4841
|
+
}
|
|
4842
|
+
/**
|
|
4843
|
+
* When used inside a [`$derived`](https://svelte.dev/docs/svelte/$derived) or [`$effect`](https://svelte.dev/docs/svelte/$effect),
|
|
4844
|
+
* any state read inside `fn` will not be treated as a dependency.
|
|
4845
|
+
*
|
|
4846
|
+
* ```ts
|
|
4847
|
+
* $effect(() => {
|
|
4848
|
+
* // this will run when `data` changes, but not when `time` changes
|
|
4849
|
+
* save(data, {
|
|
4850
|
+
* timestamp: untrack(() => time)
|
|
4851
|
+
* });
|
|
4852
|
+
* });
|
|
4853
|
+
* ```
|
|
4854
|
+
* @template T
|
|
4855
|
+
* @param {() => T} fn
|
|
4856
|
+
* @returns {T}
|
|
4857
|
+
*/
|
|
4858
|
+
function untrack(fn) {
|
|
4859
|
+
var previous_untracking = untracking;
|
|
4860
|
+
try {
|
|
4861
|
+
untracking = true;
|
|
4862
|
+
return fn();
|
|
4863
|
+
} finally {
|
|
4864
|
+
untracking = previous_untracking;
|
|
4865
|
+
}
|
|
4866
|
+
}
|
|
4867
|
+
/**
|
|
4868
|
+
* Possibly traverse an object and read all its properties so that they're all reactive in case this is `$state`.
|
|
4869
|
+
* Does only check first level of an object for performance reasons (heuristic should be good for 99% of all cases).
|
|
4870
|
+
* @param {any} value
|
|
4871
|
+
* @returns {void}
|
|
4872
|
+
*/
|
|
4873
|
+
function deep_read_state(value) {
|
|
4874
|
+
if (typeof value !== "object" || !value || value instanceof EventTarget) return;
|
|
4875
|
+
if (STATE_SYMBOL in value) deep_read(value);
|
|
4876
|
+
else if (!Array.isArray(value)) for (let key in value) {
|
|
4877
|
+
const prop = value[key];
|
|
4878
|
+
if (typeof prop === "object" && prop && STATE_SYMBOL in prop) deep_read(prop);
|
|
4879
|
+
}
|
|
4880
|
+
}
|
|
4881
|
+
/**
|
|
4882
|
+
* Deeply traverse an object and read all its properties
|
|
4883
|
+
* so that they're all reactive in case this is `$state`
|
|
4884
|
+
* @param {any} value
|
|
4885
|
+
* @param {Set<any>} visited
|
|
4886
|
+
* @returns {void}
|
|
4887
|
+
*/
|
|
4888
|
+
function deep_read(value, visited = /* @__PURE__ */ new Set()) {
|
|
4889
|
+
if (typeof value === "object" && value !== null && !(value instanceof EventTarget) && !visited.has(value)) {
|
|
4890
|
+
visited.add(value);
|
|
4891
|
+
if (value instanceof Date) value.getTime();
|
|
4892
|
+
for (let key in value) try {
|
|
4893
|
+
deep_read(value[key], visited);
|
|
4894
|
+
} catch (e) {}
|
|
4895
|
+
const proto = get_prototype_of(value);
|
|
4896
|
+
if (proto !== Object.prototype && proto !== Array.prototype && proto !== Map.prototype && proto !== Set.prototype && proto !== Date.prototype) {
|
|
4897
|
+
const descriptors = get_descriptors(proto);
|
|
4898
|
+
for (let key in descriptors) {
|
|
4899
|
+
const get = descriptors[key].get;
|
|
4900
|
+
if (get) try {
|
|
4901
|
+
get.call(value);
|
|
4902
|
+
} catch (e) {}
|
|
4903
|
+
}
|
|
4904
|
+
}
|
|
4905
|
+
}
|
|
4906
|
+
}
|
|
4907
|
+
//#endregion
|
|
4908
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/store/utils.js
|
|
4909
|
+
/** @import { Readable } from './public' */
|
|
4910
|
+
/**
|
|
4911
|
+
* @template T
|
|
4912
|
+
* @param {Readable<T> | null | undefined} store
|
|
4913
|
+
* @param {(value: T) => void} run
|
|
4914
|
+
* @param {(value: T) => void} [invalidate]
|
|
4915
|
+
* @returns {() => void}
|
|
4916
|
+
*/
|
|
4917
|
+
function subscribe_to_store(store, run, invalidate) {
|
|
4918
|
+
if (store == null) {
|
|
4919
|
+
run(void 0);
|
|
4920
|
+
if (invalidate) invalidate(void 0);
|
|
4921
|
+
return noop;
|
|
4922
|
+
}
|
|
4923
|
+
const unsub = untrack(() => store.subscribe(run, invalidate));
|
|
4924
|
+
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
|
|
4925
|
+
}
|
|
4926
|
+
//#endregion
|
|
4927
|
+
export { get_next_sibling as $, STALE_REACTION as $n, readonly as $t, render_effect as A, each_key_duplicate as An, wait as At, add_form_reset_listener as B, CLASS_CACHE as Bn, capture_store_binding as Bt, effect_tracking as C, reset as Cn, lifecycle_outside_component as Cr, flatten as Ct, move_effect as D, bind_invalid_checkbox_value as Dn, svelte_element_invalid_this_value as Dr, save as Dt, managed as E, skip_nodes as En, store_invalid_shape as Er, run_after_blockers as Et, user_pre_effect as F, props_rest_readonly as Fn, current_batch as Ft, child as G, FORM_RESET_HANDLER as Gn, store_mutate as Gt, remove_textarea_child as H, DESTROYING as Hn, mark_store_binding as Ht, validate_effect as I, rune_outside_svelte as In, eager as It, create_element as J, INERT as Jn, update_pre_store as Jt, clear_text_content as K, HEAD_EFFECT as Kn, store_set as Kt, listen as L, get_error as Ln, flushSync as Lt, teardown as M, hydration_failed as Mn, pending as Mt, template_effect as N, invalid_snippet as Nn, createSubscriber as Nt, pause_effect as O, component_api_changed as On, track_reactivity_loss as Ot, user_effect as P, props_invalid_value as Pn, Batch as Pt, get_first_child as Q, REACTION_RAN as Qn, readable as Qt, listen_to_event_and_reset_event as R, get_stack as Rn, is_flushing_sync as Rt, effect_root as S, read_hydration_instruction as Sn, invalid_snippet_arguments as Sr, capture as St, legacy_pre_effect_reset as T, set_hydrating as Tn, snippet_without_render_tag as Tr, run as Tt, $document as U, EFFECT_OFFSCREEN as Un, setup_stores as Ut, autofocus as V, DESTROYED as Vn, invalidate_store as Vt, $window as W, EFFECT_TRANSPARENT as Wn, store_get as Wt, create_text as X, LEGACY_PROPS as Xn, derived$1 as Xt, create_fragment as Y, IS_XHTML as Yn, update_store as Yt, first_child as Z, LOADING_ATTR_SYMBOL as Zn, get$1 as Zt, component_root as _, hydrate_next as _n, run$1 as _r, update_pre as _t, deep_read_state as a, dev_current_component_function as an, define_property as ar, sibling as at, eager_effect as b, hydrating as bn, experimental_async_required as br, derived_safe_equal as bt, safe_get as c, pop as cn, get_descriptor as cr, is as ct, tick as d, tag as dn, has_own_property as dr, mutable_source as dt, writable as en, STATE_SYMBOL as er, init_operations as et, untrack as f, tag_proxy as fn, is_array as fr, mutate as ft, branch as g, safe_not_equal as gn, object_keys as gr, update as gt, block as h, dynamic_void_element_content as hn, noop as hr, state as ht, deep_read as i, component_context as in, deferred as ir, should_defer_append as it, resume_effect as j, each_key_volatile as jn, boundary as jt, remove_effect_dom as k, component_api_invalid_new as kn, unset_context as kt, set_active_effect as l, push as ln, get_descriptors as lr, proxy as lt, aborted as m, snapshot as mn, is_promise as mr, source as mt, active_effect as n, queue_micro_task as nn, TEXT_CACHE as nr, merge_text_nodes as nt, get as o, dev_stack as on, exclude_from_object as or, equals as ot, invalidate_inner_signals as p, trace as pn, is_function as pr, set as pt, create_comment as q, HMR_ANCHOR as qn, store_unsub as qt, active_reaction as r, add_svelte_meta as rn, array_from as rr, set_attribute as rt, is_destroying_effect as s, is_runes as sn, fallback as sr, strict_equals as st, subscribe_to_store as t, invoke_error_boundary as tn, STYLE_CACHE as tr, is_firefox as tt, set_active_reaction as u, set_dev_current_component_function as un, get_prototype_of as ur, internal_set as ut, deferred_template_effect as v, hydrate_node as vn, run_all as vr, async_derived as vt, legacy_pre_effect as w, set_hydrate_node as wn, missing_context as wr, for_await_track_reactivity_loss as wt, effect as x, next as xn, invalid_default_snippet as xr, user_derived as xt, destroy_effect as y, hydrate_template as yn, to_array as yr, derived as yt, without_reactive_context as z, ATTRIBUTES_CACHE as zn, previous_batch as zt };
|
|
4928
|
+
|
|
4929
|
+
//# sourceMappingURL=utils-mR9mAWyK.js.map
|