@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,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The coalesced notifier every mono controller uses.
|
|
3
|
+
*
|
|
4
|
+
* Notifications are queued on a microtask and de-duplicated, so several state
|
|
5
|
+
* changes in one tick produce a single callback. That coalescing is not a
|
|
6
|
+
* nicety: a synchronous subscriber that re-renders the consumer's Vue tree would
|
|
7
|
+
* reenter an in-flight patch and corrupt the DOM. When `queueMicrotask` is
|
|
8
|
+
* unavailable (older SSR runtimes) it degrades to a synchronous flush.
|
|
9
|
+
*
|
|
10
|
+
* This was copy-pasted into `monoDataGrid`, `monoDataDropdown`, `monoForm` and
|
|
11
|
+
* `monoChart` — identical logic and, in two of them, identical comments. One
|
|
12
|
+
* implementation means one place to fix if the scheduling ever needs to change.
|
|
13
|
+
*/
|
|
14
|
+
function createNotifier(options = {}) {
|
|
15
|
+
const subscribers = /* @__PURE__ */ new Set();
|
|
16
|
+
let queued = false;
|
|
17
|
+
let chain = 0;
|
|
18
|
+
let probe;
|
|
19
|
+
let tripped = false;
|
|
20
|
+
let pending = false;
|
|
21
|
+
/** Reported once per notifier: a loop that keeps going re-trips every task, and one line says it. */
|
|
22
|
+
let reported = false;
|
|
23
|
+
function armProbe() {
|
|
24
|
+
if (probe !== void 0 || typeof setTimeout !== "function") return;
|
|
25
|
+
probe = setTimeout(() => {
|
|
26
|
+
probe = void 0;
|
|
27
|
+
chain = 0;
|
|
28
|
+
if (tripped) {
|
|
29
|
+
tripped = false;
|
|
30
|
+
if (pending) {
|
|
31
|
+
pending = false;
|
|
32
|
+
flush();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}, 0);
|
|
36
|
+
}
|
|
37
|
+
function trip() {
|
|
38
|
+
tripped = true;
|
|
39
|
+
pending = true;
|
|
40
|
+
if (reported) return;
|
|
41
|
+
reported = true;
|
|
42
|
+
const extra = options.detail ? options.detail() : "";
|
|
43
|
+
console.error(`[mono] ${options.name ?? "controller"} notified ${chain} times without yielding to the event loop — a feedback loop (something writing back into it on every change, e.g. a watch() on its state ref that calls setProp / setValue). Notifications are paused until the next task.` + (extra ? ` ${extra}` : ""));
|
|
44
|
+
}
|
|
45
|
+
function flush() {
|
|
46
|
+
if (typeof setTimeout === "function") {
|
|
47
|
+
chain++;
|
|
48
|
+
armProbe();
|
|
49
|
+
}
|
|
50
|
+
if (chain > 200) {
|
|
51
|
+
if (!tripped) trip();
|
|
52
|
+
pending = true;
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
options.onFlush?.();
|
|
56
|
+
subscribers.forEach((cb) => cb());
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
subscribe(cb) {
|
|
60
|
+
subscribers.add(cb);
|
|
61
|
+
return () => subscribers.delete(cb);
|
|
62
|
+
},
|
|
63
|
+
notify() {
|
|
64
|
+
if (typeof queueMicrotask !== "function") {
|
|
65
|
+
flush();
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (tripped) {
|
|
69
|
+
pending = true;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (queued) return;
|
|
73
|
+
queued = true;
|
|
74
|
+
queueMicrotask(() => {
|
|
75
|
+
queued = false;
|
|
76
|
+
flush();
|
|
77
|
+
});
|
|
78
|
+
},
|
|
79
|
+
clear() {
|
|
80
|
+
subscribers.clear();
|
|
81
|
+
},
|
|
82
|
+
get size() {
|
|
83
|
+
return subscribers.size;
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//#endregion
|
|
88
|
+
export { createNotifier as t };
|
package/dist/nuxt.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {}
|
package/dist/nuxt.js
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { t as monoSsr } from "./vite-C5iUK7so.js";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { pathToFileURL } from "node:url";
|
|
4
|
+
import { addPluginTemplate, addVitePlugin, defineNuxtModule, extendViteConfig, hasNuxtModule, installModule, tryResolveModule, useLogger } from "@nuxt/kit";
|
|
5
|
+
//#region src/nuxt/index.ts
|
|
6
|
+
/** The optional peer the automatic skeleton (`pending`) renders with. */
|
|
7
|
+
var PHANTOM_UI = "@aejkatappaja/phantom-ui";
|
|
8
|
+
/** One lit instance, shared with the shadow build and @lit-labs/ssr. */
|
|
9
|
+
var LIT_DEDUPE = [
|
|
10
|
+
"lit",
|
|
11
|
+
"lit-html",
|
|
12
|
+
"lit-element",
|
|
13
|
+
"@lit/reactive-element"
|
|
14
|
+
];
|
|
15
|
+
/** Reached only from federated routes, so Vite won't find it in its entry scan. */
|
|
16
|
+
var DEFAULT_OPTIMIZE_INCLUDE = ["@mono-lit/devextreme"];
|
|
17
|
+
var monoHelperModule = defineNuxtModule({
|
|
18
|
+
meta: {
|
|
19
|
+
name: "@mono-lit/helper",
|
|
20
|
+
configKey: "mono"
|
|
21
|
+
},
|
|
22
|
+
async setup(options, nuxt) {
|
|
23
|
+
const helper = options.helper ?? {};
|
|
24
|
+
const prefix = helper.prefix ?? "mono-";
|
|
25
|
+
const logger = useLogger("@mono-lit/helper");
|
|
26
|
+
const ssrApp = nuxt.options.ssr !== false;
|
|
27
|
+
const clientOnlyWrap = helper.clientOnly ?? ssrApp;
|
|
28
|
+
const appAnchor = pathToFileURL(join(nuxt.options.rootDir, "index.js")).href;
|
|
29
|
+
const phantom = helper.skeleton === false ? null : await tryResolveModule(PHANTOM_UI, appAnchor);
|
|
30
|
+
if (!phantom && helper.skeleton !== false) logger.debug(`skeleton: "${PHANTOM_UI}" is not installed in the app — \`pending\` stays a no-op. Install it to turn the automatic skeleton on.`);
|
|
31
|
+
let litWrapper = false;
|
|
32
|
+
if (helper.ssr !== false && !ssrApp) logger.debug("ssr:false — skipping nuxt-ssr-lit; shadow builds render client-side as plain custom elements.");
|
|
33
|
+
else if (helper.ssr !== false) if (hasNuxtModule("nuxt-ssr-lit")) logger.info("nuxt-ssr-lit is configured by the host — using legacy manual SSR wiring (litElementPrefix). Remove that module entry to enable @mono-lit/helper auto-wrap, or set mono.helper.ssr:false to silence.");
|
|
34
|
+
else try {
|
|
35
|
+
await installModule(await tryResolveModule("nuxt-ssr-lit", import.meta.url) ?? "nuxt-ssr-lit", { litElementPrefix: [] });
|
|
36
|
+
litWrapper = true;
|
|
37
|
+
} catch {
|
|
38
|
+
logger.info("nuxt-ssr-lit could not be loaded — mono shadow components fall back to client-only. It ships as a @mono-lit/helper dependency, so this usually means a broken or deduped install; try reinstalling, or set mono.helper.ssr:false to silence.");
|
|
39
|
+
}
|
|
40
|
+
if (ssrApp || clientOnlyWrap) {
|
|
41
|
+
for (const plugin of monoSsr({
|
|
42
|
+
prefix,
|
|
43
|
+
wrapper: helper.wrapper,
|
|
44
|
+
ssrStubPrefix: helper.ssrStubPrefix,
|
|
45
|
+
exclude: helper.exclude,
|
|
46
|
+
lightWrap: clientOnlyWrap,
|
|
47
|
+
litWrapper,
|
|
48
|
+
shadowOverride: helper.shadow
|
|
49
|
+
})) addVitePlugin(plugin);
|
|
50
|
+
if (!clientOnlyWrap) logger.debug("mono.helper.clientOnly:false — light <mono-*> are not wrapped in <ClientOnly>; the server stub and the shadow <LitWrapper> wrap stay on.");
|
|
51
|
+
} else logger.debug("ssr:false — <mono-*> are not wrapped in <ClientOnly> (nothing renders on the server). Set mono.helper.clientOnly:true to force it.");
|
|
52
|
+
if (helper.css !== false) {
|
|
53
|
+
nuxt.options.css ||= [];
|
|
54
|
+
if (!nuxt.options.css.includes("@mono-lit/helper/ui/index.css")) nuxt.options.css.push("@mono-lit/helper/ui/index.css");
|
|
55
|
+
}
|
|
56
|
+
if (helper.customElement !== false) {
|
|
57
|
+
const vue = nuxt.options.vue ||= {};
|
|
58
|
+
vue.compilerOptions ||= {};
|
|
59
|
+
const prev = vue.compilerOptions.isCustomElement;
|
|
60
|
+
vue.compilerOptions.isCustomElement = (tag) => typeof prev === "function" && prev(tag) || tag.startsWith(prefix);
|
|
61
|
+
}
|
|
62
|
+
const uiConfig = { ...helper.ui && typeof helper.ui === "object" ? helper.ui : {} };
|
|
63
|
+
if (phantom) uiConfig.skeleton = {
|
|
64
|
+
ssr: ssrApp,
|
|
65
|
+
...typeof helper.skeleton === "object" ? helper.skeleton : {}
|
|
66
|
+
};
|
|
67
|
+
if (Object.keys(uiConfig).length) addPluginTemplate({
|
|
68
|
+
filename: "mono-ui.mjs",
|
|
69
|
+
order: -50,
|
|
70
|
+
getContents: () => [
|
|
71
|
+
"import { createMonoUI } from '@mono-lit/helper'",
|
|
72
|
+
"export default defineNuxtPlugin({",
|
|
73
|
+
" name: '@mono-lit/helper:ui',",
|
|
74
|
+
" enforce: 'pre',",
|
|
75
|
+
" setup() {",
|
|
76
|
+
` createMonoUI(${JSON.stringify(uiConfig)})`,
|
|
77
|
+
" },",
|
|
78
|
+
"})"
|
|
79
|
+
].join("\n")
|
|
80
|
+
});
|
|
81
|
+
if (phantom) addPluginTemplate({
|
|
82
|
+
filename: "mono-skeleton.client.mjs",
|
|
83
|
+
mode: "client",
|
|
84
|
+
getContents: () => [
|
|
85
|
+
"export default defineNuxtPlugin({",
|
|
86
|
+
" name: '@mono-lit/helper:skeleton',",
|
|
87
|
+
" async setup() {",
|
|
88
|
+
` await import('${PHANTOM_UI}')`,
|
|
89
|
+
" },",
|
|
90
|
+
"})"
|
|
91
|
+
].join("\n")
|
|
92
|
+
});
|
|
93
|
+
const tooltip = helper.tooltip === true ? {} : helper.tooltip;
|
|
94
|
+
if (tooltip && typeof tooltip === "object") addPluginTemplate({
|
|
95
|
+
filename: "mono-tooltip.client.mjs",
|
|
96
|
+
mode: "client",
|
|
97
|
+
getContents: () => [
|
|
98
|
+
"import { createMonoTooltip } from '@mono-lit/helper/tooltip'",
|
|
99
|
+
"export default defineNuxtPlugin({",
|
|
100
|
+
" name: '@mono-lit/helper:tooltip',",
|
|
101
|
+
" setup() {",
|
|
102
|
+
` createMonoTooltip(${JSON.stringify(tooltip)})`,
|
|
103
|
+
" },",
|
|
104
|
+
"})"
|
|
105
|
+
].join("\n")
|
|
106
|
+
});
|
|
107
|
+
const dedupe = helper.dedupe === false ? [] : helper.dedupe ?? LIT_DEDUPE;
|
|
108
|
+
const wanted = [...helper.optimizeInclude === false ? [] : helper.optimizeInclude ?? DEFAULT_OPTIMIZE_INCLUDE, ...tooltip ? ["@floating-ui/dom"] : []];
|
|
109
|
+
const exclude = phantom ? [PHANTOM_UI] : [];
|
|
110
|
+
const include = [];
|
|
111
|
+
for (const id of wanted) if (await tryResolveModule(id, appAnchor)) include.push(id);
|
|
112
|
+
else logger.debug(`optimizeDeps: skipping "${id}" — not resolvable from the app.`);
|
|
113
|
+
if (dedupe.length || include.length || exclude.length) extendViteConfig((config) => {
|
|
114
|
+
if (dedupe.length) {
|
|
115
|
+
config.resolve ||= {};
|
|
116
|
+
config.resolve.dedupe = [...new Set([...config.resolve.dedupe ?? [], ...dedupe])];
|
|
117
|
+
}
|
|
118
|
+
if (include.length) {
|
|
119
|
+
config.optimizeDeps ||= {};
|
|
120
|
+
config.optimizeDeps.include = [...new Set([...config.optimizeDeps.include ?? [], ...include])];
|
|
121
|
+
}
|
|
122
|
+
if (exclude.length) {
|
|
123
|
+
config.optimizeDeps ||= {};
|
|
124
|
+
config.optimizeDeps.exclude = [...new Set([...config.optimizeDeps.exclude ?? [], ...exclude])];
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
//#endregion
|
|
130
|
+
export { monoHelperModule as default };
|
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
import { a as unregisterPopupLayer, r as registerPopupLayer } from "./popup-stack-CEEMib__.js";
|
|
2
|
+
import { isServer } from "lit";
|
|
3
|
+
//#region src/composables/popup-portal.ts
|
|
4
|
+
/** Smallest height we will ever constrain a panel to — below this it's unusable. */
|
|
5
|
+
var MIN_CONSTRAINED = 96;
|
|
6
|
+
/** Composed-tree parent — crosses shadow boundaries. */
|
|
7
|
+
function flatTreeParent(node) {
|
|
8
|
+
const slot = node.assignedSlot;
|
|
9
|
+
if (slot) return slot;
|
|
10
|
+
const parent = node.parentNode;
|
|
11
|
+
if (parent instanceof ShadowRoot) return parent.host;
|
|
12
|
+
return parent;
|
|
13
|
+
}
|
|
14
|
+
/** Composed-tree containment — `root.contains(node)` that crosses shadow roots and slots. */
|
|
15
|
+
function flatTreeContains(root, node) {
|
|
16
|
+
for (let n = node; n; n = flatTreeParent(n)) if (n === root) return true;
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Which element OPENED a body-level portal.
|
|
21
|
+
*
|
|
22
|
+
* Every portal is a direct child of `<body>`, so the DOM says nothing about
|
|
23
|
+
* where its popup came from — and a popup opened from inside another popup's
|
|
24
|
+
* panel (a header filter inside a dropdown-table, a select inside a modal) is
|
|
25
|
+
* then "outside" to that panel's own dismiss test, which closes it under the
|
|
26
|
+
* user's hands. This map is the missing link, kept off the DOM (no attribute,
|
|
27
|
+
* nothing to serialise) and weak so a torn-down portal is not held.
|
|
28
|
+
*/
|
|
29
|
+
var portalOwner = /* @__PURE__ */ new WeakMap();
|
|
30
|
+
/** The portal `node` currently lives in (composed tree), or `null` when it is not inside one. */
|
|
31
|
+
function flatTreeClosestPortal(node) {
|
|
32
|
+
for (let n = flatTreeParent(node); n; n = flatTreeParent(n)) if (n instanceof Element && n.hasAttribute("data-mono-popup-portal")) return n;
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* True when an event's composed path passes through any of `roots` — directly,
|
|
37
|
+
* or through a body-level popup portal whose OWNER lives inside one of them (at
|
|
38
|
+
* any depth: a select inside a header filter inside a dropdown-table resolves
|
|
39
|
+
* all the way up).
|
|
40
|
+
*
|
|
41
|
+
* The one "is this click inside me?" test the library uses. Popups ask it
|
|
42
|
+
* through `PopupPortalController.containsInPath`; `mono-modal` / `mono-drawer`
|
|
43
|
+
* — which portal themselves, not through this controller — ask it directly with
|
|
44
|
+
* their host + render root, so a click in a select's option list opened from
|
|
45
|
+
* inside a no-overlay dialog counts as inside the dialog.
|
|
46
|
+
*/
|
|
47
|
+
function pathOwnedBy(path, roots) {
|
|
48
|
+
if (path.some((node) => node instanceof Element && roots.includes(node))) return true;
|
|
49
|
+
return nestedPortalInPath(path, roots);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The portal half of `pathOwnedBy`: true when the path passes through a
|
|
53
|
+
* `[data-mono-popup-portal]` whose owner chain lands in one of `roots` — the
|
|
54
|
+
* roots themselves being in the path does NOT count. That distinction is what
|
|
55
|
+
* `ownsNestedInPath` is built on: an Escape with focus on a dropdown's own
|
|
56
|
+
* trigger is the dropdown's to close, not a nested popup's.
|
|
57
|
+
*/
|
|
58
|
+
function nestedPortalInPath(path, roots) {
|
|
59
|
+
for (const node of path) {
|
|
60
|
+
if (!(node instanceof Element) || !node.hasAttribute("data-mono-popup-portal")) continue;
|
|
61
|
+
let owner = portalOwner.get(node);
|
|
62
|
+
const seen = /* @__PURE__ */ new Set();
|
|
63
|
+
while (owner && !seen.has(owner)) {
|
|
64
|
+
seen.add(owner);
|
|
65
|
+
if (roots.some((root) => root === owner || flatTreeContains(root, owner))) return true;
|
|
66
|
+
const outer = flatTreeClosestPortal(owner);
|
|
67
|
+
owner = outer ? portalOwner.get(outer) : void 0;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Nearest ancestor of the panel that establishes a containing block for
|
|
74
|
+
* `position: fixed` descendants. A body-portaled panel has none (the portal is
|
|
75
|
+
* a direct child of `<body>`), but a shadow-root panel usually sits under app
|
|
76
|
+
* chrome that does.
|
|
77
|
+
*/
|
|
78
|
+
function findFixedContainingBlock(panel) {
|
|
79
|
+
let node = flatTreeParent(panel);
|
|
80
|
+
while (node && node !== document.body && node !== document.documentElement) {
|
|
81
|
+
if (node instanceof HTMLElement) {
|
|
82
|
+
const cs = getComputedStyle(node);
|
|
83
|
+
if (cs.transform && cs.transform !== "none") return node;
|
|
84
|
+
if (cs.perspective && cs.perspective !== "none") return node;
|
|
85
|
+
if (cs.filter && cs.filter !== "none") return node;
|
|
86
|
+
const backdrop = cs.backdropFilter || cs.webkitBackdropFilter;
|
|
87
|
+
if (backdrop && backdrop !== "none") return node;
|
|
88
|
+
const willChange = cs.willChange || "";
|
|
89
|
+
if (willChange.includes("transform") || willChange.includes("perspective") || willChange.includes("filter")) return node;
|
|
90
|
+
const contain = cs.contain || "";
|
|
91
|
+
if (contain.includes("paint") || contain.includes("layout") || contain.includes("strict") || contain.includes("content")) return node;
|
|
92
|
+
}
|
|
93
|
+
node = flatTreeParent(node);
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Resolve where `panel` should sit relative to `anchor`, in viewport
|
|
99
|
+
* coordinates (i.e. what `position: fixed` wants, before any containing-block
|
|
100
|
+
* compensation — that's {@link applyPopupPlacement}'s job).
|
|
101
|
+
*
|
|
102
|
+
* IMPORTANT — the panel is measured at its NATURAL size: any previously
|
|
103
|
+
* published `--mono-popup-avail-*` constraint is cleared first. A constrained
|
|
104
|
+
* panel is exactly as tall as the room we gave it, so measuring it that way
|
|
105
|
+
* would make the flip test (`spaceBelow < panelH`) always report "it fits" and
|
|
106
|
+
* the panel would oscillate between sides on every scroll tick.
|
|
107
|
+
*/
|
|
108
|
+
function computePopupPlacement(anchor, panel, o = {}) {
|
|
109
|
+
panel.style.removeProperty("--mono-popup-avail-h");
|
|
110
|
+
panel.style.removeProperty("--mono-popup-avail-w");
|
|
111
|
+
const triggerRect = anchor.getBoundingClientRect();
|
|
112
|
+
const panelRect = panel.getBoundingClientRect();
|
|
113
|
+
const vw = window.innerWidth;
|
|
114
|
+
const vh = window.innerHeight;
|
|
115
|
+
const margin = o.margin ?? 4;
|
|
116
|
+
const cs = getComputedStyle(panel);
|
|
117
|
+
const borderX = (parseFloat(cs.borderLeftWidth) || 0) + (parseFloat(cs.borderRightWidth) || 0);
|
|
118
|
+
const borderY = (parseFloat(cs.borderTopWidth) || 0) + (parseFloat(cs.borderBottomWidth) || 0);
|
|
119
|
+
const boxW = panelRect.width || panel.offsetWidth;
|
|
120
|
+
const boxH = panelRect.height || panel.offsetHeight;
|
|
121
|
+
const panelW = cs.overflowX === "visible" ? Math.max(boxW, panel.scrollWidth + borderX) : boxW;
|
|
122
|
+
const panelH = cs.overflowY === "visible" ? Math.max(boxH, panel.scrollHeight + borderY) : boxH;
|
|
123
|
+
let side = o.side ?? "bottom";
|
|
124
|
+
let align = o.align ?? "start";
|
|
125
|
+
const offset = o.offset ?? 6;
|
|
126
|
+
const flip = o.flip ?? false;
|
|
127
|
+
const shift = o.shift ?? false;
|
|
128
|
+
const constrain = o.constrain ?? false;
|
|
129
|
+
/** Extent the panel will actually occupy along the main axis once clamped. */
|
|
130
|
+
const clamped = (natural, available) => constrain ? Math.min(natural, Math.max(MIN_CONSTRAINED, available)) : natural;
|
|
131
|
+
if (flip) {
|
|
132
|
+
if (side === "bottom") {
|
|
133
|
+
const below = vh - triggerRect.bottom - offset;
|
|
134
|
+
const above = triggerRect.top - offset;
|
|
135
|
+
if (below < panelH && above > below) side = "top";
|
|
136
|
+
} else if (side === "top") {
|
|
137
|
+
const above = triggerRect.top - offset;
|
|
138
|
+
const below = vh - triggerRect.bottom - offset;
|
|
139
|
+
if (above < panelH && below > above) side = "bottom";
|
|
140
|
+
} else if (side === "right") {
|
|
141
|
+
const right = vw - triggerRect.right - offset;
|
|
142
|
+
const left = triggerRect.left - offset;
|
|
143
|
+
if (right < panelW && left > right) side = "left";
|
|
144
|
+
} else if (side === "left") {
|
|
145
|
+
const left = triggerRect.left - offset;
|
|
146
|
+
const right = vw - triggerRect.right - offset;
|
|
147
|
+
if (left < panelW && right > left) side = "right";
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
if (flip && align !== "center") {
|
|
151
|
+
const fitsStart = side === "bottom" || side === "top" ? triggerRect.left + panelW + margin <= vw : triggerRect.top + panelH + margin <= vh;
|
|
152
|
+
const fitsEnd = side === "bottom" || side === "top" ? triggerRect.right - panelW - margin >= 0 : triggerRect.bottom - panelH - margin >= 0;
|
|
153
|
+
if (align === "start" && !fitsStart && fitsEnd) align = "end";
|
|
154
|
+
else if (align === "end" && !fitsEnd && fitsStart) align = "start";
|
|
155
|
+
}
|
|
156
|
+
let top = 0;
|
|
157
|
+
let left = 0;
|
|
158
|
+
let availableMain = 0;
|
|
159
|
+
if (side === "bottom" || side === "top") {
|
|
160
|
+
if (align === "start") left = triggerRect.left;
|
|
161
|
+
else if (align === "end") left = triggerRect.right - panelW;
|
|
162
|
+
else left = triggerRect.left + triggerRect.width / 2 - panelW / 2;
|
|
163
|
+
if (shift) {
|
|
164
|
+
const minLeft = margin;
|
|
165
|
+
const maxLeft = vw - panelW - margin;
|
|
166
|
+
if (maxLeft >= minLeft) {
|
|
167
|
+
if (left < minLeft) left = minLeft;
|
|
168
|
+
if (left > maxLeft) left = maxLeft;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
availableMain = side === "bottom" ? vh - triggerRect.bottom - offset - margin : triggerRect.top - offset - margin;
|
|
172
|
+
top = side === "bottom" ? triggerRect.bottom + offset : triggerRect.top - clamped(panelH, availableMain) - offset;
|
|
173
|
+
} else {
|
|
174
|
+
if (align === "start") top = triggerRect.top;
|
|
175
|
+
else if (align === "end") top = triggerRect.bottom - panelH;
|
|
176
|
+
else top = triggerRect.top + triggerRect.height / 2 - panelH / 2;
|
|
177
|
+
if (shift) {
|
|
178
|
+
const minTop = margin;
|
|
179
|
+
const maxTop = vh - panelH - margin;
|
|
180
|
+
if (maxTop >= minTop) {
|
|
181
|
+
if (top < minTop) top = minTop;
|
|
182
|
+
if (top > maxTop) top = maxTop;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
availableMain = side === "right" ? vw - triggerRect.right - offset - margin : triggerRect.left - offset - margin;
|
|
186
|
+
left = side === "right" ? triggerRect.right + offset : triggerRect.left - clamped(panelW, availableMain) - offset;
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
top,
|
|
190
|
+
left,
|
|
191
|
+
side,
|
|
192
|
+
availableMain
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Commit a {@link computePopupPlacement} result to the panel. Compensates for a
|
|
197
|
+
* transformed / contained ancestor that has become the fixed panel's containing
|
|
198
|
+
* block (a no-op for a body-portaled panel), and — when `constrain` is set —
|
|
199
|
+
* publishes the available room so the panel's own CSS can clamp itself.
|
|
200
|
+
*/
|
|
201
|
+
function applyPopupPlacement(panel, placement, constrain = false) {
|
|
202
|
+
let { top, left } = placement;
|
|
203
|
+
const cb = findFixedContainingBlock(panel);
|
|
204
|
+
if (cb) {
|
|
205
|
+
const cbRect = cb.getBoundingClientRect();
|
|
206
|
+
top -= cbRect.top;
|
|
207
|
+
left -= cbRect.left;
|
|
208
|
+
}
|
|
209
|
+
panel.style.position = "fixed";
|
|
210
|
+
const grid = typeof window !== "undefined" && window.devicePixelRatio > 0 ? window.devicePixelRatio : 1;
|
|
211
|
+
const snap = (v) => Math.round(v * grid) / grid;
|
|
212
|
+
panel.style.top = `${snap(top)}px`;
|
|
213
|
+
panel.style.left = `${snap(left)}px`;
|
|
214
|
+
panel.style.right = "auto";
|
|
215
|
+
panel.style.bottom = "auto";
|
|
216
|
+
panel.style.transform = "none";
|
|
217
|
+
if (constrain) {
|
|
218
|
+
const avail = `${Math.round(Math.max(MIN_CONSTRAINED, placement.availableMain))}px`;
|
|
219
|
+
const vertical = placement.side === "bottom" || placement.side === "top";
|
|
220
|
+
panel.style.setProperty(vertical ? "--mono-popup-avail-h" : "--mono-popup-avail-w", avail);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
var PopupPortalController = class {
|
|
224
|
+
constructor(host, opts) {
|
|
225
|
+
this.host = host;
|
|
226
|
+
this.opts = opts;
|
|
227
|
+
this._portal = null;
|
|
228
|
+
this._panel = null;
|
|
229
|
+
this._adopted = false;
|
|
230
|
+
this._registered = false;
|
|
231
|
+
this._resolvedSide = "bottom";
|
|
232
|
+
this._classObserver = null;
|
|
233
|
+
this._viewportBound = false;
|
|
234
|
+
this._viewportFrame = 0;
|
|
235
|
+
this._onViewport = () => {
|
|
236
|
+
if (!this.opts.isOpen() || this._viewportFrame) return;
|
|
237
|
+
this._viewportFrame = requestAnimationFrame(() => {
|
|
238
|
+
this._viewportFrame = 0;
|
|
239
|
+
if (this.opts.isOpen()) this.reposition();
|
|
240
|
+
});
|
|
241
|
+
};
|
|
242
|
+
host.addController(this);
|
|
243
|
+
}
|
|
244
|
+
hostConnected() {
|
|
245
|
+
if (isServer) return;
|
|
246
|
+
if (this.opts.isOpen()) {
|
|
247
|
+
this._adopt();
|
|
248
|
+
this._enterStack();
|
|
249
|
+
this._syncPortalClass();
|
|
250
|
+
this.reposition();
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
hostDisconnected() {
|
|
254
|
+
this._unbindViewport();
|
|
255
|
+
this._leaveStack();
|
|
256
|
+
this._classObserver?.disconnect();
|
|
257
|
+
this._classObserver = null;
|
|
258
|
+
if (this._portal?.parentNode) this._portal.parentNode.removeChild(this._portal);
|
|
259
|
+
this._portal = null;
|
|
260
|
+
this._adopted = false;
|
|
261
|
+
}
|
|
262
|
+
hostUpdated() {
|
|
263
|
+
if (isServer) return;
|
|
264
|
+
if (this.opts.isOpen()) {
|
|
265
|
+
this._adopt();
|
|
266
|
+
this._enterStack();
|
|
267
|
+
this._syncPortalClass();
|
|
268
|
+
this.reposition();
|
|
269
|
+
} else {
|
|
270
|
+
this._leaveStack();
|
|
271
|
+
this._syncPortalClass();
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Only relocate to `<body>` when the host renders into light DOM
|
|
276
|
+
* (`renderRoot === host`). Shadow hosts keep the panel in their shadow root.
|
|
277
|
+
*/
|
|
278
|
+
get _canPortal() {
|
|
279
|
+
return !isServer && this.host.renderRoot === this.host;
|
|
280
|
+
}
|
|
281
|
+
_ensurePortal() {
|
|
282
|
+
if (this._portal) return this._portal;
|
|
283
|
+
if (typeof document === "undefined") return null;
|
|
284
|
+
const portal = document.createElement("div");
|
|
285
|
+
portal.setAttribute("data-mono-popup-portal", "");
|
|
286
|
+
portal.style.display = "contents";
|
|
287
|
+
document.body.appendChild(portal);
|
|
288
|
+
portalOwner.set(portal, this.host);
|
|
289
|
+
this._portal = portal;
|
|
290
|
+
return portal;
|
|
291
|
+
}
|
|
292
|
+
/** Move the panel into the body portal on first open; keep it there after. */
|
|
293
|
+
_adopt() {
|
|
294
|
+
if (this._adopted) return;
|
|
295
|
+
if (!this._canPortal) {
|
|
296
|
+
this._panel = this.opts.getPanel();
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
const panel = this.opts.getPanel() ?? this._panel;
|
|
300
|
+
if (!panel) return;
|
|
301
|
+
const portal = this._ensurePortal();
|
|
302
|
+
if (!portal) return;
|
|
303
|
+
this._syncPortalClass();
|
|
304
|
+
this._observeStyleScope();
|
|
305
|
+
portal.appendChild(panel);
|
|
306
|
+
this._panel = panel;
|
|
307
|
+
this._adopted = true;
|
|
308
|
+
}
|
|
309
|
+
/** Mirror the style-scope element's classes and `mono-*` attributes onto the portal. */
|
|
310
|
+
_syncPortalClass() {
|
|
311
|
+
if (!this._portal) return;
|
|
312
|
+
const scope = this.opts.getStyleScope();
|
|
313
|
+
const cls = scope?.getAttribute("class") ?? "";
|
|
314
|
+
if (this._portal.getAttribute("class") !== cls) this._portal.setAttribute("class", cls);
|
|
315
|
+
const mirrored = (name) => name.startsWith("mono-") && !name.startsWith("mono-tooltip-");
|
|
316
|
+
const wanted = /* @__PURE__ */ new Map();
|
|
317
|
+
if (scope) {
|
|
318
|
+
for (const a of Array.from(scope.attributes)) if (mirrored(a.name)) wanted.set(a.name, a.value);
|
|
319
|
+
}
|
|
320
|
+
for (const a of Array.from(this._portal.attributes)) if (mirrored(a.name) && !wanted.has(a.name)) this._portal.removeAttribute(a.name);
|
|
321
|
+
for (const [name, value] of wanted) if (this._portal.getAttribute(name) !== value) this._portal.setAttribute(name, value);
|
|
322
|
+
this._syncPortalVars(scope);
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Carry the component's public custom properties across the portal (see
|
|
326
|
+
* `styleVars`). Only values that DIFFER from the portal's own resolution are
|
|
327
|
+
* written, so a theme-level token stays inherited and only a real override
|
|
328
|
+
* (an ancestor of the host, or an inline style on it) is copied.
|
|
329
|
+
*/
|
|
330
|
+
_syncPortalVars(scope) {
|
|
331
|
+
const names = this.opts.styleVars?.();
|
|
332
|
+
if (!this._portal || !scope || !names?.length) return;
|
|
333
|
+
const from = getComputedStyle(scope);
|
|
334
|
+
const here = getComputedStyle(this._portal);
|
|
335
|
+
for (const name of names) {
|
|
336
|
+
const value = from.getPropertyValue(name);
|
|
337
|
+
if (!value) {
|
|
338
|
+
if (this._portal.style.getPropertyValue(name)) this._portal.style.removeProperty(name);
|
|
339
|
+
continue;
|
|
340
|
+
}
|
|
341
|
+
if ((this._portal.style.getPropertyValue(name) || here.getPropertyValue(name)) !== value) this._portal.style.setProperty(name, value);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Watch the style-scope's `class` attribute so the portal stays in sync even
|
|
346
|
+
* when the host toggles state classes (e.g. `open`) imperatively in
|
|
347
|
+
* `updated()`, which runs after the controller's `hostUpdated`.
|
|
348
|
+
*/
|
|
349
|
+
_observeStyleScope() {
|
|
350
|
+
if (this._classObserver || typeof MutationObserver === "undefined") return;
|
|
351
|
+
const scope = this.opts.getStyleScope();
|
|
352
|
+
if (!scope) return;
|
|
353
|
+
this._classObserver = new MutationObserver((records) => {
|
|
354
|
+
if (records.some((r) => r.attributeName === "class" || r.attributeName?.startsWith("mono-"))) this._syncPortalClass();
|
|
355
|
+
});
|
|
356
|
+
this._classObserver.observe(scope, { attributes: true });
|
|
357
|
+
}
|
|
358
|
+
_enterStack() {
|
|
359
|
+
this._bindViewport();
|
|
360
|
+
if (this._registered) return;
|
|
361
|
+
registerPopupLayer(this);
|
|
362
|
+
this._registered = true;
|
|
363
|
+
}
|
|
364
|
+
_leaveStack() {
|
|
365
|
+
this._unbindViewport();
|
|
366
|
+
if (!this._registered) return;
|
|
367
|
+
unregisterPopupLayer(this);
|
|
368
|
+
this._registered = false;
|
|
369
|
+
}
|
|
370
|
+
/** PopupLayer hook — write the chained z onto the portal (root context). */
|
|
371
|
+
setStackZ(z) {
|
|
372
|
+
(this._portal ?? this.host).style.setProperty("--mono-popup-z", String(z));
|
|
373
|
+
}
|
|
374
|
+
/** Where panel-internal elements live now (portal while adopted, else host). */
|
|
375
|
+
get panelRoot() {
|
|
376
|
+
return this._adopted && this._portal ? this._portal : this.host.renderRoot;
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* True when an event's composed path passes through this popup — its own
|
|
380
|
+
* portaled panel, OR any popup that was opened from inside it.
|
|
381
|
+
*
|
|
382
|
+
* The second half is what keeps a nested popup from dismissing its parent:
|
|
383
|
+
* a header filter opened from a `<mono-table-th>` in a dropdown-table's
|
|
384
|
+
* panel, a select's option list inside a modal — each lives in a portal of
|
|
385
|
+
* its own on `<body>`, so a click in it is nowhere near the parent in the
|
|
386
|
+
* DOM. It IS inside by ownership, and that is what every outside-click test
|
|
387
|
+
* in the library asks this method.
|
|
388
|
+
*/
|
|
389
|
+
containsInPath(path) {
|
|
390
|
+
if (this._portal && path.includes(this._portal)) return true;
|
|
391
|
+
return this.ownsNestedInPath(path);
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* True when the path passes through a popup opened from INSIDE this one
|
|
395
|
+
* (at any depth) — not this popup's own panel.
|
|
396
|
+
*
|
|
397
|
+
* Walks each portal in the path back to its owner and asks whether that
|
|
398
|
+
* owner lives in this host or this panel; an owner that is itself inside
|
|
399
|
+
* another popup climbs to that popup's owner, so a select inside a filter
|
|
400
|
+
* inside a dropdown-table resolves all the way up. Composed-tree
|
|
401
|
+
* containment throughout: the owner may sit behind a slot or a shadow root.
|
|
402
|
+
*/
|
|
403
|
+
ownsNestedInPath(path) {
|
|
404
|
+
const roots = this._portal ? [this.host, this._portal] : [this.host];
|
|
405
|
+
return nestedPortalInPath(path.filter((n) => n !== this._portal), roots);
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Listen for viewport movement — but ONLY while this popup is open.
|
|
409
|
+
*
|
|
410
|
+
* These used to be bound in `hostConnected`, which meant one capture-phase
|
|
411
|
+
* `scroll` listener on `window` per popup-capable element on the page, open or
|
|
412
|
+
* not: every select, every table header filter, every search box — and one per
|
|
413
|
+
* ROW on a grid that puts a `mono-button-dropdown` in each. `_onViewport` bails
|
|
414
|
+
* when closed, so the handler was free; the *dispatch* was not, and a
|
|
415
|
+
* non-passive capture listener on `window` also disqualifies the whole page's
|
|
416
|
+
* scrolling from running off the compositor thread.
|
|
417
|
+
*
|
|
418
|
+
* `passive` because nothing here calls `preventDefault`.
|
|
419
|
+
*/
|
|
420
|
+
_bindViewport() {
|
|
421
|
+
if (isServer || this._viewportBound) return;
|
|
422
|
+
window.addEventListener("scroll", this._onViewport, {
|
|
423
|
+
capture: true,
|
|
424
|
+
passive: true
|
|
425
|
+
});
|
|
426
|
+
window.addEventListener("resize", this._onViewport, { passive: true });
|
|
427
|
+
this._viewportBound = true;
|
|
428
|
+
}
|
|
429
|
+
_unbindViewport() {
|
|
430
|
+
if (isServer) return;
|
|
431
|
+
if (this._viewportFrame) {
|
|
432
|
+
cancelAnimationFrame(this._viewportFrame);
|
|
433
|
+
this._viewportFrame = 0;
|
|
434
|
+
}
|
|
435
|
+
if (!this._viewportBound) return;
|
|
436
|
+
window.removeEventListener("scroll", this._onViewport, true);
|
|
437
|
+
window.removeEventListener("resize", this._onViewport);
|
|
438
|
+
this._viewportBound = false;
|
|
439
|
+
}
|
|
440
|
+
reposition() {
|
|
441
|
+
if (isServer) return;
|
|
442
|
+
if (!this._canPortal) return;
|
|
443
|
+
const panel = this._panel ?? this.opts.getPanel();
|
|
444
|
+
if (!panel) return;
|
|
445
|
+
const anchor = this.opts.getAnchor();
|
|
446
|
+
if (!anchor || !anchor.isConnected) return;
|
|
447
|
+
if (typeof this.opts.matchWidth === "function" ? this.opts.matchWidth() : this.opts.matchWidth) panel.style.width = `${anchor.getBoundingClientRect().width}px`;
|
|
448
|
+
const constrain = this.opts.constrainSize?.() ?? false;
|
|
449
|
+
const placement = computePopupPlacement(anchor, panel, {
|
|
450
|
+
side: this.opts.side?.(),
|
|
451
|
+
align: this.opts.align?.(),
|
|
452
|
+
offset: this.opts.offset?.(),
|
|
453
|
+
flip: this.opts.flip?.(),
|
|
454
|
+
shift: this.opts.shift?.(),
|
|
455
|
+
constrain
|
|
456
|
+
});
|
|
457
|
+
applyPopupPlacement(panel, placement, constrain);
|
|
458
|
+
if (this._resolvedSide !== placement.side) {
|
|
459
|
+
this._resolvedSide = placement.side;
|
|
460
|
+
this.opts.onSideResolved?.(placement.side);
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
};
|
|
464
|
+
//#endregion
|
|
465
|
+
export { pathOwnedBy as i, applyPopupPlacement as n, computePopupPlacement as r, PopupPortalController as t };
|