@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,537 @@
|
|
|
1
|
+
import { n as isPath, r as mergePatch, t as getFieldValue } from "./field-path-C92eGLg3.js";
|
|
2
|
+
import { i as searchFilterOf, s as flattenLeaves, t as isDataSourceLike } from "./data-source-read-DL88aH8t.js";
|
|
3
|
+
import { n as andPredicates, r as compileFilterPredicate, t as andFilters } from "./filter-eval-DIfU2EAn.js";
|
|
4
|
+
import { h as mergeSearchFields } from "./normalize-error-Gcgmgh5i.js";
|
|
5
|
+
import { t as resolveMaybeReactive } from "./reactive-D3EERqgO.js";
|
|
6
|
+
import { s as odataStringToArray, t as arrayToODataString } from "./filter-odata-C1vSGZaY.js";
|
|
7
|
+
//#region src/components/table/array-source.ts
|
|
8
|
+
/** Normalise a possibly-grouped input array to flat leaf rows when grouping. */
|
|
9
|
+
function normalizeInput(data, group) {
|
|
10
|
+
return (Array.isArray(group) ? group.length > 0 : !!group) ? flattenLeaves(data) : [...data];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Wrap a plain array in the structural {@link MonoGridSource} shape so
|
|
14
|
+
* {@link monoDataGrid} can drive it with no devextreme DataSource — paging,
|
|
15
|
+
* search and filtering all run client-side, in memory.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* const source = monoArraySource(rows, { pageSize: 10, searchValue: ['name'] })
|
|
19
|
+
* const table = monoDataGrid(source)
|
|
20
|
+
* await table.load()
|
|
21
|
+
* // later: source.setData(nextRows) // swap the underlying array
|
|
22
|
+
*/
|
|
23
|
+
function monoArraySource(data = [], opts = {}) {
|
|
24
|
+
const handlers = {
|
|
25
|
+
changed: [],
|
|
26
|
+
loadingChanged: [],
|
|
27
|
+
loadError: []
|
|
28
|
+
};
|
|
29
|
+
let all = normalizeInput(data, opts.group);
|
|
30
|
+
let pageIndex = 0;
|
|
31
|
+
let pageSize = opts.pageSize ?? 10;
|
|
32
|
+
let paginate = true;
|
|
33
|
+
let search = null;
|
|
34
|
+
let searchExpr = mergeSearchFields(opts)?.filter((e) => typeof e === "string") ?? null;
|
|
35
|
+
let searchOperation = "contains";
|
|
36
|
+
let filter = null;
|
|
37
|
+
let sortList = [];
|
|
38
|
+
let page = [];
|
|
39
|
+
const emit = (event, arg) => (handlers[event] ?? []).slice().forEach((h) => h(arg));
|
|
40
|
+
/** Normalise a single devextreme sort entry into `{ selector, desc }`. */
|
|
41
|
+
function normalizeSortEntry(value) {
|
|
42
|
+
if (!value) return null;
|
|
43
|
+
if (typeof value === "string") return {
|
|
44
|
+
selector: value,
|
|
45
|
+
desc: false
|
|
46
|
+
};
|
|
47
|
+
const o = value;
|
|
48
|
+
return o.selector ? {
|
|
49
|
+
selector: o.selector,
|
|
50
|
+
desc: !!o.desc
|
|
51
|
+
} : null;
|
|
52
|
+
}
|
|
53
|
+
/** Normalise the devextreme sort forms into an ordered multi-key list. */
|
|
54
|
+
function normalizeSortList(value) {
|
|
55
|
+
return (Array.isArray(value) ? value : value == null ? [] : [value]).map(normalizeSortEntry).filter((e) => !!e);
|
|
56
|
+
}
|
|
57
|
+
/** Read a sort/compare value; a wildcard path sorts best-effort by its first match. */
|
|
58
|
+
function sortValue(row, selector) {
|
|
59
|
+
if (!isPath(selector)) return row[selector];
|
|
60
|
+
const v = getFieldValue(row, selector);
|
|
61
|
+
return Array.isArray(v) ? v[0] : v;
|
|
62
|
+
}
|
|
63
|
+
/** Compare two rows by one selector (numeric when both sides parse). */
|
|
64
|
+
function compareBy(a, b, selector, desc) {
|
|
65
|
+
const av = sortValue(a, selector);
|
|
66
|
+
const bv = sortValue(b, selector);
|
|
67
|
+
const dir = desc ? -1 : 1;
|
|
68
|
+
if (av == null && bv == null) return 0;
|
|
69
|
+
if (av == null) return -dir;
|
|
70
|
+
if (bv == null) return dir;
|
|
71
|
+
const an = Number(av);
|
|
72
|
+
const bn = Number(bv);
|
|
73
|
+
const cmp = !Number.isNaN(an) && !Number.isNaN(bn) ? an - bn : String(av).localeCompare(String(bv));
|
|
74
|
+
return cmp === 0 ? 0 : (cmp < 0 ? -1 : 1) * dir;
|
|
75
|
+
}
|
|
76
|
+
/** Apply filter + search + sort, returning the matching rows. */
|
|
77
|
+
function applied() {
|
|
78
|
+
let rows = all;
|
|
79
|
+
if (typeof filter === "function") rows = rows.filter(filter);
|
|
80
|
+
const cols = searchExpr == null ? [] : Array.isArray(searchExpr) ? searchExpr : [searchExpr];
|
|
81
|
+
if (search && cols.length) {
|
|
82
|
+
const needle = String(search).toLowerCase();
|
|
83
|
+
const matches = (row, c) => {
|
|
84
|
+
const raw = isPath(c) ? getFieldValue(row, c) : row[c];
|
|
85
|
+
return (Array.isArray(raw) ? raw : [raw]).some((v) => String(v ?? "").toLowerCase().includes(needle));
|
|
86
|
+
};
|
|
87
|
+
rows = rows.filter((row) => cols.some((c) => matches(row, c)));
|
|
88
|
+
}
|
|
89
|
+
if (sortList.length) rows = [...rows].sort((a, b) => {
|
|
90
|
+
for (const { selector, desc } of sortList) {
|
|
91
|
+
const cmp = compareBy(a, b, selector, desc);
|
|
92
|
+
if (cmp !== 0) return cmp;
|
|
93
|
+
}
|
|
94
|
+
return 0;
|
|
95
|
+
});
|
|
96
|
+
return rows;
|
|
97
|
+
}
|
|
98
|
+
const source = {
|
|
99
|
+
on: (event, handler) => void (handlers[event] ??= []).push(handler),
|
|
100
|
+
off: (event, handler) => {
|
|
101
|
+
handlers[event] = (handlers[event] ?? []).filter((h) => h !== handler);
|
|
102
|
+
},
|
|
103
|
+
items: () => page,
|
|
104
|
+
/** Full backing array (unfiltered) — lets the grid derive header-filter values. */
|
|
105
|
+
data: () => [...all],
|
|
106
|
+
isLoading: () => false,
|
|
107
|
+
totalCount: () => applied().length,
|
|
108
|
+
isLastPage: () => (pageIndex + 1) * pageSize >= applied().length,
|
|
109
|
+
paginate: (value) => value === void 0 ? paginate : paginate = value,
|
|
110
|
+
pageSize: (value) => value === void 0 ? pageSize : pageSize = value,
|
|
111
|
+
pageIndex: (value) => value === void 0 ? pageIndex : pageIndex = value,
|
|
112
|
+
searchValue: (value) => value === void 0 ? search : search = value || null,
|
|
113
|
+
searchExpr: (value) => value === void 0 ? searchExpr : searchExpr = value ?? null,
|
|
114
|
+
searchOperation: (op) => op === void 0 ? searchOperation : searchOperation = op,
|
|
115
|
+
filter: (value) => value === void 0 ? filter : filter = typeof value === "function" ? value : null,
|
|
116
|
+
sort: (value) => value === void 0 ? sortList : sortList = normalizeSortList(value),
|
|
117
|
+
load: () => {
|
|
118
|
+
emit("loadingChanged", true);
|
|
119
|
+
const rows = applied();
|
|
120
|
+
const start = pageIndex * pageSize;
|
|
121
|
+
page = paginate ? rows.slice(start, start + pageSize) : rows.slice();
|
|
122
|
+
emit("changed");
|
|
123
|
+
emit("loadingChanged", false);
|
|
124
|
+
return Promise.resolve(page);
|
|
125
|
+
},
|
|
126
|
+
reload: () => source.load(),
|
|
127
|
+
/** Replace the backing array and reload from page 0. */
|
|
128
|
+
setData: (next) => {
|
|
129
|
+
all = normalizeInput(next, opts.group);
|
|
130
|
+
pageIndex = 0;
|
|
131
|
+
return Promise.resolve(source.load());
|
|
132
|
+
},
|
|
133
|
+
/**
|
|
134
|
+
* Merge `values` into the row whose `keyExpr` field equals `key`, then reload
|
|
135
|
+
* — the per-row write path used by `monoDataGrid.saveChanges()` for an
|
|
136
|
+
* array-backed table (correct across pages, unlike a whole-array `setData`).
|
|
137
|
+
*/
|
|
138
|
+
update: (key, values) => {
|
|
139
|
+
const keyExpr = opts.keyExpr ?? "Id";
|
|
140
|
+
const idx = all.findIndex((row) => String(row?.[keyExpr]) === String(key));
|
|
141
|
+
if (idx >= 0) all[idx] = mergePatch(all[idx], values);
|
|
142
|
+
return Promise.resolve(source.load());
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
return source;
|
|
146
|
+
}
|
|
147
|
+
//#endregion
|
|
148
|
+
//#region src/utils/data-source-apply.ts
|
|
149
|
+
/** The store's OData version, or `null` for anything that is not an OData store. */
|
|
150
|
+
function odataStoreVersion(store) {
|
|
151
|
+
const s = store;
|
|
152
|
+
if (!s || typeof s.version !== "function") return null;
|
|
153
|
+
const v = Number(s.version());
|
|
154
|
+
return Number.isFinite(v) ? v : null;
|
|
155
|
+
}
|
|
156
|
+
/** The store's base url, or `null` when it cannot be read. */
|
|
157
|
+
function odataStoreUrl(store) {
|
|
158
|
+
const s = store;
|
|
159
|
+
const url = s?._requestDispatcher?.url ?? s?._url;
|
|
160
|
+
return typeof url === "string" && url ? url : null;
|
|
161
|
+
}
|
|
162
|
+
/** `<url>?$apply=<encoded clause>` — `&` when the url already has a query string. */
|
|
163
|
+
function applyRequestUrl(url, apply) {
|
|
164
|
+
return `${url}${url.includes("?") ? "&" : "?"}$apply=${encodeURIComponent(apply)}`;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* The `store.load()` options that carry `apply`, or `null` when this store
|
|
168
|
+
* cannot carry one (no request should be made).
|
|
169
|
+
*
|
|
170
|
+
* `requireTotalCount: false` keeps `$count` off — a rolled-up result has no
|
|
171
|
+
* meaningful total, and `$count` beside `$apply` is rejected by some servers.
|
|
172
|
+
*/
|
|
173
|
+
function applyLoadOptions(store, apply, options = {}) {
|
|
174
|
+
if (odataStoreVersion(store) == null) return null;
|
|
175
|
+
const url = odataStoreUrl(store);
|
|
176
|
+
if (!url) return null;
|
|
177
|
+
const hasTop = typeof options.top === "number" && options.top >= 0;
|
|
178
|
+
return {
|
|
179
|
+
urlOverride: applyRequestUrl(url, apply),
|
|
180
|
+
requireTotalCount: false,
|
|
181
|
+
...hasTop ? { take: options.top } : {}
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
/** Normalise a devextreme store `load` result into a plain rows array. */
|
|
185
|
+
function storeRows(res) {
|
|
186
|
+
return Array.isArray(res) ? res : res?.data ?? [];
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Send `apply` through `store` and return the rolled-up rows, or `null` when
|
|
190
|
+
* the store cannot carry an `$apply` (nothing was requested). A request that
|
|
191
|
+
* FAILS throws — the caller decides whether that disables the path for good
|
|
192
|
+
* (see {@link createApplyGate}).
|
|
193
|
+
*/
|
|
194
|
+
async function loadApply(store, apply, options = {}) {
|
|
195
|
+
const loadOptions = applyLoadOptions(store, apply, options);
|
|
196
|
+
if (!loadOptions) return null;
|
|
197
|
+
return storeRows(await store.load(loadOptions));
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Whether `rows` are what an honoured `$apply` returns — each row carrying
|
|
201
|
+
* ONLY the grouping key(s) and the aggregate aliases in `keys` (plus OData
|
|
202
|
+
* `@odata.*` annotations) — as opposed to plain entities from a server that
|
|
203
|
+
* ignored the clause. The distinction matters because an alias is usually the
|
|
204
|
+
* field's own name: an entity `{ Id, Dept, Total }` has the alias `Total` too,
|
|
205
|
+
* and would be mistaken for a bucket by a presence check. The extra `Id` is
|
|
206
|
+
* what gives it away. `keys` are matched on their ROOT segment (`Job/Title`
|
|
207
|
+
* comes back as `{ Job: { Title } }`).
|
|
208
|
+
*/
|
|
209
|
+
function isRolledUp(rows, keys) {
|
|
210
|
+
const allowed = new Set(keys.map((k) => k.split(/[./]/, 1)[0]));
|
|
211
|
+
return rows.every((row) => !!row && typeof row === "object" && Object.keys(row).every((k) => k.startsWith("@") || allowed.has(k)));
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Whether a failed `$apply` request means the BACKEND does not do `$apply` —
|
|
215
|
+
* a 4xx (`400 Bad Request`, `404`) or `501 Not Implemented` — as opposed to a
|
|
216
|
+
* transient fault (network down: `httpStatus` 0 / absent, a 5xx). devextreme
|
|
217
|
+
* puts the status on the error as `httpStatus`.
|
|
218
|
+
*/
|
|
219
|
+
function isApplyRejected(err) {
|
|
220
|
+
const status = Number(err?.httpStatus);
|
|
221
|
+
if (!Number.isFinite(status)) return false;
|
|
222
|
+
return status >= 400 && status < 500 || status === 501;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Per-controller "is the `$apply` path still worth trying?" switch.
|
|
226
|
+
*
|
|
227
|
+
* A backend without `$apply` answers every attempt with the same 4xx, and a
|
|
228
|
+
* grid that retried on every panel open / recompute would pay one failed
|
|
229
|
+
* request each time before falling back. So the FIRST definite rejection is
|
|
230
|
+
* remembered for the controller's lifetime; a transient failure is not, and
|
|
231
|
+
* the next attempt goes out normally.
|
|
232
|
+
*/
|
|
233
|
+
function createApplyGate(enabled) {
|
|
234
|
+
let rejected = false;
|
|
235
|
+
return {
|
|
236
|
+
get skip() {
|
|
237
|
+
return !enabled || rejected;
|
|
238
|
+
},
|
|
239
|
+
reject(err) {
|
|
240
|
+
if (isApplyRejected(err)) rejected = true;
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
//#endregion
|
|
245
|
+
//#region src/utils/data-source-summary.ts
|
|
246
|
+
/**
|
|
247
|
+
* Server-side column aggregates: the pieces a consumer needs to answer
|
|
248
|
+
* "what are the totals?" without the grid draining every row to add them up.
|
|
249
|
+
*
|
|
250
|
+
* ── Resolver → store → drain ──
|
|
251
|
+
*
|
|
252
|
+
* A registered summary covers the FULL filtered set, not the current page, so
|
|
253
|
+
* something has to see every matching row. Left to itself the grid drains the
|
|
254
|
+
* bound source in `take: 100` chunks — free over an array, and pathological over
|
|
255
|
+
* a server-paged table, where it re-fetches through the pager exactly the rows
|
|
256
|
+
* the pager exists to avoid.
|
|
257
|
+
*
|
|
258
|
+
* The fix is to ask the server for the totals, and there are two ways in. The
|
|
259
|
+
* grid's own: ONE `$apply=filter(…)/aggregate(…)` through the bound source's
|
|
260
|
+
* STORE (`utils/data-source-apply`), which rides its url, `beforeSend` and auth.
|
|
261
|
+
* That needs a devextreme `ODataStore` — a CustomStore has nothing to carry the
|
|
262
|
+
* clause on, and **devextreme itself has no aggregate support**: `totalSummary`,
|
|
263
|
+
* `groupSummary` and `$apply` appear nowhere in it, an unknown load option is
|
|
264
|
+
* dropped in silence rather than refused (a `store.load({ totalSummary })` comes
|
|
265
|
+
* back as ordinary rows), and `customQueryParams` are service-operation
|
|
266
|
+
* parameters — quoted as literals, and on OData v4 a FUNCTION-INVOCATION url,
|
|
267
|
+
* `Entity($apply='…')` — so the clause has to go into the url (`urlOverride`),
|
|
268
|
+
* which is what `loadApply` does.
|
|
269
|
+
*
|
|
270
|
+
* The consumer's: a resolver. It is asked FIRST and covers what the store path
|
|
271
|
+
* cannot — a fetcher of the consumer's own, a custom dialect, a cached answer.
|
|
272
|
+
* The library builds the clause and hands it over; the consumer performs the
|
|
273
|
+
* request with whatever it already uses. Declining (`null`) falls through to the
|
|
274
|
+
* store path, and that declining falls through to the drain.
|
|
275
|
+
*/
|
|
276
|
+
/**
|
|
277
|
+
* mono's aggregate kinds → the OData v4 aggregation keyword.
|
|
278
|
+
*
|
|
279
|
+
* `countDistinct` maps to `countdistinct`, which OData does define — unlike the
|
|
280
|
+
* devextreme summary descriptor, which has no equivalent at all. Building the
|
|
281
|
+
* clause is free; whether a given backend implements it is the consumer's
|
|
282
|
+
* problem, and declining is always safe.
|
|
283
|
+
*/
|
|
284
|
+
var ODATA_AGG = {
|
|
285
|
+
sum: "sum",
|
|
286
|
+
avg: "average",
|
|
287
|
+
min: "min",
|
|
288
|
+
max: "max",
|
|
289
|
+
count: "$count",
|
|
290
|
+
countDistinct: "countdistinct"
|
|
291
|
+
};
|
|
292
|
+
/** A dotted path (`Job.Budget`) addresses a nav property as `Job/Budget` in OData. */
|
|
293
|
+
var toODataPath = (field) => field.replaceAll(".", "/");
|
|
294
|
+
/**
|
|
295
|
+
* A field a server can aggregate.
|
|
296
|
+
*
|
|
297
|
+
* A WILDCARD or INDEX path (`Lines.[*].Total`) is rejected: `getFieldValue`
|
|
298
|
+
* resolves those by walking a collection on a loaded row, and no `$apply`
|
|
299
|
+
* expression means the same thing — the nearest OData construct aggregates the
|
|
300
|
+
* collection per parent rather than across all of them.
|
|
301
|
+
*/
|
|
302
|
+
var isAggregatableField = (field) => !!field && !field.includes("[") && !field.includes("*");
|
|
303
|
+
/**
|
|
304
|
+
* The response key each spec's value comes back under.
|
|
305
|
+
*
|
|
306
|
+
* Plain `field` while that field carries ONE aggregate, which is the ordinary
|
|
307
|
+
* case and keeps the response readable; `field_type` once the same field has
|
|
308
|
+
* two (a `sum` and an `avg` of `Price`), because an `$apply` cannot alias two
|
|
309
|
+
* values to the same name. An explicit `name` always wins, and a bare `count`
|
|
310
|
+
* has no field to name it after.
|
|
311
|
+
*/
|
|
312
|
+
function summaryAliases(specs) {
|
|
313
|
+
const seen = /* @__PURE__ */ new Map();
|
|
314
|
+
for (const s of specs) {
|
|
315
|
+
if (!s.field) continue;
|
|
316
|
+
seen.set(s.field, (seen.get(s.field) ?? 0) + 1);
|
|
317
|
+
}
|
|
318
|
+
return specs.map((s, i) => {
|
|
319
|
+
if (s.name) return s.name;
|
|
320
|
+
if (!s.field) return `count_${i}`;
|
|
321
|
+
return (seen.get(s.field) ?? 0) > 1 ? `${s.field}_${s.type ?? "sum"}` : s.field;
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Build `aggregate(<field> with <agg> as <alias>, …)` for a set of specs.
|
|
326
|
+
*
|
|
327
|
+
* Returns `null` when no spec can be expressed — a caller with nothing to ask
|
|
328
|
+
* for should not make a request.
|
|
329
|
+
*/
|
|
330
|
+
function buildSummaryApply(specs) {
|
|
331
|
+
const aliases = summaryAliases(specs);
|
|
332
|
+
const parts = specs.map((spec, i) => {
|
|
333
|
+
const agg = ODATA_AGG[spec.type ?? "sum"];
|
|
334
|
+
if (!agg) return null;
|
|
335
|
+
if (agg === "$count") return `$count as ${aliases[i]}`;
|
|
336
|
+
if (!spec.field || !isAggregatableField(spec.field)) return null;
|
|
337
|
+
return `${toODataPath(spec.field)} with ${agg} as ${aliases[i]}`;
|
|
338
|
+
}).filter((p) => !!p);
|
|
339
|
+
return parts.length ? `aggregate(${parts.join(",")})` : null;
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Compose a filter with an aggregate: `filter(<expr>)/aggregate(…)`.
|
|
343
|
+
*
|
|
344
|
+
* The filter goes INSIDE `$apply` rather than travelling as a sibling `$filter`
|
|
345
|
+
* — that is what makes the two compose, since the filter runs first and the
|
|
346
|
+
* aggregation sees only matching rows.
|
|
347
|
+
*/
|
|
348
|
+
function composeSummaryApply(apply, filter) {
|
|
349
|
+
const expr = arrayToODataString(filter);
|
|
350
|
+
return expr ? `filter(${expr})/${apply}` : apply;
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* The predicate a summary must aggregate over — IDENTICAL to what the drain uses.
|
|
354
|
+
*
|
|
355
|
+
* `readAllRows` reads a DataSource as its own `filter()` AND its reconstructed
|
|
356
|
+
* `searchValue`, which is a DataSource-level option the store knows nothing
|
|
357
|
+
* about. Anything less here and a total would quietly count rows the user had
|
|
358
|
+
* searched away, which is worse than being slow.
|
|
359
|
+
*/
|
|
360
|
+
function summaryFilterOf(source) {
|
|
361
|
+
if (!isDataSourceLike(source)) return null;
|
|
362
|
+
const ds = source;
|
|
363
|
+
return andFilters(ds.filter?.() ?? null, searchFilterOf(ds) ?? null);
|
|
364
|
+
}
|
|
365
|
+
//#endregion
|
|
366
|
+
//#region src/utils/data-source-options.ts
|
|
367
|
+
/** The knobs with a meaning of their own; anything else is passed through as a load option. */
|
|
368
|
+
var DATA_SOURCE_KNOBS = new Set([
|
|
369
|
+
"filter",
|
|
370
|
+
"select",
|
|
371
|
+
"expand",
|
|
372
|
+
"sort",
|
|
373
|
+
"customQueryParams",
|
|
374
|
+
"paginate",
|
|
375
|
+
"pageSize",
|
|
376
|
+
"requireTotalCount",
|
|
377
|
+
"searchExpr",
|
|
378
|
+
"searchOperation"
|
|
379
|
+
]);
|
|
380
|
+
/** A comma string or an array → a trimmed string list; `null`/`undefined` → `undefined`. */
|
|
381
|
+
function toList(v) {
|
|
382
|
+
if (v == null) return void 0;
|
|
383
|
+
if (Array.isArray(v)) return v.map(String);
|
|
384
|
+
return String(v).split(",").map((x) => x.trim()).filter(Boolean);
|
|
385
|
+
}
|
|
386
|
+
/** devextreme's sort forms (string / object / array / mixed) → an ordered entry list. */
|
|
387
|
+
function normalizeSortList(value) {
|
|
388
|
+
const arr = Array.isArray(value) ? value : value == null ? [] : [value];
|
|
389
|
+
const out = [];
|
|
390
|
+
for (const v of arr) {
|
|
391
|
+
if (!v) continue;
|
|
392
|
+
if (typeof v === "string") out.push({
|
|
393
|
+
selector: v,
|
|
394
|
+
desc: false
|
|
395
|
+
});
|
|
396
|
+
else if (typeof v === "object" && v.selector) out.push({
|
|
397
|
+
selector: v.selector,
|
|
398
|
+
desc: !!v.desc
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
return out;
|
|
402
|
+
}
|
|
403
|
+
/** `"A desc, B"` → `[{A, desc}, {B}]`. */
|
|
404
|
+
function parseOrderby(text) {
|
|
405
|
+
return text.split(",").map((part) => part.trim()).filter(Boolean).map((part) => {
|
|
406
|
+
const [selector, dir] = part.split(/\s+/);
|
|
407
|
+
return {
|
|
408
|
+
selector,
|
|
409
|
+
desc: (dir ?? "").toLowerCase() === "desc"
|
|
410
|
+
};
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* The parser emits OData keyword operators (`eq`, `ge`) — the filter builder's
|
|
415
|
+
* tree reads either — but devextreme's ODataStore compiles ONLY the symbol forms
|
|
416
|
+
* and throws `E4003` on a keyword. Rewritten recursively.
|
|
417
|
+
*/
|
|
418
|
+
function toSymbolOps(expr) {
|
|
419
|
+
if (!Array.isArray(expr)) return expr;
|
|
420
|
+
const SYM = {
|
|
421
|
+
eq: "=",
|
|
422
|
+
ne: "<>",
|
|
423
|
+
gt: ">",
|
|
424
|
+
ge: ">=",
|
|
425
|
+
lt: "<",
|
|
426
|
+
le: "<="
|
|
427
|
+
};
|
|
428
|
+
if (expr.length === 3 && typeof expr[0] === "string" && typeof expr[1] === "string" && !Array.isArray(expr[2])) {
|
|
429
|
+
const op = SYM[expr[1].toLowerCase()];
|
|
430
|
+
return op ? [
|
|
431
|
+
expr[0],
|
|
432
|
+
op,
|
|
433
|
+
expr[2]
|
|
434
|
+
] : expr;
|
|
435
|
+
}
|
|
436
|
+
return expr.map((part) => Array.isArray(part) ? toSymbolOps(part) : part);
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* A raw `$filter` → devextreme's array form, so the store compiles it TOGETHER
|
|
440
|
+
* with whatever the component adds. The parser throws on syntax it does not know
|
|
441
|
+
* (lambdas, ISO date literals); those go through as a one-element raw clause,
|
|
442
|
+
* which devextreme emits as `(expr) eq true` — valid OData, with the caveat that
|
|
443
|
+
* it rewrites `.` to `/` inside the text.
|
|
444
|
+
*/
|
|
445
|
+
function parseOdataFilter(raw) {
|
|
446
|
+
const text = raw.trim();
|
|
447
|
+
if (!text) return null;
|
|
448
|
+
try {
|
|
449
|
+
return toSymbolOps(odataStringToArray(text) ?? null);
|
|
450
|
+
} catch {
|
|
451
|
+
return [`(${text})`];
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
/** `{ $select, $expand, $orderby, $filter, …custom }` → the DataSource shape. */
|
|
455
|
+
function normalizeOdataOptions(o) {
|
|
456
|
+
const out = {};
|
|
457
|
+
const custom = {};
|
|
458
|
+
for (const [k, v] of Object.entries(o)) {
|
|
459
|
+
if (v === void 0) continue;
|
|
460
|
+
if (k === "$select") out.select = toList(v);
|
|
461
|
+
else if (k === "$expand") out.expand = Array.isArray(v) ? v.map(String) : String(v);
|
|
462
|
+
else if (k === "$orderby") out.sort = parseOrderby(String(v));
|
|
463
|
+
else if (k === "$filter") {
|
|
464
|
+
const f = parseOdataFilter(String(v));
|
|
465
|
+
if (f != null) out.filter = f;
|
|
466
|
+
} else custom[k] = v;
|
|
467
|
+
}
|
|
468
|
+
if (Object.keys(custom).length) out.customQueryParams = custom;
|
|
469
|
+
return out;
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* `a` ∧ `b`: filters AND-ed (predicates and arrays each on their own terms),
|
|
473
|
+
* `select`/`expand` unioned, sort de-duplicated by selector with `a` leading,
|
|
474
|
+
* `customQueryParams` merged with `b` winning, scalars `b` if defined else `a`.
|
|
475
|
+
*/
|
|
476
|
+
function mergeDataSourceOptions(a, b) {
|
|
477
|
+
const out = {
|
|
478
|
+
...a,
|
|
479
|
+
...b
|
|
480
|
+
};
|
|
481
|
+
if (a.filter != null && b.filter != null) out.filter = typeof a.filter === "function" || typeof b.filter === "function" ? andPredicates(typeof a.filter === "function" ? a.filter : compileFilterPredicate(a.filter), typeof b.filter === "function" ? b.filter : compileFilterPredicate(b.filter)) : andFilters(a.filter, b.filter);
|
|
482
|
+
else out.filter = a.filter ?? b.filter;
|
|
483
|
+
const union = (x, y) => {
|
|
484
|
+
const xs = toList(x), ys = toList(y);
|
|
485
|
+
if (!xs && !ys) return void 0;
|
|
486
|
+
return [...new Set([...xs ?? [], ...ys ?? []])];
|
|
487
|
+
};
|
|
488
|
+
if (a.select !== void 0 || b.select !== void 0) out.select = union(a.select, b.select);
|
|
489
|
+
if (a.expand !== void 0 || b.expand !== void 0) {
|
|
490
|
+
const nested = (v) => typeof v === "string" && v.includes("(");
|
|
491
|
+
out.expand = nested(a.expand) || nested(b.expand) ? b.expand ?? a.expand : union(a.expand, b.expand);
|
|
492
|
+
}
|
|
493
|
+
if (a.sort !== void 0 || b.sort !== void 0) {
|
|
494
|
+
const as = normalizeSortList(a.sort);
|
|
495
|
+
const bs = normalizeSortList(b.sort).filter((e) => !as.some((x) => x.selector === e.selector));
|
|
496
|
+
out.sort = [...as, ...bs];
|
|
497
|
+
}
|
|
498
|
+
if (a.customQueryParams || b.customQueryParams) out.customQueryParams = {
|
|
499
|
+
...a.customQueryParams ?? {},
|
|
500
|
+
...b.customQueryParams ?? {}
|
|
501
|
+
};
|
|
502
|
+
return out;
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* Read both option bags fresh and merge them — the one call a controller makes
|
|
506
|
+
* at the top of every query. Returns a NEW object every time (a getter hands
|
|
507
|
+
* back fresh state), so callers that need change detection compare by content:
|
|
508
|
+
* see {@link dataSourceOptionsKey}.
|
|
509
|
+
*/
|
|
510
|
+
function resolveDataSourceOptions(dataSourceOptions, odataOptions) {
|
|
511
|
+
const ds = resolveMaybeReactive(dataSourceOptions) ?? {};
|
|
512
|
+
const od = resolveMaybeReactive(odataOptions);
|
|
513
|
+
return od ? mergeDataSourceOptions(ds, normalizeOdataOptions(od)) : { ...ds };
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* A content key for change detection. Functions (an array-source predicate) do
|
|
517
|
+
* not stringify, so they are marked and must be compared by reference by the
|
|
518
|
+
* caller; a circular object yields a fresh random key and so always counts as
|
|
519
|
+
* changed.
|
|
520
|
+
*/
|
|
521
|
+
function dataSourceOptionsKey(o) {
|
|
522
|
+
try {
|
|
523
|
+
return JSON.stringify(o, (_k, v) => typeof v === "function" ? "[fn]" : v);
|
|
524
|
+
} catch {
|
|
525
|
+
return String(Math.random());
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
/** `expand` / `customQueryParams` / unknown keys — what goes onto a `store.load()` beside the knobs. */
|
|
529
|
+
function extraLoadOptions(o) {
|
|
530
|
+
const out = {};
|
|
531
|
+
for (const [k, v] of Object.entries(o)) if (!DATA_SOURCE_KNOBS.has(k) && v !== void 0) out[k] = v;
|
|
532
|
+
if (o.expand !== void 0) out.expand = o.expand;
|
|
533
|
+
if (o.customQueryParams !== void 0) out.customQueryParams = o.customQueryParams;
|
|
534
|
+
return out;
|
|
535
|
+
}
|
|
536
|
+
//#endregion
|
|
537
|
+
export { resolveDataSourceOptions as a, composeSummaryApply as c, createApplyGate as d, isRolledUp as f, monoArraySource as h, normalizeSortList as i, summaryAliases as l, storeRows as m, extraLoadOptions as n, toList as o, loadApply as p, mergeDataSourceOptions as r, buildSummaryApply as s, dataSourceOptionsKey as t, summaryFilterOf as u };
|