@verbb/plugin-kit-web 2.0.13 → 2.0.15

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.
Files changed (247) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/chunks/{decorate-W02hmVTt.js → decorate-R0X811qp.js} +13 -2
  3. package/dist/chunks/decorate-R0X811qp.js.map +1 -0
  4. package/dist/chunks/{pk-button-QpDDlRbG.js → pk-button-BWGDkuzc.js} +3 -4
  5. package/dist/chunks/{pk-button-QpDDlRbG.js.map → pk-button-BWGDkuzc.js.map} +1 -1
  6. package/dist/chunks/{pk-button-group-D9hqSfb_.js → pk-button-group-BSz5T5iS.js} +2 -3
  7. package/dist/chunks/pk-button-group-BSz5T5iS.js.map +1 -0
  8. package/dist/chunks/{pk-button-group-separator-DG0CYaqc.js → pk-button-group-separator-DH3Rl24b.js} +2 -3
  9. package/dist/chunks/pk-button-group-separator-DH3Rl24b.js.map +1 -0
  10. package/dist/chunks/{pk-button-group-text-C5z4P7ur.js → pk-button-group-text-Qro_KmZb.js} +2 -3
  11. package/dist/chunks/{pk-button-group-text-C5z4P7ur.js.map → pk-button-group-text-Qro_KmZb.js.map} +1 -1
  12. package/dist/chunks/{pk-calendar-CoUil0F7.js → pk-calendar-enTOUCRD.js} +2 -3
  13. package/dist/chunks/pk-calendar-enTOUCRD.js.map +1 -0
  14. package/dist/chunks/{pk-checkbox-Bavq3-9C.js → pk-checkbox-CvZwJZn_.js} +3 -4
  15. package/dist/chunks/pk-checkbox-CvZwJZn_.js.map +1 -0
  16. package/dist/chunks/{pk-checkbox-select-9lqd9Rwz.js → pk-checkbox-select-DclPoyDM.js} +3 -4
  17. package/dist/chunks/pk-checkbox-select-DclPoyDM.js.map +1 -0
  18. package/dist/chunks/{pk-code-editor-DSG6AwLV.js → pk-code-editor-CrKnJUyi.js} +3 -4
  19. package/dist/chunks/pk-code-editor-CrKnJUyi.js.map +1 -0
  20. package/dist/chunks/{pk-color-input-BCCXCZMA.js → pk-color-input-DXdqNCK7.js} +3 -4
  21. package/dist/chunks/pk-color-input-DXdqNCK7.js.map +1 -0
  22. package/dist/chunks/{pk-combobox-BqaSsLJb.js → pk-combobox-BLft8AXy.js} +4 -5
  23. package/dist/chunks/pk-combobox-BLft8AXy.js.map +1 -0
  24. package/dist/chunks/{pk-copy-button-CfeVuQ0r.js → pk-copy-button-asOLQkqk.js} +3 -4
  25. package/dist/chunks/pk-copy-button-asOLQkqk.js.map +1 -0
  26. package/dist/chunks/{pk-date-picker-BM4HMb4-.js → pk-date-picker-Bri3kZ6x.js} +5 -6
  27. package/dist/chunks/pk-date-picker-Bri3kZ6x.js.map +1 -0
  28. package/dist/chunks/{pk-dialog-Ck1InIBC.js → pk-dialog-BbEfvb0g.js} +2 -3
  29. package/dist/chunks/pk-dialog-BbEfvb0g.js.map +1 -0
  30. package/dist/chunks/{pk-dropdown-item-HcIUlFH1.js → pk-dropdown-item-BoZTGWMU.js} +2 -3
  31. package/dist/chunks/pk-dropdown-item-BoZTGWMU.js.map +1 -0
  32. package/dist/chunks/{pk-dropdown-label-DLgrmYND.js → pk-dropdown-label-Da28F917.js} +2 -3
  33. package/dist/chunks/{pk-dropdown-label-DLgrmYND.js.map → pk-dropdown-label-Da28F917.js.map} +1 -1
  34. package/dist/chunks/{pk-dropdown-menu-r5wgkvmZ.js → pk-dropdown-menu-CfZc7dIz.js} +4 -5
  35. package/dist/chunks/pk-dropdown-menu-CfZc7dIz.js.map +1 -0
  36. package/dist/chunks/{pk-editable-table-DQZQ6JLb.js → pk-editable-table-Cn4WXqAo.js} +208 -21
  37. package/dist/chunks/pk-editable-table-Cn4WXqAo.js.map +1 -0
  38. package/dist/chunks/{pk-field-JFP24j4o.js → pk-field-NL4KdFZC.js} +2 -3
  39. package/dist/chunks/pk-field-NL4KdFZC.js.map +1 -0
  40. package/dist/chunks/{pk-form-associated-element-DmZKgNPL.js → pk-form-associated-element-9M2NzOE2.js} +2 -2
  41. package/dist/chunks/{pk-form-associated-element-DmZKgNPL.js.map → pk-form-associated-element-9M2NzOE2.js.map} +1 -1
  42. package/dist/chunks/{pk-input-naIRPWGC.js → pk-input-DDkIXOkt.js} +3 -4
  43. package/dist/chunks/pk-input-DDkIXOkt.js.map +1 -0
  44. package/dist/chunks/{pk-input-group-CGHQKrt8.js → pk-input-group-CRPSBFhX.js} +2 -3
  45. package/dist/chunks/pk-input-group-CRPSBFhX.js.map +1 -0
  46. package/dist/chunks/{pk-input-group-addon-DXbNbsfY.js → pk-input-group-addon-B0StOmTJ.js} +2 -3
  47. package/dist/chunks/pk-input-group-addon-B0StOmTJ.js.map +1 -0
  48. package/dist/chunks/{pk-input-group-button-XOfVLqGO.js → pk-input-group-button-CnKajvsP.js} +2 -3
  49. package/dist/chunks/pk-input-group-button-CnKajvsP.js.map +1 -0
  50. package/dist/chunks/{pk-input-group-input-CSmR5vdY.js → pk-input-group-input-mllffsjQ.js} +2 -3
  51. package/dist/chunks/pk-input-group-input-mllffsjQ.js.map +1 -0
  52. package/dist/chunks/{pk-input-group-text-C6ekhtff.js → pk-input-group-text-DvaPJvh2.js} +2 -3
  53. package/dist/chunks/pk-input-group-text-DvaPJvh2.js.map +1 -0
  54. package/dist/chunks/{pk-input-group-textarea-DALr3pdU.js → pk-input-group-textarea-CqYv8tUQ.js} +2 -3
  55. package/dist/chunks/pk-input-group-textarea-CqYv8tUQ.js.map +1 -0
  56. package/dist/chunks/{pk-lightswitch-B-rLflNq.js → pk-lightswitch-DI1BeCmA.js} +3 -4
  57. package/dist/chunks/pk-lightswitch-DI1BeCmA.js.map +1 -0
  58. package/dist/chunks/{pk-option-Cy7oOcwF.js → pk-option-MGj9SKOK.js} +2 -3
  59. package/dist/chunks/pk-option-MGj9SKOK.js.map +1 -0
  60. package/dist/chunks/{pk-option-group-BAFSIZTa.js → pk-option-group-Cs6N7mlP.js} +2 -3
  61. package/dist/chunks/pk-option-group-Cs6N7mlP.js.map +1 -0
  62. package/dist/chunks/{pk-popover-G3ojheBD.js → pk-popover-duyNosk2.js} +3 -4
  63. package/dist/chunks/pk-popover-duyNosk2.js.map +1 -0
  64. package/dist/chunks/{pk-popup-CgiXok-U.js → pk-popup-B9AgBC2V.js} +2 -3
  65. package/dist/chunks/pk-popup-B9AgBC2V.js.map +1 -0
  66. package/dist/chunks/{pk-radio-CDfhOW8L.js → pk-radio-BK4D2Htu.js} +2 -3
  67. package/dist/chunks/pk-radio-BK4D2Htu.js.map +1 -0
  68. package/dist/chunks/{pk-radio-group-BazmLDvl.js → pk-radio-group-BRJIjOsR.js} +3 -4
  69. package/dist/chunks/pk-radio-group-BRJIjOsR.js.map +1 -0
  70. package/dist/chunks/{pk-scroll-area-BjU7-vZX.js → pk-scroll-area-BR6ckorh.js} +2 -3
  71. package/dist/chunks/pk-scroll-area-BR6ckorh.js.map +1 -0
  72. package/dist/chunks/{pk-select-BeMDXEC6.js → pk-select-C1s0OJr0.js} +4 -5
  73. package/dist/chunks/pk-select-C1s0OJr0.js.map +1 -0
  74. package/dist/chunks/{pk-separator-CLb9n0FK.js → pk-separator-CHij3vEG.js} +2 -3
  75. package/dist/chunks/pk-separator-CHij3vEG.js.map +1 -0
  76. package/dist/chunks/{pk-spinner-Blxd3SIH.js → pk-spinner-DweuYJ_Z.js} +2 -3
  77. package/dist/chunks/{pk-spinner-Blxd3SIH.js.map → pk-spinner-DweuYJ_Z.js.map} +1 -1
  78. package/dist/chunks/{pk-status-7_5dEuw-.js → pk-status-D1IzTSI2.js} +2 -3
  79. package/dist/chunks/{pk-status-7_5dEuw-.js.map → pk-status-D1IzTSI2.js.map} +1 -1
  80. package/dist/chunks/{pk-tab-f1OLMVXs.js → pk-tab-2MHunhlF.js} +3 -3
  81. package/dist/chunks/{pk-tab-f1OLMVXs.js.map → pk-tab-2MHunhlF.js.map} +1 -1
  82. package/dist/chunks/{pk-tab-heading-79ZuLhXi.js → pk-tab-heading-BV6m_sT-.js} +2 -3
  83. package/dist/chunks/pk-tab-heading-BV6m_sT-.js.map +1 -0
  84. package/dist/chunks/{pk-tab-panel-DdAbrOBF.js → pk-tab-panel-C6FxQw9q.js} +3 -3
  85. package/dist/chunks/{pk-tab-panel-DdAbrOBF.js.map → pk-tab-panel-C6FxQw9q.js.map} +1 -1
  86. package/dist/chunks/{pk-tabs-BhC5PAnO.js → pk-tabs-BTE63uK9.js} +2 -3
  87. package/dist/chunks/{pk-tabs-BhC5PAnO.js.map → pk-tabs-BTE63uK9.js.map} +1 -1
  88. package/dist/chunks/{pk-textarea-BEapC8Rk.js → pk-textarea-BcAyZYC-.js} +3 -4
  89. package/dist/chunks/pk-textarea-BcAyZYC-.js.map +1 -0
  90. package/dist/chunks/{pk-time-picker-RlAqlho4.js → pk-time-picker-5D4nmig2.js} +4 -5
  91. package/dist/chunks/{pk-time-picker-RlAqlho4.js.map → pk-time-picker-5D4nmig2.js.map} +1 -1
  92. package/dist/chunks/{pk-tiptap-content-zzx3-xrD.js → pk-tiptap-content-BPd4GO6c.js} +2 -3
  93. package/dist/chunks/pk-tiptap-content-BPd4GO6c.js.map +1 -0
  94. package/dist/chunks/{pk-tiptap-editor-DpT4TYdi.js → pk-tiptap-editor-tG67Vegc.js} +11 -12
  95. package/dist/chunks/pk-tiptap-editor-tG67Vegc.js.map +1 -0
  96. package/dist/chunks/{pk-tiptap-input-D7xj13FY.js → pk-tiptap-input-CtefNnaK.js} +3 -4
  97. package/dist/chunks/pk-tiptap-input-CtefNnaK.js.map +1 -0
  98. package/dist/chunks/{pk-toggle-5-GKVLye.js → pk-toggle-CW-lflrh.js} +2 -3
  99. package/dist/chunks/{pk-toggle-5-GKVLye.js.map → pk-toggle-CW-lflrh.js.map} +1 -1
  100. package/dist/chunks/{pk-toggle-group-CWDwYlgR.js → pk-toggle-group-BKymefo3.js} +2 -3
  101. package/dist/chunks/pk-toggle-group-BKymefo3.js.map +1 -0
  102. package/dist/chunks/{pk-tooltip-DAq-JZpg.js → pk-tooltip-BoDq8YVe.js} +3 -4
  103. package/dist/chunks/pk-tooltip-BoDq8YVe.js.map +1 -0
  104. package/dist/chunks/{register-C9xZttKy.js → register-CQodpTWT.js} +50 -50
  105. package/dist/chunks/{register-C9xZttKy.js.map → register-CQodpTWT.js.map} +1 -1
  106. package/dist/components/button/pk-button.js +1 -1
  107. package/dist/components/button-group/pk-button-group-separator.js +1 -1
  108. package/dist/components/button-group/pk-button-group-text.js +1 -1
  109. package/dist/components/button-group/pk-button-group.js +1 -1
  110. package/dist/components/button-group.js +3 -3
  111. package/dist/components/button.js +1 -1
  112. package/dist/components/calendar/pk-calendar.js +1 -1
  113. package/dist/components/calendar.js +1 -1
  114. package/dist/components/checkbox/pk-checkbox.js +1 -1
  115. package/dist/components/checkbox-select/pk-checkbox-select.js +1 -1
  116. package/dist/components/checkbox-select.js +1 -1
  117. package/dist/components/checkbox.js +1 -1
  118. package/dist/components/code-editor/pk-code-editor.js +1 -1
  119. package/dist/components/code-editor.js +1 -1
  120. package/dist/components/color-input/pk-color-input.js +1 -1
  121. package/dist/components/color-input.js +1 -1
  122. package/dist/components/combobox/pk-combobox.js +1 -1
  123. package/dist/components/combobox.js +1 -1
  124. package/dist/components/connect/pk-connect-oauth.js +3 -4
  125. package/dist/components/connect/pk-connect-oauth.js.map +1 -1
  126. package/dist/components/connect/pk-connect.js +4 -5
  127. package/dist/components/connect/pk-connect.js.map +1 -1
  128. package/dist/components/copy-button/pk-copy-button.js +1 -1
  129. package/dist/components/copy-button.js +1 -1
  130. package/dist/components/date-picker/pk-date-picker.js +1 -1
  131. package/dist/components/date-picker.js +1 -1
  132. package/dist/components/dialog/pk-dialog.js +1 -1
  133. package/dist/components/dialog.js +1 -1
  134. package/dist/components/dropdown-menu/pk-dropdown-item.js +1 -1
  135. package/dist/components/dropdown-menu/pk-dropdown-label.js +1 -1
  136. package/dist/components/dropdown-menu/pk-dropdown-menu.js +1 -1
  137. package/dist/components/dropdown-menu/pk-dropdown-separator.js +1 -2
  138. package/dist/components/dropdown-menu/pk-dropdown-separator.js.map +1 -1
  139. package/dist/components/dropdown-menu.js +3 -3
  140. package/dist/components/editable-table/editable-table-model.d.ts +16 -0
  141. package/dist/components/editable-table/editable-table-model.d.ts.map +1 -1
  142. package/dist/components/editable-table/pk-editable-table.d.ts +25 -0
  143. package/dist/components/editable-table/pk-editable-table.d.ts.map +1 -1
  144. package/dist/components/editable-table/pk-editable-table.js +1 -1
  145. package/dist/components/editable-table.js +1 -1
  146. package/dist/components/field/pk-field.js +1 -1
  147. package/dist/components/field.js +1 -1
  148. package/dist/components/icon/pk-icon.js +1 -2
  149. package/dist/components/icon/pk-icon.js.map +1 -1
  150. package/dist/components/input/pk-input.js +1 -1
  151. package/dist/components/input-group/pk-input-group-addon.js +1 -1
  152. package/dist/components/input-group/pk-input-group-button.js +1 -1
  153. package/dist/components/input-group/pk-input-group-input.js +1 -1
  154. package/dist/components/input-group/pk-input-group-text.js +1 -1
  155. package/dist/components/input-group/pk-input-group-textarea.js +1 -1
  156. package/dist/components/input-group/pk-input-group.js +1 -1
  157. package/dist/components/input-group.js +6 -6
  158. package/dist/components/input.js +1 -1
  159. package/dist/components/lightswitch/pk-lightswitch.js +1 -1
  160. package/dist/components/lightswitch.js +1 -1
  161. package/dist/components/popover/pk-popover.js +1 -1
  162. package/dist/components/popover.js +1 -1
  163. package/dist/components/popup/pk-popup.js +1 -1
  164. package/dist/components/popup.js +1 -1
  165. package/dist/components/radio-group/pk-radio-group.js +1 -1
  166. package/dist/components/radio-group/pk-radio.js +1 -1
  167. package/dist/components/radio-group.js +2 -2
  168. package/dist/components/scroll-area/pk-scroll-area.js +1 -1
  169. package/dist/components/scroll-area.js +1 -1
  170. package/dist/components/select/pk-option-group.js +1 -1
  171. package/dist/components/select/pk-option.js +1 -1
  172. package/dist/components/select/pk-select.js +1 -1
  173. package/dist/components/select.js +3 -3
  174. package/dist/components/separator/pk-separator.js +1 -1
  175. package/dist/components/separator.js +1 -1
  176. package/dist/components/spinner/pk-spinner.js +1 -1
  177. package/dist/components/spinner.js +1 -1
  178. package/dist/components/status/pk-status.js +1 -1
  179. package/dist/components/status.js +1 -1
  180. package/dist/components/tabs/pk-tab-heading.js +1 -1
  181. package/dist/components/tabs/pk-tab-panel.js +1 -1
  182. package/dist/components/tabs/pk-tab.js +1 -1
  183. package/dist/components/tabs/pk-tabs.js +1 -1
  184. package/dist/components/tabs.js +4 -4
  185. package/dist/components/textarea/pk-textarea.js +1 -1
  186. package/dist/components/textarea.js +1 -1
  187. package/dist/components/time-picker/pk-time-picker.js +1 -1
  188. package/dist/components/time-picker.js +1 -1
  189. package/dist/components/tiptap/pk-tiptap-content.js +1 -1
  190. package/dist/components/tiptap/pk-tiptap-editor.js +1 -1
  191. package/dist/components/tiptap/pk-tiptap-input.js +1 -1
  192. package/dist/components/tiptap-content.js +1 -1
  193. package/dist/components/tiptap-editor.js +1 -1
  194. package/dist/components/tiptap-input.js +1 -1
  195. package/dist/components/toggle/pk-toggle.js +1 -1
  196. package/dist/components/toggle-group/pk-toggle-group.js +1 -1
  197. package/dist/components/toggle-group.js +1 -1
  198. package/dist/components/toggle.js +1 -1
  199. package/dist/components/tooltip/pk-tooltip.js +1 -1
  200. package/dist/components/tooltip.js +1 -1
  201. package/dist/connect/register-cp-connect.js +3 -3
  202. package/dist/decorators.d.ts +12 -0
  203. package/dist/decorators.d.ts.map +1 -0
  204. package/dist/index.js +52 -52
  205. package/dist/register.js +50 -50
  206. package/dist-loader/components/editable-table/editable-table.js +192 -4
  207. package/package.json +7 -7
  208. package/dist/chunks/decorate-W02hmVTt.js.map +0 -1
  209. package/dist/chunks/pk-button-group-D9hqSfb_.js.map +0 -1
  210. package/dist/chunks/pk-button-group-separator-DG0CYaqc.js.map +0 -1
  211. package/dist/chunks/pk-calendar-CoUil0F7.js.map +0 -1
  212. package/dist/chunks/pk-checkbox-Bavq3-9C.js.map +0 -1
  213. package/dist/chunks/pk-checkbox-select-9lqd9Rwz.js.map +0 -1
  214. package/dist/chunks/pk-code-editor-DSG6AwLV.js.map +0 -1
  215. package/dist/chunks/pk-color-input-BCCXCZMA.js.map +0 -1
  216. package/dist/chunks/pk-combobox-BqaSsLJb.js.map +0 -1
  217. package/dist/chunks/pk-copy-button-CfeVuQ0r.js.map +0 -1
  218. package/dist/chunks/pk-date-picker-BM4HMb4-.js.map +0 -1
  219. package/dist/chunks/pk-dialog-Ck1InIBC.js.map +0 -1
  220. package/dist/chunks/pk-dropdown-item-HcIUlFH1.js.map +0 -1
  221. package/dist/chunks/pk-dropdown-menu-r5wgkvmZ.js.map +0 -1
  222. package/dist/chunks/pk-editable-table-DQZQ6JLb.js.map +0 -1
  223. package/dist/chunks/pk-field-JFP24j4o.js.map +0 -1
  224. package/dist/chunks/pk-input-group-CGHQKrt8.js.map +0 -1
  225. package/dist/chunks/pk-input-group-addon-DXbNbsfY.js.map +0 -1
  226. package/dist/chunks/pk-input-group-button-XOfVLqGO.js.map +0 -1
  227. package/dist/chunks/pk-input-group-input-CSmR5vdY.js.map +0 -1
  228. package/dist/chunks/pk-input-group-text-C6ekhtff.js.map +0 -1
  229. package/dist/chunks/pk-input-group-textarea-DALr3pdU.js.map +0 -1
  230. package/dist/chunks/pk-input-naIRPWGC.js.map +0 -1
  231. package/dist/chunks/pk-lightswitch-B-rLflNq.js.map +0 -1
  232. package/dist/chunks/pk-option-Cy7oOcwF.js.map +0 -1
  233. package/dist/chunks/pk-option-group-BAFSIZTa.js.map +0 -1
  234. package/dist/chunks/pk-popover-G3ojheBD.js.map +0 -1
  235. package/dist/chunks/pk-popup-CgiXok-U.js.map +0 -1
  236. package/dist/chunks/pk-radio-CDfhOW8L.js.map +0 -1
  237. package/dist/chunks/pk-radio-group-BazmLDvl.js.map +0 -1
  238. package/dist/chunks/pk-scroll-area-BjU7-vZX.js.map +0 -1
  239. package/dist/chunks/pk-select-BeMDXEC6.js.map +0 -1
  240. package/dist/chunks/pk-separator-CLb9n0FK.js.map +0 -1
  241. package/dist/chunks/pk-tab-heading-79ZuLhXi.js.map +0 -1
  242. package/dist/chunks/pk-textarea-BEapC8Rk.js.map +0 -1
  243. package/dist/chunks/pk-tiptap-content-zzx3-xrD.js.map +0 -1
  244. package/dist/chunks/pk-tiptap-editor-DpT4TYdi.js.map +0 -1
  245. package/dist/chunks/pk-tiptap-input-D7xj13FY.js.map +0 -1
  246. package/dist/chunks/pk-toggle-group-CWDwYlgR.js.map +0 -1
  247. package/dist/chunks/pk-tooltip-DAq-JZpg.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pk-connect-oauth.js","names":[],"sources":["../../../src/components/connect/pk-connect-oauth.ts"],"sourcesContent":["import { submitCpFormAction, watchCpFormDirty } from '@verbb/plugin-kit-core';\nimport { html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport '../button/pk-button.js';\nimport '../status/pk-status.js';\nimport { pkConnectStyles } from './pk-connect.styles.js';\n\n/**\n * OAuth connect row for Craft CP settings.\n *\n * **Light DOM** — the row mounts inside Craft's `.field.lightswitch-field` wrapper and\n * reuses CP column classes (`.heading` / `.input`) so it lines up with Provider/Enabled\n * rows without shadow-piercing or duplicating Craft field chrome. Action buttons use\n * `pk-button`; submission goes through `Craft.submitForm` (same as `.formsubmit`).\n */\n@customElement('pk-connect-oauth')\nexport class PkConnectOauth extends LitElement {\n static override styles = pkConnectStyles;\n\n @property({ type: Boolean, reflect: true })\n connected = false;\n\n @property({ attribute: 'connect-action' })\n connectAction = '';\n\n @property({ attribute: 'disconnect-action' })\n disconnectAction = '';\n\n @property({ attribute: 'param-name' })\n paramName = '';\n\n @property({ attribute: 'param-value' })\n paramValue = '';\n\n @property({ attribute: 'connect-redirect' })\n connectRedirect = '';\n\n @property({ attribute: 'disconnect-redirect' })\n disconnectRedirect = '';\n\n @property({ attribute: 'form-selector' })\n formSelector = '#main-form';\n\n /** When true, skip dirty-form watching (e.g. Formie read-only OAuth mini-form). */\n @property({ type: Boolean, attribute: 'skip-dirty-watch' })\n skipDirtyWatch = false;\n\n @property({ attribute: 'label-connected' })\n labelConnected = 'Connected';\n\n @property({ attribute: 'label-not-connected' })\n labelNotConnected = 'Not Connected';\n\n @property({ attribute: 'label-connect' })\n labelConnect = 'Connect';\n\n @property({ attribute: 'label-disconnect' })\n labelDisconnect = 'Disconnect';\n\n @property({ attribute: 'label-save-to-connect' })\n labelSaveToConnect = 'Save to connect.';\n\n @state()\n private isDirty = false;\n\n private unwatchDirty: (() => void) | null = null;\n\n override createRenderRoot(): HTMLElement | DocumentFragment {\n return this;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.skipDirtyWatch) {\n return;\n }\n\n this.unwatchDirty = watchCpFormDirty({\n formSelector: this.formSelector,\n host: this,\n onDirty: () => {\n this.isDirty = true;\n },\n });\n }\n\n override disconnectedCallback(): void {\n this.unwatchDirty?.();\n this.unwatchDirty = null;\n super.disconnectedCallback();\n }\n\n private submitOAuthAction(action: string, redirect: string): void {\n submitCpFormAction({\n formSelector: this.formSelector,\n host: this,\n action,\n redirect,\n paramName: this.paramName,\n paramValue: this.paramValue,\n });\n }\n\n private handleConnectClick(event: Event): void {\n event.preventDefault();\n this.submitOAuthAction(this.connectAction, this.connectRedirect);\n }\n\n private handleDisconnectClick(event: Event): void {\n event.preventDefault();\n this.submitOAuthAction(this.disconnectAction, this.disconnectRedirect);\n }\n\n override render() {\n if (this.isDirty) {\n return html`\n <div class=\"heading\">\n <span class=\"warning with-icon\">${this.labelSaveToConnect}</span>\n </div>\n `;\n }\n\n if (this.connected) {\n return html`\n <div class=\"heading\">\n <pk-status status=\"on\" class=\"pk-connect__status-icon\"></pk-status>${this.labelConnected}\n </div>\n\n <div class=\"input ltr\">\n <pk-button\n type=\"button\"\n size=\"xs\"\n variant=\"default\"\n class=\"pk-connect__action\"\n @click=${this.handleDisconnectClick}\n >\n ${this.labelDisconnect}\n </pk-button>\n </div>\n `;\n }\n\n return html`\n <div class=\"heading\">\n <pk-status status=\"disabled\" class=\"pk-connect__status-icon\"></pk-status><span class=\"light\">${this.labelNotConnected}</span>\n </div>\n\n <div class=\"input ltr\">\n <pk-button\n type=\"button\"\n size=\"xs\"\n variant=\"default\"\n class=\"pk-connect__action\"\n @click=${this.handleConnectClick}\n >\n ${this.labelConnect}\n </pk-button>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-connect-oauth': PkConnectOauth;\n }\n}\n"],"mappings":";;;;;;;;AAiBO,IAAA,iBAAA,MAAM,uBAAuB,WAAW;;;mBAI/B;uBAGI;0BAGG;mBAGP;oBAGC;yBAGK;4BAGG;sBAGN;wBAIE;wBAGA;2BAGG;sBAGL;yBAGG;4BAGG;iBAGH;sBAE0B;;;gBAhDnB;;CAkDzB,mBAA4D;AACxD,SAAO;;CAGX,oBAAmC;AAC/B,QAAM,mBAAmB;AAEzB,MAAI,KAAK,eACL;AAGJ,OAAK,eAAe,iBAAiB;GACjC,cAAc,KAAK;GACnB,MAAM;GACN,eAAe;AACX,SAAK,UAAU;;GAEtB,CAAC;;CAGN,uBAAsC;AAClC,OAAK,gBAAgB;AACrB,OAAK,eAAe;AACpB,QAAM,sBAAsB;;CAGhC,kBAA0B,QAAgB,UAAwB;AAC9D,qBAAmB;GACf,cAAc,KAAK;GACnB,MAAM;GACN;GACA;GACA,WAAW,KAAK;GAChB,YAAY,KAAK;GACpB,CAAC;;CAGN,mBAA2B,OAAoB;AAC3C,QAAM,gBAAgB;AACtB,OAAK,kBAAkB,KAAK,eAAe,KAAK,gBAAgB;;CAGpE,sBAA8B,OAAoB;AAC9C,QAAM,gBAAgB;AACtB,OAAK,kBAAkB,KAAK,kBAAkB,KAAK,mBAAmB;;CAG1E,SAAkB;AACd,MAAI,KAAK,QACL,QAAO,IAAI;;sDAE+B,KAAK,mBAAmB;;;AAKtE,MAAI,KAAK,UACL,QAAO,IAAI;;yFAEkE,KAAK,eAAe;;;;;;;;;iCAS5E,KAAK,sBAAsB;;0BAElC,KAAK,gBAAgB;;;;AAMvC,SAAO,IAAI;;+GAE4F,KAAK,kBAAkB;;;;;;;;;6BASzG,KAAK,mBAAmB;;sBAE/B,KAAK,aAAa;;;;;;YAzInC,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,eAAA,WAAA,aAAA,KAAA,EAAA;YAG1C,SAAS,EAAE,WAAW,kBAAkB,CAAC,CAAA,EAAA,eAAA,WAAA,iBAAA,KAAA,EAAA;YAGzC,SAAS,EAAE,WAAW,qBAAqB,CAAC,CAAA,EAAA,eAAA,WAAA,oBAAA,KAAA,EAAA;YAG5C,SAAS,EAAE,WAAW,cAAc,CAAC,CAAA,EAAA,eAAA,WAAA,aAAA,KAAA,EAAA;YAGrC,SAAS,EAAE,WAAW,eAAe,CAAC,CAAA,EAAA,eAAA,WAAA,cAAA,KAAA,EAAA;YAGtC,SAAS,EAAE,WAAW,oBAAoB,CAAC,CAAA,EAAA,eAAA,WAAA,mBAAA,KAAA,EAAA;YAG3C,SAAS,EAAE,WAAW,uBAAuB,CAAC,CAAA,EAAA,eAAA,WAAA,sBAAA,KAAA,EAAA;YAG9C,SAAS,EAAE,WAAW,iBAAiB,CAAC,CAAA,EAAA,eAAA,WAAA,gBAAA,KAAA,EAAA;YAIxC,SAAS;CAAE,MAAM;CAAS,WAAW;CAAoB,CAAC,CAAA,EAAA,eAAA,WAAA,kBAAA,KAAA,EAAA;YAG1D,SAAS,EAAE,WAAW,mBAAmB,CAAC,CAAA,EAAA,eAAA,WAAA,kBAAA,KAAA,EAAA;YAG1C,SAAS,EAAE,WAAW,uBAAuB,CAAC,CAAA,EAAA,eAAA,WAAA,qBAAA,KAAA,EAAA;YAG9C,SAAS,EAAE,WAAW,iBAAiB,CAAC,CAAA,EAAA,eAAA,WAAA,gBAAA,KAAA,EAAA;YAGxC,SAAS,EAAE,WAAW,oBAAoB,CAAC,CAAA,EAAA,eAAA,WAAA,mBAAA,KAAA,EAAA;YAG3C,SAAS,EAAE,WAAW,yBAAyB,CAAC,CAAA,EAAA,eAAA,WAAA,sBAAA,KAAA,EAAA;YAGhD,OAAO,CAAA,EAAA,eAAA,WAAA,WAAA,KAAA,EAAA;6BA/CX,cAAc,mBAAmB,CAAA,EAAA,eAAA"}
1
+ {"version":3,"file":"pk-connect-oauth.js","names":[],"sources":["../../../src/components/connect/pk-connect-oauth.ts"],"sourcesContent":["import { submitCpFormAction, watchCpFormDirty } from '@verbb/plugin-kit-core';\nimport { html, LitElement } from 'lit';\nimport { customElement, property, state } from '../../decorators.js';\n\nimport '../button/pk-button.js';\nimport '../status/pk-status.js';\nimport { pkConnectStyles } from './pk-connect.styles.js';\n\n/**\n * OAuth connect row for Craft CP settings.\n *\n * **Light DOM** — the row mounts inside Craft's `.field.lightswitch-field` wrapper and\n * reuses CP column classes (`.heading` / `.input`) so it lines up with Provider/Enabled\n * rows without shadow-piercing or duplicating Craft field chrome. Action buttons use\n * `pk-button`; submission goes through `Craft.submitForm` (same as `.formsubmit`).\n */\n@customElement('pk-connect-oauth')\nexport class PkConnectOauth extends LitElement {\n static override styles = pkConnectStyles;\n\n @property({ type: Boolean, reflect: true })\n connected = false;\n\n @property({ attribute: 'connect-action' })\n connectAction = '';\n\n @property({ attribute: 'disconnect-action' })\n disconnectAction = '';\n\n @property({ attribute: 'param-name' })\n paramName = '';\n\n @property({ attribute: 'param-value' })\n paramValue = '';\n\n @property({ attribute: 'connect-redirect' })\n connectRedirect = '';\n\n @property({ attribute: 'disconnect-redirect' })\n disconnectRedirect = '';\n\n @property({ attribute: 'form-selector' })\n formSelector = '#main-form';\n\n /** When true, skip dirty-form watching (e.g. Formie read-only OAuth mini-form). */\n @property({ type: Boolean, attribute: 'skip-dirty-watch' })\n skipDirtyWatch = false;\n\n @property({ attribute: 'label-connected' })\n labelConnected = 'Connected';\n\n @property({ attribute: 'label-not-connected' })\n labelNotConnected = 'Not Connected';\n\n @property({ attribute: 'label-connect' })\n labelConnect = 'Connect';\n\n @property({ attribute: 'label-disconnect' })\n labelDisconnect = 'Disconnect';\n\n @property({ attribute: 'label-save-to-connect' })\n labelSaveToConnect = 'Save to connect.';\n\n @state()\n private isDirty = false;\n\n private unwatchDirty: (() => void) | null = null;\n\n override createRenderRoot(): HTMLElement | DocumentFragment {\n return this;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.skipDirtyWatch) {\n return;\n }\n\n this.unwatchDirty = watchCpFormDirty({\n formSelector: this.formSelector,\n host: this,\n onDirty: () => {\n this.isDirty = true;\n },\n });\n }\n\n override disconnectedCallback(): void {\n this.unwatchDirty?.();\n this.unwatchDirty = null;\n super.disconnectedCallback();\n }\n\n private submitOAuthAction(action: string, redirect: string): void {\n submitCpFormAction({\n formSelector: this.formSelector,\n host: this,\n action,\n redirect,\n paramName: this.paramName,\n paramValue: this.paramValue,\n });\n }\n\n private handleConnectClick(event: Event): void {\n event.preventDefault();\n this.submitOAuthAction(this.connectAction, this.connectRedirect);\n }\n\n private handleDisconnectClick(event: Event): void {\n event.preventDefault();\n this.submitOAuthAction(this.disconnectAction, this.disconnectRedirect);\n }\n\n override render() {\n if (this.isDirty) {\n return html`\n <div class=\"heading\">\n <span class=\"warning with-icon\">${this.labelSaveToConnect}</span>\n </div>\n `;\n }\n\n if (this.connected) {\n return html`\n <div class=\"heading\">\n <pk-status status=\"on\" class=\"pk-connect__status-icon\"></pk-status>${this.labelConnected}\n </div>\n\n <div class=\"input ltr\">\n <pk-button\n type=\"button\"\n size=\"xs\"\n variant=\"default\"\n class=\"pk-connect__action\"\n @click=${this.handleDisconnectClick}\n >\n ${this.labelDisconnect}\n </pk-button>\n </div>\n `;\n }\n\n return html`\n <div class=\"heading\">\n <pk-status status=\"disabled\" class=\"pk-connect__status-icon\"></pk-status><span class=\"light\">${this.labelNotConnected}</span>\n </div>\n\n <div class=\"input ltr\">\n <pk-button\n type=\"button\"\n size=\"xs\"\n variant=\"default\"\n class=\"pk-connect__action\"\n @click=${this.handleConnectClick}\n >\n ${this.labelConnect}\n </pk-button>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-connect-oauth': PkConnectOauth;\n }\n}\n"],"mappings":";;;;;;;AAiBO,IAAA,iBAAA,MAAM,uBAAuB,WAAW;;;mBAI/B;uBAGI;0BAGG;mBAGP;oBAGC;yBAGK;4BAGG;sBAGN;wBAIE;wBAGA;2BAGG;sBAGL;yBAGG;4BAGG;iBAGH;sBAE0B;;;gBAhDnB;;CAkDzB,mBAA4D;AACxD,SAAO;;CAGX,oBAAmC;AAC/B,QAAM,mBAAmB;AAEzB,MAAI,KAAK,eACL;AAGJ,OAAK,eAAe,iBAAiB;GACjC,cAAc,KAAK;GACnB,MAAM;GACN,eAAe;AACX,SAAK,UAAU;;GAEtB,CAAC;;CAGN,uBAAsC;AAClC,OAAK,gBAAgB;AACrB,OAAK,eAAe;AACpB,QAAM,sBAAsB;;CAGhC,kBAA0B,QAAgB,UAAwB;AAC9D,qBAAmB;GACf,cAAc,KAAK;GACnB,MAAM;GACN;GACA;GACA,WAAW,KAAK;GAChB,YAAY,KAAK;GACpB,CAAC;;CAGN,mBAA2B,OAAoB;AAC3C,QAAM,gBAAgB;AACtB,OAAK,kBAAkB,KAAK,eAAe,KAAK,gBAAgB;;CAGpE,sBAA8B,OAAoB;AAC9C,QAAM,gBAAgB;AACtB,OAAK,kBAAkB,KAAK,kBAAkB,KAAK,mBAAmB;;CAG1E,SAAkB;AACd,MAAI,KAAK,QACL,QAAO,IAAI;;sDAE+B,KAAK,mBAAmB;;;AAKtE,MAAI,KAAK,UACL,QAAO,IAAI;;yFAEkE,KAAK,eAAe;;;;;;;;;iCAS5E,KAAK,sBAAsB;;0BAElC,KAAK,gBAAgB;;;;AAMvC,SAAO,IAAI;;+GAE4F,KAAK,kBAAkB;;;;;;;;;6BASzG,KAAK,mBAAmB;;sBAE/B,KAAK,aAAa;;;;;;YAzInC,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,eAAA,WAAA,aAAA,KAAA,EAAA;YAG1C,SAAS,EAAE,WAAW,kBAAkB,CAAC,CAAA,EAAA,eAAA,WAAA,iBAAA,KAAA,EAAA;YAGzC,SAAS,EAAE,WAAW,qBAAqB,CAAC,CAAA,EAAA,eAAA,WAAA,oBAAA,KAAA,EAAA;YAG5C,SAAS,EAAE,WAAW,cAAc,CAAC,CAAA,EAAA,eAAA,WAAA,aAAA,KAAA,EAAA;YAGrC,SAAS,EAAE,WAAW,eAAe,CAAC,CAAA,EAAA,eAAA,WAAA,cAAA,KAAA,EAAA;YAGtC,SAAS,EAAE,WAAW,oBAAoB,CAAC,CAAA,EAAA,eAAA,WAAA,mBAAA,KAAA,EAAA;YAG3C,SAAS,EAAE,WAAW,uBAAuB,CAAC,CAAA,EAAA,eAAA,WAAA,sBAAA,KAAA,EAAA;YAG9C,SAAS,EAAE,WAAW,iBAAiB,CAAC,CAAA,EAAA,eAAA,WAAA,gBAAA,KAAA,EAAA;YAIxC,SAAS;CAAE,MAAM;CAAS,WAAW;CAAoB,CAAC,CAAA,EAAA,eAAA,WAAA,kBAAA,KAAA,EAAA;YAG1D,SAAS,EAAE,WAAW,mBAAmB,CAAC,CAAA,EAAA,eAAA,WAAA,kBAAA,KAAA,EAAA;YAG1C,SAAS,EAAE,WAAW,uBAAuB,CAAC,CAAA,EAAA,eAAA,WAAA,qBAAA,KAAA,EAAA;YAG9C,SAAS,EAAE,WAAW,iBAAiB,CAAC,CAAA,EAAA,eAAA,WAAA,gBAAA,KAAA,EAAA;YAGxC,SAAS,EAAE,WAAW,oBAAoB,CAAC,CAAA,EAAA,eAAA,WAAA,mBAAA,KAAA,EAAA;YAG3C,SAAS,EAAE,WAAW,yBAAyB,CAAC,CAAA,EAAA,eAAA,WAAA,sBAAA,KAAA,EAAA;YAGhD,OAAO,CAAA,EAAA,eAAA,WAAA,WAAA,KAAA,EAAA;6BA/CX,cAAc,mBAAmB,CAAA,EAAA,eAAA"}
@@ -1,11 +1,10 @@
1
- import { t as __decorate } from "../../chunks/decorate-W02hmVTt.js";
2
- import "../../chunks/pk-button-QpDDlRbG.js";
3
- import "../../chunks/pk-status-7_5dEuw-.js";
4
- import "../../chunks/pk-dialog-Ck1InIBC.js";
1
+ import { i as property, o as state, s as customElement, t as __decorate } from "../../chunks/decorate-R0X811qp.js";
2
+ import "../../chunks/pk-button-BWGDkuzc.js";
3
+ import "../../chunks/pk-status-D1IzTSI2.js";
4
+ import "../../chunks/pk-dialog-BbEfvb0g.js";
5
5
  import "../icon/pk-icon.js";
