@mono-lit/helper 0.0.0-stage → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +55 -0
- package/README.md +35 -3
- package/dist/breakpoints-CAbhDUht.js +84 -0
- package/dist/checkbox-Cqpie9Ap.js +4 -0
- package/dist/chip-DBUUa2eB.js +4 -0
- package/dist/chip-limits-BMoO31JM.js +213 -0
- package/dist/chip-strip-Cw3gyz0q.js +213 -0
- package/dist/color-DHYrfXsX.js +253 -0
- package/dist/css-class-BRKRzHx-.js +60 -0
- package/dist/css-size-DhHSVZJK.js +37 -0
- package/dist/data/theme/presets.json.d.ts +140 -0
- package/dist/data-source-controller-B_rgHCjw.js +241 -0
- package/dist/data-source-controller-Dbb4fd8I.js +241 -0
- package/dist/data-source-options-CP-X62Pa.js +535 -0
- package/dist/data-source-options-Jqj7LU3Z.js +537 -0
- package/dist/data-source-read-B4DGp6UQ.js +216 -0
- package/dist/data-source-read-DL88aH8t.js +217 -0
- package/dist/decorate-DEXtNagw.js +141 -0
- package/dist/element-props-CLB6yvbm.js +114 -0
- package/dist/esm-Ptok4SQZ.js +2026 -0
- package/dist/excel-CY6zGkcx.js +608 -0
- package/dist/excel-DopRbEMK.js +608 -0
- package/dist/export-BiGVyxt6.js +2302 -0
- package/dist/export.d.ts +1 -0
- package/dist/export.js +2302 -0
- package/dist/field-icons-DELrSdqJ.js +86 -0
- package/dist/field-path-C92eGLg3.js +251 -0
- package/dist/filter-builder-Bke3qOgJ.js +205 -0
- package/dist/filter-builder-CE4zE0V5.js +205 -0
- package/dist/filter-eval-DIfU2EAn.js +173 -0
- package/dist/filter-odata-C1vSGZaY.js +591 -0
- package/dist/form-control-core-B8d7k6vk.js +223 -0
- package/dist/form-control-core-eeRr0zLU.js +223 -0
- package/dist/hydration-flush-RB5Tz5nl.js +1001 -0
- package/dist/icon-CJkTlmTb.js +55 -0
- package/dist/icon-dVhYJUIH.js +17 -0
- package/dist/import-BgJdkwBI.js +606 -0
- package/dist/import.d.ts +1 -0
- package/dist/import.js +606 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +16 -0
- package/dist/index.node-BIqEGehH.js +396 -0
- package/dist/index.node.d.ts +1 -0
- package/dist/index.node.js +16 -0
- package/dist/input-zGOULADt.js +4 -0
- package/dist/layout-var-CZnzMC0s.js +73 -0
- package/dist/light-slots-BVJwyg_2.js +244 -0
- package/dist/light-slots-DW1WgfgT.js +254 -0
- package/dist/markdown-DfqrfOJN.js +20146 -0
- package/dist/mono-button-simcTQdW.js +873 -0
- package/dist/mono-button.shadow-B_rKOY9N.js +784 -0
- package/dist/mono-data-chart-CEv29_NS.js +779 -0
- package/dist/mono-data-dropdown-Wnoke6zO.js +357 -0
- package/dist/mono-data-grid-CjkEqxgE.js +3913 -0
- package/dist/mono-data-grid-YjR3n9Ar.js +3915 -0
- package/dist/mono-element-B0kP_96P.js +232 -0
- package/dist/mono-event-Bi1qP9uN.js +129 -0
- package/dist/mono-form-controller-5PfsU4qa.js +409 -0
- package/dist/mono-modal-controller-BMO3n3rP.js +223 -0
- package/dist/mono-ui-CPV7rrdo.js +358 -0
- package/dist/normalize-error-Gcgmgh5i.js +871 -0
- package/dist/notifier-CE4yxMUQ.js +88 -0
- package/dist/nuxt.d.ts +1 -0
- package/dist/nuxt.js +130 -0
- package/dist/popup-portal-BziRX1yG.js +465 -0
- package/dist/popup-stack-CEEMib__.js +189 -0
- package/dist/rate-limit-BBa2PO79.js +521 -0
- package/dist/reactive-D3EERqgO.js +47 -0
- package/dist/reactive-Di3mTMnV.js +1087 -0
- package/dist/search.d.ts +1 -0
- package/dist/search.js +97 -0
- package/dist/src/components/accordion/accordion-core.d.ts +62 -0
- package/dist/src/components/accordion/accordion-types.d.ts +62 -0
- package/dist/src/components/accordion/index.d.ts +3 -0
- package/dist/src/components/accordion/index.shadow.d.ts +5 -0
- package/dist/src/components/accordion/mono-accordion.d.ts +55 -0
- package/dist/src/components/accordion/mono-accordion.shadow.d.ts +56 -0
- package/dist/src/components/alert/alert-core.d.ts +46 -0
- package/dist/src/components/alert/alert-types.d.ts +44 -0
- package/dist/src/components/alert/index.d.ts +3 -0
- package/dist/src/components/alert/index.shadow.d.ts +5 -0
- package/dist/src/components/alert/mono-alert.d.ts +44 -0
- package/dist/src/components/alert/mono-alert.shadow.d.ts +34 -0
- package/dist/src/components/breadcrumb/breadcrumb-core.d.ts +61 -0
- package/dist/src/components/breadcrumb/breadcrumb-list-core.d.ts +49 -0
- package/dist/src/components/breadcrumb/breadcrumb-render.d.ts +31 -0
- package/dist/src/components/breadcrumb/breadcrumb-types.d.ts +117 -0
- package/dist/src/components/breadcrumb/breadcrumb-utils.d.ts +43 -0
- package/dist/src/components/breadcrumb/index.d.ts +6 -0
- package/dist/src/components/breadcrumb/index.shadow.d.ts +8 -0
- package/dist/src/components/breadcrumb/mono-breadcrumb-list.d.ts +29 -0
- package/dist/src/components/breadcrumb/mono-breadcrumb-list.shadow.d.ts +48 -0
- package/dist/src/components/breadcrumb/mono-breadcrumb.d.ts +38 -0
- package/dist/src/components/breadcrumb/mono-breadcrumb.shadow.d.ts +73 -0
- package/dist/src/components/button/button-core.d.ts +90 -0
- package/dist/src/components/button/button-dropdown-core.d.ts +57 -0
- package/dist/src/components/button/button-dropdown-types.d.ts +129 -0
- package/dist/src/components/button/button-types.d.ts +219 -0
- package/dist/src/components/button/button-utils.d.ts +18 -0
- package/dist/src/components/button/index.button-dropdown.d.ts +4 -0
- package/dist/src/components/button/index.button-dropdown.shadow.d.ts +4 -0
- package/dist/src/components/button/index.d.ts +8 -0
- package/dist/src/components/button/index.shadow.d.ts +5 -0
- package/dist/src/components/button/mono-button-dropdown.d.ts +35 -0
- package/dist/src/components/button/mono-button-dropdown.shadow.d.ts +45 -0
- package/dist/src/components/button/mono-button.d.ts +123 -0
- package/dist/src/components/button/mono-button.shadow.d.ts +56 -0
- package/dist/src/components/card/card-core.d.ts +75 -0
- package/dist/src/components/card/card-types.d.ts +137 -0
- package/dist/src/components/card/card-utils.d.ts +23 -0
- package/dist/src/components/card/index.d.ts +4 -0
- package/dist/src/components/card/index.shadow.d.ts +6 -0
- package/dist/src/components/card/mono-card.d.ts +56 -0
- package/dist/src/components/card/mono-card.shadow.d.ts +52 -0
- package/dist/src/components/chart/chart-core.d.ts +43 -0
- package/dist/src/components/chart/chart-odata.d.ts +52 -0
- package/dist/src/components/chart/chart-types.d.ts +356 -0
- package/dist/src/components/chart/index.d.ts +8 -0
- package/dist/src/components/chart/index.shadow.d.ts +7 -0
- package/dist/src/components/chart/mono-chart-presets.d.ts +43 -0
- package/dist/src/components/chart/mono-chart-presets.shadow.d.ts +43 -0
- package/dist/src/components/chart/mono-chart.d.ts +30 -0
- package/dist/src/components/chart/mono-chart.shadow.d.ts +22 -0
- package/dist/src/components/chart/mono-data-chart.d.ts +27 -0
- package/dist/src/components/checkbox/checkbox-core.d.ts +53 -0
- package/dist/src/components/checkbox/checkbox-types.d.ts +69 -0
- package/dist/src/components/checkbox/checkbox-utils.d.ts +35 -0
- package/dist/src/components/checkbox/index.d.ts +4 -0
- package/dist/src/components/checkbox/index.shadow.d.ts +5 -0
- package/dist/src/components/checkbox/mono-checkbox.d.ts +34 -0
- package/dist/src/components/checkbox/mono-checkbox.shadow.d.ts +45 -0
- package/dist/src/components/chip/chip-core.d.ts +58 -0
- package/dist/src/components/chip/chip-types.d.ts +142 -0
- package/dist/src/components/chip/chip-utils.d.ts +24 -0
- package/dist/src/components/chip/index.d.ts +8 -0
- package/dist/src/components/chip/index.shadow.d.ts +6 -0
- package/dist/src/components/chip/mono-chip.d.ts +48 -0
- package/dist/src/components/chip/mono-chip.shadow.d.ts +33 -0
- package/dist/src/components/chip/mono-status-dot.d.ts +34 -0
- package/dist/src/components/date/date-core.d.ts +80 -0
- package/dist/src/components/date/date-types.d.ts +163 -0
- package/dist/src/components/date/index.d.ts +3 -0
- package/dist/src/components/date/index.shadow.d.ts +4 -0
- package/dist/src/components/date/mono-date.d.ts +22 -0
- package/dist/src/components/date/mono-date.shadow.d.ts +31 -0
- package/dist/src/components/drawer/drawer-core.d.ts +99 -0
- package/dist/src/components/drawer/drawer-types.d.ts +153 -0
- package/dist/src/components/drawer/index.d.ts +3 -0
- package/dist/src/components/drawer/index.shadow.d.ts +4 -0
- package/dist/src/components/drawer/mono-drawer.d.ts +45 -0
- package/dist/src/components/drawer/mono-drawer.shadow.d.ts +46 -0
- package/dist/src/components/dropdown/dropdown-core.d.ts +33 -0
- package/dist/src/components/dropdown/dropdown-types.d.ts +88 -0
- package/dist/src/components/dropdown/index.d.ts +3 -0
- package/dist/src/components/dropdown/index.shadow.d.ts +4 -0
- package/dist/src/components/dropdown/mono-dropdown.d.ts +34 -0
- package/dist/src/components/dropdown/mono-dropdown.shadow.d.ts +28 -0
- package/dist/src/components/dropdown-table/dropdown-table-core.d.ts +65 -0
- package/dist/src/components/dropdown-table/dropdown-table-types.d.ts +278 -0
- package/dist/src/components/dropdown-table/index.d.ts +5 -0
- package/dist/src/components/dropdown-table/index.shadow.d.ts +6 -0
- package/dist/src/components/dropdown-table/mono-data-dropdown.d.ts +152 -0
- package/dist/src/components/dropdown-table/mono-dropdown-table.d.ts +46 -0
- package/dist/src/components/dropdown-table/mono-dropdown-table.shadow.d.ts +22 -0
- package/dist/src/components/file-upload/file-upload-core.d.ts +60 -0
- package/dist/src/components/file-upload/file-upload-types.d.ts +145 -0
- package/dist/src/components/file-upload/file-upload-utils.d.ts +16 -0
- package/dist/src/components/file-upload/index.d.ts +4 -0
- package/dist/src/components/file-upload/index.shadow.d.ts +5 -0
- package/dist/src/components/file-upload/mono-file-upload.d.ts +33 -0
- package/dist/src/components/file-upload/mono-file-upload.shadow.d.ts +50 -0
- package/dist/src/components/filter/filter-builder-core.d.ts +36 -0
- package/dist/src/components/filter/filter-builder.d.ts +23 -0
- package/dist/src/components/filter/filter-odata.d.ts +27 -0
- package/dist/src/components/filter/filter-operators.d.ts +13 -0
- package/dist/src/components/filter/filter-types.d.ts +253 -0
- package/dist/src/components/filter/index.d.ts +6 -0
- package/dist/src/components/filter/index.shadow.d.ts +7 -0
- package/dist/src/components/filter/mono-filter-builder.d.ts +21 -0
- package/dist/src/components/filter/mono-filter-builder.shadow.d.ts +17 -0
- package/dist/src/components/form/form-control-core.d.ts +37 -0
- package/dist/src/components/form/form-rules.d.ts +25 -0
- package/dist/src/components/form/form-types.d.ts +307 -0
- package/dist/src/components/form/index.d.ts +6 -0
- package/dist/src/components/form/mono-form-controller.d.ts +16 -0
- package/dist/src/components/input/index.d.ts +6 -0
- package/dist/src/components/input/index.shadow.d.ts +8 -0
- package/dist/src/components/input/input-core.d.ts +91 -0
- package/dist/src/components/input/input-format.d.ts +118 -0
- package/dist/src/components/input/input-types.d.ts +179 -0
- package/dist/src/components/input/input-utils.d.ts +10 -0
- package/dist/src/components/input/mono-input.d.ts +46 -0
- package/dist/src/components/input/mono-input.shadow.d.ts +34 -0
- package/dist/src/components/menu/index.d.ts +6 -0
- package/dist/src/components/menu/index.shadow.d.ts +7 -0
- package/dist/src/components/menu/menu-core.d.ts +65 -0
- package/dist/src/components/menu/menu-render.d.ts +55 -0
- package/dist/src/components/menu/menu-types.d.ts +195 -0
- package/dist/src/components/menu/menu-utils.d.ts +53 -0
- package/dist/src/components/menu/mono-menu-list.d.ts +118 -0
- package/dist/src/components/menu/mono-menu.d.ts +39 -0
- package/dist/src/components/menu/mono-menu.shadow.d.ts +40 -0
- package/dist/src/components/modal/index.d.ts +4 -0
- package/dist/src/components/modal/index.shadow.d.ts +5 -0
- package/dist/src/components/modal/modal-core.d.ts +110 -0
- package/dist/src/components/modal/modal-types.d.ts +304 -0
- package/dist/src/components/modal/mono-modal-controller.d.ts +4 -0
- package/dist/src/components/modal/mono-modal.d.ts +45 -0
- package/dist/src/components/modal/mono-modal.shadow.d.ts +50 -0
- package/dist/src/components/nav/index.d.ts +4 -0
- package/dist/src/components/nav/index.shadow.d.ts +6 -0
- package/dist/src/components/nav/mono-nav.d.ts +41 -0
- package/dist/src/components/nav/mono-nav.shadow.d.ts +21 -0
- package/dist/src/components/nav/nav-core.d.ts +34 -0
- package/dist/src/components/nav/nav-types.d.ts +48 -0
- package/dist/src/components/nav/nav-utils.d.ts +12 -0
- package/dist/src/components/radio/index.d.ts +4 -0
- package/dist/src/components/radio/index.shadow.d.ts +5 -0
- package/dist/src/components/radio/mono-radio.d.ts +31 -0
- package/dist/src/components/radio/mono-radio.shadow.d.ts +35 -0
- package/dist/src/components/radio/radio-core.d.ts +45 -0
- package/dist/src/components/radio/radio-types.d.ts +58 -0
- package/dist/src/components/radio/radio-utils.d.ts +12 -0
- package/dist/src/components/rich-text-editor/index.d.ts +5 -0
- package/dist/src/components/rich-text-editor/index.shadow.d.ts +6 -0
- package/dist/src/components/rich-text-editor/mono-rich-text-editor.d.ts +31 -0
- package/dist/src/components/rich-text-editor/mono-rich-text-editor.shadow.d.ts +34 -0
- package/dist/src/components/rich-text-editor/rich-text-editor-core.d.ts +100 -0
- package/dist/src/components/rich-text-editor/rich-text-editor-loader.d.ts +17 -0
- package/dist/src/components/rich-text-editor/rich-text-editor-toolbar.d.ts +65 -0
- package/dist/src/components/rich-text-editor/rich-text-editor-types.d.ts +231 -0
- package/dist/src/components/select/index.d.ts +4 -0
- package/dist/src/components/select/index.shadow.d.ts +5 -0
- package/dist/src/components/select/mono-select.d.ts +69 -0
- package/dist/src/components/select/mono-select.shadow.d.ts +48 -0
- package/dist/src/components/select/select-core.d.ts +98 -0
- package/dist/src/components/select/select-types.d.ts +284 -0
- package/dist/src/components/select/select-utils.d.ts +7 -0
- package/dist/src/components/sidebar/index.d.ts +4 -0
- package/dist/src/components/sidebar/index.shadow.d.ts +6 -0
- package/dist/src/components/sidebar/mono-sidebar.d.ts +34 -0
- package/dist/src/components/sidebar/mono-sidebar.shadow.d.ts +27 -0
- package/dist/src/components/sidebar/sidebar-core.d.ts +51 -0
- package/dist/src/components/sidebar/sidebar-types.d.ts +119 -0
- package/dist/src/components/sidebar/sidebar-utils.d.ts +55 -0
- package/dist/src/components/switch/index.d.ts +4 -0
- package/dist/src/components/switch/index.shadow.d.ts +5 -0
- package/dist/src/components/switch/mono-switch.d.ts +31 -0
- package/dist/src/components/switch/mono-switch.shadow.d.ts +36 -0
- package/dist/src/components/switch/switch-core.d.ts +49 -0
- package/dist/src/components/switch/switch-types.d.ts +64 -0
- package/dist/src/components/switch/switch-utils.d.ts +12 -0
- package/dist/src/components/table/array-source.d.ts +44 -0
- package/dist/src/components/table/date-filter-tree.d.ts +93 -0
- package/dist/src/components/table/grouping.d.ts +55 -0
- package/dist/src/components/table/index.d.ts +33 -0
- package/dist/src/components/table/index.shadow.d.ts +47 -0
- package/dist/src/components/table/mono-data-grid.d.ts +1756 -0
- package/dist/src/components/table/mono-table-checkbox-core.d.ts +76 -0
- package/dist/src/components/table/mono-table-checkbox.d.ts +34 -0
- package/dist/src/components/table/mono-table-checkbox.shadow.d.ts +26 -0
- package/dist/src/components/table/mono-table-detail-core.d.ts +87 -0
- package/dist/src/components/table/mono-table-detail.d.ts +32 -0
- package/dist/src/components/table/mono-table-detail.shadow.d.ts +31 -0
- package/dist/src/components/table/mono-table-empty-core.d.ts +60 -0
- package/dist/src/components/table/mono-table-empty.d.ts +35 -0
- package/dist/src/components/table/mono-table-empty.shadow.d.ts +40 -0
- package/dist/src/components/table/mono-table-error-core.d.ts +84 -0
- package/dist/src/components/table/mono-table-error.d.ts +28 -0
- package/dist/src/components/table/mono-table-error.shadow.d.ts +21 -0
- package/dist/src/components/table/mono-table-info-core.d.ts +13 -0
- package/dist/src/components/table/mono-table-info.d.ts +19 -0
- package/dist/src/components/table/mono-table-info.shadow.d.ts +14 -0
- package/dist/src/components/table/mono-table-loading-core.d.ts +41 -0
- package/dist/src/components/table/mono-table-loading.d.ts +50 -0
- package/dist/src/components/table/mono-table-loading.shadow.d.ts +14 -0
- package/dist/src/components/table/mono-table-page-size-core.d.ts +14 -0
- package/dist/src/components/table/mono-table-page-size.d.ts +16 -0
- package/dist/src/components/table/mono-table-page-size.shadow.d.ts +11 -0
- package/dist/src/components/table/mono-table-paging-core.d.ts +22 -0
- package/dist/src/components/table/mono-table-paging-group-core.d.ts +18 -0
- package/dist/src/components/table/mono-table-paging-group.d.ts +20 -0
- package/dist/src/components/table/mono-table-paging-group.shadow.d.ts +13 -0
- package/dist/src/components/table/mono-table-paging.d.ts +16 -0
- package/dist/src/components/table/mono-table-paging.shadow.d.ts +11 -0
- package/dist/src/components/table/mono-table-search-core.d.ts +74 -0
- package/dist/src/components/table/mono-table-search.d.ts +34 -0
- package/dist/src/components/table/mono-table-search.shadow.d.ts +21 -0
- package/dist/src/components/table/mono-table-sort-core.d.ts +35 -0
- package/dist/src/components/table/mono-table-sort.d.ts +38 -0
- package/dist/src/components/table/mono-table-sort.shadow.d.ts +20 -0
- package/dist/src/components/table/mono-table-summary-core.d.ts +26 -0
- package/dist/src/components/table/mono-table-summary.d.ts +24 -0
- package/dist/src/components/table/mono-table-summary.shadow.d.ts +14 -0
- package/dist/src/components/table/mono-table-th-core.d.ts +56 -0
- package/dist/src/components/table/mono-table-th.d.ts +41 -0
- package/dist/src/components/table/mono-table-th.shadow.d.ts +19 -0
- package/dist/src/components/table/store-group-source.d.ts +24 -0
- package/dist/src/components/table/table-controller-core.d.ts +40 -0
- package/dist/src/components/table/table-filter-icons.d.ts +3 -0
- package/dist/src/components/table/table-menu-core.d.ts +65 -0
- package/dist/src/components/table/table-overlay.d.ts +165 -0
- package/dist/src/components/table/table-sort-icons.d.ts +4 -0
- package/dist/src/components/table/table-sort-utils.d.ts +20 -0
- package/dist/src/components/table/table-types.d.ts +475 -0
- package/dist/src/components/tabs/index.d.ts +3 -0
- package/dist/src/components/tabs/index.shadow.d.ts +4 -0
- package/dist/src/components/tabs/mono-tabs.d.ts +33 -0
- package/dist/src/components/tabs/mono-tabs.shadow.d.ts +37 -0
- package/dist/src/components/tabs/tabs-core.d.ts +57 -0
- package/dist/src/components/tabs/tabs-types.d.ts +65 -0
- package/dist/src/components/tag-input/index.d.ts +4 -0
- package/dist/src/components/tag-input/index.shadow.d.ts +5 -0
- package/dist/src/components/tag-input/mono-tag-input.d.ts +66 -0
- package/dist/src/components/tag-input/mono-tag-input.shadow.d.ts +40 -0
- package/dist/src/components/tag-input/tag-input-core.d.ts +108 -0
- package/dist/src/components/tag-input/tag-input-types.d.ts +420 -0
- package/dist/src/components/tag-input/tag-input-utils.d.ts +8 -0
- package/dist/src/components/textarea/index.d.ts +4 -0
- package/dist/src/components/textarea/index.shadow.d.ts +5 -0
- package/dist/src/components/textarea/mono-textarea.d.ts +29 -0
- package/dist/src/components/textarea/mono-textarea.shadow.d.ts +31 -0
- package/dist/src/components/textarea/textarea-core.d.ts +60 -0
- package/dist/src/components/textarea/textarea-types.d.ts +131 -0
- package/dist/src/components/textarea/textarea-utils.d.ts +7 -0
- package/dist/src/components/tooltip/control-tooltip.d.ts +36 -0
- package/dist/src/components/tooltip/index.d.ts +6 -0
- package/dist/src/components/tooltip/tooltip-config.d.ts +27 -0
- package/dist/src/components/tooltip/tooltip-declarative.d.ts +41 -0
- package/dist/src/components/tooltip/tooltip-loader.d.ts +1 -0
- package/dist/src/components/tooltip/tooltip-types.d.ts +110 -0
- package/dist/src/composables/breakpoints.d.ts +59 -0
- package/dist/src/composables/chip-limits.d.ts +48 -0
- package/dist/src/composables/chip-strip.d.ts +93 -0
- package/dist/src/composables/color.d.ts +103 -0
- package/dist/src/composables/css-class.d.ts +27 -0
- package/dist/src/composables/css-size.d.ts +40 -0
- package/dist/src/composables/data-source-controller.d.ts +113 -0
- package/dist/src/composables/element-props.d.ts +46 -0
- package/dist/src/composables/field-icons.d.ts +15 -0
- package/dist/src/composables/hybird-prop.d.ts +79 -0
- package/dist/src/composables/hydration-flush.d.ts +34 -0
- package/dist/src/composables/icon.d.ts +17 -0
- package/dist/src/composables/layout-var.d.ts +34 -0
- package/dist/src/composables/light-slots.d.ts +133 -0
- package/dist/src/composables/mdi-glyphs.d.ts +4 -0
- package/dist/src/composables/mono-element.d.ts +9 -0
- package/dist/src/composables/mono-event.d.ts +55 -0
- package/dist/src/composables/mono-pending.d.ts +8 -0
- package/dist/src/composables/mono-skeleton.d.ts +193 -0
- package/dist/src/composables/mono-ui.d.ts +58 -0
- package/dist/src/composables/notifier.d.ts +46 -0
- package/dist/src/composables/popup-portal.d.ts +226 -0
- package/dist/src/composables/popup-stack.d.ts +70 -0
- package/dist/src/composables/rate-limit.d.ts +108 -0
- package/dist/src/composables/reactive.d.ts +53 -0
- package/dist/src/composables/shadow-css.d.ts +42 -0
- package/dist/src/composables/visibility.d.ts +36 -0
- package/dist/src/data/theme/index.d.ts +30 -0
- package/dist/src/data/theme/presets.d.ts +94 -0
- package/dist/src/entries/index.d.ts +2 -0
- package/dist/src/entries/index.node.d.ts +42 -0
- package/dist/src/entries/search.d.ts +3 -0
- package/dist/src/export/detail.d.ts +29 -0
- package/dist/src/export/download.d.ts +9 -0
- package/dist/src/export/excel/index.d.ts +27 -0
- package/dist/src/export/excel/nodes.d.ts +123 -0
- package/dist/src/export/expression.d.ts +36 -0
- package/dist/src/export/helpers.d.ts +6 -0
- package/dist/src/export/index.d.ts +13 -0
- package/dist/src/export/markdown.d.ts +52 -0
- package/dist/src/export/resolve-data.d.ts +31 -0
- package/dist/src/export/sentinel.d.ts +97 -0
- package/dist/src/export/sheet-name.d.ts +45 -0
- package/dist/src/export/styles.d.ts +33 -0
- package/dist/src/export/template.d.ts +10 -0
- package/dist/src/export/types.d.ts +259 -0
- package/dist/src/import/coerce.d.ts +38 -0
- package/dist/src/import/index.d.ts +16 -0
- package/dist/src/import/match.d.ts +54 -0
- package/dist/src/import/parse.d.ts +15 -0
- package/dist/src/import/types.d.ts +153 -0
- package/dist/src/nuxt/index.d.ts +94 -0
- package/dist/src/search/data-search.d.ts +207 -0
- package/dist/src/search/field-path.d.ts +107 -0
- package/dist/src/search/filter-eval.d.ts +30 -0
- package/dist/src/search/index.d.ts +22 -0
- package/dist/src/search/odata-search.d.ts +18 -0
- package/dist/src/search/search-expr.d.ts +160 -0
- package/dist/src/utils/data-source-apply.d.ts +97 -0
- package/dist/src/utils/data-source-options.d.ts +116 -0
- package/dist/src/utils/data-source-read.d.ts +85 -0
- package/dist/src/utils/data-source-summary.d.ts +55 -0
- package/dist/src/utils/normalize-error.d.ts +90 -0
- package/dist/src/vite/index.d.ts +48 -0
- package/dist/src/vite/mono-client-only.d.ts +35 -0
- package/dist/src/vite/mono-ssr-stub.d.ts +20 -0
- package/dist/src/vite/shadow-manifest.d.ts +8 -0
- package/dist/styles-BIJ31TM4.js +20146 -0
- package/dist/tooltip-DQqNpqk2.js +795 -0
- package/dist/tooltip.d.ts +1 -0
- package/dist/tooltip.js +2 -0
- package/dist/ui/accordion.d.ts +1 -0
- package/dist/ui/accordion.js +466 -0
- package/dist/ui/alert.d.ts +1 -0
- package/dist/ui/alert.js +221 -0
- package/dist/ui/breadcrumb.d.ts +1 -0
- package/dist/ui/breadcrumb.js +902 -0
- package/dist/ui/button-dropdown.d.ts +1 -0
- package/dist/ui/button-dropdown.js +679 -0
- package/dist/ui/button.d.ts +1 -0
- package/dist/ui/button.js +63 -0
- package/dist/ui/card.d.ts +1 -0
- package/dist/ui/card.js +524 -0
- package/dist/ui/chart.d.ts +1 -0
- package/dist/ui/chart.js +885 -0
- package/dist/ui/checkbox.d.ts +1 -0
- package/dist/ui/checkbox.js +413 -0
- package/dist/ui/chip.d.ts +1 -0
- package/dist/ui/chip.js +558 -0
- package/dist/ui/date.d.ts +1 -0
- package/dist/ui/date.js +686 -0
- package/dist/ui/drawer.d.ts +1 -0
- package/dist/ui/drawer.js +901 -0
- package/dist/ui/dropdown-table.d.ts +1 -0
- package/dist/ui/dropdown-table.js +1291 -0
- package/dist/ui/dropdown.d.ts +1 -0
- package/dist/ui/dropdown.js +586 -0
- package/dist/ui/file-upload.d.ts +1 -0
- package/dist/ui/file-upload.js +688 -0
- package/dist/ui/filter.d.ts +1 -0
- package/dist/ui/filter.js +400 -0
- package/dist/ui/font/files/geist-47c091c9.woff2 +0 -0
- package/dist/ui/font/files/geist-8dd77544.woff2 +0 -0
- package/dist/ui/font/files/geist-b9248b1e.woff2 +0 -0
- package/dist/ui/font/files/geist-d40d74b4.woff2 +0 -0
- package/dist/ui/font/files/geist-f493429a.woff2 +0 -0
- package/dist/ui/font/files/geistmono-03737868.woff2 +0 -0
- package/dist/ui/font/files/geistmono-421a7e38.woff2 +0 -0
- package/dist/ui/font/files/geistmono-48ef518d.woff2 +0 -0
- package/dist/ui/font/files/geistmono-5df35d39.woff2 +0 -0
- package/dist/ui/font/files/geistmono-7de289a4.woff2 +0 -0
- package/dist/ui/font/files/geistmono-e976128f.woff2 +0 -0
- package/dist/ui/font/files/inter-05cf802c.woff2 +0 -0
- package/dist/ui/font/files/inter-2b2f25a4.woff2 +0 -0
- package/dist/ui/font/files/inter-467acc7a.woff2 +0 -0
- package/dist/ui/font/files/inter-6e85163c.woff2 +0 -0
- package/dist/ui/font/files/inter-7048add3.woff2 +0 -0
- package/dist/ui/font/files/inter-9be0371e.woff2 +0 -0
- package/dist/ui/font/files/inter-a28b7e31.woff2 +0 -0
- package/dist/ui/font/files/poppins-054df55a.woff2 +0 -0
- package/dist/ui/font/files/poppins-0ee5dc9a.woff2 +0 -0
- package/dist/ui/font/files/poppins-0f44cb18.woff2 +0 -0
- package/dist/ui/font/files/poppins-0ff0d30c.woff2 +0 -0
- package/dist/ui/font/files/poppins-13045147.woff2 +0 -0
- package/dist/ui/font/files/poppins-1db57cd9.woff2 +0 -0
- package/dist/ui/font/files/poppins-2cf2a902.woff2 +0 -0
- package/dist/ui/font/files/poppins-39e7f079.woff2 +0 -0
- package/dist/ui/font/files/poppins-9607042d.woff2 +0 -0
- package/dist/ui/font/files/poppins-9a88fc1f.woff2 +0 -0
- package/dist/ui/font/files/poppins-b8f4f752.woff2 +0 -0
- package/dist/ui/font/files/poppins-f5e57db4.woff2 +0 -0
- package/dist/ui/font/geist-mono.css +104 -0
- package/dist/ui/font/geist.css +168 -0
- package/dist/ui/font/inter.css +232 -0
- package/dist/ui/font/poppins.css +104 -0
- package/dist/ui/form.d.ts +1 -0
- package/dist/ui/form.js +3 -0
- package/dist/ui/index.css +21989 -0
- package/dist/ui/input.d.ts +1 -0
- package/dist/ui/input.js +1176 -0
- package/dist/ui/menu.d.ts +1 -0
- package/dist/ui/menu.js +1289 -0
- package/dist/ui/modal.d.ts +1 -0
- package/dist/ui/modal.js +996 -0
- package/dist/ui/nav.d.ts +1 -0
- package/dist/ui/nav.js +295 -0
- package/dist/ui/radio.d.ts +1 -0
- package/dist/ui/radio.js +379 -0
- package/dist/ui/rich-text-editor.d.ts +1 -0
- package/dist/ui/rich-text-editor.js +1338 -0
- package/dist/ui/select.d.ts +1 -0
- package/dist/ui/select.js +2200 -0
- package/dist/ui/shadow/accordion.js +442 -0
- package/dist/ui/shadow/alert.js +218 -0
- package/dist/ui/shadow/breadcrumb.js +919 -0
- package/dist/ui/shadow/button-dropdown.js +696 -0
- package/dist/ui/shadow/button.js +63 -0
- package/dist/ui/shadow/card.js +538 -0
- package/dist/ui/shadow/chart.js +1685 -0
- package/dist/ui/shadow/checkbox.js +457 -0
- package/dist/ui/shadow/chip.js +559 -0
- package/dist/ui/shadow/date.js +712 -0
- package/dist/ui/shadow/drawer.js +869 -0
- package/dist/ui/shadow/dropdown-table.js +1620 -0
- package/dist/ui/shadow/dropdown.js +547 -0
- package/dist/ui/shadow/file-upload.js +731 -0
- package/dist/ui/shadow/filter.js +402 -0
- package/dist/ui/shadow/input.js +1150 -0
- package/dist/ui/shadow/menu.js +899 -0
- package/dist/ui/shadow/modal.js +1194 -0
- package/dist/ui/shadow/nav.js +240 -0
- package/dist/ui/shadow/radio.js +408 -0
- package/dist/ui/shadow/rich-text-editor.js +1344 -0
- package/dist/ui/shadow/select.js +2167 -0
- package/dist/ui/shadow/sidebar.js +606 -0
- package/dist/ui/shadow/switch.js +428 -0
- package/dist/ui/shadow/table.js +4755 -0
- package/dist/ui/shadow/tabs.js +372 -0
- package/dist/ui/shadow/tag-input.js +2974 -0
- package/dist/ui/shadow/textarea.js +816 -0
- package/dist/ui/sidebar.d.ts +1 -0
- package/dist/ui/sidebar.js +659 -0
- package/dist/ui/switch.d.ts +1 -0
- package/dist/ui/switch.js +398 -0
- package/dist/ui/table.d.ts +1 -0
- package/dist/ui/table.js +4654 -0
- package/dist/ui/tabs.d.ts +1 -0
- package/dist/ui/tabs.js +379 -0
- package/dist/ui/tag-input.d.ts +1 -0
- package/dist/ui/tag-input.js +2947 -0
- package/dist/ui/textarea.d.ts +1 -0
- package/dist/ui/textarea.js +819 -0
- package/dist/ui/theme/legacy.css +293 -0
- package/dist/ui/theme/luma.css +743 -0
- package/dist/ui/theme/lyra.css +754 -0
- package/dist/ui/theme/maia.css +673 -0
- package/dist/ui/theme/mira.css +802 -0
- package/dist/ui/theme/nova.css +662 -0
- package/dist/ui/theme/one.css +699 -0
- package/dist/ui/theme/rhea.css +742 -0
- package/dist/ui/theme/sera.css +845 -0
- package/dist/ui/theme/tokens.css +261 -0
- package/dist/ui/theme/vega.css +467 -0
- package/dist/vite-C5iUK7so.js +329 -0
- package/dist/vite.d.ts +1 -0
- package/dist/vite.js +2 -0
- package/dist/vue.d.ts +282 -0
- package/package.json +411 -3
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
//#region src/composables/popup-stack.ts
|
|
2
|
+
/** First layer's z-index. Each subsequent open layer sits one STEP higher. */
|
|
3
|
+
var POPUP_Z_BASE = 1e3;
|
|
4
|
+
/** Open layers in open order; the last entry is the topmost. */
|
|
5
|
+
var stack = [];
|
|
6
|
+
/**
|
|
7
|
+
* Inline styles captured once when the stack first locks scroll, restored when the
|
|
8
|
+
* last locking owner leaves. `null` doubles as the "not currently locked" sentinel.
|
|
9
|
+
*/
|
|
10
|
+
var savedRootOverflow = null;
|
|
11
|
+
var savedRootPriority = "";
|
|
12
|
+
var savedBodyOverflow = null;
|
|
13
|
+
var savedBodyPriority = "";
|
|
14
|
+
var savedBodyPadRight = null;
|
|
15
|
+
/**
|
|
16
|
+
* Lock holders that are NOT stack layers — `mono-sidebar`, which owns its own
|
|
17
|
+
* z-index and Escape handling and so has no business in the stack, but must share
|
|
18
|
+
* the lock. Without one shared owner set the two save/restore pairs interleave and
|
|
19
|
+
* a sidebar closing under an open modal restores an overflow the modal still needs
|
|
20
|
+
* — leaving the page locked for good once the modal closes.
|
|
21
|
+
*/
|
|
22
|
+
var externalLockOwners = /* @__PURE__ */ new Set();
|
|
23
|
+
/** Whether the shared Escape listener is currently attached. */
|
|
24
|
+
var escBound = false;
|
|
25
|
+
/**
|
|
26
|
+
* Reassign every open layer's z-index.
|
|
27
|
+
*
|
|
28
|
+
* A running cursor rather than `BASE + i * STEP`, so a PINNED layer (see
|
|
29
|
+
* `PopupLayer.pinnedZ`) lifts the levels of everything opened above it. With no
|
|
30
|
+
* pinned layer in the stack the cursor produces exactly the old sequence —
|
|
31
|
+
* 1000, 1010, 1020 … — so nothing that worked before moves.
|
|
32
|
+
*/
|
|
33
|
+
function applyStackOrder() {
|
|
34
|
+
let z = POPUP_Z_BASE;
|
|
35
|
+
stack.forEach((layer, i) => {
|
|
36
|
+
const pinned = Number(layer.pinnedZ);
|
|
37
|
+
if (Number.isFinite(pinned) && pinned > z) z = pinned;
|
|
38
|
+
const hasBackdropAbove = stack.slice(i + 1).some((above) => above.hasBackdrop);
|
|
39
|
+
layer.setStackZ(z, !hasBackdropAbove);
|
|
40
|
+
z += 10;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Hold / release the page scroll for every owner that wants it.
|
|
45
|
+
*
|
|
46
|
+
* ── Why the ROOT and not just the body ──
|
|
47
|
+
*
|
|
48
|
+
* The body's `overflow` only reaches the viewport while the ROOT element's computed
|
|
49
|
+
* overflow is `visible` (CSS Overflow §3.5, "viewport propagation"). Any reset that
|
|
50
|
+
* gives `html` an explicit overflow cancels that — Vuetify's ships
|
|
51
|
+
* `html { overflow-y: scroll }`, and ress / sanitize.css do the same — and from then on
|
|
52
|
+
* `body { overflow: hidden }` clips nothing: the body is `height: auto`, already tall
|
|
53
|
+
* enough for its own content, so it never becomes a scrollport. The page kept scrolling
|
|
54
|
+
* behind every modal, and no static style check caught it, because the body attribute
|
|
55
|
+
* this used to set was there all along.
|
|
56
|
+
*
|
|
57
|
+
* The body is still locked as well. It costs nothing, it is what the e2e check asserts,
|
|
58
|
+
* and in a quirks-mode document the body IS the scroller.
|
|
59
|
+
*
|
|
60
|
+
* ── Why the declaration is `!important` ──
|
|
61
|
+
*
|
|
62
|
+
* Because a plain inline style LOSES to a consumer stylesheet that claims the root's overflow
|
|
63
|
+
* with `!important`, and doing so is common — Vuetify writes its own scroll block that way
|
|
64
|
+
* (`.v-overlay-scroll-blocked:not(html) { overflow-y: hidden !important }`), and an app that
|
|
65
|
+
* drives `<html class>` from its layout (`.overflow-auto { overflow: auto !important }`) pins
|
|
66
|
+
* it permanently. The symptom is silent and deeply confusing: `documentElement.style.overflow`
|
|
67
|
+
* reads `"hidden"`, every style assertion passes, and the page scrolls anyway, because the
|
|
68
|
+
* COMPUTED value is still `auto`. An important declaration in the style attribute outranks an
|
|
69
|
+
* important one from a selector, so this is the one write that cannot be out-cascaded.
|
|
70
|
+
*
|
|
71
|
+
* ── Why the gutter is measured, and paid for with padding ──
|
|
72
|
+
*
|
|
73
|
+
* With `overflow-y: scroll` the scrollbar is rendered even on a short page, so locking
|
|
74
|
+
* takes it away and everything shifts sideways by its width. The width is measured before
|
|
75
|
+
* the lock and handed back to the body as `padding-right`, so nothing moves.
|
|
76
|
+
*
|
|
77
|
+
* NOT `scrollbar-gutter: stable` on the root, which reserves the same space in one
|
|
78
|
+
* declaration and would hold `position: fixed` chrome still too: Chrome paints the empty
|
|
79
|
+
* scrollbar TRACK in a stable gutter, so the page still looks like it has a scrollbar —
|
|
80
|
+
* which is the thing being complained about. Padding leaves no track.
|
|
81
|
+
*
|
|
82
|
+
* Measured rather than assumed, because on a system with overlay scrollbars there is no
|
|
83
|
+
* gutter at all and compensating would itself be the shift.
|
|
84
|
+
*/
|
|
85
|
+
function syncScrollLock() {
|
|
86
|
+
if (typeof document === "undefined") return;
|
|
87
|
+
const body = document.body;
|
|
88
|
+
if (!body) return;
|
|
89
|
+
const root = document.documentElement;
|
|
90
|
+
const wantLock = externalLockOwners.size > 0 || stack.some((l) => l.lockBodyScroll);
|
|
91
|
+
if (wantLock && savedRootOverflow === null) {
|
|
92
|
+
const gutter = Math.max(0, window.innerWidth - root.clientWidth);
|
|
93
|
+
savedRootOverflow = root.style.getPropertyValue("overflow");
|
|
94
|
+
savedRootPriority = root.style.getPropertyPriority("overflow");
|
|
95
|
+
savedBodyOverflow = body.style.getPropertyValue("overflow");
|
|
96
|
+
savedBodyPriority = body.style.getPropertyPriority("overflow");
|
|
97
|
+
root.style.setProperty("overflow", "hidden", "important");
|
|
98
|
+
body.style.setProperty("overflow", "hidden", "important");
|
|
99
|
+
if (gutter > 0) {
|
|
100
|
+
savedBodyPadRight = body.style.paddingRight;
|
|
101
|
+
body.style.paddingRight = `${gutter}px`;
|
|
102
|
+
}
|
|
103
|
+
} else if (!wantLock && savedRootOverflow !== null) {
|
|
104
|
+
restoreOverflow(root, savedRootOverflow, savedRootPriority);
|
|
105
|
+
restoreOverflow(body, savedBodyOverflow, savedBodyPriority);
|
|
106
|
+
if (savedBodyPadRight !== null) body.style.paddingRight = savedBodyPadRight;
|
|
107
|
+
savedRootOverflow = null;
|
|
108
|
+
savedRootPriority = "";
|
|
109
|
+
savedBodyOverflow = null;
|
|
110
|
+
savedBodyPriority = "";
|
|
111
|
+
savedBodyPadRight = null;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/** Put an element's inline `overflow` back exactly as it was — value, priority, or absent. */
|
|
115
|
+
function restoreOverflow(el, value, priority) {
|
|
116
|
+
if (value) el.style.setProperty("overflow", value, priority);
|
|
117
|
+
else el.style.removeProperty("overflow");
|
|
118
|
+
}
|
|
119
|
+
function onStackKeydown(event) {
|
|
120
|
+
if (event.key !== "Escape") return;
|
|
121
|
+
stack[stack.length - 1]?.onStackEscape?.(event);
|
|
122
|
+
}
|
|
123
|
+
function ensureEscapeListener() {
|
|
124
|
+
if (typeof document === "undefined") return;
|
|
125
|
+
if (stack.length > 0 && !escBound) {
|
|
126
|
+
document.addEventListener("keydown", onStackKeydown);
|
|
127
|
+
escBound = true;
|
|
128
|
+
} else if (stack.length === 0 && escBound) {
|
|
129
|
+
document.removeEventListener("keydown", onStackKeydown);
|
|
130
|
+
escBound = false;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/** Add a layer to the top of the stack (call on open). */
|
|
134
|
+
function registerPopupLayer(layer) {
|
|
135
|
+
if (typeof document === "undefined") return;
|
|
136
|
+
if (stack.includes(layer)) return;
|
|
137
|
+
stack.push(layer);
|
|
138
|
+
applyStackOrder();
|
|
139
|
+
syncScrollLock();
|
|
140
|
+
ensureEscapeListener();
|
|
141
|
+
}
|
|
142
|
+
/** Remove a layer from the stack (call on close / disconnect). */
|
|
143
|
+
function unregisterPopupLayer(layer) {
|
|
144
|
+
const idx = stack.indexOf(layer);
|
|
145
|
+
if (idx === -1) return;
|
|
146
|
+
stack.splice(idx, 1);
|
|
147
|
+
applyStackOrder();
|
|
148
|
+
syncScrollLock();
|
|
149
|
+
ensureEscapeListener();
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Recompute every open layer's level without touching the membership.
|
|
153
|
+
*
|
|
154
|
+
* For a layer whose `pinnedZ` changed while it was open — a bound `:z-index` on a
|
|
155
|
+
* modal that is already showing. The dialog's own level is republished by its
|
|
156
|
+
* `updated()` either way; this is what moves the layers stacked ABOVE it.
|
|
157
|
+
*
|
|
158
|
+
* Re-runs the scroll lock as well, because `lockScroll` can flip on an overlay that is
|
|
159
|
+
* ALREADY open: membership has not changed, so neither register nor unregister fires,
|
|
160
|
+
* and without this the page stays locked until the overlay closes.
|
|
161
|
+
*/
|
|
162
|
+
function refreshPopupStack() {
|
|
163
|
+
if (typeof document === "undefined") return;
|
|
164
|
+
applyStackOrder();
|
|
165
|
+
syncScrollLock();
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Take or release a share of the page-scroll lock from OUTSIDE the stack.
|
|
169
|
+
*
|
|
170
|
+
* For an overlay that manages its own z-index and Escape handling and so does not belong
|
|
171
|
+
* in the stack, but must still share the one lock — `mono-sidebar`. Idempotent per owner;
|
|
172
|
+
* the lock lifts only when the last owner (stack layer or otherwise) lets go.
|
|
173
|
+
*/
|
|
174
|
+
function setExternalScrollLock(owner, wanted) {
|
|
175
|
+
if (typeof document === "undefined") return;
|
|
176
|
+
if (wanted) externalLockOwners.add(owner);
|
|
177
|
+
else externalLockOwners.delete(owner);
|
|
178
|
+
syncScrollLock();
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Currently-open layers in open order (topmost last). Used by exclusive
|
|
182
|
+
* (non-stackable) modal/drawer logic that must close *other* instances of its
|
|
183
|
+
* own type — filter the returned list by `instanceof`.
|
|
184
|
+
*/
|
|
185
|
+
function getOpenPopupLayers() {
|
|
186
|
+
return stack;
|
|
187
|
+
}
|
|
188
|
+
//#endregion
|
|
189
|
+
export { unregisterPopupLayer as a, setExternalScrollLock as i, refreshPopupStack as n, registerPopupLayer as r, getOpenPopupLayers as t };
|
|
@@ -0,0 +1,521 @@
|
|
|
1
|
+
//#region ../../node_modules/.pnpm/p-throttle@8.1.0/node_modules/p-throttle/index.js
|
|
2
|
+
var states = /* @__PURE__ */ new WeakMap();
|
|
3
|
+
var signalThrottleds = /* @__PURE__ */ new WeakMap();
|
|
4
|
+
var finalizationRegistry = new FinalizationRegistry(({ signalWeakRef, weakReference }) => {
|
|
5
|
+
const signal = signalWeakRef.deref();
|
|
6
|
+
if (!signal) return;
|
|
7
|
+
const registration = signalThrottleds.get(signal);
|
|
8
|
+
if (registration) {
|
|
9
|
+
registration.throttleds.delete(weakReference);
|
|
10
|
+
if (registration.throttleds.size === 0) {
|
|
11
|
+
signal.removeEventListener("abort", registration.listener);
|
|
12
|
+
signalThrottleds.delete(signal);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
function pThrottle({ limit, interval, strict, signal, onDelay, weight }) {
|
|
17
|
+
if (!Number.isFinite(limit)) throw new TypeError("Expected `limit` to be a finite number");
|
|
18
|
+
if (!Number.isFinite(interval)) throw new TypeError("Expected `interval` to be a finite number");
|
|
19
|
+
if (limit < 0) throw new TypeError("Expected `limit` to be >= 0");
|
|
20
|
+
if (interval < 0) throw new TypeError("Expected `interval` to be >= 0");
|
|
21
|
+
if (weight !== void 0 && typeof weight !== "function") throw new TypeError("Expected `weight` to be a function");
|
|
22
|
+
if (weight && interval === 0) throw new TypeError("The `weight` option cannot be used with `interval` of 0");
|
|
23
|
+
const state = {
|
|
24
|
+
queue: /* @__PURE__ */ new Map(),
|
|
25
|
+
strictTicks: [],
|
|
26
|
+
currentTick: 0,
|
|
27
|
+
activeWeight: 0
|
|
28
|
+
};
|
|
29
|
+
const strictCapacity = Math.max(limit, 1);
|
|
30
|
+
const insertTickSorted = (tickRecord) => {
|
|
31
|
+
if (state.strictTicks.length === 0 || tickRecord.time >= state.strictTicks.at(-1).time) state.strictTicks.push(tickRecord);
|
|
32
|
+
else {
|
|
33
|
+
const insertIndex = state.strictTicks.findIndex((tick) => tick.time > tickRecord.time);
|
|
34
|
+
state.strictTicks.splice(insertIndex, 0, tickRecord);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
function windowedDelay(requestWeight) {
|
|
38
|
+
const now = Date.now();
|
|
39
|
+
if (now - state.currentTick > interval) {
|
|
40
|
+
state.activeWeight = requestWeight;
|
|
41
|
+
state.currentTick = now;
|
|
42
|
+
return 0;
|
|
43
|
+
}
|
|
44
|
+
if (state.activeWeight + requestWeight <= limit) state.activeWeight += requestWeight;
|
|
45
|
+
else {
|
|
46
|
+
state.currentTick += interval;
|
|
47
|
+
state.activeWeight = requestWeight;
|
|
48
|
+
}
|
|
49
|
+
return state.currentTick - now;
|
|
50
|
+
}
|
|
51
|
+
function strictDelay(requestWeight) {
|
|
52
|
+
const now = Date.now();
|
|
53
|
+
if (state.strictTicks.length > 0 && now - state.strictTicks.at(-1).time > interval) state.strictTicks.length = 0;
|
|
54
|
+
if (weight) {
|
|
55
|
+
while (state.strictTicks.length > 0 && now - state.strictTicks[0].time >= interval) state.strictTicks.shift();
|
|
56
|
+
const weightInWindowAt = (time) => {
|
|
57
|
+
let total = 0;
|
|
58
|
+
for (const tick of state.strictTicks) if (tick.time <= time && time - tick.time < interval) total += tick.weight;
|
|
59
|
+
return total;
|
|
60
|
+
};
|
|
61
|
+
if (weightInWindowAt(now) + requestWeight <= limit) {
|
|
62
|
+
insertTickSorted({
|
|
63
|
+
time: now,
|
|
64
|
+
weight: requestWeight
|
|
65
|
+
});
|
|
66
|
+
return { delay: 0 };
|
|
67
|
+
}
|
|
68
|
+
let nextExecutionTime = now;
|
|
69
|
+
while (weightInWindowAt(nextExecutionTime) + requestWeight > limit) {
|
|
70
|
+
const firstInWindow = state.strictTicks.find((tick) => tick.time <= nextExecutionTime && nextExecutionTime - tick.time < interval);
|
|
71
|
+
if (!firstInWindow) break;
|
|
72
|
+
nextExecutionTime = firstInWindow.time + interval;
|
|
73
|
+
}
|
|
74
|
+
const tickRecord = {
|
|
75
|
+
time: nextExecutionTime,
|
|
76
|
+
weight: requestWeight
|
|
77
|
+
};
|
|
78
|
+
insertTickSorted(tickRecord);
|
|
79
|
+
return {
|
|
80
|
+
delay: Math.max(0, nextExecutionTime - now),
|
|
81
|
+
tickRecord
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
if (state.strictTicks.length < strictCapacity) {
|
|
85
|
+
state.strictTicks.push({
|
|
86
|
+
time: now,
|
|
87
|
+
weight: requestWeight
|
|
88
|
+
});
|
|
89
|
+
return { delay: 0 };
|
|
90
|
+
}
|
|
91
|
+
const oldestTime = state.strictTicks[0].time;
|
|
92
|
+
const mostRecentTime = state.strictTicks.at(-1).time;
|
|
93
|
+
const baseTime = oldestTime + interval;
|
|
94
|
+
const minSpacing = interval > 0 ? Math.ceil(interval / strictCapacity) : 0;
|
|
95
|
+
const nextExecutionTime = baseTime <= mostRecentTime ? mostRecentTime + minSpacing : baseTime;
|
|
96
|
+
state.strictTicks.shift();
|
|
97
|
+
const tickRecord = {
|
|
98
|
+
time: nextExecutionTime,
|
|
99
|
+
weight: requestWeight
|
|
100
|
+
};
|
|
101
|
+
state.strictTicks.push(tickRecord);
|
|
102
|
+
return {
|
|
103
|
+
delay: Math.max(0, nextExecutionTime - now),
|
|
104
|
+
tickRecord
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
const getDelay = strict ? strictDelay : windowedDelay;
|
|
108
|
+
return (function_) => {
|
|
109
|
+
const throttled = function(...arguments_) {
|
|
110
|
+
if (!throttled.isEnabled) return (async () => function_.apply(this, arguments_))();
|
|
111
|
+
let timeoutId;
|
|
112
|
+
return new Promise((resolve, reject) => {
|
|
113
|
+
let requestWeight = 1;
|
|
114
|
+
if (weight) {
|
|
115
|
+
try {
|
|
116
|
+
requestWeight = weight(...arguments_);
|
|
117
|
+
} catch (error) {
|
|
118
|
+
reject(error);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
if (!Number.isFinite(requestWeight) || requestWeight < 0) {
|
|
122
|
+
reject(/* @__PURE__ */ new TypeError("Expected `weight` to be a finite non-negative number"));
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
if (requestWeight > limit) {
|
|
126
|
+
reject(/* @__PURE__ */ new TypeError(`Expected \`weight\` (${requestWeight}) to be <= \`limit\` (${limit})`));
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
const delayResult = getDelay(requestWeight);
|
|
131
|
+
const delay = strict ? delayResult.delay : delayResult;
|
|
132
|
+
const tickRecord = strict ? delayResult.tickRecord : void 0;
|
|
133
|
+
const execute = () => {
|
|
134
|
+
if (tickRecord) {
|
|
135
|
+
const actualTime = Date.now();
|
|
136
|
+
if (weight && tickRecord.time !== actualTime) {
|
|
137
|
+
tickRecord.time = actualTime;
|
|
138
|
+
const index = state.strictTicks.indexOf(tickRecord);
|
|
139
|
+
state.strictTicks.splice(index, 1);
|
|
140
|
+
insertTickSorted(tickRecord);
|
|
141
|
+
} else tickRecord.time = actualTime;
|
|
142
|
+
}
|
|
143
|
+
try {
|
|
144
|
+
resolve(function_.apply(this, arguments_));
|
|
145
|
+
} catch (error) {
|
|
146
|
+
reject(error);
|
|
147
|
+
}
|
|
148
|
+
state.queue.delete(timeoutId);
|
|
149
|
+
};
|
|
150
|
+
if (delay > 0) {
|
|
151
|
+
timeoutId = setTimeout(execute, delay);
|
|
152
|
+
state.queue.set(timeoutId, reject);
|
|
153
|
+
try {
|
|
154
|
+
onDelay?.(...arguments_);
|
|
155
|
+
} catch {}
|
|
156
|
+
} else execute();
|
|
157
|
+
});
|
|
158
|
+
};
|
|
159
|
+
signal?.throwIfAborted();
|
|
160
|
+
if (signal) {
|
|
161
|
+
let registration = signalThrottleds.get(signal);
|
|
162
|
+
if (!registration) {
|
|
163
|
+
registration = {
|
|
164
|
+
throttleds: /* @__PURE__ */ new Set(),
|
|
165
|
+
listener: null
|
|
166
|
+
};
|
|
167
|
+
registration.listener = () => {
|
|
168
|
+
for (const weakReference of registration.throttleds) {
|
|
169
|
+
const function_ = weakReference.deref();
|
|
170
|
+
if (!function_) continue;
|
|
171
|
+
const functionState = states.get(function_);
|
|
172
|
+
if (!functionState) continue;
|
|
173
|
+
for (const timeout of functionState.queue.keys()) {
|
|
174
|
+
clearTimeout(timeout);
|
|
175
|
+
functionState.queue.get(timeout)(signal.reason);
|
|
176
|
+
}
|
|
177
|
+
functionState.queue.clear();
|
|
178
|
+
functionState.strictTicks.length = 0;
|
|
179
|
+
functionState.currentTick = 0;
|
|
180
|
+
functionState.activeWeight = 0;
|
|
181
|
+
}
|
|
182
|
+
signalThrottleds.delete(signal);
|
|
183
|
+
};
|
|
184
|
+
signalThrottleds.set(signal, registration);
|
|
185
|
+
signal.addEventListener("abort", registration.listener, { once: true });
|
|
186
|
+
}
|
|
187
|
+
const weakReference = new WeakRef(throttled);
|
|
188
|
+
registration.throttleds.add(weakReference);
|
|
189
|
+
finalizationRegistry.register(throttled, {
|
|
190
|
+
signalWeakRef: new WeakRef(signal),
|
|
191
|
+
weakReference
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
throttled.isEnabled = true;
|
|
195
|
+
Object.defineProperty(throttled, "queueSize", { get() {
|
|
196
|
+
return state.queue.size;
|
|
197
|
+
} });
|
|
198
|
+
states.set(throttled, state);
|
|
199
|
+
return throttled;
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
//#endregion
|
|
203
|
+
//#region ../../node_modules/.pnpm/p-debounce@5.1.0/node_modules/p-debounce/index.js
|
|
204
|
+
var pDebounce = (functionToDebounce, wait, options = {}) => {
|
|
205
|
+
if (!Number.isFinite(wait)) throw new TypeError("Expected `wait` to be a finite number");
|
|
206
|
+
let leadingValue;
|
|
207
|
+
let timeout;
|
|
208
|
+
let promiseHandlers = [];
|
|
209
|
+
const onAbort = () => {
|
|
210
|
+
clearTimeout(timeout);
|
|
211
|
+
timeout = void 0;
|
|
212
|
+
try {
|
|
213
|
+
options.signal?.throwIfAborted();
|
|
214
|
+
} catch (error) {
|
|
215
|
+
for (const { reject } of promiseHandlers) reject(error);
|
|
216
|
+
promiseHandlers = [];
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
return function(...arguments_) {
|
|
220
|
+
return new Promise((resolve, reject) => {
|
|
221
|
+
try {
|
|
222
|
+
options.signal?.throwIfAborted();
|
|
223
|
+
} catch (error) {
|
|
224
|
+
reject(error);
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
const shouldCallNow = options.before && !timeout;
|
|
228
|
+
clearTimeout(timeout);
|
|
229
|
+
timeout = setTimeout(async () => {
|
|
230
|
+
timeout = void 0;
|
|
231
|
+
const currentHandlers = promiseHandlers;
|
|
232
|
+
promiseHandlers = [];
|
|
233
|
+
try {
|
|
234
|
+
const result = options.before ? leadingValue : await functionToDebounce.apply(this, arguments_);
|
|
235
|
+
for (const { resolve: resolveFunction } of currentHandlers) resolveFunction(result);
|
|
236
|
+
} catch (error) {
|
|
237
|
+
for (const { reject: rejectFunction } of currentHandlers) rejectFunction(error);
|
|
238
|
+
}
|
|
239
|
+
leadingValue = void 0;
|
|
240
|
+
options.signal?.removeEventListener("abort", onAbort);
|
|
241
|
+
}, wait);
|
|
242
|
+
if (shouldCallNow) (async () => {
|
|
243
|
+
try {
|
|
244
|
+
leadingValue = await functionToDebounce.apply(this, arguments_);
|
|
245
|
+
resolve(leadingValue);
|
|
246
|
+
} catch (error) {
|
|
247
|
+
reject(error);
|
|
248
|
+
}
|
|
249
|
+
})();
|
|
250
|
+
else {
|
|
251
|
+
promiseHandlers.push({
|
|
252
|
+
resolve,
|
|
253
|
+
reject
|
|
254
|
+
});
|
|
255
|
+
if (options.signal && promiseHandlers.length === 1) options.signal.addEventListener("abort", onAbort, { once: true });
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
};
|
|
259
|
+
};
|
|
260
|
+
pDebounce.promise = (function_, options = {}) => {
|
|
261
|
+
let currentPromise;
|
|
262
|
+
let queuedCall;
|
|
263
|
+
return async function(...arguments_) {
|
|
264
|
+
if (currentPromise) {
|
|
265
|
+
if (!options.after) return currentPromise;
|
|
266
|
+
queuedCall ??= { resolvers: [] };
|
|
267
|
+
queuedCall.arguments = arguments_;
|
|
268
|
+
queuedCall.context = this;
|
|
269
|
+
return new Promise((resolve, reject) => {
|
|
270
|
+
queuedCall.resolvers.push({
|
|
271
|
+
resolve,
|
|
272
|
+
reject
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
currentPromise = (async () => {
|
|
277
|
+
let result;
|
|
278
|
+
let initialError;
|
|
279
|
+
try {
|
|
280
|
+
result = await function_.apply(this, arguments_);
|
|
281
|
+
} catch (error) {
|
|
282
|
+
initialError = error;
|
|
283
|
+
}
|
|
284
|
+
while (queuedCall) {
|
|
285
|
+
const call = queuedCall;
|
|
286
|
+
queuedCall = void 0;
|
|
287
|
+
try {
|
|
288
|
+
const queuedResult = await function_.apply(call.context, call.arguments);
|
|
289
|
+
for (const { resolve } of call.resolvers) resolve(queuedResult);
|
|
290
|
+
} catch (error) {
|
|
291
|
+
for (const { reject } of call.resolvers) reject(error);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
if (initialError) throw initialError;
|
|
295
|
+
return result;
|
|
296
|
+
})();
|
|
297
|
+
try {
|
|
298
|
+
return await currentPromise;
|
|
299
|
+
} finally {
|
|
300
|
+
currentPromise = void 0;
|
|
301
|
+
}
|
|
302
|
+
};
|
|
303
|
+
};
|
|
304
|
+
//#endregion
|
|
305
|
+
//#region src/composables/rate-limit.ts
|
|
306
|
+
var DEFAULT_THROTTLE = {
|
|
307
|
+
limit: 1,
|
|
308
|
+
interval: 1e3,
|
|
309
|
+
strict: false
|
|
310
|
+
};
|
|
311
|
+
var DEFAULT_DEBOUNCE = {
|
|
312
|
+
wait: 300,
|
|
313
|
+
before: false
|
|
314
|
+
};
|
|
315
|
+
/** Parse the attribute form: `"300"` → `300`, `'{"wait":300}'` → object. */
|
|
316
|
+
function parseRateLimitValue(value) {
|
|
317
|
+
if (typeof value !== "string") return value;
|
|
318
|
+
const trimmed = value.trim();
|
|
319
|
+
if (trimmed === "" || trimmed === "true") return true;
|
|
320
|
+
if (trimmed === "false") return false;
|
|
321
|
+
if (trimmed.startsWith("{")) try {
|
|
322
|
+
return JSON.parse(trimmed);
|
|
323
|
+
} catch {
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
const parsed = Number(trimmed);
|
|
327
|
+
return Number.isFinite(parsed) ? parsed : void 0;
|
|
328
|
+
}
|
|
329
|
+
function toPositiveNumber(value, fallback) {
|
|
330
|
+
const parsed = Number(value);
|
|
331
|
+
return Number.isFinite(parsed) && parsed >= 0 ? parsed : fallback;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Normalize a `throttle` prop. A bare number is the *interval*
|
|
335
|
+
* (`throttle="1000"` → at most one call per second), which is the reading
|
|
336
|
+
* people expect from `throttle={1000}` elsewhere. Returns `null` when
|
|
337
|
+
* throttling is off.
|
|
338
|
+
*/
|
|
339
|
+
function normalizeThrottle(value) {
|
|
340
|
+
const parsed = parseRateLimitValue(value);
|
|
341
|
+
if (parsed === void 0 || parsed === null || parsed === false) return null;
|
|
342
|
+
if (parsed === true) return { ...DEFAULT_THROTTLE };
|
|
343
|
+
if (typeof parsed === "number") return {
|
|
344
|
+
...DEFAULT_THROTTLE,
|
|
345
|
+
interval: toPositiveNumber(parsed, DEFAULT_THROTTLE.interval)
|
|
346
|
+
};
|
|
347
|
+
if (typeof parsed !== "object") return null;
|
|
348
|
+
const config = parsed;
|
|
349
|
+
return {
|
|
350
|
+
limit: Math.max(1, toPositiveNumber(config.limit, DEFAULT_THROTTLE.limit)),
|
|
351
|
+
interval: toPositiveNumber(config.interval, DEFAULT_THROTTLE.interval),
|
|
352
|
+
strict: Boolean(config.strict)
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Normalize a `debounce` prop. A bare number is the *wait*
|
|
357
|
+
* (`debounce="300"` → 300ms). Returns `null` when debouncing is off.
|
|
358
|
+
*/
|
|
359
|
+
function normalizeDebounce(value) {
|
|
360
|
+
const parsed = parseRateLimitValue(value);
|
|
361
|
+
if (parsed === void 0 || parsed === null || parsed === false) return null;
|
|
362
|
+
if (parsed === true) return { ...DEFAULT_DEBOUNCE };
|
|
363
|
+
if (typeof parsed === "number") return {
|
|
364
|
+
...DEFAULT_DEBOUNCE,
|
|
365
|
+
wait: toPositiveNumber(parsed, DEFAULT_DEBOUNCE.wait)
|
|
366
|
+
};
|
|
367
|
+
if (typeof parsed !== "object") return null;
|
|
368
|
+
const config = parsed;
|
|
369
|
+
return {
|
|
370
|
+
wait: toPositiveNumber(config.wait, DEFAULT_DEBOUNCE.wait),
|
|
371
|
+
before: Boolean(config.before)
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Lit `hasChanged` for a rate-limit prop.
|
|
376
|
+
*
|
|
377
|
+
* **This is load-bearing.** In a template, `:throttle.prop="{ limit: 1 }"`
|
|
378
|
+
* allocates a NEW object on every parent re-render. With Lit's default `!==`
|
|
379
|
+
* check the element would see a change each time, rebuild the wrapper, and
|
|
380
|
+
* restart the timer — so on a frequently re-rendering parent a debounced call
|
|
381
|
+
* could be postponed forever and never fire at all. Comparing by value makes a
|
|
382
|
+
* re-created but equivalent config a no-op.
|
|
383
|
+
*/
|
|
384
|
+
function rateLimitHasChanged(value, old) {
|
|
385
|
+
if (value === old) return false;
|
|
386
|
+
if (typeof value !== "object" || typeof old !== "object") return true;
|
|
387
|
+
if (value === null || old === null) return true;
|
|
388
|
+
const next = value;
|
|
389
|
+
const previous = old;
|
|
390
|
+
const keys = new Set([...Object.keys(next), ...Object.keys(previous)]);
|
|
391
|
+
for (const key of keys) if (next[key] !== previous[key]) return true;
|
|
392
|
+
return false;
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Lit attribute converter for a rate-limit prop, so the shorthand attribute
|
|
396
|
+
* forms (`debounce="300"`, `throttle`, `debounce='{"wait":300}'`) work in plain
|
|
397
|
+
* HTML and SSR without a `.prop` binding.
|
|
398
|
+
*/
|
|
399
|
+
var rateLimitConverter = {
|
|
400
|
+
fromAttribute(value) {
|
|
401
|
+
if (value === null) return void 0;
|
|
402
|
+
return parseRateLimitValue(value);
|
|
403
|
+
},
|
|
404
|
+
toAttribute(value) {
|
|
405
|
+
if (value === void 0 || value === null || value === false) return null;
|
|
406
|
+
if (value === true) return "";
|
|
407
|
+
if (typeof value === "number" || typeof value === "string") return String(value);
|
|
408
|
+
return JSON.stringify(value);
|
|
409
|
+
}
|
|
410
|
+
};
|
|
411
|
+
function isAbortError(error) {
|
|
412
|
+
if (error instanceof DOMException && error.name === "AbortError") return true;
|
|
413
|
+
return typeof error === "object" && error !== null && error.name === "AbortError";
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Build a limiter around `run`.
|
|
417
|
+
*
|
|
418
|
+
* The wrapper is created lazily on the first `call()`, so nothing schedules a
|
|
419
|
+
* timer at construction time — important for SSR, where a limiter may be
|
|
420
|
+
* constructed but never called.
|
|
421
|
+
*
|
|
422
|
+
* `pending` counts calls that are still *waiting* — not merely unsettled. The
|
|
423
|
+
* distinction matters because a debounced burst collapses N calls into one
|
|
424
|
+
* execution and the losers only settle after it finishes: counting them as
|
|
425
|
+
* waiting would make the limiter report a phantom `pending` tail once the work
|
|
426
|
+
* was already done. So waiting is cleared when an execution starts (all of it
|
|
427
|
+
* for a debounce, one call for a throttle, whose queue really does keep
|
|
428
|
+
* waiting), and force-cleared whenever no call is outstanding at all — an
|
|
429
|
+
* invariant that also covers leading-edge debounces, where a trailing call
|
|
430
|
+
* settles without ever reaching `run`.
|
|
431
|
+
*
|
|
432
|
+
* Cancellation goes through an `AbortController`: both libraries take a
|
|
433
|
+
* `signal` and reject their pending promises when it fires. A signal is
|
|
434
|
+
* one-shot, so `cancel()` also drops the wrapper and the next `call()` rebuilds
|
|
435
|
+
* it with a fresh controller.
|
|
436
|
+
*/
|
|
437
|
+
function createRateLimiter(options) {
|
|
438
|
+
const { kind, config, run, onChange } = options;
|
|
439
|
+
let wrapped = null;
|
|
440
|
+
let controller = null;
|
|
441
|
+
let disposed = false;
|
|
442
|
+
let waiting = 0;
|
|
443
|
+
let running = 0;
|
|
444
|
+
let outstanding = 0;
|
|
445
|
+
const build = () => {
|
|
446
|
+
controller = new AbortController();
|
|
447
|
+
const signal = controller.signal;
|
|
448
|
+
const inner = async (...args) => {
|
|
449
|
+
waiting = kind === "debounce" ? 0 : Math.max(0, waiting - 1);
|
|
450
|
+
running++;
|
|
451
|
+
onChange?.();
|
|
452
|
+
try {
|
|
453
|
+
return await run(...args);
|
|
454
|
+
} finally {
|
|
455
|
+
running--;
|
|
456
|
+
onChange?.();
|
|
457
|
+
}
|
|
458
|
+
};
|
|
459
|
+
if (kind === "throttle") {
|
|
460
|
+
const { limit, interval, strict } = config;
|
|
461
|
+
return pThrottle({
|
|
462
|
+
limit,
|
|
463
|
+
interval,
|
|
464
|
+
strict,
|
|
465
|
+
signal
|
|
466
|
+
})(inner);
|
|
467
|
+
}
|
|
468
|
+
const { wait, before } = config;
|
|
469
|
+
return pDebounce(inner, wait, {
|
|
470
|
+
before,
|
|
471
|
+
signal
|
|
472
|
+
});
|
|
473
|
+
};
|
|
474
|
+
const teardown = () => {
|
|
475
|
+
controller?.abort();
|
|
476
|
+
controller = null;
|
|
477
|
+
wrapped = null;
|
|
478
|
+
waiting = 0;
|
|
479
|
+
};
|
|
480
|
+
return {
|
|
481
|
+
async call(...args) {
|
|
482
|
+
if (disposed) return void 0;
|
|
483
|
+
outstanding++;
|
|
484
|
+
waiting++;
|
|
485
|
+
onChange?.();
|
|
486
|
+
try {
|
|
487
|
+
wrapped ??= build();
|
|
488
|
+
return await wrapped(...args);
|
|
489
|
+
} catch (error) {
|
|
490
|
+
if (isAbortError(error)) return void 0;
|
|
491
|
+
throw error;
|
|
492
|
+
} finally {
|
|
493
|
+
outstanding--;
|
|
494
|
+
if (outstanding === 0) waiting = 0;
|
|
495
|
+
onChange?.();
|
|
496
|
+
}
|
|
497
|
+
},
|
|
498
|
+
cancel() {
|
|
499
|
+
teardown();
|
|
500
|
+
},
|
|
501
|
+
dispose() {
|
|
502
|
+
disposed = true;
|
|
503
|
+
teardown();
|
|
504
|
+
},
|
|
505
|
+
get pending() {
|
|
506
|
+
return waiting;
|
|
507
|
+
},
|
|
508
|
+
get running() {
|
|
509
|
+
return running;
|
|
510
|
+
},
|
|
511
|
+
get phase() {
|
|
512
|
+
if (running > 0) return "running";
|
|
513
|
+
return waiting > 0 ? "pending" : "idle";
|
|
514
|
+
},
|
|
515
|
+
get queueSize() {
|
|
516
|
+
return wrapped?.queueSize ?? 0;
|
|
517
|
+
}
|
|
518
|
+
};
|
|
519
|
+
}
|
|
520
|
+
//#endregion
|
|
521
|
+
export { rateLimitHasChanged as a, rateLimitConverter as i, normalizeDebounce as n, normalizeThrottle as r, createRateLimiter as t };
|