@verbb/plugin-kit-web 2.0.14 → 2.0.16
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/CHANGELOG.md +73 -0
- package/custom-elements.json +39571 -0
- package/dist/base/pk-form-associated-element.d.ts +17 -1
- package/dist/base/pk-form-associated-element.d.ts.map +1 -1
- package/dist/chunks/{animate-with-class-ZJeCOKB3.js → animate-with-class-CsDwYnXL.js} +1 -1
- package/dist/chunks/{animate-with-class-ZJeCOKB3.js.map → animate-with-class-CsDwYnXL.js.map} +1 -1
- package/dist/chunks/{autoloader-DPX9YYZs.js → autoloader-dJO3tYOX.js} +2 -2
- package/dist/chunks/{autoloader-DPX9YYZs.js.map → autoloader-dJO3tYOX.js.map} +1 -1
- package/dist/chunks/{component-registry-CNB8PbP_.js → component-registry-D34fm8xW.js} +5 -1
- package/dist/chunks/component-registry-D34fm8xW.js.map +1 -0
- package/dist/chunks/{decorate-W02hmVTt.js → decorate-R0X811qp.js} +13 -2
- package/dist/chunks/decorate-R0X811qp.js.map +1 -0
- package/dist/chunks/{field-labels-CoU9dnNq.js → field-labels-CmuAW8Cl.js} +1 -1
- package/dist/chunks/{field-labels-CoU9dnNq.js.map → field-labels-CmuAW8Cl.js.map} +1 -1
- package/dist/chunks/option-filter-BQqr8Z21.js +121 -0
- package/dist/chunks/option-filter-BQqr8Z21.js.map +1 -0
- package/dist/chunks/pk-autocomplete-kOT0Zlld.js +992 -0
- package/dist/chunks/pk-autocomplete-kOT0Zlld.js.map +1 -0
- package/dist/chunks/{pk-button-QpDDlRbG.js → pk-button-BrH4u4Qr.js} +10 -7
- package/dist/chunks/{pk-button-QpDDlRbG.js.map → pk-button-BrH4u4Qr.js.map} +1 -1
- package/dist/chunks/{pk-button-group-D9hqSfb_.js → pk-button-group-BSz5T5iS.js} +2 -3
- package/dist/chunks/pk-button-group-BSz5T5iS.js.map +1 -0
- package/dist/chunks/{pk-button-group-separator-DG0CYaqc.js → pk-button-group-separator-DH3Rl24b.js} +2 -3
- package/dist/chunks/pk-button-group-separator-DH3Rl24b.js.map +1 -0
- package/dist/chunks/{pk-button-group-text-C5z4P7ur.js → pk-button-group-text-Qro_KmZb.js} +2 -3
- package/dist/chunks/{pk-button-group-text-C5z4P7ur.js.map → pk-button-group-text-Qro_KmZb.js.map} +1 -1
- package/dist/chunks/{pk-calendar-CoUil0F7.js → pk-calendar-Z7Y0PjeY.js} +2 -3
- package/dist/chunks/pk-calendar-Z7Y0PjeY.js.map +1 -0
- package/dist/chunks/{pk-checkbox-Bavq3-9C.js → pk-checkbox-CfV1uDdC.js} +3 -4
- package/dist/chunks/pk-checkbox-CfV1uDdC.js.map +1 -0
- package/dist/chunks/{pk-checkbox-select-9lqd9Rwz.js → pk-checkbox-select-DeCaI3a0.js} +3 -4
- package/dist/chunks/pk-checkbox-select-DeCaI3a0.js.map +1 -0
- package/dist/chunks/{pk-code-editor-DSG6AwLV.js → pk-code-editor-BG9sG_Fy.js} +3 -4
- package/dist/chunks/pk-code-editor-BG9sG_Fy.js.map +1 -0
- package/dist/chunks/{pk-color-input-BCCXCZMA.js → pk-color-input-CncNce1C.js} +3 -4
- package/dist/chunks/pk-color-input-CncNce1C.js.map +1 -0
- package/dist/chunks/{pk-combobox-BqaSsLJb.js → pk-combobox-Dn7UJ_CV.js} +50 -94
- package/dist/chunks/pk-combobox-Dn7UJ_CV.js.map +1 -0
- package/dist/chunks/{pk-connect.styles-DshgIW2n.js → pk-connect.styles-BhW406jt.js} +1 -1
- package/dist/chunks/{pk-connect.styles-DshgIW2n.js.map → pk-connect.styles-BhW406jt.js.map} +1 -1
- package/dist/chunks/{pk-copy-button-CfeVuQ0r.js → pk-copy-button-BVaOLtYG.js} +47 -7
- package/dist/chunks/pk-copy-button-BVaOLtYG.js.map +1 -0
- package/dist/chunks/{pk-date-picker-BM4HMb4-.js → pk-date-picker-DfIvmoZ1.js} +7 -8
- package/dist/chunks/pk-date-picker-DfIvmoZ1.js.map +1 -0
- package/dist/chunks/{pk-dialog-Ck1InIBC.js → pk-dialog-VMQqLW1f.js} +3 -4
- package/dist/chunks/pk-dialog-VMQqLW1f.js.map +1 -0
- package/dist/chunks/{pk-dropdown-item-HcIUlFH1.js → pk-dropdown-item-BZQS87U0.js} +3 -4
- package/dist/chunks/pk-dropdown-item-BZQS87U0.js.map +1 -0
- package/dist/chunks/{pk-dropdown-label-DLgrmYND.js → pk-dropdown-label-CRNWMWQd.js} +2 -3
- package/dist/chunks/{pk-dropdown-label-DLgrmYND.js.map → pk-dropdown-label-CRNWMWQd.js.map} +1 -1
- package/dist/chunks/{pk-dropdown-menu-r5wgkvmZ.js → pk-dropdown-menu-D60p2-9X.js} +5 -6
- package/dist/chunks/pk-dropdown-menu-D60p2-9X.js.map +1 -0
- package/dist/chunks/{pk-editable-table-DMHGqZlQ.js → pk-editable-table-BQ47MXpu.js} +18 -21
- package/dist/chunks/pk-editable-table-BQ47MXpu.js.map +1 -0
- package/dist/chunks/{pk-field-JFP24j4o.js → pk-field-UAlMq6mQ.js} +3 -4
- package/dist/chunks/pk-field-UAlMq6mQ.js.map +1 -0
- package/dist/chunks/{pk-form-associated-element-DmZKgNPL.js → pk-form-associated-element-CCQALRGB.js} +15 -3
- package/dist/chunks/pk-form-associated-element-CCQALRGB.js.map +1 -0
- package/dist/chunks/pk-image-browser-BXFDfch3.js +1364 -0
- package/dist/chunks/pk-image-browser-BXFDfch3.js.map +1 -0
- package/dist/chunks/{pk-input-naIRPWGC.js → pk-input-CF_icEtR.js} +77 -32
- package/dist/chunks/pk-input-CF_icEtR.js.map +1 -0
- package/dist/chunks/{pk-input-group-CGHQKrt8.js → pk-input-group-CWdoVhkH.js} +2 -3
- package/dist/chunks/pk-input-group-CWdoVhkH.js.map +1 -0
- package/dist/chunks/{pk-input-group-addon-DXbNbsfY.js → pk-input-group-addon-ClBkGmAw.js} +2 -3
- package/dist/chunks/pk-input-group-addon-ClBkGmAw.js.map +1 -0
- package/dist/chunks/{pk-input-group-button-XOfVLqGO.js → pk-input-group-button-CHQHsWd4.js} +2 -3
- package/dist/chunks/pk-input-group-button-CHQHsWd4.js.map +1 -0
- package/dist/chunks/{pk-input-group-input-CSmR5vdY.js → pk-input-group-input-oNnqMBGU.js} +2 -3
- package/dist/chunks/pk-input-group-input-oNnqMBGU.js.map +1 -0
- package/dist/chunks/{pk-input-group-text-C6ekhtff.js → pk-input-group-text-HUxlXROB.js} +2 -3
- package/dist/chunks/pk-input-group-text-HUxlXROB.js.map +1 -0
- package/dist/chunks/{pk-input-group-textarea-DALr3pdU.js → pk-input-group-textarea-Cl2FNuw-.js} +2 -3
- package/dist/chunks/pk-input-group-textarea-Cl2FNuw-.js.map +1 -0
- package/dist/chunks/{pk-lightswitch-B-rLflNq.js → pk-lightswitch-D1qEFRxK.js} +4 -5
- package/dist/chunks/pk-lightswitch-D1qEFRxK.js.map +1 -0
- package/dist/chunks/{pk-option-Cy7oOcwF.js → pk-option-DQZHV9jL.js} +4 -4
- package/dist/chunks/pk-option-DQZHV9jL.js.map +1 -0
- package/dist/chunks/{pk-option-group-BAFSIZTa.js → pk-option-group-CCzJkBFp.js} +2 -3
- package/dist/chunks/pk-option-group-CCzJkBFp.js.map +1 -0
- package/dist/chunks/{pk-popover-G3ojheBD.js → pk-popover-KSIOYlbs.js} +5 -6
- package/dist/chunks/pk-popover-KSIOYlbs.js.map +1 -0
- package/dist/chunks/{pk-popup-CgiXok-U.js → pk-popup-B9AgBC2V.js} +2 -3
- package/dist/chunks/pk-popup-B9AgBC2V.js.map +1 -0
- package/dist/chunks/{pk-radio-CDfhOW8L.js → pk-radio-B5XkMHy3.js} +2 -3
- package/dist/chunks/pk-radio-B5XkMHy3.js.map +1 -0
- package/dist/chunks/{pk-radio-group-BazmLDvl.js → pk-radio-group-ByrxGLdX.js} +4 -5
- package/dist/chunks/pk-radio-group-ByrxGLdX.js.map +1 -0
- package/dist/chunks/{pk-scroll-area-BjU7-vZX.js → pk-scroll-area-CdfNxYz8.js} +2 -3
- package/dist/chunks/pk-scroll-area-CdfNxYz8.js.map +1 -0
- package/dist/chunks/{pk-select-BeMDXEC6.js → pk-select-DQtORz-v.js} +8 -7
- package/dist/chunks/pk-select-DQtORz-v.js.map +1 -0
- package/dist/chunks/{pk-separator-CLb9n0FK.js → pk-separator-N-VyjYE6.js} +2 -3
- package/dist/chunks/pk-separator-N-VyjYE6.js.map +1 -0
- package/dist/chunks/{pk-spinner-Blxd3SIH.js → pk-spinner-DweuYJ_Z.js} +2 -3
- package/dist/chunks/{pk-spinner-Blxd3SIH.js.map → pk-spinner-DweuYJ_Z.js.map} +1 -1
- package/dist/chunks/{pk-status-7_5dEuw-.js → pk-status-BehQARDv.js} +2 -3
- package/dist/chunks/{pk-status-7_5dEuw-.js.map → pk-status-BehQARDv.js.map} +1 -1
- package/dist/chunks/{pk-tab-f1OLMVXs.js → pk-tab-CTloD18e.js} +3 -3
- package/dist/chunks/{pk-tab-f1OLMVXs.js.map → pk-tab-CTloD18e.js.map} +1 -1
- package/dist/chunks/{pk-tab-heading-79ZuLhXi.js → pk-tab-heading-Cjcgebxn.js} +2 -3
- package/dist/chunks/pk-tab-heading-Cjcgebxn.js.map +1 -0
- package/dist/chunks/{pk-tab-panel-DdAbrOBF.js → pk-tab-panel-CkKU5-Ah.js} +3 -3
- package/dist/chunks/{pk-tab-panel-DdAbrOBF.js.map → pk-tab-panel-CkKU5-Ah.js.map} +1 -1
- package/dist/chunks/{pk-tabs-BhC5PAnO.js → pk-tabs-BgEBki1q.js} +2 -3
- package/dist/chunks/{pk-tabs-BhC5PAnO.js.map → pk-tabs-BgEBki1q.js.map} +1 -1
- package/dist/chunks/{pk-textarea-BEapC8Rk.js → pk-textarea-CYM2tK88.js} +4 -5
- package/dist/chunks/pk-textarea-CYM2tK88.js.map +1 -0
- package/dist/chunks/{pk-time-picker-RlAqlho4.js → pk-time-picker-DLUBYLFo.js} +4 -5
- package/dist/chunks/{pk-time-picker-RlAqlho4.js.map → pk-time-picker-DLUBYLFo.js.map} +1 -1
- package/dist/chunks/{pk-tiptap-content-zzx3-xrD.js → pk-tiptap-content-BwkqYVJb.js} +3 -4
- package/dist/chunks/pk-tiptap-content-BwkqYVJb.js.map +1 -0
- package/dist/chunks/{pk-tiptap-editor-DpT4TYdi.js → pk-tiptap-editor-De8UUTis.js} +13 -14
- package/dist/chunks/pk-tiptap-editor-De8UUTis.js.map +1 -0
- package/dist/chunks/{pk-tiptap-input-D7xj13FY.js → pk-tiptap-input-Y9eog9Zn.js} +4 -5
- package/dist/chunks/pk-tiptap-input-Y9eog9Zn.js.map +1 -0
- package/dist/chunks/{pk-toggle-5-GKVLye.js → pk-toggle-BthhH7vl.js} +2 -3
- package/dist/chunks/{pk-toggle-5-GKVLye.js.map → pk-toggle-BthhH7vl.js.map} +1 -1
- package/dist/chunks/{pk-toggle-group-CWDwYlgR.js → pk-toggle-group-D2Quux8D.js} +2 -3
- package/dist/chunks/pk-toggle-group-D2Quux8D.js.map +1 -0
- package/dist/chunks/{pk-tooltip-DAq-JZpg.js → pk-tooltip-Cmmc0916.js} +3 -4
- package/dist/chunks/pk-tooltip-Cmmc0916.js.map +1 -0
- package/dist/chunks/{popup-content-animation.styles-Dc6d9quJ.js → popup-content-animation.styles-BnNiguJo.js} +1 -1
- package/dist/chunks/{popup-content-animation.styles-Dc6d9quJ.js.map → popup-content-animation.styles-BnNiguJo.js.map} +1 -1
- package/dist/chunks/{popup-pointer-DMnuZDQl.js → popup-pointer-CuLjk1th.js} +1 -1
- package/dist/chunks/{popup-pointer-DMnuZDQl.js.map → popup-pointer-CuLjk1th.js.map} +1 -1
- package/dist/chunks/{register-components-B-qCPFFh.js → register-components-BT9THgdh.js} +1 -1
- package/dist/chunks/{register-components-B-qCPFFh.js.map → register-components-BT9THgdh.js.map} +1 -1
- package/dist/chunks/{register-DeqrQzRS.js → register-posLyX3U.js} +50 -50
- package/dist/chunks/{register-DeqrQzRS.js.map → register-posLyX3U.js.map} +1 -1
- package/dist/chunks/{tiptap.styles-ChAfyVi9.js → tiptap.styles-CPRows--.js} +4 -3
- package/dist/chunks/tiptap.styles-CPRows--.js.map +1 -0
- package/dist/component-registry.d.ts.map +1 -1
- package/dist/components/autocomplete/index.d.ts +2 -0
- package/dist/components/autocomplete/index.d.ts.map +1 -0
- package/dist/components/autocomplete/pk-autocomplete.d.ts +150 -0
- package/dist/components/autocomplete/pk-autocomplete.d.ts.map +1 -0
- package/dist/components/autocomplete/pk-autocomplete.js +2 -0
- package/dist/components/autocomplete/pk-autocomplete.styles.d.ts +7 -0
- package/dist/components/autocomplete/pk-autocomplete.styles.d.ts.map +1 -0
- package/dist/components/autocomplete.d.ts +2 -0
- package/dist/components/autocomplete.js +2 -0
- package/dist/components/button/pk-button.d.ts +37 -1
- package/dist/components/button/pk-button.d.ts.map +1 -1
- package/dist/components/button/pk-button.js +1 -1
- package/dist/components/button-group/pk-button-group-separator.js +1 -1
- package/dist/components/button-group/pk-button-group-text.js +1 -1
- package/dist/components/button-group/pk-button-group.js +1 -1
- package/dist/components/button-group.js +3 -3
- package/dist/components/button.js +1 -1
- package/dist/components/calendar/pk-calendar.js +1 -1
- package/dist/components/calendar.js +1 -1
- package/dist/components/checkbox/pk-checkbox.js +1 -1
- package/dist/components/checkbox-select/pk-checkbox-select.js +1 -1
- package/dist/components/checkbox-select.js +1 -1
- package/dist/components/checkbox.js +1 -1
- package/dist/components/code-editor/pk-code-editor.js +1 -1
- package/dist/components/code-editor.js +1 -1
- package/dist/components/color-input/pk-color-input.js +1 -1
- package/dist/components/color-input.js +1 -1
- package/dist/components/combobox/pk-combobox.d.ts +8 -14
- package/dist/components/combobox/pk-combobox.d.ts.map +1 -1
- package/dist/components/combobox/pk-combobox.js +1 -1
- package/dist/components/combobox/pk-combobox.styles.d.ts.map +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/connect/pk-connect-oauth.js +4 -5
- package/dist/components/connect/pk-connect-oauth.js.map +1 -1
- package/dist/components/connect/pk-connect.js +5 -6
- package/dist/components/connect/pk-connect.js.map +1 -1
- package/dist/components/copy-button/pk-copy-button.d.ts +3 -0
- package/dist/components/copy-button/pk-copy-button.d.ts.map +1 -1
- package/dist/components/copy-button/pk-copy-button.js +1 -1
- package/dist/components/copy-button/pk-copy-button.styles.d.ts.map +1 -1
- package/dist/components/copy-button.js +1 -1
- package/dist/components/date-picker/pk-date-picker.js +1 -1
- package/dist/components/date-picker.js +1 -1
- package/dist/components/dialog/pk-dialog.js +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/dropdown-menu/pk-dropdown-item.js +1 -1
- package/dist/components/dropdown-menu/pk-dropdown-label.js +1 -1
- package/dist/components/dropdown-menu/pk-dropdown-menu.js +1 -1
- package/dist/components/dropdown-menu/pk-dropdown-separator.js +1 -2
- package/dist/components/dropdown-menu/pk-dropdown-separator.js.map +1 -1
- package/dist/components/dropdown-menu.js +3 -3
- package/dist/components/editable-table/editable-table-model.d.ts +4 -1
- package/dist/components/editable-table/editable-table-model.d.ts.map +1 -1
- package/dist/components/editable-table/pk-editable-table.d.ts +1 -1
- package/dist/components/editable-table/pk-editable-table.d.ts.map +1 -1
- package/dist/components/editable-table/pk-editable-table.js +1 -1
- package/dist/components/editable-table.js +1 -1
- package/dist/components/field/pk-field.js +1 -1
- package/dist/components/field.js +1 -1
- package/dist/components/icon/pk-icon.d.ts +3 -2
- package/dist/components/icon/pk-icon.d.ts.map +1 -1
- package/dist/components/icon/pk-icon.js +1 -2
- package/dist/components/icon/pk-icon.js.map +1 -1
- package/dist/components/image-browser/index.d.ts +2 -0
- package/dist/components/image-browser/index.d.ts.map +1 -0
- package/dist/components/image-browser/pk-image-browser.d.ts +190 -0
- package/dist/components/image-browser/pk-image-browser.d.ts.map +1 -0
- package/dist/components/image-browser/pk-image-browser.js +2 -0
- package/dist/components/image-browser/pk-image-browser.styles.d.ts +6 -0
- package/dist/components/image-browser/pk-image-browser.styles.d.ts.map +1 -0
- package/dist/components/image-browser.d.ts +2 -0
- package/dist/components/image-browser.js +2 -0
- package/dist/components/input/pk-input.d.ts +2 -1
- package/dist/components/input/pk-input.d.ts.map +1 -1
- package/dist/components/input/pk-input.js +1 -1
- package/dist/components/input/pk-input.styles.d.ts.map +1 -1
- package/dist/components/input-group/pk-input-group-addon.js +1 -1
- package/dist/components/input-group/pk-input-group-button.js +1 -1
- package/dist/components/input-group/pk-input-group-input.js +1 -1
- package/dist/components/input-group/pk-input-group-text.js +1 -1
- package/dist/components/input-group/pk-input-group-textarea.js +1 -1
- package/dist/components/input-group/pk-input-group.js +1 -1
- package/dist/components/input-group.js +6 -6
- package/dist/components/input.js +1 -1
- package/dist/components/lightswitch/pk-lightswitch.js +1 -1
- package/dist/components/lightswitch.js +1 -1
- package/dist/components/popover/pk-popover.js +1 -1
- package/dist/components/popover.js +1 -1
- package/dist/components/popup/pk-popup.js +1 -1
- package/dist/components/popup.js +1 -1
- package/dist/components/radio-group/pk-radio-group.js +1 -1
- package/dist/components/radio-group/pk-radio.js +1 -1
- package/dist/components/radio-group.js +2 -2
- package/dist/components/scroll-area/pk-scroll-area.js +1 -1
- package/dist/components/scroll-area.js +1 -1
- package/dist/components/select/pk-option-group.d.ts +3 -1
- package/dist/components/select/pk-option-group.d.ts.map +1 -1
- package/dist/components/select/pk-option-group.js +1 -1
- package/dist/components/select/pk-option.d.ts +10 -1
- package/dist/components/select/pk-option.d.ts.map +1 -1
- package/dist/components/select/pk-option.js +1 -1
- package/dist/components/select/pk-select.d.ts +42 -3
- package/dist/components/select/pk-select.d.ts.map +1 -1
- package/dist/components/select/pk-select.js +1 -1
- package/dist/components/select.js +3 -3
- package/dist/components/separator/pk-separator.js +1 -1
- package/dist/components/separator.js +1 -1
- package/dist/components/spinner/pk-spinner.js +1 -1
- package/dist/components/spinner.js +1 -1
- package/dist/components/status/pk-status.js +1 -1
- package/dist/components/status.js +1 -1
- package/dist/components/tabs/pk-tab-heading.js +1 -1
- package/dist/components/tabs/pk-tab-panel.js +1 -1
- package/dist/components/tabs/pk-tab.js +1 -1
- package/dist/components/tabs/pk-tabs.js +1 -1
- package/dist/components/tabs.js +4 -4
- package/dist/components/textarea/pk-textarea.js +1 -1
- package/dist/components/textarea.js +1 -1
- package/dist/components/time-picker/pk-time-picker.js +1 -1
- package/dist/components/time-picker.js +1 -1
- package/dist/components/tiptap/pk-tiptap-content.js +1 -1
- package/dist/components/tiptap/pk-tiptap-editor.js +1 -1
- package/dist/components/tiptap/pk-tiptap-input.js +1 -1
- package/dist/components/tiptap/variable-tag-node-view.d.ts.map +1 -1
- package/dist/components/tiptap-content.js +1 -1
- package/dist/components/tiptap-editor.js +1 -1
- package/dist/components/tiptap-input.js +1 -1
- package/dist/components/toggle/pk-toggle.js +1 -1
- package/dist/components/toggle-group/pk-toggle-group.js +1 -1
- package/dist/components/toggle-group.js +1 -1
- package/dist/components/toggle.js +1 -1
- package/dist/components/tooltip/pk-tooltip.js +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/connect/register-cp-connect.js +3 -3
- package/dist/decorators.d.ts +12 -0
- package/dist/decorators.d.ts.map +1 -0
- package/dist/index.js +55 -55
- package/dist/internal/sync-filtered-options.d.ts +23 -0
- package/dist/internal/sync-filtered-options.d.ts.map +1 -0
- package/dist/plugin-kit.css +2 -0
- package/dist/plugin-kit.js +2 -2
- package/dist/register-components.js +1 -1
- package/dist/register-pk.generated.d.ts +4 -0
- package/dist/register-pk.generated.d.ts.map +1 -1
- package/dist/register.js +52 -52
- package/dist/utilities/fouce.css +2 -0
- package/dist/utils/async-option-fetch.d.ts +38 -0
- package/dist/utils/async-option-fetch.d.ts.map +1 -0
- package/dist/utils/option-filter.d.ts +11 -0
- package/dist/utils/option-filter.d.ts.map +1 -0
- package/dist/utils/popup-content-exit.d.ts +6 -0
- package/dist/utils/popup-content-exit.d.ts.map +1 -0
- package/dist-loader/chunks/option-filter-Z7bomRrK.js +119 -0
- package/dist-loader/chunks/{pk-base-B21zXxSo.js → pk-base-CyzwylQ7.js} +13 -1
- package/dist-loader/chunks/{pk-button-Dh4gjLHw.js → pk-button-dngp-vOd.js} +10 -6
- package/dist-loader/chunks/{pk-calendar-n1bwSO7X.js → pk-calendar-BE4HRfCq.js} +3 -3
- package/dist-loader/chunks/{pk-checkbox-BrZQB816.js → pk-checkbox-B3d4nkBx.js} +1 -1
- package/dist-loader/chunks/{pk-color-input-sS05YOwT.js → pk-color-input-CD-r_sfG.js} +1 -1
- package/dist-loader/chunks/{pk-combobox-B7q6alzE.js → pk-combobox-DMBKXPLB.js} +48 -91
- package/dist-loader/chunks/{pk-date-picker-Dni5ty79.js → pk-date-picker-wntQmeIM.js} +5 -5
- package/dist-loader/chunks/{pk-dialog-BpPRqFMm.js → pk-dialog-B6lzsRur.js} +3 -3
- package/dist-loader/chunks/{pk-dropdown-item-CHkFNlA9.js → pk-dropdown-item-DJ5TeF1r.js} +3 -3
- package/dist-loader/chunks/{pk-dropdown-menu-BHVOMNV1.js → pk-dropdown-menu-B87bsdlI.js} +3 -3
- package/dist-loader/chunks/{pk-field-CJ09ll1S.js → pk-field-D_SNOJpl.js} +4 -4
- package/dist-loader/chunks/{pk-icon-WHUu7wxk.js → pk-icon-B5ob3JdK.js} +2 -2
- package/dist-loader/chunks/{pk-input-CEw3AdYt.js → pk-input-BhU0PiCk.js} +74 -28
- package/dist-loader/chunks/{pk-lightswitch-DJEUScgo.js → pk-lightswitch-DRxY8511.js} +1 -1
- package/dist-loader/chunks/{pk-option-CunPIei0.js → pk-option-Cc6QWw-0.js} +5 -4
- package/dist-loader/chunks/{pk-popup-FDdBxb4k.js → pk-popup-BooGjXgH.js} +1 -1
- package/dist-loader/chunks/{pk-select-CbAaQ7uE.js → pk-select-BG8qPsBd.js} +6 -4
- package/dist-loader/chunks/{pk-spinner-CIbXjDnp.js → pk-spinner-BKU9Rf2R.js} +1 -1
- package/dist-loader/chunks/{pk-status-BRIVW7EH.js → pk-status-D3ArH2ui.js} +1 -1
- package/dist-loader/chunks/{pk-textarea-C_rOUtFS.js → pk-textarea-CC7rA5A7.js} +1 -1
- package/dist-loader/chunks/{pk-time-picker-Dr3uvbvc.js → pk-time-picker-CDVFNhN7.js} +5 -5
- package/dist-loader/chunks/{pk-tooltip-HwZ0zRd2.js → pk-tooltip-BS2dNLOS.js} +2 -2
- package/dist-loader/chunks/{render-Niz5wYRa.js → render-BKfL_WRl.js} +1 -1
- package/dist-loader/chunks/{svg-_Mtb7CHx.js → svg-BiAlXtCn.js} +5 -3
- package/dist-loader/chunks/{tiptap.styles-BIRIMP7I.js → tiptap.styles-BFGP4eTV.js} +3 -2
- package/dist-loader/components/autocomplete/autocomplete.js +984 -0
- package/dist-loader/components/button/button.js +1 -1
- package/dist-loader/components/button-group/button-group-separator.js +1 -1
- package/dist-loader/components/button-group/button-group-text.js +1 -1
- package/dist-loader/components/button-group/button-group.js +1 -1
- package/dist-loader/components/calendar/calendar.js +1 -1
- package/dist-loader/components/checkbox/checkbox.js +1 -1
- package/dist-loader/components/checkbox-select/checkbox-select.js +2 -2
- package/dist-loader/components/code-editor/code-editor.js +1 -1
- package/dist-loader/components/color-input/color-input.js +1 -1
- package/dist-loader/components/combobox/combobox.js +1 -1
- package/dist-loader/components/connect/connect-oauth.js +3 -3
- package/dist-loader/components/connect/connect.js +5 -5
- package/dist-loader/components/copy-button/copy-button.js +48 -7
- package/dist-loader/components/date-picker/date-picker.js +1 -1
- package/dist-loader/components/dialog/dialog.js +1 -1
- package/dist-loader/components/dropdown-menu/dropdown-item.js +1 -1
- package/dist-loader/components/dropdown-menu/dropdown-label.js +1 -1
- package/dist-loader/components/dropdown-menu/dropdown-menu.js +1 -1
- package/dist-loader/components/dropdown-menu/dropdown-separator.js +1 -1
- package/dist-loader/components/editable-table/editable-table.js +18 -20
- package/dist-loader/components/field/field.js +1 -1
- package/dist-loader/components/icon/icon.js +2 -2
- package/dist-loader/components/image-browser/image-browser.js +1356 -0
- package/dist-loader/components/input/input.js +1 -1
- package/dist-loader/components/input-group/input-group-addon.js +1 -1
- package/dist-loader/components/input-group/input-group-button.js +1 -1
- package/dist-loader/components/input-group/input-group-input.js +1 -1
- package/dist-loader/components/input-group/input-group-text.js +1 -1
- package/dist-loader/components/input-group/input-group-textarea.js +1 -1
- package/dist-loader/components/input-group/input-group.js +1 -1
- package/dist-loader/components/lightswitch/lightswitch.js +1 -1
- package/dist-loader/components/popover/popover.js +2 -2
- package/dist-loader/components/popup/popup.js +1 -1
- package/dist-loader/components/radio-group/radio-group.js +1 -1
- package/dist-loader/components/radio-group/radio.js +1 -1
- package/dist-loader/components/scroll-area/scroll-area.js +1 -1
- package/dist-loader/components/select/option-group.js +1 -1
- package/dist-loader/components/select/option.js +1 -1
- package/dist-loader/components/select/select.js +1 -1
- package/dist-loader/components/separator/separator.js +1 -1
- package/dist-loader/components/spinner/spinner.js +1 -1
- package/dist-loader/components/status/status.js +1 -1
- package/dist-loader/components/tabs/tab-heading.js +1 -1
- package/dist-loader/components/tabs/tab-panel.js +1 -1
- package/dist-loader/components/tabs/tab.js +1 -1
- package/dist-loader/components/tabs/tabs.js +1 -1
- package/dist-loader/components/textarea/textarea.js +1 -1
- package/dist-loader/components/time-picker/time-picker.js +1 -1
- package/dist-loader/components/tiptap/tiptap-content.js +2 -2
- package/dist-loader/components/tiptap/tiptap-editor.js +13 -13
- package/dist-loader/components/tiptap/tiptap-input.js +2 -2
- package/dist-loader/components/toggle/toggle.js +1 -1
- package/dist-loader/components/toggle-group/toggle-group.js +1 -1
- package/dist-loader/components/tooltip/tooltip.js +1 -1
- package/dist-loader/plugin-kit.css +2 -0
- package/dist-loader/plugin-kit.loader.js +4 -0
- package/dist-loader/utilities/fouce.css +2 -0
- package/package.json +53 -9
- package/dist/chunks/component-registry-CNB8PbP_.js.map +0 -1
- package/dist/chunks/decorate-W02hmVTt.js.map +0 -1
- package/dist/chunks/pk-button-group-D9hqSfb_.js.map +0 -1
- package/dist/chunks/pk-button-group-separator-DG0CYaqc.js.map +0 -1
- package/dist/chunks/pk-calendar-CoUil0F7.js.map +0 -1
- package/dist/chunks/pk-checkbox-Bavq3-9C.js.map +0 -1
- package/dist/chunks/pk-checkbox-select-9lqd9Rwz.js.map +0 -1
- package/dist/chunks/pk-code-editor-DSG6AwLV.js.map +0 -1
- package/dist/chunks/pk-color-input-BCCXCZMA.js.map +0 -1
- package/dist/chunks/pk-combobox-BqaSsLJb.js.map +0 -1
- package/dist/chunks/pk-copy-button-CfeVuQ0r.js.map +0 -1
- package/dist/chunks/pk-date-picker-BM4HMb4-.js.map +0 -1
- package/dist/chunks/pk-dialog-Ck1InIBC.js.map +0 -1
- package/dist/chunks/pk-dropdown-item-HcIUlFH1.js.map +0 -1
- package/dist/chunks/pk-dropdown-menu-r5wgkvmZ.js.map +0 -1
- package/dist/chunks/pk-editable-table-DMHGqZlQ.js.map +0 -1
- package/dist/chunks/pk-field-JFP24j4o.js.map +0 -1
- package/dist/chunks/pk-form-associated-element-DmZKgNPL.js.map +0 -1
- package/dist/chunks/pk-input-group-CGHQKrt8.js.map +0 -1
- package/dist/chunks/pk-input-group-addon-DXbNbsfY.js.map +0 -1
- package/dist/chunks/pk-input-group-button-XOfVLqGO.js.map +0 -1
- package/dist/chunks/pk-input-group-input-CSmR5vdY.js.map +0 -1
- package/dist/chunks/pk-input-group-text-C6ekhtff.js.map +0 -1
- package/dist/chunks/pk-input-group-textarea-DALr3pdU.js.map +0 -1
- package/dist/chunks/pk-input-naIRPWGC.js.map +0 -1
- package/dist/chunks/pk-lightswitch-B-rLflNq.js.map +0 -1
- package/dist/chunks/pk-option-Cy7oOcwF.js.map +0 -1
- package/dist/chunks/pk-option-group-BAFSIZTa.js.map +0 -1
- package/dist/chunks/pk-popover-G3ojheBD.js.map +0 -1
- package/dist/chunks/pk-popup-CgiXok-U.js.map +0 -1
- package/dist/chunks/pk-radio-CDfhOW8L.js.map +0 -1
- package/dist/chunks/pk-radio-group-BazmLDvl.js.map +0 -1
- package/dist/chunks/pk-scroll-area-BjU7-vZX.js.map +0 -1
- package/dist/chunks/pk-select-BeMDXEC6.js.map +0 -1
- package/dist/chunks/pk-separator-CLb9n0FK.js.map +0 -1
- package/dist/chunks/pk-tab-heading-79ZuLhXi.js.map +0 -1
- package/dist/chunks/pk-textarea-BEapC8Rk.js.map +0 -1
- package/dist/chunks/pk-tiptap-content-zzx3-xrD.js.map +0 -1
- package/dist/chunks/pk-tiptap-editor-DpT4TYdi.js.map +0 -1
- package/dist/chunks/pk-tiptap-input-D7xj13FY.js.map +0 -1
- package/dist/chunks/pk-toggle-group-CWDwYlgR.js.map +0 -1
- package/dist/chunks/pk-tooltip-DAq-JZpg.js.map +0 -1
- package/dist/chunks/tiptap.styles-ChAfyVi9.js.map +0 -1
|
@@ -2,7 +2,15 @@ import { PropertyValues } from 'lit';
|
|
|
2
2
|
import { PkValidator } from '../validators/index.js';
|
|
3
3
|
import { PkElement } from './pk-element.js';
|
|
4
4
|
/**
|
|
5
|
-
* Form-associated custom element base —
|
|
5
|
+
* Form-associated custom element base — ElementInternals + shared validity helpers.
|
|
6
|
+
*
|
|
7
|
+
* @cssstate disabled - The control is disabled.
|
|
8
|
+
* @cssstate required - The control is required.
|
|
9
|
+
* @cssstate optional - The control is not required.
|
|
10
|
+
* @cssstate invalid - The control currently fails constraint validation.
|
|
11
|
+
* @cssstate valid - The control currently passes constraint validation.
|
|
12
|
+
* @cssstate user-invalid - Invalid after the user has interacted with the control.
|
|
13
|
+
* @cssstate user-valid - Valid after the user has interacted with the control.
|
|
6
14
|
*/
|
|
7
15
|
export declare abstract class PkFormAssociatedElement extends PkElement {
|
|
8
16
|
static formAssociated: boolean;
|
|
@@ -14,9 +22,13 @@ export declare abstract class PkFormAssociatedElement extends PkElement {
|
|
|
14
22
|
/** Events that must all fire before `:user-invalid` applies — override per component. */
|
|
15
23
|
assumeInteractionOn: string[];
|
|
16
24
|
validators: PkValidator[];
|
|
25
|
+
/** Name submitted with form data. */
|
|
17
26
|
name: string | null;
|
|
27
|
+
/** Disables the control and excludes it from constraint validation. */
|
|
18
28
|
disabled: boolean;
|
|
29
|
+
/** Marks the control as required for form submission. */
|
|
19
30
|
required: boolean;
|
|
31
|
+
/** Custom validation message; also settable via `setCustomValidity()`. */
|
|
20
32
|
customError: string | null;
|
|
21
33
|
valueHasChanged: boolean;
|
|
22
34
|
hasInteracted: boolean;
|
|
@@ -43,9 +55,13 @@ export declare abstract class PkFormAssociatedElement extends PkElement {
|
|
|
43
55
|
get willValidate(): boolean;
|
|
44
56
|
get validationMessage(): string;
|
|
45
57
|
getForm(): HTMLFormElement | null;
|
|
58
|
+
/** Runs constraint validation without showing the browser UI. */
|
|
46
59
|
checkValidity(): boolean;
|
|
60
|
+
/** Runs constraint validation and shows the browser UI when invalid. */
|
|
47
61
|
reportValidity(): boolean;
|
|
62
|
+
/** Clears custom errors and re-syncs validity state. */
|
|
48
63
|
resetValidity(): void;
|
|
64
|
+
/** Sets or clears a custom validation message. */
|
|
49
65
|
setCustomValidity(message: string): void;
|
|
50
66
|
protected get validationTarget(): HTMLElement | undefined;
|
|
51
67
|
protected get allValidators(): PkValidator[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pk-form-associated-element.d.ts","sourceRoot":"","sources":["../../src/base/pk-form-associated-element.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAK1C,OAAO,EAAwB,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C
|
|
1
|
+
{"version":3,"file":"pk-form-associated-element.d.ts","sourceRoot":"","sources":["../../src/base/pk-form-associated-element.ts"],"names":[],"mappings":"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"}
|
package/dist/chunks/{animate-with-class-ZJeCOKB3.js.map → animate-with-class-CsDwYnXL.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animate-with-class-
|
|
1
|
+
{"version":3,"file":"animate-with-class-CsDwYnXL.js","names":[],"sources":["../../src/utils/animate-with-class.ts"],"sourcesContent":["/**\n * Run a CSS animation class on an element and resolve when it finishes.\n * Resolves on animationend/cancel, immediately when no CSS animation runs, or on timeout\n * so overlay hide can never hang forever (stuck `active` / missing `after-hide`).\n */\nexport function animateWithClass(el: HTMLElement, className: string, timeoutMs = 500): Promise<void> {\n return new Promise((resolve) => {\n const controller = new AbortController();\n const { signal } = controller;\n\n if (el.classList.contains(className)) {\n resolve();\n return;\n }\n\n el.classList.add(className);\n\n let resolved = false;\n\n const onEnd = (): void => {\n if (resolved) {\n return;\n }\n\n resolved = true;\n el.classList.remove(className);\n window.clearTimeout(timeoutId);\n resolve();\n controller.abort();\n };\n\n el.addEventListener('animationend', onEnd, { once: true, signal });\n el.addEventListener('animationcancel', onEnd, { once: true, signal });\n\n // If the browser reports running animations that never end (interrupted reverse\n // animations, display:none mid-flight), still settle so overlays can demote.\n const timeoutId = window.setTimeout(onEnd, timeoutMs);\n\n requestAnimationFrame(() => {\n if (!resolved && el.getAnimations().length === 0) {\n onEnd();\n }\n });\n });\n}\n"],"mappings":";;;;;;AAKA,SAAgB,iBAAiB,IAAiB,WAAmB,YAAY,KAAoB;AACjG,QAAO,IAAI,SAAS,YAAY;EAC5B,MAAM,aAAa,IAAI,iBAAiB;EACxC,MAAM,EAAE,WAAW;AAEnB,MAAI,GAAG,UAAU,SAAS,UAAU,EAAE;AAClC,YAAS;AACT;;AAGJ,KAAG,UAAU,IAAI,UAAU;EAE3B,IAAI,WAAW;EAEf,MAAM,cAAoB;AACtB,OAAI,SACA;AAGJ,cAAW;AACX,MAAG,UAAU,OAAO,UAAU;AAC9B,UAAO,aAAa,UAAU;AAC9B,YAAS;AACT,cAAW,OAAO;;AAGtB,KAAG,iBAAiB,gBAAgB,OAAO;GAAE,MAAM;GAAM;GAAQ,CAAC;AAClE,KAAG,iBAAiB,mBAAmB,OAAO;GAAE,MAAM;GAAM;GAAQ,CAAC;EAIrE,MAAM,YAAY,OAAO,WAAW,OAAO,UAAU;AAErD,8BAA4B;AACxB,OAAI,CAAC,YAAY,GAAG,eAAe,CAAC,WAAW,EAC3C,QAAO;IAEb;GACJ"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as SUPPORTS_POPOVER } from "./supports-popover-CUBsbHpS.js";
|
|
2
|
-
import { n as COMPONENT_MODULE_PATHS } from "./component-registry-
|
|
2
|
+
import { n as COMPONENT_MODULE_PATHS } from "./component-registry-D34fm8xW.js";
|
|
3
3
|
//#endregion
|
|
4
4
|
//#region src/utils/portal.ts
|
|
5
5
|
var defaultPortalClassName;
|
|
@@ -155,4 +155,4 @@ var DISCOVERY_COMPLETE_EVENT = DISCOVERY_EVENT;
|
|
|
155
155
|
//#endregion
|
|
156
156
|
export { setPortalClassName as _, startLoader as a, setBasePath as c, getPortalClassName as d, getPortalContainer as f, resolvePositionMethod as g, getShadowRootSelectors as h, preventTurboFouce as i, allDefined as l, getPortalTargetForAppend as m, FOUCE_TIMEOUT_MS as n, stopLoader as o, getPortalMountElement as p, discover as r, getBasePath as s, DISCOVERY_COMPLETE_EVENT as t, configurePluginKitWeb as u, setPortalContainer as v, setShadowRootSelectors as y };
|
|
157
157
|
|
|
158
|
-
//# sourceMappingURL=autoloader-
|
|
158
|
+
//# sourceMappingURL=autoloader-dJO3tYOX.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoloader-DPX9YYZs.js","names":[],"sources":["../../src/utils/documentScrollStability.ts","../../src/utils/portal.ts","../../src/utils/config.ts","../../src/utilities/defined.ts","../../src/utilities/base-path.ts","../../src/utilities/autoloader.ts"],"sourcesContent":["/**\n * @deprecated No-op. Permanent `html { scrollbar-gutter: stable }` was removed —\n * it reserved an empty scrollbar strip on every Craft CP page. Overlay scroll lock\n * compensates only while locked (see a11y/scroll-lock.ts).\n */\nexport const ensureDocumentScrollStability = (): void => {\n // Intentionally empty — kept so older configurePluginKitWeb call sites stay safe.\n};\n","import { SUPPORTS_POPOVER } from './supports-popover.js';\n\nexport type PortalContainer = HTMLElement | ShadowRoot | null;\n\nlet defaultPortalClassName: string | undefined;\nlet defaultPortalContainer: PortalContainer | undefined;\nlet defaultShadowRootSelectors: string[] = ['[data-plugin-kit-shadow-root]'];\n\nexport const setPortalClassName = (className: string): void => {\n defaultPortalClassName = className.trim() || undefined;\n};\n\nexport const getPortalClassName = (className?: string): string | undefined => {\n return (className ?? defaultPortalClassName)?.trim() || undefined;\n};\n\nexport const setPortalContainer = (container: PortalContainer): void => {\n defaultPortalContainer = container;\n};\n\nexport const getPortalContainer = (container?: PortalContainer): PortalContainer | undefined => {\n return container ?? defaultPortalContainer;\n};\n\nexport const setShadowRootSelectors = (selectors: string[]): void => {\n const normalizedSelectors = (selectors || [])\n .map((selector) => selector.trim())\n .filter(Boolean);\n\n defaultShadowRootSelectors = normalizedSelectors.length > 0\n ? normalizedSelectors\n : ['[data-plugin-kit-shadow-root]'];\n};\n\nexport const getShadowRootSelectors = (): string[] => {\n return defaultShadowRootSelectors;\n};\n\n/**\n * Returns an HTMLElement suitable for appendChild — mirrors React `getPortalTargetForAppend`.\n * When the portal container is a ShadowRoot, prefers a dedicated mount node inside it.\n */\nexport function getPortalTargetForAppend(container?: PortalContainer): HTMLElement | undefined {\n const resolved = getPortalContainer(container);\n\n if (!resolved) {\n return undefined;\n }\n\n if (resolved instanceof HTMLElement) {\n return resolved;\n }\n\n const shadowRoot = resolved;\n\n const target = getShadowRootSelectors()\n .map((selector) => shadowRoot.querySelector<HTMLElement>(selector))\n .find((node) => Boolean(node));\n\n if (target) {\n return target;\n }\n\n return shadowRoot.host instanceof HTMLElement ? shadowRoot.host : undefined;\n}\n\n/** Resolves where floating popup layers should mount. Falls back to `document.body`. */\nexport function getPortalMountElement(container?: PortalContainer): HTMLElement {\n return getPortalTargetForAppend(container) ?? document.body;\n}\n\nexport function resolvePositionMethod(\n positionMethod: 'fixed' | 'absolute' | undefined,\n container?: PortalContainer,\n): 'fixed' | 'absolute' {\n if (positionMethod) {\n return positionMethod;\n }\n\n if (SUPPORTS_POPOVER) {\n return 'absolute';\n }\n\n const resolved = getPortalContainer(container);\n\n if (resolved instanceof ShadowRoot) {\n return 'fixed';\n }\n\n return 'absolute';\n}\n","import { ensureDocumentScrollStability } from './documentScrollStability.js';\nimport {\n setShadowRootSelectors,\n type PortalContainer,\n} from './portal.js';\n\nexport type PluginKitWebConfig = {\n /**\n * @deprecated Popups use the Popover API top layer — not DOM reparenting. Ignored if set.\n */\n portalClassName?: string;\n /**\n * When a `ShadowRoot`, used as a React portal target for Base UI compat.\n * No longer injects document scroll-gutter CSS (see scroll-lock.ts).\n */\n portalContainer?: PortalContainer;\n shadowRootSelectors?: string[];\n};\n\nexport const configurePluginKitWeb = (config: PluginKitWebConfig): void => {\n if (config.portalContainer instanceof ShadowRoot) {\n // Historically forced `html { scrollbar-gutter: stable }`; that is a no-op now.\n ensureDocumentScrollStability();\n }\n\n if (config.shadowRootSelectors) {\n setShadowRootSelectors(config.shadowRootSelectors);\n }\n};\n","export type AllDefinedOptions = {\n /**\n * Accepts a custom element tag name and returns `true` if the element should be awaited.\n * Tag names are always lowercase.\n */\n match?: (tagName: string) => boolean;\n /** Additional tag names to await that may not be in the DOM yet. */\n additionalElements?: string | string[];\n /** Root to search within. Defaults to `document`. Shadow roots are not traversed. */\n root?: Document | ShadowRoot;\n};\n\n/**\n * Waits for custom elements on the page to be registered before resolving.\n * By default, waits for all undefined `pk-*` elements.\n */\nexport async function allDefined(options: AllDefinedOptions = {}): Promise<void> {\n const opts = {\n match: (tagName: string) => tagName.startsWith('pk-'),\n additionalElements: [] as string[],\n root: document,\n ...options,\n };\n\n const additionalElements = Array.isArray(opts.additionalElements)\n ? opts.additionalElements\n : [opts.additionalElements];\n\n const undefinedElements = [...opts.root.querySelectorAll(':not(:defined)')]\n .map((el) => el.localName)\n .filter((tag, index, arr) => arr.indexOf(tag) === index)\n .filter((tag) => opts.match(tag));\n\n const tagsToAwait = [...undefinedElements, ...additionalElements];\n await Promise.all(tagsToAwait.map((tag) => customElements.whenDefined(tag)));\n await new Promise(requestAnimationFrame);\n}\n","let basePath = '';\n\nexport function setBasePath(path: string): void {\n basePath = path;\n}\n\nexport function getBasePath(subpath = ''): string {\n if (!basePath) {\n const el = document.querySelector('[data-plugin-kit]');\n\n if (el?.hasAttribute('data-plugin-kit')) {\n const rootRelativeUrl = new URL(el.getAttribute('data-plugin-kit') ?? '', window.location.href).pathname;\n setBasePath(rootRelativeUrl);\n } else {\n const scripts = [...document.getElementsByTagName('script')];\n const pkScript = scripts.find(\n (script) =>\n script.src.endsWith('plugin-kit.js') || script.src.endsWith('plugin-kit.loader.js'),\n );\n\n if (pkScript) {\n const path = String(pkScript.getAttribute('src'));\n setBasePath(path.split('/').slice(0, -1).join('/'));\n }\n }\n }\n\n return basePath.replace(/\\/$/, '') + (subpath ? `/${subpath.replace(/^\\//, '')}` : '');\n}\n","import { COMPONENT_MODULE_PATHS } from '../component-registry.js';\nimport { getBasePath } from './base-path.js';\n\nconst PK_PREFIX = 'pk-';\nconst DISCOVERY_EVENT = 'pk-discovery-complete';\n\nconst observer = new MutationObserver((mutations) => {\n for (const { addedNodes } of mutations) {\n for (const node of addedNodes) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n void discover(node as Element);\n }\n }\n }\n});\n\nexport function startLoader(): void {\n void discover(document.documentElement);\n observer.observe(document.documentElement, { subtree: true, childList: true });\n}\n\nexport function stopLoader(): void {\n observer.disconnect();\n}\n\nexport async function discover(root: Document | Element = document): Promise<void> {\n const rootTagName = root instanceof Element ? root.tagName.toLowerCase() : '';\n const rootIsPluginKitComponent = rootTagName.startsWith(PK_PREFIX);\n const tags = [...root.querySelectorAll(':not(:defined)')]\n .map((el) => el.tagName.toLowerCase())\n .filter((tag) => tag.startsWith(PK_PREFIX));\n\n if (rootIsPluginKitComponent && !customElements.get(rootTagName)) {\n tags.push(rootTagName);\n }\n\n const preloadSelectors = root.querySelectorAll('[data-pk-preload]');\n const preloadRoots =\n root instanceof Element && root.hasAttribute('data-pk-preload')\n ? [root, ...preloadSelectors]\n : preloadSelectors;\n\n for (const el of preloadRoots) {\n tags.push(\n ...el\n .getAttribute('data-pk-preload')!\n .split(/\\s+/)\n .filter((tag) => tag.startsWith(PK_PREFIX)),\n );\n }\n\n const tagsToRegister = [...new Set(tags)];\n const imports = await Promise.allSettled(tagsToRegister.map((tagName) => register(tagName)));\n\n for (const imp of imports) {\n if (imp.status === 'rejected') {\n console.warn(imp.reason);\n }\n }\n\n await new Promise(requestAnimationFrame);\n\n root.dispatchEvent(\n new CustomEvent(DISCOVERY_EVENT, {\n bubbles: false,\n cancelable: false,\n composed: true,\n }),\n );\n}\n\nfunction register(tagName: string): Promise<void> {\n if (customElements.get(tagName)) {\n return Promise.resolve();\n }\n\n const modulePath = COMPONENT_MODULE_PATHS[tagName];\n\n if (!modulePath) {\n return Promise.reject(new Error(`Unable to autoload <${tagName}> — no module path registered`));\n }\n\n const path = getBasePath(modulePath);\n\n return import(/* @vite-ignore */ path).then(() => undefined);\n}\n\nlet turboTimeout = 2000;\n\n/** Prevent FOUCE when navigating with Turbo (Hotwire). */\nexport function preventTurboFouce(timeout = 2000): void {\n turboTimeout = timeout;\n document.addEventListener('turbo:before-render', handleTurboRender);\n}\n\nasync function handleTurboRender(event: Event): Promise<void> {\n const turboEvent = event as CustomEvent<{ newBody: Element; resume: () => void }>;\n const newBody = turboEvent.detail.newBody;\n\n turboEvent.preventDefault();\n\n try {\n await Promise.race([\n discover(newBody),\n new Promise<void>((resolve) => setTimeout(resolve, turboTimeout)),\n ]);\n } finally {\n turboEvent.detail.resume();\n }\n}\n\nexport const FOUCE_TIMEOUT_MS = 2000;\nexport const DISCOVERY_COMPLETE_EVENT = DISCOVERY_EVENT;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"autoloader-dJO3tYOX.js","names":[],"sources":["../../src/utils/documentScrollStability.ts","../../src/utils/portal.ts","../../src/utils/config.ts","../../src/utilities/defined.ts","../../src/utilities/base-path.ts","../../src/utilities/autoloader.ts"],"sourcesContent":["/**\n * @deprecated No-op. Permanent `html { scrollbar-gutter: stable }` was removed —\n * it reserved an empty scrollbar strip on every Craft CP page. Overlay scroll lock\n * compensates only while locked (see a11y/scroll-lock.ts).\n */\nexport const ensureDocumentScrollStability = (): void => {\n // Intentionally empty — kept so older configurePluginKitWeb call sites stay safe.\n};\n","import { SUPPORTS_POPOVER } from './supports-popover.js';\n\nexport type PortalContainer = HTMLElement | ShadowRoot | null;\n\nlet defaultPortalClassName: string | undefined;\nlet defaultPortalContainer: PortalContainer | undefined;\nlet defaultShadowRootSelectors: string[] = ['[data-plugin-kit-shadow-root]'];\n\nexport const setPortalClassName = (className: string): void => {\n defaultPortalClassName = className.trim() || undefined;\n};\n\nexport const getPortalClassName = (className?: string): string | undefined => {\n return (className ?? defaultPortalClassName)?.trim() || undefined;\n};\n\nexport const setPortalContainer = (container: PortalContainer): void => {\n defaultPortalContainer = container;\n};\n\nexport const getPortalContainer = (container?: PortalContainer): PortalContainer | undefined => {\n return container ?? defaultPortalContainer;\n};\n\nexport const setShadowRootSelectors = (selectors: string[]): void => {\n const normalizedSelectors = (selectors || [])\n .map((selector) => selector.trim())\n .filter(Boolean);\n\n defaultShadowRootSelectors = normalizedSelectors.length > 0\n ? normalizedSelectors\n : ['[data-plugin-kit-shadow-root]'];\n};\n\nexport const getShadowRootSelectors = (): string[] => {\n return defaultShadowRootSelectors;\n};\n\n/**\n * Returns an HTMLElement suitable for appendChild — mirrors React `getPortalTargetForAppend`.\n * When the portal container is a ShadowRoot, prefers a dedicated mount node inside it.\n */\nexport function getPortalTargetForAppend(container?: PortalContainer): HTMLElement | undefined {\n const resolved = getPortalContainer(container);\n\n if (!resolved) {\n return undefined;\n }\n\n if (resolved instanceof HTMLElement) {\n return resolved;\n }\n\n const shadowRoot = resolved;\n\n const target = getShadowRootSelectors()\n .map((selector) => shadowRoot.querySelector<HTMLElement>(selector))\n .find((node) => Boolean(node));\n\n if (target) {\n return target;\n }\n\n return shadowRoot.host instanceof HTMLElement ? shadowRoot.host : undefined;\n}\n\n/** Resolves where floating popup layers should mount. Falls back to `document.body`. */\nexport function getPortalMountElement(container?: PortalContainer): HTMLElement {\n return getPortalTargetForAppend(container) ?? document.body;\n}\n\nexport function resolvePositionMethod(\n positionMethod: 'fixed' | 'absolute' | undefined,\n container?: PortalContainer,\n): 'fixed' | 'absolute' {\n if (positionMethod) {\n return positionMethod;\n }\n\n if (SUPPORTS_POPOVER) {\n return 'absolute';\n }\n\n const resolved = getPortalContainer(container);\n\n if (resolved instanceof ShadowRoot) {\n return 'fixed';\n }\n\n return 'absolute';\n}\n","import { ensureDocumentScrollStability } from './documentScrollStability.js';\nimport {\n setShadowRootSelectors,\n type PortalContainer,\n} from './portal.js';\n\nexport type PluginKitWebConfig = {\n /**\n * @deprecated Popups use the Popover API top layer — not DOM reparenting. Ignored if set.\n */\n portalClassName?: string;\n /**\n * When a `ShadowRoot`, used as a React portal target for Base UI compat.\n * No longer injects document scroll-gutter CSS (see scroll-lock.ts).\n */\n portalContainer?: PortalContainer;\n shadowRootSelectors?: string[];\n};\n\nexport const configurePluginKitWeb = (config: PluginKitWebConfig): void => {\n if (config.portalContainer instanceof ShadowRoot) {\n // Historically forced `html { scrollbar-gutter: stable }`; that is a no-op now.\n ensureDocumentScrollStability();\n }\n\n if (config.shadowRootSelectors) {\n setShadowRootSelectors(config.shadowRootSelectors);\n }\n};\n","export type AllDefinedOptions = {\n /**\n * Accepts a custom element tag name and returns `true` if the element should be awaited.\n * Tag names are always lowercase.\n */\n match?: (tagName: string) => boolean;\n /** Additional tag names to await that may not be in the DOM yet. */\n additionalElements?: string | string[];\n /** Root to search within. Defaults to `document`. Shadow roots are not traversed. */\n root?: Document | ShadowRoot;\n};\n\n/**\n * Waits for custom elements on the page to be registered before resolving.\n * By default, waits for all undefined `pk-*` elements.\n */\nexport async function allDefined(options: AllDefinedOptions = {}): Promise<void> {\n const opts = {\n match: (tagName: string) => tagName.startsWith('pk-'),\n additionalElements: [] as string[],\n root: document,\n ...options,\n };\n\n const additionalElements = Array.isArray(opts.additionalElements)\n ? opts.additionalElements\n : [opts.additionalElements];\n\n const undefinedElements = [...opts.root.querySelectorAll(':not(:defined)')]\n .map((el) => el.localName)\n .filter((tag, index, arr) => arr.indexOf(tag) === index)\n .filter((tag) => opts.match(tag));\n\n const tagsToAwait = [...undefinedElements, ...additionalElements];\n await Promise.all(tagsToAwait.map((tag) => customElements.whenDefined(tag)));\n await new Promise(requestAnimationFrame);\n}\n","let basePath = '';\n\nexport function setBasePath(path: string): void {\n basePath = path;\n}\n\nexport function getBasePath(subpath = ''): string {\n if (!basePath) {\n const el = document.querySelector('[data-plugin-kit]');\n\n if (el?.hasAttribute('data-plugin-kit')) {\n const rootRelativeUrl = new URL(el.getAttribute('data-plugin-kit') ?? '', window.location.href).pathname;\n setBasePath(rootRelativeUrl);\n } else {\n const scripts = [...document.getElementsByTagName('script')];\n const pkScript = scripts.find(\n (script) =>\n script.src.endsWith('plugin-kit.js') || script.src.endsWith('plugin-kit.loader.js'),\n );\n\n if (pkScript) {\n const path = String(pkScript.getAttribute('src'));\n setBasePath(path.split('/').slice(0, -1).join('/'));\n }\n }\n }\n\n return basePath.replace(/\\/$/, '') + (subpath ? `/${subpath.replace(/^\\//, '')}` : '');\n}\n","import { COMPONENT_MODULE_PATHS } from '../component-registry.js';\nimport { getBasePath } from './base-path.js';\n\nconst PK_PREFIX = 'pk-';\nconst DISCOVERY_EVENT = 'pk-discovery-complete';\n\nconst observer = new MutationObserver((mutations) => {\n for (const { addedNodes } of mutations) {\n for (const node of addedNodes) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n void discover(node as Element);\n }\n }\n }\n});\n\nexport function startLoader(): void {\n void discover(document.documentElement);\n observer.observe(document.documentElement, { subtree: true, childList: true });\n}\n\nexport function stopLoader(): void {\n observer.disconnect();\n}\n\nexport async function discover(root: Document | Element = document): Promise<void> {\n const rootTagName = root instanceof Element ? root.tagName.toLowerCase() : '';\n const rootIsPluginKitComponent = rootTagName.startsWith(PK_PREFIX);\n const tags = [...root.querySelectorAll(':not(:defined)')]\n .map((el) => el.tagName.toLowerCase())\n .filter((tag) => tag.startsWith(PK_PREFIX));\n\n if (rootIsPluginKitComponent && !customElements.get(rootTagName)) {\n tags.push(rootTagName);\n }\n\n const preloadSelectors = root.querySelectorAll('[data-pk-preload]');\n const preloadRoots =\n root instanceof Element && root.hasAttribute('data-pk-preload')\n ? [root, ...preloadSelectors]\n : preloadSelectors;\n\n for (const el of preloadRoots) {\n tags.push(\n ...el\n .getAttribute('data-pk-preload')!\n .split(/\\s+/)\n .filter((tag) => tag.startsWith(PK_PREFIX)),\n );\n }\n\n const tagsToRegister = [...new Set(tags)];\n const imports = await Promise.allSettled(tagsToRegister.map((tagName) => register(tagName)));\n\n for (const imp of imports) {\n if (imp.status === 'rejected') {\n console.warn(imp.reason);\n }\n }\n\n await new Promise(requestAnimationFrame);\n\n root.dispatchEvent(\n new CustomEvent(DISCOVERY_EVENT, {\n bubbles: false,\n cancelable: false,\n composed: true,\n }),\n );\n}\n\nfunction register(tagName: string): Promise<void> {\n if (customElements.get(tagName)) {\n return Promise.resolve();\n }\n\n const modulePath = COMPONENT_MODULE_PATHS[tagName];\n\n if (!modulePath) {\n return Promise.reject(new Error(`Unable to autoload <${tagName}> — no module path registered`));\n }\n\n const path = getBasePath(modulePath);\n\n return import(/* @vite-ignore */ path).then(() => undefined);\n}\n\nlet turboTimeout = 2000;\n\n/** Prevent FOUCE when navigating with Turbo (Hotwire). */\nexport function preventTurboFouce(timeout = 2000): void {\n turboTimeout = timeout;\n document.addEventListener('turbo:before-render', handleTurboRender);\n}\n\nasync function handleTurboRender(event: Event): Promise<void> {\n const turboEvent = event as CustomEvent<{ newBody: Element; resume: () => void }>;\n const newBody = turboEvent.detail.newBody;\n\n turboEvent.preventDefault();\n\n try {\n await Promise.race([\n discover(newBody),\n new Promise<void>((resolve) => setTimeout(resolve, turboTimeout)),\n ]);\n } finally {\n turboEvent.detail.resume();\n }\n}\n\nexport const FOUCE_TIMEOUT_MS = 2000;\nexport const DISCOVERY_COMPLETE_EVENT = DISCOVERY_EVENT;\n"],"mappings":"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"}
|
|
@@ -52,6 +52,8 @@ var COMPONENT_MODULE_PATHS = {
|
|
|
52
52
|
"pk-calendar": "components/calendar/calendar.js",
|
|
53
53
|
"pk-date-picker": "components/date-picker/date-picker.js",
|
|
54
54
|
"pk-combobox": "components/combobox/combobox.js",
|
|
55
|
+
"pk-autocomplete": "components/autocomplete/autocomplete.js",
|
|
56
|
+
"pk-image-browser": "components/image-browser/image-browser.js",
|
|
55
57
|
"pk-time-picker": "components/time-picker/time-picker.js",
|
|
56
58
|
"pk-copy-button": "components/copy-button/copy-button.js",
|
|
57
59
|
"pk-connect": "components/connect/connect.js",
|
|
@@ -108,6 +110,8 @@ var LOADER_COMPONENT_ENTRIES = {
|
|
|
108
110
|
"components/calendar/calendar": "src/components/calendar/pk-calendar.ts",
|
|
109
111
|
"components/date-picker/date-picker": "src/components/date-picker/pk-date-picker.ts",
|
|
110
112
|
"components/combobox/combobox": "src/components/combobox/pk-combobox.ts",
|
|
113
|
+
"components/autocomplete/autocomplete": "src/components/autocomplete/pk-autocomplete.ts",
|
|
114
|
+
"components/image-browser/image-browser": "src/components/image-browser/pk-image-browser.ts",
|
|
111
115
|
"components/time-picker/time-picker": "src/components/time-picker/pk-time-picker.ts",
|
|
112
116
|
"components/copy-button/copy-button": "src/components/copy-button/pk-copy-button.ts",
|
|
113
117
|
"components/connect/connect": "src/components/connect/pk-connect.ts",
|
|
@@ -131,4 +135,4 @@ var BUNDLER_TAG_IMPORT_PATHS = Object.fromEntries(Object.keys(BUNDLER_COMPONENT_
|
|
|
131
135
|
//#endregion
|
|
132
136
|
export { COMPONENT_MODULE_PATHS as n, BUNDLER_TAG_IMPORT_PATHS as t };
|
|
133
137
|
|
|
134
|
-
//# sourceMappingURL=component-registry-
|
|
138
|
+
//# sourceMappingURL=component-registry-D34fm8xW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-registry-D34fm8xW.js","names":[],"sources":["../../src/component-registry.ts"],"sourcesContent":["/**\n * Canonical tag → loader module path mapping for the autoloader.\n * Module paths are relative to the directory that contains plugin-kit.loader.js.\n */\nexport const COMPONENT_MODULE_PATHS: Record<string, string> = {\n 'pk-spinner': 'components/spinner/spinner.js',\n 'pk-icon': 'components/icon/icon.js',\n 'pk-button': 'components/button/button.js',\n 'pk-checkbox': 'components/checkbox/checkbox.js',\n 'pk-checkbox-select': 'components/checkbox-select/checkbox-select.js',\n 'pk-color-input': 'components/color-input/color-input.js',\n 'pk-code-editor': 'components/code-editor/code-editor.js',\n 'pk-input': 'components/input/input.js',\n 'pk-input-group': 'components/input-group/input-group.js',\n 'pk-input-group-addon': 'components/input-group/input-group-addon.js',\n 'pk-input-group-button': 'components/input-group/input-group-button.js',\n 'pk-input-group-input': 'components/input-group/input-group-input.js',\n 'pk-input-group-text': 'components/input-group/input-group-text.js',\n 'pk-input-group-textarea': 'components/input-group/input-group-textarea.js',\n 'pk-textarea': 'components/textarea/textarea.js',\n 'pk-tiptap-editor': 'components/tiptap/tiptap-editor.js',\n 'pk-tiptap-input': 'components/tiptap/tiptap-input.js',\n 'pk-tiptap-content': 'components/tiptap/tiptap-content.js',\n 'pk-field': 'components/field/field.js',\n 'pk-separator': 'components/separator/separator.js',\n 'pk-status': 'components/status/status.js',\n 'pk-toggle': 'components/toggle/toggle.js',\n 'pk-toggle-group': 'components/toggle-group/toggle-group.js',\n 'pk-lightswitch': 'components/lightswitch/lightswitch.js',\n 'pk-button-group': 'components/button-group/button-group.js',\n 'pk-button-group-separator': 'components/button-group/button-group-separator.js',\n 'pk-button-group-text': 'components/button-group/button-group-text.js',\n 'pk-dialog': 'components/dialog/dialog.js',\n 'pk-popup': 'components/popup/popup.js',\n 'pk-dropdown-label': 'components/dropdown-menu/dropdown-label.js',\n 'pk-dropdown-item': 'components/dropdown-menu/dropdown-item.js',\n 'pk-dropdown-separator': 'components/dropdown-menu/dropdown-separator.js',\n 'pk-dropdown-menu': 'components/dropdown-menu/dropdown-menu.js',\n 'pk-popover': 'components/popover/popover.js',\n 'pk-tooltip': 'components/tooltip/tooltip.js',\n 'pk-radio': 'components/radio-group/radio.js',\n 'pk-radio-group': 'components/radio-group/radio-group.js',\n 'pk-tab': 'components/tabs/tab.js',\n 'pk-tab-heading': 'components/tabs/tab-heading.js',\n 'pk-tab-panel': 'components/tabs/tab-panel.js',\n 'pk-tabs': 'components/tabs/tabs.js',\n 'pk-scroll-area': 'components/scroll-area/scroll-area.js',\n 'pk-option': 'components/select/option.js',\n 'pk-option-group': 'components/select/option-group.js',\n 'pk-select': 'components/select/select.js',\n 'pk-calendar': 'components/calendar/calendar.js',\n 'pk-date-picker': 'components/date-picker/date-picker.js',\n 'pk-combobox': 'components/combobox/combobox.js',\n 'pk-autocomplete': 'components/autocomplete/autocomplete.js',\n 'pk-image-browser': 'components/image-browser/image-browser.js',\n 'pk-time-picker': 'components/time-picker/time-picker.js',\n 'pk-copy-button': 'components/copy-button/copy-button.js',\n 'pk-connect': 'components/connect/connect.js',\n 'pk-connect-oauth': 'components/connect/connect-oauth.js',\n 'pk-editable-table': 'components/editable-table/editable-table.js',\n};\n\n/**\n * Canonical list of every `pk-*` custom element tag.\n * Single source of truth for FOUCE CSS generation and any tag enumeration.\n */\nexport const PK_COMPONENT_TAGS: readonly string[] = Object.keys(COMPONENT_MODULE_PATHS);\n\n/** Vite loader-build entries: output key → source module. */\nexport const LOADER_COMPONENT_ENTRIES: Record<string, string> = {\n 'components/spinner/spinner': 'src/components/spinner/pk-spinner.ts',\n // Loader ships the full icon set; bundler family `components/icon.js` stays opt-in.\n 'components/icon/icon': 'src/components/icon/pk-icon-loader.ts',\n 'components/button/button': 'src/components/button/pk-button.ts',\n 'components/checkbox/checkbox': 'src/components/checkbox/pk-checkbox.ts',\n 'components/checkbox-select/checkbox-select': 'src/components/checkbox-select/pk-checkbox-select.ts',\n 'components/color-input/color-input': 'src/components/color-input/pk-color-input.ts',\n 'components/code-editor/code-editor': 'src/components/code-editor/pk-code-editor.ts',\n 'components/input/input': 'src/components/input/pk-input.ts',\n 'components/input-group/input-group': 'src/components/input-group/pk-input-group.ts',\n 'components/input-group/input-group-addon': 'src/components/input-group/pk-input-group-addon.ts',\n 'components/input-group/input-group-button': 'src/components/input-group/pk-input-group-button.ts',\n 'components/input-group/input-group-input': 'src/components/input-group/pk-input-group-input.ts',\n 'components/input-group/input-group-text': 'src/components/input-group/pk-input-group-text.ts',\n 'components/input-group/input-group-textarea': 'src/components/input-group/pk-input-group-textarea.ts',\n 'components/textarea/textarea': 'src/components/textarea/pk-textarea.ts',\n 'components/tiptap/tiptap-editor': 'src/components/tiptap/pk-tiptap-editor.ts',\n 'components/tiptap/tiptap-input': 'src/components/tiptap/pk-tiptap-input.ts',\n 'components/tiptap/tiptap-content': 'src/components/tiptap/pk-tiptap-content.ts',\n 'components/field/field': 'src/components/field/pk-field.ts',\n 'components/separator/separator': 'src/components/separator/pk-separator.ts',\n 'components/status/status': 'src/components/status/pk-status.ts',\n 'components/toggle/toggle': 'src/components/toggle/pk-toggle.ts',\n 'components/toggle-group/toggle-group': 'src/components/toggle-group/pk-toggle-group.ts',\n 'components/lightswitch/lightswitch': 'src/components/lightswitch/pk-lightswitch.ts',\n 'components/button-group/button-group': 'src/components/button-group/pk-button-group.ts',\n 'components/button-group/button-group-separator': 'src/components/button-group/pk-button-group-separator.ts',\n 'components/button-group/button-group-text': 'src/components/button-group/pk-button-group-text.ts',\n 'components/dialog/dialog': 'src/components/dialog/pk-dialog.ts',\n 'components/popup/popup': 'src/components/popup/pk-popup.ts',\n 'components/dropdown-menu/dropdown-label': 'src/components/dropdown-menu/pk-dropdown-label.ts',\n 'components/dropdown-menu/dropdown-item': 'src/components/dropdown-menu/pk-dropdown-item.ts',\n 'components/dropdown-menu/dropdown-separator': 'src/components/dropdown-menu/pk-dropdown-separator.ts',\n 'components/dropdown-menu/dropdown-menu': 'src/components/dropdown-menu/pk-dropdown-menu.ts',\n 'components/popover/popover': 'src/components/popover/pk-popover.ts',\n 'components/tooltip/tooltip': 'src/components/tooltip/pk-tooltip.ts',\n 'components/radio-group/radio': 'src/components/radio-group/pk-radio.ts',\n 'components/radio-group/radio-group': 'src/components/radio-group/pk-radio-group.ts',\n 'components/tabs/tab': 'src/components/tabs/pk-tab.ts',\n 'components/tabs/tab-heading': 'src/components/tabs/pk-tab-heading.ts',\n 'components/tabs/tab-panel': 'src/components/tabs/pk-tab-panel.ts',\n 'components/tabs/tabs': 'src/components/tabs/pk-tabs.ts',\n 'components/scroll-area/scroll-area': 'src/components/scroll-area/pk-scroll-area.ts',\n 'components/select/option': 'src/components/select/pk-option.ts',\n 'components/select/option-group': 'src/components/select/pk-option-group.ts',\n 'components/select/select': 'src/components/select/pk-select.ts',\n 'components/calendar/calendar': 'src/components/calendar/pk-calendar.ts',\n 'components/date-picker/date-picker': 'src/components/date-picker/pk-date-picker.ts',\n 'components/combobox/combobox': 'src/components/combobox/pk-combobox.ts',\n 'components/autocomplete/autocomplete': 'src/components/autocomplete/pk-autocomplete.ts',\n 'components/image-browser/image-browser': 'src/components/image-browser/pk-image-browser.ts',\n 'components/time-picker/time-picker': 'src/components/time-picker/pk-time-picker.ts',\n 'components/copy-button/copy-button': 'src/components/copy-button/pk-copy-button.ts',\n 'components/connect/connect': 'src/components/connect/pk-connect.ts',\n 'components/connect/connect-oauth': 'src/components/connect/pk-connect-oauth.ts',\n 'components/editable-table/editable-table': 'src/components/editable-table/pk-editable-table.ts',\n};\n\n/** Loader-only shims → real element modules for the bundler dist graph. */\nconst BUNDLER_SRC_OVERRIDES: Record<string, string> = {\n 'src/components/icon/pk-icon-loader.ts': 'src/components/icon/pk-icon.ts',\n};\n\n/**\n * Vite `dist/` build entries for bundler cherry-picking.\n * Output paths mirror source layout, e.g. `dist/components/button/pk-button.js`.\n */\nexport const BUNDLER_COMPONENT_ENTRIES: Record<string, string> = Object.fromEntries(\n Object.values(LOADER_COMPONENT_ENTRIES).map((srcRel) => {\n const bundlerSrc = BUNDLER_SRC_OVERRIDES[srcRel] ?? srcRel;\n const key = bundlerSrc.replace(/^src\\//, '').replace(/\\.ts$/, '');\n return [key, bundlerSrc];\n }),\n);\n\n/** Tag → bundler dist subpath (relative to package root, no `./` prefix). */\nexport const BUNDLER_TAG_IMPORT_PATHS: Record<string, string> = Object.fromEntries(\n Object.keys(BUNDLER_COMPONENT_ENTRIES).map((key) => {\n const tag = key.split('/').pop()!;\n return [tag, `${key}.js`];\n }),\n);\n\nexport type PkComponentTag = keyof typeof BUNDLER_TAG_IMPORT_PATHS;\n\n/**\n * Short consumer entries published as `@verbb/plugin-kit-web/components/{key}.js`.\n * Each module side-effect-registers its family (compound folders register every tag).\n *\n * TipTap stays split — importing one surface must not pull the other two.\n */\nexport const COMPONENT_FAMILY_ENTRIES: Record<string, string> = {\n 'button': 'src/components/button/index.ts',\n 'button-group': 'src/components/button-group/index.ts',\n 'calendar': 'src/components/calendar/index.ts',\n 'checkbox': 'src/components/checkbox/index.ts',\n 'checkbox-select': 'src/components/checkbox-select/index.ts',\n 'code-editor': 'src/components/code-editor/index.ts',\n 'color-input': 'src/components/color-input/index.ts',\n 'autocomplete': 'src/components/autocomplete/index.ts',\n 'combobox': 'src/components/combobox/index.ts',\n 'copy-button': 'src/components/copy-button/index.ts',\n 'connect': 'src/components/connect/index.ts',\n 'date-picker': 'src/components/date-picker/index.ts',\n 'dialog': 'src/components/dialog/index.ts',\n 'dropdown-menu': 'src/components/dropdown-menu/index.ts',\n 'editable-table': 'src/components/editable-table/index.ts',\n 'field': 'src/components/field/index.ts',\n 'icon': 'src/components/icon/index.ts',\n 'image-browser': 'src/components/image-browser/index.ts',\n 'input': 'src/components/input/index.ts',\n 'input-group': 'src/components/input-group/index.ts',\n 'lightswitch': 'src/components/lightswitch/index.ts',\n 'popover': 'src/components/popover/index.ts',\n 'popup': 'src/components/popup/index.ts',\n 'radio-group': 'src/components/radio-group/index.ts',\n 'scroll-area': 'src/components/scroll-area/index.ts',\n 'select': 'src/components/select/index.ts',\n 'separator': 'src/components/separator/index.ts',\n 'spinner': 'src/components/spinner/index.ts',\n 'status': 'src/components/status/index.ts',\n 'tabs': 'src/components/tabs/index.ts',\n 'textarea': 'src/components/textarea/index.ts',\n 'time-picker': 'src/components/time-picker/index.ts',\n 'tiptap-content': 'src/components/tiptap/pk-tiptap-content.ts',\n 'tiptap-editor': 'src/components/tiptap/pk-tiptap-editor.ts',\n 'tiptap-input': 'src/components/tiptap/pk-tiptap-input.ts',\n 'toggle': 'src/components/toggle/index.ts',\n 'toggle-group': 'src/components/toggle-group/index.ts',\n 'tooltip': 'src/components/tooltip/index.ts',\n};\n"],"mappings":";;;;;AAIA,IAAa,yBAAiD;CAC1D,cAAc;CACd,WAAW;CACX,aAAa;CACb,eAAe;CACf,sBAAsB;CACtB,kBAAkB;CAClB,kBAAkB;CAClB,YAAY;CACZ,kBAAkB;CAClB,wBAAwB;CACxB,yBAAyB;CACzB,wBAAwB;CACxB,uBAAuB;CACvB,2BAA2B;CAC3B,eAAe;CACf,oBAAoB;CACpB,mBAAmB;CACnB,qBAAqB;CACrB,YAAY;CACZ,gBAAgB;CAChB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,kBAAkB;CAClB,mBAAmB;CACnB,6BAA6B;CAC7B,wBAAwB;CACxB,aAAa;CACb,YAAY;CACZ,qBAAqB;CACrB,oBAAoB;CACpB,yBAAyB;CACzB,oBAAoB;CACpB,cAAc;CACd,cAAc;CACd,YAAY;CACZ,kBAAkB;CAClB,UAAU;CACV,kBAAkB;CAClB,gBAAgB;CAChB,WAAW;CACX,kBAAkB;CAClB,aAAa;CACb,mBAAmB;CACnB,aAAa;CACb,eAAe;CACf,kBAAkB;CAClB,eAAe;CACf,mBAAmB;CACnB,oBAAoB;CACpB,kBAAkB;CAClB,kBAAkB;CAClB,cAAc;CACd,oBAAoB;CACpB,qBAAqB;CACxB;;AASD,IAAa,2BAAmD;CAC5D,8BAA8B;CAE9B,wBAAwB;CACxB,4BAA4B;CAC5B,gCAAgC;CAChC,8CAA8C;CAC9C,sCAAsC;CACtC,sCAAsC;CACtC,0BAA0B;CAC1B,sCAAsC;CACtC,4CAA4C;CAC5C,6CAA6C;CAC7C,4CAA4C;CAC5C,2CAA2C;CAC3C,+CAA+C;CAC/C,gCAAgC;CAChC,mCAAmC;CACnC,kCAAkC;CAClC,oCAAoC;CACpC,0BAA0B;CAC1B,kCAAkC;CAClC,4BAA4B;CAC5B,4BAA4B;CAC5B,wCAAwC;CACxC,sCAAsC;CACtC,wCAAwC;CACxC,kDAAkD;CAClD,6CAA6C;CAC7C,4BAA4B;CAC5B,0BAA0B;CAC1B,2CAA2C;CAC3C,0CAA0C;CAC1C,+CAA+C;CAC/C,0CAA0C;CAC1C,8BAA8B;CAC9B,8BAA8B;CAC9B,gCAAgC;CAChC,sCAAsC;CACtC,uBAAuB;CACvB,+BAA+B;CAC/B,6BAA6B;CAC7B,wBAAwB;CACxB,sCAAsC;CACtC,4BAA4B;CAC5B,kCAAkC;CAClC,4BAA4B;CAC5B,gCAAgC;CAChC,sCAAsC;CACtC,gCAAgC;CAChC,wCAAwC;CACxC,0CAA0C;CAC1C,sCAAsC;CACtC,sCAAsC;CACtC,8BAA8B;CAC9B,oCAAoC;CACpC,4CAA4C;CAC/C;;AAGD,IAAM,wBAAgD,EAClD,yCAAyC,kCAC5C;;;;;AAMD,IAAa,4BAAoD,OAAO,YACpE,OAAO,OAAO,yBAAyB,CAAC,KAAK,WAAW;CACpD,MAAM,aAAa,sBAAsB,WAAW;AAEpD,QAAO,CADK,WAAW,QAAQ,UAAU,GAAG,CAAC,QAAQ,SAAS,GACtD,EAAK,WAAW;EAC1B,CACL;;AAGD,IAAa,2BAAmD,OAAO,YACnE,OAAO,KAAK,0BAA0B,CAAC,KAAK,QAAQ;AAEhD,QAAO,CADK,IAAI,MAAM,IAAI,CAAC,KACnB,EAAK,GAAG,IAAI,KAAK;EAC3B,CACL"}
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
import { LitElement, css, unsafeCSS } from "lit";
|
|
2
|
+
import { property as property$1, query, state } from "lit/decorators.js";
|
|
3
|
+
//#region src/internal/safe-custom-element.ts
|
|
4
|
+
var customElement = (tagName) => (classOrTarget, context) => {
|
|
5
|
+
const define = () => {
|
|
6
|
+
if (customElements.get(tagName)) return;
|
|
7
|
+
customElements.define(tagName, classOrTarget);
|
|
8
|
+
};
|
|
9
|
+
if (context !== void 0) context.addInitializer(define);
|
|
10
|
+
else define();
|
|
11
|
+
};
|
|
12
|
+
//#endregion
|
|
2
13
|
//#region src/base/styles.ts
|
|
3
14
|
var sharedStyleSheets = /* @__PURE__ */ new Map();
|
|
4
15
|
/**
|
|
@@ -144,6 +155,6 @@ function __decorate(decorators, target, key, desc) {
|
|
|
144
155
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
145
156
|
}
|
|
146
157
|
//#endregion
|
|
147
|
-
export { PkElement as n, hostDisplayInlineBlock as r, __decorate as t };
|
|
158
|
+
export { query as a, property$1 as i, PkElement as n, state as o, hostDisplayInlineBlock as r, customElement as s, __decorate as t };
|
|
148
159
|
|
|
149
|
-
//# sourceMappingURL=decorate-
|
|
160
|
+
//# sourceMappingURL=decorate-R0X811qp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorate-R0X811qp.js","names":[],"sources":["../../src/internal/safe-custom-element.ts","../../src/base/styles.ts","../../src/base/shadow-reset.styles.ts","../../src/base/pk-element.ts"],"sourcesContent":["/**\n * Lit's `@customElement` always calls `customElements.define`. On Craft CP pages\n * that load multiple Plugin Kit consumers (each with its own bundled copy of the\n * same tag), the second define throws NotSupportedError and aborts the rest of\n * that register bundle. Skip redefine — first registrant wins.\n *\n * Drop-in replacement for `customElement` from `lit/decorators.js` /\n * `@lit/reactive-element/decorators/custom-element.js`.\n */\n\ntype CustomElementClass = Omit<typeof HTMLElement, 'new'>;\n\ntype Constructor<T> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (...args: any[]): T;\n};\n\nexport type CustomElementDecorator = {\n (cls: CustomElementClass): void;\n (\n target: CustomElementClass,\n context: ClassDecoratorContext<Constructor<HTMLElement>>,\n ): void;\n};\n\nexport const customElement =\n (tagName: string): CustomElementDecorator =>\n (\n classOrTarget: CustomElementClass | Constructor<HTMLElement>,\n context?: ClassDecoratorContext<Constructor<HTMLElement>>,\n ) => {\n const define = (): void => {\n if (customElements.get(tagName)) {\n return;\n }\n\n customElements.define(tagName, classOrTarget as CustomElementConstructor);\n };\n\n if (context !== undefined) {\n context.addInitializer(define);\n } else {\n define();\n }\n };\n","import { css, unsafeCSS, type CSSResultGroup } from 'lit';\n\nconst sharedStyleSheets = new Map<string, CSSStyleSheet>();\n\n/**\n * Share constructable stylesheets across component instances ( pattern).\n * Falls back to an injected `<style>` tag when adoptedStyleSheets aren't supported.\n */\nexport function adoptStyles(\n shadowRoot: ShadowRoot,\n styleResults: CSSResultGroup[],\n cacheKey?: string,\n): void {\n const cssText = styleResults\n .flatMap((result) => (Array.isArray(result) ? result : [result]))\n .map((result) => {\n if ('cssText' in result && typeof result.cssText === 'string') {\n return result.cssText;\n }\n\n return unsafeCSS(result).cssText;\n })\n .join('\\n');\n\n if (!('adoptedStyleSheets' in Document.prototype) || typeof CSSStyleSheet === 'undefined') {\n const styleKey = cacheKey ?? String(styleResults.length);\n\n if (!shadowRoot.querySelector(`style[data-pk-adopted-styles=\"${styleKey}\"]`)) {\n const style = document.createElement('style');\n style.dataset.pkAdoptedStyles = styleKey;\n style.textContent = cssText;\n shadowRoot.prepend(style);\n }\n\n return;\n }\n\n const key = cacheKey ?? cssText;\n let sheet = sharedStyleSheets.get(key);\n\n if (!sheet) {\n sheet = new CSSStyleSheet();\n sheet.replaceSync(cssText);\n sharedStyleSheets.set(key, sheet);\n }\n\n shadowRoot.adoptedStyleSheets = [...shadowRoot.adoptedStyleSheets, sheet];\n}\n\nexport const hostDisplayInlineBlock = css`\n @layer pk-component {\n :host {\n display: inline-block;\n vertical-align: middle;\n }\n }\n`;\n\nexport const focusRing = css`\n .pk-focus-ring:focus {\n outline: none;\n }\n\n .pk-focus-ring:focus-visible {\n box-shadow: var(--pk-shadow-focus);\n }\n`;\n","import { css } from 'lit';\n\n/**\n * Shadow-root baseline — box model + inherited typography inside every pk-* component.\n * Applied via PkElement.createRenderRoot(); does not replace per-component styles.\n */\nexport const shadowResetStyles = css`\n @layer pk-reset {\n :host {\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: border-box;\n }\n\n :host(:not([hidden])) {\n /* Prevent UA / CP margin on unstyled custom element hosts in light DOM. */\n margin: 0;\n }\n }\n`;\n","import { LitElement } from 'lit';\n\nimport { adoptStyles } from './styles.js';\nimport { shadowResetStyles } from './shadow-reset.styles.js';\n\nexport type PkElementErrorDetail = {\n tagName: string;\n message: string;\n stack?: string;\n};\n\ndeclare global {\n interface GlobalEventHandlersEventMap {\n 'pk-error': CustomEvent<PkElementErrorDetail>;\n }\n}\n\n/**\n * Base class for Plugin Kit web components.\n * Open shadow root; Lit adopts constructable stylesheets where supported.\n *\n * `performUpdate` is wrapped so a single control failure degrades inline instead of\n * taking down the whole CP surface (React error boundaries do not see Lit throws).\n */\nexport class PkElement extends LitElement {\n static override shadowRootOptions: ShadowRootInit = {\n mode: 'open',\n delegatesFocus: true,\n };\n\n /** When set, subclasses should skip normal render — base shows a minimal error shell. */\n protected pkRenderFailed = false;\n\n override connectedCallback(): void {\n super.connectedCallback();\n // Host marker for document/shadow peers (e.g. Tailwind preflight). Must not set\n // attributes in the constructor — CE rules forbid that on createElement().\n if (!this.hasAttribute('data-pk')) {\n this.setAttribute('data-pk', '');\n }\n }\n\n override createRenderRoot(): HTMLElement | DocumentFragment {\n const root = super.createRenderRoot();\n adoptStyles(root as ShadowRoot, [shadowResetStyles], 'pk-shadow-reset');\n return root;\n }\n\n override performUpdate(): void {\n if (this.pkRenderFailed) {\n return;\n }\n\n try {\n const result = super.performUpdate();\n\n // Lit deprecates returning a Promise from performUpdate — handle async render\n // failures without making this override async (avoids dev-mode update-queue bugs).\n // Lit may return void; keep a Promise guard for older async performUpdate paths.\n if ((result as unknown) instanceof Promise) {\n void (result as unknown as Promise<unknown>).catch((error: unknown) => {\n this.handleRenderFailure(error);\n });\n }\n } catch (error) {\n this.handleRenderFailure(error);\n }\n }\n\n protected handleRenderFailure(error: unknown): void {\n const err = error instanceof Error ? error : new Error(String(error));\n this.pkRenderFailed = true;\n\n this.dispatchEvent(\n new CustomEvent<PkElementErrorDetail>('pk-error', {\n detail: {\n tagName: this.localName || this.tagName.toLowerCase(),\n message: err.message,\n stack: err.stack,\n },\n bubbles: true,\n composed: true,\n }),\n );\n\n // Last-resort inline fallback — plain DOM so we do not recurse through Lit render().\n try {\n const root = this.renderRoot as ShadowRoot | HTMLElement | undefined;\n\n if (root) {\n root.textContent = '';\n const shell = document.createElement('div');\n shell.setAttribute('part', 'error');\n shell.setAttribute('role', 'alert');\n shell.textContent = 'This control failed to load.';\n root.appendChild(shell);\n }\n } catch {\n /* never throw from the error handler */\n }\n }\n}\n"],"mappings":";;;AAyBA,IAAa,iBACR,aAEG,eACA,YACC;CACD,MAAM,eAAqB;AACvB,MAAI,eAAe,IAAI,QAAQ,CAC3B;AAGJ,iBAAe,OAAO,SAAS,cAA0C;;AAG7E,KAAI,YAAY,KAAA,EACZ,SAAQ,eAAe,OAAO;KAE9B,SAAQ;;;;ACxCpB,IAAM,oCAAoB,IAAI,KAA4B;;;;;AAM1D,SAAgB,YACZ,YACA,cACA,UACI;CACJ,MAAM,UAAU,aACX,SAAS,WAAY,MAAM,QAAQ,OAAO,GAAG,SAAS,CAAC,OAAO,CAAE,CAChE,KAAK,WAAW;AACb,MAAI,aAAa,UAAU,OAAO,OAAO,YAAY,SACjD,QAAO,OAAO;AAGlB,SAAO,UAAU,OAAO,CAAC;GAC3B,CACD,KAAK,KAAK;AAEf,KAAI,EAAE,wBAAwB,SAAS,cAAc,OAAO,kBAAkB,aAAa;EACvF,MAAM,WAAW,YAAY,OAAO,aAAa,OAAO;AAExD,MAAI,CAAC,WAAW,cAAc,iCAAiC,SAAS,IAAI,EAAE;GAC1E,MAAM,QAAQ,SAAS,cAAc,QAAQ;AAC7C,SAAM,QAAQ,kBAAkB;AAChC,SAAM,cAAc;AACpB,cAAW,QAAQ,MAAM;;AAG7B;;CAGJ,MAAM,MAAM,YAAY;CACxB,IAAI,QAAQ,kBAAkB,IAAI,IAAI;AAEtC,KAAI,CAAC,OAAO;AACR,UAAQ,IAAI,eAAe;AAC3B,QAAM,YAAY,QAAQ;AAC1B,oBAAkB,IAAI,KAAK,MAAM;;AAGrC,YAAW,qBAAqB,CAAC,GAAG,WAAW,oBAAoB,MAAM;;AAG7E,IAAa,yBAAyB,GAAG;;;;;;;;AAShB,GAAG;;;;;;;;;;;;;;;ACpD5B,IAAa,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;ACkBpC,IAAa,YAAb,cAA+B,WAAW;;;wBAOX;;;2BANyB;GAChD,MAAM;GACN,gBAAgB;GACnB;;CAKD,oBAAmC;AAC/B,QAAM,mBAAmB;AAGzB,MAAI,CAAC,KAAK,aAAa,UAAU,CAC7B,MAAK,aAAa,WAAW,GAAG;;CAIxC,mBAA4D;EACxD,MAAM,OAAO,MAAM,kBAAkB;AACrC,cAAY,MAAoB,CAAC,kBAAkB,EAAE,kBAAkB;AACvE,SAAO;;CAGX,gBAA+B;AAC3B,MAAI,KAAK,eACL;AAGJ,MAAI;GACA,MAAM,SAAS,MAAM,eAAe;AAKpC,OAAK,kBAA8B,QACzB,QAAuC,OAAO,UAAmB;AACnE,SAAK,oBAAoB,MAAM;KACjC;WAED,OAAO;AACZ,QAAK,oBAAoB,MAAM;;;CAIvC,oBAA8B,OAAsB;EAChD,MAAM,MAAM,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM,CAAC;AACrE,OAAK,iBAAiB;AAEtB,OAAK,cACD,IAAI,YAAkC,YAAY;GAC9C,QAAQ;IACJ,SAAS,KAAK,aAAa,KAAK,QAAQ,aAAa;IACrD,SAAS,IAAI;IACb,OAAO,IAAI;IACd;GACD,SAAS;GACT,UAAU;GACb,CAAC,CACL;AAGD,MAAI;GACA,MAAM,OAAO,KAAK;AAElB,OAAI,MAAM;AACN,SAAK,cAAc;IACnB,MAAM,QAAQ,SAAS,cAAc,MAAM;AAC3C,UAAM,aAAa,QAAQ,QAAQ;AACnC,UAAM,aAAa,QAAQ,QAAQ;AACnC,UAAM,cAAc;AACpB,SAAK,YAAY,MAAM;;UAEvB"}
|
|
@@ -11,4 +11,4 @@ function hasInstructionContent(hasSlot, instructions, withInstructions = false)
|
|
|
11
11
|
//#endregion
|
|
12
12
|
export { readLegacyInstructions as n, hasInstructionContent as t };
|
|
13
13
|
|
|
14
|
-
//# sourceMappingURL=field-labels-
|
|
14
|
+
//# sourceMappingURL=field-labels-CmuAW8Cl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-labels-
|
|
1
|
+
{"version":3,"file":"field-labels-CmuAW8Cl.js","names":[],"sources":["../../src/internal/field-labels.ts"],"sourcesContent":["/** Reads the legacy `hint` attribute when `instructions` is empty. */\nexport function readLegacyInstructions(element: HTMLElement, instructions: string): string {\n if (instructions) {\n return instructions;\n }\n\n return element.getAttribute('hint') ?? '';\n}\n\n/** Whether a named slot (or legacy alias) has content. */\nexport function hasInstructionContent(\n hasSlot: (name: string, flag?: boolean) => boolean,\n instructions: string,\n withInstructions = false,\n): boolean {\n return Boolean(instructions)\n || hasSlot('instructions', withInstructions)\n || hasSlot('hint');\n}\n"],"mappings":";;AACA,SAAgB,uBAAuB,SAAsB,cAA8B;AACvF,KAAI,aACA,QAAO;AAGX,QAAO,QAAQ,aAAa,OAAO,IAAI;;;AAI3C,SAAgB,sBACZ,SACA,cACA,mBAAmB,OACZ;AACP,QAAO,QAAQ,aAAa,IACrB,QAAQ,gBAAgB,iBAAiB,IACzC,QAAQ,OAAO"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { t as syncListboxSeparators } from "./sync-listbox-separators-B1-V0oJi.js";
|
|
2
|
+
//#region src/utils/popup-content-exit.ts
|
|
3
|
+
/**
|
|
4
|
+
* Wait for `pk-popup-content-out` on a listbox panel, then clear the `closing` class.
|
|
5
|
+
* Shared by Combobox and Autocomplete so exit motion stays one implementation.
|
|
6
|
+
*/
|
|
7
|
+
function waitForPopupContentExitAnimation(panel, fallbackMs = 150) {
|
|
8
|
+
if (!panel) return Promise.resolve();
|
|
9
|
+
return new Promise((resolve) => {
|
|
10
|
+
let settled = false;
|
|
11
|
+
const finish = () => {
|
|
12
|
+
if (settled) return;
|
|
13
|
+
settled = true;
|
|
14
|
+
panel.removeEventListener("animationend", onAnimationEnd);
|
|
15
|
+
window.clearTimeout(fallback);
|
|
16
|
+
panel.classList.remove("closing");
|
|
17
|
+
resolve();
|
|
18
|
+
};
|
|
19
|
+
const onAnimationEnd = (event) => {
|
|
20
|
+
if (event.target === panel && event.animationName.startsWith("pk-popup-content-out")) finish();
|
|
21
|
+
};
|
|
22
|
+
panel.classList.add("closing");
|
|
23
|
+
panel.addEventListener("animationend", onAnimationEnd);
|
|
24
|
+
const fallback = window.setTimeout(finish, fallbackMs);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
//#region src/internal/sync-filtered-options.ts
|
|
29
|
+
/**
|
|
30
|
+
* Apply filter visibility, match highlight, option ids, and group empty markers.
|
|
31
|
+
* Shared by Combobox and Autocomplete — not a full listbox controller.
|
|
32
|
+
*/
|
|
33
|
+
function syncFilteredOptions(config) {
|
|
34
|
+
const { host, options, visible, listboxId, filterQuery, isSelected } = config;
|
|
35
|
+
for (const option of options) {
|
|
36
|
+
option.selected = isSelected(option.value);
|
|
37
|
+
option.hidden = !visible.includes(option);
|
|
38
|
+
option.optionId = `${listboxId}-option-${option.value}`;
|
|
39
|
+
option.matchQuery = filterQuery;
|
|
40
|
+
}
|
|
41
|
+
for (const group of host.querySelectorAll("pk-option-group")) {
|
|
42
|
+
const groupOptions = [...group.querySelectorAll("pk-option")];
|
|
43
|
+
const filterEmpty = groupOptions.length > 0 && groupOptions.every((option) => option.hidden);
|
|
44
|
+
group.toggleAttribute("data-pk-filter-empty", filterEmpty);
|
|
45
|
+
}
|
|
46
|
+
syncListboxSeparators(host);
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
//#region src/utils/async-option-fetch.ts
|
|
50
|
+
var AsyncOptionFetcher = class {
|
|
51
|
+
constructor(getHandler, callbacks) {
|
|
52
|
+
this.getHandler = getHandler;
|
|
53
|
+
this.timer = null;
|
|
54
|
+
this.requestId = 0;
|
|
55
|
+
this.abortController = null;
|
|
56
|
+
this.callbacks = callbacks;
|
|
57
|
+
this.debounceMs = callbacks.debounceMs ?? 200;
|
|
58
|
+
this.errorLabel = callbacks.errorLabel ?? "options";
|
|
59
|
+
}
|
|
60
|
+
schedule(query) {
|
|
61
|
+
if (this.timer !== null) window.clearTimeout(this.timer);
|
|
62
|
+
this.timer = window.setTimeout(() => {
|
|
63
|
+
this.timer = null;
|
|
64
|
+
this.run(query);
|
|
65
|
+
}, this.debounceMs);
|
|
66
|
+
}
|
|
67
|
+
cancel() {
|
|
68
|
+
if (this.timer !== null) {
|
|
69
|
+
window.clearTimeout(this.timer);
|
|
70
|
+
this.timer = null;
|
|
71
|
+
}
|
|
72
|
+
this.abortController?.abort();
|
|
73
|
+
this.abortController = null;
|
|
74
|
+
}
|
|
75
|
+
async run(query) {
|
|
76
|
+
const handler = this.getHandler();
|
|
77
|
+
if (!handler) return;
|
|
78
|
+
const requestId = ++this.requestId;
|
|
79
|
+
this.abortController?.abort();
|
|
80
|
+
this.abortController = new AbortController();
|
|
81
|
+
if (!query) {
|
|
82
|
+
this.callbacks.onEmptyQuery?.();
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
this.callbacks.onLoading?.();
|
|
86
|
+
try {
|
|
87
|
+
const results = await handler(query, this.abortController.signal);
|
|
88
|
+
if (requestId !== this.requestId) return;
|
|
89
|
+
this.callbacks.onResults(results);
|
|
90
|
+
} catch (error) {
|
|
91
|
+
if (this.abortController?.signal.aborted || requestId !== this.requestId) return;
|
|
92
|
+
if (error instanceof DOMException && error.name === "AbortError") return;
|
|
93
|
+
console.error(`Failed to load ${this.errorLabel}:`, error);
|
|
94
|
+
this.callbacks.onError?.("Failed to load options. Please try again.");
|
|
95
|
+
this.callbacks.onResults([]);
|
|
96
|
+
} finally {
|
|
97
|
+
if (requestId === this.requestId) this.callbacks.onSettled?.();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
//#endregion
|
|
102
|
+
//#region src/utils/option-filter.ts
|
|
103
|
+
/**
|
|
104
|
+
* Default Combobox / Autocomplete filter: label, value, or full search text substring.
|
|
105
|
+
* Rich options may set a short `label` for the closed input — still match subtitle text.
|
|
106
|
+
*/
|
|
107
|
+
function defaultOptionFilter(option, query) {
|
|
108
|
+
const label = option.getLabel().toLowerCase();
|
|
109
|
+
const value = option.value.toLowerCase();
|
|
110
|
+
const searchText = (option.getSearchText?.() ?? label).toLowerCase();
|
|
111
|
+
return label.includes(query) || value.includes(query) || searchText.includes(query);
|
|
112
|
+
}
|
|
113
|
+
/** Resolve a custom filter or the default substring match. */
|
|
114
|
+
function matchesOptionFilter(option, query, filter) {
|
|
115
|
+
if (filter) return filter(option, query);
|
|
116
|
+
return defaultOptionFilter(option, query);
|
|
117
|
+
}
|
|
118
|
+
//#endregion
|
|
119
|
+
export { waitForPopupContentExitAnimation as i, AsyncOptionFetcher as n, syncFilteredOptions as r, matchesOptionFilter as t };
|
|
120
|
+
|
|
121
|
+
//# sourceMappingURL=option-filter-BQqr8Z21.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"option-filter-BQqr8Z21.js","names":[],"sources":["../../src/utils/popup-content-exit.ts","../../src/internal/sync-filtered-options.ts","../../src/utils/async-option-fetch.ts","../../src/utils/option-filter.ts"],"sourcesContent":["/**\n * Wait for `pk-popup-content-out` on a listbox panel, then clear the `closing` class.\n * Shared by Combobox and Autocomplete so exit motion stays one implementation.\n */\nexport function waitForPopupContentExitAnimation(\n panel: HTMLElement | null | undefined,\n fallbackMs = 150,\n): Promise<void> {\n if (!panel) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n let settled = false;\n\n const finish = (): void => {\n if (settled) {\n return;\n }\n\n settled = true;\n panel.removeEventListener('animationend', onAnimationEnd);\n window.clearTimeout(fallback);\n panel.classList.remove('closing');\n resolve();\n };\n\n const onAnimationEnd = (event: AnimationEvent): void => {\n if (event.target === panel && event.animationName.startsWith('pk-popup-content-out')) {\n finish();\n }\n };\n\n panel.classList.add('closing');\n panel.addEventListener('animationend', onAnimationEnd);\n const fallback = window.setTimeout(finish, fallbackMs);\n });\n}\n","import type { PkOption } from '../components/select/pk-option.js';\nimport { syncListboxSeparators } from './sync-listbox-separators.js';\n\nexport type SyncFilteredOptionsConfig = {\n /** Host that owns `pk-option` / `pk-option-group` / `pk-separator` children. */\n host: HTMLElement;\n options: PkOption[];\n /** Options that should remain visible (already filtered). */\n visible: PkOption[];\n /** Prefix for `optionId` values (e.g. listbox id). */\n listboxId: string;\n /** Lowercased query for `matchQuery` highlight; empty when closed / unfiltered. */\n filterQuery: string;\n /**\n * Whether each option is “selected” for checkmarks.\n * Autocomplete always returns false — the freeform text is the value.\n */\n isSelected: (value: string) => boolean;\n};\n\n/**\n * Apply filter visibility, match highlight, option ids, and group empty markers.\n * Shared by Combobox and Autocomplete — not a full listbox controller.\n */\nexport function syncFilteredOptions(config: SyncFilteredOptionsConfig): void {\n const {\n host, options, visible, listboxId, filterQuery, isSelected,\n } = config;\n\n for (const option of options) {\n option.selected = isSelected(option.value);\n option.hidden = !visible.includes(option);\n option.optionId = `${listboxId}-option-${option.value}`;\n option.matchQuery = filterQuery;\n }\n\n for (const group of host.querySelectorAll('pk-option-group')) {\n const groupOptions = [...group.querySelectorAll('pk-option')];\n // Use data-pk-filter-empty — not `hidden` — so clearing the query can\n // resurrect options. `hidden` is reserved for intentional author hide.\n const filterEmpty = groupOptions.length > 0\n && groupOptions.every((option) => option.hidden);\n\n group.toggleAttribute('data-pk-filter-empty', filterEmpty);\n }\n\n syncListboxSeparators(host);\n}\n","/**\n * Debounced async option fetch with abort + stale-request guards.\n * Used by Combobox and Autocomplete so both share one loading lifecycle.\n */\nexport type PkAsyncOptionItem = {\n value: string;\n label: string;\n};\n\nexport type PkAsyncOptionFetchHandler = (\n query: string,\n signal: AbortSignal,\n) => Promise<PkAsyncOptionItem[]>;\n\nexport type PkAsyncOptionFetchCallbacks = {\n /** Called when a fetch starts (non-empty query). */\n onLoading?: () => void;\n /** Apply results for the latest request (may be empty). */\n onResults: (items: PkAsyncOptionItem[]) => void;\n /** Called when a non-abort failure occurs for the latest request. */\n onError?: (message: string) => void;\n /** Called when loading ends for the latest request (success or error). */\n onSettled?: () => void;\n /** Empty query — typically show selected meta or clear. */\n onEmptyQuery?: () => void;\n /** Log context when a fetch throws (defaults to \"options\"). */\n errorLabel?: string;\n debounceMs?: number;\n};\n\nexport class AsyncOptionFetcher {\n private timer: number | null = null;\n private requestId = 0;\n private abortController: AbortController | null = null;\n private readonly debounceMs: number;\n private readonly errorLabel: string;\n private readonly callbacks: PkAsyncOptionFetchCallbacks;\n\n constructor(\n private readonly getHandler: () => PkAsyncOptionFetchHandler | null,\n callbacks: PkAsyncOptionFetchCallbacks,\n ) {\n this.callbacks = callbacks;\n this.debounceMs = callbacks.debounceMs ?? 200;\n this.errorLabel = callbacks.errorLabel ?? 'options';\n }\n\n schedule(query: string): void {\n if (this.timer !== null) {\n window.clearTimeout(this.timer);\n }\n\n this.timer = window.setTimeout(() => {\n this.timer = null;\n void this.run(query);\n }, this.debounceMs);\n }\n\n cancel(): void {\n if (this.timer !== null) {\n window.clearTimeout(this.timer);\n this.timer = null;\n }\n\n this.abortController?.abort();\n this.abortController = null;\n }\n\n private async run(query: string): Promise<void> {\n const handler = this.getHandler();\n\n if (!handler) {\n return;\n }\n\n const requestId = ++this.requestId;\n this.abortController?.abort();\n this.abortController = new AbortController();\n\n if (!query) {\n this.callbacks.onEmptyQuery?.();\n return;\n }\n\n this.callbacks.onLoading?.();\n\n try {\n const results = await handler(query, this.abortController.signal);\n\n if (requestId !== this.requestId) {\n return;\n }\n\n this.callbacks.onResults(results);\n } catch (error) {\n if (this.abortController?.signal.aborted || requestId !== this.requestId) {\n return;\n }\n\n if (error instanceof DOMException && error.name === 'AbortError') {\n return;\n }\n\n console.error(`Failed to load ${this.errorLabel}:`, error);\n this.callbacks.onError?.('Failed to load options. Please try again.');\n this.callbacks.onResults([]);\n } finally {\n if (requestId === this.requestId) {\n this.callbacks.onSettled?.();\n }\n }\n }\n}\n","import type { PkOption } from '../components/select/pk-option.js';\n\n/** Custom option filter — `(option, query) => boolean`. Query is already lowercased. */\nexport type PkOptionFilter = (option: PkOption, query: string) => boolean;\n\n/**\n * Default Combobox / Autocomplete filter: label, value, or full search text substring.\n * Rich options may set a short `label` for the closed input — still match subtitle text.\n */\nexport function defaultOptionFilter(option: PkOption, query: string): boolean {\n const label = option.getLabel().toLowerCase();\n const value = option.value.toLowerCase();\n const searchText = (option.getSearchText?.() ?? label).toLowerCase();\n\n return label.includes(query) || value.includes(query) || searchText.includes(query);\n}\n\n/** Resolve a custom filter or the default substring match. */\nexport function matchesOptionFilter(\n option: PkOption,\n query: string,\n filter: PkOptionFilter | null | undefined,\n): boolean {\n if (filter) {\n return filter(option, query);\n }\n\n return defaultOptionFilter(option, query);\n}\n"],"mappings":";;;;;;AAIA,SAAgB,iCACZ,OACA,aAAa,KACA;AACb,KAAI,CAAC,MACD,QAAO,QAAQ,SAAS;AAG5B,QAAO,IAAI,SAAS,YAAY;EAC5B,IAAI,UAAU;EAEd,MAAM,eAAqB;AACvB,OAAI,QACA;AAGJ,aAAU;AACV,SAAM,oBAAoB,gBAAgB,eAAe;AACzD,UAAO,aAAa,SAAS;AAC7B,SAAM,UAAU,OAAO,UAAU;AACjC,YAAS;;EAGb,MAAM,kBAAkB,UAAgC;AACpD,OAAI,MAAM,WAAW,SAAS,MAAM,cAAc,WAAW,uBAAuB,CAChF,SAAQ;;AAIhB,QAAM,UAAU,IAAI,UAAU;AAC9B,QAAM,iBAAiB,gBAAgB,eAAe;EACtD,MAAM,WAAW,OAAO,WAAW,QAAQ,WAAW;GACxD;;;;;;;;ACZN,SAAgB,oBAAoB,QAAyC;CACzE,MAAM,EACF,MAAM,SAAS,SAAS,WAAW,aAAa,eAChD;AAEJ,MAAK,MAAM,UAAU,SAAS;AAC1B,SAAO,WAAW,WAAW,OAAO,MAAM;AAC1C,SAAO,SAAS,CAAC,QAAQ,SAAS,OAAO;AACzC,SAAO,WAAW,GAAG,UAAU,UAAU,OAAO;AAChD,SAAO,aAAa;;AAGxB,MAAK,MAAM,SAAS,KAAK,iBAAiB,kBAAkB,EAAE;EAC1D,MAAM,eAAe,CAAC,GAAG,MAAM,iBAAiB,YAAY,CAAC;EAG7D,MAAM,cAAc,aAAa,SAAS,KACnC,aAAa,OAAO,WAAW,OAAO,OAAO;AAEpD,QAAM,gBAAgB,wBAAwB,YAAY;;AAG9D,uBAAsB,KAAK;;;;AChB/B,IAAa,qBAAb,MAAgC;CAQ5B,YACI,YACA,WACF;AAFmB,OAAA,aAAA;eARU;mBACX;yBAC8B;AAS9C,OAAK,YAAY;AACjB,OAAK,aAAa,UAAU,cAAc;AAC1C,OAAK,aAAa,UAAU,cAAc;;CAG9C,SAAS,OAAqB;AAC1B,MAAI,KAAK,UAAU,KACf,QAAO,aAAa,KAAK,MAAM;AAGnC,OAAK,QAAQ,OAAO,iBAAiB;AACjC,QAAK,QAAQ;AACR,QAAK,IAAI,MAAM;KACrB,KAAK,WAAW;;CAGvB,SAAe;AACX,MAAI,KAAK,UAAU,MAAM;AACrB,UAAO,aAAa,KAAK,MAAM;AAC/B,QAAK,QAAQ;;AAGjB,OAAK,iBAAiB,OAAO;AAC7B,OAAK,kBAAkB;;CAG3B,MAAc,IAAI,OAA8B;EAC5C,MAAM,UAAU,KAAK,YAAY;AAEjC,MAAI,CAAC,QACD;EAGJ,MAAM,YAAY,EAAE,KAAK;AACzB,OAAK,iBAAiB,OAAO;AAC7B,OAAK,kBAAkB,IAAI,iBAAiB;AAE5C,MAAI,CAAC,OAAO;AACR,QAAK,UAAU,gBAAgB;AAC/B;;AAGJ,OAAK,UAAU,aAAa;AAE5B,MAAI;GACA,MAAM,UAAU,MAAM,QAAQ,OAAO,KAAK,gBAAgB,OAAO;AAEjE,OAAI,cAAc,KAAK,UACnB;AAGJ,QAAK,UAAU,UAAU,QAAQ;WAC5B,OAAO;AACZ,OAAI,KAAK,iBAAiB,OAAO,WAAW,cAAc,KAAK,UAC3D;AAGJ,OAAI,iBAAiB,gBAAgB,MAAM,SAAS,aAChD;AAGJ,WAAQ,MAAM,kBAAkB,KAAK,WAAW,IAAI,MAAM;AAC1D,QAAK,UAAU,UAAU,4CAA4C;AACrE,QAAK,UAAU,UAAU,EAAE,CAAC;YACtB;AACN,OAAI,cAAc,KAAK,UACnB,MAAK,UAAU,aAAa;;;;;;;;;;ACnG5C,SAAgB,oBAAoB,QAAkB,OAAwB;CAC1E,MAAM,QAAQ,OAAO,UAAU,CAAC,aAAa;CAC7C,MAAM,QAAQ,OAAO,MAAM,aAAa;CACxC,MAAM,cAAc,OAAO,iBAAiB,IAAI,OAAO,aAAa;AAEpE,QAAO,MAAM,SAAS,MAAM,IAAI,MAAM,SAAS,MAAM,IAAI,WAAW,SAAS,MAAM;;;AAIvF,SAAgB,oBACZ,QACA,OACA,QACO;AACP,KAAI,OACA,QAAO,OAAO,QAAQ,MAAM;AAGhC,QAAO,oBAAoB,QAAQ,MAAM"}
|