@svgrid/grid 2.2.33 → 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/FlexRender.svelte +96 -96
- package/dist/GridFooter.svelte +178 -139
- package/dist/GridMenus.svelte +705 -705
- 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/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 -3490
- package/dist/SvGridChart.svelte +1716 -1716
- package/dist/SvGridChartPanel.svelte +485 -485
- package/dist/SvGridChartView.svelte +70 -70
- package/dist/SvGridDropdown.svelte +728 -728
- package/dist/SvGridSelect.svelte +266 -266
- package/dist/SvGroupCell.svelte +116 -116
- 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/SvMultiSelect.svelte +289 -289
- 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 -211
- 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 -208
- package/dist/SvTree.svelte +444 -444
- package/dist/SvTreeSelect.svelte +235 -235
- package/dist/cdn/{GridMenus-B7XhhqdN.js → GridMenus-BpVcKyUr.js} +4 -4
- package/dist/cdn/{GridMenus-BxmIvCJh.js → GridMenus-CeXL5IW4.js} +153 -150
- package/dist/cdn/{SvDateTimePicker-ClqtVIj3.js → SvDateTimePicker-DSUhIta8.js} +165 -165
- package/dist/cdn/{SvDateTimePicker-o94wfSUa.js → SvDateTimePicker-h9kPyszT.js} +572 -555
- package/dist/cdn/{SvGridChart-Cr_90pPD.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-ICbxiUvK.js → SvGridChartPanel-e5_nqNP9.js} +20 -12
- package/dist/cdn/{SvGridChartView-Bx42PMvf.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-CUOdm7YA.js → SvGridDropdown-CtdbHcIS.js} +6 -5
- package/dist/cdn/{chart-T1usDN0o.js → chart-i4XcXyHJ.js} +12 -10
- package/dist/cdn/{disclose-version-DljhZohK.js → disclose-version-Dr7rEVv-.js} +989 -1081
- package/dist/cdn/{export-format-JT5pWVT8.js → export-format-Cv1Dll6k.js} +66 -245
- package/dist/cdn/{src-erjBRYfX.js → src-DbeN1ReZ.js} +9221 -8925
- package/dist/cdn/{src-ktbQVOk-.js → src-DmEQFW5_.js} +9021 -8809
- 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/columns.js +9 -2
- 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/package.json +11 -11
- package/src/FlexRender.svelte +96 -96
- package/src/GridFooter.svelte +178 -139
- package/src/GridMenus.svelte +705 -705
- 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/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 -3680
- package/src/SvGrid.css +2814 -2804
- package/src/SvGrid.svelte +3490 -3490
- package/src/SvGrid.types.ts +1708 -1708
- package/src/SvGridChart.svelte +1716 -1716
- package/src/SvGridChartPanel.svelte +485 -485
- package/src/SvGridChartView.svelte +70 -70
- package/src/SvGridDropdown.svelte +728 -728
- package/src/SvGridSelect.svelte +266 -266
- package/src/SvGroupCell.svelte +116 -116
- 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/SvMultiSelect.svelte +289 -289
- 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 -211
- 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 -208
- package/src/SvTree.svelte +444 -444
- package/src/SvTreeSelect.svelte +235 -235
- 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 -805
- package/src/builtin-editors.grid.test.ts +85 -85
- package/src/cell-formatting.ts +169 -169
- package/src/cell-render.test.ts +513 -513
- package/src/cell-render.ts +496 -496
- 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 -2295
- package/src/collaboration.test.ts +104 -104
- package/src/collaboration.ts +167 -167
- package/src/columns.ts +7 -2
- 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 -224
- 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 -606
- package/src/editor-contract.ts +164 -164
- package/src/editor-registry.grid.test.ts +144 -144
- 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 -601
- 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.ts +270 -270
- 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.ts +567 -567
- package/src/merge-objects.ts +48 -48
- 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-resize.ts +210 -210
- package/src/scheduler-model.test.ts +562 -562
- package/src/scheduler-model.ts +872 -872
- package/src/selection.test.ts +754 -754
- package/src/selection.ts +491 -491
- package/src/server-data-source.test.ts +289 -289
- package/src/server-data-source.ts +413 -413
- 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/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 -705
- package/src/svgrid.charting.test.ts +534 -534
- 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 -168
- 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
|
@@ -0,0 +1,3843 @@
|
|
|
1
|
+
import { $ as get_next_sibling, A as render_effect, An as each_key_duplicate, B as add_form_reset_listener, Bn as CLASS_CACHE, Bt as capture_store_binding, Cn as reset, Ct as flatten, D as move_effect, Dn as bind_invalid_checkbox_value, E as managed, En as skip_nodes, Et as run_after_blockers, F as user_pre_effect, Fn as props_rest_readonly, Ft as current_batch, Gn as FORM_RESET_HANDLER, I as validate_effect, In as rune_outside_svelte, J as create_element, K as clear_text_content, Kn as HEAD_EFFECT, L as listen, Ln as get_error, Lt as flushSync, M as teardown, N as template_effect, Nn as invalid_snippet, O as pause_effect, On as component_api_changed, P as user_effect, Pn as props_invalid_value, Pt as Batch, Q as get_first_child, R as listen_to_event_and_reset_event, Rt as is_flushing_sync, S as effect_root, Sn as read_hydration_instruction, Sr as invalid_snippet_arguments, St as capture, Tn as set_hydrating, Un as EFFECT_OFFSCREEN, V as autofocus, Wn as EFFECT_TRANSPARENT, X as create_text, Xn as LEGACY_PROPS, Yn as IS_XHTML, Zn as LOADING_ATTR_SYMBOL, _n as hydrate_next, _r as run, a as deep_read_state, an as dev_current_component_function, ar as define_property, b as eager_effect, bn as hydrating, bt as derived_safe_equal, cr as get_descriptor, ct as is, d as tick, dn as tag, dt as mutable_source, er as STATE_SYMBOL, f as untrack, fr as is_array, g as branch, gn as safe_not_equal, gr as object_keys, gt as update, h as block, hr as noop, in as component_context, it as should_defer_append, j as resume_effect, jn as each_key_volatile, k as remove_effect_dom, kn as component_api_invalid_new, kt as unset_context, l as set_active_effect, lr as get_descriptors, lt as proxy, mn as snapshot, mr as is_promise, mt as source, n as active_effect, nn as queue_micro_task, o as get, on as dev_stack, pr as is_function, pt as set, q as create_comment, qn as HMR_ANCHOR, r as active_reaction, rr as array_from, s as is_destroying_effect, sn as is_runes, tr as STYLE_CACHE, u as set_active_reaction, un as set_dev_current_component_function, ur as get_prototype_of, ut as internal_set, vn as hydrate_node, vr as run_all, wn as set_hydrate_node, x as effect, y as destroy_effect, yt as derived, z as without_reactive_context, zn as ATTRIBUTES_CACHE, zt as previous_batch } from "./utils-mR9mAWyK.js";
|
|
2
|
+
import { a as legacy_mode_flag, t as async_mode_flag } from "./flags-BD-lYX7s.js";
|
|
3
|
+
import { c as NAMESPACE_SVG, i as HYDRATION_ERROR, l as UNINITIALIZED, n as FILENAME, o as NAMESPACE_HTML, r as HMR, s as NAMESPACE_MATHML, t as ATTACHMENT_KEY } from "./constants-RLNOXCpz.js";
|
|
4
|
+
import { f as is_raw_text_element, i as hash, n as can_delegate_event, o as is_capture_event, v as normalize_attribute, y as sanitize_location } from "./utils-lObbumRX.js";
|
|
5
|
+
import { c as to_style, o as clsx, s as to_class, t as prevent_snippet_stringification } from "./validate-CezNmRkM.js";
|
|
6
|
+
import { a as console_log_state, c as hydration_attribute_changed, f as ownership_invalid_binding, i as binding_property_non_reactive, l as hydration_html_changed, m as select_multiple_invalid_value, p as ownership_invalid_mutation, t as assignment_value_stale, u as hydration_mismatch } from "./warnings-yiExAB06.js";
|
|
7
|
+
import { a as delegated, i as delegate, r as create_event } from "./events-CDC4DKuQ.js";
|
|
8
|
+
import { S as create_trusted_html, d as should_intro, f as append, l as set_should_intro, n as createClassComponent, p as assign_nodes } from "./legacy-client-B0ZUlbSQ.js";
|
|
9
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dev/assign.js
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
* @param {any} a
|
|
13
|
+
* @param {any} b
|
|
14
|
+
* @param {string} property
|
|
15
|
+
* @param {string} location
|
|
16
|
+
*/
|
|
17
|
+
function compare(a, b, property, location) {
|
|
18
|
+
if (a !== b && typeof b === "object" && STATE_SYMBOL in b) assignment_value_stale(property, sanitize_location(location));
|
|
19
|
+
return a;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @param {any} object
|
|
23
|
+
* @param {string} property
|
|
24
|
+
* @param {string} operator
|
|
25
|
+
* @param {any} rhs
|
|
26
|
+
* @param {string} location
|
|
27
|
+
*/
|
|
28
|
+
function assign(object, property, operator, rhs, location) {
|
|
29
|
+
return compare(operator === "=" ? object[property] = rhs : operator === "&&=" ? object[property] &&= rhs() : operator === "||=" ? object[property] ||= rhs() : operator === "??=" ? object[property] ??= rhs() : null, untrack(() => object[property]), property, location);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @param {any} object
|
|
33
|
+
* @param {string} property
|
|
34
|
+
* @param {string} operator
|
|
35
|
+
* @param {any} rhs
|
|
36
|
+
* @param {string} location
|
|
37
|
+
*/
|
|
38
|
+
async function assign_async(object, property, operator, rhs, location) {
|
|
39
|
+
return compare(operator === "=" ? object[property] = await rhs : operator === "&&=" ? object[property] &&= await rhs() : operator === "||=" ? object[property] ||= await rhs() : operator === "??=" ? object[property] ??= await rhs() : null, untrack(() => object[property]), property, location);
|
|
40
|
+
}
|
|
41
|
+
//#endregion
|
|
42
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dev/css.js
|
|
43
|
+
/** @type {Map<String, Set<HTMLStyleElement>>} */
|
|
44
|
+
var all_styles = /* @__PURE__ */ new Map();
|
|
45
|
+
/**
|
|
46
|
+
* @param {String} hash
|
|
47
|
+
* @param {HTMLStyleElement} style
|
|
48
|
+
*/
|
|
49
|
+
function register_style(hash, style) {
|
|
50
|
+
var styles = all_styles.get(hash);
|
|
51
|
+
if (!styles) {
|
|
52
|
+
styles = /* @__PURE__ */ new Set();
|
|
53
|
+
all_styles.set(hash, styles);
|
|
54
|
+
}
|
|
55
|
+
styles.add(style);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* @param {String} hash
|
|
59
|
+
*/
|
|
60
|
+
function cleanup_styles(hash) {
|
|
61
|
+
var styles = all_styles.get(hash);
|
|
62
|
+
if (!styles) return;
|
|
63
|
+
for (const style of styles) style.remove();
|
|
64
|
+
all_styles.delete(hash);
|
|
65
|
+
}
|
|
66
|
+
//#endregion
|
|
67
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dev/elements.js
|
|
68
|
+
/** @import { SourceLocation } from '#client' */
|
|
69
|
+
/**
|
|
70
|
+
* @param {any} fn
|
|
71
|
+
* @param {string} filename
|
|
72
|
+
* @param {SourceLocation[]} locations
|
|
73
|
+
* @returns {any}
|
|
74
|
+
*/
|
|
75
|
+
function add_locations(fn, filename, locations) {
|
|
76
|
+
return (...args) => {
|
|
77
|
+
const dom = fn(...args);
|
|
78
|
+
assign_locations(hydrating ? dom : dom.nodeType === 11 ? dom.firstChild : dom, filename, locations);
|
|
79
|
+
return dom;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* @param {Element} element
|
|
84
|
+
* @param {string} filename
|
|
85
|
+
* @param {SourceLocation} location
|
|
86
|
+
*/
|
|
87
|
+
function assign_location(element, filename, location) {
|
|
88
|
+
element.__svelte_meta = {
|
|
89
|
+
parent: dev_stack,
|
|
90
|
+
loc: {
|
|
91
|
+
file: filename,
|
|
92
|
+
line: location[0],
|
|
93
|
+
column: location[1]
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
if (location[2]) assign_locations(element.firstChild, filename, location[2]);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* @param {Node | null} node
|
|
100
|
+
* @param {string} filename
|
|
101
|
+
* @param {SourceLocation[]} locations
|
|
102
|
+
*/
|
|
103
|
+
function assign_locations(node, filename, locations) {
|
|
104
|
+
var i = 0;
|
|
105
|
+
var depth = 0;
|
|
106
|
+
while (node && i < locations.length) {
|
|
107
|
+
if (hydrating && node.nodeType === 8) {
|
|
108
|
+
var comment = node;
|
|
109
|
+
if (comment.data[0] === "[") depth += 1;
|
|
110
|
+
else if (comment.data[0] === "]") depth -= 1;
|
|
111
|
+
}
|
|
112
|
+
if (depth === 0 && node.nodeType === 1) assign_location(node, filename, locations[i++]);
|
|
113
|
+
node = node.nextSibling;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//#endregion
|
|
117
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dev/hmr.js
|
|
118
|
+
/** @import { Effect, TemplateNode } from '#client' */
|
|
119
|
+
/**
|
|
120
|
+
* @template {(anchor: Comment, props: any) => any} Component
|
|
121
|
+
* @param {Component} fn
|
|
122
|
+
*/
|
|
123
|
+
function hmr(fn) {
|
|
124
|
+
const current = source(fn);
|
|
125
|
+
/**
|
|
126
|
+
* @param {TemplateNode} initial_anchor
|
|
127
|
+
* @param {any} props
|
|
128
|
+
*/
|
|
129
|
+
function wrapper(initial_anchor, props) {
|
|
130
|
+
let component = {};
|
|
131
|
+
let instance = {};
|
|
132
|
+
/** @type {Effect} */
|
|
133
|
+
let effect;
|
|
134
|
+
let ran = false;
|
|
135
|
+
let anchor = initial_anchor;
|
|
136
|
+
block(() => {
|
|
137
|
+
if (component === (component = get(current))) return;
|
|
138
|
+
if (effect) {
|
|
139
|
+
for (var k in instance) delete instance[k];
|
|
140
|
+
destroy_effect(effect);
|
|
141
|
+
}
|
|
142
|
+
effect = branch(() => {
|
|
143
|
+
anchor = anchor[HMR_ANCHOR] ?? anchor;
|
|
144
|
+
if (ran) set_should_intro(false);
|
|
145
|
+
var result = new.target ? new component(anchor, props) : component(anchor, props);
|
|
146
|
+
if (result) Object.defineProperties(instance, Object.getOwnPropertyDescriptors(result));
|
|
147
|
+
if (ran) set_should_intro(true);
|
|
148
|
+
});
|
|
149
|
+
/** @type {Effect} */ active_effect.nodes = effect.nodes;
|
|
150
|
+
}, EFFECT_TRANSPARENT);
|
|
151
|
+
ran = true;
|
|
152
|
+
if (hydrating) anchor = hydrate_node;
|
|
153
|
+
return instance;
|
|
154
|
+
}
|
|
155
|
+
wrapper[FILENAME] = fn[FILENAME];
|
|
156
|
+
wrapper[HMR] = {
|
|
157
|
+
fn,
|
|
158
|
+
current,
|
|
159
|
+
update: (incoming) => {
|
|
160
|
+
set(wrapper[HMR].current, incoming[HMR].fn);
|
|
161
|
+
incoming[HMR].current = wrapper[HMR].current;
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
return wrapper;
|
|
165
|
+
}
|
|
166
|
+
//#endregion
|
|
167
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dev/ownership.js
|
|
168
|
+
/** @typedef {{ file: string, line: number, column: number }} Location */
|
|
169
|
+
/**
|
|
170
|
+
* Sets up a validator that
|
|
171
|
+
* - traverses the path of a prop to find out if it is allowed to be mutated
|
|
172
|
+
* - checks that the binding chain is not interrupted
|
|
173
|
+
* @param {Record<string, any>} props
|
|
174
|
+
*/
|
|
175
|
+
function create_ownership_validator(props) {
|
|
176
|
+
const component = component_context?.function;
|
|
177
|
+
const parent = component_context?.p?.function;
|
|
178
|
+
return {
|
|
179
|
+
/**
|
|
180
|
+
* @param {string} prop
|
|
181
|
+
* @param {any[]} path
|
|
182
|
+
* @param {any} result
|
|
183
|
+
* @param {number} line
|
|
184
|
+
* @param {number} column
|
|
185
|
+
*/
|
|
186
|
+
mutation: (prop, path, result, line, column) => {
|
|
187
|
+
const name = path[0];
|
|
188
|
+
if (is_bound_or_unset(props, name) || !parent) return result;
|
|
189
|
+
/** @type {any} */
|
|
190
|
+
let value = props;
|
|
191
|
+
for (let i = 0; i < path.length - 1; i++) {
|
|
192
|
+
value = value[path[i]];
|
|
193
|
+
if (!value?.[STATE_SYMBOL]) return result;
|
|
194
|
+
}
|
|
195
|
+
ownership_invalid_mutation(name, sanitize_location(`${component[FILENAME]}:${line}:${column}`), prop, parent[FILENAME]);
|
|
196
|
+
return result;
|
|
197
|
+
},
|
|
198
|
+
/**
|
|
199
|
+
* @param {any} key
|
|
200
|
+
* @param {any} child_component
|
|
201
|
+
* @param {() => any} value
|
|
202
|
+
*/
|
|
203
|
+
binding: (key, child_component, value) => {
|
|
204
|
+
if (!is_bound_or_unset(props, key) && parent && value()?.[STATE_SYMBOL]) ownership_invalid_binding(component[FILENAME], key, child_component[FILENAME], parent[FILENAME]);
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* @param {Record<string, any>} props
|
|
210
|
+
* @param {string} prop_name
|
|
211
|
+
*/
|
|
212
|
+
function is_bound_or_unset(props, prop_name) {
|
|
213
|
+
const is_entry_props = STATE_SYMBOL in props || LEGACY_PROPS in props;
|
|
214
|
+
return !!get_descriptor(props, prop_name)?.set || is_entry_props && prop_name in props || !(prop_name in props);
|
|
215
|
+
}
|
|
216
|
+
//#endregion
|
|
217
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dev/legacy.js
|
|
218
|
+
/** @param {Function & { [FILENAME]: string }} target */
|
|
219
|
+
function check_target(target) {
|
|
220
|
+
if (target) component_api_invalid_new(target[FILENAME] ?? "a component", target.name);
|
|
221
|
+
}
|
|
222
|
+
function legacy_api() {
|
|
223
|
+
const component = component_context?.function;
|
|
224
|
+
/** @param {string} method */
|
|
225
|
+
function error(method) {
|
|
226
|
+
component_api_changed(method, component[FILENAME]);
|
|
227
|
+
}
|
|
228
|
+
return {
|
|
229
|
+
$destroy: () => error("$destroy()"),
|
|
230
|
+
$on: () => error("$on(...)"),
|
|
231
|
+
$set: () => error("$set(...)")
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
//#endregion
|
|
235
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dev/inspect.js
|
|
236
|
+
/**
|
|
237
|
+
* @param {() => any[]} get_value
|
|
238
|
+
* @param {Function} inspector
|
|
239
|
+
* @param {boolean} show_stack
|
|
240
|
+
*/
|
|
241
|
+
function inspect(get_value, inspector, show_stack = false) {
|
|
242
|
+
validate_effect("$inspect");
|
|
243
|
+
let initial = true;
|
|
244
|
+
let error = UNINITIALIZED;
|
|
245
|
+
eager_effect(() => {
|
|
246
|
+
error = UNINITIALIZED;
|
|
247
|
+
try {
|
|
248
|
+
var value = get_value();
|
|
249
|
+
} catch (e) {
|
|
250
|
+
error = e;
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
var snap = snapshot(value, true, true);
|
|
254
|
+
untrack(() => {
|
|
255
|
+
if (show_stack) {
|
|
256
|
+
inspector(...snap);
|
|
257
|
+
if (!initial) {
|
|
258
|
+
const stack = get_error("$inspect(...)");
|
|
259
|
+
if (stack) {
|
|
260
|
+
console.groupCollapsed("stack trace");
|
|
261
|
+
console.log(stack);
|
|
262
|
+
console.groupEnd();
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
} else inspector(initial ? "init" : "update", ...snap);
|
|
266
|
+
});
|
|
267
|
+
initial = false;
|
|
268
|
+
});
|
|
269
|
+
render_effect(() => {
|
|
270
|
+
try {
|
|
271
|
+
get_value();
|
|
272
|
+
} catch {}
|
|
273
|
+
if (error !== UNINITIALIZED) {
|
|
274
|
+
console.error(error);
|
|
275
|
+
error = UNINITIALIZED;
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
//#endregion
|
|
280
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/blocks/async.js
|
|
281
|
+
/** @import { Blocker, TemplateNode, Value } from '#client' */
|
|
282
|
+
/**
|
|
283
|
+
* @param {TemplateNode} node
|
|
284
|
+
* @param {Blocker[]} blockers
|
|
285
|
+
* @param {Array<() => Promise<any>>} expressions
|
|
286
|
+
* @param {(anchor: TemplateNode, ...deriveds: Value[]) => void} fn
|
|
287
|
+
*/
|
|
288
|
+
function async(node, blockers = [], expressions = [], fn) {
|
|
289
|
+
var was_hydrating = hydrating;
|
|
290
|
+
var end = null;
|
|
291
|
+
if (was_hydrating) {
|
|
292
|
+
hydrate_next();
|
|
293
|
+
end = skip_nodes(false);
|
|
294
|
+
}
|
|
295
|
+
if (expressions.length === 0 && blockers.every((b) => b.settled)) {
|
|
296
|
+
fn(node);
|
|
297
|
+
if (was_hydrating) set_hydrate_node(end);
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
if (was_hydrating) {
|
|
301
|
+
var previous_hydrate_node = hydrate_node;
|
|
302
|
+
set_hydrate_node(end);
|
|
303
|
+
}
|
|
304
|
+
flatten(blockers, [], expressions, (values) => {
|
|
305
|
+
if (was_hydrating) {
|
|
306
|
+
set_hydrating(true);
|
|
307
|
+
set_hydrate_node(previous_hydrate_node);
|
|
308
|
+
}
|
|
309
|
+
try {
|
|
310
|
+
for (const d of values) get(d);
|
|
311
|
+
fn(node, ...values);
|
|
312
|
+
} finally {
|
|
313
|
+
if (was_hydrating) set_hydrating(false);
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
//#endregion
|
|
318
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dev/validation.js
|
|
319
|
+
/**
|
|
320
|
+
* @param {Node} anchor
|
|
321
|
+
* @param {...(()=>any)[]} args
|
|
322
|
+
*/
|
|
323
|
+
function validate_snippet_args(anchor, ...args) {
|
|
324
|
+
if (typeof anchor !== "object" || !(anchor instanceof Node)) invalid_snippet_arguments();
|
|
325
|
+
for (let arg of args) if (typeof arg !== "function") invalid_snippet_arguments();
|
|
326
|
+
}
|
|
327
|
+
//#endregion
|
|
328
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/blocks/branches.js
|
|
329
|
+
/** @import { Effect, TemplateNode } from '#client' */
|
|
330
|
+
/**
|
|
331
|
+
* @typedef {{ effect: Effect, fragment: DocumentFragment }} Branch
|
|
332
|
+
*/
|
|
333
|
+
/**
|
|
334
|
+
* @template Key
|
|
335
|
+
*/
|
|
336
|
+
var BranchManager = class {
|
|
337
|
+
/** @type {TemplateNode} */
|
|
338
|
+
anchor;
|
|
339
|
+
/** @type {Map<Batch, Key>} */
|
|
340
|
+
#batches = /* @__PURE__ */ new Map();
|
|
341
|
+
/**
|
|
342
|
+
* Map of keys to effects that are currently rendered in the DOM.
|
|
343
|
+
* These effects are visible and actively part of the document tree.
|
|
344
|
+
* Example:
|
|
345
|
+
* ```
|
|
346
|
+
* {#if condition}
|
|
347
|
+
* foo
|
|
348
|
+
* {:else}
|
|
349
|
+
* bar
|
|
350
|
+
* {/if}
|
|
351
|
+
* ```
|
|
352
|
+
* Can result in the entries `true->Effect` and `false->Effect`
|
|
353
|
+
* @type {Map<Key, Effect>}
|
|
354
|
+
*/
|
|
355
|
+
#onscreen = /* @__PURE__ */ new Map();
|
|
356
|
+
/**
|
|
357
|
+
* Similar to #onscreen with respect to the keys, but contains branches that are not yet
|
|
358
|
+
* in the DOM, because their insertion is deferred.
|
|
359
|
+
* @type {Map<Key, Branch>}
|
|
360
|
+
*/
|
|
361
|
+
#offscreen = /* @__PURE__ */ new Map();
|
|
362
|
+
/**
|
|
363
|
+
* Keys of effects that are currently outroing
|
|
364
|
+
* @type {Set<Key>}
|
|
365
|
+
*/
|
|
366
|
+
#outroing = /* @__PURE__ */ new Set();
|
|
367
|
+
/**
|
|
368
|
+
* Whether to pause (i.e. outro) on change, or destroy immediately.
|
|
369
|
+
* This is necessary for `<svelte:element>`
|
|
370
|
+
*/
|
|
371
|
+
#transition = true;
|
|
372
|
+
/**
|
|
373
|
+
* @param {TemplateNode} anchor
|
|
374
|
+
* @param {boolean} transition
|
|
375
|
+
*/
|
|
376
|
+
constructor(anchor, transition = true) {
|
|
377
|
+
this.anchor = anchor;
|
|
378
|
+
this.#transition = transition;
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* @param {Batch} batch
|
|
382
|
+
*/
|
|
383
|
+
#commit = (batch) => {
|
|
384
|
+
if (!this.#batches.has(batch)) return;
|
|
385
|
+
var key = this.#batches.get(batch);
|
|
386
|
+
var onscreen = this.#onscreen.get(key);
|
|
387
|
+
if (onscreen) {
|
|
388
|
+
resume_effect(onscreen);
|
|
389
|
+
this.#outroing.delete(key);
|
|
390
|
+
} else {
|
|
391
|
+
var offscreen = this.#offscreen.get(key);
|
|
392
|
+
if (offscreen) {
|
|
393
|
+
this.#onscreen.set(key, offscreen.effect);
|
|
394
|
+
this.#offscreen.delete(key);
|
|
395
|
+
/** @type {any} */ offscreen.fragment.lastChild[HMR_ANCHOR] = this.anchor;
|
|
396
|
+
/** @type {TemplateNode} */ offscreen.fragment.lastChild.remove();
|
|
397
|
+
this.anchor.before(offscreen.fragment);
|
|
398
|
+
onscreen = offscreen.effect;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
for (const [b, k] of this.#batches) {
|
|
402
|
+
this.#batches.delete(b);
|
|
403
|
+
if (b === batch) break;
|
|
404
|
+
const offscreen = this.#offscreen.get(k);
|
|
405
|
+
if (offscreen) {
|
|
406
|
+
destroy_effect(offscreen.effect);
|
|
407
|
+
this.#offscreen.delete(k);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
for (const [k, effect] of this.#onscreen) {
|
|
411
|
+
if (k === key || this.#outroing.has(k)) continue;
|
|
412
|
+
const on_destroy = () => {
|
|
413
|
+
if (Array.from(this.#batches.values()).includes(k)) {
|
|
414
|
+
var fragment = document.createDocumentFragment();
|
|
415
|
+
move_effect(effect, fragment);
|
|
416
|
+
fragment.append(create_text());
|
|
417
|
+
this.#offscreen.set(k, {
|
|
418
|
+
effect,
|
|
419
|
+
fragment
|
|
420
|
+
});
|
|
421
|
+
} else destroy_effect(effect);
|
|
422
|
+
this.#outroing.delete(k);
|
|
423
|
+
this.#onscreen.delete(k);
|
|
424
|
+
};
|
|
425
|
+
if (this.#transition || !onscreen) {
|
|
426
|
+
this.#outroing.add(k);
|
|
427
|
+
pause_effect(effect, on_destroy, false);
|
|
428
|
+
} else on_destroy();
|
|
429
|
+
}
|
|
430
|
+
};
|
|
431
|
+
/**
|
|
432
|
+
* @param {Batch} batch
|
|
433
|
+
*/
|
|
434
|
+
#discard = (batch) => {
|
|
435
|
+
this.#batches.delete(batch);
|
|
436
|
+
const keys = Array.from(this.#batches.values());
|
|
437
|
+
for (const [k, branch] of this.#offscreen) if (!keys.includes(k)) {
|
|
438
|
+
destroy_effect(branch.effect);
|
|
439
|
+
this.#offscreen.delete(k);
|
|
440
|
+
}
|
|
441
|
+
};
|
|
442
|
+
/**
|
|
443
|
+
*
|
|
444
|
+
* @param {any} key
|
|
445
|
+
* @param {null | ((target: TemplateNode) => void)} fn
|
|
446
|
+
*/
|
|
447
|
+
ensure(key, fn) {
|
|
448
|
+
var batch = current_batch;
|
|
449
|
+
var defer = should_defer_append();
|
|
450
|
+
if (fn && !this.#onscreen.has(key) && !this.#offscreen.has(key)) if (defer) {
|
|
451
|
+
var fragment = document.createDocumentFragment();
|
|
452
|
+
var target = create_text();
|
|
453
|
+
fragment.append(target);
|
|
454
|
+
this.#offscreen.set(key, {
|
|
455
|
+
effect: branch(() => fn(target)),
|
|
456
|
+
fragment
|
|
457
|
+
});
|
|
458
|
+
} else this.#onscreen.set(key, branch(() => fn(this.anchor)));
|
|
459
|
+
this.#batches.set(batch, key);
|
|
460
|
+
if (defer) {
|
|
461
|
+
for (const [k, effect] of this.#onscreen) if (k === key) batch.unskip_effect(effect);
|
|
462
|
+
else batch.skip_effect(effect);
|
|
463
|
+
for (const [k, branch] of this.#offscreen) if (k === key) batch.unskip_effect(branch.effect);
|
|
464
|
+
else batch.skip_effect(branch.effect);
|
|
465
|
+
batch.oncommit(this.#commit);
|
|
466
|
+
batch.ondiscard(this.#discard);
|
|
467
|
+
} else {
|
|
468
|
+
if (hydrating) this.anchor = hydrate_node;
|
|
469
|
+
this.#commit(batch);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
};
|
|
473
|
+
//#endregion
|
|
474
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/blocks/await.js
|
|
475
|
+
/** @import { Source, TemplateNode } from '#client' */
|
|
476
|
+
var PENDING = 0;
|
|
477
|
+
var THEN = 1;
|
|
478
|
+
var CATCH = 2;
|
|
479
|
+
/** @typedef {typeof PENDING | typeof THEN | typeof CATCH} AwaitState */
|
|
480
|
+
/**
|
|
481
|
+
* @template V
|
|
482
|
+
* @param {TemplateNode} node
|
|
483
|
+
* @param {(() => any)} get_input
|
|
484
|
+
* @param {null | ((anchor: Node) => void)} pending_fn
|
|
485
|
+
* @param {null | ((anchor: Node, value: Source<V>) => void)} then_fn
|
|
486
|
+
* @param {null | ((anchor: Node, error: unknown) => void)} catch_fn
|
|
487
|
+
* @returns {void}
|
|
488
|
+
*/
|
|
489
|
+
function await_block(node, get_input, pending_fn, then_fn, catch_fn) {
|
|
490
|
+
if (hydrating) hydrate_next();
|
|
491
|
+
var runes = is_runes();
|
|
492
|
+
var v = UNINITIALIZED;
|
|
493
|
+
var value = runes ? source(v) : /* @__PURE__ */ mutable_source(v, false, false);
|
|
494
|
+
var error = runes ? source(v) : /* @__PURE__ */ mutable_source(v, false, false);
|
|
495
|
+
value.label = "{#await ...} value";
|
|
496
|
+
error.label = "{#await ...} error";
|
|
497
|
+
var branches = new BranchManager(node);
|
|
498
|
+
block(() => {
|
|
499
|
+
var batch = current_batch;
|
|
500
|
+
var input = get_input();
|
|
501
|
+
var destroyed = false;
|
|
502
|
+
/** Whether or not there was a hydration mismatch. Needs to be a `let` or else it isn't treeshaken out */
|
|
503
|
+
let mismatch = hydrating && is_promise(input) === (node.data === "[!");
|
|
504
|
+
if (mismatch) {
|
|
505
|
+
set_hydrate_node(skip_nodes());
|
|
506
|
+
set_hydrating(false);
|
|
507
|
+
}
|
|
508
|
+
if (is_promise(input)) {
|
|
509
|
+
var restore = capture();
|
|
510
|
+
var resolved = false;
|
|
511
|
+
/**
|
|
512
|
+
* @param {() => void} fn
|
|
513
|
+
*/
|
|
514
|
+
const resolve = (fn) => {
|
|
515
|
+
if (destroyed) return;
|
|
516
|
+
resolved = true;
|
|
517
|
+
restore(false);
|
|
518
|
+
if (current_batch === batch) batch.deactivate();
|
|
519
|
+
Batch.ensure();
|
|
520
|
+
try {
|
|
521
|
+
fn();
|
|
522
|
+
} finally {
|
|
523
|
+
unset_context(false);
|
|
524
|
+
if (!is_flushing_sync) flushSync();
|
|
525
|
+
}
|
|
526
|
+
};
|
|
527
|
+
input.then((v) => {
|
|
528
|
+
resolve(() => {
|
|
529
|
+
internal_set(value, v);
|
|
530
|
+
branches.ensure(THEN, then_fn && ((target) => then_fn(target, value)));
|
|
531
|
+
});
|
|
532
|
+
}, (e) => {
|
|
533
|
+
resolve(() => {
|
|
534
|
+
internal_set(error, e);
|
|
535
|
+
branches.ensure(CATCH, catch_fn && ((target) => catch_fn(target, error)));
|
|
536
|
+
if (!catch_fn) throw error.v;
|
|
537
|
+
});
|
|
538
|
+
});
|
|
539
|
+
if (hydrating) branches.ensure(PENDING, pending_fn);
|
|
540
|
+
else queue_micro_task(() => {
|
|
541
|
+
if (!resolved) resolve(() => {
|
|
542
|
+
branches.ensure(PENDING, pending_fn);
|
|
543
|
+
});
|
|
544
|
+
});
|
|
545
|
+
} else {
|
|
546
|
+
internal_set(value, input);
|
|
547
|
+
branches.ensure(THEN, then_fn && ((target) => then_fn(target, value)));
|
|
548
|
+
}
|
|
549
|
+
if (mismatch) set_hydrating(true);
|
|
550
|
+
return () => {
|
|
551
|
+
destroyed = true;
|
|
552
|
+
};
|
|
553
|
+
});
|
|
554
|
+
}
|
|
555
|
+
//#endregion
|
|
556
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/blocks/if.js
|
|
557
|
+
/** @import { TemplateNode } from '#client' */
|
|
558
|
+
/**
|
|
559
|
+
* @param {TemplateNode} node
|
|
560
|
+
* @param {(branch: (fn: (anchor: Node) => void, key?: number | false) => void) => void} fn
|
|
561
|
+
* @param {boolean} [elseif] True if this is an `{:else if ...}` block rather than an `{#if ...}`, as that affects which transitions are considered 'local'
|
|
562
|
+
* @returns {void}
|
|
563
|
+
*/
|
|
564
|
+
function if_block(node, fn, elseif = false) {
|
|
565
|
+
/** @type {TemplateNode | undefined} */
|
|
566
|
+
var marker;
|
|
567
|
+
if (hydrating) {
|
|
568
|
+
marker = hydrate_node;
|
|
569
|
+
hydrate_next();
|
|
570
|
+
}
|
|
571
|
+
var branches = new BranchManager(node);
|
|
572
|
+
var flags = elseif ? EFFECT_TRANSPARENT : 0;
|
|
573
|
+
/**
|
|
574
|
+
* @param {number | false} key
|
|
575
|
+
* @param {null | ((anchor: Node) => void)} fn
|
|
576
|
+
*/
|
|
577
|
+
function update_branch(key, fn) {
|
|
578
|
+
if (hydrating) {
|
|
579
|
+
var data = read_hydration_instruction(marker);
|
|
580
|
+
if (key !== parseInt(data.substring(1))) {
|
|
581
|
+
var anchor = skip_nodes();
|
|
582
|
+
set_hydrate_node(anchor);
|
|
583
|
+
branches.anchor = anchor;
|
|
584
|
+
set_hydrating(false);
|
|
585
|
+
branches.ensure(key, fn);
|
|
586
|
+
set_hydrating(true);
|
|
587
|
+
return;
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
branches.ensure(key, fn);
|
|
591
|
+
}
|
|
592
|
+
block(() => {
|
|
593
|
+
var has_branch = false;
|
|
594
|
+
fn((fn, key = 0) => {
|
|
595
|
+
has_branch = true;
|
|
596
|
+
update_branch(key, fn);
|
|
597
|
+
});
|
|
598
|
+
if (!has_branch) update_branch(-1, null);
|
|
599
|
+
}, flags);
|
|
600
|
+
}
|
|
601
|
+
//#endregion
|
|
602
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/blocks/key.js
|
|
603
|
+
/** @import { TemplateNode } from '#client' */
|
|
604
|
+
var NAN = Symbol("NaN");
|
|
605
|
+
/**
|
|
606
|
+
* @template V
|
|
607
|
+
* @param {TemplateNode} node
|
|
608
|
+
* @param {() => V} get_key
|
|
609
|
+
* @param {(anchor: Node) => TemplateNode | void} render_fn
|
|
610
|
+
* @returns {void}
|
|
611
|
+
*/
|
|
612
|
+
function key(node, get_key, render_fn) {
|
|
613
|
+
if (hydrating) hydrate_next();
|
|
614
|
+
var branches = new BranchManager(node);
|
|
615
|
+
var legacy = !is_runes();
|
|
616
|
+
block(() => {
|
|
617
|
+
var key = get_key();
|
|
618
|
+
if (key !== key) key = NAN;
|
|
619
|
+
if (legacy && key !== null && typeof key === "object") key = {};
|
|
620
|
+
branches.ensure(key, render_fn);
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
//#endregion
|
|
624
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/blocks/css-props.js
|
|
625
|
+
/**
|
|
626
|
+
* @param {HTMLDivElement | SVGGElement} element
|
|
627
|
+
* @param {() => Record<string, string>} get_styles
|
|
628
|
+
* @returns {void}
|
|
629
|
+
*/
|
|
630
|
+
function css_props(element, get_styles) {
|
|
631
|
+
if (hydrating) set_hydrate_node(/* @__PURE__ */ get_first_child(element));
|
|
632
|
+
render_effect(() => {
|
|
633
|
+
var styles = get_styles();
|
|
634
|
+
for (var key in styles) {
|
|
635
|
+
var value = styles[key];
|
|
636
|
+
if (value) element.style.setProperty(key, value);
|
|
637
|
+
else element.style.removeProperty(key);
|
|
638
|
+
}
|
|
639
|
+
});
|
|
640
|
+
}
|
|
641
|
+
//#endregion
|
|
642
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/blocks/each.js
|
|
643
|
+
/** @import { EachItem, EachOutroGroup, EachState, Effect, EffectNodes, MaybeSource, Source, TemplateNode, TransitionManager, Value } from '#client' */
|
|
644
|
+
/** @import { Batch } from '../../reactivity/batch.js'; */
|
|
645
|
+
/**
|
|
646
|
+
* @param {any} _
|
|
647
|
+
* @param {number} i
|
|
648
|
+
*/
|
|
649
|
+
function index(_, i) {
|
|
650
|
+
return i;
|
|
651
|
+
}
|
|
652
|
+
/**
|
|
653
|
+
* Pause multiple effects simultaneously, and coordinate their
|
|
654
|
+
* subsequent destruction. Used in each blocks
|
|
655
|
+
* @param {EachState} state
|
|
656
|
+
* @param {Effect[]} to_destroy
|
|
657
|
+
* @param {null | Node} controlled_anchor
|
|
658
|
+
*/
|
|
659
|
+
function pause_effects(state, to_destroy, controlled_anchor) {
|
|
660
|
+
/** @type {TransitionManager[]} */
|
|
661
|
+
var transitions = [];
|
|
662
|
+
var length = to_destroy.length;
|
|
663
|
+
/** @type {EachOutroGroup} */
|
|
664
|
+
var group;
|
|
665
|
+
var remaining = to_destroy.length;
|
|
666
|
+
for (var i = 0; i < length; i++) {
|
|
667
|
+
let effect = to_destroy[i];
|
|
668
|
+
pause_effect(effect, () => {
|
|
669
|
+
if (group) {
|
|
670
|
+
group.pending.delete(effect);
|
|
671
|
+
group.done.add(effect);
|
|
672
|
+
if (group.pending.size === 0) {
|
|
673
|
+
var groups = state.outrogroups;
|
|
674
|
+
destroy_effects(state, array_from(group.done));
|
|
675
|
+
groups.delete(group);
|
|
676
|
+
if (groups.size === 0) state.outrogroups = null;
|
|
677
|
+
}
|
|
678
|
+
} else remaining -= 1;
|
|
679
|
+
}, false);
|
|
680
|
+
}
|
|
681
|
+
if (remaining === 0) {
|
|
682
|
+
var fast_path = transitions.length === 0 && controlled_anchor !== null;
|
|
683
|
+
if (fast_path) {
|
|
684
|
+
var anchor = controlled_anchor;
|
|
685
|
+
var parent_node = anchor.parentNode;
|
|
686
|
+
clear_text_content(parent_node);
|
|
687
|
+
parent_node.append(anchor);
|
|
688
|
+
state.items.clear();
|
|
689
|
+
}
|
|
690
|
+
destroy_effects(state, to_destroy, !fast_path);
|
|
691
|
+
} else {
|
|
692
|
+
group = {
|
|
693
|
+
pending: new Set(to_destroy),
|
|
694
|
+
done: /* @__PURE__ */ new Set()
|
|
695
|
+
};
|
|
696
|
+
(state.outrogroups ??= /* @__PURE__ */ new Set()).add(group);
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
/**
|
|
700
|
+
* @param {EachState} state
|
|
701
|
+
* @param {Effect[]} to_destroy
|
|
702
|
+
* @param {boolean} remove_dom
|
|
703
|
+
*/
|
|
704
|
+
function destroy_effects(state, to_destroy, remove_dom = true) {
|
|
705
|
+
/** @type {Set<Effect> | undefined} */
|
|
706
|
+
var preserved_effects;
|
|
707
|
+
if (state.pending.size > 0) {
|
|
708
|
+
preserved_effects = /* @__PURE__ */ new Set();
|
|
709
|
+
for (const keys of state.pending.values()) for (const key of keys) preserved_effects.add(
|
|
710
|
+
/** @type {EachItem} */
|
|
711
|
+
state.items.get(key).e
|
|
712
|
+
);
|
|
713
|
+
}
|
|
714
|
+
for (var i = 0; i < to_destroy.length; i++) {
|
|
715
|
+
var e = to_destroy[i];
|
|
716
|
+
if (preserved_effects?.has(e)) {
|
|
717
|
+
e.f |= EFFECT_OFFSCREEN;
|
|
718
|
+
move_effect(e, document.createDocumentFragment());
|
|
719
|
+
} else destroy_effect(to_destroy[i], remove_dom);
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
/** @type {TemplateNode} */
|
|
723
|
+
var offscreen_anchor;
|
|
724
|
+
/**
|
|
725
|
+
* @template V
|
|
726
|
+
* @param {Element | Comment} node The next sibling node, or the parent node if this is a 'controlled' block
|
|
727
|
+
* @param {number} flags
|
|
728
|
+
* @param {() => V[]} get_collection
|
|
729
|
+
* @param {(value: V, index: number) => any} get_key
|
|
730
|
+
* @param {(anchor: Node, item: MaybeSource<V>, index: MaybeSource<number>) => void} render_fn
|
|
731
|
+
* @param {null | ((anchor: Node) => void)} fallback_fn
|
|
732
|
+
* @returns {void}
|
|
733
|
+
*/
|
|
734
|
+
function each(node, flags, get_collection, get_key, render_fn, fallback_fn = null) {
|
|
735
|
+
var anchor = node;
|
|
736
|
+
/** @type {Map<any, EachItem>} */
|
|
737
|
+
var items = /* @__PURE__ */ new Map();
|
|
738
|
+
if ((flags & 4) !== 0) {
|
|
739
|
+
var parent_node = node;
|
|
740
|
+
anchor = hydrating ? set_hydrate_node(/* @__PURE__ */ get_first_child(parent_node)) : parent_node.appendChild(create_text());
|
|
741
|
+
}
|
|
742
|
+
if (hydrating) hydrate_next();
|
|
743
|
+
/** @type {Effect | null} */
|
|
744
|
+
var fallback = null;
|
|
745
|
+
var each_array = /* @__PURE__ */ derived_safe_equal(() => {
|
|
746
|
+
var collection = get_collection();
|
|
747
|
+
return is_array(collection) ? collection : collection == null ? [] : array_from(collection);
|
|
748
|
+
});
|
|
749
|
+
tag(each_array, "{#each ...}");
|
|
750
|
+
/** @type {V[]} */
|
|
751
|
+
var array;
|
|
752
|
+
/** @type {Map<Batch, Set<any>>} */
|
|
753
|
+
var pending = /* @__PURE__ */ new Map();
|
|
754
|
+
var first_run = true;
|
|
755
|
+
/**
|
|
756
|
+
* @param {Batch} batch
|
|
757
|
+
*/
|
|
758
|
+
function commit(batch) {
|
|
759
|
+
if ((state.effect.f & 16384) !== 0) return;
|
|
760
|
+
state.pending.delete(batch);
|
|
761
|
+
state.fallback = fallback;
|
|
762
|
+
reconcile(state, array, anchor, flags, get_key);
|
|
763
|
+
if (fallback !== null) if (array.length === 0) if ((fallback.f & 33554432) === 0) resume_effect(fallback);
|
|
764
|
+
else {
|
|
765
|
+
fallback.f ^= EFFECT_OFFSCREEN;
|
|
766
|
+
move(fallback, null, anchor);
|
|
767
|
+
}
|
|
768
|
+
else pause_effect(fallback, () => {
|
|
769
|
+
fallback = null;
|
|
770
|
+
});
|
|
771
|
+
}
|
|
772
|
+
/**
|
|
773
|
+
* @param {Batch} batch
|
|
774
|
+
*/
|
|
775
|
+
function discard(batch) {
|
|
776
|
+
state.pending.delete(batch);
|
|
777
|
+
}
|
|
778
|
+
/** @type {EachState} */
|
|
779
|
+
var state = {
|
|
780
|
+
effect: block(() => {
|
|
781
|
+
array = get(each_array);
|
|
782
|
+
var length = array.length;
|
|
783
|
+
/** `true` if there was a hydration mismatch. Needs to be a `let` or else it isn't treeshaken out */
|
|
784
|
+
let mismatch = false;
|
|
785
|
+
if (hydrating) {
|
|
786
|
+
if (read_hydration_instruction(anchor) === "[!" !== (length === 0)) {
|
|
787
|
+
anchor = skip_nodes();
|
|
788
|
+
set_hydrate_node(anchor);
|
|
789
|
+
set_hydrating(false);
|
|
790
|
+
mismatch = true;
|
|
791
|
+
}
|
|
792
|
+
}
|
|
793
|
+
var keys = /* @__PURE__ */ new Set();
|
|
794
|
+
var batch = current_batch;
|
|
795
|
+
var defer = should_defer_append();
|
|
796
|
+
for (var index = 0; index < length; index += 1) {
|
|
797
|
+
if (hydrating && hydrate_node.nodeType === 8 && hydrate_node.data === "]") {
|
|
798
|
+
anchor = hydrate_node;
|
|
799
|
+
mismatch = true;
|
|
800
|
+
set_hydrating(false);
|
|
801
|
+
}
|
|
802
|
+
var value = array[index];
|
|
803
|
+
var key = get_key(value, index);
|
|
804
|
+
var key_again = get_key(value, index);
|
|
805
|
+
if (key !== key_again) each_key_volatile(String(index), String(key), String(key_again));
|
|
806
|
+
var item = first_run ? null : items.get(key);
|
|
807
|
+
if (item) {
|
|
808
|
+
if (item.v) internal_set(item.v, value);
|
|
809
|
+
if (item.i) internal_set(item.i, index);
|
|
810
|
+
if (defer) batch.unskip_effect(item.e);
|
|
811
|
+
} else {
|
|
812
|
+
item = create_item(items, first_run ? anchor : offscreen_anchor ??= create_text(), value, key, index, render_fn, flags, get_collection);
|
|
813
|
+
if (!first_run) item.e.f |= EFFECT_OFFSCREEN;
|
|
814
|
+
items.set(key, item);
|
|
815
|
+
}
|
|
816
|
+
keys.add(key);
|
|
817
|
+
}
|
|
818
|
+
if (length === 0 && fallback_fn && !fallback) if (first_run) fallback = branch(() => fallback_fn(anchor));
|
|
819
|
+
else {
|
|
820
|
+
fallback = branch(() => fallback_fn(offscreen_anchor ??= create_text()));
|
|
821
|
+
fallback.f |= EFFECT_OFFSCREEN;
|
|
822
|
+
}
|
|
823
|
+
if (length > keys.size) validate_each_keys(array, get_key);
|
|
824
|
+
if (hydrating && length > 0) set_hydrate_node(skip_nodes());
|
|
825
|
+
if (!first_run) {
|
|
826
|
+
pending.set(batch, keys);
|
|
827
|
+
if (defer) {
|
|
828
|
+
for (const [key, item] of items) if (!keys.has(key)) batch.skip_effect(item.e);
|
|
829
|
+
batch.oncommit(commit);
|
|
830
|
+
batch.ondiscard(discard);
|
|
831
|
+
} else commit(batch);
|
|
832
|
+
}
|
|
833
|
+
if (mismatch) set_hydrating(true);
|
|
834
|
+
get(each_array);
|
|
835
|
+
}),
|
|
836
|
+
flags,
|
|
837
|
+
items,
|
|
838
|
+
pending,
|
|
839
|
+
outrogroups: null,
|
|
840
|
+
fallback
|
|
841
|
+
};
|
|
842
|
+
first_run = false;
|
|
843
|
+
if (hydrating) anchor = hydrate_node;
|
|
844
|
+
}
|
|
845
|
+
/**
|
|
846
|
+
* Skip past any non-branch effects (which could be created with `createSubscriber`, for example) to find the next branch effect
|
|
847
|
+
* @param {Effect | null} effect
|
|
848
|
+
* @returns {Effect | null}
|
|
849
|
+
*/
|
|
850
|
+
function skip_to_branch(effect) {
|
|
851
|
+
while (effect !== null && (effect.f & 32) === 0) effect = effect.next;
|
|
852
|
+
return effect;
|
|
853
|
+
}
|
|
854
|
+
/**
|
|
855
|
+
* Add, remove, or reorder items output by an each block as its input changes
|
|
856
|
+
* @template V
|
|
857
|
+
* @param {EachState} state
|
|
858
|
+
* @param {Array<V>} array
|
|
859
|
+
* @param {Element | Comment | Text} anchor
|
|
860
|
+
* @param {number} flags
|
|
861
|
+
* @param {(value: V, index: number) => any} get_key
|
|
862
|
+
* @returns {void}
|
|
863
|
+
*/
|
|
864
|
+
function reconcile(state, array, anchor, flags, get_key) {
|
|
865
|
+
var is_animated = (flags & 8) !== 0;
|
|
866
|
+
var length = array.length;
|
|
867
|
+
var items = state.items;
|
|
868
|
+
var current = skip_to_branch(state.effect.first);
|
|
869
|
+
/** @type {undefined | Set<Effect>} */
|
|
870
|
+
var seen;
|
|
871
|
+
/** @type {Effect | null} */
|
|
872
|
+
var prev = null;
|
|
873
|
+
/** @type {undefined | Set<Effect>} */
|
|
874
|
+
var to_animate;
|
|
875
|
+
/** @type {Effect[]} */
|
|
876
|
+
var matched = [];
|
|
877
|
+
/** @type {Effect[]} */
|
|
878
|
+
var stashed = [];
|
|
879
|
+
/** @type {V} */
|
|
880
|
+
var value;
|
|
881
|
+
/** @type {any} */
|
|
882
|
+
var key;
|
|
883
|
+
/** @type {Effect | undefined} */
|
|
884
|
+
var effect;
|
|
885
|
+
/** @type {number} */
|
|
886
|
+
var i;
|
|
887
|
+
if (is_animated) for (i = 0; i < length; i += 1) {
|
|
888
|
+
value = array[i];
|
|
889
|
+
key = get_key(value, i);
|
|
890
|
+
effect = items.get(key).e;
|
|
891
|
+
if ((effect.f & 33554432) === 0) {
|
|
892
|
+
effect.nodes?.a?.measure();
|
|
893
|
+
(to_animate ??= /* @__PURE__ */ new Set()).add(effect);
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
for (i = 0; i < length; i += 1) {
|
|
897
|
+
value = array[i];
|
|
898
|
+
key = get_key(value, i);
|
|
899
|
+
effect = items.get(key).e;
|
|
900
|
+
if (state.outrogroups !== null) for (const group of state.outrogroups) {
|
|
901
|
+
group.pending.delete(effect);
|
|
902
|
+
group.done.delete(effect);
|
|
903
|
+
}
|
|
904
|
+
if ((effect.f & 8192) !== 0) {
|
|
905
|
+
resume_effect(effect);
|
|
906
|
+
if (is_animated) {
|
|
907
|
+
effect.nodes?.a?.unfix();
|
|
908
|
+
(to_animate ??= /* @__PURE__ */ new Set()).delete(effect);
|
|
909
|
+
}
|
|
910
|
+
}
|
|
911
|
+
if ((effect.f & 33554432) !== 0) {
|
|
912
|
+
effect.f ^= EFFECT_OFFSCREEN;
|
|
913
|
+
if (effect === current) move(effect, null, anchor);
|
|
914
|
+
else {
|
|
915
|
+
var next = prev ? prev.next : current;
|
|
916
|
+
if (effect === state.effect.last) state.effect.last = effect.prev;
|
|
917
|
+
if (effect.prev) effect.prev.next = effect.next;
|
|
918
|
+
if (effect.next) effect.next.prev = effect.prev;
|
|
919
|
+
link(state, prev, effect);
|
|
920
|
+
link(state, effect, next);
|
|
921
|
+
move(effect, next, anchor);
|
|
922
|
+
prev = effect;
|
|
923
|
+
matched = [];
|
|
924
|
+
stashed = [];
|
|
925
|
+
current = skip_to_branch(prev.next);
|
|
926
|
+
continue;
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
if (effect !== current) {
|
|
930
|
+
if (seen !== void 0 && seen.has(effect)) {
|
|
931
|
+
if (matched.length < stashed.length) {
|
|
932
|
+
var start = stashed[0];
|
|
933
|
+
var j;
|
|
934
|
+
prev = start.prev;
|
|
935
|
+
var a = matched[0];
|
|
936
|
+
var b = matched[matched.length - 1];
|
|
937
|
+
for (j = 0; j < matched.length; j += 1) move(matched[j], start, anchor);
|
|
938
|
+
for (j = 0; j < stashed.length; j += 1) seen.delete(stashed[j]);
|
|
939
|
+
link(state, a.prev, b.next);
|
|
940
|
+
link(state, prev, a);
|
|
941
|
+
link(state, b, start);
|
|
942
|
+
current = start;
|
|
943
|
+
prev = b;
|
|
944
|
+
i -= 1;
|
|
945
|
+
matched = [];
|
|
946
|
+
stashed = [];
|
|
947
|
+
} else {
|
|
948
|
+
seen.delete(effect);
|
|
949
|
+
move(effect, current, anchor);
|
|
950
|
+
link(state, effect.prev, effect.next);
|
|
951
|
+
link(state, effect, prev === null ? state.effect.first : prev.next);
|
|
952
|
+
link(state, prev, effect);
|
|
953
|
+
prev = effect;
|
|
954
|
+
}
|
|
955
|
+
continue;
|
|
956
|
+
}
|
|
957
|
+
matched = [];
|
|
958
|
+
stashed = [];
|
|
959
|
+
while (current !== null && current !== effect) {
|
|
960
|
+
(seen ??= /* @__PURE__ */ new Set()).add(current);
|
|
961
|
+
stashed.push(current);
|
|
962
|
+
current = skip_to_branch(current.next);
|
|
963
|
+
}
|
|
964
|
+
if (current === null) continue;
|
|
965
|
+
}
|
|
966
|
+
if ((effect.f & 33554432) === 0) matched.push(effect);
|
|
967
|
+
prev = effect;
|
|
968
|
+
current = skip_to_branch(effect.next);
|
|
969
|
+
}
|
|
970
|
+
if (state.outrogroups !== null) {
|
|
971
|
+
for (const group of state.outrogroups) if (group.pending.size === 0) {
|
|
972
|
+
destroy_effects(state, array_from(group.done));
|
|
973
|
+
state.outrogroups?.delete(group);
|
|
974
|
+
}
|
|
975
|
+
if (state.outrogroups.size === 0) state.outrogroups = null;
|
|
976
|
+
}
|
|
977
|
+
if (current !== null || seen !== void 0) {
|
|
978
|
+
/** @type {Effect[]} */
|
|
979
|
+
var to_destroy = [];
|
|
980
|
+
if (seen !== void 0) {
|
|
981
|
+
for (effect of seen) if ((effect.f & 8192) === 0) to_destroy.push(effect);
|
|
982
|
+
}
|
|
983
|
+
while (current !== null) {
|
|
984
|
+
if ((current.f & 8192) === 0 && current !== state.fallback) to_destroy.push(current);
|
|
985
|
+
current = skip_to_branch(current.next);
|
|
986
|
+
}
|
|
987
|
+
var destroy_length = to_destroy.length;
|
|
988
|
+
if (destroy_length > 0) {
|
|
989
|
+
var controlled_anchor = (flags & 4) !== 0 && length === 0 ? anchor : null;
|
|
990
|
+
if (is_animated) {
|
|
991
|
+
for (i = 0; i < destroy_length; i += 1) to_destroy[i].nodes?.a?.measure();
|
|
992
|
+
for (i = 0; i < destroy_length; i += 1) to_destroy[i].nodes?.a?.fix();
|
|
993
|
+
}
|
|
994
|
+
pause_effects(state, to_destroy, controlled_anchor);
|
|
995
|
+
}
|
|
996
|
+
}
|
|
997
|
+
if (is_animated) queue_micro_task(() => {
|
|
998
|
+
if (to_animate === void 0) return;
|
|
999
|
+
for (effect of to_animate) effect.nodes?.a?.apply();
|
|
1000
|
+
});
|
|
1001
|
+
}
|
|
1002
|
+
/**
|
|
1003
|
+
* @template V
|
|
1004
|
+
* @param {Map<any, EachItem>} items
|
|
1005
|
+
* @param {Node} anchor
|
|
1006
|
+
* @param {V} value
|
|
1007
|
+
* @param {unknown} key
|
|
1008
|
+
* @param {number} index
|
|
1009
|
+
* @param {(anchor: Node, item: V | Source<V>, index: number | Value<number>, collection: () => V[]) => void} render_fn
|
|
1010
|
+
* @param {number} flags
|
|
1011
|
+
* @param {() => V[]} get_collection
|
|
1012
|
+
* @returns {EachItem}
|
|
1013
|
+
*/
|
|
1014
|
+
function create_item(items, anchor, value, key, index, render_fn, flags, get_collection) {
|
|
1015
|
+
var v = (flags & 1) !== 0 ? (flags & 16) === 0 ? /* @__PURE__ */ mutable_source(value, false, false) : source(value) : null;
|
|
1016
|
+
var i = (flags & 2) !== 0 ? source(index) : null;
|
|
1017
|
+
if (v) v.trace = () => {
|
|
1018
|
+
get_collection()[i?.v ?? index];
|
|
1019
|
+
};
|
|
1020
|
+
return {
|
|
1021
|
+
v,
|
|
1022
|
+
i,
|
|
1023
|
+
e: branch(() => {
|
|
1024
|
+
render_fn(anchor, v ?? value, i ?? index, get_collection);
|
|
1025
|
+
return () => {
|
|
1026
|
+
items.delete(key);
|
|
1027
|
+
};
|
|
1028
|
+
})
|
|
1029
|
+
};
|
|
1030
|
+
}
|
|
1031
|
+
/**
|
|
1032
|
+
* @param {Effect} effect
|
|
1033
|
+
* @param {Effect | null} next
|
|
1034
|
+
* @param {Text | Element | Comment} anchor
|
|
1035
|
+
*/
|
|
1036
|
+
function move(effect, next, anchor) {
|
|
1037
|
+
if (!effect.nodes) return;
|
|
1038
|
+
var node = effect.nodes.start;
|
|
1039
|
+
var end = effect.nodes.end;
|
|
1040
|
+
var dest = next && (next.f & 33554432) === 0 ? next.nodes.start : anchor;
|
|
1041
|
+
while (node !== null) {
|
|
1042
|
+
var next_node = /* @__PURE__ */ get_next_sibling(node);
|
|
1043
|
+
dest.before(node);
|
|
1044
|
+
if (node === end) return;
|
|
1045
|
+
node = next_node;
|
|
1046
|
+
}
|
|
1047
|
+
}
|
|
1048
|
+
/**
|
|
1049
|
+
* @param {EachState} state
|
|
1050
|
+
* @param {Effect | null} prev
|
|
1051
|
+
* @param {Effect | null} next
|
|
1052
|
+
*/
|
|
1053
|
+
function link(state, prev, next) {
|
|
1054
|
+
if (prev === null) state.effect.first = next;
|
|
1055
|
+
else prev.next = next;
|
|
1056
|
+
if (next === null) state.effect.last = prev;
|
|
1057
|
+
else next.prev = prev;
|
|
1058
|
+
}
|
|
1059
|
+
/**
|
|
1060
|
+
* @param {Array<any>} array
|
|
1061
|
+
* @param {(item: any, index: number) => string} key_fn
|
|
1062
|
+
* @returns {void}
|
|
1063
|
+
*/
|
|
1064
|
+
function validate_each_keys(array, key_fn) {
|
|
1065
|
+
const keys = /* @__PURE__ */ new Map();
|
|
1066
|
+
const length = array.length;
|
|
1067
|
+
for (let i = 0; i < length; i++) {
|
|
1068
|
+
const key = key_fn(array[i], i);
|
|
1069
|
+
if (keys.has(key)) {
|
|
1070
|
+
const a = String(keys.get(key));
|
|
1071
|
+
const b = String(i);
|
|
1072
|
+
/** @type {string | null} */
|
|
1073
|
+
let k = String(key);
|
|
1074
|
+
if (k.startsWith("[object ")) k = null;
|
|
1075
|
+
each_key_duplicate(a, b, k);
|
|
1076
|
+
}
|
|
1077
|
+
keys.set(key, i);
|
|
1078
|
+
}
|
|
1079
|
+
}
|
|
1080
|
+
//#endregion
|
|
1081
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/blocks/html.js
|
|
1082
|
+
/** @import { Effect, TemplateNode } from '#client' */
|
|
1083
|
+
/** @import {} from 'trusted-types' */
|
|
1084
|
+
/**
|
|
1085
|
+
* @param {Element} element
|
|
1086
|
+
* @param {string | null} server_hash
|
|
1087
|
+
* @param {string | TrustedHTML} value
|
|
1088
|
+
*/
|
|
1089
|
+
function check_hash(element, server_hash, value) {
|
|
1090
|
+
if (!server_hash || server_hash === hash(String(value ?? ""))) return;
|
|
1091
|
+
let location;
|
|
1092
|
+
const loc = element.__svelte_meta?.loc;
|
|
1093
|
+
if (loc) location = `near ${loc.file}:${loc.line}:${loc.column}`;
|
|
1094
|
+
else if (dev_current_component_function?.[FILENAME]) location = `in ${dev_current_component_function[FILENAME]}`;
|
|
1095
|
+
hydration_html_changed(sanitize_location(location));
|
|
1096
|
+
}
|
|
1097
|
+
/**
|
|
1098
|
+
* @param {Element | Text | Comment} node
|
|
1099
|
+
* @param {() => string | TrustedHTML} get_value
|
|
1100
|
+
* @param {boolean} [is_controlled]
|
|
1101
|
+
* @param {boolean} [svg]
|
|
1102
|
+
* @param {boolean} [mathml]
|
|
1103
|
+
* @param {boolean} [skip_warning]
|
|
1104
|
+
* @returns {void}
|
|
1105
|
+
*/
|
|
1106
|
+
function html(node, get_value, is_controlled = false, svg = false, mathml = false, skip_warning = false) {
|
|
1107
|
+
var anchor = node;
|
|
1108
|
+
/** @type {string | TrustedHTML} */
|
|
1109
|
+
var value = "";
|
|
1110
|
+
if (is_controlled) {
|
|
1111
|
+
var parent_node = node;
|
|
1112
|
+
if (hydrating) anchor = set_hydrate_node(/* @__PURE__ */ get_first_child(parent_node));
|
|
1113
|
+
}
|
|
1114
|
+
template_effect(() => {
|
|
1115
|
+
var effect = active_effect;
|
|
1116
|
+
if (value === (value = get_value() ?? "")) {
|
|
1117
|
+
if (hydrating) hydrate_next();
|
|
1118
|
+
return;
|
|
1119
|
+
}
|
|
1120
|
+
if (is_controlled && !hydrating) {
|
|
1121
|
+
effect.nodes = null;
|
|
1122
|
+
parent_node.innerHTML = value;
|
|
1123
|
+
if (value !== "") assign_nodes(/* @__PURE__ */ get_first_child(parent_node), parent_node.lastChild);
|
|
1124
|
+
return;
|
|
1125
|
+
}
|
|
1126
|
+
if (effect.nodes !== null) {
|
|
1127
|
+
remove_effect_dom(effect.nodes.start, effect.nodes.end);
|
|
1128
|
+
effect.nodes = null;
|
|
1129
|
+
}
|
|
1130
|
+
if (value === "") return;
|
|
1131
|
+
if (hydrating) {
|
|
1132
|
+
var hash = hydrate_node.data;
|
|
1133
|
+
/** @type {TemplateNode | null} */
|
|
1134
|
+
var next = hydrate_next();
|
|
1135
|
+
var last = next;
|
|
1136
|
+
while (next !== null && (next.nodeType !== 8 || next.data !== "")) {
|
|
1137
|
+
last = next;
|
|
1138
|
+
next = /* @__PURE__ */ get_next_sibling(next);
|
|
1139
|
+
}
|
|
1140
|
+
if (next === null) {
|
|
1141
|
+
hydration_mismatch();
|
|
1142
|
+
throw HYDRATION_ERROR;
|
|
1143
|
+
}
|
|
1144
|
+
if (!skip_warning) check_hash(next.parentNode, hash, value);
|
|
1145
|
+
assign_nodes(hydrate_node, last);
|
|
1146
|
+
anchor = set_hydrate_node(next);
|
|
1147
|
+
return;
|
|
1148
|
+
}
|
|
1149
|
+
var wrapper = create_element(svg ? "svg" : mathml ? "math" : "template", svg ? NAMESPACE_SVG : mathml ? NAMESPACE_MATHML : void 0);
|
|
1150
|
+
wrapper.innerHTML = value;
|
|
1151
|
+
/** @type {DocumentFragment | Element} */
|
|
1152
|
+
var node = svg || mathml ? wrapper : /** @type {HTMLTemplateElement} */ wrapper.content;
|
|
1153
|
+
assign_nodes(/* @__PURE__ */ get_first_child(node), node.lastChild);
|
|
1154
|
+
if (svg || mathml) while (/* @__PURE__ */ get_first_child(node)) anchor.before(/* @__PURE__ */ get_first_child(node));
|
|
1155
|
+
else anchor.before(node);
|
|
1156
|
+
});
|
|
1157
|
+
}
|
|
1158
|
+
//#endregion
|
|
1159
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/blocks/slot.js
|
|
1160
|
+
/**
|
|
1161
|
+
* @param {Comment} anchor
|
|
1162
|
+
* @param {Record<string, any>} $$props
|
|
1163
|
+
* @param {string} name
|
|
1164
|
+
* @param {Record<string, unknown>} slot_props
|
|
1165
|
+
* @param {null | ((anchor: Comment) => void)} fallback_fn
|
|
1166
|
+
*/
|
|
1167
|
+
function slot(anchor, $$props, name, slot_props, fallback_fn) {
|
|
1168
|
+
if (hydrating) hydrate_next();
|
|
1169
|
+
var slot_fn = $$props.$$slots?.[name];
|
|
1170
|
+
var is_interop = false;
|
|
1171
|
+
if (slot_fn === true) {
|
|
1172
|
+
slot_fn = $$props[name === "default" ? "children" : name];
|
|
1173
|
+
is_interop = true;
|
|
1174
|
+
}
|
|
1175
|
+
if (slot_fn === void 0) {
|
|
1176
|
+
if (fallback_fn !== null) fallback_fn(anchor);
|
|
1177
|
+
} else slot_fn(anchor, is_interop ? () => slot_props : slot_props);
|
|
1178
|
+
}
|
|
1179
|
+
/**
|
|
1180
|
+
* @param {Record<string, any>} props
|
|
1181
|
+
* @returns {Record<string, boolean>}
|
|
1182
|
+
*/
|
|
1183
|
+
function sanitize_slots(props) {
|
|
1184
|
+
/** @type {Record<string, boolean>} */
|
|
1185
|
+
const sanitized = {};
|
|
1186
|
+
if (props.children) sanitized.default = true;
|
|
1187
|
+
for (const key in props.$$slots) sanitized[key] = true;
|
|
1188
|
+
return sanitized;
|
|
1189
|
+
}
|
|
1190
|
+
//#endregion
|
|
1191
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/blocks/snippet.js
|
|
1192
|
+
/** @import { Snippet } from 'svelte' */
|
|
1193
|
+
/** @import { TemplateNode } from '#client' */
|
|
1194
|
+
/** @import { Getters } from '#shared' */
|
|
1195
|
+
/**
|
|
1196
|
+
* @template {(node: TemplateNode, ...args: any[]) => void} SnippetFn
|
|
1197
|
+
* @param {TemplateNode} node
|
|
1198
|
+
* @param {() => SnippetFn | null | undefined} get_snippet
|
|
1199
|
+
* @param {(() => any)[]} args
|
|
1200
|
+
* @returns {void}
|
|
1201
|
+
*/
|
|
1202
|
+
function snippet(node, get_snippet, ...args) {
|
|
1203
|
+
var branches = new BranchManager(node);
|
|
1204
|
+
block(() => {
|
|
1205
|
+
const snippet = get_snippet() ?? null;
|
|
1206
|
+
if (snippet == null) invalid_snippet();
|
|
1207
|
+
branches.ensure(snippet, snippet && ((anchor) => snippet(anchor, ...args)));
|
|
1208
|
+
}, EFFECT_TRANSPARENT);
|
|
1209
|
+
}
|
|
1210
|
+
/**
|
|
1211
|
+
* In development, wrap the snippet function so that it passes validation, and so that the
|
|
1212
|
+
* correct component context is set for ownership checks
|
|
1213
|
+
* @param {any} component
|
|
1214
|
+
* @param {(node: TemplateNode, ...args: any[]) => void} fn
|
|
1215
|
+
*/
|
|
1216
|
+
function wrap_snippet(component, fn) {
|
|
1217
|
+
const snippet = (node, ...args) => {
|
|
1218
|
+
var previous_component_function = dev_current_component_function;
|
|
1219
|
+
set_dev_current_component_function(component);
|
|
1220
|
+
try {
|
|
1221
|
+
return fn(node, ...args);
|
|
1222
|
+
} finally {
|
|
1223
|
+
set_dev_current_component_function(previous_component_function);
|
|
1224
|
+
}
|
|
1225
|
+
};
|
|
1226
|
+
prevent_snippet_stringification(snippet);
|
|
1227
|
+
return snippet;
|
|
1228
|
+
}
|
|
1229
|
+
//#endregion
|
|
1230
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/blocks/svelte-component.js
|
|
1231
|
+
/** @import { TemplateNode, Dom } from '#client' */
|
|
1232
|
+
/**
|
|
1233
|
+
* @template P
|
|
1234
|
+
* @template {(props: P) => void} C
|
|
1235
|
+
* @param {TemplateNode} node
|
|
1236
|
+
* @param {() => C} get_component
|
|
1237
|
+
* @param {(anchor: TemplateNode, component: C) => Dom | void} render_fn
|
|
1238
|
+
* @returns {void}
|
|
1239
|
+
*/
|
|
1240
|
+
function component(node, get_component, render_fn) {
|
|
1241
|
+
/** @type {TemplateNode | undefined} */
|
|
1242
|
+
var hydration_start_node;
|
|
1243
|
+
if (hydrating) {
|
|
1244
|
+
hydration_start_node = hydrate_node;
|
|
1245
|
+
hydrate_next();
|
|
1246
|
+
}
|
|
1247
|
+
var branches = new BranchManager(node);
|
|
1248
|
+
block(() => {
|
|
1249
|
+
var component = get_component() ?? null;
|
|
1250
|
+
if (hydrating) {
|
|
1251
|
+
if (read_hydration_instruction(hydration_start_node) === "[" !== (component !== null)) {
|
|
1252
|
+
var anchor = skip_nodes();
|
|
1253
|
+
set_hydrate_node(anchor);
|
|
1254
|
+
branches.anchor = anchor;
|
|
1255
|
+
set_hydrating(false);
|
|
1256
|
+
branches.ensure(component, component && ((target) => render_fn(target, component)));
|
|
1257
|
+
set_hydrating(true);
|
|
1258
|
+
return;
|
|
1259
|
+
}
|
|
1260
|
+
}
|
|
1261
|
+
branches.ensure(component, component && ((target) => render_fn(target, component)));
|
|
1262
|
+
}, EFFECT_TRANSPARENT);
|
|
1263
|
+
}
|
|
1264
|
+
//#endregion
|
|
1265
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/timing.js
|
|
1266
|
+
/** @import { Raf } from '#client' */
|
|
1267
|
+
var now = () => Date.now();
|
|
1268
|
+
/** @type {Raf} */
|
|
1269
|
+
var raf = {
|
|
1270
|
+
tick: (_) => noop(_),
|
|
1271
|
+
now: () => now(),
|
|
1272
|
+
tasks: /* @__PURE__ */ new Set()
|
|
1273
|
+
};
|
|
1274
|
+
//#endregion
|
|
1275
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/loop.js
|
|
1276
|
+
/** @import { TaskCallback, Task, TaskEntry } from '#client' */
|
|
1277
|
+
/**
|
|
1278
|
+
* @returns {void}
|
|
1279
|
+
*/
|
|
1280
|
+
function run_tasks() {
|
|
1281
|
+
const now = raf.now();
|
|
1282
|
+
raf.tasks.forEach((task) => {
|
|
1283
|
+
if (!task.c(now)) {
|
|
1284
|
+
raf.tasks.delete(task);
|
|
1285
|
+
task.f();
|
|
1286
|
+
}
|
|
1287
|
+
});
|
|
1288
|
+
if (raf.tasks.size !== 0) raf.tick(run_tasks);
|
|
1289
|
+
}
|
|
1290
|
+
/**
|
|
1291
|
+
* Creates a new task that runs on each raf frame
|
|
1292
|
+
* until it returns a falsy value or is aborted
|
|
1293
|
+
* @param {TaskCallback} callback
|
|
1294
|
+
* @returns {Task}
|
|
1295
|
+
*/
|
|
1296
|
+
function loop(callback) {
|
|
1297
|
+
/** @type {TaskEntry} */
|
|
1298
|
+
let task;
|
|
1299
|
+
if (raf.tasks.size === 0) raf.tick(run_tasks);
|
|
1300
|
+
return {
|
|
1301
|
+
promise: new Promise((fulfill) => {
|
|
1302
|
+
raf.tasks.add(task = {
|
|
1303
|
+
c: callback,
|
|
1304
|
+
f: fulfill
|
|
1305
|
+
});
|
|
1306
|
+
}),
|
|
1307
|
+
abort() {
|
|
1308
|
+
raf.tasks.delete(task);
|
|
1309
|
+
}
|
|
1310
|
+
};
|
|
1311
|
+
}
|
|
1312
|
+
//#endregion
|
|
1313
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/transitions.js
|
|
1314
|
+
/** @import { AnimateFn, Animation, AnimationConfig, EachItem, Effect, EffectNodes, TransitionFn, TransitionManager } from '#client' */
|
|
1315
|
+
/**
|
|
1316
|
+
* @param {Element} element
|
|
1317
|
+
* @param {'introstart' | 'introend' | 'outrostart' | 'outroend'} type
|
|
1318
|
+
* @returns {void}
|
|
1319
|
+
*/
|
|
1320
|
+
function dispatch_event(element, type) {
|
|
1321
|
+
without_reactive_context(() => {
|
|
1322
|
+
element.dispatchEvent(new CustomEvent(type));
|
|
1323
|
+
});
|
|
1324
|
+
}
|
|
1325
|
+
/**
|
|
1326
|
+
* Converts a property to the camel-case format expected by Element.animate(), KeyframeEffect(), and KeyframeEffect.setKeyframes().
|
|
1327
|
+
* @param {string} style
|
|
1328
|
+
* @returns {string}
|
|
1329
|
+
*/
|
|
1330
|
+
function css_property_to_camelcase(style) {
|
|
1331
|
+
if (style === "float") return "cssFloat";
|
|
1332
|
+
if (style === "offset") return "cssOffset";
|
|
1333
|
+
if (style.startsWith("--")) return style;
|
|
1334
|
+
const parts = style.split("-");
|
|
1335
|
+
if (parts.length === 1) return parts[0];
|
|
1336
|
+
return parts[0] + parts.slice(1).map(
|
|
1337
|
+
/** @param {any} word */
|
|
1338
|
+
(word) => word[0].toUpperCase() + word.slice(1)
|
|
1339
|
+
).join("");
|
|
1340
|
+
}
|
|
1341
|
+
/**
|
|
1342
|
+
* @param {string} css
|
|
1343
|
+
* @returns {Keyframe}
|
|
1344
|
+
*/
|
|
1345
|
+
function css_to_keyframe(css) {
|
|
1346
|
+
/** @type {Keyframe} */
|
|
1347
|
+
const keyframe = {};
|
|
1348
|
+
const parts = css.split(";");
|
|
1349
|
+
for (const part of parts) {
|
|
1350
|
+
const [property, value] = part.split(":");
|
|
1351
|
+
if (!property || value === void 0) break;
|
|
1352
|
+
const formatted_property = css_property_to_camelcase(property.trim());
|
|
1353
|
+
keyframe[formatted_property] = value.trim();
|
|
1354
|
+
}
|
|
1355
|
+
return keyframe;
|
|
1356
|
+
}
|
|
1357
|
+
/** @param {number} t */
|
|
1358
|
+
var linear = (t) => t;
|
|
1359
|
+
/** @type {Effect | null} */
|
|
1360
|
+
var animation_effect_override = null;
|
|
1361
|
+
/** @param {Effect | null} v */
|
|
1362
|
+
function set_animation_effect_override(v) {
|
|
1363
|
+
animation_effect_override = v;
|
|
1364
|
+
}
|
|
1365
|
+
/**
|
|
1366
|
+
* Called inside keyed `{#each ...}` blocks (as `$.animation(...)`). This creates an animation manager
|
|
1367
|
+
* and attaches it to the block, so that moves can be animated following reconciliation.
|
|
1368
|
+
* @template P
|
|
1369
|
+
* @param {Element} element
|
|
1370
|
+
* @param {() => AnimateFn<P | undefined>} get_fn
|
|
1371
|
+
* @param {(() => P) | null} get_params
|
|
1372
|
+
*/
|
|
1373
|
+
function animation(element, get_fn, get_params) {
|
|
1374
|
+
var nodes = (animation_effect_override ?? active_effect).nodes;
|
|
1375
|
+
/** @type {DOMRect} */
|
|
1376
|
+
var from;
|
|
1377
|
+
/** @type {DOMRect} */
|
|
1378
|
+
var to;
|
|
1379
|
+
/** @type {Animation | undefined} */
|
|
1380
|
+
var animation;
|
|
1381
|
+
/** @type {null | { position: string, width: string, height: string, transform: string }} */
|
|
1382
|
+
var original_styles = null;
|
|
1383
|
+
nodes.a ??= {
|
|
1384
|
+
element,
|
|
1385
|
+
measure() {
|
|
1386
|
+
from = this.element.getBoundingClientRect();
|
|
1387
|
+
},
|
|
1388
|
+
apply() {
|
|
1389
|
+
animation?.abort();
|
|
1390
|
+
to = this.element.getBoundingClientRect();
|
|
1391
|
+
if (from.left !== to.left || from.right !== to.right || from.top !== to.top || from.bottom !== to.bottom) {
|
|
1392
|
+
const options = get_fn()(this.element, {
|
|
1393
|
+
from,
|
|
1394
|
+
to
|
|
1395
|
+
}, get_params?.());
|
|
1396
|
+
animation = animate(this.element, options, void 0, 1, () => {}, () => {
|
|
1397
|
+
animation?.abort();
|
|
1398
|
+
animation = void 0;
|
|
1399
|
+
});
|
|
1400
|
+
}
|
|
1401
|
+
},
|
|
1402
|
+
fix() {
|
|
1403
|
+
if (element.getAnimations().length) return;
|
|
1404
|
+
var { position, width, height } = getComputedStyle(element);
|
|
1405
|
+
if (position !== "absolute" && position !== "fixed") {
|
|
1406
|
+
var style = element.style;
|
|
1407
|
+
original_styles = {
|
|
1408
|
+
position: style.position,
|
|
1409
|
+
width: style.width,
|
|
1410
|
+
height: style.height,
|
|
1411
|
+
transform: style.transform
|
|
1412
|
+
};
|
|
1413
|
+
style.position = "absolute";
|
|
1414
|
+
style.width = width;
|
|
1415
|
+
style.height = height;
|
|
1416
|
+
var to = element.getBoundingClientRect();
|
|
1417
|
+
if (from.left !== to.left || from.top !== to.top) {
|
|
1418
|
+
var transform = `translate(${from.left - to.left}px, ${from.top - to.top}px)`;
|
|
1419
|
+
style.transform = style.transform ? `${style.transform} ${transform}` : transform;
|
|
1420
|
+
}
|
|
1421
|
+
}
|
|
1422
|
+
},
|
|
1423
|
+
unfix() {
|
|
1424
|
+
if (original_styles) {
|
|
1425
|
+
var style = element.style;
|
|
1426
|
+
style.position = original_styles.position;
|
|
1427
|
+
style.width = original_styles.width;
|
|
1428
|
+
style.height = original_styles.height;
|
|
1429
|
+
style.transform = original_styles.transform;
|
|
1430
|
+
}
|
|
1431
|
+
}
|
|
1432
|
+
};
|
|
1433
|
+
nodes.a.element = element;
|
|
1434
|
+
}
|
|
1435
|
+
/**
|
|
1436
|
+
* Called inside block effects as `$.transition(...)`. This creates a transition manager and
|
|
1437
|
+
* attaches it to the current effect — later, inside `pause_effect` and `resume_effect`, we
|
|
1438
|
+
* use this to create `intro` and `outro` transitions.
|
|
1439
|
+
* @template P
|
|
1440
|
+
* @param {number} flags
|
|
1441
|
+
* @param {HTMLElement} element
|
|
1442
|
+
* @param {() => TransitionFn<P | undefined>} get_fn
|
|
1443
|
+
* @param {(() => P) | null} get_params
|
|
1444
|
+
* @returns {void}
|
|
1445
|
+
*/
|
|
1446
|
+
function transition(flags, element, get_fn, get_params) {
|
|
1447
|
+
var is_intro = (flags & 1) !== 0;
|
|
1448
|
+
var is_outro = (flags & 2) !== 0;
|
|
1449
|
+
var is_both = is_intro && is_outro;
|
|
1450
|
+
var is_global = (flags & 4) !== 0;
|
|
1451
|
+
/** @type {'in' | 'out' | 'both'} */
|
|
1452
|
+
var direction = is_both ? "both" : is_intro ? "in" : "out";
|
|
1453
|
+
/** @type {AnimationConfig | ((opts: { direction: 'in' | 'out' }) => AnimationConfig) | undefined} */
|
|
1454
|
+
var current_options;
|
|
1455
|
+
var inert = element.inert;
|
|
1456
|
+
/**
|
|
1457
|
+
* The default overflow style, stashed so we can revert changes during the transition
|
|
1458
|
+
* that are necessary to work around a Safari <18 bug
|
|
1459
|
+
* TODO 6.0 remove this, if older versions of Safari have died out enough
|
|
1460
|
+
*/
|
|
1461
|
+
var overflow = element.style.overflow;
|
|
1462
|
+
/** @type {Animation | undefined} */
|
|
1463
|
+
var intro;
|
|
1464
|
+
/** @type {Animation | undefined} */
|
|
1465
|
+
var outro;
|
|
1466
|
+
function get_options() {
|
|
1467
|
+
return without_reactive_context(() => {
|
|
1468
|
+
return current_options ??= get_fn()(element, get_params?.() ?? {}, { direction });
|
|
1469
|
+
});
|
|
1470
|
+
}
|
|
1471
|
+
/** @type {TransitionManager} */
|
|
1472
|
+
var transition = {
|
|
1473
|
+
is_global,
|
|
1474
|
+
in() {
|
|
1475
|
+
element.inert = inert;
|
|
1476
|
+
if (!is_intro) {
|
|
1477
|
+
outro?.abort();
|
|
1478
|
+
outro?.reset?.();
|
|
1479
|
+
return;
|
|
1480
|
+
}
|
|
1481
|
+
if (!is_outro) intro?.abort();
|
|
1482
|
+
intro = animate(element, get_options(), outro, 1, () => {
|
|
1483
|
+
dispatch_event(element, "introstart");
|
|
1484
|
+
}, () => {
|
|
1485
|
+
dispatch_event(element, "introend");
|
|
1486
|
+
intro?.abort();
|
|
1487
|
+
intro = current_options = void 0;
|
|
1488
|
+
element.style.overflow = overflow;
|
|
1489
|
+
});
|
|
1490
|
+
},
|
|
1491
|
+
out(fn) {
|
|
1492
|
+
if (!is_outro) {
|
|
1493
|
+
fn?.();
|
|
1494
|
+
current_options = void 0;
|
|
1495
|
+
return;
|
|
1496
|
+
}
|
|
1497
|
+
element.inert = true;
|
|
1498
|
+
outro = animate(element, get_options(), intro, 0, () => {
|
|
1499
|
+
dispatch_event(element, "outrostart");
|
|
1500
|
+
}, () => {
|
|
1501
|
+
dispatch_event(element, "outroend");
|
|
1502
|
+
fn?.();
|
|
1503
|
+
});
|
|
1504
|
+
},
|
|
1505
|
+
stop: () => {
|
|
1506
|
+
intro?.abort();
|
|
1507
|
+
outro?.abort();
|
|
1508
|
+
}
|
|
1509
|
+
};
|
|
1510
|
+
var e = active_effect;
|
|
1511
|
+
(e.nodes.t ??= []).push(transition);
|
|
1512
|
+
if (is_intro && should_intro) {
|
|
1513
|
+
var run = is_global;
|
|
1514
|
+
if (!run) {
|
|
1515
|
+
var block = e.parent;
|
|
1516
|
+
while (block && (block.f & 65536) !== 0) while (block = block.parent) if ((block.f & 16) !== 0) break;
|
|
1517
|
+
run = !block || (block.f & 32768) !== 0;
|
|
1518
|
+
}
|
|
1519
|
+
if (run) effect(() => {
|
|
1520
|
+
untrack(() => transition.in());
|
|
1521
|
+
});
|
|
1522
|
+
}
|
|
1523
|
+
}
|
|
1524
|
+
/**
|
|
1525
|
+
* Animates an element, according to the provided configuration
|
|
1526
|
+
* @param {Element} element
|
|
1527
|
+
* @param {AnimationConfig | ((opts: { direction: 'in' | 'out' }) => AnimationConfig)} options
|
|
1528
|
+
* @param {Animation | undefined} counterpart The corresponding intro/outro to this outro/intro
|
|
1529
|
+
* @param {number} t2 The target `t` value — `1` for intro, `0` for outro
|
|
1530
|
+
* @param {(() => void)} on_begin Called just before beginning the animation
|
|
1531
|
+
* @param {(() => void)} on_finish Called after successfully completing the animation
|
|
1532
|
+
* @returns {Animation}
|
|
1533
|
+
*/
|
|
1534
|
+
function animate(element, options, counterpart, t2, on_begin, on_finish) {
|
|
1535
|
+
var is_intro = t2 === 1;
|
|
1536
|
+
if (is_function(options)) {
|
|
1537
|
+
/** @type {Animation} */
|
|
1538
|
+
var a;
|
|
1539
|
+
var aborted = false;
|
|
1540
|
+
queue_micro_task(() => {
|
|
1541
|
+
if (aborted) return;
|
|
1542
|
+
a = animate(element, options({ direction: is_intro ? "in" : "out" }), counterpart, t2, on_begin, on_finish);
|
|
1543
|
+
});
|
|
1544
|
+
return {
|
|
1545
|
+
abort: () => {
|
|
1546
|
+
aborted = true;
|
|
1547
|
+
a?.abort();
|
|
1548
|
+
},
|
|
1549
|
+
deactivate: () => a.deactivate(),
|
|
1550
|
+
reset: () => a.reset(),
|
|
1551
|
+
t: () => a.t()
|
|
1552
|
+
};
|
|
1553
|
+
}
|
|
1554
|
+
counterpart?.deactivate();
|
|
1555
|
+
if (!options?.duration && !options?.delay) {
|
|
1556
|
+
on_begin();
|
|
1557
|
+
on_finish();
|
|
1558
|
+
return {
|
|
1559
|
+
abort: noop,
|
|
1560
|
+
deactivate: noop,
|
|
1561
|
+
reset: noop,
|
|
1562
|
+
t: () => t2
|
|
1563
|
+
};
|
|
1564
|
+
}
|
|
1565
|
+
const { delay = 0, css, tick, easing = linear } = options;
|
|
1566
|
+
var keyframes = [];
|
|
1567
|
+
if (is_intro && counterpart === void 0) {
|
|
1568
|
+
if (tick) tick(0, 1);
|
|
1569
|
+
if (css) {
|
|
1570
|
+
var styles = css_to_keyframe(css(0, 1));
|
|
1571
|
+
keyframes.push(styles, styles);
|
|
1572
|
+
}
|
|
1573
|
+
}
|
|
1574
|
+
var get_t = () => 1 - t2;
|
|
1575
|
+
var animation = element.animate(keyframes, {
|
|
1576
|
+
duration: delay,
|
|
1577
|
+
fill: "forwards"
|
|
1578
|
+
});
|
|
1579
|
+
animation.onfinish = () => {
|
|
1580
|
+
animation.cancel();
|
|
1581
|
+
on_begin();
|
|
1582
|
+
var t1 = counterpart?.t() ?? 1 - t2;
|
|
1583
|
+
counterpart?.abort();
|
|
1584
|
+
var delta = t2 - t1;
|
|
1585
|
+
var duration = options.duration * Math.abs(delta);
|
|
1586
|
+
var keyframes = [];
|
|
1587
|
+
if (duration > 0) {
|
|
1588
|
+
/**
|
|
1589
|
+
* Whether or not the CSS includes `overflow: hidden`, in which case we need to
|
|
1590
|
+
* add it as an inline style to work around a Safari <18 bug
|
|
1591
|
+
* TODO 6.0 remove this, if possible
|
|
1592
|
+
*/
|
|
1593
|
+
var needs_overflow_hidden = false;
|
|
1594
|
+
if (css) {
|
|
1595
|
+
var n = Math.ceil(duration / (1e3 / 60));
|
|
1596
|
+
for (var i = 0; i <= n; i += 1) {
|
|
1597
|
+
var t = t1 + delta * easing(i / n);
|
|
1598
|
+
var styles = css_to_keyframe(css(t, 1 - t));
|
|
1599
|
+
keyframes.push(styles);
|
|
1600
|
+
needs_overflow_hidden ||= styles.overflow === "hidden";
|
|
1601
|
+
}
|
|
1602
|
+
}
|
|
1603
|
+
if (needs_overflow_hidden)
|
|
1604
|
+
/** @type {HTMLElement} */ element.style.overflow = "hidden";
|
|
1605
|
+
get_t = () => {
|
|
1606
|
+
var time = animation.currentTime;
|
|
1607
|
+
return t1 + delta * easing(time / duration);
|
|
1608
|
+
};
|
|
1609
|
+
if (tick) loop(() => {
|
|
1610
|
+
if (animation.playState !== "running") return false;
|
|
1611
|
+
var t = get_t();
|
|
1612
|
+
tick(t, 1 - t);
|
|
1613
|
+
return true;
|
|
1614
|
+
});
|
|
1615
|
+
}
|
|
1616
|
+
animation = element.animate(keyframes, {
|
|
1617
|
+
duration,
|
|
1618
|
+
fill: "forwards"
|
|
1619
|
+
});
|
|
1620
|
+
animation.onfinish = () => {
|
|
1621
|
+
get_t = () => t2;
|
|
1622
|
+
tick?.(t2, 1 - t2);
|
|
1623
|
+
on_finish();
|
|
1624
|
+
};
|
|
1625
|
+
};
|
|
1626
|
+
return {
|
|
1627
|
+
abort: () => {
|
|
1628
|
+
if (animation) {
|
|
1629
|
+
animation.cancel();
|
|
1630
|
+
animation.effect = null;
|
|
1631
|
+
animation.onfinish = noop;
|
|
1632
|
+
}
|
|
1633
|
+
},
|
|
1634
|
+
deactivate: () => {
|
|
1635
|
+
on_finish = noop;
|
|
1636
|
+
},
|
|
1637
|
+
reset: () => {
|
|
1638
|
+
if (t2 === 0) tick?.(1, 0);
|
|
1639
|
+
},
|
|
1640
|
+
t: () => get_t()
|
|
1641
|
+
};
|
|
1642
|
+
}
|
|
1643
|
+
//#endregion
|
|
1644
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/blocks/svelte-element.js
|
|
1645
|
+
/** @import { Effect, EffectNodes, TemplateNode } from '#client' */
|
|
1646
|
+
/**
|
|
1647
|
+
* @param {Comment | Element} node
|
|
1648
|
+
* @param {() => string} get_tag
|
|
1649
|
+
* @param {boolean} is_svg
|
|
1650
|
+
* @param {undefined | ((element: Element, anchor: Node | null) => void)} render_fn,
|
|
1651
|
+
* @param {undefined | (() => string)} get_namespace
|
|
1652
|
+
* @param {undefined | [number, number]} location
|
|
1653
|
+
* @returns {void}
|
|
1654
|
+
*/
|
|
1655
|
+
function element(node, get_tag, is_svg, render_fn, get_namespace, location) {
|
|
1656
|
+
let was_hydrating = hydrating;
|
|
1657
|
+
if (hydrating) hydrate_next();
|
|
1658
|
+
var filename = location && component_context?.function[FILENAME];
|
|
1659
|
+
/** @type {null | Element} */
|
|
1660
|
+
var element = null;
|
|
1661
|
+
if (hydrating && hydrate_node.nodeType === 1) {
|
|
1662
|
+
element = hydrate_node;
|
|
1663
|
+
hydrate_next();
|
|
1664
|
+
}
|
|
1665
|
+
var anchor = hydrating ? hydrate_node : node;
|
|
1666
|
+
/**
|
|
1667
|
+
* We track this so we can set it when changing the element, allowing any
|
|
1668
|
+
* `animate:` directive to bind itself to the correct block
|
|
1669
|
+
*/
|
|
1670
|
+
var parent_effect = active_effect;
|
|
1671
|
+
var branches = new BranchManager(anchor, false);
|
|
1672
|
+
block(() => {
|
|
1673
|
+
const next_tag = get_tag() || null;
|
|
1674
|
+
var ns = get_namespace ? get_namespace() : is_svg || next_tag === "svg" ? NAMESPACE_SVG : void 0;
|
|
1675
|
+
if (next_tag === null) {
|
|
1676
|
+
branches.ensure(null, null);
|
|
1677
|
+
set_should_intro(true);
|
|
1678
|
+
return;
|
|
1679
|
+
}
|
|
1680
|
+
branches.ensure(next_tag, (anchor) => {
|
|
1681
|
+
if (next_tag) {
|
|
1682
|
+
element = hydrating ? element : create_element(next_tag, ns);
|
|
1683
|
+
if (location) element.__svelte_meta = {
|
|
1684
|
+
parent: dev_stack,
|
|
1685
|
+
loc: {
|
|
1686
|
+
file: filename,
|
|
1687
|
+
line: location[0],
|
|
1688
|
+
column: location[1]
|
|
1689
|
+
}
|
|
1690
|
+
};
|
|
1691
|
+
assign_nodes(element, element);
|
|
1692
|
+
if (render_fn) {
|
|
1693
|
+
if (hydrating && is_raw_text_element(next_tag)) element.append(document.createComment(""));
|
|
1694
|
+
var child_anchor = hydrating ? /* @__PURE__ */ get_first_child(element) : element.appendChild(create_text());
|
|
1695
|
+
if (hydrating) if (child_anchor === null) set_hydrating(false);
|
|
1696
|
+
else set_hydrate_node(child_anchor);
|
|
1697
|
+
set_animation_effect_override(parent_effect);
|
|
1698
|
+
render_fn(element, child_anchor);
|
|
1699
|
+
set_animation_effect_override(null);
|
|
1700
|
+
}
|
|
1701
|
+
/** @type {Effect & { nodes: EffectNodes }} */ active_effect.nodes.end = element;
|
|
1702
|
+
anchor.before(element);
|
|
1703
|
+
}
|
|
1704
|
+
if (hydrating) set_hydrate_node(anchor);
|
|
1705
|
+
});
|
|
1706
|
+
set_should_intro(true);
|
|
1707
|
+
return () => {
|
|
1708
|
+
if (next_tag) set_should_intro(false);
|
|
1709
|
+
};
|
|
1710
|
+
}, EFFECT_TRANSPARENT);
|
|
1711
|
+
teardown(() => {
|
|
1712
|
+
set_should_intro(true);
|
|
1713
|
+
});
|
|
1714
|
+
if (was_hydrating) {
|
|
1715
|
+
set_hydrating(true);
|
|
1716
|
+
set_hydrate_node(anchor);
|
|
1717
|
+
}
|
|
1718
|
+
}
|
|
1719
|
+
//#endregion
|
|
1720
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/blocks/svelte-head.js
|
|
1721
|
+
/** @import { TemplateNode } from '#client' */
|
|
1722
|
+
/**
|
|
1723
|
+
* @param {string} hash
|
|
1724
|
+
* @param {(anchor: Node) => void} render_fn
|
|
1725
|
+
* @returns {void}
|
|
1726
|
+
*/
|
|
1727
|
+
function head(hash, render_fn) {
|
|
1728
|
+
let previous_hydrate_node = null;
|
|
1729
|
+
let was_hydrating = hydrating;
|
|
1730
|
+
/** @type {Comment | Text} */
|
|
1731
|
+
var anchor;
|
|
1732
|
+
if (hydrating) {
|
|
1733
|
+
previous_hydrate_node = hydrate_node;
|
|
1734
|
+
var head_anchor = /* @__PURE__ */ get_first_child(document.head);
|
|
1735
|
+
while (head_anchor !== null && (head_anchor.nodeType !== 8 || head_anchor.data !== hash)) head_anchor = /* @__PURE__ */ get_next_sibling(head_anchor);
|
|
1736
|
+
if (head_anchor === null) set_hydrating(false);
|
|
1737
|
+
else {
|
|
1738
|
+
var start = /* @__PURE__ */ get_next_sibling(head_anchor);
|
|
1739
|
+
head_anchor.remove();
|
|
1740
|
+
set_hydrate_node(start);
|
|
1741
|
+
}
|
|
1742
|
+
}
|
|
1743
|
+
if (!hydrating) anchor = document.head.appendChild(create_text());
|
|
1744
|
+
try {
|
|
1745
|
+
block(() => {
|
|
1746
|
+
var e = branch(() => render_fn(anchor));
|
|
1747
|
+
e.f |= HEAD_EFFECT;
|
|
1748
|
+
});
|
|
1749
|
+
} finally {
|
|
1750
|
+
if (was_hydrating) {
|
|
1751
|
+
set_hydrating(true);
|
|
1752
|
+
set_hydrate_node(previous_hydrate_node);
|
|
1753
|
+
}
|
|
1754
|
+
}
|
|
1755
|
+
}
|
|
1756
|
+
//#endregion
|
|
1757
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/css.js
|
|
1758
|
+
/**
|
|
1759
|
+
* @param {Node} anchor
|
|
1760
|
+
* @param {{ hash: string, code: string }} css
|
|
1761
|
+
*/
|
|
1762
|
+
function append_styles(anchor, css) {
|
|
1763
|
+
effect(() => {
|
|
1764
|
+
var root = anchor.getRootNode();
|
|
1765
|
+
var target = root.host ? root : /** @type {Document} */ root.head ?? root.ownerDocument.head;
|
|
1766
|
+
if (!target.querySelector("#" + css.hash)) {
|
|
1767
|
+
const style = create_element("style");
|
|
1768
|
+
style.id = css.hash;
|
|
1769
|
+
style.textContent = css.code;
|
|
1770
|
+
target.appendChild(style);
|
|
1771
|
+
register_style(css.hash, style);
|
|
1772
|
+
}
|
|
1773
|
+
});
|
|
1774
|
+
}
|
|
1775
|
+
//#endregion
|
|
1776
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/actions.js
|
|
1777
|
+
/** @import { ActionPayload } from '#client' */
|
|
1778
|
+
/**
|
|
1779
|
+
* @template P
|
|
1780
|
+
* @param {Element} dom
|
|
1781
|
+
* @param {(dom: Element, value?: P) => ActionPayload<P>} action
|
|
1782
|
+
* @param {() => P} [get_value]
|
|
1783
|
+
* @returns {void}
|
|
1784
|
+
*/
|
|
1785
|
+
function action(dom, action, get_value) {
|
|
1786
|
+
effect(() => {
|
|
1787
|
+
var payload = untrack(() => action(dom, get_value?.()) || {});
|
|
1788
|
+
if (get_value && payload?.update) {
|
|
1789
|
+
var inited = false;
|
|
1790
|
+
/** @type {P} */
|
|
1791
|
+
var prev = {};
|
|
1792
|
+
render_effect(() => {
|
|
1793
|
+
var value = get_value();
|
|
1794
|
+
deep_read_state(value);
|
|
1795
|
+
if (inited && safe_not_equal(prev, value)) {
|
|
1796
|
+
prev = value;
|
|
1797
|
+
/** @type {Function} */ payload.update(value);
|
|
1798
|
+
}
|
|
1799
|
+
});
|
|
1800
|
+
inited = true;
|
|
1801
|
+
}
|
|
1802
|
+
if (payload?.destroy) return () => payload.destroy();
|
|
1803
|
+
});
|
|
1804
|
+
}
|
|
1805
|
+
//#endregion
|
|
1806
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/attachments.js
|
|
1807
|
+
/** @import { Effect } from '#client' */
|
|
1808
|
+
/**
|
|
1809
|
+
* @param {Element} node
|
|
1810
|
+
* @param {() => (node: Element) => void} get_fn
|
|
1811
|
+
*/
|
|
1812
|
+
function attach(node, get_fn) {
|
|
1813
|
+
/** @type {false | undefined | ((node: Element) => void)} */
|
|
1814
|
+
var fn = void 0;
|
|
1815
|
+
/** @type {Effect | null} */
|
|
1816
|
+
var e;
|
|
1817
|
+
managed(() => {
|
|
1818
|
+
if (fn !== (fn = get_fn())) {
|
|
1819
|
+
if (e) {
|
|
1820
|
+
destroy_effect(e);
|
|
1821
|
+
e = null;
|
|
1822
|
+
}
|
|
1823
|
+
if (fn) e = branch(() => {
|
|
1824
|
+
effect(() => fn(node));
|
|
1825
|
+
});
|
|
1826
|
+
}
|
|
1827
|
+
});
|
|
1828
|
+
}
|
|
1829
|
+
//#endregion
|
|
1830
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/class.js
|
|
1831
|
+
/**
|
|
1832
|
+
* @param {Element} dom
|
|
1833
|
+
* @param {boolean | number} is_html
|
|
1834
|
+
* @param {string | null} value
|
|
1835
|
+
* @param {string} [hash]
|
|
1836
|
+
* @param {Record<string, any>} [prev_classes]
|
|
1837
|
+
* @param {Record<string, any>} [next_classes]
|
|
1838
|
+
* @returns {Record<string, boolean> | undefined}
|
|
1839
|
+
*/
|
|
1840
|
+
function set_class(dom, is_html, value, hash, prev_classes, next_classes) {
|
|
1841
|
+
var prev = dom[CLASS_CACHE];
|
|
1842
|
+
if (hydrating || prev !== value || prev === void 0) {
|
|
1843
|
+
var next_class_name = to_class(value, hash, next_classes);
|
|
1844
|
+
if (!hydrating || next_class_name !== dom.getAttribute("class")) if (next_class_name == null) dom.removeAttribute("class");
|
|
1845
|
+
else if (is_html) dom.className = next_class_name;
|
|
1846
|
+
else dom.setAttribute("class", next_class_name);
|
|
1847
|
+
/** @type {any} */ dom[CLASS_CACHE] = value;
|
|
1848
|
+
} else if (next_classes && prev_classes !== next_classes) for (var key in next_classes) {
|
|
1849
|
+
var is_present = !!next_classes[key];
|
|
1850
|
+
if (prev_classes == null || is_present !== !!prev_classes[key]) dom.classList.toggle(key, is_present);
|
|
1851
|
+
}
|
|
1852
|
+
return next_classes;
|
|
1853
|
+
}
|
|
1854
|
+
//#endregion
|
|
1855
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/style.js
|
|
1856
|
+
/**
|
|
1857
|
+
* @param {Element & ElementCSSInlineStyle} dom
|
|
1858
|
+
* @param {Record<string, any>} prev
|
|
1859
|
+
* @param {Record<string, any>} next
|
|
1860
|
+
* @param {string} [priority]
|
|
1861
|
+
*/
|
|
1862
|
+
function update_styles(dom, prev = {}, next, priority) {
|
|
1863
|
+
for (var key in next) {
|
|
1864
|
+
var value = next[key];
|
|
1865
|
+
if (prev[key] !== value) if (next[key] == null) dom.style.removeProperty(key);
|
|
1866
|
+
else dom.style.setProperty(key, value, priority);
|
|
1867
|
+
}
|
|
1868
|
+
}
|
|
1869
|
+
/**
|
|
1870
|
+
* @param {Element & ElementCSSInlineStyle} dom
|
|
1871
|
+
* @param {string | null} value
|
|
1872
|
+
* @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [prev_styles]
|
|
1873
|
+
* @param {Record<string, any> | [Record<string, any>, Record<string, any>]} [next_styles]
|
|
1874
|
+
*/
|
|
1875
|
+
function set_style(dom, value, prev_styles, next_styles) {
|
|
1876
|
+
var prev = dom[STYLE_CACHE];
|
|
1877
|
+
if (hydrating || prev !== value) {
|
|
1878
|
+
var next_style_attr = to_style(value, next_styles);
|
|
1879
|
+
if (!hydrating || next_style_attr !== dom.getAttribute("style")) if (next_style_attr == null) dom.removeAttribute("style");
|
|
1880
|
+
else dom.style.cssText = next_style_attr;
|
|
1881
|
+
/** @type {any} */ dom[STYLE_CACHE] = value;
|
|
1882
|
+
} else if (next_styles) if (Array.isArray(next_styles)) {
|
|
1883
|
+
update_styles(dom, prev_styles?.[0], next_styles[0]);
|
|
1884
|
+
update_styles(dom, prev_styles?.[1], next_styles[1], "important");
|
|
1885
|
+
} else update_styles(dom, prev_styles, next_styles);
|
|
1886
|
+
return next_styles;
|
|
1887
|
+
}
|
|
1888
|
+
//#endregion
|
|
1889
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/bindings/select.js
|
|
1890
|
+
/**
|
|
1891
|
+
* Selects the correct option(s) (depending on whether this is a multiple select)
|
|
1892
|
+
* @template V
|
|
1893
|
+
* @param {HTMLSelectElement} select
|
|
1894
|
+
* @param {V} value
|
|
1895
|
+
* @param {boolean} mounting
|
|
1896
|
+
*/
|
|
1897
|
+
function select_option(select, value, mounting = false) {
|
|
1898
|
+
if (select.multiple) {
|
|
1899
|
+
if (value == void 0) return;
|
|
1900
|
+
if (!is_array(value)) return select_multiple_invalid_value();
|
|
1901
|
+
for (var option of select.options) option.selected = value.includes(get_option_value(option));
|
|
1902
|
+
return;
|
|
1903
|
+
}
|
|
1904
|
+
for (option of select.options) if (is(get_option_value(option), value)) {
|
|
1905
|
+
option.selected = true;
|
|
1906
|
+
return;
|
|
1907
|
+
}
|
|
1908
|
+
if (!mounting || value !== void 0) select.selectedIndex = -1;
|
|
1909
|
+
}
|
|
1910
|
+
/**
|
|
1911
|
+
* Selects the correct option(s) if `value` is given,
|
|
1912
|
+
* and then sets up a mutation observer to sync the
|
|
1913
|
+
* current selection to the dom when it changes. Such
|
|
1914
|
+
* changes could for example occur when options are
|
|
1915
|
+
* inside an `#each` block.
|
|
1916
|
+
* @param {HTMLSelectElement} select
|
|
1917
|
+
*/
|
|
1918
|
+
function init_select(select) {
|
|
1919
|
+
var observer = new MutationObserver(() => {
|
|
1920
|
+
select_option(select, select.__value);
|
|
1921
|
+
});
|
|
1922
|
+
observer.observe(select, {
|
|
1923
|
+
childList: true,
|
|
1924
|
+
subtree: true,
|
|
1925
|
+
attributes: true,
|
|
1926
|
+
attributeFilter: ["value"]
|
|
1927
|
+
});
|
|
1928
|
+
teardown(() => {
|
|
1929
|
+
observer.disconnect();
|
|
1930
|
+
});
|
|
1931
|
+
}
|
|
1932
|
+
/**
|
|
1933
|
+
* @param {HTMLSelectElement} select
|
|
1934
|
+
* @param {() => unknown} get
|
|
1935
|
+
* @param {(value: unknown) => void} set
|
|
1936
|
+
* @returns {void}
|
|
1937
|
+
*/
|
|
1938
|
+
function bind_select_value(select, get, set = get) {
|
|
1939
|
+
var batches = /* @__PURE__ */ new WeakSet();
|
|
1940
|
+
var mounting = true;
|
|
1941
|
+
listen_to_event_and_reset_event(select, "change", (is_reset) => {
|
|
1942
|
+
var query = is_reset ? "[selected]" : ":checked";
|
|
1943
|
+
/** @type {unknown} */
|
|
1944
|
+
var value;
|
|
1945
|
+
if (select.multiple) value = [].map.call(select.querySelectorAll(query), get_option_value);
|
|
1946
|
+
else {
|
|
1947
|
+
/** @type {HTMLOptionElement | null} */
|
|
1948
|
+
var selected_option = select.querySelector(query) ?? select.querySelector("option:not([disabled])");
|
|
1949
|
+
value = selected_option && get_option_value(selected_option);
|
|
1950
|
+
}
|
|
1951
|
+
set(value);
|
|
1952
|
+
select.__value = value;
|
|
1953
|
+
if (current_batch !== null) batches.add(current_batch);
|
|
1954
|
+
});
|
|
1955
|
+
effect(() => {
|
|
1956
|
+
var value = get();
|
|
1957
|
+
if (select === document.activeElement) {
|
|
1958
|
+
var batch = async_mode_flag ? previous_batch : current_batch;
|
|
1959
|
+
if (batches.has(batch)) return;
|
|
1960
|
+
}
|
|
1961
|
+
select_option(select, value, mounting);
|
|
1962
|
+
if (mounting && value === void 0) {
|
|
1963
|
+
/** @type {HTMLOptionElement | null} */
|
|
1964
|
+
var selected_option = select.querySelector(":checked");
|
|
1965
|
+
if (selected_option !== null) {
|
|
1966
|
+
value = get_option_value(selected_option);
|
|
1967
|
+
set(value);
|
|
1968
|
+
}
|
|
1969
|
+
}
|
|
1970
|
+
select.__value = value;
|
|
1971
|
+
mounting = false;
|
|
1972
|
+
});
|
|
1973
|
+
init_select(select);
|
|
1974
|
+
}
|
|
1975
|
+
/** @param {HTMLOptionElement} option */
|
|
1976
|
+
function get_option_value(option) {
|
|
1977
|
+
if ("__value" in option) return option.__value;
|
|
1978
|
+
else return option.value;
|
|
1979
|
+
}
|
|
1980
|
+
//#endregion
|
|
1981
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/attributes.js
|
|
1982
|
+
/** @import { Blocker, Effect } from '#client' */
|
|
1983
|
+
var CLASS = Symbol("class");
|
|
1984
|
+
var STYLE = Symbol("style");
|
|
1985
|
+
var IS_CUSTOM_ELEMENT = Symbol("is custom element");
|
|
1986
|
+
var IS_HTML = Symbol("is html");
|
|
1987
|
+
var LINK_TAG = IS_XHTML ? "link" : "LINK";
|
|
1988
|
+
var INPUT_TAG = IS_XHTML ? "input" : "INPUT";
|
|
1989
|
+
var OPTION_TAG = IS_XHTML ? "option" : "OPTION";
|
|
1990
|
+
var SELECT_TAG = IS_XHTML ? "select" : "SELECT";
|
|
1991
|
+
var PROGRESS_TAG = IS_XHTML ? "progress" : "PROGRESS";
|
|
1992
|
+
/**
|
|
1993
|
+
* The value/checked attribute in the template actually corresponds to the defaultValue property, so we need
|
|
1994
|
+
* to remove it upon hydration to avoid a bug when someone resets the form value.
|
|
1995
|
+
* @param {HTMLInputElement} input
|
|
1996
|
+
* @returns {void}
|
|
1997
|
+
*/
|
|
1998
|
+
function remove_input_defaults(input) {
|
|
1999
|
+
if (!hydrating) return;
|
|
2000
|
+
var already_removed = false;
|
|
2001
|
+
var remove_defaults = () => {
|
|
2002
|
+
if (already_removed) return;
|
|
2003
|
+
already_removed = true;
|
|
2004
|
+
if (input.hasAttribute("value")) {
|
|
2005
|
+
var value = input.value;
|
|
2006
|
+
set_attribute(input, "value", null);
|
|
2007
|
+
input.value = value;
|
|
2008
|
+
}
|
|
2009
|
+
if (input.hasAttribute("checked")) {
|
|
2010
|
+
var checked = input.checked;
|
|
2011
|
+
set_attribute(input, "checked", null);
|
|
2012
|
+
input.checked = checked;
|
|
2013
|
+
}
|
|
2014
|
+
};
|
|
2015
|
+
/** @type {any} */ input[FORM_RESET_HANDLER] = remove_defaults;
|
|
2016
|
+
queue_micro_task(remove_defaults);
|
|
2017
|
+
add_form_reset_listener();
|
|
2018
|
+
}
|
|
2019
|
+
/**
|
|
2020
|
+
* @param {Element} element
|
|
2021
|
+
* @param {any} value
|
|
2022
|
+
*/
|
|
2023
|
+
function set_value(element, value) {
|
|
2024
|
+
var attributes = get_attributes(element);
|
|
2025
|
+
if (attributes.value === (attributes.value = value ?? void 0) || element.value === value && (value !== 0 || element.nodeName !== PROGRESS_TAG)) return;
|
|
2026
|
+
element.value = value ?? "";
|
|
2027
|
+
}
|
|
2028
|
+
/**
|
|
2029
|
+
* @param {Element} element
|
|
2030
|
+
* @param {boolean} checked
|
|
2031
|
+
*/
|
|
2032
|
+
function set_checked(element, checked) {
|
|
2033
|
+
var attributes = get_attributes(element);
|
|
2034
|
+
if (attributes.checked === (attributes.checked = checked ?? void 0)) return;
|
|
2035
|
+
element.checked = checked;
|
|
2036
|
+
}
|
|
2037
|
+
/**
|
|
2038
|
+
* Sets the `selected` attribute on an `option` element.
|
|
2039
|
+
* Not set through the property because that doesn't reflect to the DOM,
|
|
2040
|
+
* which means it wouldn't be taken into account when a form is reset.
|
|
2041
|
+
* @param {HTMLOptionElement} element
|
|
2042
|
+
* @param {boolean} selected
|
|
2043
|
+
*/
|
|
2044
|
+
function set_selected(element, selected) {
|
|
2045
|
+
if (selected) {
|
|
2046
|
+
if (!element.hasAttribute("selected")) element.setAttribute("selected", "");
|
|
2047
|
+
} else element.removeAttribute("selected");
|
|
2048
|
+
}
|
|
2049
|
+
/**
|
|
2050
|
+
* Applies the default checked property without influencing the current checked property.
|
|
2051
|
+
* @param {HTMLInputElement} element
|
|
2052
|
+
* @param {boolean} checked
|
|
2053
|
+
*/
|
|
2054
|
+
function set_default_checked(element, checked) {
|
|
2055
|
+
const existing_value = element.checked;
|
|
2056
|
+
element.defaultChecked = checked;
|
|
2057
|
+
element.checked = existing_value;
|
|
2058
|
+
}
|
|
2059
|
+
/**
|
|
2060
|
+
* Applies the default value property without influencing the current value property.
|
|
2061
|
+
* @param {HTMLInputElement | HTMLTextAreaElement} element
|
|
2062
|
+
* @param {string} value
|
|
2063
|
+
*/
|
|
2064
|
+
function set_default_value(element, value) {
|
|
2065
|
+
const existing_value = element.value;
|
|
2066
|
+
element.defaultValue = value;
|
|
2067
|
+
element.value = existing_value;
|
|
2068
|
+
}
|
|
2069
|
+
/**
|
|
2070
|
+
* @param {Element} element
|
|
2071
|
+
* @param {string} attribute
|
|
2072
|
+
* @param {string | null} value
|
|
2073
|
+
* @param {boolean} [skip_warning]
|
|
2074
|
+
*/
|
|
2075
|
+
function set_attribute(element, attribute, value, skip_warning) {
|
|
2076
|
+
var attributes = get_attributes(element);
|
|
2077
|
+
if (hydrating) {
|
|
2078
|
+
attributes[attribute] = element.getAttribute(attribute);
|
|
2079
|
+
if (attribute === "src" || attribute === "srcset" || attribute === "href" && element.nodeName === LINK_TAG) {
|
|
2080
|
+
if (!skip_warning) check_src_in_dev_hydration(element, attribute, value ?? "");
|
|
2081
|
+
return;
|
|
2082
|
+
}
|
|
2083
|
+
}
|
|
2084
|
+
if (attributes[attribute] === (attributes[attribute] = value)) return;
|
|
2085
|
+
if (attribute === "loading") element[LOADING_ATTR_SYMBOL] = value;
|
|
2086
|
+
if (value == null) element.removeAttribute(attribute);
|
|
2087
|
+
else if (typeof value !== "string" && get_setters(element).includes(attribute)) element[attribute] = value;
|
|
2088
|
+
else element.setAttribute(attribute, value);
|
|
2089
|
+
}
|
|
2090
|
+
/**
|
|
2091
|
+
* @param {Element} dom
|
|
2092
|
+
* @param {string} attribute
|
|
2093
|
+
* @param {string} value
|
|
2094
|
+
*/
|
|
2095
|
+
function set_xlink_attribute(dom, attribute, value) {
|
|
2096
|
+
dom.setAttributeNS("http://www.w3.org/1999/xlink", attribute, value);
|
|
2097
|
+
}
|
|
2098
|
+
/**
|
|
2099
|
+
* @param {HTMLElement} node
|
|
2100
|
+
* @param {string} prop
|
|
2101
|
+
* @param {any} value
|
|
2102
|
+
*/
|
|
2103
|
+
function set_custom_element_data(node, prop, value) {
|
|
2104
|
+
var previous_reaction = active_reaction;
|
|
2105
|
+
var previous_effect = active_effect;
|
|
2106
|
+
let was_hydrating = hydrating;
|
|
2107
|
+
if (hydrating) set_hydrating(false);
|
|
2108
|
+
set_active_reaction(null);
|
|
2109
|
+
set_active_effect(null);
|
|
2110
|
+
try {
|
|
2111
|
+
if (prop !== "style" && (setters_cache.has(node.getAttribute("is") || node.nodeName) || !customElements || customElements.get(node.getAttribute("is") || node.nodeName.toLowerCase()) ? get_setters(node).includes(prop) : value && typeof value === "object")) node[prop] = value;
|
|
2112
|
+
else set_attribute(node, prop, value == null ? value : String(value));
|
|
2113
|
+
} finally {
|
|
2114
|
+
set_active_reaction(previous_reaction);
|
|
2115
|
+
set_active_effect(previous_effect);
|
|
2116
|
+
if (was_hydrating) set_hydrating(true);
|
|
2117
|
+
}
|
|
2118
|
+
}
|
|
2119
|
+
/**
|
|
2120
|
+
* Spreads attributes onto a DOM element, taking into account the currently set attributes
|
|
2121
|
+
* @param {Element & ElementCSSInlineStyle} element
|
|
2122
|
+
* @param {Record<string | symbol, any> | undefined} prev
|
|
2123
|
+
* @param {Record<string | symbol, any>} next New attributes - this function mutates this object
|
|
2124
|
+
* @param {string} [css_hash]
|
|
2125
|
+
* @param {boolean} [should_remove_defaults]
|
|
2126
|
+
* @param {boolean} [skip_warning]
|
|
2127
|
+
* @returns {Record<string, any>}
|
|
2128
|
+
*/
|
|
2129
|
+
function set_attributes(element, prev, next, css_hash, should_remove_defaults = false, skip_warning = false) {
|
|
2130
|
+
if (hydrating && should_remove_defaults && element.nodeName === INPUT_TAG) {
|
|
2131
|
+
var input = element;
|
|
2132
|
+
if (!((input.type === "checkbox" ? "defaultChecked" : "defaultValue") in next)) remove_input_defaults(input);
|
|
2133
|
+
}
|
|
2134
|
+
var attributes = get_attributes(element);
|
|
2135
|
+
var is_custom_element = attributes[IS_CUSTOM_ELEMENT];
|
|
2136
|
+
var preserve_attribute_case = !attributes[IS_HTML];
|
|
2137
|
+
let is_hydrating_custom_element = hydrating && is_custom_element;
|
|
2138
|
+
if (is_hydrating_custom_element) set_hydrating(false);
|
|
2139
|
+
var current = prev || {};
|
|
2140
|
+
var is_option_element = element.nodeName === OPTION_TAG;
|
|
2141
|
+
for (var key in prev) if (!(key in next)) next[key] = null;
|
|
2142
|
+
if (next.class) next.class = clsx(next.class);
|
|
2143
|
+
else if (css_hash || next[CLASS]) next.class = null;
|
|
2144
|
+
if (next[STYLE]) next.style ??= null;
|
|
2145
|
+
var setters = get_setters(element);
|
|
2146
|
+
for (const key in next) {
|
|
2147
|
+
let value = next[key];
|
|
2148
|
+
if (is_option_element && key === "value" && value == null) {
|
|
2149
|
+
element.value = element.__value = "";
|
|
2150
|
+
current[key] = value;
|
|
2151
|
+
continue;
|
|
2152
|
+
}
|
|
2153
|
+
if (key === "class") {
|
|
2154
|
+
set_class(element, element.namespaceURI === "http://www.w3.org/1999/xhtml", value, css_hash, prev?.[CLASS], next[CLASS]);
|
|
2155
|
+
current[key] = value;
|
|
2156
|
+
current[CLASS] = next[CLASS];
|
|
2157
|
+
continue;
|
|
2158
|
+
}
|
|
2159
|
+
if (key === "style") {
|
|
2160
|
+
set_style(element, value, prev?.[STYLE], next[STYLE]);
|
|
2161
|
+
current[key] = value;
|
|
2162
|
+
current[STYLE] = next[STYLE];
|
|
2163
|
+
continue;
|
|
2164
|
+
}
|
|
2165
|
+
var prev_value = current[key];
|
|
2166
|
+
if (value === prev_value && !(value === void 0 && element.hasAttribute(key))) continue;
|
|
2167
|
+
current[key] = value;
|
|
2168
|
+
var prefix = key[0] + key[1];
|
|
2169
|
+
if (prefix === "$$") continue;
|
|
2170
|
+
if (prefix === "on") {
|
|
2171
|
+
/** @type {{ capture?: true }} */
|
|
2172
|
+
const opts = {};
|
|
2173
|
+
const event_handle_key = "$$" + key;
|
|
2174
|
+
let event_name = key.slice(2);
|
|
2175
|
+
var is_delegated = can_delegate_event(event_name);
|
|
2176
|
+
if (is_capture_event(event_name)) {
|
|
2177
|
+
event_name = event_name.slice(0, -7);
|
|
2178
|
+
opts.capture = true;
|
|
2179
|
+
}
|
|
2180
|
+
if (!is_delegated && prev_value) {
|
|
2181
|
+
if (value != null) continue;
|
|
2182
|
+
element.removeEventListener(event_name, current[event_handle_key], opts);
|
|
2183
|
+
current[event_handle_key] = null;
|
|
2184
|
+
}
|
|
2185
|
+
if (is_delegated) {
|
|
2186
|
+
delegated(event_name, element, value);
|
|
2187
|
+
delegate([event_name]);
|
|
2188
|
+
} else if (value != null) {
|
|
2189
|
+
/**
|
|
2190
|
+
* @this {any}
|
|
2191
|
+
* @param {Event} evt
|
|
2192
|
+
*/
|
|
2193
|
+
function handle(evt) {
|
|
2194
|
+
current[key].call(this, evt);
|
|
2195
|
+
}
|
|
2196
|
+
current[event_handle_key] = create_event(event_name, element, handle, opts);
|
|
2197
|
+
}
|
|
2198
|
+
} else if (key === "style") set_attribute(element, key, value);
|
|
2199
|
+
else if (key === "autofocus") autofocus(element, Boolean(value));
|
|
2200
|
+
else if (!is_custom_element && (key === "__value" || key === "value" && value != null)) element.value = element.__value = value;
|
|
2201
|
+
else if (key === "selected" && is_option_element) set_selected(element, value);
|
|
2202
|
+
else {
|
|
2203
|
+
var name = key;
|
|
2204
|
+
if (!preserve_attribute_case) name = normalize_attribute(name);
|
|
2205
|
+
var is_default = name === "defaultValue" || name === "defaultChecked";
|
|
2206
|
+
if (value == null && !is_custom_element && !is_default) {
|
|
2207
|
+
attributes[key] = null;
|
|
2208
|
+
if (name === "value" || name === "checked") {
|
|
2209
|
+
let input = element;
|
|
2210
|
+
const use_default = prev === void 0;
|
|
2211
|
+
if (name === "value") {
|
|
2212
|
+
let previous = input.defaultValue;
|
|
2213
|
+
input.removeAttribute(name);
|
|
2214
|
+
input.defaultValue = previous;
|
|
2215
|
+
input.value = input.__value = use_default ? previous : null;
|
|
2216
|
+
} else {
|
|
2217
|
+
let previous = input.defaultChecked;
|
|
2218
|
+
input.removeAttribute(name);
|
|
2219
|
+
input.defaultChecked = previous;
|
|
2220
|
+
input.checked = use_default ? previous : false;
|
|
2221
|
+
}
|
|
2222
|
+
} else element.removeAttribute(key);
|
|
2223
|
+
} else if (is_default || setters.includes(name) && (is_custom_element || typeof value !== "string")) {
|
|
2224
|
+
element[name] = value;
|
|
2225
|
+
if (name in attributes) attributes[name] = UNINITIALIZED;
|
|
2226
|
+
} else if (typeof value !== "function") set_attribute(element, name, value, skip_warning);
|
|
2227
|
+
}
|
|
2228
|
+
}
|
|
2229
|
+
if (is_hydrating_custom_element) set_hydrating(true);
|
|
2230
|
+
return current;
|
|
2231
|
+
}
|
|
2232
|
+
/**
|
|
2233
|
+
* @param {Element & ElementCSSInlineStyle} element
|
|
2234
|
+
* @param {(...expressions: any) => Record<string | symbol, any>} fn
|
|
2235
|
+
* @param {Array<() => any>} sync
|
|
2236
|
+
* @param {Array<() => Promise<any>>} async
|
|
2237
|
+
* @param {Blocker[]} blockers
|
|
2238
|
+
* @param {string} [css_hash]
|
|
2239
|
+
* @param {boolean} [should_remove_defaults]
|
|
2240
|
+
* @param {boolean} [skip_warning]
|
|
2241
|
+
*/
|
|
2242
|
+
function attribute_effect(element, fn, sync = [], async = [], blockers = [], css_hash, should_remove_defaults = false, skip_warning = false) {
|
|
2243
|
+
flatten(blockers, sync, async, (values) => {
|
|
2244
|
+
/** @type {Record<string | symbol, any> | undefined} */
|
|
2245
|
+
var prev = void 0;
|
|
2246
|
+
/** @type {Record<symbol, Effect>} */
|
|
2247
|
+
var effects = {};
|
|
2248
|
+
var is_select = element.nodeName === SELECT_TAG;
|
|
2249
|
+
var inited = false;
|
|
2250
|
+
managed(() => {
|
|
2251
|
+
var next = fn(...values.map(get));
|
|
2252
|
+
/** @type {Record<string | symbol, any>} */
|
|
2253
|
+
var current = set_attributes(element, prev, next, css_hash, should_remove_defaults, skip_warning);
|
|
2254
|
+
if (inited && is_select && "value" in next) select_option(element, next.value);
|
|
2255
|
+
for (let symbol of Object.getOwnPropertySymbols(effects)) if (!next[symbol]) destroy_effect(effects[symbol]);
|
|
2256
|
+
for (let symbol of Object.getOwnPropertySymbols(next)) {
|
|
2257
|
+
var n = next[symbol];
|
|
2258
|
+
if (symbol.description === "@attach" && (!prev || n !== prev[symbol])) {
|
|
2259
|
+
if (effects[symbol]) destroy_effect(effects[symbol]);
|
|
2260
|
+
effects[symbol] = branch(() => attach(element, () => n));
|
|
2261
|
+
}
|
|
2262
|
+
current[symbol] = n;
|
|
2263
|
+
}
|
|
2264
|
+
prev = current;
|
|
2265
|
+
});
|
|
2266
|
+
if (is_select) {
|
|
2267
|
+
var select = element;
|
|
2268
|
+
effect(() => {
|
|
2269
|
+
select_option(
|
|
2270
|
+
select,
|
|
2271
|
+
/** @type {Record<string | symbol, any>} */
|
|
2272
|
+
prev.value,
|
|
2273
|
+
true
|
|
2274
|
+
);
|
|
2275
|
+
init_select(select);
|
|
2276
|
+
});
|
|
2277
|
+
}
|
|
2278
|
+
inited = true;
|
|
2279
|
+
});
|
|
2280
|
+
}
|
|
2281
|
+
/**
|
|
2282
|
+
*
|
|
2283
|
+
* @param {Element} element
|
|
2284
|
+
*/
|
|
2285
|
+
function get_attributes(element) {
|
|
2286
|
+
return element[ATTRIBUTES_CACHE] ??= {
|
|
2287
|
+
[IS_CUSTOM_ELEMENT]: element.nodeName.includes("-"),
|
|
2288
|
+
[IS_HTML]: element.namespaceURI === NAMESPACE_HTML
|
|
2289
|
+
};
|
|
2290
|
+
}
|
|
2291
|
+
/** @type {Map<string, string[]>} */
|
|
2292
|
+
var setters_cache = /* @__PURE__ */ new Map();
|
|
2293
|
+
/** @param {Element} element */
|
|
2294
|
+
function get_setters(element) {
|
|
2295
|
+
var cache_key = element.getAttribute("is") || element.nodeName;
|
|
2296
|
+
var setters = setters_cache.get(cache_key);
|
|
2297
|
+
if (setters) return setters;
|
|
2298
|
+
setters_cache.set(cache_key, setters = []);
|
|
2299
|
+
var descriptors;
|
|
2300
|
+
var proto = element;
|
|
2301
|
+
var element_proto = Element.prototype;
|
|
2302
|
+
while (element_proto !== proto) {
|
|
2303
|
+
descriptors = get_descriptors(proto);
|
|
2304
|
+
for (var key in descriptors) if (descriptors[key].set && key !== "innerHTML" && key !== "textContent" && key !== "innerText") setters.push(key);
|
|
2305
|
+
proto = get_prototype_of(proto);
|
|
2306
|
+
}
|
|
2307
|
+
return setters;
|
|
2308
|
+
}
|
|
2309
|
+
/**
|
|
2310
|
+
* @param {any} element
|
|
2311
|
+
* @param {string} attribute
|
|
2312
|
+
* @param {string} value
|
|
2313
|
+
*/
|
|
2314
|
+
function check_src_in_dev_hydration(element, attribute, value) {
|
|
2315
|
+
if (attribute === "srcset" && srcset_url_equal(element, value)) return;
|
|
2316
|
+
if (src_url_equal(element.getAttribute(attribute) ?? "", value)) return;
|
|
2317
|
+
hydration_attribute_changed(attribute, element.outerHTML.replace(element.innerHTML, element.innerHTML && "..."), String(value));
|
|
2318
|
+
}
|
|
2319
|
+
/**
|
|
2320
|
+
* @param {string} element_src
|
|
2321
|
+
* @param {string} url
|
|
2322
|
+
* @returns {boolean}
|
|
2323
|
+
*/
|
|
2324
|
+
function src_url_equal(element_src, url) {
|
|
2325
|
+
if (element_src === url) return true;
|
|
2326
|
+
return new URL(element_src, document.baseURI).href === new URL(url, document.baseURI).href;
|
|
2327
|
+
}
|
|
2328
|
+
/** @param {string} srcset */
|
|
2329
|
+
function split_srcset(srcset) {
|
|
2330
|
+
return srcset.split(",").map((src) => src.trim().split(" ").filter(Boolean));
|
|
2331
|
+
}
|
|
2332
|
+
/**
|
|
2333
|
+
* @param {HTMLSourceElement | HTMLImageElement} element
|
|
2334
|
+
* @param {string} srcset
|
|
2335
|
+
* @returns {boolean}
|
|
2336
|
+
*/
|
|
2337
|
+
function srcset_url_equal(element, srcset) {
|
|
2338
|
+
var element_urls = split_srcset(element.srcset);
|
|
2339
|
+
var urls = split_srcset(srcset);
|
|
2340
|
+
return urls.length === element_urls.length && urls.every(([url, width], i) => width === element_urls[i][1] && (src_url_equal(element_urls[i][0], url) || src_url_equal(url, element_urls[i][0])));
|
|
2341
|
+
}
|
|
2342
|
+
//#endregion
|
|
2343
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/customizable-select.js
|
|
2344
|
+
/** @type {boolean | null} */
|
|
2345
|
+
var supported = null;
|
|
2346
|
+
/**
|
|
2347
|
+
* Checks if the browser supports rich HTML content inside `<option>` elements.
|
|
2348
|
+
* Modern browsers preserve HTML elements inside options, while older browsers
|
|
2349
|
+
* strip them during parsing, leaving only text content.
|
|
2350
|
+
* @returns {boolean}
|
|
2351
|
+
*/
|
|
2352
|
+
function is_supported() {
|
|
2353
|
+
if (supported === null) {
|
|
2354
|
+
var select = create_element("select");
|
|
2355
|
+
select.innerHTML = create_trusted_html("<option><span>t</span></option>");
|
|
2356
|
+
supported = select.firstChild?.firstChild?.nodeType === 1;
|
|
2357
|
+
}
|
|
2358
|
+
return supported;
|
|
2359
|
+
}
|
|
2360
|
+
/**
|
|
2361
|
+
*
|
|
2362
|
+
* @param {HTMLElement} element
|
|
2363
|
+
* @param {(new_element: HTMLElement) => void} update_element
|
|
2364
|
+
*/
|
|
2365
|
+
function selectedcontent(element, update_element) {
|
|
2366
|
+
if (!is_supported()) return;
|
|
2367
|
+
attach(element, () => () => {
|
|
2368
|
+
const select = element.closest("select");
|
|
2369
|
+
if (!select) return;
|
|
2370
|
+
const observer = new MutationObserver((entries) => {
|
|
2371
|
+
var selected = false;
|
|
2372
|
+
for (const entry of entries) {
|
|
2373
|
+
if (entry.target === element) return;
|
|
2374
|
+
selected ||= !!entry.target.parentElement?.closest("option")?.selected;
|
|
2375
|
+
}
|
|
2376
|
+
if (selected) {
|
|
2377
|
+
element.replaceWith(element = element.cloneNode(true));
|
|
2378
|
+
update_element(element);
|
|
2379
|
+
}
|
|
2380
|
+
});
|
|
2381
|
+
observer.observe(select, {
|
|
2382
|
+
childList: true,
|
|
2383
|
+
characterData: true,
|
|
2384
|
+
subtree: true
|
|
2385
|
+
});
|
|
2386
|
+
return () => {
|
|
2387
|
+
observer.disconnect();
|
|
2388
|
+
};
|
|
2389
|
+
});
|
|
2390
|
+
}
|
|
2391
|
+
/**
|
|
2392
|
+
* Handles rich HTML content inside `<option>`, `<optgroup>`, or `<select>` elements with browser-specific branching.
|
|
2393
|
+
* Modern browsers preserve HTML inside options, while older browsers strip it to text only.
|
|
2394
|
+
*
|
|
2395
|
+
* @param {HTMLOptionElement | HTMLOptGroupElement | HTMLSelectElement} element The element to process
|
|
2396
|
+
* @param {() => void} rich_fn Function to process rich HTML content (modern browsers)
|
|
2397
|
+
*/
|
|
2398
|
+
function customizable_select(element, rich_fn) {
|
|
2399
|
+
var was_hydrating = hydrating;
|
|
2400
|
+
if (!is_supported()) {
|
|
2401
|
+
set_hydrating(false);
|
|
2402
|
+
element.textContent = "";
|
|
2403
|
+
element.append(create_comment(""));
|
|
2404
|
+
}
|
|
2405
|
+
try {
|
|
2406
|
+
rich_fn();
|
|
2407
|
+
} finally {
|
|
2408
|
+
if (was_hydrating) if (hydrating) reset(element);
|
|
2409
|
+
else {
|
|
2410
|
+
set_hydrating(true);
|
|
2411
|
+
set_hydrate_node(element);
|
|
2412
|
+
}
|
|
2413
|
+
}
|
|
2414
|
+
}
|
|
2415
|
+
//#endregion
|
|
2416
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/bindings/document.js
|
|
2417
|
+
/**
|
|
2418
|
+
* @param {(activeElement: Element | null) => void} update
|
|
2419
|
+
* @returns {void}
|
|
2420
|
+
*/
|
|
2421
|
+
function bind_active_element(update) {
|
|
2422
|
+
listen(document, ["focusin", "focusout"], (event) => {
|
|
2423
|
+
if (event && event.type === "focusout" && event.relatedTarget) return;
|
|
2424
|
+
update(document.activeElement);
|
|
2425
|
+
});
|
|
2426
|
+
}
|
|
2427
|
+
//#endregion
|
|
2428
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/bindings/input.js
|
|
2429
|
+
/** @import { Batch } from '../../../reactivity/batch.js' */
|
|
2430
|
+
/**
|
|
2431
|
+
* @param {HTMLInputElement} input
|
|
2432
|
+
* @param {() => unknown} get
|
|
2433
|
+
* @param {(value: unknown) => void} set
|
|
2434
|
+
* @returns {void}
|
|
2435
|
+
*/
|
|
2436
|
+
function bind_value(input, get, set = get) {
|
|
2437
|
+
var batches = /* @__PURE__ */ new WeakSet();
|
|
2438
|
+
listen_to_event_and_reset_event(input, "input", async (is_reset) => {
|
|
2439
|
+
if (input.type === "checkbox") bind_invalid_checkbox_value();
|
|
2440
|
+
/** @type {any} */
|
|
2441
|
+
var value = is_reset ? input.defaultValue : input.value;
|
|
2442
|
+
value = is_numberlike_input(input) ? to_number(value) : value;
|
|
2443
|
+
set(value);
|
|
2444
|
+
if (current_batch !== null) batches.add(current_batch);
|
|
2445
|
+
await tick();
|
|
2446
|
+
if (value !== (value = get())) {
|
|
2447
|
+
var start = input.selectionStart;
|
|
2448
|
+
var end = input.selectionEnd;
|
|
2449
|
+
var length = input.value.length;
|
|
2450
|
+
input.value = value ?? "";
|
|
2451
|
+
if (end !== null) {
|
|
2452
|
+
var new_length = input.value.length;
|
|
2453
|
+
if (start === end && end === length && new_length > length) {
|
|
2454
|
+
input.selectionStart = new_length;
|
|
2455
|
+
input.selectionEnd = new_length;
|
|
2456
|
+
} else {
|
|
2457
|
+
input.selectionStart = start;
|
|
2458
|
+
input.selectionEnd = Math.min(end, new_length);
|
|
2459
|
+
}
|
|
2460
|
+
}
|
|
2461
|
+
}
|
|
2462
|
+
});
|
|
2463
|
+
if (hydrating && input.defaultValue !== input.value || untrack(get) == null && input.value) {
|
|
2464
|
+
set(is_numberlike_input(input) ? to_number(input.value) : input.value);
|
|
2465
|
+
if (current_batch !== null) batches.add(current_batch);
|
|
2466
|
+
}
|
|
2467
|
+
render_effect(() => {
|
|
2468
|
+
if (input.type === "checkbox") bind_invalid_checkbox_value();
|
|
2469
|
+
var value = get();
|
|
2470
|
+
if (input === document.activeElement) {
|
|
2471
|
+
var batch = async_mode_flag ? previous_batch : current_batch;
|
|
2472
|
+
if (batches.has(batch)) return;
|
|
2473
|
+
}
|
|
2474
|
+
if (is_numberlike_input(input) && value === to_number(input.value)) return;
|
|
2475
|
+
if (input.type === "date" && !value && !input.value) return;
|
|
2476
|
+
if (value !== input.value) input.value = value ?? "";
|
|
2477
|
+
});
|
|
2478
|
+
}
|
|
2479
|
+
/** @type {Set<HTMLInputElement[]>} */
|
|
2480
|
+
var pending = /* @__PURE__ */ new Set();
|
|
2481
|
+
/**
|
|
2482
|
+
* @param {HTMLInputElement[]} inputs
|
|
2483
|
+
* @param {null | [number]} group_index
|
|
2484
|
+
* @param {HTMLInputElement} input
|
|
2485
|
+
* @param {() => unknown} get
|
|
2486
|
+
* @param {(value: unknown) => void} set
|
|
2487
|
+
* @returns {void}
|
|
2488
|
+
*/
|
|
2489
|
+
function bind_group(inputs, group_index, input, get, set = get) {
|
|
2490
|
+
var is_checkbox = input.getAttribute("type") === "checkbox";
|
|
2491
|
+
var binding_group = inputs;
|
|
2492
|
+
let hydration_mismatch = false;
|
|
2493
|
+
if (group_index !== null) for (var index of group_index) binding_group = binding_group[index] ??= [];
|
|
2494
|
+
binding_group.push(input);
|
|
2495
|
+
listen_to_event_and_reset_event(input, "change", () => {
|
|
2496
|
+
var value = input.__value;
|
|
2497
|
+
if (is_checkbox) value = get_binding_group_value(binding_group, value, input.checked);
|
|
2498
|
+
set(value);
|
|
2499
|
+
}, () => set(is_checkbox ? [] : null));
|
|
2500
|
+
render_effect(() => {
|
|
2501
|
+
var value = get();
|
|
2502
|
+
if (hydrating && input.defaultChecked !== input.checked) {
|
|
2503
|
+
hydration_mismatch = true;
|
|
2504
|
+
return;
|
|
2505
|
+
}
|
|
2506
|
+
if (is_checkbox) {
|
|
2507
|
+
value = value || [];
|
|
2508
|
+
input.checked = value.includes(input.__value);
|
|
2509
|
+
} else input.checked = is(input.__value, value);
|
|
2510
|
+
});
|
|
2511
|
+
teardown(() => {
|
|
2512
|
+
var index = binding_group.indexOf(input);
|
|
2513
|
+
if (index !== -1) binding_group.splice(index, 1);
|
|
2514
|
+
});
|
|
2515
|
+
if (!pending.has(binding_group)) {
|
|
2516
|
+
pending.add(binding_group);
|
|
2517
|
+
queue_micro_task(() => {
|
|
2518
|
+
binding_group.sort((a, b) => a.compareDocumentPosition(b) === 4 ? -1 : 1);
|
|
2519
|
+
pending.delete(binding_group);
|
|
2520
|
+
});
|
|
2521
|
+
}
|
|
2522
|
+
queue_micro_task(() => {
|
|
2523
|
+
if (hydration_mismatch) {
|
|
2524
|
+
var value;
|
|
2525
|
+
if (is_checkbox) value = get_binding_group_value(binding_group, value, input.checked);
|
|
2526
|
+
else value = binding_group.find((input) => input.checked)?.__value;
|
|
2527
|
+
set(value);
|
|
2528
|
+
}
|
|
2529
|
+
});
|
|
2530
|
+
}
|
|
2531
|
+
/**
|
|
2532
|
+
* @param {HTMLInputElement} input
|
|
2533
|
+
* @param {() => unknown} get
|
|
2534
|
+
* @param {(value: unknown) => void} set
|
|
2535
|
+
* @returns {void}
|
|
2536
|
+
*/
|
|
2537
|
+
function bind_checked(input, get, set = get) {
|
|
2538
|
+
listen_to_event_and_reset_event(input, "change", (is_reset) => {
|
|
2539
|
+
set(is_reset ? input.defaultChecked : input.checked);
|
|
2540
|
+
});
|
|
2541
|
+
if (hydrating && input.defaultChecked !== input.checked || untrack(get) == null) set(input.checked);
|
|
2542
|
+
render_effect(() => {
|
|
2543
|
+
var value = get();
|
|
2544
|
+
input.checked = Boolean(value);
|
|
2545
|
+
});
|
|
2546
|
+
}
|
|
2547
|
+
/**
|
|
2548
|
+
* @template V
|
|
2549
|
+
* @param {Array<HTMLInputElement>} group
|
|
2550
|
+
* @param {V} __value
|
|
2551
|
+
* @param {boolean} checked
|
|
2552
|
+
* @returns {V[]}
|
|
2553
|
+
*/
|
|
2554
|
+
function get_binding_group_value(group, __value, checked) {
|
|
2555
|
+
/** @type {Set<V>} */
|
|
2556
|
+
var value = /* @__PURE__ */ new Set();
|
|
2557
|
+
for (var i = 0; i < group.length; i += 1) if (group[i].checked) value.add(group[i].__value);
|
|
2558
|
+
if (!checked) value.delete(__value);
|
|
2559
|
+
return Array.from(value);
|
|
2560
|
+
}
|
|
2561
|
+
/**
|
|
2562
|
+
* @param {HTMLInputElement} input
|
|
2563
|
+
*/
|
|
2564
|
+
function is_numberlike_input(input) {
|
|
2565
|
+
var type = input.type;
|
|
2566
|
+
return type === "number" || type === "range";
|
|
2567
|
+
}
|
|
2568
|
+
/**
|
|
2569
|
+
* @param {string} value
|
|
2570
|
+
*/
|
|
2571
|
+
function to_number(value) {
|
|
2572
|
+
return value === "" ? null : +value;
|
|
2573
|
+
}
|
|
2574
|
+
/**
|
|
2575
|
+
* @param {HTMLInputElement} input
|
|
2576
|
+
* @param {() => FileList | null} get
|
|
2577
|
+
* @param {(value: FileList | null) => void} set
|
|
2578
|
+
*/
|
|
2579
|
+
function bind_files(input, get, set = get) {
|
|
2580
|
+
listen_to_event_and_reset_event(input, "change", () => {
|
|
2581
|
+
set(input.files);
|
|
2582
|
+
});
|
|
2583
|
+
if (hydrating && input.files) set(input.files);
|
|
2584
|
+
render_effect(() => {
|
|
2585
|
+
input.files = get();
|
|
2586
|
+
});
|
|
2587
|
+
}
|
|
2588
|
+
//#endregion
|
|
2589
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/bindings/media.js
|
|
2590
|
+
/** @param {TimeRanges} ranges */
|
|
2591
|
+
function time_ranges_to_array(ranges) {
|
|
2592
|
+
var array = [];
|
|
2593
|
+
for (var i = 0; i < ranges.length; i += 1) array.push({
|
|
2594
|
+
start: ranges.start(i),
|
|
2595
|
+
end: ranges.end(i)
|
|
2596
|
+
});
|
|
2597
|
+
return array;
|
|
2598
|
+
}
|
|
2599
|
+
/**
|
|
2600
|
+
* @param {HTMLVideoElement | HTMLAudioElement} media
|
|
2601
|
+
* @param {() => number | undefined} get
|
|
2602
|
+
* @param {(value: number) => void} set
|
|
2603
|
+
* @returns {void}
|
|
2604
|
+
*/
|
|
2605
|
+
function bind_current_time(media, get, set = get) {
|
|
2606
|
+
/** @type {number} */
|
|
2607
|
+
var raf_id;
|
|
2608
|
+
/** @type {number} */
|
|
2609
|
+
var value;
|
|
2610
|
+
var callback = () => {
|
|
2611
|
+
cancelAnimationFrame(raf_id);
|
|
2612
|
+
if (!media.paused) raf_id = requestAnimationFrame(callback);
|
|
2613
|
+
var next_value = media.currentTime;
|
|
2614
|
+
if (value !== next_value) set(value = next_value);
|
|
2615
|
+
};
|
|
2616
|
+
raf_id = requestAnimationFrame(callback);
|
|
2617
|
+
media.addEventListener("timeupdate", callback);
|
|
2618
|
+
render_effect(() => {
|
|
2619
|
+
var next_value = Number(get());
|
|
2620
|
+
if (value !== next_value && !isNaN(next_value)) media.currentTime = value = next_value;
|
|
2621
|
+
});
|
|
2622
|
+
teardown(() => {
|
|
2623
|
+
cancelAnimationFrame(raf_id);
|
|
2624
|
+
media.removeEventListener("timeupdate", callback);
|
|
2625
|
+
});
|
|
2626
|
+
}
|
|
2627
|
+
/**
|
|
2628
|
+
* @param {HTMLVideoElement | HTMLAudioElement} media
|
|
2629
|
+
* @param {(array: Array<{ start: number; end: number }>) => void} set
|
|
2630
|
+
*/
|
|
2631
|
+
function bind_buffered(media, set) {
|
|
2632
|
+
/** @type {{ start: number; end: number; }[]} */
|
|
2633
|
+
var current;
|
|
2634
|
+
listen(media, [
|
|
2635
|
+
"loadedmetadata",
|
|
2636
|
+
"progress",
|
|
2637
|
+
"timeupdate",
|
|
2638
|
+
"seeking"
|
|
2639
|
+
], () => {
|
|
2640
|
+
var ranges = media.buffered;
|
|
2641
|
+
if (!current || current.length !== ranges.length || current.some((range, i) => ranges.start(i) !== range.start || ranges.end(i) !== range.end)) {
|
|
2642
|
+
current = time_ranges_to_array(ranges);
|
|
2643
|
+
set(current);
|
|
2644
|
+
}
|
|
2645
|
+
});
|
|
2646
|
+
}
|
|
2647
|
+
/**
|
|
2648
|
+
* @param {HTMLVideoElement | HTMLAudioElement} media
|
|
2649
|
+
* @param {(array: Array<{ start: number; end: number }>) => void} set
|
|
2650
|
+
*/
|
|
2651
|
+
function bind_seekable(media, set) {
|
|
2652
|
+
listen(media, ["loadedmetadata"], () => set(time_ranges_to_array(media.seekable)));
|
|
2653
|
+
}
|
|
2654
|
+
/**
|
|
2655
|
+
* @param {HTMLVideoElement | HTMLAudioElement} media
|
|
2656
|
+
* @param {(array: Array<{ start: number; end: number }>) => void} set
|
|
2657
|
+
*/
|
|
2658
|
+
function bind_played(media, set) {
|
|
2659
|
+
listen(media, ["timeupdate"], () => set(time_ranges_to_array(media.played)));
|
|
2660
|
+
}
|
|
2661
|
+
/**
|
|
2662
|
+
* @param {HTMLVideoElement | HTMLAudioElement} media
|
|
2663
|
+
* @param {(seeking: boolean) => void} set
|
|
2664
|
+
*/
|
|
2665
|
+
function bind_seeking(media, set) {
|
|
2666
|
+
listen(media, ["seeking", "seeked"], () => set(media.seeking));
|
|
2667
|
+
}
|
|
2668
|
+
/**
|
|
2669
|
+
* @param {HTMLVideoElement | HTMLAudioElement} media
|
|
2670
|
+
* @param {(seeking: boolean) => void} set
|
|
2671
|
+
*/
|
|
2672
|
+
function bind_ended(media, set) {
|
|
2673
|
+
listen(media, ["timeupdate", "ended"], () => set(media.ended));
|
|
2674
|
+
}
|
|
2675
|
+
/**
|
|
2676
|
+
* @param {HTMLVideoElement | HTMLAudioElement} media
|
|
2677
|
+
* @param {(ready_state: number) => void} set
|
|
2678
|
+
*/
|
|
2679
|
+
function bind_ready_state(media, set) {
|
|
2680
|
+
listen(media, [
|
|
2681
|
+
"loadedmetadata",
|
|
2682
|
+
"loadeddata",
|
|
2683
|
+
"canplay",
|
|
2684
|
+
"canplaythrough",
|
|
2685
|
+
"playing",
|
|
2686
|
+
"waiting",
|
|
2687
|
+
"emptied"
|
|
2688
|
+
], () => set(media.readyState));
|
|
2689
|
+
}
|
|
2690
|
+
/**
|
|
2691
|
+
* @param {HTMLVideoElement | HTMLAudioElement} media
|
|
2692
|
+
* @param {() => number | undefined} get
|
|
2693
|
+
* @param {(playback_rate: number) => void} set
|
|
2694
|
+
*/
|
|
2695
|
+
function bind_playback_rate(media, get, set = get) {
|
|
2696
|
+
effect(() => {
|
|
2697
|
+
var value = Number(get());
|
|
2698
|
+
if (value !== media.playbackRate && !isNaN(value)) media.playbackRate = value;
|
|
2699
|
+
});
|
|
2700
|
+
effect(() => {
|
|
2701
|
+
listen(media, ["ratechange"], () => {
|
|
2702
|
+
set(media.playbackRate);
|
|
2703
|
+
});
|
|
2704
|
+
});
|
|
2705
|
+
}
|
|
2706
|
+
/**
|
|
2707
|
+
* @param {HTMLVideoElement | HTMLAudioElement} media
|
|
2708
|
+
* @param {() => boolean | undefined} get
|
|
2709
|
+
* @param {(paused: boolean) => void} set
|
|
2710
|
+
*/
|
|
2711
|
+
function bind_paused(media, get, set = get) {
|
|
2712
|
+
var paused = get();
|
|
2713
|
+
var update = () => {
|
|
2714
|
+
if (paused !== media.paused) set(paused = media.paused);
|
|
2715
|
+
};
|
|
2716
|
+
listen(media, [
|
|
2717
|
+
"play",
|
|
2718
|
+
"pause",
|
|
2719
|
+
"canplay"
|
|
2720
|
+
], update, paused == null);
|
|
2721
|
+
effect(() => {
|
|
2722
|
+
if ((paused = !!get()) !== media.paused) if (paused) media.pause();
|
|
2723
|
+
else media.play().catch((error) => {
|
|
2724
|
+
set(paused = true);
|
|
2725
|
+
throw error;
|
|
2726
|
+
});
|
|
2727
|
+
});
|
|
2728
|
+
}
|
|
2729
|
+
/**
|
|
2730
|
+
* @param {HTMLVideoElement | HTMLAudioElement} media
|
|
2731
|
+
* @param {() => number | undefined} get
|
|
2732
|
+
* @param {(volume: number) => void} set
|
|
2733
|
+
*/
|
|
2734
|
+
function bind_volume(media, get, set = get) {
|
|
2735
|
+
var callback = () => {
|
|
2736
|
+
set(media.volume);
|
|
2737
|
+
};
|
|
2738
|
+
if (get() == null) callback();
|
|
2739
|
+
listen(media, ["volumechange"], callback, false);
|
|
2740
|
+
render_effect(() => {
|
|
2741
|
+
var value = Number(get());
|
|
2742
|
+
if (value !== media.volume && !isNaN(value)) media.volume = value;
|
|
2743
|
+
});
|
|
2744
|
+
}
|
|
2745
|
+
/**
|
|
2746
|
+
* @param {HTMLVideoElement | HTMLAudioElement} media
|
|
2747
|
+
* @param {() => boolean | undefined} get
|
|
2748
|
+
* @param {(muted: boolean) => void} set
|
|
2749
|
+
*/
|
|
2750
|
+
function bind_muted(media, get, set = get) {
|
|
2751
|
+
var callback = () => {
|
|
2752
|
+
set(media.muted);
|
|
2753
|
+
};
|
|
2754
|
+
if (get() == null) callback();
|
|
2755
|
+
listen(media, ["volumechange"], callback, false);
|
|
2756
|
+
render_effect(() => {
|
|
2757
|
+
var value = !!get();
|
|
2758
|
+
if (media.muted !== value) media.muted = value;
|
|
2759
|
+
});
|
|
2760
|
+
}
|
|
2761
|
+
//#endregion
|
|
2762
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/bindings/navigator.js
|
|
2763
|
+
/**
|
|
2764
|
+
* @param {(online: boolean) => void} update
|
|
2765
|
+
* @returns {void}
|
|
2766
|
+
*/
|
|
2767
|
+
function bind_online(update) {
|
|
2768
|
+
listen(window, ["online", "offline"], () => {
|
|
2769
|
+
update(navigator.onLine);
|
|
2770
|
+
});
|
|
2771
|
+
}
|
|
2772
|
+
//#endregion
|
|
2773
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/bindings/props.js
|
|
2774
|
+
/**
|
|
2775
|
+
* Makes an `export`ed (non-prop) variable available on the `$$props` object
|
|
2776
|
+
* so that consumers can do `bind:x` on the component.
|
|
2777
|
+
* @template V
|
|
2778
|
+
* @param {Record<string, unknown>} props
|
|
2779
|
+
* @param {string} prop
|
|
2780
|
+
* @param {V} value
|
|
2781
|
+
* @returns {void}
|
|
2782
|
+
*/
|
|
2783
|
+
function bind_prop(props, prop, value) {
|
|
2784
|
+
var desc = get_descriptor(props, prop);
|
|
2785
|
+
if (desc && desc.set) {
|
|
2786
|
+
props[prop] = value;
|
|
2787
|
+
teardown(() => {
|
|
2788
|
+
props[prop] = null;
|
|
2789
|
+
});
|
|
2790
|
+
}
|
|
2791
|
+
}
|
|
2792
|
+
//#endregion
|
|
2793
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/bindings/size.js
|
|
2794
|
+
/**
|
|
2795
|
+
* We create one listener for all elements
|
|
2796
|
+
* @see {@link https://groups.google.com/a/chromium.org/g/blink-dev/c/z6ienONUb5A/m/F5-VcUZtBAAJ Explanation}
|
|
2797
|
+
*/
|
|
2798
|
+
var ResizeObserverSingleton = class ResizeObserverSingleton {
|
|
2799
|
+
/** */
|
|
2800
|
+
#listeners = /* @__PURE__ */ new WeakMap();
|
|
2801
|
+
/** @type {ResizeObserver | undefined} */
|
|
2802
|
+
#observer;
|
|
2803
|
+
/** @type {ResizeObserverOptions} */
|
|
2804
|
+
#options;
|
|
2805
|
+
/** @static */
|
|
2806
|
+
static entries = /* @__PURE__ */ new WeakMap();
|
|
2807
|
+
/** @param {ResizeObserverOptions} options */
|
|
2808
|
+
constructor(options) {
|
|
2809
|
+
this.#options = options;
|
|
2810
|
+
}
|
|
2811
|
+
/**
|
|
2812
|
+
* @param {Element} element
|
|
2813
|
+
* @param {(entry: ResizeObserverEntry) => any} listener
|
|
2814
|
+
*/
|
|
2815
|
+
observe(element, listener) {
|
|
2816
|
+
var listeners = this.#listeners.get(element) || /* @__PURE__ */ new Set();
|
|
2817
|
+
listeners.add(listener);
|
|
2818
|
+
this.#listeners.set(element, listeners);
|
|
2819
|
+
this.#getObserver().observe(element, this.#options);
|
|
2820
|
+
return () => {
|
|
2821
|
+
var listeners = this.#listeners.get(element);
|
|
2822
|
+
listeners.delete(listener);
|
|
2823
|
+
if (listeners.size === 0) {
|
|
2824
|
+
this.#listeners.delete(element);
|
|
2825
|
+
/** @type {ResizeObserver} */ this.#observer.unobserve(element);
|
|
2826
|
+
}
|
|
2827
|
+
};
|
|
2828
|
+
}
|
|
2829
|
+
#getObserver() {
|
|
2830
|
+
return this.#observer ?? (this.#observer = new ResizeObserver(
|
|
2831
|
+
/** @param {any} entries */
|
|
2832
|
+
(entries) => {
|
|
2833
|
+
for (var entry of entries) {
|
|
2834
|
+
ResizeObserverSingleton.entries.set(entry.target, entry);
|
|
2835
|
+
for (var listener of this.#listeners.get(entry.target) || []) listener(entry);
|
|
2836
|
+
}
|
|
2837
|
+
}
|
|
2838
|
+
));
|
|
2839
|
+
}
|
|
2840
|
+
};
|
|
2841
|
+
var resize_observer_content_box = /* @__PURE__ */ new ResizeObserverSingleton({ box: "content-box" });
|
|
2842
|
+
var resize_observer_border_box = /* @__PURE__ */ new ResizeObserverSingleton({ box: "border-box" });
|
|
2843
|
+
var resize_observer_device_pixel_content_box = /* @__PURE__ */ new ResizeObserverSingleton({ box: "device-pixel-content-box" });
|
|
2844
|
+
/**
|
|
2845
|
+
* @param {Element} element
|
|
2846
|
+
* @param {'contentRect' | 'contentBoxSize' | 'borderBoxSize' | 'devicePixelContentBoxSize'} type
|
|
2847
|
+
* @param {(entry: keyof ResizeObserverEntry) => void} set
|
|
2848
|
+
*/
|
|
2849
|
+
function bind_resize_observer(element, type, set) {
|
|
2850
|
+
teardown((type === "contentRect" || type === "contentBoxSize" ? resize_observer_content_box : type === "borderBoxSize" ? resize_observer_border_box : resize_observer_device_pixel_content_box).observe(
|
|
2851
|
+
element,
|
|
2852
|
+
/** @param {any} entry */
|
|
2853
|
+
(entry) => set(entry[type])
|
|
2854
|
+
));
|
|
2855
|
+
}
|
|
2856
|
+
/**
|
|
2857
|
+
* @param {HTMLElement} element
|
|
2858
|
+
* @param {'clientWidth' | 'clientHeight' | 'offsetWidth' | 'offsetHeight'} type
|
|
2859
|
+
* @param {(size: number) => void} set
|
|
2860
|
+
*/
|
|
2861
|
+
function bind_element_size(element, type, set) {
|
|
2862
|
+
var unsub = resize_observer_border_box.observe(element, () => set(element[type]));
|
|
2863
|
+
effect(() => {
|
|
2864
|
+
untrack(() => set(element[type]));
|
|
2865
|
+
return unsub;
|
|
2866
|
+
});
|
|
2867
|
+
}
|
|
2868
|
+
//#endregion
|
|
2869
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/bindings/this.js
|
|
2870
|
+
/** @import { ComponentContext, Effect } from '#client' */
|
|
2871
|
+
/**
|
|
2872
|
+
* @param {any} bound_value
|
|
2873
|
+
* @param {Element} element_or_component
|
|
2874
|
+
* @returns {boolean}
|
|
2875
|
+
*/
|
|
2876
|
+
function is_bound_this(bound_value, element_or_component) {
|
|
2877
|
+
return bound_value === element_or_component || bound_value?.[STATE_SYMBOL] === element_or_component;
|
|
2878
|
+
}
|
|
2879
|
+
/**
|
|
2880
|
+
* @param {any} element_or_component
|
|
2881
|
+
* @param {(value: unknown, ...parts: unknown[]) => void} update
|
|
2882
|
+
* @param {(...parts: unknown[]) => unknown} get_value
|
|
2883
|
+
* @param {() => unknown[]} [get_parts] Set if the this binding is used inside an each block,
|
|
2884
|
+
* returns all the parts of the each block context that are used in the expression
|
|
2885
|
+
* @returns {void}
|
|
2886
|
+
*/
|
|
2887
|
+
function bind_this(element_or_component = {}, update, get_value, get_parts) {
|
|
2888
|
+
var component_effect = component_context.r;
|
|
2889
|
+
var parent = active_effect;
|
|
2890
|
+
effect(() => {
|
|
2891
|
+
/** @type {unknown[]} */
|
|
2892
|
+
var old_parts;
|
|
2893
|
+
/** @type {unknown[]} */
|
|
2894
|
+
var parts;
|
|
2895
|
+
render_effect(() => {
|
|
2896
|
+
old_parts = parts;
|
|
2897
|
+
parts = get_parts?.() || [];
|
|
2898
|
+
untrack(() => {
|
|
2899
|
+
if (!is_bound_this(get_value(...parts), element_or_component)) {
|
|
2900
|
+
update(element_or_component, ...parts);
|
|
2901
|
+
if (old_parts && is_bound_this(get_value(...old_parts), element_or_component)) update(null, ...old_parts);
|
|
2902
|
+
}
|
|
2903
|
+
});
|
|
2904
|
+
});
|
|
2905
|
+
return () => {
|
|
2906
|
+
let p = parent;
|
|
2907
|
+
while (p !== component_effect && p.parent !== null && p.parent.f & 33554432) p = p.parent;
|
|
2908
|
+
const teardown = () => {
|
|
2909
|
+
if (parts && is_bound_this(get_value(...parts), element_or_component)) update(null, ...parts);
|
|
2910
|
+
};
|
|
2911
|
+
const original_teardown = p.teardown;
|
|
2912
|
+
p.teardown = () => {
|
|
2913
|
+
teardown();
|
|
2914
|
+
original_teardown?.();
|
|
2915
|
+
};
|
|
2916
|
+
};
|
|
2917
|
+
});
|
|
2918
|
+
return element_or_component;
|
|
2919
|
+
}
|
|
2920
|
+
//#endregion
|
|
2921
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/bindings/universal.js
|
|
2922
|
+
/**
|
|
2923
|
+
* @param {'innerHTML' | 'textContent' | 'innerText'} property
|
|
2924
|
+
* @param {HTMLElement} element
|
|
2925
|
+
* @param {() => unknown} get
|
|
2926
|
+
* @param {(value: unknown) => void} set
|
|
2927
|
+
* @returns {void}
|
|
2928
|
+
*/
|
|
2929
|
+
function bind_content_editable(property, element, get, set = get) {
|
|
2930
|
+
element.addEventListener("input", () => {
|
|
2931
|
+
set(element[property]);
|
|
2932
|
+
});
|
|
2933
|
+
render_effect(() => {
|
|
2934
|
+
var value = get();
|
|
2935
|
+
if (element[property] !== value) if (value == null) {
|
|
2936
|
+
var non_null_value = element[property];
|
|
2937
|
+
set(non_null_value);
|
|
2938
|
+
} else element[property] = value + "";
|
|
2939
|
+
});
|
|
2940
|
+
}
|
|
2941
|
+
/**
|
|
2942
|
+
* @param {string} property
|
|
2943
|
+
* @param {string} event_name
|
|
2944
|
+
* @param {Element} element
|
|
2945
|
+
* @param {(value: unknown) => void} set
|
|
2946
|
+
* @param {() => unknown} [get]
|
|
2947
|
+
* @returns {void}
|
|
2948
|
+
*/
|
|
2949
|
+
function bind_property(property, event_name, element, set, get) {
|
|
2950
|
+
var handler = () => {
|
|
2951
|
+
set(element[property]);
|
|
2952
|
+
};
|
|
2953
|
+
element.addEventListener(event_name, handler);
|
|
2954
|
+
if (get) render_effect(() => {
|
|
2955
|
+
element[property] = get();
|
|
2956
|
+
});
|
|
2957
|
+
else handler();
|
|
2958
|
+
if (element === document.body || element === window || element === document) teardown(() => {
|
|
2959
|
+
element.removeEventListener(event_name, handler);
|
|
2960
|
+
});
|
|
2961
|
+
}
|
|
2962
|
+
/**
|
|
2963
|
+
* @param {HTMLElement} element
|
|
2964
|
+
* @param {(value: unknown) => void} set
|
|
2965
|
+
* @returns {void}
|
|
2966
|
+
*/
|
|
2967
|
+
function bind_focused(element, set) {
|
|
2968
|
+
listen(element, ["focus", "blur"], () => {
|
|
2969
|
+
set(element === document.activeElement);
|
|
2970
|
+
});
|
|
2971
|
+
}
|
|
2972
|
+
//#endregion
|
|
2973
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/bindings/window.js
|
|
2974
|
+
/**
|
|
2975
|
+
* @param {'x' | 'y'} type
|
|
2976
|
+
* @param {() => number} get
|
|
2977
|
+
* @param {(value: number) => void} set
|
|
2978
|
+
* @returns {void}
|
|
2979
|
+
*/
|
|
2980
|
+
function bind_window_scroll(type, get, set = get) {
|
|
2981
|
+
var is_scrolling_x = type === "x";
|
|
2982
|
+
var target_handler = () => without_reactive_context(() => {
|
|
2983
|
+
scrolling = true;
|
|
2984
|
+
clearTimeout(timeout);
|
|
2985
|
+
timeout = setTimeout(clear, 100);
|
|
2986
|
+
set(window[is_scrolling_x ? "scrollX" : "scrollY"]);
|
|
2987
|
+
});
|
|
2988
|
+
addEventListener("scroll", target_handler, { passive: true });
|
|
2989
|
+
var scrolling = false;
|
|
2990
|
+
/** @type {ReturnType<typeof setTimeout>} */
|
|
2991
|
+
var timeout;
|
|
2992
|
+
var clear = () => {
|
|
2993
|
+
scrolling = false;
|
|
2994
|
+
};
|
|
2995
|
+
var first = true;
|
|
2996
|
+
render_effect(() => {
|
|
2997
|
+
var latest_value = get();
|
|
2998
|
+
if (first) first = false;
|
|
2999
|
+
else if (!scrolling && latest_value != null) {
|
|
3000
|
+
scrolling = true;
|
|
3001
|
+
clearTimeout(timeout);
|
|
3002
|
+
if (is_scrolling_x) scrollTo(latest_value, window.scrollY);
|
|
3003
|
+
else scrollTo(window.scrollX, latest_value);
|
|
3004
|
+
timeout = setTimeout(clear, 100);
|
|
3005
|
+
}
|
|
3006
|
+
});
|
|
3007
|
+
effect(target_handler);
|
|
3008
|
+
teardown(() => {
|
|
3009
|
+
removeEventListener("scroll", target_handler);
|
|
3010
|
+
});
|
|
3011
|
+
}
|
|
3012
|
+
/**
|
|
3013
|
+
* @param {'innerWidth' | 'innerHeight' | 'outerWidth' | 'outerHeight'} type
|
|
3014
|
+
* @param {(size: number) => void} set
|
|
3015
|
+
*/
|
|
3016
|
+
function bind_window_size(type, set) {
|
|
3017
|
+
listen(window, ["resize"], () => without_reactive_context(() => set(window[type])));
|
|
3018
|
+
}
|
|
3019
|
+
//#endregion
|
|
3020
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/legacy/lifecycle.js
|
|
3021
|
+
/** @import { ComponentContextLegacy } from '#client' */
|
|
3022
|
+
/**
|
|
3023
|
+
* Legacy-mode only: Call `onMount` callbacks and set up `beforeUpdate`/`afterUpdate` effects
|
|
3024
|
+
* @param {boolean} [immutable]
|
|
3025
|
+
*/
|
|
3026
|
+
function init(immutable = false) {
|
|
3027
|
+
const context = component_context;
|
|
3028
|
+
const callbacks = context.l.u;
|
|
3029
|
+
if (!callbacks) return;
|
|
3030
|
+
let props = () => deep_read_state(context.s);
|
|
3031
|
+
if (immutable) {
|
|
3032
|
+
let version = 0;
|
|
3033
|
+
let prev = {};
|
|
3034
|
+
const d = /* @__PURE__ */ derived(() => {
|
|
3035
|
+
let changed = false;
|
|
3036
|
+
const props = context.s;
|
|
3037
|
+
for (const key in props) if (props[key] !== prev[key]) {
|
|
3038
|
+
prev[key] = props[key];
|
|
3039
|
+
changed = true;
|
|
3040
|
+
}
|
|
3041
|
+
if (changed) version++;
|
|
3042
|
+
return version;
|
|
3043
|
+
});
|
|
3044
|
+
props = () => get(d);
|
|
3045
|
+
}
|
|
3046
|
+
if (callbacks.b.length) user_pre_effect(() => {
|
|
3047
|
+
observe_all(context, props);
|
|
3048
|
+
run_all(callbacks.b);
|
|
3049
|
+
});
|
|
3050
|
+
user_effect(() => {
|
|
3051
|
+
const fns = untrack(() => callbacks.m.map(run));
|
|
3052
|
+
return () => {
|
|
3053
|
+
for (const fn of fns) if (typeof fn === "function") fn();
|
|
3054
|
+
};
|
|
3055
|
+
});
|
|
3056
|
+
if (callbacks.a.length) user_effect(() => {
|
|
3057
|
+
observe_all(context, props);
|
|
3058
|
+
run_all(callbacks.a);
|
|
3059
|
+
});
|
|
3060
|
+
}
|
|
3061
|
+
/**
|
|
3062
|
+
* Invoke the getter of all signals associated with a component
|
|
3063
|
+
* so they can be registered to the effect this function is called in.
|
|
3064
|
+
* @param {ComponentContextLegacy} context
|
|
3065
|
+
* @param {(() => void)} props
|
|
3066
|
+
*/
|
|
3067
|
+
function observe_all(context, props) {
|
|
3068
|
+
if (context.l.s) for (const signal of context.l.s) get(signal);
|
|
3069
|
+
props();
|
|
3070
|
+
}
|
|
3071
|
+
//#endregion
|
|
3072
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/legacy/misc.js
|
|
3073
|
+
/**
|
|
3074
|
+
* Under some circumstances, imports may be reactive in legacy mode. In that case,
|
|
3075
|
+
* they should be using `reactive_import` as part of the transformation
|
|
3076
|
+
* @param {() => any} fn
|
|
3077
|
+
*/
|
|
3078
|
+
function reactive_import(fn) {
|
|
3079
|
+
var s = source(0);
|
|
3080
|
+
return function() {
|
|
3081
|
+
if (arguments.length === 1) {
|
|
3082
|
+
set(s, get(s) + 1);
|
|
3083
|
+
return arguments[0];
|
|
3084
|
+
} else {
|
|
3085
|
+
get(s);
|
|
3086
|
+
return fn();
|
|
3087
|
+
}
|
|
3088
|
+
};
|
|
3089
|
+
}
|
|
3090
|
+
/**
|
|
3091
|
+
* @this {any}
|
|
3092
|
+
* @param {Record<string, unknown>} $$props
|
|
3093
|
+
* @param {Event} event
|
|
3094
|
+
* @returns {void}
|
|
3095
|
+
*/
|
|
3096
|
+
function bubble_event($$props, event) {
|
|
3097
|
+
var events = $$props.$$events?.[event.type];
|
|
3098
|
+
for (var fn of is_array(events) ? events.slice() : events == null ? [] : [events]) fn.call(this, event);
|
|
3099
|
+
}
|
|
3100
|
+
/**
|
|
3101
|
+
* Used to simulate `$on` on a component instance when `compatibility.componentApi === 4`
|
|
3102
|
+
* @param {Record<string, any>} $$props
|
|
3103
|
+
* @param {string} event_name
|
|
3104
|
+
* @param {Function} event_callback
|
|
3105
|
+
*/
|
|
3106
|
+
function add_legacy_event_listener($$props, event_name, event_callback) {
|
|
3107
|
+
$$props.$$events ||= {};
|
|
3108
|
+
$$props.$$events[event_name] ||= [];
|
|
3109
|
+
$$props.$$events[event_name].push(event_callback);
|
|
3110
|
+
}
|
|
3111
|
+
/**
|
|
3112
|
+
* Used to simulate `$set` on a component instance when `compatibility.componentApi === 4`.
|
|
3113
|
+
* Needs component accessors so that it can call the setter of the prop. Therefore doesn't
|
|
3114
|
+
* work for updating props in `$$props` or `$$restProps`.
|
|
3115
|
+
* @this {Record<string, any>}
|
|
3116
|
+
* @param {Record<string, any>} $$new_props
|
|
3117
|
+
*/
|
|
3118
|
+
function update_legacy_props($$new_props) {
|
|
3119
|
+
for (var key in $$new_props) if (key in this) this[key] = $$new_props[key];
|
|
3120
|
+
}
|
|
3121
|
+
//#endregion
|
|
3122
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/reactivity/props.js
|
|
3123
|
+
/** @import { Derived, Effect, Source } from './types.js' */
|
|
3124
|
+
/**
|
|
3125
|
+
* @param {((value?: number) => number)} fn
|
|
3126
|
+
* @param {1 | -1} [d]
|
|
3127
|
+
* @returns {number}
|
|
3128
|
+
*/
|
|
3129
|
+
function update_prop(fn, d = 1) {
|
|
3130
|
+
const value = fn();
|
|
3131
|
+
fn(value + d);
|
|
3132
|
+
return value;
|
|
3133
|
+
}
|
|
3134
|
+
/**
|
|
3135
|
+
* @param {((value?: number) => number)} fn
|
|
3136
|
+
* @param {1 | -1} [d]
|
|
3137
|
+
* @returns {number}
|
|
3138
|
+
*/
|
|
3139
|
+
function update_pre_prop(fn, d = 1) {
|
|
3140
|
+
const value = fn() + d;
|
|
3141
|
+
fn(value);
|
|
3142
|
+
return value;
|
|
3143
|
+
}
|
|
3144
|
+
/**
|
|
3145
|
+
* The proxy handler for rest props (i.e. `const { x, ...rest } = $props()`).
|
|
3146
|
+
* Is passed the full `$$props` object and excludes the named props.
|
|
3147
|
+
* @type {ProxyHandler<{ props: Record<string | symbol, unknown>, exclude: Array<string | symbol>, name?: string }>}}
|
|
3148
|
+
*/
|
|
3149
|
+
var rest_props_handler = {
|
|
3150
|
+
get(target, key) {
|
|
3151
|
+
if (target.exclude.includes(key)) return;
|
|
3152
|
+
return target.props[key];
|
|
3153
|
+
},
|
|
3154
|
+
set(target, key) {
|
|
3155
|
+
props_rest_readonly(`${target.name}.${String(key)}`);
|
|
3156
|
+
return false;
|
|
3157
|
+
},
|
|
3158
|
+
getOwnPropertyDescriptor(target, key) {
|
|
3159
|
+
if (target.exclude.includes(key)) return;
|
|
3160
|
+
if (key in target.props) return {
|
|
3161
|
+
enumerable: true,
|
|
3162
|
+
configurable: true,
|
|
3163
|
+
value: target.props[key]
|
|
3164
|
+
};
|
|
3165
|
+
},
|
|
3166
|
+
has(target, key) {
|
|
3167
|
+
if (target.exclude.includes(key)) return false;
|
|
3168
|
+
return key in target.props;
|
|
3169
|
+
},
|
|
3170
|
+
ownKeys(target) {
|
|
3171
|
+
return Reflect.ownKeys(target.props).filter((key) => !target.exclude.includes(key));
|
|
3172
|
+
}
|
|
3173
|
+
};
|
|
3174
|
+
/**
|
|
3175
|
+
* @param {Record<string, unknown>} props
|
|
3176
|
+
* @param {string[]} exclude
|
|
3177
|
+
* @param {string} [name]
|
|
3178
|
+
* @returns {Record<string, unknown>}
|
|
3179
|
+
*/
|
|
3180
|
+
/* @__NO_SIDE_EFFECTS__ */
|
|
3181
|
+
function rest_props(props, exclude, name) {
|
|
3182
|
+
return new Proxy({
|
|
3183
|
+
props,
|
|
3184
|
+
exclude,
|
|
3185
|
+
name,
|
|
3186
|
+
other: {},
|
|
3187
|
+
to_proxy: []
|
|
3188
|
+
}, rest_props_handler);
|
|
3189
|
+
}
|
|
3190
|
+
/**
|
|
3191
|
+
* The proxy handler for legacy $$restProps and $$props
|
|
3192
|
+
* @type {ProxyHandler<{ props: Record<string | symbol, unknown>, exclude: Array<string | symbol>, special: Record<string | symbol, (v?: unknown) => unknown>, version: Source<number>, parent_effect: Effect }>}}
|
|
3193
|
+
*/
|
|
3194
|
+
var legacy_rest_props_handler = {
|
|
3195
|
+
get(target, key) {
|
|
3196
|
+
if (target.exclude.includes(key)) return;
|
|
3197
|
+
get(target.version);
|
|
3198
|
+
return key in target.special ? target.special[key]() : target.props[key];
|
|
3199
|
+
},
|
|
3200
|
+
set(target, key, value) {
|
|
3201
|
+
if (!(key in target.special)) {
|
|
3202
|
+
var previous_effect = active_effect;
|
|
3203
|
+
try {
|
|
3204
|
+
set_active_effect(target.parent_effect);
|
|
3205
|
+
/** @type {Record<string, (v?: unknown) => unknown>} */
|
|
3206
|
+
target.special[key] = prop({ get [key]() {
|
|
3207
|
+
return target.props[key];
|
|
3208
|
+
} }, key, 4);
|
|
3209
|
+
} finally {
|
|
3210
|
+
set_active_effect(previous_effect);
|
|
3211
|
+
}
|
|
3212
|
+
}
|
|
3213
|
+
target.special[key](value);
|
|
3214
|
+
update(target.version);
|
|
3215
|
+
return true;
|
|
3216
|
+
},
|
|
3217
|
+
getOwnPropertyDescriptor(target, key) {
|
|
3218
|
+
if (target.exclude.includes(key)) return;
|
|
3219
|
+
if (key in target.props) return {
|
|
3220
|
+
enumerable: true,
|
|
3221
|
+
configurable: true,
|
|
3222
|
+
value: target.props[key]
|
|
3223
|
+
};
|
|
3224
|
+
},
|
|
3225
|
+
deleteProperty(target, key) {
|
|
3226
|
+
if (target.exclude.includes(key)) return true;
|
|
3227
|
+
target.exclude.push(key);
|
|
3228
|
+
update(target.version);
|
|
3229
|
+
return true;
|
|
3230
|
+
},
|
|
3231
|
+
has(target, key) {
|
|
3232
|
+
if (target.exclude.includes(key)) return false;
|
|
3233
|
+
return key in target.props;
|
|
3234
|
+
},
|
|
3235
|
+
ownKeys(target) {
|
|
3236
|
+
return Reflect.ownKeys(target.props).filter((key) => !target.exclude.includes(key));
|
|
3237
|
+
}
|
|
3238
|
+
};
|
|
3239
|
+
/**
|
|
3240
|
+
* @param {Record<string, unknown>} props
|
|
3241
|
+
* @param {string[]} exclude
|
|
3242
|
+
* @returns {Record<string, unknown>}
|
|
3243
|
+
*/
|
|
3244
|
+
function legacy_rest_props(props, exclude) {
|
|
3245
|
+
return new Proxy({
|
|
3246
|
+
props,
|
|
3247
|
+
exclude,
|
|
3248
|
+
special: {},
|
|
3249
|
+
version: source(0),
|
|
3250
|
+
parent_effect: active_effect
|
|
3251
|
+
}, legacy_rest_props_handler);
|
|
3252
|
+
}
|
|
3253
|
+
/**
|
|
3254
|
+
* The proxy handler for spread props. Handles the incoming array of props
|
|
3255
|
+
* that looks like `() => { dynamic: props }, { static: prop }, ..` and wraps
|
|
3256
|
+
* them so that the whole thing is passed to the component as the `$$props` argument.
|
|
3257
|
+
* @type {ProxyHandler<{ props: Array<Record<string | symbol, unknown> | (() => Record<string | symbol, unknown>)> }>}}
|
|
3258
|
+
*/
|
|
3259
|
+
var spread_props_handler = {
|
|
3260
|
+
get(target, key) {
|
|
3261
|
+
let i = target.props.length;
|
|
3262
|
+
while (i--) {
|
|
3263
|
+
let p = target.props[i];
|
|
3264
|
+
if (is_function(p)) p = p();
|
|
3265
|
+
if (typeof p === "object" && p !== null && key in p) return p[key];
|
|
3266
|
+
}
|
|
3267
|
+
},
|
|
3268
|
+
set(target, key, value) {
|
|
3269
|
+
let i = target.props.length;
|
|
3270
|
+
while (i--) {
|
|
3271
|
+
let p = target.props[i];
|
|
3272
|
+
if (is_function(p)) p = p();
|
|
3273
|
+
const desc = get_descriptor(p, key);
|
|
3274
|
+
if (desc && desc.set) {
|
|
3275
|
+
desc.set(value);
|
|
3276
|
+
return true;
|
|
3277
|
+
}
|
|
3278
|
+
}
|
|
3279
|
+
return false;
|
|
3280
|
+
},
|
|
3281
|
+
getOwnPropertyDescriptor(target, key) {
|
|
3282
|
+
let i = target.props.length;
|
|
3283
|
+
while (i--) {
|
|
3284
|
+
let p = target.props[i];
|
|
3285
|
+
if (is_function(p)) p = p();
|
|
3286
|
+
if (typeof p === "object" && p !== null && key in p) {
|
|
3287
|
+
const descriptor = get_descriptor(p, key);
|
|
3288
|
+
if (descriptor && !descriptor.configurable) descriptor.configurable = true;
|
|
3289
|
+
return descriptor;
|
|
3290
|
+
}
|
|
3291
|
+
}
|
|
3292
|
+
},
|
|
3293
|
+
has(target, key) {
|
|
3294
|
+
if (key === STATE_SYMBOL || key === LEGACY_PROPS) return false;
|
|
3295
|
+
for (let p of target.props) {
|
|
3296
|
+
if (is_function(p)) p = p();
|
|
3297
|
+
if (p != null && key in p) return true;
|
|
3298
|
+
}
|
|
3299
|
+
return false;
|
|
3300
|
+
},
|
|
3301
|
+
ownKeys(target) {
|
|
3302
|
+
/** @type {Array<string | symbol>} */
|
|
3303
|
+
const keys = [];
|
|
3304
|
+
for (let p of target.props) {
|
|
3305
|
+
if (is_function(p)) p = p();
|
|
3306
|
+
if (!p) continue;
|
|
3307
|
+
for (const key in p) if (!keys.includes(key)) keys.push(key);
|
|
3308
|
+
for (const key of Object.getOwnPropertySymbols(p)) if (!keys.includes(key)) keys.push(key);
|
|
3309
|
+
}
|
|
3310
|
+
return keys;
|
|
3311
|
+
}
|
|
3312
|
+
};
|
|
3313
|
+
/**
|
|
3314
|
+
* @param {Array<Record<string, unknown> | (() => Record<string, unknown>)>} props
|
|
3315
|
+
* @returns {any}
|
|
3316
|
+
*/
|
|
3317
|
+
function spread_props(...props) {
|
|
3318
|
+
return new Proxy({ props }, spread_props_handler);
|
|
3319
|
+
}
|
|
3320
|
+
/**
|
|
3321
|
+
* This function is responsible for synchronizing a possibly bound prop with the inner component state.
|
|
3322
|
+
* It is used whenever the compiler sees that the component writes to the prop, or when it has a default prop_value.
|
|
3323
|
+
* @template V
|
|
3324
|
+
* @param {Record<string, unknown>} props
|
|
3325
|
+
* @param {string} key
|
|
3326
|
+
* @param {number} flags
|
|
3327
|
+
* @param {V | (() => V)} [fallback]
|
|
3328
|
+
* @returns {(() => V | ((arg: V) => V) | ((arg: V, mutation: boolean) => V))}
|
|
3329
|
+
*/
|
|
3330
|
+
function prop(props, key, flags, fallback) {
|
|
3331
|
+
var runes = !legacy_mode_flag || (flags & 2) !== 0;
|
|
3332
|
+
var bindable = (flags & 8) !== 0;
|
|
3333
|
+
var lazy = (flags & 16) !== 0;
|
|
3334
|
+
var fallback_value = fallback;
|
|
3335
|
+
var fallback_dirty = true;
|
|
3336
|
+
var fallback_signal = void 0;
|
|
3337
|
+
var get_fallback = () => {
|
|
3338
|
+
if (lazy && runes) {
|
|
3339
|
+
fallback_signal ??= /* @__PURE__ */ derived(fallback);
|
|
3340
|
+
return get(fallback_signal);
|
|
3341
|
+
}
|
|
3342
|
+
if (fallback_dirty) {
|
|
3343
|
+
fallback_dirty = false;
|
|
3344
|
+
fallback_value = lazy ? untrack(fallback) : fallback;
|
|
3345
|
+
}
|
|
3346
|
+
return fallback_value;
|
|
3347
|
+
};
|
|
3348
|
+
/** @type {((v: V) => void) | undefined} */
|
|
3349
|
+
let setter;
|
|
3350
|
+
if (bindable) {
|
|
3351
|
+
var is_entry_props = STATE_SYMBOL in props || LEGACY_PROPS in props;
|
|
3352
|
+
setter = get_descriptor(props, key)?.set ?? (is_entry_props && key in props ? (v) => props[key] = v : void 0);
|
|
3353
|
+
}
|
|
3354
|
+
/** @type {V} */
|
|
3355
|
+
var initial_value;
|
|
3356
|
+
var is_store_sub = false;
|
|
3357
|
+
if (bindable) [initial_value, is_store_sub] = capture_store_binding(() => props[key]);
|
|
3358
|
+
else initial_value = props[key];
|
|
3359
|
+
if (initial_value === void 0 && fallback !== void 0) {
|
|
3360
|
+
initial_value = get_fallback();
|
|
3361
|
+
if (setter) {
|
|
3362
|
+
if (runes) props_invalid_value(key);
|
|
3363
|
+
setter(initial_value);
|
|
3364
|
+
}
|
|
3365
|
+
}
|
|
3366
|
+
/** @type {() => V} */
|
|
3367
|
+
var getter;
|
|
3368
|
+
if (runes) getter = () => {
|
|
3369
|
+
var value = props[key];
|
|
3370
|
+
if (value === void 0) return get_fallback();
|
|
3371
|
+
fallback_dirty = true;
|
|
3372
|
+
return value;
|
|
3373
|
+
};
|
|
3374
|
+
else getter = () => {
|
|
3375
|
+
var value = props[key];
|
|
3376
|
+
if (value !== void 0) fallback_value = void 0;
|
|
3377
|
+
return value === void 0 ? fallback_value : value;
|
|
3378
|
+
};
|
|
3379
|
+
if (runes && (flags & 4) === 0) return getter;
|
|
3380
|
+
if (setter) {
|
|
3381
|
+
var legacy_parent = props.$$legacy;
|
|
3382
|
+
return (function(value, mutation) {
|
|
3383
|
+
if (arguments.length > 0) {
|
|
3384
|
+
if (!runes || !mutation || legacy_parent || is_store_sub)
|
|
3385
|
+
/** @type {Function} */ setter(mutation ? getter() : value);
|
|
3386
|
+
return value;
|
|
3387
|
+
}
|
|
3388
|
+
return getter();
|
|
3389
|
+
});
|
|
3390
|
+
}
|
|
3391
|
+
var overridden = false;
|
|
3392
|
+
var d = ((flags & 1) !== 0 ? derived : derived_safe_equal)(() => {
|
|
3393
|
+
overridden = false;
|
|
3394
|
+
return getter();
|
|
3395
|
+
});
|
|
3396
|
+
d.label = key;
|
|
3397
|
+
if (bindable) get(d);
|
|
3398
|
+
var parent_effect = active_effect;
|
|
3399
|
+
return (function(value, mutation) {
|
|
3400
|
+
if (arguments.length > 0) {
|
|
3401
|
+
const new_value = mutation ? get(d) : runes && bindable ? proxy(value) : value;
|
|
3402
|
+
set(d, new_value);
|
|
3403
|
+
overridden = true;
|
|
3404
|
+
if (fallback_value !== void 0) fallback_value = new_value;
|
|
3405
|
+
return value;
|
|
3406
|
+
}
|
|
3407
|
+
if (is_destroying_effect && overridden || (parent_effect.f & 16384) !== 0) return d.v;
|
|
3408
|
+
return get(d);
|
|
3409
|
+
});
|
|
3410
|
+
}
|
|
3411
|
+
//#endregion
|
|
3412
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/validate.js
|
|
3413
|
+
/** @import { Blocker } from '#client' */
|
|
3414
|
+
/**
|
|
3415
|
+
* @param {string} binding
|
|
3416
|
+
* @param {Blocker[]} blockers
|
|
3417
|
+
* @param {() => Record<string, any>} get_object
|
|
3418
|
+
* @param {() => string} get_property
|
|
3419
|
+
* @param {number} line
|
|
3420
|
+
* @param {number} column
|
|
3421
|
+
*/
|
|
3422
|
+
function validate_binding(binding, blockers, get_object, get_property, line, column) {
|
|
3423
|
+
run_after_blockers(blockers, () => {
|
|
3424
|
+
var warned = false;
|
|
3425
|
+
var filename = dev_current_component_function?.[FILENAME];
|
|
3426
|
+
render_effect(() => {
|
|
3427
|
+
if (warned) return;
|
|
3428
|
+
var [object, is_store_sub] = capture_store_binding(get_object);
|
|
3429
|
+
if (is_store_sub) return;
|
|
3430
|
+
var property = get_property();
|
|
3431
|
+
var ran = false;
|
|
3432
|
+
var effect = render_effect(() => {
|
|
3433
|
+
if (ran) return;
|
|
3434
|
+
object[property];
|
|
3435
|
+
});
|
|
3436
|
+
ran = true;
|
|
3437
|
+
if (effect.deps === null) {
|
|
3438
|
+
binding_property_non_reactive(binding, `${filename}:${line}:${column}`);
|
|
3439
|
+
warned = true;
|
|
3440
|
+
}
|
|
3441
|
+
});
|
|
3442
|
+
});
|
|
3443
|
+
}
|
|
3444
|
+
//#endregion
|
|
3445
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dom/elements/custom-element.js
|
|
3446
|
+
/**
|
|
3447
|
+
* @typedef {Object} CustomElementPropDefinition
|
|
3448
|
+
* @property {string} [attribute]
|
|
3449
|
+
* @property {boolean} [reflect]
|
|
3450
|
+
* @property {'String'|'Boolean'|'Number'|'Array'|'Object'} [type]
|
|
3451
|
+
*/
|
|
3452
|
+
/** @type {any} */
|
|
3453
|
+
var SvelteElement;
|
|
3454
|
+
if (typeof HTMLElement === "function") SvelteElement = class extends HTMLElement {
|
|
3455
|
+
/** The Svelte component constructor */
|
|
3456
|
+
$$ctor;
|
|
3457
|
+
/** Slots */
|
|
3458
|
+
$$s;
|
|
3459
|
+
/** @type {any} The Svelte component instance */
|
|
3460
|
+
$$c;
|
|
3461
|
+
/** Whether or not the custom element is connected */
|
|
3462
|
+
$$cn = false;
|
|
3463
|
+
/** @type {Record<string, any>} Component props data */
|
|
3464
|
+
$$d = {};
|
|
3465
|
+
/** `true` if currently in the process of reflecting component props back to attributes */
|
|
3466
|
+
$$r = false;
|
|
3467
|
+
/** @type {Record<string, CustomElementPropDefinition>} Props definition (name, reflected, type etc) */
|
|
3468
|
+
$$p_d = {};
|
|
3469
|
+
/** @type {Record<string, EventListenerOrEventListenerObject[]>} Event listeners */
|
|
3470
|
+
$$l = {};
|
|
3471
|
+
/** @type {Map<EventListenerOrEventListenerObject, Function>} Event listener unsubscribe functions */
|
|
3472
|
+
$$l_u = /* @__PURE__ */ new Map();
|
|
3473
|
+
/** @type {any} The managed render effect for reflecting attributes */
|
|
3474
|
+
$$me;
|
|
3475
|
+
/** @type {ShadowRoot | null} The ShadowRoot of the custom element */
|
|
3476
|
+
$$shadowRoot = null;
|
|
3477
|
+
/**
|
|
3478
|
+
* @param {*} $$componentCtor
|
|
3479
|
+
* @param {*} $$slots
|
|
3480
|
+
* @param {ShadowRootInit | undefined} shadow_root_init
|
|
3481
|
+
*/
|
|
3482
|
+
constructor($$componentCtor, $$slots, shadow_root_init) {
|
|
3483
|
+
super();
|
|
3484
|
+
this.$$ctor = $$componentCtor;
|
|
3485
|
+
this.$$s = $$slots;
|
|
3486
|
+
if (shadow_root_init) this.$$shadowRoot = this.attachShadow(shadow_root_init);
|
|
3487
|
+
}
|
|
3488
|
+
/**
|
|
3489
|
+
* @param {string} type
|
|
3490
|
+
* @param {EventListenerOrEventListenerObject} listener
|
|
3491
|
+
* @param {boolean | AddEventListenerOptions} [options]
|
|
3492
|
+
*/
|
|
3493
|
+
addEventListener(type, listener, options) {
|
|
3494
|
+
this.$$l[type] = this.$$l[type] || [];
|
|
3495
|
+
this.$$l[type].push(listener);
|
|
3496
|
+
if (this.$$c) {
|
|
3497
|
+
const unsub = this.$$c.$on(type, listener);
|
|
3498
|
+
this.$$l_u.set(listener, unsub);
|
|
3499
|
+
}
|
|
3500
|
+
super.addEventListener(type, listener, options);
|
|
3501
|
+
}
|
|
3502
|
+
/**
|
|
3503
|
+
* @param {string} type
|
|
3504
|
+
* @param {EventListenerOrEventListenerObject} listener
|
|
3505
|
+
* @param {boolean | AddEventListenerOptions} [options]
|
|
3506
|
+
*/
|
|
3507
|
+
removeEventListener(type, listener, options) {
|
|
3508
|
+
super.removeEventListener(type, listener, options);
|
|
3509
|
+
if (this.$$c) {
|
|
3510
|
+
const unsub = this.$$l_u.get(listener);
|
|
3511
|
+
if (unsub) {
|
|
3512
|
+
unsub();
|
|
3513
|
+
this.$$l_u.delete(listener);
|
|
3514
|
+
}
|
|
3515
|
+
}
|
|
3516
|
+
}
|
|
3517
|
+
async connectedCallback() {
|
|
3518
|
+
this.$$cn = true;
|
|
3519
|
+
if (!this.$$c) {
|
|
3520
|
+
await Promise.resolve();
|
|
3521
|
+
if (!this.$$cn || this.$$c) return;
|
|
3522
|
+
/** @param {string} name */
|
|
3523
|
+
function create_slot(name) {
|
|
3524
|
+
/**
|
|
3525
|
+
* @param {Element} anchor
|
|
3526
|
+
*/
|
|
3527
|
+
return (anchor) => {
|
|
3528
|
+
const slot = create_element("slot");
|
|
3529
|
+
if (name !== "default") slot.name = name;
|
|
3530
|
+
append(anchor, slot);
|
|
3531
|
+
};
|
|
3532
|
+
}
|
|
3533
|
+
/** @type {Record<string, any>} */
|
|
3534
|
+
const $$slots = {};
|
|
3535
|
+
const existing_slots = get_custom_elements_slots(this);
|
|
3536
|
+
for (const name of this.$$s) if (name in existing_slots) if (name === "default" && !this.$$d.children) {
|
|
3537
|
+
this.$$d.children = create_slot(name);
|
|
3538
|
+
$$slots.default = true;
|
|
3539
|
+
} else $$slots[name] = create_slot(name);
|
|
3540
|
+
for (const attribute of this.attributes) {
|
|
3541
|
+
const name = this.$$g_p(attribute.name);
|
|
3542
|
+
if (!(name in this.$$d)) this.$$d[name] = get_custom_element_value(name, attribute.value, this.$$p_d, "toProp");
|
|
3543
|
+
}
|
|
3544
|
+
for (const key in this.$$p_d) if (!(key in this.$$d) && this[key] !== void 0) {
|
|
3545
|
+
this.$$d[key] = this[key];
|
|
3546
|
+
delete this[key];
|
|
3547
|
+
}
|
|
3548
|
+
this.$$c = createClassComponent({
|
|
3549
|
+
component: this.$$ctor,
|
|
3550
|
+
target: this.$$shadowRoot || this,
|
|
3551
|
+
props: {
|
|
3552
|
+
...this.$$d,
|
|
3553
|
+
$$slots,
|
|
3554
|
+
$$host: this
|
|
3555
|
+
}
|
|
3556
|
+
});
|
|
3557
|
+
this.$$me = effect_root(() => {
|
|
3558
|
+
render_effect(() => {
|
|
3559
|
+
this.$$r = true;
|
|
3560
|
+
for (const key of object_keys(this.$$c)) {
|
|
3561
|
+
if (!this.$$p_d[key]?.reflect) continue;
|
|
3562
|
+
this.$$d[key] = this.$$c[key];
|
|
3563
|
+
const attribute_value = get_custom_element_value(key, this.$$d[key], this.$$p_d, "toAttribute");
|
|
3564
|
+
if (attribute_value == null) this.removeAttribute(this.$$p_d[key].attribute || key);
|
|
3565
|
+
else this.setAttribute(this.$$p_d[key].attribute || key, attribute_value);
|
|
3566
|
+
}
|
|
3567
|
+
this.$$r = false;
|
|
3568
|
+
});
|
|
3569
|
+
});
|
|
3570
|
+
for (const type in this.$$l) for (const listener of this.$$l[type]) {
|
|
3571
|
+
const unsub = this.$$c.$on(type, listener);
|
|
3572
|
+
this.$$l_u.set(listener, unsub);
|
|
3573
|
+
}
|
|
3574
|
+
this.$$l = {};
|
|
3575
|
+
}
|
|
3576
|
+
}
|
|
3577
|
+
/**
|
|
3578
|
+
* @param {string} attr
|
|
3579
|
+
* @param {string} _oldValue
|
|
3580
|
+
* @param {string} newValue
|
|
3581
|
+
*/
|
|
3582
|
+
attributeChangedCallback(attr, _oldValue, newValue) {
|
|
3583
|
+
if (this.$$r) return;
|
|
3584
|
+
attr = this.$$g_p(attr);
|
|
3585
|
+
this.$$d[attr] = get_custom_element_value(attr, newValue, this.$$p_d, "toProp");
|
|
3586
|
+
this.$$c?.$set({ [attr]: this.$$d[attr] });
|
|
3587
|
+
}
|
|
3588
|
+
disconnectedCallback() {
|
|
3589
|
+
this.$$cn = false;
|
|
3590
|
+
Promise.resolve().then(() => {
|
|
3591
|
+
if (!this.$$cn && this.$$c) {
|
|
3592
|
+
this.$$c.$destroy();
|
|
3593
|
+
this.$$me();
|
|
3594
|
+
this.$$c = void 0;
|
|
3595
|
+
}
|
|
3596
|
+
});
|
|
3597
|
+
}
|
|
3598
|
+
/**
|
|
3599
|
+
* @param {string} attribute_name
|
|
3600
|
+
*/
|
|
3601
|
+
$$g_p(attribute_name) {
|
|
3602
|
+
return object_keys(this.$$p_d).find((key) => this.$$p_d[key].attribute === attribute_name || !this.$$p_d[key].attribute && key.toLowerCase() === attribute_name) || attribute_name;
|
|
3603
|
+
}
|
|
3604
|
+
};
|
|
3605
|
+
/**
|
|
3606
|
+
* @param {string} prop
|
|
3607
|
+
* @param {any} value
|
|
3608
|
+
* @param {Record<string, CustomElementPropDefinition>} props_definition
|
|
3609
|
+
* @param {'toAttribute' | 'toProp'} [transform]
|
|
3610
|
+
*/
|
|
3611
|
+
function get_custom_element_value(prop, value, props_definition, transform) {
|
|
3612
|
+
const type = props_definition[prop]?.type;
|
|
3613
|
+
value = type === "Boolean" && typeof value !== "boolean" ? value != null : value;
|
|
3614
|
+
if (!transform || !props_definition[prop]) return value;
|
|
3615
|
+
else if (transform === "toAttribute") switch (type) {
|
|
3616
|
+
case "Object":
|
|
3617
|
+
case "Array": return value == null ? null : JSON.stringify(value);
|
|
3618
|
+
case "Boolean": return value ? "" : null;
|
|
3619
|
+
case "Number": return value == null ? null : value;
|
|
3620
|
+
default: return value;
|
|
3621
|
+
}
|
|
3622
|
+
else switch (type) {
|
|
3623
|
+
case "Object":
|
|
3624
|
+
case "Array": return value && JSON.parse(value);
|
|
3625
|
+
case "Boolean": return value;
|
|
3626
|
+
case "Number": return value != null ? +value : value;
|
|
3627
|
+
default: return value;
|
|
3628
|
+
}
|
|
3629
|
+
}
|
|
3630
|
+
/**
|
|
3631
|
+
* @param {HTMLElement} element
|
|
3632
|
+
*/
|
|
3633
|
+
function get_custom_elements_slots(element) {
|
|
3634
|
+
/** @type {Record<string, true>} */
|
|
3635
|
+
const result = {};
|
|
3636
|
+
element.childNodes.forEach((node) => {
|
|
3637
|
+
result[node.slot || "default"] = true;
|
|
3638
|
+
});
|
|
3639
|
+
return result;
|
|
3640
|
+
}
|
|
3641
|
+
/**
|
|
3642
|
+
* @internal
|
|
3643
|
+
*
|
|
3644
|
+
* Turn a Svelte component into a custom element.
|
|
3645
|
+
* @param {any} Component A Svelte component function
|
|
3646
|
+
* @param {Record<string, CustomElementPropDefinition>} props_definition The props to observe
|
|
3647
|
+
* @param {string[]} slots The slots to create
|
|
3648
|
+
* @param {string[]} exports Explicitly exported values, other than props
|
|
3649
|
+
* @param {ShadowRootInit | undefined} shadow_root_init Options passed to shadow DOM constructor
|
|
3650
|
+
* @param {(ce: new () => HTMLElement) => new () => HTMLElement} [extend]
|
|
3651
|
+
*/
|
|
3652
|
+
function create_custom_element(Component, props_definition, slots, exports, shadow_root_init, extend) {
|
|
3653
|
+
let Class = class extends SvelteElement {
|
|
3654
|
+
constructor() {
|
|
3655
|
+
super(Component, slots, shadow_root_init);
|
|
3656
|
+
this.$$p_d = props_definition;
|
|
3657
|
+
}
|
|
3658
|
+
static get observedAttributes() {
|
|
3659
|
+
return object_keys(props_definition).map((key) => (props_definition[key].attribute || key).toLowerCase());
|
|
3660
|
+
}
|
|
3661
|
+
};
|
|
3662
|
+
object_keys(props_definition).forEach((prop) => {
|
|
3663
|
+
define_property(Class.prototype, prop, {
|
|
3664
|
+
get() {
|
|
3665
|
+
return this.$$c && prop in this.$$c ? this.$$c[prop] : this.$$d[prop];
|
|
3666
|
+
},
|
|
3667
|
+
set(value) {
|
|
3668
|
+
value = get_custom_element_value(prop, value, props_definition);
|
|
3669
|
+
this.$$d[prop] = value;
|
|
3670
|
+
var component = this.$$c;
|
|
3671
|
+
if (component) if (get_descriptor(component, prop)?.get) component[prop] = value;
|
|
3672
|
+
else component.$set({ [prop]: value });
|
|
3673
|
+
}
|
|
3674
|
+
});
|
|
3675
|
+
});
|
|
3676
|
+
exports.forEach((property) => {
|
|
3677
|
+
define_property(Class.prototype, property, { get() {
|
|
3678
|
+
return this.$$c?.[property];
|
|
3679
|
+
} });
|
|
3680
|
+
});
|
|
3681
|
+
if (extend) Class = extend(Class);
|
|
3682
|
+
Component.element = Class;
|
|
3683
|
+
return Class;
|
|
3684
|
+
}
|
|
3685
|
+
//#endregion
|
|
3686
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/internal/client/dev/console-log.js
|
|
3687
|
+
/**
|
|
3688
|
+
* @param {string} method
|
|
3689
|
+
* @param {...any} objects
|
|
3690
|
+
*/
|
|
3691
|
+
function log_if_contains_state(method, ...objects) {
|
|
3692
|
+
untrack(() => {
|
|
3693
|
+
try {
|
|
3694
|
+
let has_state = false;
|
|
3695
|
+
const transformed = [];
|
|
3696
|
+
for (const obj of objects) if (obj && typeof obj === "object" && STATE_SYMBOL in obj) {
|
|
3697
|
+
transformed.push(snapshot(obj, true));
|
|
3698
|
+
has_state = true;
|
|
3699
|
+
} else transformed.push(obj);
|
|
3700
|
+
if (has_state) {
|
|
3701
|
+
console_log_state(method);
|
|
3702
|
+
console.log("%c[snapshot]", "color: grey", ...transformed);
|
|
3703
|
+
}
|
|
3704
|
+
} catch {}
|
|
3705
|
+
});
|
|
3706
|
+
return objects;
|
|
3707
|
+
}
|
|
3708
|
+
{
|
|
3709
|
+
/**
|
|
3710
|
+
* @param {string} rune
|
|
3711
|
+
*/
|
|
3712
|
+
function throw_rune_error(rune) {
|
|
3713
|
+
if (!(rune in globalThis)) {
|
|
3714
|
+
/** @type {any} */
|
|
3715
|
+
let value;
|
|
3716
|
+
Object.defineProperty(globalThis, rune, {
|
|
3717
|
+
configurable: true,
|
|
3718
|
+
get: () => {
|
|
3719
|
+
if (value !== void 0) return value;
|
|
3720
|
+
rune_outside_svelte(rune);
|
|
3721
|
+
},
|
|
3722
|
+
set: (v) => {
|
|
3723
|
+
value = v;
|
|
3724
|
+
}
|
|
3725
|
+
});
|
|
3726
|
+
}
|
|
3727
|
+
}
|
|
3728
|
+
throw_rune_error("$state");
|
|
3729
|
+
throw_rune_error("$effect");
|
|
3730
|
+
throw_rune_error("$derived");
|
|
3731
|
+
throw_rune_error("$inspect");
|
|
3732
|
+
throw_rune_error("$props");
|
|
3733
|
+
throw_rune_error("$bindable");
|
|
3734
|
+
}
|
|
3735
|
+
//#endregion
|
|
3736
|
+
//#region ../../../node_modules/.pnpm/svelte@5.55.9/node_modules/svelte/src/attachments/index.js
|
|
3737
|
+
/** @import { Action, ActionReturn } from '../action/public' */
|
|
3738
|
+
/** @import { Attachment } from './public' */
|
|
3739
|
+
/**
|
|
3740
|
+
* Creates an object key that will be recognised as an attachment when the object is spread onto an element,
|
|
3741
|
+
* as a programmatic alternative to using `{@attach ...}`. This can be useful for library authors, though
|
|
3742
|
+
* is generally not needed when building an app.
|
|
3743
|
+
*
|
|
3744
|
+
* ```svelte
|
|
3745
|
+
* <script>
|
|
3746
|
+
* import { createAttachmentKey } from 'svelte/attachments';
|
|
3747
|
+
*
|
|
3748
|
+
* const props = {
|
|
3749
|
+
* class: 'cool',
|
|
3750
|
+
* onclick: () => alert('clicked'),
|
|
3751
|
+
* [createAttachmentKey()]: (node) => {
|
|
3752
|
+
* node.textContent = 'attached!';
|
|
3753
|
+
* }
|
|
3754
|
+
* };
|
|
3755
|
+
* <\/script>
|
|
3756
|
+
*
|
|
3757
|
+
* <button {...props}>click me</button>
|
|
3758
|
+
* ```
|
|
3759
|
+
* @since 5.29
|
|
3760
|
+
*/
|
|
3761
|
+
function createAttachmentKey() {
|
|
3762
|
+
return Symbol(ATTACHMENT_KEY);
|
|
3763
|
+
}
|
|
3764
|
+
/**
|
|
3765
|
+
* Converts an [action](https://svelte.dev/docs/svelte/use) into an [attachment](https://svelte.dev/docs/svelte/@attach) keeping the same behavior.
|
|
3766
|
+
* It's useful if you want to start using attachments on components but you have actions provided by a library.
|
|
3767
|
+
*
|
|
3768
|
+
* Note that the second argument, if provided, must be a function that _returns_ the argument to the
|
|
3769
|
+
* action function, not the argument itself.
|
|
3770
|
+
*
|
|
3771
|
+
* ```svelte
|
|
3772
|
+
* <!-- with an action -->
|
|
3773
|
+
* <div use:foo={bar}>...</div>
|
|
3774
|
+
*
|
|
3775
|
+
* <!-- with an attachment -->
|
|
3776
|
+
* <div {@attach fromAction(foo, () => bar)}>...</div>
|
|
3777
|
+
* ```
|
|
3778
|
+
* @template {EventTarget} E
|
|
3779
|
+
* @template {unknown} T
|
|
3780
|
+
* @overload
|
|
3781
|
+
* @param {Action<E, T> | ((element: E, arg: T) => void | ActionReturn<T>)} action The action function
|
|
3782
|
+
* @param {() => T} fn A function that returns the argument for the action
|
|
3783
|
+
* @returns {Attachment<E>}
|
|
3784
|
+
*/
|
|
3785
|
+
/**
|
|
3786
|
+
* Converts an [action](https://svelte.dev/docs/svelte/use) into an [attachment](https://svelte.dev/docs/svelte/@attach) keeping the same behavior.
|
|
3787
|
+
* It's useful if you want to start using attachments on components but you have actions provided by a library.
|
|
3788
|
+
*
|
|
3789
|
+
* Note that the second argument, if provided, must be a function that _returns_ the argument to the
|
|
3790
|
+
* action function, not the argument itself.
|
|
3791
|
+
*
|
|
3792
|
+
* ```svelte
|
|
3793
|
+
* <!-- with an action -->
|
|
3794
|
+
* <div use:foo={bar}>...</div>
|
|
3795
|
+
*
|
|
3796
|
+
* <!-- with an attachment -->
|
|
3797
|
+
* <div {@attach fromAction(foo, () => bar)}>...</div>
|
|
3798
|
+
* ```
|
|
3799
|
+
* @template {EventTarget} E
|
|
3800
|
+
* @overload
|
|
3801
|
+
* @param {Action<E, void> | ((element: E) => void | ActionReturn<void>)} action The action function
|
|
3802
|
+
* @returns {Attachment<E>}
|
|
3803
|
+
*/
|
|
3804
|
+
/**
|
|
3805
|
+
* Converts an [action](https://svelte.dev/docs/svelte/use) into an [attachment](https://svelte.dev/docs/svelte/@attach) keeping the same behavior.
|
|
3806
|
+
* It's useful if you want to start using attachments on components but you have actions provided by a library.
|
|
3807
|
+
*
|
|
3808
|
+
* Note that the second argument, if provided, must be a function that _returns_ the argument to the
|
|
3809
|
+
* action function, not the argument itself.
|
|
3810
|
+
*
|
|
3811
|
+
* ```svelte
|
|
3812
|
+
* <!-- with an action -->
|
|
3813
|
+
* <div use:foo={bar}>...</div>
|
|
3814
|
+
*
|
|
3815
|
+
* <!-- with an attachment -->
|
|
3816
|
+
* <div {@attach fromAction(foo, () => bar)}>...</div>
|
|
3817
|
+
* ```
|
|
3818
|
+
*
|
|
3819
|
+
* @template {EventTarget} E
|
|
3820
|
+
* @template {unknown} T
|
|
3821
|
+
* @param {Action<E, T> | ((element: E, arg: T) => void | ActionReturn<T>)} action The action function
|
|
3822
|
+
* @param {() => T} fn A function that returns the argument for the action
|
|
3823
|
+
* @returns {Attachment<E>}
|
|
3824
|
+
* @since 5.32
|
|
3825
|
+
*/
|
|
3826
|
+
function fromAction(action, fn = noop) {
|
|
3827
|
+
return (element) => {
|
|
3828
|
+
const { update, destroy } = untrack(() => action(element, fn()) ?? {});
|
|
3829
|
+
if (update) {
|
|
3830
|
+
var ran = false;
|
|
3831
|
+
render_effect(() => {
|
|
3832
|
+
const arg = fn();
|
|
3833
|
+
if (ran) update(arg);
|
|
3834
|
+
});
|
|
3835
|
+
ran = true;
|
|
3836
|
+
}
|
|
3837
|
+
if (destroy) teardown(destroy);
|
|
3838
|
+
};
|
|
3839
|
+
}
|
|
3840
|
+
//#endregion
|
|
3841
|
+
export { set_default_value as $, bind_muted as A, async as At, bind_group as B, bind_element_size as C, each as Ct, bind_buffered as D, if_block as Dt, bind_online as E, key as Et, bind_seekable as F, hmr as Ft, CLASS as G, bind_active_element as H, bind_seeking as I, add_locations as It, remove_input_defaults as J, STYLE as K, bind_volume as L, cleanup_styles as Lt, bind_playback_rate as M, check_target as Mt, bind_played as N, legacy_api as Nt, bind_current_time as O, await_block as Ot, bind_ready_state as P, create_ownership_validator as Pt, set_default_checked as Q, bind_checked as R, assign as Rt, bind_this as S, html as St, bind_prop as T, css_props as Tt, customizable_select as U, bind_value as V, selectedcontent as W, set_checked as X, set_attribute as Y, set_custom_element_data as Z, bind_window_scroll as _, component as _t, validate_binding as a, select_option as at, bind_focused as b, sanitize_slots as bt, rest_props as c, attach as ct, update_prop as d, head as dt, set_selected as et, add_legacy_event_listener as f, element as ft, init as g, raf as gt, update_legacy_props as h, loop as ht, create_custom_element as i, init_select as it, bind_paused as j, inspect as jt, bind_ended as k, validate_snippet_args as kt, spread_props as l, action as lt, reactive_import as m, transition as mt, fromAction as n, set_xlink_attribute as nt, legacy_rest_props as o, set_style as ot, bubble_event as p, animation as pt, attribute_effect as q, log_if_contains_state as r, bind_select_value as rt, prop as s, set_class as st, createAttachmentKey as t, set_value as tt, update_pre_prop as u, append_styles as ut, bind_window_size as v, snippet as vt, bind_resize_observer as w, index as wt, bind_property as x, slot as xt, bind_content_editable as y, wrap_snippet as yt, bind_files as z, assign_async as zt };
|
|
3842
|
+
|
|
3843
|
+
//# sourceMappingURL=attachments-qzRy9DX4.js.map
|