@verbb/plugin-kit-web 2.0.13 → 2.0.14

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.
@@ -1 +1 @@
1
- {"version":3,"file":"register-C9xZttKy.js","names":[],"sources":["../../src/register.ts"],"sourcesContent":["// Full-library path: every curated glyph is available to `<pk-icon icon=\"…\">`.\nimport '@verbb/plugin-kit-icons/all.js';\n\nimport { PkButton } from './components/button/pk-button.js';\nimport { PkButtonGroup } from './components/button-group/pk-button-group.js';\nimport { PkButtonGroupSeparator } from './components/button-group/pk-button-group-separator.js';\nimport { PkButtonGroupText } from './components/button-group/pk-button-group-text.js';\nimport { PkCheckbox } from './components/checkbox/pk-checkbox.js';\nimport { PkCheckboxSelect } from './components/checkbox-select/pk-checkbox-select.js';\nimport { PkCodeEditor } from './components/code-editor/pk-code-editor.js';\nimport { PkColorInput } from './components/color-input/pk-color-input.js';\nimport { PkCalendar } from './components/calendar/pk-calendar.js';\nimport { PkDatePicker } from './components/date-picker/pk-date-picker.js';\nimport { PkCombobox } from './components/combobox/pk-combobox.js';\nimport { PkConnect } from './components/connect/pk-connect.js';\nimport { PkConnectOauth } from './components/connect/pk-connect-oauth.js';\nimport { PkCopyButton } from './components/copy-button/pk-copy-button.js';\nimport { PkDialog } from './components/dialog/pk-dialog.js';\nimport { PkDropdownLabel } from './components/dropdown-menu/pk-dropdown-label.js';\nimport { PkDropdownMenu } from './components/dropdown-menu/pk-dropdown-menu.js';\nimport { PkDropdownItem } from './components/dropdown-menu/pk-dropdown-item.js';\nimport { PkDropdownSeparator } from './components/dropdown-menu/pk-dropdown-separator.js';\nimport { PkEditableTable } from './components/editable-table/pk-editable-table.js';\nimport { PkField } from './components/field/pk-field.js';\nimport { PkIcon } from './components/icon/pk-icon.js';\nimport { PkInput } from './components/input/pk-input.js';\nimport { PkInputGroup } from './components/input-group/pk-input-group.js';\nimport { PkInputGroupAddon } from './components/input-group/pk-input-group-addon.js';\nimport { PkInputGroupButton } from './components/input-group/pk-input-group-button.js';\nimport { PkInputGroupInput } from './components/input-group/pk-input-group-input.js';\nimport { PkInputGroupText } from './components/input-group/pk-input-group-text.js';\nimport { PkInputGroupTextarea } from './components/input-group/pk-input-group-textarea.js';\nimport { PkLightswitch } from './components/lightswitch/pk-lightswitch.js';\nimport { PkOption } from './components/select/pk-option.js';\nimport { PkOptionGroup } from './components/select/pk-option-group.js';\nimport { PkPopover } from './components/popover/pk-popover.js';\nimport { PkPopup } from './components/popup/pk-popup.js';\nimport { PkRadio } from './components/radio-group/pk-radio.js';\nimport { PkRadioGroup } from './components/radio-group/pk-radio-group.js';\nimport { PkScrollArea } from './components/scroll-area/pk-scroll-area.js';\nimport { PkSelect } from './components/select/pk-select.js';\nimport { PkSeparator } from './components/separator/pk-separator.js';\nimport { PkSpinner } from './components/spinner/pk-spinner.js';\nimport { PkStatus } from './components/status/pk-status.js';\nimport { PkTab } from './components/tabs/pk-tab.js';\nimport { PkTabHeading } from './components/tabs/pk-tab-heading.js';\nimport { PkTabPanel } from './components/tabs/pk-tab-panel.js';\nimport { PkTabs } from './components/tabs/pk-tabs.js';\nimport { PkTextarea } from './components/textarea/pk-textarea.js';\nimport { PkTiptapContent } from './components/tiptap/pk-tiptap-content.js';\nimport { PkTiptapEditor } from './components/tiptap/pk-tiptap-editor.js';\nimport { PkTiptapInput } from './components/tiptap/pk-tiptap-input.js';\nimport { PkTimePicker } from './components/time-picker/pk-time-picker.js';\nimport { PkToggle } from './components/toggle/pk-toggle.js';\nimport { PkToggleGroup } from './components/toggle-group/pk-toggle-group.js';\nimport { PkTooltip } from './components/tooltip/pk-tooltip.js';\n\nexport * from './components/button/index.js';\nexport * from './components/button-group/index.js';\nexport * from './components/checkbox/index.js';\nexport * from './components/checkbox-select/index.js';\nexport * from './components/input/index.js';\nexport * from './components/input-group/index.js';\nexport * from './components/textarea/index.js';\nexport * from './components/separator/index.js';\nexport * from './components/status/index.js';\nexport * from './components/toggle/index.js';\nexport * from './components/toggle-group/index.js';\nexport * from './components/lightswitch/index.js';\nexport * from './components/connect/index.js';\nexport * from './components/copy-button/index.js';\nexport * from './components/dialog/index.js';\nexport * from './components/dropdown-menu/index.js';\nexport * from './components/field/index.js';\nexport * from './components/popover/index.js';\nexport * from './components/popup/index.js';\nexport * from './components/tooltip/index.js';\nexport * from './components/radio-group/index.js';\nexport * from './components/tabs/index.js';\nexport * from './components/scroll-area/index.js';\nexport * from './components/color-input/index.js';\nexport * from './components/code-editor/index.js';\nexport * from './components/calendar/index.js';\nexport * from './components/date-picker/index.js';\nexport * from './components/select/index.js';\nexport * from './components/spinner/index.js';\nexport * from './components/time-picker/index.js';\nexport * from './components/tiptap/index.js';\n\nexport {\n PkButton,\n PkButtonGroup,\n PkButtonGroupSeparator,\n PkButtonGroupText,\n PkCheckbox,\n PkCheckboxSelect,\n PkColorInput,\n PkCodeEditor,\n PkCalendar,\n PkDatePicker,\n PkCombobox,\n PkConnect,\n PkConnectOauth,\n PkCopyButton,\n PkDialog,\n PkDropdownMenu,\n PkDropdownItem,\n PkDropdownSeparator,\n PkEditableTable,\n PkField,\n PkIcon,\n PkInput,\n PkInputGroup,\n PkInputGroupAddon,\n PkInputGroupButton,\n PkInputGroupInput,\n PkInputGroupText,\n PkInputGroupTextarea,\n PkLightswitch,\n PkOption,\n PkOptionGroup,\n PkPopover,\n PkPopup,\n PkRadio,\n PkRadioGroup,\n PkScrollArea,\n PkSelect,\n PkSeparator,\n PkSpinner,\n PkStatus,\n PkTab,\n PkTabPanel,\n PkTabs,\n PkTextarea,\n PkTimePicker,\n PkTiptapContent,\n PkTiptapEditor,\n PkTiptapInput,\n PkToggle,\n PkToggleGroup,\n PkTooltip,\n};\n\nconst COMPONENTS: [string, CustomElementConstructor][] = [\n ['pk-spinner', PkSpinner],\n ['pk-icon', PkIcon],\n ['pk-button', PkButton],\n ['pk-checkbox', PkCheckbox],\n ['pk-checkbox-select', PkCheckboxSelect],\n ['pk-color-input', PkColorInput],\n ['pk-code-editor', PkCodeEditor],\n ['pk-input', PkInput],\n ['pk-input-group', PkInputGroup],\n ['pk-input-group-addon', PkInputGroupAddon],\n ['pk-input-group-button', PkInputGroupButton],\n ['pk-input-group-input', PkInputGroupInput],\n ['pk-input-group-text', PkInputGroupText],\n ['pk-input-group-textarea', PkInputGroupTextarea],\n ['pk-textarea', PkTextarea],\n ['pk-tiptap-editor', PkTiptapEditor],\n ['pk-tiptap-input', PkTiptapInput],\n ['pk-tiptap-content', PkTiptapContent],\n ['pk-field', PkField],\n ['pk-separator', PkSeparator],\n ['pk-status', PkStatus],\n ['pk-toggle', PkToggle],\n ['pk-toggle-group', PkToggleGroup],\n ['pk-lightswitch', PkLightswitch],\n ['pk-button-group', PkButtonGroup],\n ['pk-button-group-separator', PkButtonGroupSeparator],\n ['pk-button-group-text', PkButtonGroupText],\n ['pk-dialog', PkDialog],\n ['pk-popup', PkPopup],\n ['pk-dropdown-label', PkDropdownLabel],\n ['pk-dropdown-item', PkDropdownItem],\n ['pk-dropdown-separator', PkDropdownSeparator],\n ['pk-dropdown-menu', PkDropdownMenu],\n ['pk-editable-table', PkEditableTable],\n ['pk-popover', PkPopover],\n ['pk-tooltip', PkTooltip],\n ['pk-radio', PkRadio],\n ['pk-radio-group', PkRadioGroup],\n ['pk-tab', PkTab],\n ['pk-tab-heading', PkTabHeading],\n ['pk-tab-panel', PkTabPanel],\n ['pk-tabs', PkTabs],\n ['pk-scroll-area', PkScrollArea],\n ['pk-option', PkOption],\n ['pk-option-group', PkOptionGroup],\n ['pk-select', PkSelect],\n ['pk-calendar', PkCalendar],\n ['pk-date-picker', PkDatePicker],\n ['pk-combobox', PkCombobox],\n ['pk-connect', PkConnect],\n ['pk-connect-oauth', PkConnectOauth],\n ['pk-time-picker', PkTimePicker],\n ['pk-copy-button', PkCopyButton],\n];\n\n/** Side-effect registration for all Plugin Kit web components. */\nexport function registerAll(): void {\n for (const [tag, ctor] of COMPONENTS) {\n if (!customElements.get(tag)) {\n customElements.define(tag, ctor);\n }\n }\n}\n\nexport {\n createRegisterComponents,\n type PkComponentTag,\n} from './register-components.js';\n\nexport { BUNDLER_TAG_IMPORT_PATHS as componentImportPaths } from './component-registry.js';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+IA,IAAM,aAAmD;CACrD,CAAC,cAAc,UAAU;CACzB,CAAC,WAAW,OAAO;CACnB,CAAC,aAAa,SAAS;CACvB,CAAC,eAAe,WAAW;CAC3B,CAAC,sBAAsB,iBAAiB;CACxC,CAAC,kBAAkB,aAAa;CAChC,CAAC,kBAAkB,aAAa;CAChC,CAAC,YAAY,QAAQ;CACrB,CAAC,kBAAkB,aAAa;CAChC,CAAC,wBAAwB,kBAAkB;CAC3C,CAAC,yBAAyB,mBAAmB;CAC7C,CAAC,wBAAwB,kBAAkB;CAC3C,CAAC,uBAAuB,iBAAiB;CACzC,CAAC,2BAA2B,qBAAqB;CACjD,CAAC,eAAe,WAAW;CAC3B,CAAC,oBAAoB,eAAe;CACpC,CAAC,mBAAmB,cAAc;CAClC,CAAC,qBAAqB,gBAAgB;CACtC,CAAC,YAAY,QAAQ;CACrB,CAAC,gBAAgB,YAAY;CAC7B,CAAC,aAAa,SAAS;CACvB,CAAC,aAAa,SAAS;CACvB,CAAC,mBAAmB,cAAc;CAClC,CAAC,kBAAkB,cAAc;CACjC,CAAC,mBAAmB,cAAc;CAClC,CAAC,6BAA6B,uBAAuB;CACrD,CAAC,wBAAwB,kBAAkB;CAC3C,CAAC,aAAa,SAAS;CACvB,CAAC,YAAY,QAAQ;CACrB,CAAC,qBAAqB,gBAAgB;CACtC,CAAC,oBAAoB,eAAe;CACpC,CAAC,yBAAyB,oBAAoB;CAC9C,CAAC,oBAAoB,eAAe;CACpC,CAAC,qBAAqB,gBAAgB;CACtC,CAAC,cAAc,UAAU;CACzB,CAAC,cAAc,UAAU;CACzB,CAAC,YAAY,QAAQ;CACrB,CAAC,kBAAkB,aAAa;CAChC,CAAC,UAAU,MAAM;CACjB,CAAC,kBAAkB,aAAa;CAChC,CAAC,gBAAgB,WAAW;CAC5B,CAAC,WAAW,OAAO;CACnB,CAAC,kBAAkB,aAAa;CAChC,CAAC,aAAa,SAAS;CACvB,CAAC,mBAAmB,cAAc;CAClC,CAAC,aAAa,SAAS;CACvB,CAAC,eAAe,WAAW;CAC3B,CAAC,kBAAkB,aAAa;CAChC,CAAC,eAAe,WAAW;CAC3B,CAAC,cAAc,UAAU;CACzB,CAAC,oBAAoB,eAAe;CACpC,CAAC,kBAAkB,aAAa;CAChC,CAAC,kBAAkB,aAAa;CACnC;;AAGD,SAAgB,cAAoB;AAChC,MAAK,MAAM,CAAC,KAAK,SAAS,WACtB,KAAI,CAAC,eAAe,IAAI,IAAI,CACxB,gBAAe,OAAO,KAAK,KAAK"}
1
+ {"version":3,"file":"register-DeqrQzRS.js","names":[],"sources":["../../src/register.ts"],"sourcesContent":["// Full-library path: every curated glyph is available to `<pk-icon icon=\"…\">`.\nimport '@verbb/plugin-kit-icons/all.js';\n\nimport { PkButton } from './components/button/pk-button.js';\nimport { PkButtonGroup } from './components/button-group/pk-button-group.js';\nimport { PkButtonGroupSeparator } from './components/button-group/pk-button-group-separator.js';\nimport { PkButtonGroupText } from './components/button-group/pk-button-group-text.js';\nimport { PkCheckbox } from './components/checkbox/pk-checkbox.js';\nimport { PkCheckboxSelect } from './components/checkbox-select/pk-checkbox-select.js';\nimport { PkCodeEditor } from './components/code-editor/pk-code-editor.js';\nimport { PkColorInput } from './components/color-input/pk-color-input.js';\nimport { PkCalendar } from './components/calendar/pk-calendar.js';\nimport { PkDatePicker } from './components/date-picker/pk-date-picker.js';\nimport { PkCombobox } from './components/combobox/pk-combobox.js';\nimport { PkConnect } from './components/connect/pk-connect.js';\nimport { PkConnectOauth } from './components/connect/pk-connect-oauth.js';\nimport { PkCopyButton } from './components/copy-button/pk-copy-button.js';\nimport { PkDialog } from './components/dialog/pk-dialog.js';\nimport { PkDropdownLabel } from './components/dropdown-menu/pk-dropdown-label.js';\nimport { PkDropdownMenu } from './components/dropdown-menu/pk-dropdown-menu.js';\nimport { PkDropdownItem } from './components/dropdown-menu/pk-dropdown-item.js';\nimport { PkDropdownSeparator } from './components/dropdown-menu/pk-dropdown-separator.js';\nimport { PkEditableTable } from './components/editable-table/pk-editable-table.js';\nimport { PkField } from './components/field/pk-field.js';\nimport { PkIcon } from './components/icon/pk-icon.js';\nimport { PkInput } from './components/input/pk-input.js';\nimport { PkInputGroup } from './components/input-group/pk-input-group.js';\nimport { PkInputGroupAddon } from './components/input-group/pk-input-group-addon.js';\nimport { PkInputGroupButton } from './components/input-group/pk-input-group-button.js';\nimport { PkInputGroupInput } from './components/input-group/pk-input-group-input.js';\nimport { PkInputGroupText } from './components/input-group/pk-input-group-text.js';\nimport { PkInputGroupTextarea } from './components/input-group/pk-input-group-textarea.js';\nimport { PkLightswitch } from './components/lightswitch/pk-lightswitch.js';\nimport { PkOption } from './components/select/pk-option.js';\nimport { PkOptionGroup } from './components/select/pk-option-group.js';\nimport { PkPopover } from './components/popover/pk-popover.js';\nimport { PkPopup } from './components/popup/pk-popup.js';\nimport { PkRadio } from './components/radio-group/pk-radio.js';\nimport { PkRadioGroup } from './components/radio-group/pk-radio-group.js';\nimport { PkScrollArea } from './components/scroll-area/pk-scroll-area.js';\nimport { PkSelect } from './components/select/pk-select.js';\nimport { PkSeparator } from './components/separator/pk-separator.js';\nimport { PkSpinner } from './components/spinner/pk-spinner.js';\nimport { PkStatus } from './components/status/pk-status.js';\nimport { PkTab } from './components/tabs/pk-tab.js';\nimport { PkTabHeading } from './components/tabs/pk-tab-heading.js';\nimport { PkTabPanel } from './components/tabs/pk-tab-panel.js';\nimport { PkTabs } from './components/tabs/pk-tabs.js';\nimport { PkTextarea } from './components/textarea/pk-textarea.js';\nimport { PkTiptapContent } from './components/tiptap/pk-tiptap-content.js';\nimport { PkTiptapEditor } from './components/tiptap/pk-tiptap-editor.js';\nimport { PkTiptapInput } from './components/tiptap/pk-tiptap-input.js';\nimport { PkTimePicker } from './components/time-picker/pk-time-picker.js';\nimport { PkToggle } from './components/toggle/pk-toggle.js';\nimport { PkToggleGroup } from './components/toggle-group/pk-toggle-group.js';\nimport { PkTooltip } from './components/tooltip/pk-tooltip.js';\n\nexport * from './components/button/index.js';\nexport * from './components/button-group/index.js';\nexport * from './components/checkbox/index.js';\nexport * from './components/checkbox-select/index.js';\nexport * from './components/input/index.js';\nexport * from './components/input-group/index.js';\nexport * from './components/textarea/index.js';\nexport * from './components/separator/index.js';\nexport * from './components/status/index.js';\nexport * from './components/toggle/index.js';\nexport * from './components/toggle-group/index.js';\nexport * from './components/lightswitch/index.js';\nexport * from './components/connect/index.js';\nexport * from './components/copy-button/index.js';\nexport * from './components/dialog/index.js';\nexport * from './components/dropdown-menu/index.js';\nexport * from './components/field/index.js';\nexport * from './components/popover/index.js';\nexport * from './components/popup/index.js';\nexport * from './components/tooltip/index.js';\nexport * from './components/radio-group/index.js';\nexport * from './components/tabs/index.js';\nexport * from './components/scroll-area/index.js';\nexport * from './components/color-input/index.js';\nexport * from './components/code-editor/index.js';\nexport * from './components/calendar/index.js';\nexport * from './components/date-picker/index.js';\nexport * from './components/select/index.js';\nexport * from './components/spinner/index.js';\nexport * from './components/time-picker/index.js';\nexport * from './components/tiptap/index.js';\n\nexport {\n PkButton,\n PkButtonGroup,\n PkButtonGroupSeparator,\n PkButtonGroupText,\n PkCheckbox,\n PkCheckboxSelect,\n PkColorInput,\n PkCodeEditor,\n PkCalendar,\n PkDatePicker,\n PkCombobox,\n PkConnect,\n PkConnectOauth,\n PkCopyButton,\n PkDialog,\n PkDropdownMenu,\n PkDropdownItem,\n PkDropdownSeparator,\n PkEditableTable,\n PkField,\n PkIcon,\n PkInput,\n PkInputGroup,\n PkInputGroupAddon,\n PkInputGroupButton,\n PkInputGroupInput,\n PkInputGroupText,\n PkInputGroupTextarea,\n PkLightswitch,\n PkOption,\n PkOptionGroup,\n PkPopover,\n PkPopup,\n PkRadio,\n PkRadioGroup,\n PkScrollArea,\n PkSelect,\n PkSeparator,\n PkSpinner,\n PkStatus,\n PkTab,\n PkTabPanel,\n PkTabs,\n PkTextarea,\n PkTimePicker,\n PkTiptapContent,\n PkTiptapEditor,\n PkTiptapInput,\n PkToggle,\n PkToggleGroup,\n PkTooltip,\n};\n\nconst COMPONENTS: [string, CustomElementConstructor][] = [\n ['pk-spinner', PkSpinner],\n ['pk-icon', PkIcon],\n ['pk-button', PkButton],\n ['pk-checkbox', PkCheckbox],\n ['pk-checkbox-select', PkCheckboxSelect],\n ['pk-color-input', PkColorInput],\n ['pk-code-editor', PkCodeEditor],\n ['pk-input', PkInput],\n ['pk-input-group', PkInputGroup],\n ['pk-input-group-addon', PkInputGroupAddon],\n ['pk-input-group-button', PkInputGroupButton],\n ['pk-input-group-input', PkInputGroupInput],\n ['pk-input-group-text', PkInputGroupText],\n ['pk-input-group-textarea', PkInputGroupTextarea],\n ['pk-textarea', PkTextarea],\n ['pk-tiptap-editor', PkTiptapEditor],\n ['pk-tiptap-input', PkTiptapInput],\n ['pk-tiptap-content', PkTiptapContent],\n ['pk-field', PkField],\n ['pk-separator', PkSeparator],\n ['pk-status', PkStatus],\n ['pk-toggle', PkToggle],\n ['pk-toggle-group', PkToggleGroup],\n ['pk-lightswitch', PkLightswitch],\n ['pk-button-group', PkButtonGroup],\n ['pk-button-group-separator', PkButtonGroupSeparator],\n ['pk-button-group-text', PkButtonGroupText],\n ['pk-dialog', PkDialog],\n ['pk-popup', PkPopup],\n ['pk-dropdown-label', PkDropdownLabel],\n ['pk-dropdown-item', PkDropdownItem],\n ['pk-dropdown-separator', PkDropdownSeparator],\n ['pk-dropdown-menu', PkDropdownMenu],\n ['pk-editable-table', PkEditableTable],\n ['pk-popover', PkPopover],\n ['pk-tooltip', PkTooltip],\n ['pk-radio', PkRadio],\n ['pk-radio-group', PkRadioGroup],\n ['pk-tab', PkTab],\n ['pk-tab-heading', PkTabHeading],\n ['pk-tab-panel', PkTabPanel],\n ['pk-tabs', PkTabs],\n ['pk-scroll-area', PkScrollArea],\n ['pk-option', PkOption],\n ['pk-option-group', PkOptionGroup],\n ['pk-select', PkSelect],\n ['pk-calendar', PkCalendar],\n ['pk-date-picker', PkDatePicker],\n ['pk-combobox', PkCombobox],\n ['pk-connect', PkConnect],\n ['pk-connect-oauth', PkConnectOauth],\n ['pk-time-picker', PkTimePicker],\n ['pk-copy-button', PkCopyButton],\n];\n\n/** Side-effect registration for all Plugin Kit web components. */\nexport function registerAll(): void {\n for (const [tag, ctor] of COMPONENTS) {\n if (!customElements.get(tag)) {\n customElements.define(tag, ctor);\n }\n }\n}\n\nexport {\n createRegisterComponents,\n type PkComponentTag,\n} from './register-components.js';\n\nexport { BUNDLER_TAG_IMPORT_PATHS as componentImportPaths } from './component-registry.js';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+IA,IAAM,aAAmD;CACrD,CAAC,cAAc,UAAU;CACzB,CAAC,WAAW,OAAO;CACnB,CAAC,aAAa,SAAS;CACvB,CAAC,eAAe,WAAW;CAC3B,CAAC,sBAAsB,iBAAiB;CACxC,CAAC,kBAAkB,aAAa;CAChC,CAAC,kBAAkB,aAAa;CAChC,CAAC,YAAY,QAAQ;CACrB,CAAC,kBAAkB,aAAa;CAChC,CAAC,wBAAwB,kBAAkB;CAC3C,CAAC,yBAAyB,mBAAmB;CAC7C,CAAC,wBAAwB,kBAAkB;CAC3C,CAAC,uBAAuB,iBAAiB;CACzC,CAAC,2BAA2B,qBAAqB;CACjD,CAAC,eAAe,WAAW;CAC3B,CAAC,oBAAoB,eAAe;CACpC,CAAC,mBAAmB,cAAc;CAClC,CAAC,qBAAqB,gBAAgB;CACtC,CAAC,YAAY,QAAQ;CACrB,CAAC,gBAAgB,YAAY;CAC7B,CAAC,aAAa,SAAS;CACvB,CAAC,aAAa,SAAS;CACvB,CAAC,mBAAmB,cAAc;CAClC,CAAC,kBAAkB,cAAc;CACjC,CAAC,mBAAmB,cAAc;CAClC,CAAC,6BAA6B,uBAAuB;CACrD,CAAC,wBAAwB,kBAAkB;CAC3C,CAAC,aAAa,SAAS;CACvB,CAAC,YAAY,QAAQ;CACrB,CAAC,qBAAqB,gBAAgB;CACtC,CAAC,oBAAoB,eAAe;CACpC,CAAC,yBAAyB,oBAAoB;CAC9C,CAAC,oBAAoB,eAAe;CACpC,CAAC,qBAAqB,gBAAgB;CACtC,CAAC,cAAc,UAAU;CACzB,CAAC,cAAc,UAAU;CACzB,CAAC,YAAY,QAAQ;CACrB,CAAC,kBAAkB,aAAa;CAChC,CAAC,UAAU,MAAM;CACjB,CAAC,kBAAkB,aAAa;CAChC,CAAC,gBAAgB,WAAW;CAC5B,CAAC,WAAW,OAAO;CACnB,CAAC,kBAAkB,aAAa;CAChC,CAAC,aAAa,SAAS;CACvB,CAAC,mBAAmB,cAAc;CAClC,CAAC,aAAa,SAAS;CACvB,CAAC,eAAe,WAAW;CAC3B,CAAC,kBAAkB,aAAa;CAChC,CAAC,eAAe,WAAW;CAC3B,CAAC,cAAc,UAAU;CACzB,CAAC,oBAAoB,eAAe;CACpC,CAAC,kBAAkB,aAAa;CAChC,CAAC,kBAAkB,aAAa;CACnC;;AAGD,SAAgB,cAAoB;AAChC,MAAK,MAAM,CAAC,KAAK,SAAS,WACtB,KAAI,CAAC,eAAe,IAAI,IAAI,CACxB,gBAAe,OAAO,KAAK,KAAK"}
@@ -90,4 +90,20 @@ export declare const nextRowId: () => string;
90
90
  export declare const getCustomCellSlotName: (rowId: string, columnName: string) => string;
91
91
  export declare const BUILTIN_COLUMN_TYPES: Set<string>;
92
92
  export declare const isCustomColumn: (column: PkEditableTableColumn) => boolean;
93
+ /** Whether a multi-cell paste gesturing from this cell should run `importData`. */
94
+ export declare const columnInterceptsPaste: (column: PkEditableTableColumn) => boolean;
95
+ /** Whether `importData` should write a clipboard cell into this column. */
96
+ export declare const columnAcceptsPasteImport: (column: PkEditableTableColumn) => boolean;
97
+ /**
98
+ * Craft `Craft.trim(text, ' \\n\\r')` — strip spaces/newlines from both ends so a
99
+ * trailing spreadsheet newline does not create an empty extra row.
100
+ */
101
+ export declare const trimClipboardText: (text: string) => string;
102
+ /** True when clipboard looks like a multi-cell / multi-row TSV paste. */
103
+ export declare const isMultiCellClipboard: (text: string) => boolean;
104
+ /**
105
+ * Parse spreadsheet clipboard text into a grid (rows → cells).
106
+ * Excel / Sheets copy as tab-separated values with newline-separated rows.
107
+ */
108
+ export declare const parseTsvClipboard: (text: string) => string[][];
93
109
  //# sourceMappingURL=editable-table-model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editable-table-model.d.ts","sourceRoot":"","sources":["../../../src/components/editable-table/editable-table-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editable-table-model.d.ts","sourceRoot":"","sources":["../../../src/components/editable-table/editable-table-model.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,16 @@ export declare class PkEditableTable extends PkFormAssociatedElement {
19
19
  allowAdd: boolean;
20
20
  allowDelete: boolean;
21
21
  allowReorder: boolean;
22
+ /**
23
+ * Show Insert above / Insert below in the row ellipsis menu.
24
+ * Insert still requires `allowAdd` (disabled at max rows when the host turns add off).
25
+ */
26
+ allowInsert: boolean;
27
+ /**
28
+ * Optional hard cap on row count. When set, add / insert / paste expansion stop
29
+ * at this length even if `allowAdd` is still true mid-batch.
30
+ */
31
+ maxRows: number | null;
22
32
  addRowLabel: string;
23
33
  /**
24
34
  * Optional form-field prefix for `cellErrors` keys.
@@ -91,8 +101,23 @@ export declare class PkEditableTable extends PkFormAssociatedElement {
91
101
  private emitCellChange;
92
102
  private commitRows;
93
103
  private updateCell;
104
+ private canAddRow;
105
+ private createEmptyRow;
94
106
  private addRow;
107
+ /** Insert a blank row at `index` (0 = above first row). No-ops when add is disallowed. */
108
+ private insertRowAt;
95
109
  private removeRow;
110
+ /**
111
+ * Craft EditableTable paste: intercept only when the clipboard has tabs/newlines.
112
+ * Listens on the scroll wrapper so events compose out of cell control shadows.
113
+ */
114
+ private handleTablePaste;
115
+ /**
116
+ * Apply a TSV grid starting at `[startRowIndex, startColumnIndex]`.
117
+ * Skips non-textual columns (checkbox etc.) but still advances the column
118
+ * cursor — same as Craft writing only into matching `textarea`/`input`s.
119
+ */
120
+ private importTsvData;
96
121
  private moveRow;
97
122
  private commitReorder;
98
123
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"pk-editable-table.d.ts","sourceRoot":"","sources":["../../../src/components/editable-table/pk-editable-table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pk-editable-table.d.ts","sourceRoot":"","sources":["../../../src/components/editable-table/pk-editable-table.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { a as nextRowId, i as isCustomColumn, r as getCustomCellSlotName, t as PkEditableTable } from "../../chunks/pk-editable-table-DQZQ6JLb.js";
1
+ import { a as nextRowId, i as isCustomColumn, r as getCustomCellSlotName, t as PkEditableTable } from "../../chunks/pk-editable-table-DMHGqZlQ.js";
2
2
  export { PkEditableTable, getCustomCellSlotName, isCustomColumn, nextRowId };
@@ -1,2 +1,2 @@
1
- import { a as nextRowId, i as isCustomColumn, n as BUILTIN_COLUMN_TYPES, r as getCustomCellSlotName, t as PkEditableTable } from "../chunks/pk-editable-table-DQZQ6JLb.js";
1
+ import { a as nextRowId, i as isCustomColumn, n as BUILTIN_COLUMN_TYPES, r as getCustomCellSlotName, t as PkEditableTable } from "../chunks/pk-editable-table-DMHGqZlQ.js";
2
2
  export { BUILTIN_COLUMN_TYPES, PkEditableTable, getCustomCellSlotName, isCustomColumn, nextRowId };
package/dist/index.js CHANGED
@@ -66,7 +66,7 @@ import { t as PkDatePicker } from "./chunks/pk-date-picker-BM4HMb4-.js";
66
66
  import { t as PkOption } from "./chunks/pk-option-Cy7oOcwF.js";
67
67
  import { t as PkSelect } from "./chunks/pk-select-BeMDXEC6.js";
68
68
  import { t as PkTimePicker } from "./chunks/pk-time-picker-RlAqlho4.js";
69
- import { a as nextRowId, i as isCustomColumn, n as BUILTIN_COLUMN_TYPES, r as getCustomCellSlotName, t as PkEditableTable } from "./chunks/pk-editable-table-DQZQ6JLb.js";
69
+ import { a as nextRowId, i as isCustomColumn, n as BUILTIN_COLUMN_TYPES, r as getCustomCellSlotName, t as PkEditableTable } from "./chunks/pk-editable-table-DMHGqZlQ.js";
70
70
  import "./components/editable-table.js";
71
71
  import { t as PkField } from "./chunks/pk-field-JFP24j4o.js";
72
72
  import "./components/field.js";
@@ -96,7 +96,7 @@ import "./components/spinner.js";
96
96
  import { t as PkTiptapContent } from "./chunks/pk-tiptap-content-zzx3-xrD.js";
97
97
  import { t as PkTiptapEditor } from "./chunks/pk-tiptap-editor-DpT4TYdi.js";
98
98
  import { t as PkTiptapInput } from "./chunks/pk-tiptap-input-D7xj13FY.js";
99
- import { t as registerAll } from "./chunks/register-C9xZttKy.js";
99
+ import { t as registerAll } from "./chunks/register-DeqrQzRS.js";
100
100
  import { _ as setPortalClassName, a as startLoader, c as setBasePath, d as getPortalClassName, f as getPortalContainer, g as resolvePositionMethod, h as getShadowRootSelectors, i as preventTurboFouce, l as allDefined, m as getPortalTargetForAppend, n as FOUCE_TIMEOUT_MS, o as stopLoader, p as getPortalMountElement, r as discover, s as getBasePath, t as DISCOVERY_COMPLETE_EVENT, u as configurePluginKitWeb, v as setPortalContainer, y as setShadowRootSelectors } from "./chunks/autoloader-DPX9YYZs.js";
101
101
  import { t as BUNDLER_TAG_IMPORT_PATHS } from "./chunks/component-registry-CNB8PbP_.js";
102
102
  import { t as createRegisterComponents } from "./chunks/register-components-B-qCPFFh.js";
package/dist/register.js CHANGED
@@ -54,7 +54,7 @@ import { t as PkDatePicker } from "./chunks/pk-date-picker-BM4HMb4-.js";
54
54
  import { t as PkOption } from "./chunks/pk-option-Cy7oOcwF.js";
55
55
  import { t as PkSelect } from "./chunks/pk-select-BeMDXEC6.js";
56
56
  import { t as PkTimePicker } from "./chunks/pk-time-picker-RlAqlho4.js";
57
- import { t as PkEditableTable } from "./chunks/pk-editable-table-DQZQ6JLb.js";
57
+ import { t as PkEditableTable } from "./chunks/pk-editable-table-DMHGqZlQ.js";
58
58
  import { t as PkField } from "./chunks/pk-field-JFP24j4o.js";
59
59
  import "./components/field.js";
60
60
  import { t as PkPopover } from "./chunks/pk-popover-G3ojheBD.js";
@@ -82,7 +82,7 @@ import "./components/spinner.js";
82
82
  import { t as PkTiptapContent } from "./chunks/pk-tiptap-content-zzx3-xrD.js";
83
83
  import { t as PkTiptapEditor } from "./chunks/pk-tiptap-editor-DpT4TYdi.js";
84
84
  import { t as PkTiptapInput } from "./chunks/pk-tiptap-input-D7xj13FY.js";
85
- import { t as registerAll } from "./chunks/register-C9xZttKy.js";
85
+ import { t as registerAll } from "./chunks/register-DeqrQzRS.js";
86
86
  import { t as BUNDLER_TAG_IMPORT_PATHS } from "./chunks/component-registry-CNB8PbP_.js";
87
87
  import { t as createRegisterComponents } from "./chunks/register-components-B-qCPFFh.js";
88
88
  export { ALL_VALUE, PkButton, PkButtonGroup, PkButtonGroupSeparator, PkButtonGroupText, PkCalendar, PkCheckbox, PkCheckboxSelect, PkCodeEditor, PkColorInput, PkCombobox, PkConnect, PkConnectOauth, PkCopyButton, PkDatePicker, PkDialog, PkDropdownItem, PkDropdownLabel, PkDropdownMenu, PkDropdownSeparator, PkEditableTable, PkField, PkIcon, PkInput, PkInputGroup, PkInputGroupAddon, PkInputGroupButton, PkInputGroupInput, PkInputGroupText, PkInputGroupTextarea, PkLightswitch, PkOption, PkOptionGroup, PkPopover, PkPopup, PkRadio, PkRadioGroup, PkScrollArea, PkSelect, PkSeparator, PkSpinner, PkStatus, PkTab, PkTabHeading, PkTabPanel, PkTabs, PkTextarea, PkTimePicker, PkTiptapContent, PkTiptapEditor, PkTiptapInput, PkToggle, PkToggleGroup, PkTooltip, BUNDLER_TAG_IMPORT_PATHS as componentImportPaths, createRegisterComponents, getButtonSpinnerSize, registerAll, resolveSpinnerVariant };
@@ -774,6 +774,62 @@ var isCustomColumn = (column) => {
774
774
  if (type === "custom") return true;
775
775
  return typeof type === "string" && !BUILTIN_COLUMN_TYPES.has(type);
776
776
  };
777
+ /**
778
+ * Column types that receive TSV paste *writes* (Craft `importData` fills textual
779
+ * cells; checkbox/radio/lightswitch and static/custom cells are skipped).
780
+ */
781
+ var PASTE_IMPORT_SKIP_TYPES = new Set([
782
+ "checkbox",
783
+ "radio",
784
+ "lightswitch",
785
+ "heading",
786
+ "label"
787
+ ]);
788
+ /**
789
+ * Types that intercept multi-cell paste (Craft attaches `handlePaste` to textual
790
+ * inputs except multiline — native paste stays on `textarea`).
791
+ */
792
+ var PASTE_INTERCEPT_TYPES = new Set([
793
+ "text",
794
+ "number",
795
+ "email",
796
+ "url",
797
+ "handle",
798
+ "value",
799
+ "color",
800
+ "date",
801
+ "time"
802
+ ]);
803
+ /** Whether a multi-cell paste gesturing from this cell should run `importData`. */
804
+ var columnInterceptsPaste = (column) => {
805
+ if (isCustomColumn(column)) return false;
806
+ return PASTE_INTERCEPT_TYPES.has(column.type ?? "text");
807
+ };
808
+ /** Whether `importData` should write a clipboard cell into this column. */
809
+ var columnAcceptsPasteImport = (column) => {
810
+ if (isCustomColumn(column)) return false;
811
+ return !PASTE_IMPORT_SKIP_TYPES.has(column.type ?? "text");
812
+ };
813
+ /**
814
+ * Craft `Craft.trim(text, ' \\n\\r')` — strip spaces/newlines from both ends so a
815
+ * trailing spreadsheet newline does not create an empty extra row.
816
+ */
817
+ var trimClipboardText = (text) => {
818
+ return String(text ?? "").replace(/^[\n\r ]+|[\n\r ]+$/g, "");
819
+ };
820
+ /** True when clipboard looks like a multi-cell / multi-row TSV paste. */
821
+ var isMultiCellClipboard = (text) => {
822
+ return /[\t\r\n]/.test(text);
823
+ };
824
+ /**
825
+ * Parse spreadsheet clipboard text into a grid (rows → cells).
826
+ * Excel / Sheets copy as tab-separated values with newline-separated rows.
827
+ */
828
+ var parseTsvClipboard = (text) => {
829
+ const trimmed = trimClipboardText(text);
830
+ if (!trimmed) return [];
831
+ return trimmed.split(/\r?\n|\r/).map((line) => line.split(" "));
832
+ };
777
833
  //#endregion
778
834
  //#region src/components/editable-table/pk-editable-table.ts
779
835
  /** Craft CP reorder diamond (`grip-move`). */
@@ -799,6 +855,8 @@ var PkEditableTable = class PkEditableTable extends PkFormAssociatedElement {
799
855
  this.allowAdd = true;
800
856
  this.allowDelete = true;
801
857
  this.allowReorder = true;
858
+ this.allowInsert = true;
859
+ this.maxRows = null;
802
860
  this.addRowLabel = "";
803
861
  this.fieldName = "";
804
862
  this.cellErrors = {};
@@ -875,7 +933,7 @@ var PkEditableTable = class PkEditableTable extends PkFormAssociatedElement {
875
933
  return this.validColumns.filter(isGeneratedColumn);
876
934
  }
877
935
  get showActionsColumn() {
878
- return this.allowReorder || this.allowDelete || Boolean(this.getRowMenuItems);
936
+ return this.allowReorder || this.allowDelete || this.allowInsert || Boolean(this.getRowMenuItems);
879
937
  }
880
938
  cleanRows() {
881
939
  return this.internalRows.map((row) => {
@@ -1063,23 +1121,123 @@ var PkEditableTable = class PkEditableTable extends PkFormAssociatedElement {
1063
1121
  }));
1064
1122
  this.commitRows(next, cellChanges);
1065
1123
  }
1066
- addRow() {
1067
- if (this.disabled || !this.allowAdd) return;
1124
+ canAddRow(currentCount = this.internalRows.length) {
1125
+ if (this.disabled || !this.allowAdd) return false;
1126
+ if (this.maxRows != null && Number.isFinite(this.maxRows) && currentCount >= this.maxRows) return false;
1127
+ return true;
1128
+ }
1129
+ createEmptyRow() {
1130
+ if (!this.canAddRow()) return null;
1068
1131
  const row = {
1069
1132
  _id: nextRowId(),
1070
1133
  ...this.newRowDefaults && typeof this.newRowDefaults === "object" ? this.newRowDefaults : {}
1071
1134
  };
1072
1135
  for (const column of this.validColumns) if (!(column.name in row)) row[column.name] = defaultValueForColumn(column);
1136
+ return row;
1137
+ }
1138
+ addRow() {
1139
+ const row = this.createEmptyRow();
1140
+ if (!row) return;
1073
1141
  this.internalRows = [...this.internalRows, row];
1074
1142
  this.syncGeneratedModesFromRows();
1075
1143
  this.emitChange();
1076
1144
  }
1145
+ /** Insert a blank row at `index` (0 = above first row). No-ops when add is disallowed. */
1146
+ insertRowAt(index) {
1147
+ const row = this.createEmptyRow();
1148
+ if (!row) return;
1149
+ const clamped = Math.max(0, Math.min(index, this.internalRows.length));
1150
+ const next = this.internalRows.slice();
1151
+ next.splice(clamped, 0, row);
1152
+ this.internalRows = next;
1153
+ this.syncGeneratedModesFromRows();
1154
+ this.emitChange();
1155
+ }
1077
1156
  removeRow(rowIndex) {
1078
1157
  if (this.disabled || !this.allowDelete) return;
1079
1158
  this.internalRows = this.internalRows.filter((_, index) => index !== rowIndex);
1080
1159
  this.syncGeneratedModesFromRows();
1081
1160
  this.emitChange();
1082
1161
  }
1162
+ /**
1163
+ * Craft EditableTable paste: intercept only when the clipboard has tabs/newlines.
1164
+ * Listens on the scroll wrapper so events compose out of cell control shadows.
1165
+ */
1166
+ handleTablePaste(event) {
1167
+ if (this.disabled || !event.clipboardData) return;
1168
+ const data = trimClipboardText(event.clipboardData.getData("text/plain") || event.clipboardData.getData("Text") || "");
1169
+ if (!isMultiCellClipboard(data)) return;
1170
+ const path = event.composedPath();
1171
+ let cell = null;
1172
+ let row = null;
1173
+ for (const node of path) {
1174
+ if (node instanceof HTMLTableCellElement && node.tagName === "TD" && !node.classList.contains("actions")) cell = node;
1175
+ if (node instanceof HTMLTableRowElement && node.dataset.rowId) {
1176
+ row = node;
1177
+ break;
1178
+ }
1179
+ }
1180
+ if (!cell || !row) return;
1181
+ const rowIndex = this.internalRows.findIndex((item) => String(item._id) === row.dataset.rowId);
1182
+ const columnIndex = [...row.querySelectorAll(":scope > td:not(.actions)")].indexOf(cell);
1183
+ if (rowIndex < 0 || columnIndex < 0) return;
1184
+ const column = this.validColumns[columnIndex];
1185
+ if (!column || !columnInterceptsPaste(column)) return;
1186
+ event.preventDefault();
1187
+ event.stopPropagation();
1188
+ this.importTsvData(data, rowIndex, columnIndex);
1189
+ }
1190
+ /**
1191
+ * Apply a TSV grid starting at `[startRowIndex, startColumnIndex]`.
1192
+ * Skips non-textual columns (checkbox etc.) but still advances the column
1193
+ * cursor — same as Craft writing only into matching `textarea`/`input`s.
1194
+ */
1195
+ importTsvData(data, startRowIndex, startColumnIndex) {
1196
+ const grid = parseTsvClipboard(data);
1197
+ if (grid.length === 0) return;
1198
+ const columns = this.validColumns;
1199
+ if (columns.length === 0 || startColumnIndex >= columns.length) return;
1200
+ const next = this.internalRows.map((row) => ({ ...row }));
1201
+ let rowIndex = startRowIndex;
1202
+ let mutated = false;
1203
+ for (let lineIndex = 0; lineIndex < grid.length; lineIndex++) {
1204
+ if (rowIndex >= next.length) {
1205
+ if (!this.canAddRow(next.length)) break;
1206
+ const created = {
1207
+ _id: nextRowId(),
1208
+ ...this.newRowDefaults && typeof this.newRowDefaults === "object" ? this.newRowDefaults : {}
1209
+ };
1210
+ for (const column of columns) if (!(column.name in created)) created[column.name] = defaultValueForColumn(column);
1211
+ next.push(created);
1212
+ mutated = true;
1213
+ }
1214
+ const cells = grid[lineIndex] ?? [];
1215
+ const row = next[rowIndex];
1216
+ if (!row) break;
1217
+ let rowPatch = null;
1218
+ for (let cellIndex = 0; cellIndex < cells.length; cellIndex++) {
1219
+ const column = columns[startColumnIndex + cellIndex];
1220
+ if (!column) break;
1221
+ if (!columnAcceptsPasteImport(column)) continue;
1222
+ const value = cells[cellIndex] ?? "";
1223
+ if (row[column.name] === value) continue;
1224
+ rowPatch = rowPatch ?? {};
1225
+ rowPatch[column.name] = value;
1226
+ }
1227
+ if (rowPatch) {
1228
+ next[rowIndex] = {
1229
+ ...row,
1230
+ ...rowPatch
1231
+ };
1232
+ mutated = true;
1233
+ }
1234
+ rowIndex += 1;
1235
+ }
1236
+ if (!mutated) return;
1237
+ this.internalRows = next;
1238
+ this.syncGeneratedModesFromRows();
1239
+ this.emitChange();
1240
+ }
1083
1241
  moveRow(rowIndex, direction) {
1084
1242
  const target = rowIndex + direction;
1085
1243
  if (this.disabled || target < 0 || target >= this.internalRows.length) return;
@@ -1364,7 +1522,8 @@ var PkEditableTable = class PkEditableTable extends PkFormAssociatedElement {
1364
1522
  const rowId = String(row._id);
1365
1523
  const rowMod = this.resolveRowModifier(row, rowIndex);
1366
1524
  const extraMenuItems = this.resolveRowMenuItems(row, rowIndex);
1367
- const showRowMenu = this.allowReorder || extraMenuItems.length > 0;
1525
+ const showRowMenu = this.allowReorder || this.allowInsert || extraMenuItems.length > 0;
1526
+ const insertDisabled = this.disabled || !this.canAddRow();
1368
1527
  return b`<tr
1369
1528
  data-row-id=${rowId}
1370
1529
  data-tone=${rowMod.tone || A}
@@ -1417,6 +1576,25 @@ var PkEditableTable = class PkEditableTable extends PkFormAssociatedElement {
1417
1576
  ?disabled=${this.disabled}
1418
1577
  >${o(START_ELLIPSIS_ICON)}</pk-button>
1419
1578
  ${this.renderExtraMenuItems(row, rowIndex)}
1579
+ ${this.allowInsert ? b`
1580
+ <pk-dropdown-item
1581
+ ?disabled=${insertDisabled}
1582
+ @click=${() => {
1583
+ this.insertRowAt(rowIndex);
1584
+ }}
1585
+ >
1586
+ ${o(START_PLUS_ICON)}
1587
+ Insert above
1588
+ </pk-dropdown-item>
1589
+ <pk-dropdown-item
1590
+ ?disabled=${insertDisabled}
1591
+ @click=${() => {
1592
+ this.insertRowAt(rowIndex + 1);
1593
+ }}
1594
+ >
1595
+ ${o(START_PLUS_ICON)}
1596
+ Insert below
1597
+ </pk-dropdown-item>` : A}
1420
1598
  ${this.allowReorder ? b`
1421
1599
  <pk-dropdown-item
1422
1600
  ?disabled=${this.disabled || rowIndex === 0}
@@ -1460,6 +1638,7 @@ var PkEditableTable = class PkEditableTable extends PkFormAssociatedElement {
1460
1638
  @pk-change=${this.stopInnerControlEvent}
1461
1639
  @input=${this.stopInnerControlEvent}
1462
1640
  @change=${this.stopInnerControlEvent}
1641
+ @paste=${this.handleTablePaste}
1463
1642
  >
1464
1643
  <table class="et">
1465
1644
  <thead>
@@ -1517,6 +1696,15 @@ __decorate([n({
1517
1696
  reflect: true,
1518
1697
  attribute: "allow-reorder"
1519
1698
  })], PkEditableTable.prototype, "allowReorder", void 0);
1699
+ __decorate([n({
1700
+ type: Boolean,
1701
+ reflect: true,
1702
+ attribute: "allow-insert"
1703
+ })], PkEditableTable.prototype, "allowInsert", void 0);
1704
+ __decorate([n({
1705
+ type: Number,
1706
+ attribute: "max-rows"
1707
+ })], PkEditableTable.prototype, "maxRows", void 0);
1520
1708
  __decorate([n({ attribute: "add-row-label" })], PkEditableTable.prototype, "addRowLabel", void 0);
1521
1709
  __decorate([n({ attribute: "field-name" })], PkEditableTable.prototype, "fieldName", void 0);
1522
1710
  __decorate([n({ attribute: false })], PkEditableTable.prototype, "cellErrors", void 0);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verbb/plugin-kit-web",
3
- "version": "2.0.13",
3
+ "version": "2.0.14",
4
4
  "description": "Plugin Kit web components (shadow DOM, Craft design system)",
5
5
  "type": "module",
6
6
  "types": "dist/index.d.ts",
@@ -982,18 +982,18 @@
982
982
  },
983
983
  "peerDependencies": {
984
984
  "@floating-ui/dom": "^1.7.3",
985
- "@verbb/plugin-kit-core": "^2.0.13",
986
- "@verbb/plugin-kit-icons": "^2.0.13",
985
+ "@verbb/plugin-kit-core": "^2.0.14",
986
+ "@verbb/plugin-kit-icons": "^2.0.14",
987
987
  "lit": "^3.3.0"
988
988
  },
989
989
  "license": "MIT",
990
990
  "dependencies": {
991
991
  "@floating-ui/dom": "^1.7.3",
992
992
  "@tiptap/core": "^3.22.4",
993
- "@verbb/plugin-kit-codemirror-core": "2.0.13",
994
- "@verbb/plugin-kit-core": "^2.0.13",
995
- "@verbb/plugin-kit-icons": "^2.0.13",
996
- "@verbb/plugin-kit-tiptap-core": "^2.0.13",
993
+ "@verbb/plugin-kit-codemirror-core": "2.0.14",
994
+ "@verbb/plugin-kit-core": "^2.0.14",
995
+ "@verbb/plugin-kit-icons": "^2.0.14",
996
+ "@verbb/plugin-kit-tiptap-core": "^2.0.14",
997
997
  "composed-offset-position": "^0.0.6",
998
998
  "lit": "^3.3.0"
999
999
  },