@verbb/plugin-kit-web 2.0.22 → 2.0.24
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 +20 -0
- package/custom-elements.json +8414 -7031
- package/dist/chunks/{active-elements-BwpXu8Lb.js → active-elements-739kISON.js} +1 -1
- package/dist/chunks/{active-elements-BwpXu8Lb.js.map → active-elements-739kISON.js.map} +1 -1
- package/dist/chunks/{animate-with-class-CsDwYnXL.js → animate-with-class-CjTZI0NU.js} +1 -1
- package/dist/chunks/{animate-with-class-CsDwYnXL.js.map → animate-with-class-CjTZI0NU.js.map} +1 -1
- package/dist/chunks/{autoloader-dJO3tYOX.js → autoloader-DcwybeWc.js} +3 -3
- package/dist/chunks/{autoloader-dJO3tYOX.js.map → autoloader-DcwybeWc.js.map} +1 -1
- package/dist/chunks/{button-group-item.styles-DYmBR28a.js → button-group-item.styles-D7tuu-sr.js} +1 -1
- package/dist/chunks/{button-group-item.styles-DYmBR28a.js.map → button-group-item.styles-D7tuu-sr.js.map} +1 -1
- package/dist/chunks/{component-registry-D34fm8xW.js → component-registry-B5pnAZsb.js} +6 -1
- package/dist/chunks/component-registry-B5pnAZsb.js.map +1 -0
- package/dist/chunks/{control-aria-B2QMq4ji.js → control-aria-CtNg2izr.js} +1 -1
- package/dist/chunks/{control-aria-B2QMq4ji.js.map → control-aria-CtNg2izr.js.map} +1 -1
- package/dist/chunks/{decorate-R0X811qp.js → decorate-Br_PE9pq.js} +3 -4
- package/dist/chunks/{decorate-R0X811qp.js.map → decorate-Br_PE9pq.js.map} +1 -1
- package/dist/chunks/decorators-BkErmuYK.js +2 -0
- package/dist/chunks/{dismissible-stack-XQUMfKO3.js → dismissible-stack-CwhtwAyo.js} +1 -1
- package/dist/chunks/{dismissible-stack-XQUMfKO3.js.map → dismissible-stack-CwhtwAyo.js.map} +1 -1
- package/dist/chunks/{field-labels-CmuAW8Cl.js → field-labels-pY-gQDwQ.js} +1 -1
- package/dist/chunks/{field-labels-CmuAW8Cl.js.map → field-labels-pY-gQDwQ.js.map} +1 -1
- package/dist/chunks/{focus-aa5dlv8k.js → focus-DcVUPVqn.js} +2 -2
- package/dist/chunks/{focus-aa5dlv8k.js.map → focus-DcVUPVqn.js.map} +1 -1
- package/dist/chunks/{form-control.styles-BQdimE5o.js → form-control.styles-CQ93gnVf.js} +1 -1
- package/dist/chunks/{form-control.styles-BQdimE5o.js.map → form-control.styles-CQ93gnVf.js.map} +1 -1
- package/dist/chunks/{has-slot-8BvCt_qo.js → has-slot-DJv86HKx.js} +1 -1
- package/dist/chunks/{has-slot-8BvCt_qo.js.map → has-slot-DJv86HKx.js.map} +1 -1
- package/dist/chunks/{icon.styles-BLTWLqYp.js → icon.styles-KWvfi7RV.js} +1 -1
- package/dist/chunks/{icon.styles-BLTWLqYp.js.map → icon.styles-KWvfi7RV.js.map} +1 -1
- package/dist/chunks/{icons-BR8JcQj2.js → icons-k1pvx6yX.js} +2 -2
- package/dist/chunks/{icons-BR8JcQj2.js.map → icons-k1pvx6yX.js.map} +1 -1
- package/dist/chunks/{mirror-validator-DCjNYrrx.js → mirror-validator-BkZlEv1Z.js} +1 -1
- package/dist/chunks/{mirror-validator-DCjNYrrx.js.map → mirror-validator-BkZlEv1Z.js.map} +1 -1
- package/dist/chunks/{option-filter-BQqr8Z21.js → option-filter-BkKyBg8L.js} +2 -2
- package/dist/chunks/{option-filter-BQqr8Z21.js.map → option-filter-BkKyBg8L.js.map} +1 -1
- package/dist/chunks/{overlay-lifecycle-D0pkTQyI.js → overlay-lifecycle-C582MGBJ.js} +1 -1
- package/dist/chunks/{overlay-lifecycle-D0pkTQyI.js.map → overlay-lifecycle-C582MGBJ.js.map} +1 -1
- package/dist/chunks/pk-alert-BQAb4lJc.js +666 -0
- package/dist/chunks/pk-alert-BQAb4lJc.js.map +1 -0
- package/dist/chunks/{pk-autocomplete-qy2Psvqm.js → pk-autocomplete-DUXhs1hi.js} +21 -20
- package/dist/chunks/pk-autocomplete-DUXhs1hi.js.map +1 -0
- package/dist/chunks/{pk-button-group-BSz5T5iS.js → pk-button-group-BY12Lbk7.js} +10 -7
- package/dist/chunks/pk-button-group-BY12Lbk7.js.map +1 -0
- package/dist/chunks/{pk-button-group-separator-DH3Rl24b.js → pk-button-group-separator-B1a8dP9A.js} +3 -2
- package/dist/chunks/pk-button-group-separator-B1a8dP9A.js.map +1 -0
- package/dist/chunks/{pk-button-group-text-Qro_KmZb.js → pk-button-group-text-CWNlZkyV.js} +3 -3
- package/dist/chunks/pk-button-group-text-CWNlZkyV.js.map +1 -0
- package/dist/chunks/{pk-button-BrH4u4Qr.js → pk-button-ntSVrer_.js} +8 -7
- package/dist/chunks/pk-button-ntSVrer_.js.map +1 -0
- package/dist/chunks/{pk-calendar-Z7Y0PjeY.js → pk-calendar-Df0c5u79.js} +12 -11
- package/dist/chunks/pk-calendar-Df0c5u79.js.map +1 -0
- package/dist/chunks/{pk-checkbox-13ArHSmt.js → pk-checkbox-L5uRex3b.js} +6 -5
- package/dist/chunks/pk-checkbox-L5uRex3b.js.map +1 -0
- package/dist/chunks/{pk-checkbox-select-Ckvfbu83.js → pk-checkbox-select-6OS0wFYO.js} +4 -3
- package/dist/chunks/pk-checkbox-select-6OS0wFYO.js.map +1 -0
- package/dist/chunks/{pk-clear--mPWZP7H.js → pk-clear-DHxP_2cm.js} +1 -1
- package/dist/chunks/{pk-clear--mPWZP7H.js.map → pk-clear-DHxP_2cm.js.map} +1 -1
- package/dist/chunks/{pk-code-editor-BlG6O5qB.js → pk-code-editor-vZriNR67.js} +6 -5
- package/dist/chunks/pk-code-editor-vZriNR67.js.map +1 -0
- package/dist/chunks/{pk-color-input-BRgQ5-vB.js → pk-color-input-Csbm4ROT.js} +6 -5
- package/dist/chunks/pk-color-input-Csbm4ROT.js.map +1 -0
- package/dist/chunks/{pk-combobox-ag89QEX2.js → pk-combobox-BrSBrldb.js} +25 -23
- package/dist/chunks/pk-combobox-BrSBrldb.js.map +1 -0
- package/dist/chunks/{pk-connect.styles-BhW406jt.js → pk-connect.styles-oKhxa_m2.js} +1 -1
- package/dist/chunks/{pk-connect.styles-BhW406jt.js.map → pk-connect.styles-oKhxa_m2.js.map} +1 -1
- package/dist/chunks/{pk-copy-button-BVaOLtYG.js → pk-copy-button-5i9v_zmu.js} +31 -9
- package/dist/chunks/pk-copy-button-5i9v_zmu.js.map +1 -0
- package/dist/chunks/{pk-date-picker-C2YvDPNm.js → pk-date-picker-C-w6Mn6j.js} +21 -20
- package/dist/chunks/pk-date-picker-C-w6Mn6j.js.map +1 -0
- package/dist/chunks/{pk-dialog-VMQqLW1f.js → pk-dialog-C7KZGpQs.js} +10 -9
- package/dist/chunks/pk-dialog-C7KZGpQs.js.map +1 -0
- package/dist/chunks/{pk-dropdown-item-D9OaG5o-.js → pk-dropdown-item-Ck2N_suK.js} +11 -8
- package/dist/chunks/pk-dropdown-item-Ck2N_suK.js.map +1 -0
- package/dist/chunks/{pk-dropdown-label-CRNWMWQd.js → pk-dropdown-label-BdZLeizJ.js} +2 -2
- package/dist/chunks/pk-dropdown-label-BdZLeizJ.js.map +1 -0
- package/dist/chunks/{pk-dropdown-menu-DW1wI8xQ.js → pk-dropdown-menu-DBsO1uYR.js} +22 -18
- package/dist/chunks/pk-dropdown-menu-DBsO1uYR.js.map +1 -0
- package/dist/chunks/{pk-editable-table-DDnu1I8Y.js → pk-editable-table-Cd8K6vT4.js} +26 -23
- package/dist/chunks/pk-editable-table-Cd8K6vT4.js.map +1 -0
- package/dist/chunks/{pk-field-UAlMq6mQ.js → pk-field--PCE9nOd.js} +9 -8
- package/dist/chunks/pk-field--PCE9nOd.js.map +1 -0
- package/dist/chunks/{pk-form-associated-element-GxX5lbnk.js → pk-form-associated-element-Doh2K3pG.js} +3 -3
- package/dist/chunks/pk-form-associated-element-Doh2K3pG.js.map +1 -0
- package/dist/chunks/{pk-image-browser-Bj8LhWfk.js → pk-image-browser-iUqdcLKs.js} +21 -21
- package/dist/chunks/pk-image-browser-iUqdcLKs.js.map +1 -0
- package/dist/chunks/{pk-input-BywmK5n2.js → pk-input-BUbXj9We.js} +14 -13
- package/dist/chunks/pk-input-BUbXj9We.js.map +1 -0
- package/dist/chunks/{pk-input-group-BLqKPnfc.js → pk-input-group-CN79c5HT.js} +5 -4
- package/dist/chunks/pk-input-group-CN79c5HT.js.map +1 -0
- package/dist/chunks/{pk-input-group-addon-ClBkGmAw.js → pk-input-group-addon-DpxfuYp1.js} +3 -2
- package/dist/chunks/pk-input-group-addon-DpxfuYp1.js.map +1 -0
- package/dist/chunks/{pk-input-group-button-CHQHsWd4.js → pk-input-group-button-D5Hm4saA.js} +3 -2
- package/dist/chunks/pk-input-group-button-D5Hm4saA.js.map +1 -0
- package/dist/chunks/{pk-input-group-input-oNnqMBGU.js → pk-input-group-input-Cm1MoHgN.js} +3 -2
- package/dist/chunks/pk-input-group-input-Cm1MoHgN.js.map +1 -0
- package/dist/chunks/{pk-input-group-text-HUxlXROB.js → pk-input-group-text-CtyJZ_Kg.js} +2 -2
- package/dist/chunks/pk-input-group-text-CtyJZ_Kg.js.map +1 -0
- package/dist/chunks/{pk-input-group-textarea-Cl2FNuw-.js → pk-input-group-textarea-BxmKGjdt.js} +3 -2
- package/dist/chunks/pk-input-group-textarea-BxmKGjdt.js.map +1 -0
- package/dist/chunks/{pk-lightswitch-VHfJizBW.js → pk-lightswitch-CSvgiHVQ.js} +9 -8
- package/dist/chunks/pk-lightswitch-CSvgiHVQ.js.map +1 -0
- package/dist/chunks/{pk-option-DQZHV9jL.js → pk-option-B_PF4v_Z.js} +9 -7
- package/dist/chunks/pk-option-B_PF4v_Z.js.map +1 -0
- package/dist/chunks/{pk-option-group-CCzJkBFp.js → pk-option-group-D6bHfn0j.js} +4 -3
- package/dist/chunks/pk-option-group-D6bHfn0j.js.map +1 -0
- package/dist/chunks/{pk-popover-D3jkHfwB.js → pk-popover-BOoGfR7I.js} +11 -10
- package/dist/chunks/pk-popover-BOoGfR7I.js.map +1 -0
- package/dist/chunks/{pk-popup-B65tZMQH.js → pk-popup-DVE93VSV.js} +32 -28
- package/dist/chunks/pk-popup-DVE93VSV.js.map +1 -0
- package/dist/chunks/{pk-radio-B5XkMHy3.js → pk-radio-D0eqmnlH.js} +3 -2
- package/dist/chunks/pk-radio-D0eqmnlH.js.map +1 -0
- package/dist/chunks/{pk-radio-group-Dzd-3HaQ.js → pk-radio-group-BehEZG_k.js} +8 -7
- package/dist/chunks/pk-radio-group-BehEZG_k.js.map +1 -0
- package/dist/chunks/{pk-scroll-area-CdfNxYz8.js → pk-scroll-area-BeaLZ6k-.js} +3 -2
- package/dist/chunks/pk-scroll-area-BeaLZ6k-.js.map +1 -0
- package/dist/chunks/{pk-select-b5S5WKc-.js → pk-select-DZNpEk5Z.js} +20 -19
- package/dist/chunks/pk-select-DZNpEk5Z.js.map +1 -0
- package/dist/chunks/{pk-separator-N-VyjYE6.js → pk-separator-ZkRowI5Y.js} +3 -2
- package/dist/chunks/pk-separator-ZkRowI5Y.js.map +1 -0
- package/dist/chunks/{pk-spinner-DweuYJ_Z.js → pk-spinner-Bxkn4iVO.js} +3 -2
- package/dist/chunks/pk-spinner-Bxkn4iVO.js.map +1 -0
- package/dist/chunks/pk-state-panel-BTo2xiug.js +604 -0
- package/dist/chunks/pk-state-panel-BTo2xiug.js.map +1 -0
- package/dist/chunks/{pk-status-BehQARDv.js → pk-status-CdiRBRyh.js} +3 -2
- package/dist/chunks/pk-status-CdiRBRyh.js.map +1 -0
- package/dist/chunks/{pk-tab-CTloD18e.js → pk-tab-CSbI3XxX.js} +2 -2
- package/dist/chunks/pk-tab-CSbI3XxX.js.map +1 -0
- package/dist/chunks/{pk-tab-heading-Cjcgebxn.js → pk-tab-heading-BMyLTBNc.js} +2 -2
- package/dist/chunks/pk-tab-heading-BMyLTBNc.js.map +1 -0
- package/dist/chunks/{pk-tab-panel-CkKU5-Ah.js → pk-tab-panel-sgdRjV8o.js} +2 -2
- package/dist/chunks/pk-tab-panel-sgdRjV8o.js.map +1 -0
- package/dist/chunks/{pk-tabs-BgEBki1q.js → pk-tabs-bBNCu_4h.js} +10 -7
- package/dist/chunks/pk-tabs-bBNCu_4h.js.map +1 -0
- package/dist/chunks/{pk-textarea-Dhj1WFLH.js → pk-textarea-B401dUWa.js} +11 -10
- package/dist/chunks/pk-textarea-B401dUWa.js.map +1 -0
- package/dist/chunks/{pk-time-picker-ChRbKHNB.js → pk-time-picker-DnNZVwRk.js} +6 -6
- package/dist/chunks/pk-time-picker-DnNZVwRk.js.map +1 -0
- package/dist/chunks/{pk-tiptap-content-CL8smjGi.js → pk-tiptap-content-C2qzGQKj.js} +4 -3
- package/dist/chunks/pk-tiptap-content-C2qzGQKj.js.map +1 -0
- package/dist/chunks/{pk-tiptap-editor-BMwedkPt.js → pk-tiptap-editor-y_QyNSR-.js} +20 -21
- package/dist/chunks/pk-tiptap-editor-y_QyNSR-.js.map +1 -0
- package/dist/chunks/{pk-tiptap-input-YKg4VLp_.js → pk-tiptap-input-0Xy6rrot.js} +7 -6
- package/dist/chunks/pk-tiptap-input-0Xy6rrot.js.map +1 -0
- package/dist/chunks/{pk-toggle-BthhH7vl.js → pk-toggle-Co8GsHuK.js} +4 -3
- package/dist/chunks/pk-toggle-Co8GsHuK.js.map +1 -0
- package/dist/chunks/{pk-toggle-group-D2Quux8D.js → pk-toggle-group-Ct1ljI-7.js} +7 -4
- package/dist/chunks/pk-toggle-group-Ct1ljI-7.js.map +1 -0
- package/dist/chunks/{pk-tooltip--QBV6puX.js → pk-tooltip-Cvv2f7T5.js} +7 -6
- package/dist/chunks/pk-tooltip-Cvv2f7T5.js.map +1 -0
- package/dist/chunks/{popup-content-animation.styles-BnNiguJo.js → popup-content-animation.styles-CJ8zGJz-.js} +1 -1
- package/dist/chunks/{popup-content-animation.styles-BnNiguJo.js.map → popup-content-animation.styles-CJ8zGJz-.js.map} +1 -1
- package/dist/chunks/{popup-placement-animation-WlEXnS85.js → popup-placement-animation-ClUYI79z.js} +1 -1
- package/dist/chunks/{popup-placement-animation-WlEXnS85.js.map → popup-placement-animation-ClUYI79z.js.map} +1 -1
- package/dist/chunks/{popup-pointer-CuLjk1th.js → popup-pointer-Bh_d205v.js} +1 -1
- package/dist/chunks/{popup-pointer-CuLjk1th.js.map → popup-pointer-Bh_d205v.js.map} +1 -1
- package/dist/chunks/{register-components-BT9THgdh.js → register-components-CZtpgZe3.js} +1 -1
- package/dist/chunks/{register-components-BT9THgdh.js.map → register-components-CZtpgZe3.js.map} +1 -1
- package/dist/chunks/{render-Dvc3MHQR.js → render-DQZp_Rak.js} +1 -1
- package/dist/chunks/{render-Dvc3MHQR.js.map → render-DQZp_Rak.js.map} +1 -1
- package/dist/chunks/{required-validator-CEg8dvjS.js → required-validator-I58oJGZ3.js} +1 -1
- package/dist/chunks/{required-validator-CEg8dvjS.js.map → required-validator-I58oJGZ3.js.map} +1 -1
- package/dist/chunks/{scroll-lock-Bbh3Sc5g.js → scroll-lock-DE1pElMQ.js} +2 -2
- package/dist/chunks/{scroll-lock-Bbh3Sc5g.js.map → scroll-lock-DE1pElMQ.js.map} +1 -1
- package/dist/chunks/{spinner-utils-CDfHypTv.js → spinner-utils-DXwIxQ6z.js} +1 -1
- package/dist/chunks/{spinner-utils-CDfHypTv.js.map → spinner-utils-DXwIxQ6z.js.map} +1 -1
- package/dist/chunks/{supports-popover-CUBsbHpS.js → supports-popover-BCqyOPtO.js} +1 -1
- package/dist/chunks/{supports-popover-CUBsbHpS.js.map → supports-popover-BCqyOPtO.js.map} +1 -1
- package/dist/chunks/{sync-listbox-separators-B1-V0oJi.js → sync-listbox-separators-saLEtPpJ.js} +2 -2
- package/dist/chunks/{sync-listbox-separators-B1-V0oJi.js.map → sync-listbox-separators-saLEtPpJ.js.map} +1 -1
- package/dist/chunks/{tiptap.styles-CPRows--.js → tiptap.styles-Q4ED1nBw.js} +2 -2
- package/dist/chunks/{tiptap.styles-CPRows--.js.map → tiptap.styles-Q4ED1nBw.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 +5 -4
- package/dist/components/connect/pk-connect-oauth.js.map +1 -1
- 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 +27 -49
- 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/pk-dropdown-separator.js +1 -1
- package/dist/components/dropdown-menu/pk-dropdown-separator.js.map +1 -1
- package/dist/components/dropdown-menu.js +3 -3
- package/dist/components/editable-table/pk-editable-table.js +1 -1
- package/dist/components/editable-table.js +1 -1
- package/dist/components/field/pk-field.js +1 -1
- package/dist/components/field.js +1 -1
- package/dist/components/icon/pk-icon.js +2 -1
- package/dist/components/icon/pk-icon.js.map +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.js +1 -1
- package/dist/components/tiptap/pk-tiptap-input.js +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 +74 -67
- package/dist/index.js.map +1 -1
- package/dist/plugin-kit.css +2 -0
- package/dist/plugin-kit.js +4 -4
- package/dist/plugin-kit.js.map +1 -1
- 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 +124 -55
- package/dist/register.js.map +1 -0
- 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-BQbvE3sC.js} +1 -1
- package/dist-loader/chunks/{codemirror-CSgOT0QM.js → codemirror-C_TTKlG1.js} +584 -436
- package/dist-loader/chunks/editor-CS16rBkM.js +110 -0
- package/dist-loader/chunks/{floating-ui-Cj0imr6d.js → floating-ui-BJQPB-Ip.js} +9 -11
- package/dist-loader/chunks/{lit-DpLik9Rf.js → lit-B6nFKgbW.js} +127 -89
- package/dist-loader/chunks/{option-filter-Bc5aNNT0.js → option-filter-BkKyBg8L.js} +1 -1
- package/dist-loader/chunks/{pk-a11y-CjB4-U-R.js → pk-a11y-mGj0G5AE.js} +1 -1
- package/dist-loader/chunks/{pk-base-B2MqxErC.js → pk-base-BGegy7-X.js} +2 -2
- package/dist-loader/chunks/{pk-button-Dfm23jEC.js → pk-button-DV9Tk5Pd.js} +5 -5
- package/dist-loader/chunks/{pk-calendar-BuSULJCU.js → pk-calendar-C0xpIVIw.js} +9 -9
- package/dist-loader/chunks/{pk-checkbox-BDoq3xg0.js → pk-checkbox-DhP0iMoP.js} +9 -6
- package/dist-loader/chunks/{pk-color-input-eLjO9zfn.js → pk-color-input-B02cYzyr.js} +4 -4
- package/dist-loader/chunks/{pk-combobox-DBvcyxRC.js → pk-combobox-S_tpNUHK.js} +19 -18
- package/dist-loader/chunks/{pk-connect.styles-k61snd3X.js → pk-connect.styles-B5qe5yQB.js} +1 -1
- package/dist-loader/chunks/pk-copy-button-D6tPuhJ3.js +198 -0
- package/dist-loader/chunks/{pk-date-picker-CYLpYIji.js → pk-date-picker-C0y4sfSf.js} +15 -15
- package/dist-loader/chunks/{pk-dialog-BtrH5Ke0.js → pk-dialog-BJs5fVHS.js} +7 -7
- package/dist-loader/chunks/{pk-dropdown-item-D8tfEU-k.js → pk-dropdown-item-Bs5NZDRh.js} +11 -9
- package/dist-loader/chunks/{pk-dropdown-label-TbLj4bHK.js → pk-dropdown-label-Cpl9-bzB.js} +2 -2
- package/dist-loader/chunks/{pk-dropdown-menu-C4GDW5pE.js → pk-dropdown-menu-CLrfuD3i.js} +20 -17
- package/dist-loader/chunks/{pk-field-BM0XD9Ij.js → pk-field-Pg61fxBR.js} +140 -74
- package/dist-loader/chunks/{pk-icon-_1F1aL74.js → pk-icon-B7ywfPb6.js} +4 -4
- package/dist-loader/chunks/{pk-input-DvBrD7Md.js → pk-input-Cj5s8eBT.js} +10 -10
- package/dist-loader/chunks/{pk-lightswitch-CcwlLQ9f.js → pk-lightswitch-rUGB1p8q.js} +6 -6
- package/dist-loader/chunks/{pk-option-DATPm0Bo.js → pk-option-B-MeLvZf.js} +8 -7
- package/dist-loader/chunks/{pk-popup-CUuGs8r_.js → pk-popup-CeyruJFh.js} +35 -29
- package/dist-loader/chunks/{pk-select-DpcvbzUL.js → pk-select-JUx3mxRS.js} +14 -14
- package/dist-loader/chunks/{pk-spinner-Dk_LbvHW.js → pk-spinner-B8iuHDQ9.js} +2 -2
- package/dist-loader/chunks/pk-state-panel-BhdZGllL.js +600 -0
- package/dist-loader/chunks/{pk-status-B8UvjIp2.js → pk-status-D3qVwWlR.js} +2 -2
- package/dist-loader/chunks/{pk-textarea-DeSuxufJ.js → pk-textarea-KnpJMQX2.js} +7 -7
- package/dist-loader/chunks/{pk-time-picker-DpJt8biN.js → pk-time-picker-DCqZ5z7M.js} +6 -6
- package/dist-loader/chunks/{pk-tooltip-DcF9J5GT.js → pk-tooltip-DStkplzy.js} +6 -6
- package/dist-loader/chunks/{popup-content-animation.styles-duCg9-CH.js → popup-content-animation.styles-BtUVJg82.js} +1 -1
- package/dist-loader/chunks/{render-Bnzcxfss.js → render-D9G_a_c2.js} +1 -1
- package/dist-loader/chunks/{svg-Bz-bXZn7.js → svg-BRgqS9vA.js} +8 -1
- package/dist-loader/chunks/{sync-listbox-separators-Ch5krDUs.js → sync-listbox-separators-saLEtPpJ.js} +1 -1
- package/dist-loader/chunks/{tiptap-CgXkiK8d.js → tiptap-uppXgD5k.js} +16099 -9213
- package/dist-loader/chunks/tiptap.styles-CyqI_Wrl.js +896 -0
- package/dist-loader/components/alert/alert.js +662 -0
- package/dist-loader/components/autocomplete/autocomplete.js +15 -15
- 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 +9 -7
- 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 +25 -23
- package/dist-loader/components/field/field.js +1 -1
- package/dist-loader/components/icon/icon.js +3 -3
- package/dist-loader/components/image-browser/image-browser.js +15 -16
- 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 +9 -9
- 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 +3 -3
- 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 +9 -7
- 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 +5 -4
- package/dist-loader/components/tiptap/tiptap-editor.js +595 -21
- package/dist-loader/components/tiptap/tiptap-input.js +273 -5
- package/dist-loader/components/toggle/toggle.js +3 -3
- package/dist-loader/components/toggle-group/toggle-group.js +6 -4
- package/dist-loader/components/tooltip/tooltip.js +1 -1
- package/dist-loader/plugin-kit.css +2 -0
- package/dist-loader/plugin-kit.loader.js +6 -1
- package/dist-loader/styles/connect/pk-connect.css +6 -107
- package/dist-loader/utilities/fouce.css +2 -0
- package/package.json +49 -9
- package/dist/chunks/component-registry-D34fm8xW.js.map +0 -1
- package/dist/chunks/pk-autocomplete-qy2Psvqm.js.map +0 -1
- package/dist/chunks/pk-button-BrH4u4Qr.js.map +0 -1
- package/dist/chunks/pk-button-group-BSz5T5iS.js.map +0 -1
- package/dist/chunks/pk-button-group-separator-DH3Rl24b.js.map +0 -1
- package/dist/chunks/pk-button-group-text-Qro_KmZb.js.map +0 -1
- package/dist/chunks/pk-calendar-Z7Y0PjeY.js.map +0 -1
- package/dist/chunks/pk-checkbox-13ArHSmt.js.map +0 -1
- package/dist/chunks/pk-checkbox-select-Ckvfbu83.js.map +0 -1
- package/dist/chunks/pk-code-editor-BlG6O5qB.js.map +0 -1
- package/dist/chunks/pk-color-input-BRgQ5-vB.js.map +0 -1
- package/dist/chunks/pk-combobox-ag89QEX2.js.map +0 -1
- package/dist/chunks/pk-copy-button-BVaOLtYG.js.map +0 -1
- package/dist/chunks/pk-date-picker-C2YvDPNm.js.map +0 -1
- package/dist/chunks/pk-dialog-VMQqLW1f.js.map +0 -1
- package/dist/chunks/pk-dropdown-item-D9OaG5o-.js.map +0 -1
- package/dist/chunks/pk-dropdown-label-CRNWMWQd.js.map +0 -1
- package/dist/chunks/pk-dropdown-menu-DW1wI8xQ.js.map +0 -1
- package/dist/chunks/pk-editable-table-DDnu1I8Y.js.map +0 -1
- package/dist/chunks/pk-field-UAlMq6mQ.js.map +0 -1
- package/dist/chunks/pk-form-associated-element-GxX5lbnk.js.map +0 -1
- package/dist/chunks/pk-image-browser-Bj8LhWfk.js.map +0 -1
- package/dist/chunks/pk-input-BywmK5n2.js.map +0 -1
- package/dist/chunks/pk-input-group-BLqKPnfc.js.map +0 -1
- package/dist/chunks/pk-input-group-addon-ClBkGmAw.js.map +0 -1
- package/dist/chunks/pk-input-group-button-CHQHsWd4.js.map +0 -1
- package/dist/chunks/pk-input-group-input-oNnqMBGU.js.map +0 -1
- package/dist/chunks/pk-input-group-text-HUxlXROB.js.map +0 -1
- package/dist/chunks/pk-input-group-textarea-Cl2FNuw-.js.map +0 -1
- package/dist/chunks/pk-lightswitch-VHfJizBW.js.map +0 -1
- package/dist/chunks/pk-option-DQZHV9jL.js.map +0 -1
- package/dist/chunks/pk-option-group-CCzJkBFp.js.map +0 -1
- package/dist/chunks/pk-popover-D3jkHfwB.js.map +0 -1
- package/dist/chunks/pk-popup-B65tZMQH.js.map +0 -1
- package/dist/chunks/pk-radio-B5XkMHy3.js.map +0 -1
- package/dist/chunks/pk-radio-group-Dzd-3HaQ.js.map +0 -1
- package/dist/chunks/pk-scroll-area-CdfNxYz8.js.map +0 -1
- package/dist/chunks/pk-select-b5S5WKc-.js.map +0 -1
- package/dist/chunks/pk-separator-N-VyjYE6.js.map +0 -1
- package/dist/chunks/pk-spinner-DweuYJ_Z.js.map +0 -1
- package/dist/chunks/pk-status-BehQARDv.js.map +0 -1
- package/dist/chunks/pk-tab-CTloD18e.js.map +0 -1
- package/dist/chunks/pk-tab-heading-Cjcgebxn.js.map +0 -1
- package/dist/chunks/pk-tab-panel-CkKU5-Ah.js.map +0 -1
- package/dist/chunks/pk-tabs-BgEBki1q.js.map +0 -1
- package/dist/chunks/pk-textarea-Dhj1WFLH.js.map +0 -1
- package/dist/chunks/pk-time-picker-ChRbKHNB.js.map +0 -1
- package/dist/chunks/pk-tiptap-content-CL8smjGi.js.map +0 -1
- package/dist/chunks/pk-tiptap-editor-BMwedkPt.js.map +0 -1
- package/dist/chunks/pk-tiptap-input-YKg4VLp_.js.map +0 -1
- package/dist/chunks/pk-toggle-BthhH7vl.js.map +0 -1
- package/dist/chunks/pk-toggle-group-D2Quux8D.js.map +0 -1
- package/dist/chunks/pk-tooltip--QBV6puX.js.map +0 -1
- package/dist/chunks/register-BqkU5JNH.js +0 -148
- package/dist/chunks/register-BqkU5JNH.js.map +0 -1
- package/dist-loader/chunks/rolldown-runtime-CzwdidQP.js +0 -13
- package/dist-loader/chunks/supports-popover-COjbi2RP.js +0 -5
- package/dist-loader/chunks/tiptap.styles-C0E1NpSx.js +0 -1848
- /package/dist-loader/chunks/{animate-with-class-DT0jwaR_.js → animate-with-class-CjTZI0NU.js} +0 -0
- /package/dist-loader/chunks/{field-labels-D3lKQ2nq.js → field-labels-pY-gQDwQ.js} +0 -0
- /package/dist-loader/chunks/{has-slot-BGJeJdHr.js → has-slot-DJv86HKx.js} +0 -0
- /package/dist-loader/chunks/{mirror-validator-C5XrXPaq.js → mirror-validator-BkZlEv1Z.js} +0 -0
- /package/dist-loader/chunks/{overlay-lifecycle-C3tSQ3UR.js → overlay-lifecycle-C582MGBJ.js} +0 -0
- /package/dist-loader/chunks/{pk-clear-BMZUzwDt.js → pk-clear-DHxP_2cm.js} +0 -0
- /package/dist-loader/chunks/{popup-placement-animation-WlEXnS85.js → popup-placement-animation-ClUYI79z.js} +0 -0
- /package/dist-loader/chunks/{popup-pointer-Ck28WdVP.js → popup-pointer-Bh_d205v.js} +0 -0
- /package/dist-loader/chunks/{registry-BanyScVR.js → registry-CJc164pT.js} +0 -0
- /package/dist-loader/chunks/{required-validator-0XwZtX9k.js → required-validator-I58oJGZ3.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-
|
|
1
|
+
{"version":3,"file":"render-DQZp_Rak.js","names":[],"sources":["../../src/icons/render.ts"],"sourcesContent":["import { iconToSvg, type PkIcon } from '@verbb/plugin-kit-icons';\n\nexport type RenderIconOptions = {\n title?: string;\n};\n\nexport const renderIconHtml = (\n icon: PkIcon,\n options: RenderIconOptions = {},\n): string => {\n return iconToSvg(icon, { title: options.title });\n};\n\nexport const createIconElement = (\n icon: PkIcon,\n options: RenderIconOptions = {},\n): SVGSVGElement => {\n const template = document.createElement('template');\n template.innerHTML = renderIconHtml(icon, options);\n\n const element = template.content.firstElementChild;\n\n if (!(element instanceof SVGSVGElement)) {\n throw new Error('Icon render did not produce an SVG element.');\n }\n\n return element;\n};\n"],"mappings":";;AAMA,IAAa,kBACT,MACA,UAA6B,CAAC,MACrB;CACT,OAAO,UAAU,MAAM,EAAE,OAAO,QAAQ,MAAM,CAAC;AACnD;AAEA,IAAa,qBACT,MACA,UAA6B,CAAC,MACd;CAChB,MAAM,WAAW,SAAS,cAAc,UAAU;CAClD,SAAS,YAAY,eAAe,MAAM,OAAO;CAEjD,MAAM,UAAU,SAAS,QAAQ;CAEjC,IAAI,EAAE,mBAAmB,gBACrB,MAAM,IAAI,MAAM,6CAA6C;CAGjE,OAAO;AACX"}
|
package/dist/chunks/{required-validator-CEg8dvjS.js.map → required-validator-I58oJGZ3.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"required-validator-
|
|
1
|
+
{"version":3,"file":"required-validator-I58oJGZ3.js","names":[],"sources":["../../src/validators/required-validator.ts"],"sourcesContent":["import type { PkFormAssociatedElement } from '../base/pk-form-associated-element.js';\nimport type { PkValidator } from './types.js';\n\nexport type RequiredValidatorOptions = {\n validationElement?: HTMLInputElement | HTMLSelectElement;\n validationProperty?: string;\n};\n\nexport function RequiredValidator(options: RequiredValidatorOptions = {}): PkValidator {\n let { validationElement, validationProperty } = options;\n\n if (!validationElement && typeof document !== 'undefined') {\n validationElement = Object.assign(document.createElement('input'), { required: true });\n }\n\n if (!validationProperty) {\n validationProperty = 'value';\n }\n\n const validator: PkValidator = {\n observedAttributes: ['required'],\n message: validationElement?.validationMessage ?? 'Please fill out this field.',\n checkValidity(element: PkFormAssociatedElement) {\n const result = {\n message: '',\n isValid: true,\n invalidKeys: [] as ReturnType<PkValidator['checkValidity']>['invalidKeys'],\n };\n\n if (!element.required) {\n return result;\n }\n\n const value = (element as unknown as Record<string, unknown>)[validationProperty!];\n const isEmpty = value === null || value === undefined || value === false || value === '';\n\n if (!isEmpty) {\n return result;\n }\n\n result.isValid = false;\n result.message = typeof validator.message === 'function'\n ? validator.message(element)\n : validator.message ?? '';\n result.invalidKeys.push('valueMissing');\n\n return result;\n },\n };\n\n return validator;\n}\n"],"mappings":";AAQA,SAAgB,kBAAkB,UAAoC,CAAC,GAAgB;CACnF,IAAI,EAAE,mBAAmB,uBAAuB;CAEhD,IAAI,CAAC,qBAAqB,OAAO,aAAa,aAC1C,oBAAoB,OAAO,OAAO,SAAS,cAAc,OAAO,GAAG,EAAE,UAAU,KAAK,CAAC;CAGzF,IAAI,CAAC,oBACD,qBAAqB;CAGzB,MAAM,YAAyB;EAC3B,oBAAoB,CAAC,UAAU;EAC/B,SAAS,mBAAmB,qBAAqB;EACjD,cAAc,SAAkC;GAC5C,MAAM,SAAS;IACX,SAAS;IACT,SAAS;IACT,aAAa,CAAC;GAClB;GAEA,IAAI,CAAC,QAAQ,UACT,OAAO;GAGX,MAAM,QAAS,QAA+C;GAG9D,IAAI,EAFY,UAAU,QAAQ,UAAU,KAAA,KAAa,UAAU,SAAS,UAAU,KAGlF,OAAO;GAGX,OAAO,UAAU;GACjB,OAAO,UAAU,OAAO,UAAU,YAAY,aACxC,UAAU,QAAQ,OAAO,IACzB,UAAU,WAAW;GAC3B,OAAO,YAAY,KAAK,cAAc;GAEtC,OAAO;EACX;CACJ;CAEA,OAAO;AACX"}
|
|
@@ -34,7 +34,7 @@ function getOffset(element, parent) {
|
|
|
34
34
|
var locks = /* @__PURE__ */ new Set();
|
|
35
35
|
/** Undo for the currently applied lock (only while locks.size > 0). */
|
|
36
36
|
var restoreLock = null;
|
|
37
|
-
var SCROLL_KEYS = new Set([
|
|
37
|
+
var SCROLL_KEYS = /* @__PURE__ */ new Set([
|
|
38
38
|
" ",
|
|
39
39
|
"ArrowUp",
|
|
40
40
|
"ArrowDown",
|
|
@@ -157,4 +157,4 @@ function scrollIntoView(element, container, direction = "vertical", behavior = "
|
|
|
157
157
|
//#endregion
|
|
158
158
|
export { unlockBodyScrolling as a, scrollIntoView as i, getScrollLockDepth as n, getOffset as o, lockBodyScrolling as r, forceClearScrollLock as t };
|
|
159
159
|
|
|
160
|
-
//# sourceMappingURL=scroll-lock-
|
|
160
|
+
//# sourceMappingURL=scroll-lock-DE1pElMQ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll-lock-
|
|
1
|
+
{"version":3,"file":"scroll-lock-DE1pElMQ.js","names":[],"sources":["../../src/a11y/offset.ts","../../src/a11y/scroll-lock.ts"],"sourcesContent":["/**\n * Element offset relative to a parent — adapted from internal/offset.ts.\n * Works around shadow-DOM offsetParent quirks in Chromium.\n */\nexport function getOffset(element: HTMLElement, parent: HTMLElement): { top: number; left: number } {\n return {\n top: Math.round(element.getBoundingClientRect().top - parent.getBoundingClientRect().top),\n left: Math.round(element.getBoundingClientRect().left - parent.getBoundingClientRect().left),\n };\n}\n","/**\n * Document scroll lock for overlays (dialog, etc.).\n *\n * Ref-counted so nested overlays unlock only when all close.\n *\n * Aligns with Craft / Garnish.Modal where it matters:\n * - Modal + shade are `position: fixed` (hosts, not the document).\n * - Document lock is `body { overflow: hidden }` (Craft’s `.no-scroll`) — **not**\n * `body { position: fixed }`, and **not** `overflow: hidden` on `html`.\n * Body-only overflow keeps Craft’s sticky `#global-sidebar` stuck at the current\n * scrollY; html overflow / body fixed both make sticky “let go” and the nav jumps.\n *\n * Craft’s class alone still lets the page scroll under the shade (wheel / scrollBy).\n * We add wheel / touch / page-key `preventDefault` outside locking overlay hosts so\n * user scrolling actually stops — without a `scroll` listener that rubber-bands the\n * position back (that felt gross).\n *\n * Also avoid: permanent/lock-time `scrollbar-gutter`, and `padding-right` compensation\n * (Craft fixed tip bars ignore body padding and jump).\n */\n\nimport { getOffset } from './offset.js';\n\nconst locks = new Set<HTMLElement>();\n\n/** Undo for the currently applied lock (only while locks.size > 0). */\nlet restoreLock: (() => void) | null = null;\n\nconst SCROLL_KEYS = new Set([\n ' ',\n 'ArrowUp',\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'PageUp',\n 'PageDown',\n 'Home',\n 'End',\n]);\n\nfunction eventPathContainsLock(event: Event): boolean {\n for (const node of event.composedPath()) {\n if (node instanceof HTMLElement && locks.has(node)) {\n return true;\n }\n }\n return false;\n}\n\nfunction isEditableTarget(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n if (target.isContentEditable) {\n return true;\n }\n const tag = target.tagName;\n return tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT';\n}\n\n/**\n * Craft-like body overflow + gesture block (no scroll-position pin).\n * Returns a restore function.\n */\nfunction applyScrollLock(): () => void {\n const body = document.body;\n const prevOverflow = body.style.overflow;\n\n // Same idea as Craft `.no-scroll { overflow: hidden !important }` — body only.\n body.style.setProperty('overflow', 'hidden', 'important');\n\n const onWheel = (event: WheelEvent) => {\n if (eventPathContainsLock(event)) {\n return;\n }\n event.preventDefault();\n };\n\n const onTouchMove = (event: TouchEvent) => {\n if (eventPathContainsLock(event)) {\n return;\n }\n event.preventDefault();\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (!SCROLL_KEYS.has(event.key)) {\n return;\n }\n if (eventPathContainsLock(event) || isEditableTarget(event.target)) {\n return;\n }\n event.preventDefault();\n };\n\n // Capture + non-passive so preventDefault actually stops scrolling.\n // Deliberately no `scroll` listener — resetting scrollY after the fact rubber-bands.\n window.addEventListener('wheel', onWheel, { passive: false, capture: true });\n window.addEventListener('touchmove', onTouchMove, { passive: false, capture: true });\n window.addEventListener('keydown', onKeyDown, { capture: true });\n\n return () => {\n window.removeEventListener('wheel', onWheel, { capture: true } as EventListenerOptions);\n window.removeEventListener('touchmove', onTouchMove, { capture: true } as EventListenerOptions);\n window.removeEventListener('keydown', onKeyDown, { capture: true } as EventListenerOptions);\n body.style.removeProperty('overflow');\n if (prevOverflow) {\n body.style.overflow = prevOverflow;\n }\n };\n}\n\nexport function lockBodyScrolling(lockingEl: HTMLElement): void {\n locks.add(lockingEl);\n\n if (locks.size === 1) {\n document.documentElement.classList.add('pk-scroll-lock');\n // Always 0 — we never pad the body (Craft fixed chrome must not shift).\n document.documentElement.style.setProperty('--pk-scroll-lock-size', '0px');\n restoreLock = applyScrollLock();\n }\n}\n\nexport function unlockBodyScrolling(lockingEl: HTMLElement): void {\n locks.delete(lockingEl);\n\n if (locks.size === 0) {\n restoreLock?.();\n restoreLock = null;\n document.documentElement.classList.remove('pk-scroll-lock');\n document.documentElement.style.removeProperty('--pk-scroll-lock-size');\n document.documentElement.style.removeProperty('--pk-scroll-lock-gutter');\n }\n}\n\n/** Dev/diagnostic — how many overlay hosts currently hold the scroll lock. */\nexport function getScrollLockDepth(): number {\n return locks.size;\n}\n\n/** Emergency clear when lock ref-count and html class drift out of sync. */\nexport function forceClearScrollLock(): void {\n locks.clear();\n restoreLock?.();\n restoreLock = null;\n document.documentElement.classList.remove('pk-scroll-lock');\n document.documentElement.style.removeProperty('--pk-scroll-lock-size');\n document.documentElement.style.removeProperty('--pk-scroll-lock-gutter');\n}\n\n/** Scroll an element into view of its scroll container if needed. */\nexport function scrollIntoView(\n element: HTMLElement,\n container: HTMLElement,\n direction: 'horizontal' | 'vertical' | 'both' = 'vertical',\n behavior: ScrollBehavior = 'smooth',\n): void {\n const offset = getOffset(element, container);\n const offsetTop = offset.top + container.scrollTop;\n const offsetLeft = offset.left + container.scrollLeft;\n const minX = container.scrollLeft;\n const maxX = container.scrollLeft + container.offsetWidth;\n const minY = container.scrollTop;\n const maxY = container.scrollTop + container.offsetHeight;\n\n if (direction === 'horizontal' || direction === 'both') {\n if (offsetLeft < minX) {\n container.scrollTo({ left: offsetLeft, behavior });\n } else if (offsetLeft + element.clientWidth > maxX) {\n container.scrollTo({\n left: offsetLeft - container.offsetWidth + element.clientWidth,\n behavior,\n });\n }\n }\n\n if (direction === 'vertical' || direction === 'both') {\n if (offsetTop < minY) {\n container.scrollTo({ top: offsetTop, behavior });\n } else if (offsetTop + element.clientHeight > maxY) {\n container.scrollTo({\n top: offsetTop - container.offsetHeight + element.clientHeight,\n behavior,\n });\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spinner-utils-
|
|
1
|
+
{"version":3,"file":"spinner-utils-DXwIxQ6z.js","names":[],"sources":["../../src/components/spinner/spinner-utils.ts"],"sourcesContent":["import type { PkSpinnerSize, PkSpinnerVariant } from './pk-spinner.js';\n\ntype ButtonSize = 'default' | 'xxs' | 'xs' | 'sm' | 'lg' | 'xl' | 'none';\ntype ButtonVariant =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'outline'\n | 'transparent'\n | 'link'\n | 'dashed'\n | 'none';\n\nexport function getButtonSpinnerSize(buttonSize: ButtonSize = 'default'): PkSpinnerSize {\n if (buttonSize === 'xxs' || buttonSize === 'xs') {\n return 'xxs';\n }\n\n if (buttonSize === 'lg' || buttonSize === 'xl') {\n return 'sm';\n }\n\n return 'xs';\n}\n\nexport function resolveSpinnerVariant(\n buttonVariant: ButtonVariant = 'default',\n override?: PkSpinnerVariant,\n): PkSpinnerVariant {\n if (override) {\n return override;\n }\n\n if (\n buttonVariant === 'primary'\n || buttonVariant === 'secondary'\n || buttonVariant === 'dashed'\n || buttonVariant === 'outline'\n || buttonVariant === 'transparent'\n ) {\n return buttonVariant;\n }\n\n return 'default';\n}\n"],"mappings":";AAaA,SAAgB,qBAAqB,aAAyB,WAA0B;CACpF,IAAI,eAAe,SAAS,eAAe,MACvC,OAAO;CAGX,IAAI,eAAe,QAAQ,eAAe,MACtC,OAAO;CAGX,OAAO;AACX;AAEA,SAAgB,sBACZ,gBAA+B,WAC/B,UACgB;CAChB,IAAI,UACA,OAAO;CAGX,IACI,kBAAkB,aACf,kBAAkB,eAClB,kBAAkB,YAClB,kBAAkB,aAClB,kBAAkB,eAErB,OAAO;CAGX,OAAO;AACX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supports-popover-
|
|
1
|
+
{"version":3,"file":"supports-popover-BCqyOPtO.js","names":[],"sources":["../../src/utils/supports-popover.ts"],"sourcesContent":["/** Whether the host supports the Popover API (`popover` + `showPopover` / `hidePopover`). */\nexport const SUPPORTS_POPOVER = typeof globalThis.HTMLElement !== 'undefined'\n && Object.prototype.hasOwnProperty.call(globalThis.HTMLElement.prototype, 'popover');\n"],"mappings":";;AACA,IAAa,mBAAmB,OAAO,WAAW,gBAAgB,eAC3D,OAAO,UAAU,eAAe,KAAK,WAAW,YAAY,WAAW,SAAS"}
|
package/dist/chunks/{sync-listbox-separators-B1-V0oJi.js → sync-listbox-separators-saLEtPpJ.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/utils/listbox-keyboard.ts
|
|
2
|
-
var LISTBOX_NAVIGATION_KEYS = new Set([
|
|
2
|
+
var LISTBOX_NAVIGATION_KEYS = /* @__PURE__ */ new Set([
|
|
3
3
|
"ArrowDown",
|
|
4
4
|
"ArrowUp",
|
|
5
5
|
"ArrowLeft",
|
|
@@ -146,4 +146,4 @@ var syncListboxSeparators = (root) => {
|
|
|
146
146
|
//#endregion
|
|
147
147
|
export { isListboxTypeToSelectKey as a, handleListboxKeyDown as i, LISTBOX_NAVIGATION_KEYS as n, createTypeToSelectHandler as r, syncListboxSeparators as t };
|
|
148
148
|
|
|
149
|
-
//# sourceMappingURL=sync-listbox-separators-
|
|
149
|
+
//# sourceMappingURL=sync-listbox-separators-saLEtPpJ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-listbox-separators-B1-V0oJi.js","names":[],"sources":["../../src/utils/listbox-keyboard.ts","../../src/internal/sync-listbox-separators.ts"],"sourcesContent":["export const LISTBOX_NAVIGATION_KEYS = new Set([\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Home',\n 'End',\n 'Enter',\n ' ',\n 'Escape',\n]);\n\n/** Returns true for type-to-select character keys (single printable characters). */\nexport function isListboxTypeToSelectKey(event: KeyboardEvent): boolean {\n return event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey;\n}\n\n/**\n * Listbox keyboard navigation — patterns for pk-select / WAI-ARIA listbox.\n */\nexport type ListboxKeyboardOptions = {\n items: HTMLElement[];\n currentIndex: number;\n onSelect: (index: number) => void;\n onClose?: () => void;\n multiselect?: boolean;\n /** When true, ArrowUp/Down wrap from last→first and first→last. Default: false. */\n /** When `loop` is omitted, listbox navigation does not loop (Base UI `Select`-style default). */\n loop?: boolean;\n focusItem?: (index: number) => void;\n};\n\nexport function getEnabledListboxItems(items: HTMLElement[]): HTMLElement[] {\n return items.filter((item) => {\n return !item.hasAttribute('disabled')\n && !item.hasAttribute('hidden')\n && item.getAttribute('aria-disabled') !== 'true'\n && item.getAttribute('aria-hidden') !== 'true';\n });\n}\n\nfunction focusListboxItem(\n enabled: HTMLElement[],\n index: number,\n focusItem?: (index: number) => void,\n): void {\n if (focusItem) {\n focusItem(index);\n return;\n }\n\n const item = enabled[index];\n\n if (item instanceof HTMLElement && 'focusControl' in item && typeof item.focusControl === 'function') {\n (item as { focusControl: () => void }).focusControl();\n return;\n }\n\n item?.focus();\n}\n\nfunction activateListboxItem(item: HTMLElement | undefined): void {\n if (!item) {\n return;\n }\n\n const control = item.shadowRoot?.querySelector('.option');\n\n if (control instanceof HTMLButtonElement) {\n control.click();\n return;\n }\n\n item.click();\n}\n\nexport function handleListboxKeyDown(event: KeyboardEvent, options: ListboxKeyboardOptions): number {\n const enabled = getEnabledListboxItems(options.items);\n const loop = options.loop === true;\n\n if (enabled.length === 0) {\n return options.currentIndex;\n }\n\n let index = Math.max(0, options.currentIndex);\n const current = enabled[index] ?? enabled[0]!;\n index = enabled.indexOf(current);\n\n if (index < 0) {\n index = 0;\n }\n\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowRight':\n event.preventDefault();\n if (loop && index >= enabled.length - 1) {\n index = 0;\n } else {\n index = Math.min(index + 1, enabled.length - 1);\n }\n focusListboxItem(enabled, index, options.focusItem);\n options.onSelect(index);\n return index;\n\n case 'ArrowUp':\n case 'ArrowLeft':\n event.preventDefault();\n if (loop && index <= 0) {\n index = enabled.length - 1;\n } else {\n index = Math.max(index - 1, 0);\n }\n focusListboxItem(enabled, index, options.focusItem);\n options.onSelect(index);\n return index;\n\n case 'Home':\n event.preventDefault();\n index = 0;\n focusListboxItem(enabled, index, options.focusItem);\n options.onSelect(index);\n return index;\n\n case 'End':\n event.preventDefault();\n index = enabled.length - 1;\n focusListboxItem(enabled, index, options.focusItem);\n options.onSelect(index);\n return index;\n\n case 'Enter':\n case ' ':\n if (!options.multiselect) {\n event.preventDefault();\n activateListboxItem(enabled[index]);\n }\n return index;\n\n case 'Escape':\n event.preventDefault();\n options.onClose?.();\n return index;\n\n default:\n return index;\n }\n}\n\n/** Type-to-select string matching . */\nexport function createTypeToSelectHandler(\n items: HTMLElement[],\n onMatch: (index: number) => void,\n): { handleKey: (event: KeyboardEvent) => void; reset: () => void } {\n let typeToSelectString = '';\n let typeToSelectTimeout = 0;\n\n const reset = (): void => {\n typeToSelectString = '';\n window.clearTimeout(typeToSelectTimeout);\n };\n\n const handleKey = (event: KeyboardEvent): void => {\n if (event.key.length !== 1 || event.ctrlKey || event.metaKey || event.altKey) {\n return;\n }\n\n typeToSelectString += event.key.toLowerCase();\n window.clearTimeout(typeToSelectTimeout);\n typeToSelectTimeout = window.setTimeout(reset, 750);\n\n const enabled = getEnabledListboxItems(items);\n\n for (let index = 0; index < enabled.length; index += 1) {\n const label = (enabled[index]?.textContent ?? '').trim().toLowerCase();\n\n if (label.startsWith(typeToSelectString)) {\n onMatch(index);\n event.preventDefault();\n return;\n }\n }\n };\n\n return { handleKey, reset };\n}\n","/**\n * Hide listbox `pk-separator` siblings that no longer sit between two visible\n * `pk-option` / `pk-option-group` items (e.g. after combobox filter hides groups).\n */\nconst isListboxItemHidden = (element: HTMLElement): boolean => {\n return element.hidden || element.hasAttribute('data-pk-filter-empty');\n};\n\nconst syncListboxSeparators = (root: ParentNode): void => {\n const children = [\n ...root.querySelectorAll(':scope > pk-option, :scope > pk-option-group, :scope > pk-separator'),\n ] as HTMLElement[];\n\n const nearestItem = (from: number, direction: -1 | 1): HTMLElement | null => {\n for (\n let index = from + direction;\n direction < 0 ? index >= 0 : index < children.length;\n index += direction\n ) {\n const child = children[index];\n\n if (!child || child.localName === 'pk-separator') {\n continue;\n }\n\n return child;\n }\n\n return null;\n };\n\n for (let index = 0; index < children.length; index += 1) {\n const child = children[index];\n\n if (!child || child.localName !== 'pk-separator') {\n continue;\n }\n\n const before = nearestItem(index, -1);\n const after = nearestItem(index, 1);\n\n // Only keep dividers between two currently visible sections.\n child.hidden = !before || !after || isListboxItemHidden(before) || isListboxItemHidden(after);\n }\n};\n\nexport { syncListboxSeparators };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync-listbox-separators-saLEtPpJ.js","names":[],"sources":["../../src/utils/listbox-keyboard.ts","../../src/internal/sync-listbox-separators.ts"],"sourcesContent":["export const LISTBOX_NAVIGATION_KEYS = new Set([\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Home',\n 'End',\n 'Enter',\n ' ',\n 'Escape',\n]);\n\n/** Returns true for type-to-select character keys (single printable characters). */\nexport function isListboxTypeToSelectKey(event: KeyboardEvent): boolean {\n return event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey;\n}\n\n/**\n * Listbox keyboard navigation — patterns for pk-select / WAI-ARIA listbox.\n */\nexport type ListboxKeyboardOptions = {\n items: HTMLElement[];\n currentIndex: number;\n onSelect: (index: number) => void;\n onClose?: () => void;\n multiselect?: boolean;\n /** When true, ArrowUp/Down wrap from last→first and first→last. Default: false. */\n /** When `loop` is omitted, listbox navigation does not loop (Base UI `Select`-style default). */\n loop?: boolean;\n focusItem?: (index: number) => void;\n};\n\nexport function getEnabledListboxItems(items: HTMLElement[]): HTMLElement[] {\n return items.filter((item) => {\n return !item.hasAttribute('disabled')\n && !item.hasAttribute('hidden')\n && item.getAttribute('aria-disabled') !== 'true'\n && item.getAttribute('aria-hidden') !== 'true';\n });\n}\n\nfunction focusListboxItem(\n enabled: HTMLElement[],\n index: number,\n focusItem?: (index: number) => void,\n): void {\n if (focusItem) {\n focusItem(index);\n return;\n }\n\n const item = enabled[index];\n\n if (item instanceof HTMLElement && 'focusControl' in item && typeof item.focusControl === 'function') {\n (item as { focusControl: () => void }).focusControl();\n return;\n }\n\n item?.focus();\n}\n\nfunction activateListboxItem(item: HTMLElement | undefined): void {\n if (!item) {\n return;\n }\n\n const control = item.shadowRoot?.querySelector('.option');\n\n if (control instanceof HTMLButtonElement) {\n control.click();\n return;\n }\n\n item.click();\n}\n\nexport function handleListboxKeyDown(event: KeyboardEvent, options: ListboxKeyboardOptions): number {\n const enabled = getEnabledListboxItems(options.items);\n const loop = options.loop === true;\n\n if (enabled.length === 0) {\n return options.currentIndex;\n }\n\n let index = Math.max(0, options.currentIndex);\n const current = enabled[index] ?? enabled[0]!;\n index = enabled.indexOf(current);\n\n if (index < 0) {\n index = 0;\n }\n\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowRight':\n event.preventDefault();\n if (loop && index >= enabled.length - 1) {\n index = 0;\n } else {\n index = Math.min(index + 1, enabled.length - 1);\n }\n focusListboxItem(enabled, index, options.focusItem);\n options.onSelect(index);\n return index;\n\n case 'ArrowUp':\n case 'ArrowLeft':\n event.preventDefault();\n if (loop && index <= 0) {\n index = enabled.length - 1;\n } else {\n index = Math.max(index - 1, 0);\n }\n focusListboxItem(enabled, index, options.focusItem);\n options.onSelect(index);\n return index;\n\n case 'Home':\n event.preventDefault();\n index = 0;\n focusListboxItem(enabled, index, options.focusItem);\n options.onSelect(index);\n return index;\n\n case 'End':\n event.preventDefault();\n index = enabled.length - 1;\n focusListboxItem(enabled, index, options.focusItem);\n options.onSelect(index);\n return index;\n\n case 'Enter':\n case ' ':\n if (!options.multiselect) {\n event.preventDefault();\n activateListboxItem(enabled[index]);\n }\n return index;\n\n case 'Escape':\n event.preventDefault();\n options.onClose?.();\n return index;\n\n default:\n return index;\n }\n}\n\n/** Type-to-select string matching . */\nexport function createTypeToSelectHandler(\n items: HTMLElement[],\n onMatch: (index: number) => void,\n): { handleKey: (event: KeyboardEvent) => void; reset: () => void } {\n let typeToSelectString = '';\n let typeToSelectTimeout = 0;\n\n const reset = (): void => {\n typeToSelectString = '';\n window.clearTimeout(typeToSelectTimeout);\n };\n\n const handleKey = (event: KeyboardEvent): void => {\n if (event.key.length !== 1 || event.ctrlKey || event.metaKey || event.altKey) {\n return;\n }\n\n typeToSelectString += event.key.toLowerCase();\n window.clearTimeout(typeToSelectTimeout);\n typeToSelectTimeout = window.setTimeout(reset, 750);\n\n const enabled = getEnabledListboxItems(items);\n\n for (let index = 0; index < enabled.length; index += 1) {\n const label = (enabled[index]?.textContent ?? '').trim().toLowerCase();\n\n if (label.startsWith(typeToSelectString)) {\n onMatch(index);\n event.preventDefault();\n return;\n }\n }\n };\n\n return { handleKey, reset };\n}\n","/**\n * Hide listbox `pk-separator` siblings that no longer sit between two visible\n * `pk-option` / `pk-option-group` items (e.g. after combobox filter hides groups).\n */\nconst isListboxItemHidden = (element: HTMLElement): boolean => {\n return element.hidden || element.hasAttribute('data-pk-filter-empty');\n};\n\nconst syncListboxSeparators = (root: ParentNode): void => {\n const children = [\n ...root.querySelectorAll(':scope > pk-option, :scope > pk-option-group, :scope > pk-separator'),\n ] as HTMLElement[];\n\n const nearestItem = (from: number, direction: -1 | 1): HTMLElement | null => {\n for (\n let index = from + direction;\n direction < 0 ? index >= 0 : index < children.length;\n index += direction\n ) {\n const child = children[index];\n\n if (!child || child.localName === 'pk-separator') {\n continue;\n }\n\n return child;\n }\n\n return null;\n };\n\n for (let index = 0; index < children.length; index += 1) {\n const child = children[index];\n\n if (!child || child.localName !== 'pk-separator') {\n continue;\n }\n\n const before = nearestItem(index, -1);\n const after = nearestItem(index, 1);\n\n // Only keep dividers between two currently visible sections.\n child.hidden = !before || !after || isListboxItemHidden(before) || isListboxItemHidden(after);\n }\n};\n\nexport { syncListboxSeparators };\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as uniqueId } from "./focus-
|
|
1
|
+
import { i as uniqueId } from "./focus-DcVUPVqn.js";
|
|
2
2
|
import { css } from "lit";
|
|
3
3
|
//#region src/components/tiptap/variable-tag-node-view.ts
|
|
4
4
|
/** Match kit v1 VariableTagView chip chrome (indigo + remove). */
|
|
@@ -461,4 +461,4 @@ var tiptapContentProseMirrorStyles = css`
|
|
|
461
461
|
//#endregion
|
|
462
462
|
export { createVariableTagDomNodeView as i, tiptapInputProseMirrorStyles as n, tiptapProseMirrorStyles as r, tiptapContentProseMirrorStyles as t };
|
|
463
463
|
|
|
464
|
-
//# sourceMappingURL=tiptap.styles-
|
|
464
|
+
//# sourceMappingURL=tiptap.styles-Q4ED1nBw.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiptap.styles-CPRows--.js","names":[],"sources":["../../src/components/tiptap/variable-tag-node-view.ts","../../src/components/tiptap/tiptap.styles.ts"],"sourcesContent":["import type { Editor, NodeViewRenderer, NodeViewRendererProps } from '@tiptap/core';\nimport type { Node as ProseMirrorNode } from '@tiptap/pm/model';\nimport { uniqueId } from '../../a11y/focus.js';\n\n/** Match kit v1 VariableTagView chip chrome (indigo + remove). */\nconst REMOVE_ICON = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 10 10\" width=\"10\" height=\"10\" aria-hidden=\"true\" focusable=\"false\">\n <path fill=\"currentColor\" d=\"M2.1 1.4 5 4.3l2.9-2.9.7.7L5.7 5l2.9 2.9-.7.7L5 5.7l-2.9 2.9-.7-.7L4.3 5 1.4 2.1z\"/>\n</svg>\n`.trim();\n\nexport const PK_VARIABLE_TAG_CONFIGURE_EVENT = 'pk-variable-tag-configure';\n\nexport type PkVariableTagConfigureDetail = {\n editor: Editor;\n anchor: HTMLElement;\n attrs: Record<string, unknown>;\n getPos: () => number | undefined;\n updateAttributes: (attributes: Record<string, unknown>) => void;\n deleteNode: () => void;\n};\n\nconst findTiptapHost = (viewDom: HTMLElement): HTMLElement | null => {\n let node: Node | null = viewDom;\n while (node) {\n if (node instanceof HTMLElement && node.localName.startsWith('pk-tiptap')) {\n return node;\n }\n\n node = node.parentNode instanceof ShadowRoot\n ? node.parentNode.host\n : node.parentNode;\n }\n\n return null;\n};\n\nconst emitConfigure = (\n editor: Editor,\n detail: PkVariableTagConfigureDetail,\n) => {\n const viewDom = editor.view.dom;\n const host = findTiptapHost(viewDom);\n\n // Preferred bridge for React/Formie: property callback on <pk-tiptap-*>.\n const configure = host && 'variableTagConfigure' in host\n ? (host as HTMLElement & {\n variableTagConfigure?: ((detail: PkVariableTagConfigureDetail) => void) | null;\n }).variableTagConfigure\n : null;\n\n if (typeof configure === 'function') {\n configure(detail);\n }\n\n // Composed event is the reliable Formie path (document capture listener).\n const target = host ?? viewDom;\n target.dispatchEvent(new CustomEvent(PK_VARIABLE_TAG_CONFIGURE_EVENT, {\n bubbles: true,\n composed: true,\n detail,\n }));\n};\n\n/**\n * DOM NodeViewRendererProps do NOT include React's `deleteNode` / `updateAttributes`\n * (those live on NodeViewProps for ReactNodeViewRenderer only). Build them from\n * editor + getPos — same operations ReactNodeViewRenderer wires for VariableTagView.\n */\nfunction createNodeViewCommands(\n editor: Editor,\n getPos: NodeViewRendererProps['getPos'],\n) {\n const resolvePos = (): number | undefined => {\n const pos = typeof getPos === 'function' ? getPos() : getPos;\n return typeof pos === 'number' ? pos : undefined;\n };\n\n const deleteNode = () => {\n const pos = resolvePos();\n if (typeof pos !== 'number') {\n return;\n }\n\n const live = editor.state.doc.nodeAt(pos);\n if (!live || live.type.name !== 'variableTag') {\n return;\n }\n\n editor\n .chain()\n .focus()\n .deleteRange({ from: pos, to: pos + live.nodeSize })\n .run();\n };\n\n const updateAttributes = (attributes: Record<string, unknown>) => {\n const pos = resolvePos();\n if (typeof pos !== 'number') {\n return;\n }\n\n const live = editor.state.doc.nodeAt(pos);\n if (!live || live.type.name !== 'variableTag') {\n return;\n }\n\n editor\n .chain()\n .command(({ tr, dispatch }) => {\n if (dispatch) {\n tr.setNodeMarkup(pos, undefined, {\n ...live.attrs,\n ...attributes,\n });\n }\n return true;\n })\n .run();\n };\n\n return { deleteNode, updateAttributes, resolvePos };\n}\n\n/**\n * DOM node view for variable tags in vanilla editors.\n * Chip + remove match kit v1; configure UI is opened via `pk-variable-tag-configure`\n * (Formie mounts the edit overlay beside the WC editor).\n */\nexport function createVariableTagDomNodeView(): NodeViewRenderer {\n return (props) => {\n const { editor, getPos } = props;\n const { deleteNode, updateAttributes, resolvePos } = createNodeViewCommands(editor, getPos);\n\n let currentNode: ProseMirrorNode = props.node;\n\n const syncUnresolvedPresentation = (attrs: Record<string, unknown>) => {\n const unresolved = Boolean(attrs.unresolved);\n const token = String(attrs.value ?? '');\n const chipLabel = String(attrs.label || attrs.value || '');\n\n dom.classList.toggle('pk-variable-tag--unresolved', unresolved);\n if (unresolved) {\n dom.dataset.unresolved = 'true';\n // Extra context for AT — not HTML title (avoids native hover tooltip).\n const description = token\n ? `Unknown or missing reference — ${token}`\n : 'Unknown or missing reference';\n dom.setAttribute('aria-description', description);\n label.setAttribute('aria-invalid', 'true');\n } else {\n delete dom.dataset.unresolved;\n dom.removeAttribute('aria-description');\n label.removeAttribute('aria-invalid');\n }\n\n label.textContent = chipLabel;\n };\n\n const dom = document.createElement('span');\n dom.className = 'pk-variable-tag';\n dom.id = uniqueId('pk-variable-tag');\n dom.setAttribute('contenteditable', 'false');\n // Do NOT set draggable=true permanently — HTML5-draggable hosts suppress click,\n // which kills configure. ProseMirror sets draggable temporarily on mousedown drag.\n // TipTap React node views use data-drag-handle on a TipTap NodeView class; keep the\n // attr for parity, but drag itself is PM's selectable+draggable atom behavior.\n dom.setAttribute('data-drag-handle', '');\n dom.dataset.label = String(currentNode.attrs.label ?? '');\n dom.dataset.variableValue = String(currentNode.attrs.value ?? '');\n\n // Match kit v1 VariableTagView: real button for activate.\n const label = document.createElement('button');\n label.type = 'button';\n label.className = 'pk-variable-tag__label';\n label.draggable = false;\n dom.append(label);\n syncUnresolvedPresentation(currentNode.attrs);\n\n let removeButton: HTMLButtonElement | null = null;\n let openOnInsertHandled = false;\n let openedAt = 0;\n\n const readLiveAttrs = () => {\n const pos = resolvePos();\n if (typeof pos === 'number') {\n const live = editor.state.doc.nodeAt(pos);\n if (live?.type.name === 'variableTag') {\n return { ...live.attrs };\n }\n }\n\n return { ...currentNode.attrs };\n };\n\n const openConfigure = () => {\n if (!editor.isEditable) {\n return;\n }\n\n // Dedupe repeated emits from nested handlers / openOnInsert.\n const now = Date.now();\n if (now - openedAt < 300) {\n return;\n }\n openedAt = now;\n\n // Strip any HTML5-draggable PM may have armed so configure stays clickable\n // after this interaction (draggable hosts suppress subsequent clicks).\n dom.removeAttribute('draggable');\n\n emitConfigure(editor, {\n editor,\n anchor: dom,\n attrs: readLiveAttrs(),\n getPos: resolvePos,\n updateAttributes,\n deleteNode,\n });\n };\n\n // Open on pointerdown — before ProseMirror can arm HTML5 drag on the atom.\n label.addEventListener('pointerdown', (event) => {\n if (event.button !== 0) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n openConfigure();\n });\n label.addEventListener('click', (event) => {\n event.preventDefault();\n event.stopPropagation();\n openConfigure();\n });\n\n const syncRemoveButton = (editable: boolean) => {\n if (editable) {\n if (removeButton) {\n return;\n }\n\n removeButton = document.createElement('button');\n removeButton.type = 'button';\n removeButton.className = 'pk-variable-tag__remove';\n removeButton.setAttribute('aria-label', 'Remove');\n removeButton.draggable = false;\n removeButton.innerHTML = REMOVE_ICON;\n removeButton.addEventListener('pointerdown', (event) => {\n event.preventDefault();\n event.stopPropagation();\n });\n removeButton.addEventListener('click', (event) => {\n event.preventDefault();\n event.stopPropagation();\n deleteNode();\n });\n dom.append(removeButton);\n return;\n }\n\n removeButton?.remove();\n removeButton = null;\n };\n\n syncRemoveButton(editor.isEditable);\n\n if (currentNode.attrs.openOnInsert && editor.isEditable && !openOnInsertHandled) {\n openOnInsertHandled = true;\n queueMicrotask(() => {\n updateAttributes({ openOnInsert: false });\n openConfigure();\n });\n }\n\n return {\n dom,\n // TipTap React node views stop PM from handling events inside the chip —\n // that prevents `draggable=true` arming, which otherwise kills configure.\n // Drag still works via outer NodeSelection + data-drag-handle when the\n // pointer starts on the chip chrome (not the label/remove controls).\n stopEvent: (event) => {\n const target = event.target as Node | null;\n if (!(target instanceof Element)) {\n return false;\n }\n\n return Boolean(\n target.closest('.pk-variable-tag__label')\n || target.closest('.pk-variable-tag__remove'),\n );\n },\n selectNode: () => {\n dom.classList.add('ProseMirror-selectednode');\n // Never keep HTML5-draggable while selected — it suppresses clicks.\n dom.removeAttribute('draggable');\n },\n deselectNode: () => {\n dom.classList.remove('ProseMirror-selectednode');\n dom.removeAttribute('draggable');\n },\n update(updatedNode) {\n if (updatedNode.type.name !== 'variableTag') {\n return false;\n }\n\n currentNode = updatedNode;\n dom.dataset.label = String(updatedNode.attrs.label ?? '');\n dom.dataset.variableValue = String(updatedNode.attrs.value ?? '');\n syncUnresolvedPresentation(updatedNode.attrs);\n syncRemoveButton(editor.isEditable);\n return true;\n },\n };\n };\n}\n","import { css } from 'lit';\n\n/**\n * Indigo chip matching kit v1 VariableTagView (`bg-[#5C6BC0] text-white rounded-[2px]`).\n * Shared by rich editor + single-line input ProseMirror hosts.\n */\nconst variableTagStyles = css`\n .pk-variable-tag {\n position: relative;\n display: inline-flex;\n align-items: stretch;\n max-width: 100%;\n margin-inline: 1px;\n margin-block-start: -3px;\n padding: 0;\n border-radius: 2px;\n background: #5c6bc0;\n color: #fff;\n font-size: 11px;\n font-weight: 400;\n line-height: 1;\n white-space: nowrap;\n vertical-align: middle;\n overflow: hidden;\n cursor: default;\n box-sizing: border-box;\n }\n\n /* Unresolved / missing reference — muted grey (not alarm yellow). */\n .pk-variable-tag--unresolved {\n background: var(--pk-color-gray-100, #f3f4f6);\n color: var(--pk-color-gray-600, #4b5563);\n box-shadow: inset 0 0 0 1px var(--pk-color-gray-300, #d1d5db);\n }\n\n .pk-variable-tag--unresolved.ProseMirror-selectednode {\n box-shadow:\n inset 0 0 0 1px var(--pk-color-gray-400, #9ca3af),\n 0 0 0 2px rgba(156, 163, 175, 0.45);\n }\n\n .pk-variable-tag.ProseMirror-selectednode {\n outline: none;\n box-shadow: 0 0 0 2px rgba(123, 140, 232, 0.5);\n }\n\n .pk-variable-tag__label {\n display: inline-flex;\n align-items: center;\n max-width: 220px;\n margin: 0;\n padding: 4px 5px;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n font-size: inherit;\n line-height: inherit;\n text-align: left;\n overflow: hidden;\n text-overflow: ellipsis;\n cursor: pointer;\n user-select: none;\n }\n\n .pk-variable-tag__remove {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n align-self: stretch;\n margin: 0;\n padding: 4px 5px 4px 4px;\n border: 0;\n background: transparent;\n color: inherit;\n cursor: pointer;\n line-height: 0;\n appearance: none;\n }\n\n .pk-variable-tag__remove svg {\n display: block;\n width: 10px;\n height: 10px;\n pointer-events: none;\n }\n`;\n\nexport const tiptapProseMirrorStyles = css`\n @layer pk-component {\n .ProseMirror {\n outline: none;\n min-height: 2rem;\n padding: 1rem;\n background: rgb(251, 252, 254);\n /* Craft CP body text (~gray-700), not gray-900. */\n color: var(--pk-color-gray-700);\n font-family: var(--pk-font-family);\n /* Match pk-input / body (14px). sm (13px) matched field instructions and looked undersized vs v1. */\n font-size: var(--pk-font-size-base);\n line-height: 1.5;\n white-space: pre-wrap;\n box-sizing: border-box;\n }\n\n .ProseMirror p {\n margin: 0 0 0.5rem;\n }\n\n .ProseMirror p:last-child {\n margin-bottom: 0;\n }\n\n .ProseMirror h1 {\n font-size: 1.25rem;\n font-weight: 700;\n margin: 0 0 0.5rem;\n }\n\n .ProseMirror h2 {\n font-size: 1.125rem;\n font-weight: 600;\n margin: 0 0 0.5rem;\n }\n\n .ProseMirror h3,\n .ProseMirror h4,\n .ProseMirror h5,\n .ProseMirror h6 {\n font-weight: 600;\n margin: 0 0 0.5rem;\n }\n\n .ProseMirror a {\n color: var(--pk-color-blue-600);\n text-decoration: underline;\n cursor: pointer;\n }\n\n .ProseMirror ul,\n .ProseMirror ol {\n margin: 0 0 0.5rem;\n padding-left: 1.25rem;\n }\n\n .ProseMirror blockquote {\n margin: 0 0 0.5rem;\n padding-left: 0.75rem;\n border-left: 3px solid var(--pk-color-gray-300);\n color: var(--pk-color-gray-600);\n }\n\n .ProseMirror code {\n font-family: var(--pk-font-family-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace);\n font-size: var(--pk-font-size-mono, 0.9em);\n line-height: var(--pk-line-height-mono, 1.5);\n background: var(--pk-color-gray-100);\n border-radius: 0.2rem;\n padding: 0.1rem 0.25rem;\n }\n\n .ProseMirror pre {\n margin: 0 0 0.5rem;\n padding: 0.75rem;\n background: var(--pk-color-gray-900);\n color: var(--pk-color-gray-50);\n border-radius: var(--pk-radius-md);\n overflow-x: auto;\n font-family: var(--pk-font-family-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace);\n font-size: var(--pk-font-size-mono, 0.9em);\n line-height: var(--pk-line-height-mono, 1.5);\n }\n\n ${variableTagStyles}\n }\n`;\n\n/**\n * Single-line TipTap field — same box metrics as `pk-input` .input\n * (14px / line-height 1.4 / padding 6px 8px).\n *\n * ProseMirror always injects `br.ProseMirror-trailingBreak` for the caret.\n * Never `display: none` it — that freezes one-liner docs after the first character.\n * Clip to one line height instead so the break cannot inflate the control.\n */\nexport const tiptapInputProseMirrorStyles = css`\n @layer pk-component {\n .ProseMirror {\n outline: none;\n margin: 0;\n /* Match stock pk-input padding by default. Hosts can override density via\n * --pk-tiptap-input-* (light DOM cannot style .ProseMirror in the shadow tree).\n */\n padding-block: var(--pk-tiptap-input-padding-block, 6px);\n padding-inline-start: var(--pk-tiptap-input-padding-inline-start, 8px);\n padding-inline-end: var(--pk-tiptap-input-padding-inline-end, 8px);\n /* One-liner clip: padding + control line-height (v1 text-sm), not a fixed shell token. */\n height: var(--pk-tiptap-input-height, calc(var(--pk-input-control-line-height, 1.25rem) + 12px));\n max-height: var(--pk-tiptap-input-height, calc(var(--pk-input-control-line-height, 1.25rem) + 12px));\n background: var(--pk-input-bg);\n /* Craft CP body / field value text. */\n color: var(--pk-color-gray-700);\n font-family: var(--pk-font-family);\n font-size: var(--pk-tiptap-input-font-size, var(--pk-font-size-base));\n line-height: var(--pk-tiptap-input-line-height, var(--pk-input-control-line-height, 1.25rem));\n white-space: nowrap;\n overflow-x: auto;\n overflow-y: hidden;\n box-sizing: border-box;\n scrollbar-width: none;\n }\n\n .ProseMirror::-webkit-scrollbar {\n display: none;\n }\n\n /* OneLinerDocument is inline-only; keep p inline if a schema ever wraps text. */\n .ProseMirror p {\n margin: 0;\n display: inline;\n line-height: inherit;\n }\n\n /* Read-only display: no input padding/height box (v1 skipped chrome when readOnly).\n * Inherit color/weight so list name links (text-blue-600 font-bold) show through. */\n :host([readonly]) .ProseMirror {\n padding-block: 0;\n padding-inline: 0;\n height: auto;\n max-height: none;\n background: transparent;\n overflow: visible;\n white-space: normal;\n color: inherit;\n font-weight: inherit;\n font-size: inherit;\n }\n\n ${variableTagStyles}\n }\n`;\n\nexport const tiptapContentProseMirrorStyles = css`\n @layer pk-component {\n /* Inherit host color/size so light-DOM wrappers (warning banners, badges)\n can restyle read-only TipTap without piercing the shadow tree. */\n .ProseMirror {\n outline: none;\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n }\n\n .ProseMirror p {\n margin: 0;\n }\n }\n`;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tiptap.styles-Q4ED1nBw.js","names":[],"sources":["../../src/components/tiptap/variable-tag-node-view.ts","../../src/components/tiptap/tiptap.styles.ts"],"sourcesContent":["import type { Editor, NodeViewRenderer, NodeViewRendererProps } from '@tiptap/core';\nimport type { Node as ProseMirrorNode } from '@tiptap/pm/model';\nimport { uniqueId } from '../../a11y/focus.js';\n\n/** Match kit v1 VariableTagView chip chrome (indigo + remove). */\nconst REMOVE_ICON = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 10 10\" width=\"10\" height=\"10\" aria-hidden=\"true\" focusable=\"false\">\n <path fill=\"currentColor\" d=\"M2.1 1.4 5 4.3l2.9-2.9.7.7L5.7 5l2.9 2.9-.7.7L5 5.7l-2.9 2.9-.7-.7L4.3 5 1.4 2.1z\"/>\n</svg>\n`.trim();\n\nexport const PK_VARIABLE_TAG_CONFIGURE_EVENT = 'pk-variable-tag-configure';\n\nexport type PkVariableTagConfigureDetail = {\n editor: Editor;\n anchor: HTMLElement;\n attrs: Record<string, unknown>;\n getPos: () => number | undefined;\n updateAttributes: (attributes: Record<string, unknown>) => void;\n deleteNode: () => void;\n};\n\nconst findTiptapHost = (viewDom: HTMLElement): HTMLElement | null => {\n let node: Node | null = viewDom;\n while (node) {\n if (node instanceof HTMLElement && node.localName.startsWith('pk-tiptap')) {\n return node;\n }\n\n node = node.parentNode instanceof ShadowRoot\n ? node.parentNode.host\n : node.parentNode;\n }\n\n return null;\n};\n\nconst emitConfigure = (\n editor: Editor,\n detail: PkVariableTagConfigureDetail,\n) => {\n const viewDom = editor.view.dom;\n const host = findTiptapHost(viewDom);\n\n // Preferred bridge for React/Formie: property callback on <pk-tiptap-*>.\n const configure = host && 'variableTagConfigure' in host\n ? (host as HTMLElement & {\n variableTagConfigure?: ((detail: PkVariableTagConfigureDetail) => void) | null;\n }).variableTagConfigure\n : null;\n\n if (typeof configure === 'function') {\n configure(detail);\n }\n\n // Composed event is the reliable Formie path (document capture listener).\n const target = host ?? viewDom;\n target.dispatchEvent(new CustomEvent(PK_VARIABLE_TAG_CONFIGURE_EVENT, {\n bubbles: true,\n composed: true,\n detail,\n }));\n};\n\n/**\n * DOM NodeViewRendererProps do NOT include React's `deleteNode` / `updateAttributes`\n * (those live on NodeViewProps for ReactNodeViewRenderer only). Build them from\n * editor + getPos — same operations ReactNodeViewRenderer wires for VariableTagView.\n */\nfunction createNodeViewCommands(\n editor: Editor,\n getPos: NodeViewRendererProps['getPos'],\n) {\n const resolvePos = (): number | undefined => {\n const pos = typeof getPos === 'function' ? getPos() : getPos;\n return typeof pos === 'number' ? pos : undefined;\n };\n\n const deleteNode = () => {\n const pos = resolvePos();\n if (typeof pos !== 'number') {\n return;\n }\n\n const live = editor.state.doc.nodeAt(pos);\n if (!live || live.type.name !== 'variableTag') {\n return;\n }\n\n editor\n .chain()\n .focus()\n .deleteRange({ from: pos, to: pos + live.nodeSize })\n .run();\n };\n\n const updateAttributes = (attributes: Record<string, unknown>) => {\n const pos = resolvePos();\n if (typeof pos !== 'number') {\n return;\n }\n\n const live = editor.state.doc.nodeAt(pos);\n if (!live || live.type.name !== 'variableTag') {\n return;\n }\n\n editor\n .chain()\n .command(({ tr, dispatch }) => {\n if (dispatch) {\n tr.setNodeMarkup(pos, undefined, {\n ...live.attrs,\n ...attributes,\n });\n }\n return true;\n })\n .run();\n };\n\n return { deleteNode, updateAttributes, resolvePos };\n}\n\n/**\n * DOM node view for variable tags in vanilla editors.\n * Chip + remove match kit v1; configure UI is opened via `pk-variable-tag-configure`\n * (Formie mounts the edit overlay beside the WC editor).\n */\nexport function createVariableTagDomNodeView(): NodeViewRenderer {\n return (props) => {\n const { editor, getPos } = props;\n const { deleteNode, updateAttributes, resolvePos } = createNodeViewCommands(editor, getPos);\n\n let currentNode: ProseMirrorNode = props.node;\n\n const syncUnresolvedPresentation = (attrs: Record<string, unknown>) => {\n const unresolved = Boolean(attrs.unresolved);\n const token = String(attrs.value ?? '');\n const chipLabel = String(attrs.label || attrs.value || '');\n\n dom.classList.toggle('pk-variable-tag--unresolved', unresolved);\n if (unresolved) {\n dom.dataset.unresolved = 'true';\n // Extra context for AT — not HTML title (avoids native hover tooltip).\n const description = token\n ? `Unknown or missing reference — ${token}`\n : 'Unknown or missing reference';\n dom.setAttribute('aria-description', description);\n label.setAttribute('aria-invalid', 'true');\n } else {\n delete dom.dataset.unresolved;\n dom.removeAttribute('aria-description');\n label.removeAttribute('aria-invalid');\n }\n\n label.textContent = chipLabel;\n };\n\n const dom = document.createElement('span');\n dom.className = 'pk-variable-tag';\n dom.id = uniqueId('pk-variable-tag');\n dom.setAttribute('contenteditable', 'false');\n // Do NOT set draggable=true permanently — HTML5-draggable hosts suppress click,\n // which kills configure. ProseMirror sets draggable temporarily on mousedown drag.\n // TipTap React node views use data-drag-handle on a TipTap NodeView class; keep the\n // attr for parity, but drag itself is PM's selectable+draggable atom behavior.\n dom.setAttribute('data-drag-handle', '');\n dom.dataset.label = String(currentNode.attrs.label ?? '');\n dom.dataset.variableValue = String(currentNode.attrs.value ?? '');\n\n // Match kit v1 VariableTagView: real button for activate.\n const label = document.createElement('button');\n label.type = 'button';\n label.className = 'pk-variable-tag__label';\n label.draggable = false;\n dom.append(label);\n syncUnresolvedPresentation(currentNode.attrs);\n\n let removeButton: HTMLButtonElement | null = null;\n let openOnInsertHandled = false;\n let openedAt = 0;\n\n const readLiveAttrs = () => {\n const pos = resolvePos();\n if (typeof pos === 'number') {\n const live = editor.state.doc.nodeAt(pos);\n if (live?.type.name === 'variableTag') {\n return { ...live.attrs };\n }\n }\n\n return { ...currentNode.attrs };\n };\n\n const openConfigure = () => {\n if (!editor.isEditable) {\n return;\n }\n\n // Dedupe repeated emits from nested handlers / openOnInsert.\n const now = Date.now();\n if (now - openedAt < 300) {\n return;\n }\n openedAt = now;\n\n // Strip any HTML5-draggable PM may have armed so configure stays clickable\n // after this interaction (draggable hosts suppress subsequent clicks).\n dom.removeAttribute('draggable');\n\n emitConfigure(editor, {\n editor,\n anchor: dom,\n attrs: readLiveAttrs(),\n getPos: resolvePos,\n updateAttributes,\n deleteNode,\n });\n };\n\n // Open on pointerdown — before ProseMirror can arm HTML5 drag on the atom.\n label.addEventListener('pointerdown', (event) => {\n if (event.button !== 0) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n openConfigure();\n });\n label.addEventListener('click', (event) => {\n event.preventDefault();\n event.stopPropagation();\n openConfigure();\n });\n\n const syncRemoveButton = (editable: boolean) => {\n if (editable) {\n if (removeButton) {\n return;\n }\n\n removeButton = document.createElement('button');\n removeButton.type = 'button';\n removeButton.className = 'pk-variable-tag__remove';\n removeButton.setAttribute('aria-label', 'Remove');\n removeButton.draggable = false;\n removeButton.innerHTML = REMOVE_ICON;\n removeButton.addEventListener('pointerdown', (event) => {\n event.preventDefault();\n event.stopPropagation();\n });\n removeButton.addEventListener('click', (event) => {\n event.preventDefault();\n event.stopPropagation();\n deleteNode();\n });\n dom.append(removeButton);\n return;\n }\n\n removeButton?.remove();\n removeButton = null;\n };\n\n syncRemoveButton(editor.isEditable);\n\n if (currentNode.attrs.openOnInsert && editor.isEditable && !openOnInsertHandled) {\n openOnInsertHandled = true;\n queueMicrotask(() => {\n updateAttributes({ openOnInsert: false });\n openConfigure();\n });\n }\n\n return {\n dom,\n // TipTap React node views stop PM from handling events inside the chip —\n // that prevents `draggable=true` arming, which otherwise kills configure.\n // Drag still works via outer NodeSelection + data-drag-handle when the\n // pointer starts on the chip chrome (not the label/remove controls).\n stopEvent: (event) => {\n const target = event.target as Node | null;\n if (!(target instanceof Element)) {\n return false;\n }\n\n return Boolean(\n target.closest('.pk-variable-tag__label')\n || target.closest('.pk-variable-tag__remove'),\n );\n },\n selectNode: () => {\n dom.classList.add('ProseMirror-selectednode');\n // Never keep HTML5-draggable while selected — it suppresses clicks.\n dom.removeAttribute('draggable');\n },\n deselectNode: () => {\n dom.classList.remove('ProseMirror-selectednode');\n dom.removeAttribute('draggable');\n },\n update(updatedNode) {\n if (updatedNode.type.name !== 'variableTag') {\n return false;\n }\n\n currentNode = updatedNode;\n dom.dataset.label = String(updatedNode.attrs.label ?? '');\n dom.dataset.variableValue = String(updatedNode.attrs.value ?? '');\n syncUnresolvedPresentation(updatedNode.attrs);\n syncRemoveButton(editor.isEditable);\n return true;\n },\n };\n };\n}\n","import { css } from 'lit';\n\n/**\n * Indigo chip matching kit v1 VariableTagView (`bg-[#5C6BC0] text-white rounded-[2px]`).\n * Shared by rich editor + single-line input ProseMirror hosts.\n */\nconst variableTagStyles = css`\n .pk-variable-tag {\n position: relative;\n display: inline-flex;\n align-items: stretch;\n max-width: 100%;\n margin-inline: 1px;\n margin-block-start: -3px;\n padding: 0;\n border-radius: 2px;\n background: #5c6bc0;\n color: #fff;\n font-size: 11px;\n font-weight: 400;\n line-height: 1;\n white-space: nowrap;\n vertical-align: middle;\n overflow: hidden;\n cursor: default;\n box-sizing: border-box;\n }\n\n /* Unresolved / missing reference — muted grey (not alarm yellow). */\n .pk-variable-tag--unresolved {\n background: var(--pk-color-gray-100, #f3f4f6);\n color: var(--pk-color-gray-600, #4b5563);\n box-shadow: inset 0 0 0 1px var(--pk-color-gray-300, #d1d5db);\n }\n\n .pk-variable-tag--unresolved.ProseMirror-selectednode {\n box-shadow:\n inset 0 0 0 1px var(--pk-color-gray-400, #9ca3af),\n 0 0 0 2px rgba(156, 163, 175, 0.45);\n }\n\n .pk-variable-tag.ProseMirror-selectednode {\n outline: none;\n box-shadow: 0 0 0 2px rgba(123, 140, 232, 0.5);\n }\n\n .pk-variable-tag__label {\n display: inline-flex;\n align-items: center;\n max-width: 220px;\n margin: 0;\n padding: 4px 5px;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n font-size: inherit;\n line-height: inherit;\n text-align: left;\n overflow: hidden;\n text-overflow: ellipsis;\n cursor: pointer;\n user-select: none;\n }\n\n .pk-variable-tag__remove {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n align-self: stretch;\n margin: 0;\n padding: 4px 5px 4px 4px;\n border: 0;\n background: transparent;\n color: inherit;\n cursor: pointer;\n line-height: 0;\n appearance: none;\n }\n\n .pk-variable-tag__remove svg {\n display: block;\n width: 10px;\n height: 10px;\n pointer-events: none;\n }\n`;\n\nexport const tiptapProseMirrorStyles = css`\n @layer pk-component {\n .ProseMirror {\n outline: none;\n min-height: 2rem;\n padding: 1rem;\n background: rgb(251, 252, 254);\n /* Craft CP body text (~gray-700), not gray-900. */\n color: var(--pk-color-gray-700);\n font-family: var(--pk-font-family);\n /* Match pk-input / body (14px). sm (13px) matched field instructions and looked undersized vs v1. */\n font-size: var(--pk-font-size-base);\n line-height: 1.5;\n white-space: pre-wrap;\n box-sizing: border-box;\n }\n\n .ProseMirror p {\n margin: 0 0 0.5rem;\n }\n\n .ProseMirror p:last-child {\n margin-bottom: 0;\n }\n\n .ProseMirror h1 {\n font-size: 1.25rem;\n font-weight: 700;\n margin: 0 0 0.5rem;\n }\n\n .ProseMirror h2 {\n font-size: 1.125rem;\n font-weight: 600;\n margin: 0 0 0.5rem;\n }\n\n .ProseMirror h3,\n .ProseMirror h4,\n .ProseMirror h5,\n .ProseMirror h6 {\n font-weight: 600;\n margin: 0 0 0.5rem;\n }\n\n .ProseMirror a {\n color: var(--pk-color-blue-600);\n text-decoration: underline;\n cursor: pointer;\n }\n\n .ProseMirror ul,\n .ProseMirror ol {\n margin: 0 0 0.5rem;\n padding-left: 1.25rem;\n }\n\n .ProseMirror blockquote {\n margin: 0 0 0.5rem;\n padding-left: 0.75rem;\n border-left: 3px solid var(--pk-color-gray-300);\n color: var(--pk-color-gray-600);\n }\n\n .ProseMirror code {\n font-family: var(--pk-font-family-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace);\n font-size: var(--pk-font-size-mono, 0.9em);\n line-height: var(--pk-line-height-mono, 1.5);\n background: var(--pk-color-gray-100);\n border-radius: 0.2rem;\n padding: 0.1rem 0.25rem;\n }\n\n .ProseMirror pre {\n margin: 0 0 0.5rem;\n padding: 0.75rem;\n background: var(--pk-color-gray-900);\n color: var(--pk-color-gray-50);\n border-radius: var(--pk-radius-md);\n overflow-x: auto;\n font-family: var(--pk-font-family-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace);\n font-size: var(--pk-font-size-mono, 0.9em);\n line-height: var(--pk-line-height-mono, 1.5);\n }\n\n ${variableTagStyles}\n }\n`;\n\n/**\n * Single-line TipTap field — same box metrics as `pk-input` .input\n * (14px / line-height 1.4 / padding 6px 8px).\n *\n * ProseMirror always injects `br.ProseMirror-trailingBreak` for the caret.\n * Never `display: none` it — that freezes one-liner docs after the first character.\n * Clip to one line height instead so the break cannot inflate the control.\n */\nexport const tiptapInputProseMirrorStyles = css`\n @layer pk-component {\n .ProseMirror {\n outline: none;\n margin: 0;\n /* Match stock pk-input padding by default. Hosts can override density via\n * --pk-tiptap-input-* (light DOM cannot style .ProseMirror in the shadow tree).\n */\n padding-block: var(--pk-tiptap-input-padding-block, 6px);\n padding-inline-start: var(--pk-tiptap-input-padding-inline-start, 8px);\n padding-inline-end: var(--pk-tiptap-input-padding-inline-end, 8px);\n /* One-liner clip: padding + control line-height (v1 text-sm), not a fixed shell token. */\n height: var(--pk-tiptap-input-height, calc(var(--pk-input-control-line-height, 1.25rem) + 12px));\n max-height: var(--pk-tiptap-input-height, calc(var(--pk-input-control-line-height, 1.25rem) + 12px));\n background: var(--pk-input-bg);\n /* Craft CP body / field value text. */\n color: var(--pk-color-gray-700);\n font-family: var(--pk-font-family);\n font-size: var(--pk-tiptap-input-font-size, var(--pk-font-size-base));\n line-height: var(--pk-tiptap-input-line-height, var(--pk-input-control-line-height, 1.25rem));\n white-space: nowrap;\n overflow-x: auto;\n overflow-y: hidden;\n box-sizing: border-box;\n scrollbar-width: none;\n }\n\n .ProseMirror::-webkit-scrollbar {\n display: none;\n }\n\n /* OneLinerDocument is inline-only; keep p inline if a schema ever wraps text. */\n .ProseMirror p {\n margin: 0;\n display: inline;\n line-height: inherit;\n }\n\n /* Read-only display: no input padding/height box (v1 skipped chrome when readOnly).\n * Inherit color/weight so list name links (text-blue-600 font-bold) show through. */\n :host([readonly]) .ProseMirror {\n padding-block: 0;\n padding-inline: 0;\n height: auto;\n max-height: none;\n background: transparent;\n overflow: visible;\n white-space: normal;\n color: inherit;\n font-weight: inherit;\n font-size: inherit;\n }\n\n ${variableTagStyles}\n }\n`;\n\nexport const tiptapContentProseMirrorStyles = css`\n @layer pk-component {\n /* Inherit host color/size so light-DOM wrappers (warning banners, badges)\n can restyle read-only TipTap without piercing the shadow tree. */\n .ProseMirror {\n outline: none;\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n }\n\n .ProseMirror p {\n margin: 0;\n }\n }\n`;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-registry.d.ts","sourceRoot":"","sources":["../src/component-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"component-registry.d.ts","sourceRoot":"","sources":["../src/component-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA0DzD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAwC,CAAC;AAExF,6DAA6D;AAC7D,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA2D3D,CAAC;AAOF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM5D,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK3D,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,wBAAwB,CAAC;AAEnE;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAyC3D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/alert/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,OAAO,EACP,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,cAAc,GACtB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { PkElement } from '../../base/pk-element.js';
|
|
2
|
+
export type PkAlertVariant = 'neutral' | 'info' | 'success' | 'warning' | 'error';
|
|
3
|
+
export type PkAlertAppearance = 'accent' | 'filled-outlined' | 'filled' | 'outlined' | 'plain';
|
|
4
|
+
export type PkAlertAnnouncement = 'off' | 'polite' | 'assertive';
|
|
5
|
+
export type PkAlertSize = 'sm' | 'default' | 'lg';
|
|
6
|
+
/**
|
|
7
|
+
* Semantic notice for feedback, warnings and recoverable failures.
|
|
8
|
+
*
|
|
9
|
+
* @slot title - Alert heading. Takes precedence over the `heading` property.
|
|
10
|
+
* @slot icon - Custom icon. The component supplies a variant icon by default.
|
|
11
|
+
* @slot - Alert message or other primary content.
|
|
12
|
+
* @slot actions - Optional primary alert actions.
|
|
13
|
+
* @slot details - Optional content inside the collapsible details region.
|
|
14
|
+
*
|
|
15
|
+
* @event pk-dismiss - Emitted before a dismissible alert hides. Prevent to keep it visible.
|
|
16
|
+
* @event pk-copy - Emitted when the details are copied successfully.
|
|
17
|
+
* @event pk-copy-error - Emitted when the details cannot be copied.
|
|
18
|
+
*
|
|
19
|
+
* @csspart base - Alert container.
|
|
20
|
+
* @csspart notice - Icon, content and dismiss-button row.
|
|
21
|
+
* @csspart icon - Icon wrapper.
|
|
22
|
+
* @csspart content - Heading and message wrapper.
|
|
23
|
+
* @csspart title - Alert heading.
|
|
24
|
+
* @csspart body - Default content wrapper.
|
|
25
|
+
* @csspart dismiss-button - Dismiss button.
|
|
26
|
+
* @csspart actions - Alert actions wrapper.
|
|
27
|
+
* @csspart details - Collapsible details element.
|
|
28
|
+
* @csspart details-summary - Details disclosure label.
|
|
29
|
+
* @csspart details-content - Details content wrapper.
|
|
30
|
+
* @csspart copy-button - Copy-details button.
|
|
31
|
+
* @csspart copy-status - Copy result status.
|
|
32
|
+
*
|
|
33
|
+
* @cssproperty --pk-alert-accent - Accent, title and icon colour.
|
|
34
|
+
* @cssproperty --pk-alert-background - Alert background.
|
|
35
|
+
* @cssproperty --pk-alert-border - Alert and divider border colour.
|
|
36
|
+
* @cssproperty --pk-alert-color - Alert host colour.
|
|
37
|
+
* @cssproperty --pk-alert-body-color - Primary content colour.
|
|
38
|
+
* @cssproperty --pk-alert-title-color - Heading colour.
|
|
39
|
+
* @cssproperty --pk-alert-title-size - Heading font size.
|
|
40
|
+
* @cssproperty --pk-alert-padding - Alert inner padding.
|
|
41
|
+
* @cssproperty --pk-alert-radius - Alert corner radius.
|
|
42
|
+
* @cssproperty --pk-alert-details-max-height - Maximum height of diagnostic details.
|
|
43
|
+
*
|
|
44
|
+
* @dependency pk-copy-button - Compact copy-details action.
|
|
45
|
+
*/
|
|
46
|
+
export declare class PkAlert extends PkElement {
|
|
47
|
+
static styles: import('lit').CSSResult;
|
|
48
|
+
private readonly hasSlotController;
|
|
49
|
+
variant: PkAlertVariant;
|
|
50
|
+
/** Overall density, including typography, icons, spacing, details, and actions. */
|
|
51
|
+
size: PkAlertSize;
|
|
52
|
+
/** Visual treatment, independent from the alert's semantic variant. */
|
|
53
|
+
appearance: PkAlertAppearance;
|
|
54
|
+
heading: string;
|
|
55
|
+
hideIcon: boolean;
|
|
56
|
+
dismissible: boolean;
|
|
57
|
+
announce: PkAlertAnnouncement;
|
|
58
|
+
detailsLabel: string;
|
|
59
|
+
detailsOpen: boolean;
|
|
60
|
+
copyable: boolean;
|
|
61
|
+
copyLabel: string;
|
|
62
|
+
copiedLabel: string;
|
|
63
|
+
copyErrorLabel: string;
|
|
64
|
+
dismissLabel: string;
|
|
65
|
+
private detailsSlot;
|
|
66
|
+
private copyButton?;
|
|
67
|
+
private copyStatus;
|
|
68
|
+
private copyFailed;
|
|
69
|
+
private copyStatusResetTimer?;
|
|
70
|
+
disconnectedCallback(): void;
|
|
71
|
+
private hasTitle;
|
|
72
|
+
private hasDetails;
|
|
73
|
+
private get detailsValue();
|
|
74
|
+
private resetCopyStatusLater;
|
|
75
|
+
private showCopySuccess;
|
|
76
|
+
private showCopyError;
|
|
77
|
+
private handleCopySuccess;
|
|
78
|
+
private handleCopyError;
|
|
79
|
+
private selectDetails;
|
|
80
|
+
/** Copy the plain text assigned to the details slot. */
|
|
81
|
+
copyDetails(): Promise<void>;
|
|
82
|
+
/** Request dismissal and hide the alert unless the event is prevented. */
|
|
83
|
+
dismiss(): void;
|
|
84
|
+
/** Show an alert hidden by `dismiss()`. */
|
|
85
|
+
show(): void;
|
|
86
|
+
private handleDetailsToggle;
|
|
87
|
+
private renderIcon;
|
|
88
|
+
render(): import('lit-html').TemplateResult<1>;
|
|
89
|
+
}
|
|
90
|
+
declare global {
|
|
91
|
+
interface HTMLElementTagNameMap {
|
|
92
|
+
'pk-alert': PkAlert;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=pk-alert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pk-alert.d.ts","sourceRoot":"","sources":["../../../src/components/alert/pk-alert.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAcrD,OAAO,kCAAkC,CAAC;AAG1C,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAClF,MAAM,MAAM,iBAAiB,GACvB,QAAQ,GACR,iBAAiB,GACjB,QAAQ,GACR,UAAU,GACV,OAAO,CAAC;AACd,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAC;AACjE,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAYlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,qBACa,OAAQ,SAAQ,SAAS;IAClC,OAAgB,MAAM,0BAAiB;IAEvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAMhC;IAGF,OAAO,EAAE,cAAc,CAAU;IAEjC,mFAAmF;IAEnF,IAAI,EAAE,WAAW,CAAa;IAE9B,uEAAuE;IAEvE,UAAU,EAAE,iBAAiB,CAAY;IAGzC,OAAO,SAAM;IAGb,QAAQ,UAAS;IAGjB,WAAW,UAAS;IAGpB,QAAQ,EAAE,mBAAmB,CAAS;IAGtC,YAAY,SAAa;IAGzB,WAAW,UAAS;IAGpB,QAAQ,UAAS;IAGjB,SAAS,SAAkB;IAG3B,WAAW,SAAqB;IAGhC,cAAc,SAA6D;IAG3E,YAAY,SAAa;IAGzB,OAAO,CAAC,WAAW,CAAmB;IAGtC,OAAO,CAAC,UAAU,CAAC,CAAe;IAGlC,OAAO,CAAC,UAAU,CAAM;IAGxB,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,oBAAoB,CAAC,CAAS;IAE7B,oBAAoB,IAAI,IAAI;IAKrC,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,UAAU;IAIlB,OAAO,KAAK,YAAY,GAKvB;IAED,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,aAAa;IAoBrB,wDAAwD;IAClD,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BlC,0EAA0E;IAC1E,OAAO,IAAI,IAAI;IAMf,2CAA2C;IAC3C,IAAI,IAAI,IAAI;IAIZ,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,UAAU;IAYT,MAAM;CAsGlB;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,UAAU,EAAE,OAAO,CAAC;KACvB;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pk-alert.styles.d.ts","sourceRoot":"","sources":["../../../src/components/alert/pk-alert.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,yBA+YzB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as PkAutocomplete } from "../../chunks/pk-autocomplete-
|
|
1
|
+
import { t as PkAutocomplete } from "../../chunks/pk-autocomplete-DUXhs1hi.js";
|
|
2
2
|
export { PkAutocomplete };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as PkAutocomplete } from "../chunks/pk-autocomplete-
|
|
1
|
+
import { t as PkAutocomplete } from "../chunks/pk-autocomplete-DUXhs1hi.js";
|
|
2
2
|
export { PkAutocomplete };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as PkButton } from "../../chunks/pk-button-
|
|
1
|
+
import { t as PkButton } from "../../chunks/pk-button-ntSVrer_.js";
|
|
2
2
|
export { PkButton };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as PkButtonGroupSeparator } from "../../chunks/pk-button-group-separator-
|
|
1
|
+
import { t as PkButtonGroupSeparator } from "../../chunks/pk-button-group-separator-B1a8dP9A.js";
|
|
2
2
|
export { PkButtonGroupSeparator };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as PkButtonGroupText } from "../../chunks/pk-button-group-text-
|
|
1
|
+
import { t as PkButtonGroupText } from "../../chunks/pk-button-group-text-CWNlZkyV.js";
|
|
2
2
|
export { PkButtonGroupText };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as PkButtonGroup } from "../../chunks/pk-button-group-
|
|
1
|
+
import { t as PkButtonGroup } from "../../chunks/pk-button-group-BY12Lbk7.js";
|
|
2
2
|
export { PkButtonGroup };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as PkButtonGroup } from "../chunks/pk-button-group-
|
|
2
|
-
import { t as PkButtonGroupSeparator } from "../chunks/pk-button-group-separator-
|
|
3
|
-
import { t as PkButtonGroupText } from "../chunks/pk-button-group-text-
|
|
1
|
+
import { t as PkButtonGroup } from "../chunks/pk-button-group-BY12Lbk7.js";
|
|
2
|
+
import { t as PkButtonGroupSeparator } from "../chunks/pk-button-group-separator-B1a8dP9A.js";
|
|
3
|
+
import { t as PkButtonGroupText } from "../chunks/pk-button-group-text-CWNlZkyV.js";
|
|
4
4
|
export { PkButtonGroup, PkButtonGroupSeparator, PkButtonGroupText };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as PkButton } from "../chunks/pk-button-
|
|
1
|
+
import { t as PkButton } from "../chunks/pk-button-ntSVrer_.js";
|
|
2
2
|
export { PkButton };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as PkCalendar } from "../../chunks/pk-calendar-
|
|
1
|
+
import { t as PkCalendar } from "../../chunks/pk-calendar-Df0c5u79.js";
|
|
2
2
|
export { PkCalendar };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as PkCalendar } from "../chunks/pk-calendar-
|
|
1
|
+
import { t as PkCalendar } from "../chunks/pk-calendar-Df0c5u79.js";
|
|
2
2
|
export { PkCalendar };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as PkCheckbox } from "../../chunks/pk-checkbox-
|
|
1
|
+
import { t as PkCheckbox } from "../../chunks/pk-checkbox-L5uRex3b.js";
|
|
2
2
|
export { PkCheckbox };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as PkCheckboxSelect, t as ALL_VALUE } from "../../chunks/pk-checkbox-select-
|
|
1
|
+
import { n as PkCheckboxSelect, t as ALL_VALUE } from "../../chunks/pk-checkbox-select-6OS0wFYO.js";
|
|
2
2
|
export { ALL_VALUE, PkCheckboxSelect };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as PkCheckboxSelect, t as ALL_VALUE } from "../chunks/pk-checkbox-select-
|
|
1
|
+
import { n as PkCheckboxSelect, t as ALL_VALUE } from "../chunks/pk-checkbox-select-6OS0wFYO.js";
|
|
2
2
|
export { ALL_VALUE, PkCheckboxSelect };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as PkCheckbox } from "../chunks/pk-checkbox-
|
|
1
|
+
import { t as PkCheckbox } from "../chunks/pk-checkbox-L5uRex3b.js";
|
|
2
2
|
export { PkCheckbox };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as PkCodeEditor } from "../../chunks/pk-code-editor-
|
|
1
|
+
import { t as PkCodeEditor } from "../../chunks/pk-code-editor-vZriNR67.js";
|
|
2
2
|
export { PkCodeEditor };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as PkCodeEditor } from "../chunks/pk-code-editor-
|
|
1
|
+
import { t as PkCodeEditor } from "../chunks/pk-code-editor-vZriNR67.js";
|
|
2
2
|
export { PkCodeEditor };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as PkColorInput } from "../../chunks/pk-color-input-
|
|
1
|
+
import { t as PkColorInput } from "../../chunks/pk-color-input-Csbm4ROT.js";
|
|
2
2
|
export { PkColorInput };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as PkColorInput } from "../chunks/pk-color-input-
|
|
1
|
+
import { t as PkColorInput } from "../chunks/pk-color-input-Csbm4ROT.js";
|
|
2
2
|
export { PkColorInput };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as PkCombobox } from "../../chunks/pk-combobox-
|
|
1
|
+
import { t as PkCombobox } from "../../chunks/pk-combobox-BrSBrldb.js";
|
|
2
2
|
export { PkCombobox };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as PkCombobox } from "../chunks/pk-combobox-
|
|
1
|
+
import { t as PkCombobox } from "../chunks/pk-combobox-BrSBrldb.js";
|
|
2
2
|
export { PkCombobox };
|