6
6
  import { t as pkConnectStyles } from "../../chunks/pk-connect.styles-DshgIW2n.js";
7
7
  import { LitElement, html, nothing } from "lit";
8
- import { customElement, property, state } from "lit/decorators.js";
9
8
  import { buildConnectPayload, escapeCpHtml, resolveConnectError, sendCpConnectRequest, serializeCpForm, watchCpFormDirty } from "@verbb/plugin-kit-core";
10
9
  //#region src/components/connect/pk-connect.ts
11
10
  var pkStatusForState = (status) => {
@@ -1 +1 @@
1
- {"version":3,"file":"pk-connect.js","names":[],"sources":["../../../src/components/connect/pk-connect.ts"],"sourcesContent":["import {\n buildConnectPayload,\n escapeCpHtml,\n resolveConnectError,\n sendCpConnectRequest,\n serializeCpForm,\n watchCpFormDirty,\n type ConnectLabels,\n type ConnectStatus,\n type ErrorContent,\n} from '@verbb/plugin-kit-core';\nimport { html, LitElement, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport '../button/pk-button.js';\nimport '../dialog/pk-dialog.js';\nimport '../icon/pk-icon.js';\nimport '../status/pk-status.js';\nimport type { PkStatusVariant } from '../status/pk-status.js';\nimport { pkConnectStyles } from './pk-connect.styles.js';\n\nconst pkStatusForState = (status: ConnectStatus): PkStatusVariant => {\n if (status === 'connected') {\n return 'on';\n }\n\n if (status === 'error') {\n return 'off';\n }\n\n return 'disabled';\n};\n\n/**\n * Credentials / REST connect row for Craft CP source settings.\n *\n * **Light DOM** — mounts inside Craft `.field.lightswitch-field` and reuses CP\n * `.heading` / `.input` columns (see `pk-connect-oauth` for the same rationale).\n *\n * @fires pk-status-change - `detail.status` is the new {@link ConnectStatus}.\n */\n@customElement('pk-connect')\nexport class PkConnect extends LitElement {\n static override styles = pkConnectStyles;\n\n /** Craft controller action, e.g. `metrix/sources/check-connection`. */\n @property({ reflect: true })\n action = '';\n\n @property({ reflect: true })\n status: ConnectStatus = 'disconnected';\n\n @property({ attribute: 'form-selector' })\n formSelector = '#main-form';\n\n @property({ attribute: 'source-id' })\n sourceId: string | null = null;\n\n /** POST key for the record id (`sourceId` default; Formie uses `id`). */\n @property({ attribute: 'id-param' })\n idParam = 'sourceId';\n\n @property()\n type = '';\n\n @property({ attribute: 'label-connected' })\n labelConnected = 'Connected';\n\n @property({ attribute: 'label-not-connected' })\n labelNotConnected = 'Not Connected';\n\n @property({ attribute: 'label-connecting' })\n labelConnecting = 'Connecting…';\n\n @property({ attribute: 'label-error' })\n labelError = 'Error';\n\n @property({ attribute: 'label-connect' })\n labelConnect = 'Connect';\n\n @property({ attribute: 'label-refresh' })\n labelRefresh = 'Refresh';\n\n @property({ attribute: 'label-save-to-connect' })\n labelSaveToConnect = 'Save to connect.';\n\n @property({ attribute: 'label-error-heading' })\n labelErrorHeading = 'Connection error';\n\n @property({ attribute: 'label-generic-error' })\n labelGenericError = 'Unable to connect to the provider.';\n\n @property({ attribute: 'label-show-details' })\n labelShowDetails = 'Show details';\n\n @property({ attribute: 'label-hide-details' })\n labelHideDetails = 'Hide details';\n\n @property({ attribute: 'label-close' })\n labelClose = 'Close';\n\n @state()\n private isDirty = false;\n\n @state()\n private loading = false;\n\n @state()\n private showDetails = false;\n\n private unwatchDirty: (() => void) | null = null;\n private errorDialog: HTMLElement | null = null;\n\n override createRenderRoot(): HTMLElement | DocumentFragment {\n // Light DOM — Craft field chrome and pk-* children share document tokens.\n return this;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.unwatchDirty = watchCpFormDirty({\n formSelector: this.formSelector,\n host: this,\n onDirty: () => {\n this.isDirty = true;\n },\n });\n }\n\n override disconnectedCallback(): void {\n this.unwatchDirty?.();\n this.unwatchDirty = null;\n this.errorDialog?.remove();\n this.errorDialog = null;\n super.disconnectedCallback();\n }\n\n private get labels(): ConnectLabels {\n return {\n connected: this.labelConnected,\n notConnected: this.labelNotConnected,\n connecting: this.labelConnecting,\n error: this.labelError,\n connect: this.labelConnect,\n refresh: this.labelRefresh,\n saveToConnect: this.labelSaveToConnect,\n errorHeading: this.labelErrorHeading,\n genericError: this.labelGenericError,\n showDetails: this.labelShowDetails,\n hideDetails: this.labelHideDetails,\n };\n }\n\n private get fieldHost(): HTMLElement | null {\n return this.closest('.pk-connect-field');\n }\n\n private get statusLabel(): string {\n switch (this.status) {\n case 'connected':\n return this.labelConnected;\n case 'error':\n return this.labelError;\n case 'connecting':\n return this.labelConnecting;\n default:\n return this.labelNotConnected;\n }\n }\n\n private get statusLabelMuted(): boolean {\n return this.status !== 'connected' && this.status !== 'error';\n }\n\n private get actionLabel(): string {\n return this.status === 'connected' ? this.labelRefresh : this.labelConnect;\n }\n\n private setConnectStatus(status: ConnectStatus): void {\n this.status = status;\n this.dispatchEvent(\n new CustomEvent<{ status: ConnectStatus }>('pk-status-change', {\n detail: { status },\n bubbles: true,\n }),\n );\n }\n\n private setModalOpen(open: boolean): void {\n this.fieldHost?.classList.toggle('pk-connect-field--modal-open', open);\n\n if (!open) {\n this.showDetails = false;\n }\n }\n\n private ensureErrorDialog(): HTMLElement {\n if (this.errorDialog) {\n return this.errorDialog;\n }\n\n const dialog = document.createElement('pk-dialog');\n dialog.className = 'pk-connect-dialog';\n dialog.setAttribute('without-header', '');\n dialog.innerHTML = [\n `<pk-button slot=\"trigger\" type=\"button\" variant=\"none\" size=\"none\" icon class=\"pk-connect-dialog__close\" data-dialog=\"close\" aria-label=\"${escapeCpHtml(this.labelClose)}\">`,\n '<pk-icon icon=\"xmark\"></pk-icon>',\n '</pk-button>',\n '<div class=\"pk-connection-error\">',\n '<div class=\"pk-connection-error__stack\">',\n '<div class=\"pk-connection-error__icon\"><pk-icon icon=\"triangle-exclamation\"></pk-icon></div>',\n '<h3 class=\"pk-connection-error__heading\"></h3>',\n '<p class=\"pk-connection-error__message\"></p>',\n '<div class=\"pk-connection-error__details hidden\">',\n '<button type=\"button\" class=\"pk-connection-error__details-toggle\">',\n '<pk-icon icon=\"chevron-right\"></pk-icon>',\n `<span class=\"pk-connection-error__details-label\">${escapeCpHtml(this.labelShowDetails)}</span>`,\n '</button>',\n '<div class=\"pk-connection-error__trace hidden\"></div>',\n '</div>',\n '</div>',\n '</div>',\n ].join('');\n\n document.body.appendChild(dialog);\n\n const detailsToggle = dialog.querySelector<HTMLButtonElement>('.pk-connection-error__details-toggle');\n const traceEl = dialog.querySelector('.pk-connection-error__trace');\n const detailsLabel = dialog.querySelector('.pk-connection-error__details-label');\n const detailsWrap = dialog.querySelector('.pk-connection-error__details');\n const chevron = dialog.querySelector('pk-icon');\n\n detailsToggle?.addEventListener('click', () => {\n this.showDetails = !this.showDetails;\n traceEl?.classList.toggle('hidden', !this.showDetails);\n chevron?.classList.toggle('is-open', this.showDetails);\n\n if (detailsLabel) {\n detailsLabel.textContent = this.showDetails\n ? this.labelHideDetails\n : this.labelShowDetails;\n }\n });\n\n dialog.addEventListener('pk-open-change', (event) => {\n const open = Boolean((event as CustomEvent<{ open?: boolean }>).detail?.open);\n this.setModalOpen(open);\n\n if (!open) {\n traceEl?.classList.add('hidden');\n chevron?.classList.remove('is-open');\n\n if (detailsLabel) {\n detailsLabel.textContent = this.labelShowDetails;\n }\n }\n });\n\n this.errorDialog = dialog;\n return dialog;\n }\n\n private showErrorModal(error: ErrorContent): void {\n const dialog = this.ensureErrorDialog() as HTMLElement & { open: boolean };\n const heading = dialog.querySelector('.pk-connection-error__heading');\n const message = dialog.querySelector('.pk-connection-error__message');\n const detailsWrap = dialog.querySelector('.pk-connection-error__details');\n const traceEl = dialog.querySelector('.pk-connection-error__trace');\n\n if (heading) {\n heading.textContent = error.heading || this.labelErrorHeading;\n }\n\n if (message) {\n message.textContent = error.text || this.labelGenericError;\n }\n\n const trace = error.traceAsString || error.trace || '';\n\n if (trace && detailsWrap && traceEl) {\n detailsWrap.classList.remove('hidden');\n traceEl.innerHTML = trace;\n traceEl.classList.add('hidden');\n } else {\n detailsWrap?.classList.add('hidden');\n }\n\n this.showDetails = false;\n dialog.open = true;\n this.setModalOpen(true);\n }\n\n private async handleConnectClick(event: Event): Promise<void> {\n event.preventDefault();\n\n if (this.isDirty || this.loading || !this.action) {\n return;\n }\n\n this.loading = true;\n this.setConnectStatus('connecting');\n this.setModalOpen(false);\n\n const values = serializeCpForm(this.formSelector, this);\n const payload = buildConnectPayload(values, {\n idParam: this.idParam,\n sourceId: this.sourceId,\n type: this.type || values.type,\n });\n\n try {\n const response = await sendCpConnectRequest(this.action, payload);\n this.loading = false;\n\n if (response?.data?.success) {\n this.setConnectStatus('connected');\n return;\n }\n\n if (response?.data?.message || response?.data?.success === false) {\n this.setConnectStatus('error');\n this.showErrorModal(\n resolveConnectError(response?.data?.message ?? null, this.labels),\n );\n }\n } catch (error) {\n this.loading = false;\n this.setConnectStatus('error');\n this.showErrorModal(resolveConnectError(error, this.labels));\n }\n }\n\n override render() {\n if (this.isDirty) {\n return html`\n <div class=\"heading\">\n <span class=\"warning with-icon\">${this.labelSaveToConnect}</span>\n </div>\n `;\n }\n\n return html`\n <div class=\"heading\">\n <pk-status\n status=${pkStatusForState(this.status)}\n class=\"pk-connect__status-icon\"\n ></pk-status><span class=${this.statusLabelMuted ? 'light' : nothing}>${this.statusLabel}</span>\n </div>\n\n <div class=\"input ltr\">\n <pk-button\n type=\"button\"\n size=\"xs\"\n variant=\"default\"\n class=\"pk-connect__action\"\n spinner-size=\"xs\"\n ?loading=${this.loading}\n ?disabled=${this.loading || this.isDirty}\n @click=${this.handleConnectClick}\n >\n ${this.actionLabel}\n </pk-button>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-connect': PkConnect;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"pk-connect.js","names":[],"sources":["../../../src/components/connect/pk-connect.ts"],"sourcesContent":["import {\n buildConnectPayload,\n escapeCpHtml,\n resolveConnectError,\n sendCpConnectRequest,\n serializeCpForm,\n watchCpFormDirty,\n type ConnectLabels,\n type ConnectStatus,\n type ErrorContent,\n} from '@verbb/plugin-kit-core';\nimport { html, LitElement, nothing } from 'lit';\nimport { customElement, property, state } from '../../decorators.js';\n\nimport '../button/pk-button.js';\nimport '../dialog/pk-dialog.js';\nimport '../icon/pk-icon.js';\nimport '../status/pk-status.js';\nimport type { PkStatusVariant } from '../status/pk-status.js';\nimport { pkConnectStyles } from './pk-connect.styles.js';\n\nconst pkStatusForState = (status: ConnectStatus): PkStatusVariant => {\n if (status === 'connected') {\n return 'on';\n }\n\n if (status === 'error') {\n return 'off';\n }\n\n return 'disabled';\n};\n\n/**\n * Credentials / REST connect row for Craft CP source settings.\n *\n * **Light DOM** — mounts inside Craft `.field.lightswitch-field` and reuses CP\n * `.heading` / `.input` columns (see `pk-connect-oauth` for the same rationale).\n *\n * @fires pk-status-change - `detail.status` is the new {@link ConnectStatus}.\n */\n@customElement('pk-connect')\nexport class PkConnect extends LitElement {\n static override styles = pkConnectStyles;\n\n /** Craft controller action, e.g. `metrix/sources/check-connection`. */\n @property({ reflect: true })\n action = '';\n\n @property({ reflect: true })\n status: ConnectStatus = 'disconnected';\n\n @property({ attribute: 'form-selector' })\n formSelector = '#main-form';\n\n @property({ attribute: 'source-id' })\n sourceId: string | null = null;\n\n /** POST key for the record id (`sourceId` default; Formie uses `id`). */\n @property({ attribute: 'id-param' })\n idParam = 'sourceId';\n\n @property()\n type = '';\n\n @property({ attribute: 'label-connected' })\n labelConnected = 'Connected';\n\n @property({ attribute: 'label-not-connected' })\n labelNotConnected = 'Not Connected';\n\n @property({ attribute: 'label-connecting' })\n labelConnecting = 'Connecting…';\n\n @property({ attribute: 'label-error' })\n labelError = 'Error';\n\n @property({ attribute: 'label-connect' })\n labelConnect = 'Connect';\n\n @property({ attribute: 'label-refresh' })\n labelRefresh = 'Refresh';\n\n @property({ attribute: 'label-save-to-connect' })\n labelSaveToConnect = 'Save to connect.';\n\n @property({ attribute: 'label-error-heading' })\n labelErrorHeading = 'Connection error';\n\n @property({ attribute: 'label-generic-error' })\n labelGenericError = 'Unable to connect to the provider.';\n\n @property({ attribute: 'label-show-details' })\n labelShowDetails = 'Show details';\n\n @property({ attribute: 'label-hide-details' })\n labelHideDetails = 'Hide details';\n\n @property({ attribute: 'label-close' })\n labelClose = 'Close';\n\n @state()\n private isDirty = false;\n\n @state()\n private loading = false;\n\n @state()\n private showDetails = false;\n\n private unwatchDirty: (() => void) | null = null;\n private errorDialog: HTMLElement | null = null;\n\n override createRenderRoot(): HTMLElement | DocumentFragment {\n // Light DOM — Craft field chrome and pk-* children share document tokens.\n return this;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.unwatchDirty = watchCpFormDirty({\n formSelector: this.formSelector,\n host: this,\n onDirty: () => {\n this.isDirty = true;\n },\n });\n }\n\n override disconnectedCallback(): void {\n this.unwatchDirty?.();\n this.unwatchDirty = null;\n this.errorDialog?.remove();\n this.errorDialog = null;\n super.disconnectedCallback();\n }\n\n private get labels(): ConnectLabels {\n return {\n connected: this.labelConnected,\n notConnected: this.labelNotConnected,\n connecting: this.labelConnecting,\n error: this.labelError,\n connect: this.labelConnect,\n refresh: this.labelRefresh,\n saveToConnect: this.labelSaveToConnect,\n errorHeading: this.labelErrorHeading,\n genericError: this.labelGenericError,\n showDetails: this.labelShowDetails,\n hideDetails: this.labelHideDetails,\n };\n }\n\n private get fieldHost(): HTMLElement | null {\n return this.closest('.pk-connect-field');\n }\n\n private get statusLabel(): string {\n switch (this.status) {\n case 'connected':\n return this.labelConnected;\n case 'error':\n return this.labelError;\n case 'connecting':\n return this.labelConnecting;\n default:\n return this.labelNotConnected;\n }\n }\n\n private get statusLabelMuted(): boolean {\n return this.status !== 'connected' && this.status !== 'error';\n }\n\n private get actionLabel(): string {\n return this.status === 'connected' ? this.labelRefresh : this.labelConnect;\n }\n\n private setConnectStatus(status: ConnectStatus): void {\n this.status = status;\n this.dispatchEvent(\n new CustomEvent<{ status: ConnectStatus }>('pk-status-change', {\n detail: { status },\n bubbles: true,\n }),\n );\n }\n\n private setModalOpen(open: boolean): void {\n this.fieldHost?.classList.toggle('pk-connect-field--modal-open', open);\n\n if (!open) {\n this.showDetails = false;\n }\n }\n\n private ensureErrorDialog(): HTMLElement {\n if (this.errorDialog) {\n return this.errorDialog;\n }\n\n const dialog = document.createElement('pk-dialog');\n dialog.className = 'pk-connect-dialog';\n dialog.setAttribute('without-header', '');\n dialog.innerHTML = [\n `<pk-button slot=\"trigger\" type=\"button\" variant=\"none\" size=\"none\" icon class=\"pk-connect-dialog__close\" data-dialog=\"close\" aria-label=\"${escapeCpHtml(this.labelClose)}\">`,\n '<pk-icon icon=\"xmark\"></pk-icon>',\n '</pk-button>',\n '<div class=\"pk-connection-error\">',\n '<div class=\"pk-connection-error__stack\">',\n '<div class=\"pk-connection-error__icon\"><pk-icon icon=\"triangle-exclamation\"></pk-icon></div>',\n '<h3 class=\"pk-connection-error__heading\"></h3>',\n '<p class=\"pk-connection-error__message\"></p>',\n '<div class=\"pk-connection-error__details hidden\">',\n '<button type=\"button\" class=\"pk-connection-error__details-toggle\">',\n '<pk-icon icon=\"chevron-right\"></pk-icon>',\n `<span class=\"pk-connection-error__details-label\">${escapeCpHtml(this.labelShowDetails)}</span>`,\n '</button>',\n '<div class=\"pk-connection-error__trace hidden\"></div>',\n '</div>',\n '</div>',\n '</div>',\n ].join('');\n\n document.body.appendChild(dialog);\n\n const detailsToggle = dialog.querySelector<HTMLButtonElement>('.pk-connection-error__details-toggle');\n const traceEl = dialog.querySelector('.pk-connection-error__trace');\n const detailsLabel = dialog.querySelector('.pk-connection-error__details-label');\n const detailsWrap = dialog.querySelector('.pk-connection-error__details');\n const chevron = dialog.querySelector('pk-icon');\n\n detailsToggle?.addEventListener('click', () => {\n this.showDetails = !this.showDetails;\n traceEl?.classList.toggle('hidden', !this.showDetails);\n chevron?.classList.toggle('is-open', this.showDetails);\n\n if (detailsLabel) {\n detailsLabel.textContent = this.showDetails\n ? this.labelHideDetails\n : this.labelShowDetails;\n }\n });\n\n dialog.addEventListener('pk-open-change', (event) => {\n const open = Boolean((event as CustomEvent<{ open?: boolean }>).detail?.open);\n this.setModalOpen(open);\n\n if (!open) {\n traceEl?.classList.add('hidden');\n chevron?.classList.remove('is-open');\n\n if (detailsLabel) {\n detailsLabel.textContent = this.labelShowDetails;\n }\n }\n });\n\n this.errorDialog = dialog;\n return dialog;\n }\n\n private showErrorModal(error: ErrorContent): void {\n const dialog = this.ensureErrorDialog() as HTMLElement & { open: boolean };\n const heading = dialog.querySelector('.pk-connection-error__heading');\n const message = dialog.querySelector('.pk-connection-error__message');\n const detailsWrap = dialog.querySelector('.pk-connection-error__details');\n const traceEl = dialog.querySelector('.pk-connection-error__trace');\n\n if (heading) {\n heading.textContent = error.heading || this.labelErrorHeading;\n }\n\n if (message) {\n message.textContent = error.text || this.labelGenericError;\n }\n\n const trace = error.traceAsString || error.trace || '';\n\n if (trace && detailsWrap && traceEl) {\n detailsWrap.classList.remove('hidden');\n traceEl.innerHTML = trace;\n traceEl.classList.add('hidden');\n } else {\n detailsWrap?.classList.add('hidden');\n }\n\n this.showDetails = false;\n dialog.open = true;\n this.setModalOpen(true);\n }\n\n private async handleConnectClick(event: Event): Promise<void> {\n event.preventDefault();\n\n if (this.isDirty || this.loading || !this.action) {\n return;\n }\n\n this.loading = true;\n this.setConnectStatus('connecting');\n this.setModalOpen(false);\n\n const values = serializeCpForm(this.formSelector, this);\n const payload = buildConnectPayload(values, {\n idParam: this.idParam,\n sourceId: this.sourceId,\n type: this.type || values.type,\n });\n\n try {\n const response = await sendCpConnectRequest(this.action, payload);\n this.loading = false;\n\n if (response?.data?.success) {\n this.setConnectStatus('connected');\n return;\n }\n\n if (response?.data?.message || response?.data?.success === false) {\n this.setConnectStatus('error');\n this.showErrorModal(\n resolveConnectError(response?.data?.message ?? null, this.labels),\n );\n }\n } catch (error) {\n this.loading = false;\n this.setConnectStatus('error');\n this.showErrorModal(resolveConnectError(error, this.labels));\n }\n }\n\n override render() {\n if (this.isDirty) {\n return html`\n <div class=\"heading\">\n <span class=\"warning with-icon\">${this.labelSaveToConnect}</span>\n </div>\n `;\n }\n\n return html`\n <div class=\"heading\">\n <pk-status\n status=${pkStatusForState(this.status)}\n class=\"pk-connect__status-icon\"\n ></pk-status><span class=${this.statusLabelMuted ? 'light' : nothing}>${this.statusLabel}</span>\n </div>\n\n <div class=\"input ltr\">\n <pk-button\n type=\"button\"\n size=\"xs\"\n variant=\"default\"\n class=\"pk-connect__action\"\n spinner-size=\"xs\"\n ?loading=${this.loading}\n ?disabled=${this.loading || this.isDirty}\n @click=${this.handleConnectClick}\n >\n ${this.actionLabel}\n </pk-button>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-connect': PkConnect;\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { t as PkCopyButton } from "../../chunks/pk-copy-button-CfeVuQ0r.js";
1
+ import { t as PkCopyButton } from "../../chunks/pk-copy-button-asOLQkqk.js";
2
2
  export { PkCopyButton };
@@ -1,2 +1,2 @@
1
- import { t as PkCopyButton } from "../chunks/pk-copy-button-CfeVuQ0r.js";
1
+ import { t as PkCopyButton } from "../chunks/pk-copy-button-asOLQkqk.js";
2
2
  export { PkCopyButton };
@@ -1,2 +1,2 @@
1
- import { t as PkDatePicker } from "../../chunks/pk-date-picker-BM4HMb4-.js";
1
+ import { t as PkDatePicker } from "../../chunks/pk-date-picker-Bri3kZ6x.js";
2
2
  export { PkDatePicker };
@@ -1,2 +1,2 @@
1
- import { t as PkDatePicker } from "../chunks/pk-date-picker-BM4HMb4-.js";
1
+ import { t as PkDatePicker } from "../chunks/pk-date-picker-Bri3kZ6x.js";
2
2
  export { PkDatePicker };
@@ -1,2 +1,2 @@
1
- import { t as PkDialog } from "../../chunks/pk-dialog-Ck1InIBC.js";
1
+ import { t as PkDialog } from "../../chunks/pk-dialog-BbEfvb0g.js";
2
2
  export { PkDialog };
@@ -1,2 +1,2 @@
1
- import { t as PkDialog } from "../chunks/pk-dialog-Ck1InIBC.js";
1
+ import { t as PkDialog } from "../chunks/pk-dialog-BbEfvb0g.js";
2
2
  export { PkDialog };
@@ -1,2 +1,2 @@
1
- import { t as PkDropdownItem } from "../../chunks/pk-dropdown-item-HcIUlFH1.js";
1
+ import { t as PkDropdownItem } from "../../chunks/pk-dropdown-item-BoZTGWMU.js";
2
2
  export { PkDropdownItem };
@@ -1,2 +1,2 @@
1
- import { t as PkDropdownLabel } from "../../chunks/pk-dropdown-label-DLgrmYND.js";
1
+ import { t as PkDropdownLabel } from "../../chunks/pk-dropdown-label-Da28F917.js";
2
2
  export { PkDropdownLabel };
@@ -1,2 +1,2 @@
1
- import { t as PkDropdownMenu } from "../../chunks/pk-dropdown-menu-r5wgkvmZ.js";
1
+ import { t as PkDropdownMenu } from "../../chunks/pk-dropdown-menu-CfZc7dIz.js";
2
2
  export { PkDropdownMenu };
@@ -1,6 +1,5 @@
1
- import { n as PkElement, t as __decorate } from "../../chunks/decorate-W02hmVTt.js";
1
+ import { n as PkElement, s as customElement, t as __decorate } from "../../chunks/decorate-R0X811qp.js";
2
2
  import { css, html } from "lit";
3
- import { customElement } from "lit/decorators.js";
4
3
  //#region src/components/dropdown-menu/pk-dropdown-separator.ts
5
4
  var PkDropdownSeparator = class PkDropdownSeparator extends PkElement {
6
5
  static {
@@ -1 +1 @@
1
- {"version":3,"file":"pk-dropdown-separator.js","names":[],"sources":["../../../src/components/dropdown-menu/pk-dropdown-separator.ts"],"sourcesContent":["import { css, html } from 'lit';\nimport { customElement } from 'lit/decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\n\n/** Visual separator between dropdown items. */\n@customElement('pk-dropdown-separator')\nexport class PkDropdownSeparator extends PkElement {\n static override styles = css`\n @layer pk-component {\n :host {\n display: block;\n }\n\n hr {\n display: block;\n height: 1px;\n margin: 4px 0;\n border: 0;\n padding: 0;\n background: var(--pk-color-slate-200);\n }\n }\n `;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'separator');\n }\n\n override render() {\n return html`<hr part=\"base\" />`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-dropdown-separator': PkDropdownSeparator;\n }\n}\n"],"mappings":";;;;AAOO,IAAA,sBAAA,MAAM,4BAA4B,UAAU;;gBACtB,GAAG;;;;;;;;;;;;;;;;;CAiB5B,oBAAmC;AAC/B,QAAM,mBAAmB;AACzB,OAAK,aAAa,QAAQ,YAAY;;CAG1C,SAAkB;AACd,SAAO,IAAI;;;kCAzBlB,cAAc,wBAAwB,CAAA,EAAA,oBAAA"}
1
+ {"version":3,"file":"pk-dropdown-separator.js","names":[],"sources":["../../../src/components/dropdown-menu/pk-dropdown-separator.ts"],"sourcesContent":["import { css, html } from 'lit';\nimport { customElement } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\n\n/** Visual separator between dropdown items. */\n@customElement('pk-dropdown-separator')\nexport class PkDropdownSeparator extends PkElement {\n static override styles = css`\n @layer pk-component {\n :host {\n display: block;\n }\n\n hr {\n display: block;\n height: 1px;\n margin: 4px 0;\n border: 0;\n padding: 0;\n background: var(--pk-color-slate-200);\n }\n }\n `;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'separator');\n }\n\n override render() {\n return html`<hr part=\"base\" />`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-dropdown-separator': PkDropdownSeparator;\n }\n}\n"],"mappings":";;;AAOO,IAAA,sBAAA,MAAM,4BAA4B,UAAU;;gBACtB,GAAG;;;;;;;;;;;;;;;;;CAiB5B,oBAAmC;AAC/B,QAAM,mBAAmB;AACzB,OAAK,aAAa,QAAQ,YAAY;;CAG1C,SAAkB;AACd,SAAO,IAAI;;;kCAzBlB,cAAc,wBAAwB,CAAA,EAAA,oBAAA"}
@@ -1,5 +1,5 @@
1
- import { t as PkDropdownItem } from "../chunks/pk-dropdown-item-HcIUlFH1.js";
2
- import { t as PkDropdownMenu } from "../chunks/pk-dropdown-menu-r5wgkvmZ.js";
3
- import { t as PkDropdownLabel } from "../chunks/pk-dropdown-label-DLgrmYND.js";
1
+ import { t as PkDropdownItem } from "../chunks/pk-dropdown-item-BoZTGWMU.js";
2
+ import { t as PkDropdownMenu } from "../chunks/pk-dropdown-menu-CfZc7dIz.js";
3
+ import { t as PkDropdownLabel } from "../chunks/pk-dropdown-label-Da28F917.js";
4
4
  import { PkDropdownSeparator } from "./dropdown-menu/pk-dropdown-separator.js";
5
5
  export { PkDropdownItem, PkDropdownLabel, PkDropdownMenu, PkDropdownSeparator };
@@ -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":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAG1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAGnF,OAAO,wBAAwB,CAAC;AAChC,OAAO,4BAA4B,CAAC;AACpC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,4BAA4B,CAAC;AACpC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,sCAAsC,CAAC;AAC9C,OAAO,sCAAsC,CAAC;AAC9C,OAAO,sBAAsB,CAAC;AAC9B,OAAO,kCAAkC,CAAC;AAC1C,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAChC,OAAO,4BAA4B,CAAC;AACpC,OAAO,kCAAkC,CAAC;AAG1C,OAAO,EAaH,KAAK,qBAAqB,EAE1B,KAAK,8BAA8B,EACnC,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAE7B,KAAK,kBAAkB,EAG1B,MAAM,2BAA2B,CAAC;AA4BnC,YAAY,EACR,qBAAqB,EACrB,yBAAyB,EACzB,8BAA8B,EAC9B,2BAA2B,EAC3B,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,GAC7B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACH,qBAAqB,EACrB,cAAc,EACd,SAAS,GACZ,MAAM,2BAA2B,CAAC;AAEnC;;;;;;;GAOG;AACH,qBACa,eAAgB,SAAQ,uBAAuB;IACxD,OAAgB,MAAM,0BAAyB;IAE/C,WAAoB,UAAU,2CAE7B;IAGD,OAAO,EAAE,qBAAqB,EAAE,CAAM;IAGtC,IAAI,EAAE,kBAAkB,EAAE,CAAM;IAGhC,QAAQ,UAAQ;IAGhB,WAAW,UAAQ;IAGnB,YAAY,UAAQ;IAGpB,WAAW,SAAM;IAEjB;;;OAGG;IAEH,SAAS,SAAM;IAEf,+FAA+F;IAE/F,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,CAAM;IAEnD,8DAA8D;IAE9D,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IAE7C;;;OAGG;IAEH,YAAY,EAAE,2BAA2B,GAAG,IAAI,CAAQ;IAExD,kFAAkF;IAElF,SAAS,EAAE,wBAAwB,GAAG,IAAI,CAAQ;IAElD;;;OAGG;IAEH,eAAe,EAAE,8BAA8B,GAAG,IAAI,CAAQ;IAG9D,OAAO,CAAC,YAAY,CAA4B;IAEhD;;;OAGG;IAEH,OAAO,CAAC,QAAQ,CAAS;IAEzB,oFAAoF;IACpF,OAAO,CAAC,kBAAkB,CAAwC;IAElE,OAAO,CAAC,aAAa,CAIlB;IAEH,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,YAAY,CAA8C;IAClE,mGAAmG;IACnG,OAAO,CAAC,eAAe,CAAM;cAEV,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAwBnD,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;cAKjC,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO;IAWxD,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAatC,oBAAoB,IAAI,IAAI;IAOrC,8FAA8F;IAC9F,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,OAAO,KAAK,YAAY,GAIvB;IAED,OAAO,KAAK,gBAAgB,GAE3B;IAED,OAAO,KAAK,iBAAiB,GAG5B;IAED,OAAO,CAAC,SAAS;IAQjB;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAcxE,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,0BAA0B;cAiCf,aAAa,IAAI,IAAI;cAKrB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI;IAejF;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,UAAU;IAuGlB,OAAO,CAAC,MAAM;IAqBd,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,aAAa;IAmBrB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,gBAAgB;IAgDxB,OAAO,CAAC,UAAU;IAiLlB,OAAO,CAAC,oBAAoB;IA4C5B,OAAO,CAAC,SAAS;IAwGR,MAAM,IAAI,cAAc;CAsDpC;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,mBAAmB,EAAE,eAAe,CAAC;KACxC;CACJ"}
1
+ {"version":3,"file":"pk-editable-table.d.ts","sourceRoot":"","sources":["../../../src/components/editable-table/pk-editable-table.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAG1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAGnF,OAAO,wBAAwB,CAAC;AAChC,OAAO,4BAA4B,CAAC;AACpC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,4BAA4B,CAAC;AACpC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,sCAAsC,CAAC;AAC9C,OAAO,sCAAsC,CAAC;AAC9C,OAAO,sBAAsB,CAAC;AAC9B,OAAO,kCAAkC,CAAC;AAC1C,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAChC,OAAO,4BAA4B,CAAC;AACpC,OAAO,kCAAkC,CAAC;AAG1C,OAAO,EAkBH,KAAK,qBAAqB,EAE1B,KAAK,8BAA8B,EACnC,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAE7B,KAAK,kBAAkB,EAG1B,MAAM,2BAA2B,CAAC;AA4BnC,YAAY,EACR,qBAAqB,EACrB,yBAAyB,EACzB,8BAA8B,EAC9B,2BAA2B,EAC3B,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,GAC7B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACH,qBAAqB,EACrB,cAAc,EACd,SAAS,GACZ,MAAM,2BAA2B,CAAC;AAEnC;;;;;;;GAOG;AACH,qBACa,eAAgB,SAAQ,uBAAuB;IACxD,OAAgB,MAAM,0BAAyB;IAE/C,WAAoB,UAAU,2CAE7B;IAGD,OAAO,EAAE,qBAAqB,EAAE,CAAM;IAGtC,IAAI,EAAE,kBAAkB,EAAE,CAAM;IAGhC,QAAQ,UAAQ;IAGhB,WAAW,UAAQ;IAGnB,YAAY,UAAQ;IAEpB;;;OAGG;IAEH,WAAW,UAAQ;IAEnB;;;OAGG;IAEH,OAAO,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG9B,WAAW,SAAM;IAEjB;;;OAGG;IAEH,SAAS,SAAM;IAEf,+FAA+F;IAE/F,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,CAAM;IAEnD,8DAA8D;IAE9D,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IAE7C;;;OAGG;IAEH,YAAY,EAAE,2BAA2B,GAAG,IAAI,CAAQ;IAExD,kFAAkF;IAElF,SAAS,EAAE,wBAAwB,GAAG,IAAI,CAAQ;IAElD;;;OAGG;IAEH,eAAe,EAAE,8BAA8B,GAAG,IAAI,CAAQ;IAG9D,OAAO,CAAC,YAAY,CAA4B;IAEhD;;;OAGG;IAEH,OAAO,CAAC,QAAQ,CAAS;IAEzB,oFAAoF;IACpF,OAAO,CAAC,kBAAkB,CAAwC;IAElE,OAAO,CAAC,aAAa,CAIlB;IAEH,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,YAAY,CAA8C;IAClE,mGAAmG;IACnG,OAAO,CAAC,eAAe,CAAM;cAEV,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAwBnD,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;cAKjC,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO;IAWxD,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAatC,oBAAoB,IAAI,IAAI;IAOrC,8FAA8F;IAC9F,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,OAAO,KAAK,YAAY,GAIvB;IAED,OAAO,KAAK,gBAAgB,GAE3B;IAED,OAAO,KAAK,iBAAiB,GAG5B;IAED,OAAO,CAAC,SAAS;IAQjB;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAcxE,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,0BAA0B;cAiCf,aAAa,IAAI,IAAI;cAKrB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI;IAejF;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,UAAU;IAuGlB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,MAAM;IAWd,0FAA0F;IAC1F,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,SAAS;IAUjB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAoDxB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IA8ErB,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,aAAa;IAmBrB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,gBAAgB;IAgDxB,OAAO,CAAC,UAAU;IAiLlB,OAAO,CAAC,oBAAoB;IA4C5B,OAAO,CAAC,SAAS;IA2HR,MAAM,IAAI,cAAc;CAuDpC;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,mBAAmB,EAAE,eAAe,CAAC;KACxC;CACJ"}
@@ -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-Cn4WXqAo.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-Cn4WXqAo.js";
2
2
  export { BUILTIN_COLUMN_TYPES, PkEditableTable, getCustomCellSlotName, isCustomColumn, nextRowId };
@@ -1,2 +1,2 @@
1
- import { t as PkField } from "../../chunks/pk-field-JFP24j4o.js";
1
+ import { t as PkField } from "../../chunks/pk-field-NL4KdFZC.js";
2
2
  export { PkField };
@@ -1,2 +1,2 @@
1
- import { t as PkField } from "../chunks/pk-field-JFP24j4o.js";
1
+ import { t as PkField } from "../chunks/pk-field-NL4KdFZC.js";
2
2
  export { PkField };
@@ -1,6 +1,5 @@
1
- import { n as PkElement, t as __decorate } from "../../chunks/decorate-W02hmVTt.js";
1
+ import { i as property, n as PkElement, s as customElement, t as __decorate } from "../../chunks/decorate-R0X811qp.js";
2
2
  import { css, html, nothing } from "lit";
3
- import { customElement, property } from "lit/decorators.js";
4
3
  import { unsafeSVG } from "lit/directives/unsafe-svg.js";
5
4
  import { getIcon, iconToSvg, subscribeIconRegistry } from "@verbb/plugin-kit-icons";
6
5
  //#region src/components/icon/pk-icon.ts
@@ -1 +1 @@
1
- {"version":3,"file":"pk-icon.js","names":[],"sources":["../../../src/components/icon/pk-icon.ts"],"sourcesContent":["import { html, css, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { getIcon, iconToSvg, subscribeIconRegistry } from '@verbb/plugin-kit-icons';\n\nimport { PkElement } from '../../base/pk-element.js';\n\n/**\n * Standalone icon element backed by the Plugin Kit raw-SVG icon set.\n *\n * The name registry starts empty — consumers must {@link registerIcons}\n * (or import `@verbb/plugin-kit-icons/all.js`) before `<pk-icon icon=\"…\">` resolves.\n * Registrations are page-global across bundled Plugin Kit copies (Craft multi-plugin CP).\n *\n * Sizing follows `font-size` (defaults to `1em`), colour follows `currentColor`,\n * so consumers style it like text:\n *\n * ```html\n * <pk-icon icon=\"chevron-down\"></pk-icon>\n * <pk-icon icon=\"pen\" label=\"Edit\" style=\"font-size: 20px; color: #6b7280\"></pk-icon>\n * ```\n *\n * Prefer the `icon` attribute over `name`: some server-side form renderers\n * (e.g. Craft CMS `Html::namespaceInputs()`) rewrite every `name=\"…\"` attribute\n * in a form to namespace it, which would corrupt the icon lookup. `icon` is left\n * untouched. `name` is still supported for non-form contexts / back-compat.\n */\n@customElement('pk-icon')\nexport class PkIcon extends PkElement {\n static override styles = css`\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: none;\n /* Square em box + slight baseline nudge for inline text. Flex\n * parents (e.g. button slots) should zero vertical-align. */\n width: 1em;\n height: 1em;\n line-height: 1;\n vertical-align: -0.125em;\n }\n\n svg {\n display: block;\n width: 100%;\n height: 100%;\n fill: currentColor;\n /* Allow intentional path overhang past the icon canvas. */\n overflow: visible;\n }\n `;\n\n /**\n * Icon name (kebab-case), e.g. `chevron-down`, `gear`, `xmark`.\n * Namespacing-safe alternative to `name` — use this inside CMS form markup.\n */\n @property()\n icon = '';\n\n /**\n * Icon name (kebab-case). Back-compat / non-form alias for `icon`.\n * Avoid in server-namespaced forms, where `name` attributes get rewritten.\n */\n @property()\n name = '';\n\n /**\n * Accessible label. When set the icon is exposed as an image with a title;\n * otherwise it is hidden from assistive technology.\n */\n @property()\n label?: string;\n\n private unsubscribeRegistry: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n // Later plugins may register glyphs after this host upgraded — re-resolve.\n this.unsubscribeRegistry = subscribeIconRegistry(() => {\n this.requestUpdate();\n });\n }\n\n override disconnectedCallback(): void {\n this.unsubscribeRegistry?.();\n this.unsubscribeRegistry = null;\n super.disconnectedCallback();\n }\n\n override render() {\n const icon = getIcon(this.icon || this.name);\n\n if (!icon) {\n return nothing;\n }\n\n return html`${unsafeSVG(iconToSvg(icon, { title: this.label }))}`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-icon': PkIcon;\n }\n}\n"],"mappings":";;;;;;AA4BO,IAAA,SAAA,MAAM,eAAe,UAAU;;;cA8B3B;cAOA;6BAS4C;;;gBA7C1B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CA+C5B,oBAAmC;AAC/B,QAAM,mBAAmB;AAGzB,OAAK,sBAAsB,4BAA4B;AACnD,QAAK,eAAe;IACtB;;CAGN,uBAAsC;AAClC,OAAK,uBAAuB;AAC5B,OAAK,sBAAsB;AAC3B,QAAM,sBAAsB;;CAGhC,SAAkB;EACd,MAAM,OAAO,QAAQ,KAAK,QAAQ,KAAK,KAAK;AAE5C,MAAI,CAAC,KACD,QAAO;AAGX,SAAO,IAAI,GAAG,UAAU,UAAU,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC;;;YAzClE,UAAU,CAAA,EAAA,OAAA,WAAA,QAAA,KAAA,EAAA;YAOV,UAAU,CAAA,EAAA,OAAA,WAAA,QAAA,KAAA,EAAA;YAOV,UAAU,CAAA,EAAA,OAAA,WAAA,SAAA,KAAA,EAAA;qBA5Cd,cAAc,UAAU,CAAA,EAAA,OAAA"}
1
+ {"version":3,"file":"pk-icon.js","names":[],"sources":["../../../src/components/icon/pk-icon.ts"],"sourcesContent":["import { html, css, nothing } from 'lit';\nimport { customElement, property } from '../../decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { getIcon, iconToSvg, subscribeIconRegistry } from '@verbb/plugin-kit-icons';\n\nimport { PkElement } from '../../base/pk-element.js';\n\n/**\n * Standalone icon element backed by the Plugin Kit raw-SVG icon set.\n *\n * The name registry starts empty — consumers must {@link registerIcons}\n * (or import `@verbb/plugin-kit-icons/all.js`) before `<pk-icon icon=\"…\">` resolves.\n * Registrations are page-global across bundled Plugin Kit copies (Craft multi-plugin CP).\n *\n * Sizing follows `font-size` (defaults to `1em`), colour follows `currentColor`,\n * so consumers style it like text:\n *\n * ```html\n * <pk-icon icon=\"chevron-down\"></pk-icon>\n * <pk-icon icon=\"pen\" label=\"Edit\" style=\"font-size: 20px; color: #6b7280\"></pk-icon>\n * ```\n *\n * Prefer the `icon` attribute over `name`: some server-side form renderers\n * (e.g. Craft CMS `Html::namespaceInputs()`) rewrite every `name=\"…\"` attribute\n * in a form to namespace it, which would corrupt the icon lookup. `icon` is left\n * untouched. `name` is still supported for non-form contexts / back-compat.\n */\n@customElement('pk-icon')\nexport class PkIcon extends PkElement {\n static override styles = css`\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: none;\n /* Square em box + slight baseline nudge for inline text. Flex\n * parents (e.g. button slots) should zero vertical-align. */\n width: 1em;\n height: 1em;\n line-height: 1;\n vertical-align: -0.125em;\n }\n\n svg {\n display: block;\n width: 100%;\n height: 100%;\n fill: currentColor;\n /* Allow intentional path overhang past the icon canvas. */\n overflow: visible;\n }\n `;\n\n /**\n * Icon name (kebab-case), e.g. `chevron-down`, `gear`, `xmark`.\n * Namespacing-safe alternative to `name` — use this inside CMS form markup.\n */\n @property()\n icon = '';\n\n /**\n * Icon name (kebab-case). Back-compat / non-form alias for `icon`.\n * Avoid in server-namespaced forms, where `name` attributes get rewritten.\n */\n @property()\n name = '';\n\n /**\n * Accessible label. When set the icon is exposed as an image with a title;\n * otherwise it is hidden from assistive technology.\n */\n @property()\n label?: string;\n\n private unsubscribeRegistry: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n // Later plugins may register glyphs after this host upgraded — re-resolve.\n this.unsubscribeRegistry = subscribeIconRegistry(() => {\n this.requestUpdate();\n });\n }\n\n override disconnectedCallback(): void {\n this.unsubscribeRegistry?.();\n this.unsubscribeRegistry = null;\n super.disconnectedCallback();\n }\n\n override render() {\n const icon = getIcon(this.icon || this.name);\n\n if (!icon) {\n return nothing;\n }\n\n return html`${unsafeSVG(iconToSvg(icon, { title: this.label }))}`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-icon': PkIcon;\n }\n}\n"],"mappings":";;;;;AA4BO,IAAA,SAAA,MAAM,eAAe,UAAU;;;cA8B3B;cAOA;6BAS4C;;;gBA7C1B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CA+C5B,oBAAmC;AAC/B,QAAM,mBAAmB;AAGzB,OAAK,sBAAsB,4BAA4B;AACnD,QAAK,eAAe;IACtB;;CAGN,uBAAsC;AAClC,OAAK,uBAAuB;AAC5B,OAAK,sBAAsB;AAC3B,QAAM,sBAAsB;;CAGhC,SAAkB;EACd,MAAM,OAAO,QAAQ,KAAK,QAAQ,KAAK,KAAK;AAE5C,MAAI,CAAC,KACD,QAAO;AAGX,SAAO,IAAI,GAAG,UAAU,UAAU,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC;;;YAzClE,UAAU,CAAA,EAAA,OAAA,WAAA,QAAA,KAAA,EAAA;YAOV,UAAU,CAAA,EAAA,OAAA,WAAA,QAAA,KAAA,EAAA;YAOV,UAAU,CAAA,EAAA,OAAA,WAAA,SAAA,KAAA,EAAA;qBA5Cd,cAAc,UAAU,CAAA,EAAA,OAAA"}
@@ -1,2 +1,2 @@
1
- import { t as PkInput } from "../../chunks/pk-input-naIRPWGC.js";
1
+ import { t as PkInput } from "../../chunks/pk-input-DDkIXOkt.js";
2
2
  export { PkInput };
@@ -1,2 +1,2 @@
1
- import { t as PkInputGroupAddon } from "../../chunks/pk-input-group-addon-DXbNbsfY.js";
1
+ import { t as PkInputGroupAddon } from "../../chunks/pk-input-group-addon-B0StOmTJ.js";
2
2
  export { PkInputGroupAddon };
@@ -1,2 +1,2 @@
1
- import { t as PkInputGroupButton } from "../../chunks/pk-input-group-button-XOfVLqGO.js";
1
+ import { t as PkInputGroupButton } from "../../chunks/pk-input-group-button-CnKajvsP.js";
2
2
  export { PkInputGroupButton };
@@ -1,2 +1,2 @@
1
- import { t as PkInputGroupInput } from "../../chunks/pk-input-group-input-CSmR5vdY.js";
1
+ import { t as PkInputGroupInput } from "../../chunks/pk-input-group-input-mllffsjQ.js";
2
2
  export { PkInputGroupInput };
@@ -1,2 +1,2 @@
1
- import { t as PkInputGroupText } from "../../chunks/pk-input-group-text-C6ekhtff.js";
1
+ import { t as PkInputGroupText } from "../../chunks/pk-input-group-text-DvaPJvh2.js";
2
2
  export { PkInputGroupText };
@@ -1,2 +1,2 @@
1
- import { t as PkInputGroupTextarea } from "../../chunks/pk-input-group-textarea-DALr3pdU.js";
1
+ import { t as PkInputGroupTextarea } from "../../chunks/pk-input-group-textarea-CqYv8tUQ.js";
2
2
  export { PkInputGroupTextarea };
@@ -1,2 +1,2 @@
1
- import { t as PkInputGroup } from "../../chunks/pk-input-group-CGHQKrt8.js";
1
+ import { t as PkInputGroup } from "../../chunks/pk-input-group-CRPSBFhX.js";
2
2
  export { PkInputGroup };
@@ -1,7 +1,7 @@
1
- import { t as PkInputGroup } from "../chunks/pk-input-group-CGHQKrt8.js";
2
- import { t as PkInputGroupAddon } from "../chunks/pk-input-group-addon-DXbNbsfY.js";
3
- import { t as PkInputGroupButton } from "../chunks/pk-input-group-button-XOfVLqGO.js";
4
- import { t as PkInputGroupInput } from "../chunks/pk-input-group-input-CSmR5vdY.js";
5
- import { t as PkInputGroupText } from "../chunks/pk-input-group-text-C6ekhtff.js";
6
- import { t as PkInputGroupTextarea } from "../chunks/pk-input-group-textarea-DALr3pdU.js";
1
+ import { t as PkInputGroup } from "../chunks/pk-input-group-CRPSBFhX.js";
2
+ import { t as PkInputGroupAddon } from "../chunks/pk-input-group-addon-B0StOmTJ.js";
3
+ import { t as PkInputGroupButton } from "../chunks/pk-input-group-button-CnKajvsP.js";
4
+ import { t as PkInputGroupInput } from "../chunks/pk-input-group-input-mllffsjQ.js";
5
+ import { t as PkInputGroupText } from "../chunks/pk-input-group-text-DvaPJvh2.js";
6
+ import { t as PkInputGroupTextarea } from "../chunks/pk-input-group-textarea-CqYv8tUQ.js";
7
7
  export { PkInputGroup, PkInputGroupAddon, PkInputGroupButton, PkInputGroupInput, PkInputGroupText, PkInputGroupTextarea };
@@ -1,2 +1,2 @@
1
- import { t as PkInput } from "../chunks/pk-input-naIRPWGC.js";
1
+ import { t as PkInput } from "../chunks/pk-input-DDkIXOkt.js";
2
2
  export { PkInput };
@@ -1,2 +1,2 @@
1
- import { t as PkLightswitch } from "../../chunks/pk-lightswitch-B-rLflNq.js";
1
+ import { t as PkLightswitch } from "../../chunks/pk-lightswitch-DI1BeCmA.js";
2
2
  export { PkLightswitch };
@@ -1,2 +1,2 @@
1
- import { t as PkLightswitch } from "../chunks/pk-lightswitch-B-rLflNq.js";
1
+ import { t as PkLightswitch } from "../chunks/pk-lightswitch-DI1BeCmA.js";
2
2
  export { PkLightswitch };
@@ -1,2 +1,2 @@
1
- import { t as PkPopover } from "../../chunks/pk-popover-G3ojheBD.js";
1
+ import { t as PkPopover } from "../../chunks/pk-popover-duyNosk2.js";
2
2
  export { PkPopover };
@@ -1,2 +1,2 @@
1
- import { t as PkPopover } from "../chunks/pk-popover-G3ojheBD.js";
1
+ import { t as PkPopover } from "../chunks/pk-popover-duyNosk2.js";
2
2
  export { PkPopover };
@@ -1,2 +1,2 @@
1
- import { t as PkPopup } from "../../chunks/pk-popup-CgiXok-U.js";
1
+ import { t as PkPopup } from "../../chunks/pk-popup-B9AgBC2V.js";
2
2
  export { PkPopup };
@@ -1,2 +1,2 @@
1
- import { t as PkPopup } from "../chunks/pk-popup-CgiXok-U.js";
1
+ import { t as PkPopup } from "../chunks/pk-popup-B9AgBC2V.js";
2
2
  export { PkPopup };
@@ -1,2 +1,2 @@
1
- import { t as PkRadioGroup } from "../../chunks/pk-radio-group-BazmLDvl.js";
1
+ import { t as PkRadioGroup } from "../../chunks/pk-radio-group-BRJIjOsR.js";
2
2
  export { PkRadioGroup };
@@ -1,2 +1,2 @@
1
- import { t as PkRadio } from "../../chunks/pk-radio-CDfhOW8L.js";
1
+ import { t as PkRadio } from "../../chunks/pk-radio-BK4D2Htu.js";
2
2
  export { PkRadio };
@@ -1,3 +1,3 @@
1
- import { t as PkRadio } from "../chunks/pk-radio-CDfhOW8L.js";
2
- import { t as PkRadioGroup } from "../chunks/pk-radio-group-BazmLDvl.js";
1
+ import { t as PkRadio } from "../chunks/pk-radio-BK4D2Htu.js";
2
+ import { t as PkRadioGroup } from "../chunks/pk-radio-group-BRJIjOsR.js";
3
3
  export { PkRadio, PkRadioGroup };
@@ -1,2 +1,2 @@
1
- import { t as PkScrollArea } from "../../chunks/pk-scroll-area-BjU7-vZX.js";
1
+ import { t as PkScrollArea } from "../../chunks/pk-scroll-area-BR6ckorh.js";
2
2
  export { PkScrollArea };
@@ -1,2 +1,2 @@
1
- import { t as PkScrollArea } from "../chunks/pk-scroll-area-BjU7-vZX.js";
1
+ import { t as PkScrollArea } from "../chunks/pk-scroll-area-BR6ckorh.js";
2
2
  export { PkScrollArea };
@@ -1,2 +1,2 @@
1
- import { t as PkOptionGroup } from "../../chunks/pk-option-group-BAFSIZTa.js";
1
+ import { t as PkOptionGroup } from "../../chunks/pk-option-group-Cs6N7mlP.js";
2
2
  export { PkOptionGroup };
@@ -1,2 +1,2 @@
1
- import { t as PkOption } from "../../chunks/pk-option-Cy7oOcwF.js";
1
+ import { t as PkOption } from "../../chunks/pk-option-MGj9SKOK.js";
2
2
  export { PkOption };
@@ -1,2 +1,2 @@
1
- import { t as PkSelect } from "../../chunks/pk-select-BeMDXEC6.js";
1
+ import { t as PkSelect } from "../../chunks/pk-select-C1s0OJr0.js";
2
2
  export { PkSelect };
@@ -1,4 +1,4 @@
1
- import { t as PkOption } from "../chunks/pk-option-Cy7oOcwF.js";
2
- import { t as PkSelect } from "../chunks/pk-select-BeMDXEC6.js";
3
- import { t as PkOptionGroup } from "../chunks/pk-option-group-BAFSIZTa.js";
1
+ import { t as PkOption } from "../chunks/pk-option-MGj9SKOK.js";
2
+ import { t as PkSelect } from "../chunks/pk-select-C1s0OJr0.js";
3
+ import { t as PkOptionGroup } from "../chunks/pk-option-group-Cs6N7mlP.js";
4
4
  export { PkOption, PkOptionGroup, PkSelect };
@@ -1,2 +1,2 @@
1
- import { t as PkSeparator } from "../../chunks/pk-separator-CLb9n0FK.js";
1
+ import { t as PkSeparator } from "../../chunks/pk-separator-CHij3vEG.js";
2
2
  export { PkSeparator };
@@ -1,2 +1,2 @@
1
- import { t as PkSeparator } from "../chunks/pk-separator-CLb9n0FK.js";
1
+ import { t as PkSeparator } from "../chunks/pk-separator-CHij3vEG.js";
2
2
  export { PkSeparator };
@@ -1,2 +1,2 @@
1
- import { t as PkSpinner } from "../../chunks/pk-spinner-Blxd3SIH.js";
1
+ import { t as PkSpinner } from "../../chunks/pk-spinner-DweuYJ_Z.js";
2
2
  export { PkSpinner };
@@ -1,3 +1,3 @@
1
1
  import { n as resolveSpinnerVariant, t as getButtonSpinnerSize } from "../chunks/spinner-utils-CDfHypTv.js";
2
- import { t as PkSpinner } from "../chunks/pk-spinner-Blxd3SIH.js";
2
+ import { t as PkSpinner } from "../chunks/pk-spinner-DweuYJ_Z.js";
3
3
  export { PkSpinner, getButtonSpinnerSize, resolveSpinnerVariant };
@@ -1,2 +1,2 @@
1
- import { t as PkStatus } from "../../chunks/pk-status-7_5dEuw-.js";
1
+ import { t as PkStatus } from "../../chunks/pk-status-D1IzTSI2.js";
2
2
  export { PkStatus };
@@ -1,2 +1,2 @@
1
- import { t as PkStatus } from "../chunks/pk-status-7_5dEuw-.js";
1
+ import { t as PkStatus } from "../chunks/pk-status-D1IzTSI2.js";
2
2
  export { PkStatus };
@@ -1,2 +1,2 @@
1
- import { t as PkTabHeading } from "../../chunks/pk-tab-heading-79ZuLhXi.js";
1
+ import { t as PkTabHeading } from "../../chunks/pk-tab-heading-BV6m_sT-.js";
2
2
  export { PkTabHeading };
@@ -1,2 +1,2 @@
1
- import { t as PkTabPanel } from "../../chunks/pk-tab-panel-DdAbrOBF.js";
1
+ import { t as PkTabPanel } from "../../chunks/pk-tab-panel-C6FxQw9q.js";
2
2
  export { PkTabPanel };
@@ -1,2 +1,2 @@
1
- import { t as PkTab } from "../../chunks/pk-tab-f1OLMVXs.js";
1
+ import { t as PkTab } from "../../chunks/pk-tab-2MHunhlF.js";
2
2
  export { PkTab };
@@ -1,2 +1,2 @@
1
- import { t as PkTabs } from "../../chunks/pk-tabs-BhC5PAnO.js";
1
+ import { t as PkTabs } from "../../chunks/pk-tabs-BTE63uK9.js";
2
2
  export { PkTabs };