@verbb/plugin-kit-web 2.0.21 → 2.0.23
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 +19 -0
- package/custom-elements.json +1400 -13
- package/dist/chunks/{active-elements-BwpXu8Lb.js → active-elements-DM_lCHaW.js} +1 -1
- package/dist/chunks/{active-elements-BwpXu8Lb.js.map → active-elements-DM_lCHaW.js.map} +1 -1
- package/dist/chunks/{animate-with-class-CsDwYnXL.js → animate-with-class-NP-yJVt_.js} +1 -1
- package/dist/chunks/{animate-with-class-CsDwYnXL.js.map → animate-with-class-NP-yJVt_.js.map} +1 -1
- package/dist/chunks/{autoloader-dJO3tYOX.js → autoloader-DnSfHkrD.js} +3 -3
- package/dist/chunks/{autoloader-dJO3tYOX.js.map → autoloader-DnSfHkrD.js.map} +1 -1
- package/dist/chunks/{button-group-item.styles-DYmBR28a.js → button-group-item.styles-G05d0DNI.js} +1 -1
- package/dist/chunks/{button-group-item.styles-DYmBR28a.js.map → button-group-item.styles-G05d0DNI.js.map} +1 -1
- package/dist/chunks/{component-registry-D34fm8xW.js → component-registry-DoevfR-u.js} +5 -1
- package/dist/chunks/component-registry-DoevfR-u.js.map +1 -0
- package/dist/chunks/{control-aria-B2QMq4ji.js → control-aria-CzouQRZD.js} +1 -1
- package/dist/chunks/{control-aria-B2QMq4ji.js.map → control-aria-CzouQRZD.js.map} +1 -1
- package/dist/chunks/{dismissible-stack-XQUMfKO3.js → dismissible-stack-B3BgzdQb.js} +1 -1
- package/dist/chunks/{dismissible-stack-XQUMfKO3.js.map → dismissible-stack-B3BgzdQb.js.map} +1 -1
- package/dist/chunks/{field-labels-CmuAW8Cl.js → field-labels-CGSfAGf-.js} +1 -1
- package/dist/chunks/{field-labels-CmuAW8Cl.js.map → field-labels-CGSfAGf-.js.map} +1 -1
- package/dist/chunks/{focus-aa5dlv8k.js → focus-C6pY4Ym4.js} +2 -2
- package/dist/chunks/{focus-aa5dlv8k.js.map → focus-C6pY4Ym4.js.map} +1 -1
- package/dist/chunks/{form-control.styles-BQdimE5o.js → form-control.styles-BHwSsx_y.js} +1 -1
- package/dist/chunks/{form-control.styles-BQdimE5o.js.map → form-control.styles-BHwSsx_y.js.map} +1 -1
- package/dist/chunks/{has-slot-8BvCt_qo.js → has-slot-9zjTXvea.js} +1 -1
- package/dist/chunks/{has-slot-8BvCt_qo.js.map → has-slot-9zjTXvea.js.map} +1 -1
- package/dist/chunks/{icon.styles-BLTWLqYp.js → icon.styles-pNyUmVtP.js} +1 -1
- package/dist/chunks/{icon.styles-BLTWLqYp.js.map → icon.styles-pNyUmVtP.js.map} +1 -1
- package/dist/chunks/{icons-BR8JcQj2.js → icons-B8siZLOe.js} +2 -2
- package/dist/chunks/{icons-BR8JcQj2.js.map → icons-B8siZLOe.js.map} +1 -1
- package/dist/chunks/{mirror-validator-DCjNYrrx.js → mirror-validator-Cszpqlxk.js} +1 -1
- package/dist/chunks/{mirror-validator-DCjNYrrx.js.map → mirror-validator-Cszpqlxk.js.map} +1 -1
- package/dist/chunks/{option-filter-BQqr8Z21.js → option-filter-Cj5SvyzI.js} +2 -2
- package/dist/chunks/{option-filter-BQqr8Z21.js.map → option-filter-Cj5SvyzI.js.map} +1 -1
- package/dist/chunks/{overlay-lifecycle-D0pkTQyI.js → overlay-lifecycle-CAoT0LE8.js} +1 -1
- package/dist/chunks/{overlay-lifecycle-D0pkTQyI.js.map → overlay-lifecycle-CAoT0LE8.js.map} +1 -1
- package/dist/chunks/pk-alert-Cjxl6CY_.js +664 -0
- package/dist/chunks/pk-alert-Cjxl6CY_.js.map +1 -0
- package/dist/chunks/{pk-autocomplete-qy2Psvqm.js → pk-autocomplete-DA77kdTN.js} +19 -19
- package/dist/chunks/{pk-autocomplete-qy2Psvqm.js.map → pk-autocomplete-DA77kdTN.js.map} +1 -1
- package/dist/chunks/{pk-button-BrH4u4Qr.js → pk-button-DCtNLEPr.js} +6 -6
- package/dist/chunks/{pk-button-BrH4u4Qr.js.map → pk-button-DCtNLEPr.js.map} +1 -1
- package/dist/chunks/{pk-button-group-BSz5T5iS.js → pk-button-group-DBdKK_2_.js} +1 -1
- package/dist/chunks/{pk-button-group-BSz5T5iS.js.map → pk-button-group-DBdKK_2_.js.map} +1 -1
- package/dist/chunks/{pk-button-group-separator-DH3Rl24b.js → pk-button-group-separator-D0Aa0a0f.js} +1 -1
- package/dist/chunks/{pk-button-group-separator-DH3Rl24b.js.map → pk-button-group-separator-D0Aa0a0f.js.map} +1 -1
- package/dist/chunks/{pk-button-group-text-Qro_KmZb.js → pk-button-group-text-BsqEM-dB.js} +2 -2
- package/dist/chunks/{pk-button-group-text-Qro_KmZb.js.map → pk-button-group-text-BsqEM-dB.js.map} +1 -1
- package/dist/chunks/{pk-calendar-Z7Y0PjeY.js → pk-calendar-hBz1MnOu.js} +6 -6
- package/dist/chunks/{pk-calendar-Z7Y0PjeY.js.map → pk-calendar-hBz1MnOu.js.map} +1 -1
- package/dist/chunks/{pk-checkbox-13ArHSmt.js → pk-checkbox-dvHRoVbL.js} +4 -4
- package/dist/chunks/{pk-checkbox-13ArHSmt.js.map → pk-checkbox-dvHRoVbL.js.map} +1 -1
- package/dist/chunks/{pk-checkbox-select-Ckvfbu83.js → pk-checkbox-select-Cqx5ZCMq.js} +2 -2
- package/dist/chunks/{pk-checkbox-select-Ckvfbu83.js.map → pk-checkbox-select-Cqx5ZCMq.js.map} +1 -1
- package/dist/chunks/{pk-clear--mPWZP7H.js → pk-clear-LzxwxEX7.js} +1 -1
- package/dist/chunks/{pk-clear--mPWZP7H.js.map → pk-clear-LzxwxEX7.js.map} +1 -1
- package/dist/chunks/{pk-code-editor-BlG6O5qB.js → pk-code-editor-C_PqjR75.js} +4 -4
- package/dist/chunks/{pk-code-editor-BlG6O5qB.js.map → pk-code-editor-C_PqjR75.js.map} +1 -1
- package/dist/chunks/{pk-color-input-BRgQ5-vB.js → pk-color-input-4LDV0Z3W.js} +4 -4
- package/dist/chunks/{pk-color-input-BRgQ5-vB.js.map → pk-color-input-4LDV0Z3W.js.map} +1 -1
- package/dist/chunks/{pk-combobox-ag89QEX2.js → pk-combobox-BeddzAsl.js} +19 -19
- package/dist/chunks/{pk-combobox-ag89QEX2.js.map → pk-combobox-BeddzAsl.js.map} +1 -1
- package/dist/chunks/{pk-connect.styles-BhW406jt.js → pk-connect.styles-ciqZMK3B.js} +1 -1
- package/dist/chunks/{pk-connect.styles-BhW406jt.js.map → pk-connect.styles-ciqZMK3B.js.map} +1 -1
- package/dist/chunks/{pk-copy-button-BVaOLtYG.js → pk-copy-button-KegSx46o.js} +29 -8
- package/dist/chunks/pk-copy-button-KegSx46o.js.map +1 -0
- package/dist/chunks/{pk-date-picker-C2YvDPNm.js → pk-date-picker-D_JFep-Y.js} +19 -19
- package/dist/chunks/{pk-date-picker-C2YvDPNm.js.map → pk-date-picker-D_JFep-Y.js.map} +1 -1
- package/dist/chunks/{pk-dialog-VMQqLW1f.js → pk-dialog-CFU850OH.js} +8 -8
- package/dist/chunks/{pk-dialog-VMQqLW1f.js.map → pk-dialog-CFU850OH.js.map} +1 -1
- package/dist/chunks/{pk-dropdown-item-D9OaG5o-.js → pk-dropdown-item-A4P4zfVF.js} +5 -5
- package/dist/chunks/{pk-dropdown-item-D9OaG5o-.js.map → pk-dropdown-item-A4P4zfVF.js.map} +1 -1
- package/dist/chunks/{pk-dropdown-label-CRNWMWQd.js → pk-dropdown-label-PqDxMkCI.js} +1 -1
- package/dist/chunks/{pk-dropdown-label-CRNWMWQd.js.map → pk-dropdown-label-PqDxMkCI.js.map} +1 -1
- package/dist/chunks/{pk-dropdown-menu-DW1wI8xQ.js → pk-dropdown-menu-C_vasBoa.js} +9 -9
- package/dist/chunks/{pk-dropdown-menu-DW1wI8xQ.js.map → pk-dropdown-menu-C_vasBoa.js.map} +1 -1
- package/dist/chunks/{pk-editable-table-DDnu1I8Y.js → pk-editable-table-B85NhFYY.js} +18 -18
- package/dist/chunks/{pk-editable-table-DDnu1I8Y.js.map → pk-editable-table-B85NhFYY.js.map} +1 -1
- package/dist/chunks/{pk-field-UAlMq6mQ.js → pk-field-BJA2fZ6s.js} +7 -7
- package/dist/chunks/{pk-field-UAlMq6mQ.js.map → pk-field-BJA2fZ6s.js.map} +1 -1
- package/dist/chunks/{pk-form-associated-element-GxX5lbnk.js → pk-form-associated-element-MqaHdIoH.js} +2 -2
- package/dist/chunks/{pk-form-associated-element-GxX5lbnk.js.map → pk-form-associated-element-MqaHdIoH.js.map} +1 -1
- package/dist/chunks/{pk-image-browser-Bj8LhWfk.js → pk-image-browser-DLAQcjFt.js} +19 -19
- package/dist/chunks/{pk-image-browser-Bj8LhWfk.js.map → pk-image-browser-DLAQcjFt.js.map} +1 -1
- package/dist/chunks/{pk-input-BywmK5n2.js → pk-input-CiUNLTSW.js} +11 -11
- package/dist/chunks/{pk-input-BywmK5n2.js.map → pk-input-CiUNLTSW.js.map} +1 -1
- package/dist/chunks/{pk-input-group-addon-ClBkGmAw.js → pk-input-group-addon-piOznzSS.js} +1 -1
- package/dist/chunks/{pk-input-group-addon-ClBkGmAw.js.map → pk-input-group-addon-piOznzSS.js.map} +1 -1
- package/dist/chunks/{pk-input-group-button-CHQHsWd4.js → pk-input-group-button-Di2vEJLo.js} +1 -1
- package/dist/chunks/{pk-input-group-button-CHQHsWd4.js.map → pk-input-group-button-Di2vEJLo.js.map} +1 -1
- package/dist/chunks/{pk-input-group-input-oNnqMBGU.js → pk-input-group-input-CwaaEfr1.js} +1 -1
- package/dist/chunks/{pk-input-group-input-oNnqMBGU.js.map → pk-input-group-input-CwaaEfr1.js.map} +1 -1
- package/dist/chunks/{pk-input-group-BLqKPnfc.js → pk-input-group-k7WV0pQI.js} +3 -3
- package/dist/chunks/{pk-input-group-BLqKPnfc.js.map → pk-input-group-k7WV0pQI.js.map} +1 -1
- package/dist/chunks/{pk-input-group-text-HUxlXROB.js → pk-input-group-text-C0VAdy0J.js} +1 -1
- package/dist/chunks/{pk-input-group-text-HUxlXROB.js.map → pk-input-group-text-C0VAdy0J.js.map} +1 -1
- package/dist/chunks/{pk-input-group-textarea-Cl2FNuw-.js → pk-input-group-textarea-DOG1NIlE.js} +1 -1
- package/dist/chunks/{pk-input-group-textarea-Cl2FNuw-.js.map → pk-input-group-textarea-DOG1NIlE.js.map} +1 -1
- package/dist/chunks/{pk-lightswitch-VHfJizBW.js → pk-lightswitch-FH5ZxMG2.js} +7 -7
- package/dist/chunks/{pk-lightswitch-VHfJizBW.js.map → pk-lightswitch-FH5ZxMG2.js.map} +1 -1
- package/dist/chunks/{pk-option-DQZHV9jL.js → pk-option-Cx52kLmz.js} +3 -3
- package/dist/chunks/{pk-option-DQZHV9jL.js.map → pk-option-Cx52kLmz.js.map} +1 -1
- package/dist/chunks/{pk-option-group-CCzJkBFp.js → pk-option-group-CYo9Ukue.js} +2 -2
- package/dist/chunks/{pk-option-group-CCzJkBFp.js.map → pk-option-group-CYo9Ukue.js.map} +1 -1
- package/dist/chunks/{pk-popover-D3jkHfwB.js → pk-popover-209LdoPr.js} +9 -9
- package/dist/chunks/{pk-popover-D3jkHfwB.js.map → pk-popover-209LdoPr.js.map} +1 -1
- package/dist/chunks/{pk-popup-B65tZMQH.js → pk-popup-0EIt9X_W.js} +3 -3
- package/dist/chunks/{pk-popup-B65tZMQH.js.map → pk-popup-0EIt9X_W.js.map} +1 -1
- package/dist/chunks/{pk-radio-group-Dzd-3HaQ.js → pk-radio-group-CruMBeeF.js} +6 -6
- package/dist/chunks/{pk-radio-group-Dzd-3HaQ.js.map → pk-radio-group-CruMBeeF.js.map} +1 -1
- package/dist/chunks/{pk-radio-B5XkMHy3.js → pk-radio-jgj6A0Wy.js} +1 -1
- package/dist/chunks/{pk-radio-B5XkMHy3.js.map → pk-radio-jgj6A0Wy.js.map} +1 -1
- package/dist/chunks/{pk-scroll-area-CdfNxYz8.js → pk-scroll-area-BaqN798b.js} +1 -1
- package/dist/chunks/{pk-scroll-area-CdfNxYz8.js.map → pk-scroll-area-BaqN798b.js.map} +1 -1
- package/dist/chunks/{pk-select-b5S5WKc-.js → pk-select-UUH7FE4H.js} +18 -18
- package/dist/chunks/{pk-select-b5S5WKc-.js.map → pk-select-UUH7FE4H.js.map} +1 -1
- package/dist/chunks/{pk-separator-N-VyjYE6.js → pk-separator-Bcxg_GO2.js} +1 -1
- package/dist/chunks/{pk-separator-N-VyjYE6.js.map → pk-separator-Bcxg_GO2.js.map} +1 -1
- package/dist/chunks/{pk-spinner-DweuYJ_Z.js → pk-spinner-CN365srE.js} +1 -1
- package/dist/chunks/{pk-spinner-DweuYJ_Z.js.map → pk-spinner-CN365srE.js.map} +1 -1
- package/dist/chunks/pk-state-panel-DPP7t-er.js +603 -0
- package/dist/chunks/pk-state-panel-DPP7t-er.js.map +1 -0
- package/dist/chunks/{pk-status-BehQARDv.js → pk-status-CYcadu0Q.js} +1 -1
- package/dist/chunks/{pk-status-BehQARDv.js.map → pk-status-CYcadu0Q.js.map} +1 -1
- package/dist/chunks/{pk-tab-CTloD18e.js → pk-tab-BmXNyDg7.js} +1 -1
- package/dist/chunks/{pk-tab-CTloD18e.js.map → pk-tab-BmXNyDg7.js.map} +1 -1
- package/dist/chunks/{pk-tab-heading-Cjcgebxn.js → pk-tab-heading-GZHVmCAd.js} +1 -1
- package/dist/chunks/{pk-tab-heading-Cjcgebxn.js.map → pk-tab-heading-GZHVmCAd.js.map} +1 -1
- package/dist/chunks/{pk-tab-panel-CkKU5-Ah.js → pk-tab-panel-OpM3f_cm.js} +1 -1
- package/dist/chunks/{pk-tab-panel-CkKU5-Ah.js.map → pk-tab-panel-OpM3f_cm.js.map} +1 -1
- package/dist/chunks/{pk-tabs-BgEBki1q.js → pk-tabs-x26NAw-V.js} +2 -2
- package/dist/chunks/{pk-tabs-BgEBki1q.js.map → pk-tabs-x26NAw-V.js.map} +1 -1
- package/dist/chunks/{pk-textarea-Dhj1WFLH.js → pk-textarea-CBijEmcV.js} +9 -9
- package/dist/chunks/{pk-textarea-Dhj1WFLH.js.map → pk-textarea-CBijEmcV.js.map} +1 -1
- package/dist/chunks/{pk-time-picker-ChRbKHNB.js → pk-time-picker-D-u5-7pf.js} +5 -5
- package/dist/chunks/{pk-time-picker-ChRbKHNB.js.map → pk-time-picker-D-u5-7pf.js.map} +1 -1
- package/dist/chunks/{pk-tiptap-content-CL8smjGi.js → pk-tiptap-content-BGxMO3T4.js} +2 -2
- package/dist/chunks/{pk-tiptap-content-CL8smjGi.js.map → pk-tiptap-content-BGxMO3T4.js.map} +1 -1
- package/dist/chunks/{pk-tiptap-editor-BzZ-J2sl.js → pk-tiptap-editor-BeuyzH5l.js} +20 -20
- package/dist/chunks/pk-tiptap-editor-BeuyzH5l.js.map +1 -0
- package/dist/chunks/{pk-tiptap-input-YKg4VLp_.js → pk-tiptap-input-CQojaxDH.js} +5 -5
- package/dist/chunks/{pk-tiptap-input-YKg4VLp_.js.map → pk-tiptap-input-CQojaxDH.js.map} +1 -1
- package/dist/chunks/{pk-toggle-BthhH7vl.js → pk-toggle-CAtGO_Le.js} +2 -2
- package/dist/chunks/{pk-toggle-BthhH7vl.js.map → pk-toggle-CAtGO_Le.js.map} +1 -1
- package/dist/chunks/{pk-toggle-group-D2Quux8D.js → pk-toggle-group-CLso6OE7.js} +1 -1
- package/dist/chunks/{pk-toggle-group-D2Quux8D.js.map → pk-toggle-group-CLso6OE7.js.map} +1 -1
- package/dist/chunks/{pk-tooltip--QBV6puX.js → pk-tooltip-C6yb4CXI.js} +5 -5
- package/dist/chunks/{pk-tooltip--QBV6puX.js.map → pk-tooltip-C6yb4CXI.js.map} +1 -1
- package/dist/chunks/{popup-content-animation.styles-BnNiguJo.js → popup-content-animation.styles-EUnGV75J.js} +1 -1
- package/dist/chunks/{popup-content-animation.styles-BnNiguJo.js.map → popup-content-animation.styles-EUnGV75J.js.map} +1 -1
- package/dist/chunks/{popup-placement-animation-WlEXnS85.js → popup-placement-animation-GvFXER7D.js} +1 -1
- package/dist/chunks/{popup-placement-animation-WlEXnS85.js.map → popup-placement-animation-GvFXER7D.js.map} +1 -1
- package/dist/chunks/{popup-pointer-CuLjk1th.js → popup-pointer-BTS3Y6LE.js} +1 -1
- package/dist/chunks/{popup-pointer-CuLjk1th.js.map → popup-pointer-BTS3Y6LE.js.map} +1 -1
- package/dist/chunks/{register-C6_F-VwU.js → register-BDO_LUHK.js} +57 -51
- package/dist/chunks/register-BDO_LUHK.js.map +1 -0
- package/dist/chunks/{register-components-BT9THgdh.js → register-components-Dcdn1e3S.js} +1 -1
- package/dist/chunks/{register-components-BT9THgdh.js.map → register-components-Dcdn1e3S.js.map} +1 -1
- package/dist/chunks/{render-Dvc3MHQR.js → render-BKGW1a68.js} +1 -1
- package/dist/chunks/{render-Dvc3MHQR.js.map → render-BKGW1a68.js.map} +1 -1
- package/dist/chunks/{required-validator-CEg8dvjS.js → required-validator-CaRnQk1V.js} +1 -1
- package/dist/chunks/{required-validator-CEg8dvjS.js.map → required-validator-CaRnQk1V.js.map} +1 -1
- package/dist/chunks/{scroll-lock-Bbh3Sc5g.js → scroll-lock-gTFrvIPu.js} +1 -1
- package/dist/chunks/{scroll-lock-Bbh3Sc5g.js.map → scroll-lock-gTFrvIPu.js.map} +1 -1
- package/dist/chunks/{spinner-utils-CDfHypTv.js → spinner-utils-Co_4X3ip.js} +1 -1
- package/dist/chunks/{spinner-utils-CDfHypTv.js.map → spinner-utils-Co_4X3ip.js.map} +1 -1
- package/dist/chunks/{supports-popover-CUBsbHpS.js → supports-popover-6lNVStLh.js} +1 -1
- package/dist/chunks/{supports-popover-CUBsbHpS.js.map → supports-popover-6lNVStLh.js.map} +1 -1
- package/dist/chunks/{sync-listbox-separators-B1-V0oJi.js → sync-listbox-separators-CPFtrpNq.js} +1 -1
- package/dist/chunks/{sync-listbox-separators-B1-V0oJi.js.map → sync-listbox-separators-CPFtrpNq.js.map} +1 -1
- package/dist/chunks/{tiptap.styles-CPRows--.js → tiptap.styles-DjhIrSBN.js} +2 -2
- package/dist/chunks/{tiptap.styles-CPRows--.js.map → tiptap.styles-DjhIrSBN.js.map} +1 -1
- package/dist/component-registry.d.ts.map +1 -1
- package/dist/components/alert/index.d.ts +2 -0
- package/dist/components/alert/index.d.ts.map +1 -0
- package/dist/components/alert/pk-alert.d.ts +95 -0
- package/dist/components/alert/pk-alert.d.ts.map +1 -0
- package/dist/components/alert/pk-alert.js +2 -0
- package/dist/components/alert/pk-alert.styles.d.ts +2 -0
- package/dist/components/alert/pk-alert.styles.d.ts.map +1 -0
- package/dist/components/alert.d.ts +2 -0
- package/dist/components/alert.js +2 -0
- package/dist/components/autocomplete/pk-autocomplete.js +1 -1
- package/dist/components/autocomplete.js +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.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/connect/pk-connect-oauth.js +3 -3
- package/dist/components/connect/pk-connect.d.ts +0 -1
- package/dist/components/connect/pk-connect.d.ts.map +1 -1
- package/dist/components/connect/pk-connect.js +25 -48
- package/dist/components/connect/pk-connect.js.map +1 -1
- package/dist/components/copy-button/pk-copy-button.d.ts +17 -2
- 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.js +3 -3
- 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/image-browser/pk-image-browser.js +1 -1
- package/dist/components/image-browser.js +1 -1
- package/dist/components/input/pk-input.js +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.js +1 -1
- package/dist/components/select/pk-option.js +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 +2 -2
- package/dist/components/state-panel/index.d.ts +2 -0
- package/dist/components/state-panel/index.d.ts.map +1 -0
- package/dist/components/state-panel/pk-state-panel.d.ts +89 -0
- package/dist/components/state-panel/pk-state-panel.d.ts.map +1 -0
- package/dist/components/state-panel/pk-state-panel.js +2 -0
- package/dist/components/state-panel/pk-state-panel.styles.d.ts +2 -0
- package/dist/components/state-panel/pk-state-panel.styles.d.ts.map +1 -0
- package/dist/components/state-panel.d.ts +2 -0
- package/dist/components/state-panel.js +2 -0
- 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.d.ts +2 -0
- package/dist/components/tiptap/pk-tiptap-editor.d.ts.map +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/tiptap-utils.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.d.ts.map +1 -1
- package/dist/connect/register-cp-connect.js +8 -9
- package/dist/connect/register-cp-connect.js.map +1 -1
- package/dist/events/pk-dismiss.d.ts +10 -0
- package/dist/events/pk-dismiss.d.ts.map +1 -0
- package/dist/icons/index.js +2 -2
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +73 -66
- package/dist/index.js.map +1 -1
- package/dist/plugin-kit.css +2 -0
- package/dist/plugin-kit.js +4 -4
- 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.d.ts +5 -1
- package/dist/register.d.ts.map +1 -1
- package/dist/register.js +59 -55
- package/dist/styles/connect/pk-connect.css +6 -107
- package/dist/utilities/fouce.css +2 -0
- package/dist-loader/chunks/{button-group-item.styles-CsBQ3Cyh.js → button-group-item.styles-CXLuiMeZ.js} +1 -1
- package/dist-loader/chunks/{lit-DpLik9Rf.js → lit-s6aadvWG.js} +78 -78
- package/dist-loader/chunks/{option-filter-Bc5aNNT0.js → option-filter-DH11hDpV.js} +1 -1
- package/dist-loader/chunks/{pk-base-B2MqxErC.js → pk-base-Om6X9ab5.js} +1 -1
- package/dist-loader/chunks/{pk-button-Dfm23jEC.js → pk-button-nSZxt8_B.js} +5 -5
- package/dist-loader/chunks/{pk-calendar-BuSULJCU.js → pk-calendar-BS7Mfme_.js} +5 -5
- package/dist-loader/chunks/{pk-checkbox-BDoq3xg0.js → pk-checkbox-CYUcOnco.js} +4 -4
- package/dist-loader/chunks/{pk-color-input-eLjO9zfn.js → pk-color-input-BjDit7z0.js} +4 -4
- package/dist-loader/chunks/{pk-combobox-DBvcyxRC.js → pk-combobox-DyexEhFo.js} +14 -14
- package/dist-loader/chunks/{pk-connect.styles-k61snd3X.js → pk-connect.styles-BsPAXjgF.js} +1 -1
- package/dist-loader/chunks/pk-copy-button-CoN83ilF.js +198 -0
- package/dist-loader/chunks/{pk-date-picker-CYLpYIji.js → pk-date-picker-CO6deRCu.js} +14 -14
- package/dist-loader/chunks/{pk-dialog-BtrH5Ke0.js → pk-dialog-BWo6iDnY.js} +6 -6
- package/dist-loader/chunks/{pk-dropdown-item-D8tfEU-k.js → pk-dropdown-item-CbujjI8U.js} +7 -7
- package/dist-loader/chunks/{pk-dropdown-label-TbLj4bHK.js → pk-dropdown-label-9X4ctyES.js} +2 -2
- package/dist-loader/chunks/{pk-dropdown-menu-C4GDW5pE.js → pk-dropdown-menu-D1KpGuqU.js} +8 -8
- package/dist-loader/chunks/{pk-field-BM0XD9Ij.js → pk-field-DzggayrX.js} +5 -5
- package/dist-loader/chunks/{pk-icon-_1F1aL74.js → pk-icon-DQPqxFKW.js} +3 -3
- package/dist-loader/chunks/{pk-input-DvBrD7Md.js → pk-input-C1peOijH.js} +8 -8
- package/dist-loader/chunks/{pk-lightswitch-CcwlLQ9f.js → pk-lightswitch-Y-I3eKCt.js} +6 -6
- package/dist-loader/chunks/{pk-option-DATPm0Bo.js → pk-option-IfazQDxz.js} +4 -4
- package/dist-loader/chunks/{pk-popup-CUuGs8r_.js → pk-popup-BrLT_4kD.js} +4 -4
- package/dist-loader/chunks/{pk-select-DpcvbzUL.js → pk-select-49fogRYV.js} +13 -13
- package/dist-loader/chunks/{pk-spinner-Dk_LbvHW.js → pk-spinner-BmnrA60m.js} +2 -2
- package/dist-loader/chunks/pk-state-panel-DKf54EnJ.js +600 -0
- package/dist-loader/chunks/{pk-status-B8UvjIp2.js → pk-status-Dat3_D-T.js} +2 -2
- package/dist-loader/chunks/{pk-textarea-DeSuxufJ.js → pk-textarea-DPb2R8gV.js} +6 -6
- package/dist-loader/chunks/{pk-time-picker-DpJt8biN.js → pk-time-picker-CJiQTVuC.js} +6 -6
- package/dist-loader/chunks/{pk-tooltip-DcF9J5GT.js → pk-tooltip-CqwQfOPV.js} +5 -5
- package/dist-loader/chunks/{popup-content-animation.styles-duCg9-CH.js → popup-content-animation.styles-CWR2mend.js} +1 -1
- package/dist-loader/chunks/{render-Bnzcxfss.js → render-BuA2YeZN.js} +1 -1
- package/dist-loader/chunks/{svg-Bz-bXZn7.js → svg-C6YcJMk9.js} +8 -1
- package/dist-loader/chunks/{tiptap-CgXkiK8d.js → tiptap-BhYH5Dva.js} +1 -1
- package/dist-loader/chunks/{tiptap.styles-C0E1NpSx.js → tiptap.styles-BckAim0_.js} +2 -2
- package/dist-loader/components/alert/alert.js +661 -0
- package/dist-loader/components/autocomplete/autocomplete.js +14 -14
- package/dist-loader/components/button/button.js +1 -1
- package/dist-loader/components/button-group/button-group-separator.js +2 -2
- package/dist-loader/components/button-group/button-group-text.js +3 -3
- package/dist-loader/components/button-group/button-group.js +2 -2
- 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 +3 -3
- package/dist-loader/components/code-editor/code-editor.js +4 -4
- 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 +5 -5
- package/dist-loader/components/connect/connect.js +28 -51
- package/dist-loader/components/copy-button/copy-button.js +1 -176
- 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 +2 -2
- package/dist-loader/components/editable-table/editable-table.js +18 -18
- 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 +14 -14
- package/dist-loader/components/input/input.js +1 -1
- package/dist-loader/components/input-group/input-group-addon.js +2 -2
- package/dist-loader/components/input-group/input-group-button.js +2 -2
- package/dist-loader/components/input-group/input-group-input.js +2 -2
- package/dist-loader/components/input-group/input-group-text.js +2 -2
- package/dist-loader/components/input-group/input-group-textarea.js +2 -2
- package/dist-loader/components/input-group/input-group.js +3 -3
- package/dist-loader/components/lightswitch/lightswitch.js +1 -1
- package/dist-loader/components/popover/popover.js +8 -8
- package/dist-loader/components/popup/popup.js +1 -1
- package/dist-loader/components/radio-group/radio-group.js +5 -5
- package/dist-loader/components/radio-group/radio.js +2 -2
- package/dist-loader/components/scroll-area/scroll-area.js +2 -2
- package/dist-loader/components/select/option-group.js +2 -2
- 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 +2 -2
- package/dist-loader/components/spinner/spinner.js +1 -1
- package/dist-loader/components/state-panel/state-panel.js +2 -0
- package/dist-loader/components/status/status.js +1 -1
- package/dist-loader/components/tabs/tab-heading.js +2 -2
- package/dist-loader/components/tabs/tab-panel.js +2 -2
- package/dist-loader/components/tabs/tab.js +2 -2
- package/dist-loader/components/tabs/tabs.js +2 -2
- 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 +4 -4
- package/dist-loader/components/tiptap/tiptap-editor.js +19 -19
- package/dist-loader/components/tiptap/tiptap-input.js +5 -5
- package/dist-loader/components/toggle/toggle.js +3 -3
- package/dist-loader/components/toggle-group/toggle-group.js +2 -2
- 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/styles/connect/pk-connect.css +6 -107
- package/dist-loader/utilities/fouce.css +2 -0
- package/package.json +47 -7
- package/dist/chunks/component-registry-D34fm8xW.js.map +0 -1
- package/dist/chunks/pk-copy-button-BVaOLtYG.js.map +0 -1
- package/dist/chunks/pk-tiptap-editor-BzZ-J2sl.js.map +0 -1
- package/dist/chunks/register-C6_F-VwU.js.map +0 -1
- /package/dist-loader/chunks/{animate-with-class-DT0jwaR_.js → animate-with-class-BpZi7v-y.js} +0 -0
- /package/dist-loader/chunks/{codemirror-CSgOT0QM.js → codemirror-CU2NB7wh.js} +0 -0
- /package/dist-loader/chunks/{field-labels-D3lKQ2nq.js → field-labels-D7ccWdRn.js} +0 -0
- /package/dist-loader/chunks/{floating-ui-Cj0imr6d.js → floating-ui-B84As3F-.js} +0 -0
- /package/dist-loader/chunks/{has-slot-BGJeJdHr.js → has-slot-BvdEcnpm.js} +0 -0
- /package/dist-loader/chunks/{mirror-validator-C5XrXPaq.js → mirror-validator-9X0wdFnh.js} +0 -0
- /package/dist-loader/chunks/{overlay-lifecycle-C3tSQ3UR.js → overlay-lifecycle-CSIBJZgQ.js} +0 -0
- /package/dist-loader/chunks/{pk-clear-BMZUzwDt.js → pk-clear-BL8m1NyC.js} +0 -0
- /package/dist-loader/chunks/{popup-placement-animation-WlEXnS85.js → popup-placement-animation-BQdKabXq.js} +0 -0
- /package/dist-loader/chunks/{popup-pointer-Ck28WdVP.js → popup-pointer-BNwlPGKA.js} +0 -0
- /package/dist-loader/chunks/{required-validator-0XwZtX9k.js → required-validator-DCTovZ6r.js} +0 -0
- /package/dist-loader/chunks/{sync-listbox-separators-Ch5krDUs.js → sync-listbox-separators-rbu8jrAa.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"active-elements-
|
|
1
|
+
{"version":3,"file":"active-elements-DM_lCHaW.js","names":[],"sources":["../../src/a11y/active-elements.ts"],"sourcesContent":["/**\n * Shadow-DOM-aware active element chain — adapted from internal/active-elements.ts.\n */\nexport function* activeElements(\n activeElement: Element | null = document.activeElement,\n): Generator<Element> {\n if (activeElement === null || activeElement === undefined) {\n return;\n }\n\n yield activeElement;\n\n if ('shadowRoot' in activeElement && activeElement.shadowRoot && activeElement.shadowRoot.mode !== 'closed') {\n yield* activeElements(activeElement.shadowRoot.activeElement);\n }\n}\n\nexport function getDeepestActiveElement(): Element | undefined {\n return [...activeElements()].pop();\n}\n"],"mappings":";;;;AAGA,UAAiB,eACb,gBAAgC,SAAS,eACvB;AAClB,KAAI,kBAAkB,QAAQ,kBAAkB,KAAA,EAC5C;AAGJ,OAAM;AAEN,KAAI,gBAAgB,iBAAiB,cAAc,cAAc,cAAc,WAAW,SAAS,SAC/F,QAAO,eAAe,cAAc,WAAW,cAAc;;AAIrE,SAAgB,0BAA+C;AAC3D,QAAO,CAAC,GAAG,gBAAgB,CAAC,CAAC,KAAK"}
|
package/dist/chunks/{animate-with-class-CsDwYnXL.js.map → animate-with-class-NP-yJVt_.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animate-with-class-
|
|
1
|
+
{"version":3,"file":"animate-with-class-NP-yJVt_.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
|
-
import { t as SUPPORTS_POPOVER } from "./supports-popover-
|
|
2
|
-
import { n as COMPONENT_MODULE_PATHS } from "./component-registry-
|
|
1
|
+
import { t as SUPPORTS_POPOVER } from "./supports-popover-6lNVStLh.js";
|
|
2
|
+
import { n as COMPONENT_MODULE_PATHS } from "./component-registry-DoevfR-u.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-DnSfHkrD.js.map
|
|
@@ -1 +1 @@
|
|
|
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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"}
|
|
1
|
+
{"version":3,"file":"autoloader-DnSfHkrD.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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"}
|
package/dist/chunks/{button-group-item.styles-DYmBR28a.js → button-group-item.styles-G05d0DNI.js}
RENAMED
|
@@ -144,4 +144,4 @@ function buttonGroupBorderJoinStyles(surfaceSelector) {
|
|
|
144
144
|
//#endregion
|
|
145
145
|
export { buttonGroupIndentStyles as i, buttonGroupCornerRadiusStyles as n, buttonGroupCornerRoleStyles as r, buttonGroupBorderJoinStyles as t };
|
|
146
146
|
|
|
147
|
-
//# sourceMappingURL=button-group-item.styles-
|
|
147
|
+
//# sourceMappingURL=button-group-item.styles-G05d0DNI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button-group-item.styles-
|
|
1
|
+
{"version":3,"file":"button-group-item.styles-G05d0DNI.js","names":[],"sources":["../../src/components/button-group/button-group-item.styles.ts"],"sourcesContent":["import { css, unsafeCSS, type CSSResult } from 'lit';\n\n/**\n * Apply grouped corner radii on an inner surface — reads vars set by `pk-button-group` on the host.\n * Mirrors `--_button-*-radius` consumption in `pk-button`.\n */\nexport function buttonGroupCornerRadiusStyles(\n surfaceSelector: string,\n fallbackRadius = 'var(--pk-btn-radius, var(--pk-radius-lg))',\n): CSSResult {\n const surface = unsafeCSS(surfaceSelector);\n const fallback = unsafeCSS(fallbackRadius);\n\n return css`\n ${surface} {\n border-top-left-radius: var(--pk-bg-start-start-radius, ${fallback});\n border-top-right-radius: var(--pk-bg-start-end-radius, ${fallback});\n border-bottom-left-radius: var(--pk-bg-end-start-radius, ${fallback});\n border-bottom-right-radius: var(--pk-bg-end-end-radius, ${fallback});\n }\n `;\n}\n\n/** Zero inner corner radii based on group position — consumed by `buttonGroupCornerRadiusStyles`. */\nexport function buttonGroupCornerRoleStyles(): CSSResult {\n return css`\n :host([data-pk-group-orientation='horizontal']:not([data-pk-group-item-first]):not([data-pk-group-item-last])) {\n --pk-bg-start-start-radius: 0;\n --pk-bg-start-end-radius: 0;\n --pk-bg-end-start-radius: 0;\n --pk-bg-end-end-radius: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-item-first]:not([data-pk-group-item-last])) {\n --pk-bg-start-end-radius: 0;\n --pk-bg-end-end-radius: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-item-last]:not([data-pk-group-item-first])) {\n --pk-bg-start-start-radius: 0;\n --pk-bg-end-start-radius: 0;\n }\n\n :host([data-pk-group-orientation='vertical']:not([data-pk-group-item-first]):not([data-pk-group-item-last])) {\n --pk-bg-start-start-radius: 0;\n --pk-bg-start-end-radius: 0;\n --pk-bg-end-start-radius: 0;\n --pk-bg-end-end-radius: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-item-first]:not([data-pk-group-item-last])) {\n --pk-bg-end-start-radius: 0;\n --pk-bg-end-end-radius: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-item-last]:not([data-pk-group-item-first])) {\n --pk-bg-start-start-radius: 0;\n --pk-bg-start-end-radius: 0;\n }\n `;\n}\n\n/** Overlap margins for grouped controls — axis follows group orientation. */\nexport function buttonGroupIndentStyles(): CSSResult {\n return css`\n :host([data-pk-group-orientation='horizontal'][data-pk-group-join][variant='outline']),\n :host([data-pk-group-orientation='horizontal'][data-pk-group-join][variant='dashed']) {\n margin-inline-start: var(--pk-bg-horizontal-indent-outlined, 0);\n margin-block-start: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-join][variant='outline']),\n :host([data-pk-group-orientation='vertical'][data-pk-group-join][variant='dashed']) {\n margin-block-start: var(--pk-bg-vertical-indent-outlined, 0);\n margin-inline-start: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-join]:not([variant='outline']):not([variant='dashed']):not([variant='link']):not([variant='none'])) {\n margin-inline-start: var(--pk-bg-horizontal-indent, 0);\n margin-block-start: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-join]:not([variant='outline']):not([variant='dashed']):not([variant='link']):not([variant='none'])) {\n margin-block-start: var(--pk-bg-vertical-indent, 0);\n margin-inline-start: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider][data-pk-group-join][variant='primary']),\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider][data-pk-group-join][variant='secondary']),\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider][data-pk-group-join][variant='default']) {\n margin-inline-start: 0;\n margin-block-start: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-divider][data-pk-group-join][variant='primary']),\n :host([data-pk-group-orientation='vertical'][data-pk-group-divider][data-pk-group-join][variant='secondary']),\n :host([data-pk-group-orientation='vertical'][data-pk-group-divider][data-pk-group-join][variant='default']) {\n margin-block-start: 0;\n margin-inline-start: 0;\n }\n\n /* Filled variants — Craft margin gap; parent background shows through.\n * !important: outer preflight/utilities beat non-important :host margin\n * (revert-layer cannot restore shadow host values — it still specifies outer 0).\n */\n :host([data-pk-group-orientation='horizontal'][data-pk-group-internal-trail][variant='primary']),\n :host([data-pk-group-orientation='horizontal'][data-pk-group-internal-trail][variant='secondary']),\n :host([data-pk-group-orientation='horizontal'][data-pk-group-internal-trail][variant='default']) {\n margin-inline-end: var(--pk-btn-group-gap, 1px) !important;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-internal-trail][variant='primary']),\n :host([data-pk-group-orientation='vertical'][data-pk-group-internal-trail][variant='secondary']),\n :host([data-pk-group-orientation='vertical'][data-pk-group-internal-trail][variant='default']) {\n margin-block-end: var(--pk-btn-group-gap, 1px) !important;\n }\n `;\n}\n\n/** Collapse the shared internal border edge on bordered grouped surfaces. */\nexport function buttonGroupBorderJoinStyles(surfaceSelector: string): CSSResult {\n const surface = unsafeCSS(surfaceSelector);\n\n return css`\n :host([data-pk-group-orientation='horizontal'][data-pk-group-join]:not([data-pk-group-divider])) ${surface} {\n border-left-width: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-join]:not([data-pk-group-divider])) ${surface} {\n border-top-width: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider]:not([variant='outline']):not([variant='dashed'])) ${surface} {\n border-left-width: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-divider]:not([variant='outline']):not([variant='dashed'])) ${surface} {\n border-top-width: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-internal-trail][variant='outline']) ${surface},\n :host([data-pk-group-orientation='horizontal'][data-pk-group-internal-trail][variant='dashed']) ${surface} {\n border-right-width: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-internal-trail][variant='outline']) ${surface},\n :host([data-pk-group-orientation='vertical'][data-pk-group-internal-trail][variant='dashed']) ${surface} {\n border-bottom-width: 0;\n }\n `;\n}\n"],"mappings":";;;;;;AAMA,SAAgB,8BACZ,iBACA,iBAAiB,6CACR;CACT,MAAM,UAAU,UAAU,gBAAgB;CAC1C,MAAM,WAAW,UAAU,eAAe;AAE1C,QAAO,GAAG;UACJ,QAAQ;sEACoD,SAAS;qEACV,SAAS;uEACP,SAAS;sEACV,SAAS;;;;;AAM/E,SAAgB,8BAAyC;AACrD,QAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCd,SAAgB,0BAAqC;AACjD,QAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDd,SAAgB,4BAA4B,iBAAoC;CAC5E,MAAM,UAAU,UAAU,gBAAgB;AAE1C,QAAO,GAAG;2GAC6F,QAAQ;;;;yGAIV,QAAQ;;;;kIAIiB,QAAQ;;;;gIAIV,QAAQ;;;;2GAI7B,QAAQ;0GACT,QAAQ;;;;yGAIT,QAAQ;wGACT,QAAQ"}
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* Module paths are relative to the directory that contains plugin-kit.loader.js.
|
|
5
5
|
*/
|
|
6
6
|
var COMPONENT_MODULE_PATHS = {
|
|
7
|
+
"pk-alert": "components/alert/alert.js",
|
|
8
|
+
"pk-state-panel": "components/state-panel/state-panel.js",
|
|
7
9
|
"pk-spinner": "components/spinner/spinner.js",
|
|
8
10
|
"pk-icon": "components/icon/icon.js",
|
|
9
11
|
"pk-button": "components/button/button.js",
|
|
@@ -62,6 +64,8 @@ var COMPONENT_MODULE_PATHS = {
|
|
|
62
64
|
};
|
|
63
65
|
/** Vite loader-build entries: output key → source module. */
|
|
64
66
|
var LOADER_COMPONENT_ENTRIES = {
|
|
67
|
+
"components/alert/alert": "src/components/alert/pk-alert.ts",
|
|
68
|
+
"components/state-panel/state-panel": "src/components/state-panel/pk-state-panel.ts",
|
|
65
69
|
"components/spinner/spinner": "src/components/spinner/pk-spinner.ts",
|
|
66
70
|
"components/icon/icon": "src/components/icon/pk-icon-loader.ts",
|
|
67
71
|
"components/button/button": "src/components/button/pk-button.ts",
|
|
@@ -135,4 +139,4 @@ var BUNDLER_TAG_IMPORT_PATHS = Object.fromEntries(Object.keys(BUNDLER_COMPONENT_
|
|
|
135
139
|
//#endregion
|
|
136
140
|
export { COMPONENT_MODULE_PATHS as n, BUNDLER_TAG_IMPORT_PATHS as t };
|
|
137
141
|
|
|
138
|
-
//# sourceMappingURL=component-registry-
|
|
142
|
+
//# sourceMappingURL=component-registry-DoevfR-u.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-registry-DoevfR-u.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-alert': 'components/alert/alert.js',\n 'pk-state-panel': 'components/state-panel/state-panel.js',\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/alert/alert': 'src/components/alert/pk-alert.ts',\n 'components/state-panel/state-panel': 'src/components/state-panel/pk-state-panel.ts',\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 'alert': 'src/components/alert/index.ts',\n 'state-panel': 'src/components/state-panel/index.ts',\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,YAAY;CACZ,kBAAkB;CAClB,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,0BAA0B;CAC1B,sCAAsC;CACtC,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-aria-
|
|
1
|
+
{"version":3,"file":"control-aria-CzouQRZD.js","names":[],"sources":["../../src/internal/control-aria.ts"],"sourcesContent":["/** ARIA attributes mirrored from a field shell host onto the focusable native control. */\nexport const MIRRORED_ARIA_ATTRIBUTES = [\n 'aria-labelledby',\n 'aria-describedby',\n 'aria-invalid',\n 'aria-errormessage',\n 'aria-required',\n 'aria-label',\n] as const;\n\n/** True when a parent `pk-field` (or similar) has wired external field chrome. */\nexport function hasExternalFieldAria(host: Element): boolean {\n return host.hasAttribute('aria-labelledby')\n || host.hasAttribute('aria-describedby')\n || host.hasAttribute('aria-errormessage');\n}\n\n/** Copy mirrored ARIA attributes from `source` onto `target`. */\nexport function mirrorAriaAttributes(source: Element, target: Element): void {\n for (const name of MIRRORED_ARIA_ATTRIBUTES) {\n const value = source.getAttribute(name);\n\n if (value !== null) {\n target.setAttribute(name, value);\n } else {\n target.removeAttribute(name);\n }\n }\n}\n\nexport type StandaloneControlAriaOptions = {\n control: HTMLElement;\n labelId?: string;\n instructionsId?: string;\n hasLabel: boolean;\n hasInstructions: boolean;\n required?: boolean;\n invalid?: boolean;\n};\n\n/** Wire label/instructions/required/invalid for standalone controls ( internal layout). */\nexport function syncStandaloneControlAria({\n control,\n labelId,\n instructionsId,\n hasLabel,\n hasInstructions,\n required = false,\n invalid = false,\n}: StandaloneControlAriaOptions): void {\n if (hasLabel && labelId) {\n control.setAttribute('aria-labelledby', labelId);\n } else {\n control.removeAttribute('aria-labelledby');\n }\n\n if (hasInstructions && instructionsId) {\n control.setAttribute('aria-describedby', instructionsId);\n } else {\n control.removeAttribute('aria-describedby');\n }\n\n if (required) {\n control.setAttribute('aria-required', 'true');\n } else {\n control.removeAttribute('aria-required');\n }\n\n if (invalid) {\n control.setAttribute('aria-invalid', 'true');\n } else {\n control.removeAttribute('aria-invalid');\n }\n\n control.removeAttribute('aria-errormessage');\n}\n\n/** Observes host ARIA attribute changes and mirrors them to a focusable inner control. */\nexport class HostAriaMirror {\n private observer?: MutationObserver;\n\n constructor(\n private readonly host: HTMLElement,\n private readonly getTarget: () => HTMLElement | null | undefined,\n private readonly onSync?: () => void,\n ) {}\n\n connect(): void {\n this.sync();\n\n this.observer = new MutationObserver(() => {\n this.sync();\n });\n\n this.observer.observe(this.host, {\n attributes: true,\n attributeFilter: [...MIRRORED_ARIA_ATTRIBUTES],\n });\n }\n\n disconnect(): void {\n this.observer?.disconnect();\n this.observer = undefined;\n }\n\n sync(): void {\n if (!hasExternalFieldAria(this.host)) {\n this.onSync?.();\n return;\n }\n\n const target = this.getTarget();\n\n if (!target) {\n return;\n }\n\n mirrorAriaAttributes(this.host, target);\n }\n}\n\n/** Mirror host ARIA onto the first slotted input/textarea inside a group wrapper. */\nexport function mirrorHostAriaToSlottedControl(host: HTMLElement, slot: HTMLSlotElement): void {\n if (!hasExternalFieldAria(host)) {\n return;\n }\n\n const [control] = slot.assignedElements({ flatten: true }).filter((element) => {\n if (!(element instanceof HTMLElement)) {\n return false;\n }\n\n if (element.matches('pk-input-group-input, pk-input-group-textarea')) {\n return true;\n }\n\n return element.querySelector('input, textarea, select') instanceof HTMLElement;\n });\n\n if (!(control instanceof HTMLElement)) {\n return;\n }\n\n const target = control.matches('pk-input-group-input, pk-input-group-textarea')\n ? control.shadowRoot?.querySelector('input, textarea') ?? control.querySelector('input, textarea')\n : control.querySelector('input, textarea, select, button[aria-haspopup]');\n\n if (target instanceof HTMLElement) {\n mirrorAriaAttributes(host, target);\n }\n}\n"],"mappings":";;AACA,IAAa,2BAA2B;CACpC;CACA;CACA;CACA;CACA;CACA;CACH;;AAGD,SAAgB,qBAAqB,MAAwB;AACzD,QAAO,KAAK,aAAa,kBAAkB,IACpC,KAAK,aAAa,mBAAmB,IACrC,KAAK,aAAa,oBAAoB;;;AAIjD,SAAgB,qBAAqB,QAAiB,QAAuB;AACzE,MAAK,MAAM,QAAQ,0BAA0B;EACzC,MAAM,QAAQ,OAAO,aAAa,KAAK;AAEvC,MAAI,UAAU,KACV,QAAO,aAAa,MAAM,MAAM;MAEhC,QAAO,gBAAgB,KAAK;;;;AAgBxC,SAAgB,0BAA0B,EACtC,SACA,SACA,gBACA,UACA,iBACA,WAAW,OACX,UAAU,SACyB;AACnC,KAAI,YAAY,QACZ,SAAQ,aAAa,mBAAmB,QAAQ;KAEhD,SAAQ,gBAAgB,kBAAkB;AAG9C,KAAI,mBAAmB,eACnB,SAAQ,aAAa,oBAAoB,eAAe;KAExD,SAAQ,gBAAgB,mBAAmB;AAG/C,KAAI,SACA,SAAQ,aAAa,iBAAiB,OAAO;KAE7C,SAAQ,gBAAgB,gBAAgB;AAG5C,KAAI,QACA,SAAQ,aAAa,gBAAgB,OAAO;KAE5C,SAAQ,gBAAgB,eAAe;AAG3C,SAAQ,gBAAgB,oBAAoB;;;AAIhD,IAAa,iBAAb,MAA4B;CAGxB,YACI,MACA,WACA,QACF;AAHmB,OAAA,OAAA;AACA,OAAA,YAAA;AACA,OAAA,SAAA;;CAGrB,UAAgB;AACZ,OAAK,MAAM;AAEX,OAAK,WAAW,IAAI,uBAAuB;AACvC,QAAK,MAAM;IACb;AAEF,OAAK,SAAS,QAAQ,KAAK,MAAM;GAC7B,YAAY;GACZ,iBAAiB,CAAC,GAAG,yBAAyB;GACjD,CAAC;;CAGN,aAAmB;AACf,OAAK,UAAU,YAAY;AAC3B,OAAK,WAAW,KAAA;;CAGpB,OAAa;AACT,MAAI,CAAC,qBAAqB,KAAK,KAAK,EAAE;AAClC,QAAK,UAAU;AACf;;EAGJ,MAAM,SAAS,KAAK,WAAW;AAE/B,MAAI,CAAC,OACD;AAGJ,uBAAqB,KAAK,MAAM,OAAO"}
|
|
@@ -29,4 +29,4 @@ function getDismissibleStackSnapshot() {
|
|
|
29
29
|
//#endregion
|
|
30
30
|
export { unregisterDismissible as i, isTopDismissible as n, registerDismissible as r, getDismissibleStackSnapshot as t };
|
|
31
31
|
|
|
32
|
-
//# sourceMappingURL=dismissible-stack-
|
|
32
|
+
//# sourceMappingURL=dismissible-stack-B3BgzdQb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dismissible-stack-
|
|
1
|
+
{"version":3,"file":"dismissible-stack-B3BgzdQb.js","names":[],"sources":["../../src/a11y/dismissible-stack.ts"],"sourcesContent":["/**\n * Dismissible stack — adapted from internal/dismissible-stack.ts.\n * Ensures only the topmost overlay handles Escape.\n */\nconst dismissibleStack: object[] = [];\n\nexport function registerDismissible(key: object): void {\n dismissibleStack.push(key);\n}\n\nexport function unregisterDismissible(key: object): void {\n for (let index = dismissibleStack.length - 1; index >= 0; index -= 1) {\n if (dismissibleStack[index] === key) {\n dismissibleStack.splice(index, 1);\n break;\n }\n }\n}\n\nexport function isTopDismissible(key: object): boolean {\n return dismissibleStack.length > 0 && dismissibleStack[dismissibleStack.length - 1] === key;\n}\n\n/** Dev/diagnostic — ordered stack of dismissible overlay hosts (bottom → top). */\nexport function getDismissibleStackSnapshot(): string[] {\n return dismissibleStack.map((key) => {\n if (key instanceof HTMLElement) {\n const id = key.id ? `#${key.id}` : '';\n return `<${key.localName}${id}>`;\n }\n\n return key.constructor?.name ?? 'object';\n });\n}\n"],"mappings":";;;;;AAIA,IAAM,mBAA6B,EAAE;AAErC,SAAgB,oBAAoB,KAAmB;AACnD,kBAAiB,KAAK,IAAI;;AAG9B,SAAgB,sBAAsB,KAAmB;AACrD,MAAK,IAAI,QAAQ,iBAAiB,SAAS,GAAG,SAAS,GAAG,SAAS,EAC/D,KAAI,iBAAiB,WAAW,KAAK;AACjC,mBAAiB,OAAO,OAAO,EAAE;AACjC;;;AAKZ,SAAgB,iBAAiB,KAAsB;AACnD,QAAO,iBAAiB,SAAS,KAAK,iBAAiB,iBAAiB,SAAS,OAAO;;;AAI5F,SAAgB,8BAAwC;AACpD,QAAO,iBAAiB,KAAK,QAAQ;AACjC,MAAI,eAAe,aAAa;GAC5B,MAAM,KAAK,IAAI,KAAK,IAAI,IAAI,OAAO;AACnC,UAAO,IAAI,IAAI,YAAY,GAAG;;AAGlC,SAAO,IAAI,aAAa,QAAQ;GAClC"}
|
|
@@ -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-CGSfAGf-.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-labels-
|
|
1
|
+
{"version":3,"file":"field-labels-CGSfAGf-.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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as getDeepestActiveElement } from "./active-elements-
|
|
1
|
+
import { n as getDeepestActiveElement } from "./active-elements-DM_lCHaW.js";
|
|
2
2
|
//#region src/a11y/focus.ts
|
|
3
3
|
var idCounter = 0;
|
|
4
4
|
/** Stable unique id for aria-labelledby / aria-controls wiring inside components. */
|
|
@@ -119,4 +119,4 @@ var LiveRegion = class {
|
|
|
119
119
|
//#endregion
|
|
120
120
|
export { uniqueId as i, createFocusTrap as n, getFocusableElements as r, LiveRegion as t };
|
|
121
121
|
|
|
122
|
-
//# sourceMappingURL=focus-
|
|
122
|
+
//# sourceMappingURL=focus-C6pY4Ym4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-
|
|
1
|
+
{"version":3,"file":"focus-C6pY4Ym4.js","names":[],"sources":["../../src/a11y/focus.ts"],"sourcesContent":["import { getDeepestActiveElement } from './active-elements.js';\n\nlet idCounter = 0;\n\n/** Stable unique id for aria-labelledby / aria-controls wiring inside components. */\nexport function uniqueId(prefix = 'pk'): string {\n idCounter += 1;\n return `${prefix}-${idCounter}`;\n}\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\nconst FOCUSABLE_SELECTOR_WITH_DISABLED = [\n 'a[href]',\n 'button',\n 'input',\n 'select',\n 'textarea',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\nfunction isDisplayed(element: HTMLElement): boolean {\n return element.offsetParent !== null || element.getClientRects().length > 0;\n}\n\nfunction matchesFocusable(element: HTMLElement, includeDisabled: boolean): boolean {\n return element.matches(includeDisabled ? FOCUSABLE_SELECTOR_WITH_DISABLED : FOCUSABLE_SELECTOR);\n}\n\n/** Walks shadow roots and assigned slot content — required for slotted dialog actions. */\nfunction gatherFocusableElements(\n node: Node,\n includeDisabled: boolean,\n results: HTMLElement[],\n seen: Set<HTMLElement>,\n): void {\n if (node instanceof HTMLSlotElement) {\n for (const assigned of node.assignedElements({ flatten: true })) {\n gatherFocusableElements(assigned, includeDisabled, results, seen);\n }\n\n return;\n }\n\n if (!(node instanceof HTMLElement)) {\n return;\n }\n\n if (matchesFocusable(node, includeDisabled) && isDisplayed(node) && !seen.has(node)) {\n seen.add(node);\n results.push(node);\n }\n\n const subtree = node.shadowRoot ?? node;\n\n for (const child of subtree.childNodes) {\n gatherFocusableElements(child, includeDisabled, results, seen);\n }\n}\n\nexport function getFocusableElements(root: ParentNode, includeDisabled = false): HTMLElement[] {\n const results: HTMLElement[] = [];\n const seen = new Set<HTMLElement>();\n\n if (root instanceof DocumentFragment) {\n for (const child of root.childNodes) {\n gatherFocusableElements(child, includeDisabled, results, seen);\n }\n\n return results;\n }\n\n gatherFocusableElements(root as Node, includeDisabled, results, seen);\n return results;\n}\n\nfunction containsActiveElement(element: HTMLElement, active: Element | null | undefined): boolean {\n if (!active) {\n return false;\n }\n\n return element === active || element.contains(active);\n}\n\nfunction getActiveFocusIndex(focusable: HTMLElement[], active: Element | null | undefined): number {\n if (!active) {\n return -1;\n }\n\n return focusable.findIndex((element) => containsActiveElement(element, active));\n}\n\nexport type FocusTrapOptions = {\n root: HTMLElement;\n onEscape?: () => void;\n};\n\n/**\n * Focus trap for overlays — adapted from dialog patterns.\n * Uses deepest active element so shadow-DOM controls participate correctly.\n */\nexport function createFocusTrap({ root, onEscape }: FocusTrapOptions): () => void {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onEscape?.();\n return;\n }\n\n if (event.key !== 'Tab') {\n return;\n }\n\n const focusable = getFocusableElements(root);\n\n if (focusable.length === 0) {\n event.preventDefault();\n return;\n }\n\n const first = focusable[0]!;\n const last = focusable[focusable.length - 1]!;\n const active = getDeepestActiveElement() ?? document.activeElement;\n const activeIndex = getActiveFocusIndex(focusable, active);\n\n if (event.shiftKey) {\n if (activeIndex <= 0) {\n event.preventDefault();\n last.focus();\n }\n\n return;\n }\n\n if (activeIndex === -1 || activeIndex >= focusable.length - 1) {\n event.preventDefault();\n first.focus();\n }\n };\n\n document.addEventListener('keydown', handleKeyDown, true);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown, true);\n };\n}\n\n/** Screen reader announcements for async overlay state changes. */\nexport class LiveRegion {\n private readonly element: HTMLElement;\n\n constructor(politeness: 'polite' | 'assertive' = 'polite') {\n this.element = document.createElement('div');\n this.element.setAttribute('aria-live', politeness);\n this.element.setAttribute('aria-atomic', 'true');\n this.element.className = 'pk-visually-hidden';\n this.element.style.cssText = 'position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;';\n document.body.append(this.element);\n }\n\n announce(message: string): void {\n this.element.textContent = '';\n requestAnimationFrame(() => {\n this.element.textContent = message;\n });\n }\n\n destroy(): void {\n this.element.remove();\n }\n}\n"],"mappings":"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"}
|
package/dist/chunks/{form-control.styles-BQdimE5o.js.map → form-control.styles-BHwSsx_y.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-control.styles-
|
|
1
|
+
{"version":3,"file":"form-control.styles-BHwSsx_y.js","names":[],"sources":["../../src/base/form-control.styles.ts"],"sourcesContent":["import { css } from 'lit';\n\n/** Shared label/instructions layout for form controls — Craft tokens, structure. */\nexport const formControlStyles = css`\n @layer pk-component {\n .form-control {\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n width: 100%;\n }\n\n .form-control__header {\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n min-width: 0;\n }\n\n .form-control__label {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n margin: 0;\n color: var(--pk-color-gray-700);\n font-family: var(--pk-font-family);\n font-size: var(--pk-font-size-base);\n font-weight: 700;\n line-height: var(--pk-line-height);\n }\n\n .form-control__instructions,\n .form-control__hint {\n margin: 0;\n color: var(--pk-color-gray-500);\n font-family: var(--pk-font-family);\n font-size: var(--pk-font-size-base);\n line-height: var(--pk-line-height);\n }\n\n .form-control__instructions:empty,\n .form-control__hint:empty {\n display: none;\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n .form-control__input {\n display: flex;\n align-items: stretch;\n position: relative;\n width: 100%;\n }\n\n .form-control__start,\n .form-control__end {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n }\n\n .form-control__start {\n margin-inline-end: 6px;\n }\n\n .form-control__end {\n margin-inline-start: 6px;\n }\n\n .icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n color: var(--pk-color-gray-500);\n cursor: pointer;\n line-height: 0;\n }\n\n .icon-button:focus-visible {\n outline: none;\n box-shadow: var(--pk-shadow-focus);\n border-radius: var(--pk-radius-sm);\n }\n\n .icon-button:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n`;\n"],"mappings":";;;AAGA,IAAa,oBAAoB,GAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"has-slot-
|
|
1
|
+
{"version":3,"file":"has-slot-9zjTXvea.js","names":[],"sources":["../../src/internal/has-slot.ts"],"sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from 'lit';\n\n/** Detects whether named slots have assigned content — `HasSlotController`. */\nexport class HasSlotController implements ReactiveController {\n private readonly slotNames: string[];\n\n private readonly boundSlots = new Set<HTMLSlotElement>();\n\n /** Last-seen content presence per slot, so we only re-render on real changes. */\n private readonly lastHasContent = new Map<string, boolean>();\n\n constructor(\n private readonly host: ReactiveControllerHost & HTMLElement,\n ...slotNames: string[]\n ) {\n this.slotNames = slotNames;\n host.addController(this);\n }\n\n hostConnected(): void {\n this.bindSlotListeners();\n }\n\n hostUpdated(): void {\n this.bindSlotListeners();\n }\n\n hostDisconnected(): void {\n for (const slot of this.boundSlots) {\n slot.removeEventListener('slotchange', this.handleSlotChange);\n }\n\n this.boundSlots.clear();\n }\n\n /**\n * Bind a `slotchange` listener to each watched slot once it exists.\n *\n * Deliberately does NOT call `requestUpdate()` here: this runs from\n * `hostUpdated()` (after an update completes), so requesting one would trigger\n * Lit's \"scheduled an update after an update completed\" warning and, if a\n * slot's element identity changed between renders, an infinite update loop.\n * The initial render already reflects light-DOM content (children exist before\n * upgrade), and the initial `slotchange` covers any late-assigned content — so\n * `handleSlotChange` is the single, deduped path that schedules re-renders.\n */\n private bindSlotListeners(): void {\n for (const name of this.slotNames) {\n const slot = this.findSlot(name);\n\n if (!slot || this.boundSlots.has(slot)) {\n continue;\n }\n\n this.boundSlots.add(slot);\n slot.addEventListener('slotchange', this.handleSlotChange);\n\n // Seed the baseline with what the just-completed render already used.\n if (!this.lastHasContent.has(name)) {\n this.lastHasContent.set(name, this.test(name));\n }\n }\n }\n\n private findSlot(name: string): HTMLSlotElement | null {\n if (!this.host.shadowRoot) {\n return null;\n }\n\n if (!name) {\n return this.host.shadowRoot.querySelector('slot:not([name])');\n }\n\n return this.host.shadowRoot.querySelector(`slot[name=\"${name}\"]`);\n }\n\n private handleSlotChange = (): void => {\n // Only re-render when a watched slot's content presence actually flips —\n // slotchange fires on every light-DOM mutation, so deduping here keeps a\n // busy subtree (e.g. a Tiptap editor) from thrashing the host.\n let changed = false;\n\n for (const name of this.slotNames) {\n const has = this.test(name);\n\n if (this.lastHasContent.get(name) !== has) {\n this.lastHasContent.set(name, has);\n changed = true;\n }\n }\n\n if (changed) {\n this.host.requestUpdate();\n }\n };\n\n test(name: string, ssrFlag = false): boolean {\n if (ssrFlag) {\n return true;\n }\n\n if (this.hasLightDomSlotContent(name)) {\n return true;\n }\n\n const slot = this.findSlot(name);\n\n if (!slot) {\n return false;\n }\n\n return slot.assignedNodes({ flatten: true }).some((node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n return Boolean(node.textContent?.trim());\n }\n\n return node.nodeType === Node.ELEMENT_NODE;\n });\n }\n\n private hasLightDomSlotContent(name: string): boolean {\n return [...this.host.children].some((child) => child.getAttribute('slot') === name);\n }\n}\n"],"mappings":";;AAGA,IAAa,oBAAb,MAA6D;CAQzD,YACI,MACA,GAAG,WACL;AAFmB,OAAA,OAAA;oCANS,IAAI,KAAsB;wCAGtB,IAAI,KAAsB;gCAmErB;GAInC,IAAI,UAAU;AAEd,QAAK,MAAM,QAAQ,KAAK,WAAW;IAC/B,MAAM,MAAM,KAAK,KAAK,KAAK;AAE3B,QAAI,KAAK,eAAe,IAAI,KAAK,KAAK,KAAK;AACvC,UAAK,eAAe,IAAI,MAAM,IAAI;AAClC,eAAU;;;AAIlB,OAAI,QACA,MAAK,KAAK,eAAe;;AA7E7B,OAAK,YAAY;AACjB,OAAK,cAAc,KAAK;;CAG5B,gBAAsB;AAClB,OAAK,mBAAmB;;CAG5B,cAAoB;AAChB,OAAK,mBAAmB;;CAG5B,mBAAyB;AACrB,OAAK,MAAM,QAAQ,KAAK,WACpB,MAAK,oBAAoB,cAAc,KAAK,iBAAiB;AAGjE,OAAK,WAAW,OAAO;;;;;;;;;;;;;CAc3B,oBAAkC;AAC9B,OAAK,MAAM,QAAQ,KAAK,WAAW;GAC/B,MAAM,OAAO,KAAK,SAAS,KAAK;AAEhC,OAAI,CAAC,QAAQ,KAAK,WAAW,IAAI,KAAK,CAClC;AAGJ,QAAK,WAAW,IAAI,KAAK;AACzB,QAAK,iBAAiB,cAAc,KAAK,iBAAiB;AAG1D,OAAI,CAAC,KAAK,eAAe,IAAI,KAAK,CAC9B,MAAK,eAAe,IAAI,MAAM,KAAK,KAAK,KAAK,CAAC;;;CAK1D,SAAiB,MAAsC;AACnD,MAAI,CAAC,KAAK,KAAK,WACX,QAAO;AAGX,MAAI,CAAC,KACD,QAAO,KAAK,KAAK,WAAW,cAAc,mBAAmB;AAGjE,SAAO,KAAK,KAAK,WAAW,cAAc,cAAc,KAAK,IAAI;;CAuBrE,KAAK,MAAc,UAAU,OAAgB;AACzC,MAAI,QACA,QAAO;AAGX,MAAI,KAAK,uBAAuB,KAAK,CACjC,QAAO;EAGX,MAAM,OAAO,KAAK,SAAS,KAAK;AAEhC,MAAI,CAAC,KACD,QAAO;AAGX,SAAO,KAAK,cAAc,EAAE,SAAS,MAAM,CAAC,CAAC,MAAM,SAAS;AACxD,OAAI,KAAK,aAAa,KAAK,UACvB,QAAO,QAAQ,KAAK,aAAa,MAAM,CAAC;AAG5C,UAAO,KAAK,aAAa,KAAK;IAChC;;CAGN,uBAA+B,MAAuB;AAClD,SAAO,CAAC,GAAG,KAAK,KAAK,SAAS,CAAC,MAAM,UAAU,MAAM,aAAa,OAAO,KAAK,KAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.styles-
|
|
1
|
+
{"version":3,"file":"icon.styles-pNyUmVtP.js","names":[],"sources":["../../src/base/icon.styles.ts"],"sourcesContent":["import { css } from 'lit';\n\n/** Shared icon sizing for slotted SVGs inside shadow DOM. */\nexport const iconStyles = css`\n @layer pk-component {\n slot[name='start']::slotted(svg),\n slot[name='end']::slotted(svg) {\n display: block;\n width: 1em;\n height: 1em;\n flex-shrink: 0;\n pointer-events: none;\n vertical-align: middle;\n overflow: visible;\n }\n }\n`;\n"],"mappings":";;;AAGA,IAAa,aAAa,GAAG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as renderIconHtml, t as createIconElement } from "./render-
|
|
1
|
+
import { n as renderIconHtml, t as createIconElement } from "./render-BKGW1a68.js";
|
|
2
2
|
//#region \0rolldown/runtime.js
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -49,4 +49,4 @@ __reExport(icons_exports, import__verbb_plugin_kit_icons);
|
|
|
49
49
|
//#endregion
|
|
50
50
|
export { __reExport as i, createTranslationIconElement as n, __exportAll as r, icons_exports as t };
|
|
51
51
|
|
|
52
|
-
//# sourceMappingURL=icons-
|
|
52
|
+
//# sourceMappingURL=icons-B8siZLOe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icons-
|
|
1
|
+
{"version":3,"file":"icons-B8siZLOe.js","names":[],"sources":["../../src/icons/translation-icon.ts","../../src/icons/index.ts"],"sourcesContent":["const TRANSLATION_ICON_PATH = 'M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l208 0 32 0 16 0 256 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L320 64l-16 0-32 0L64 64zm512 48c8.8 0 16 7.2 16 16l0 256c0 8.8-7.2 16-16 16l-256 0 0-288 256 0zM178.3 175.9l64 144c4.5 10.1-.1 21.9-10.2 26.4s-21.9-.1-26.4-10.2L196.8 316l-73.6 0-8.9 20.1c-4.5 10.1-16.3 14.6-26.4 10.2s-14.6-16.3-10.2-26.4l64-144c3.2-7.2 10.4-11.9 18.3-11.9s15.1 4.7 18.3 11.9zM179 276l-19-42.8L141 276l38 0zM456 164c-11 0-20 9-20 20l0 4-52 0c-11 0-20 9-20 20s9 20 20 20l72 0 35.1 0c-7.3 16.7-17.4 31.9-29.8 45l-.5-.5-14.6-14.6c-7.8-7.8-20.5-7.8-28.3 0s-7.8 20.5 0 28.3L430 298.3c-5.9 3.6-12.1 6.9-18.5 9.8l-3.6 1.6c-10.1 4.5-14.6 16.3-10.2 26.4s16.3 14.6 26.4 10.2l3.6-1.6c12-5.3 23.4-11.8 34-19.4c4.3 3 8.6 5.8 13.1 8.5l18.9 11.3c9.5 5.7 21.8 2.6 27.4-6.9s2.6-21.8-6.9-27.4l-18.9-11.3c-.9-.5-1.8-1.1-2.7-1.6c17.2-18.8 30.7-40.9 39.6-65.4L534 228l2 0c11 0 20-9 20-20s-9-20-20-20l-16 0-44 0 0-4c0-11-9-20-20-20z';\n\nexport const createTranslationIconElement = (): SVGSVGElement => {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n svg.setAttribute('viewBox', '0 0 640 512');\n\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttribute('d', TRANSLATION_ICON_PATH);\n svg.append(path);\n\n return svg;\n};\n","export { renderIconHtml, createIconElement, type RenderIconOptions } from './render.js';\nexport { createTranslationIconElement } from './translation-icon.js';\n\nexport * from '@verbb/plugin-kit-icons';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAM,wBAAwB;AAE9B,IAAa,qCAAoD;CAC7D,MAAM,MAAM,SAAS,gBAAgB,8BAA8B,MAAM;AACzE,KAAI,aAAa,eAAe,OAAO;AACvC,KAAI,aAAa,SAAS,6BAA6B;AACvD,KAAI,aAAa,WAAW,cAAc;CAE1C,MAAM,OAAO,SAAS,gBAAgB,8BAA8B,OAAO;AAC3E,MAAK,aAAa,KAAK,sBAAsB;AAC7C,KAAI,OAAO,KAAK;AAEhB,QAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mirror-validator-
|
|
1
|
+
{"version":3,"file":"mirror-validator-Cszpqlxk.js","names":[],"sources":["../../src/validators/mirror-validator.ts"],"sourcesContent":["import type { PkValidator, ValidityKey } from './types.js';\n\n/** Delegates validity to the shadow native control — `MirrorValidator`. */\nexport function MirrorValidator(): PkValidator {\n return {\n checkValidity(element) {\n const formControl = element.input;\n const result = {\n message: '',\n isValid: true,\n invalidKeys: [] as ReturnType<PkValidator['checkValidity']>['invalidKeys'],\n };\n\n if (!formControl) {\n return result;\n }\n\n let isValid = true;\n\n if ('checkValidity' in formControl && typeof formControl.checkValidity === 'function') {\n isValid = formControl.checkValidity();\n }\n\n if (isValid) {\n return result;\n }\n\n result.isValid = false;\n\n if ('validationMessage' in formControl && typeof formControl.validationMessage === 'string') {\n result.message = formControl.validationMessage;\n }\n\n if (!('validity' in formControl) || !formControl.validity) {\n result.invalidKeys.push('customError');\n return result;\n }\n\n for (const key of Object.keys(formControl.validity)) {\n if (key === 'valid') {\n continue;\n }\n\n const validityKey = key as ValidityKey;\n\n if (formControl.validity[validityKey]) {\n result.invalidKeys.push(validityKey);\n }\n }\n\n return result;\n },\n };\n}\n"],"mappings":";;AAGA,SAAgB,kBAA+B;AAC3C,QAAO,EACH,cAAc,SAAS;EACnB,MAAM,cAAc,QAAQ;EAC5B,MAAM,SAAS;GACX,SAAS;GACT,SAAS;GACT,aAAa,EAAE;GAClB;AAED,MAAI,CAAC,YACD,QAAO;EAGX,IAAI,UAAU;AAEd,MAAI,mBAAmB,eAAe,OAAO,YAAY,kBAAkB,WACvE,WAAU,YAAY,eAAe;AAGzC,MAAI,QACA,QAAO;AAGX,SAAO,UAAU;AAEjB,MAAI,uBAAuB,eAAe,OAAO,YAAY,sBAAsB,SAC/E,QAAO,UAAU,YAAY;AAGjC,MAAI,EAAE,cAAc,gBAAgB,CAAC,YAAY,UAAU;AACvD,UAAO,YAAY,KAAK,cAAc;AACtC,UAAO;;AAGX,OAAK,MAAM,OAAO,OAAO,KAAK,YAAY,SAAS,EAAE;AACjD,OAAI,QAAQ,QACR;GAGJ,MAAM,cAAc;AAEpB,OAAI,YAAY,SAAS,aACrB,QAAO,YAAY,KAAK,YAAY;;AAI5C,SAAO;IAEd"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as syncListboxSeparators } from "./sync-listbox-separators-
|
|
1
|
+
import { t as syncListboxSeparators } from "./sync-listbox-separators-CPFtrpNq.js";
|
|
2
2
|
//#region src/utils/popup-content-exit.ts
|
|
3
3
|
/**
|
|
4
4
|
* Wait for `pk-popup-content-out` on a listbox panel, then clear the `closing` class.
|
|
@@ -118,4 +118,4 @@ function matchesOptionFilter(option, query, filter) {
|
|
|
118
118
|
//#endregion
|
|
119
119
|
export { waitForPopupContentExitAnimation as i, AsyncOptionFetcher as n, syncFilteredOptions as r, matchesOptionFilter as t };
|
|
120
120
|
|
|
121
|
-
//# sourceMappingURL=option-filter-
|
|
121
|
+
//# sourceMappingURL=option-filter-Cj5SvyzI.js.map
|
|
@@ -1 +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":"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"}
|
|
1
|
+
{"version":3,"file":"option-filter-Cj5SvyzI.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":"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"}
|
|
@@ -41,4 +41,4 @@ var PkAfterHideEvent = class extends Event {
|
|
|
41
41
|
//#endregion
|
|
42
42
|
export { PkShowEvent as i, PkAfterShowEvent as n, PkHideEvent as r, PkAfterHideEvent as t };
|
|
43
43
|
|
|
44
|
-
//# sourceMappingURL=overlay-lifecycle-
|
|
44
|
+
//# sourceMappingURL=overlay-lifecycle-CAoT0LE8.js.map
|