@pine-ds/core 3.3.0 → 3.4.0

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 (588) hide show
  1. package/components/floating-ui.dom.js +1321 -0
  2. package/components/floating-ui.dom.js.map +1 -0
  3. package/components/index.d.ts +4 -0
  4. package/components/index.js +2 -0
  5. package/components/index.js.map +1 -1
  6. package/components/index2.js +1 -1
  7. package/components/index2.js.map +1 -1
  8. package/components/mock-pds-modal.js +1 -1
  9. package/components/pds-box2.js.map +1 -1
  10. package/components/pds-chip.js.map +1 -1
  11. package/components/pds-combobox.d.ts +11 -0
  12. package/components/pds-combobox.js +1771 -0
  13. package/components/pds-combobox.js.map +1 -0
  14. package/components/pds-copytext.js +1 -1
  15. package/components/pds-divider.js +1 -1
  16. package/components/pds-dropdown-menu-item.js +1 -1
  17. package/components/pds-dropdown-menu-separator.js +1 -1
  18. package/components/pds-dropdown-menu.js +4 -1320
  19. package/components/pds-dropdown-menu.js.map +1 -1
  20. package/components/pds-icon2.js +151 -18
  21. package/components/pds-icon2.js.map +1 -1
  22. package/components/pds-image.js +2 -2
  23. package/components/pds-input.js +15 -2
  24. package/components/pds-input.js.map +1 -1
  25. package/components/pds-link2.js +2 -2
  26. package/components/pds-loader2.js +1 -1
  27. package/components/pds-modal-content.js +2 -2
  28. package/components/pds-modal-footer.js +1 -1
  29. package/components/pds-modal-header.js +1 -1
  30. package/components/pds-modal.js +2 -2
  31. package/components/pds-popover.js +1 -1
  32. package/components/pds-progress.js +1 -1
  33. package/components/pds-property.d.ts +11 -0
  34. package/components/pds-property.js +55 -0
  35. package/components/pds-property.js.map +1 -0
  36. package/components/pds-radio.js +3 -3
  37. package/components/pds-row.js +1 -1
  38. package/components/pds-select.js +11 -2
  39. package/components/pds-select.js.map +1 -1
  40. package/components/pds-sortable-item.js +1 -1
  41. package/components/pds-sortable.js +1 -1
  42. package/components/pds-switch.js +3 -3
  43. package/components/pds-tab.js +3 -3
  44. package/components/pds-table-body.js +1 -1
  45. package/components/pds-table-cell2.js +2 -2
  46. package/components/pds-table-head-cell2.js +2 -2
  47. package/components/pds-table-head.js +1 -1
  48. package/components/pds-table-row.js +1 -1
  49. package/components/pds-table.js +1 -1
  50. package/components/pds-tabpanel.js +1 -1
  51. package/components/pds-tabs.js +1 -1
  52. package/components/pds-text2.js +1 -1
  53. package/components/pds-text2.js.map +1 -1
  54. package/components/pds-textarea.js +18 -5
  55. package/components/pds-textarea.js.map +1 -1
  56. package/components/pds-toast.js +3 -3
  57. package/components/pds-tooltip.js +1 -1
  58. package/dist/cjs/floating-ui.dom-Bz4BD-cr.js +1326 -0
  59. package/dist/cjs/floating-ui.dom-Bz4BD-cr.js.map +1 -0
  60. package/dist/cjs/{index-B0qLG6KJ.js → index-BfqrB2cC.js} +3 -3
  61. package/dist/{esm-es5/index-DpOSrebJ.js.map → cjs/index-BfqrB2cC.js.map} +1 -1
  62. package/dist/cjs/loader.cjs.js +1 -1
  63. package/dist/cjs/mock-pds-modal.cjs.entry.js +1 -1
  64. package/dist/cjs/pds-accordion.cjs.entry.js +1 -1
  65. package/dist/cjs/pds-avatar.cjs.entry.js +1 -1
  66. package/dist/cjs/pds-box.cjs.entry.js.map +1 -1
  67. package/dist/cjs/pds-box.entry.cjs.js.map +1 -1
  68. package/dist/cjs/pds-button.cjs.entry.js +1 -1
  69. package/dist/cjs/pds-checkbox.cjs.entry.js +1 -1
  70. package/dist/cjs/pds-chip.cjs.entry.js +1 -1
  71. package/dist/cjs/pds-chip.cjs.entry.js.map +1 -1
  72. package/dist/cjs/pds-chip.entry.cjs.js.map +1 -1
  73. package/dist/cjs/pds-combobox.cjs.entry.js +1717 -0
  74. package/dist/cjs/pds-combobox.cjs.entry.js.map +1 -0
  75. package/dist/cjs/pds-combobox.entry.cjs.js.map +1 -0
  76. package/dist/cjs/pds-copytext.cjs.entry.js +2 -2
  77. package/dist/cjs/pds-divider.cjs.entry.js +1 -1
  78. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +1 -1
  79. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +1 -1
  80. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +4 -1320
  81. package/dist/cjs/pds-dropdown-menu.cjs.entry.js.map +1 -1
  82. package/dist/cjs/pds-dropdown-menu.entry.cjs.js.map +1 -1
  83. package/dist/cjs/pds-icon.cjs.entry.js +148 -15
  84. package/dist/cjs/pds-icon.cjs.entry.js.map +1 -1
  85. package/dist/cjs/pds-icon.entry.cjs.js.map +1 -1
  86. package/dist/cjs/pds-image.cjs.entry.js +2 -2
  87. package/dist/cjs/pds-input.cjs.entry.js +15 -3
  88. package/dist/cjs/pds-input.cjs.entry.js.map +1 -1
  89. package/dist/cjs/pds-input.entry.cjs.js.map +1 -1
  90. package/dist/cjs/pds-link.cjs.entry.js +3 -3
  91. package/dist/cjs/pds-loader.cjs.entry.js +1 -1
  92. package/dist/cjs/pds-modal-content.cjs.entry.js +2 -2
  93. package/dist/cjs/pds-modal-footer.cjs.entry.js +1 -1
  94. package/dist/cjs/pds-modal-header.cjs.entry.js +1 -1
  95. package/dist/cjs/pds-modal.cjs.entry.js +2 -2
  96. package/dist/cjs/pds-popover.cjs.entry.js +1 -1
  97. package/dist/cjs/pds-progress.cjs.entry.js +1 -1
  98. package/dist/cjs/pds-property.cjs.entry.js +24 -0
  99. package/dist/cjs/pds-property.cjs.entry.js.map +1 -0
  100. package/dist/cjs/pds-property.entry.cjs.js.map +1 -0
  101. package/dist/cjs/pds-radio.cjs.entry.js +4 -4
  102. package/dist/cjs/pds-row.cjs.entry.js +1 -1
  103. package/dist/cjs/pds-select.cjs.entry.js +12 -3
  104. package/dist/cjs/pds-select.cjs.entry.js.map +1 -1
  105. package/dist/cjs/pds-select.entry.cjs.js.map +1 -1
  106. package/dist/cjs/pds-sortable-item.cjs.entry.js +2 -2
  107. package/dist/cjs/pds-sortable.cjs.entry.js +1 -1
  108. package/dist/cjs/pds-switch.cjs.entry.js +4 -4
  109. package/dist/cjs/pds-tab.cjs.entry.js +3 -3
  110. package/dist/cjs/pds-table-body.cjs.entry.js +1 -1
  111. package/dist/cjs/pds-table-cell.cjs.entry.js +2 -2
  112. package/dist/cjs/pds-table-head-cell.cjs.entry.js +3 -3
  113. package/dist/cjs/pds-table-head.cjs.entry.js +1 -1
  114. package/dist/cjs/pds-table-row.cjs.entry.js +1 -1
  115. package/dist/cjs/pds-table.cjs.entry.js +1 -1
  116. package/dist/cjs/pds-tabpanel.cjs.entry.js +1 -1
  117. package/dist/cjs/pds-tabs.cjs.entry.js +1 -1
  118. package/dist/cjs/pds-text.cjs.entry.js +1 -1
  119. package/dist/cjs/pds-text.cjs.entry.js.map +1 -1
  120. package/dist/cjs/pds-text.entry.cjs.js.map +1 -1
  121. package/dist/cjs/pds-textarea.cjs.entry.js +18 -6
  122. package/dist/cjs/pds-textarea.cjs.entry.js.map +1 -1
  123. package/dist/cjs/pds-textarea.entry.cjs.js.map +1 -1
  124. package/dist/cjs/pds-toast.cjs.entry.js +3 -3
  125. package/dist/cjs/pds-tooltip.cjs.entry.js +1 -1
  126. package/dist/cjs/pine-core.cjs.js +1 -1
  127. package/dist/collection/collection-manifest.json +2 -0
  128. package/dist/collection/components/pds-combobox/pds-combobox.css +223 -0
  129. package/dist/collection/components/pds-combobox/pds-combobox.js +783 -0
  130. package/dist/collection/components/pds-combobox/pds-combobox.js.map +1 -0
  131. package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +194 -0
  132. package/dist/collection/components/pds-copytext/pds-copytext.js +1 -1
  133. package/dist/collection/components/pds-divider/pds-divider.js +1 -1
  134. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +1 -1
  135. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +1 -1
  136. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +1 -1
  137. package/dist/collection/components/pds-image/pds-image.js +2 -2
  138. package/dist/collection/components/pds-input/pds-input.css +18 -1
  139. package/dist/collection/components/pds-input/pds-input.js +15 -1
  140. package/dist/collection/components/pds-input/pds-input.js.map +1 -1
  141. package/dist/collection/components/pds-input/stories/pds-input.stories.js +170 -72
  142. package/dist/collection/components/pds-link/pds-link.js +2 -2
  143. package/dist/collection/components/pds-loader/pds-loader.js +1 -1
  144. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +2 -2
  145. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +1 -1
  146. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +1 -1
  147. package/dist/collection/components/pds-modal/pds-modal.js +2 -2
  148. package/dist/collection/components/pds-modal/test/mock-pds-modal.js +1 -1
  149. package/dist/collection/components/pds-popover/pds-popover.js +1 -1
  150. package/dist/collection/components/pds-progress/pds-progress.js +1 -1
  151. package/dist/collection/components/pds-property/pds-property.css +4 -0
  152. package/dist/collection/components/pds-property/pds-property.js +71 -0
  153. package/dist/collection/components/pds-property/pds-property.js.map +1 -0
  154. package/dist/collection/components/pds-property/stories/pds-property.stories.js +20 -0
  155. package/dist/collection/components/pds-radio/pds-radio.js +3 -3
  156. package/dist/collection/components/pds-row/pds-row.js +1 -1
  157. package/dist/collection/components/pds-select/pds-select.css +19 -1
  158. package/dist/collection/components/pds-select/pds-select.js +13 -1
  159. package/dist/collection/components/pds-select/pds-select.js.map +1 -1
  160. package/dist/collection/components/pds-select/stories/pds-select.stories.js +42 -0
  161. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +1 -1
  162. package/dist/collection/components/pds-sortable/pds-sortable.js +1 -1
  163. package/dist/collection/components/pds-switch/pds-switch.js +3 -3
  164. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +1 -1
  165. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +2 -2
  166. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +1 -1
  167. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +2 -2
  168. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +1 -1
  169. package/dist/collection/components/pds-table/pds-table.js +1 -1
  170. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js +3 -3
  171. package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +1 -1
  172. package/dist/collection/components/pds-tabs/pds-tabs.js +1 -1
  173. package/dist/collection/components/pds-text/pds-text.js +4 -1
  174. package/dist/collection/components/pds-text/pds-text.js.map +1 -1
  175. package/dist/collection/components/pds-textarea/pds-textarea.css +18 -0
  176. package/dist/collection/components/pds-textarea/pds-textarea.js +21 -5
  177. package/dist/collection/components/pds-textarea/pds-textarea.js.map +1 -1
  178. package/dist/collection/components/pds-textarea/stories/pds-textarea.stories.js +48 -1
  179. package/dist/collection/components/pds-toast/pds-toast.js +3 -3
  180. package/dist/collection/components/pds-tooltip/pds-tooltip.js +1 -1
  181. package/dist/docs.json +748 -57
  182. package/dist/esm/floating-ui.dom-D_FwyeSw.js +1321 -0
  183. package/dist/esm/floating-ui.dom-D_FwyeSw.js.map +1 -0
  184. package/dist/esm/{index-DpOSrebJ.js → index-CzVv99mW.js} +3 -3
  185. package/dist/{cjs/index-B0qLG6KJ.js.map → esm/index-CzVv99mW.js.map} +1 -1
  186. package/dist/esm/loader.js +1 -1
  187. package/dist/esm/mock-pds-modal.entry.js +1 -1
  188. package/dist/esm/pds-accordion.entry.js +1 -1
  189. package/dist/esm/pds-avatar.entry.js +1 -1
  190. package/dist/esm/pds-box.entry.js.map +1 -1
  191. package/dist/esm/pds-button.entry.js +1 -1
  192. package/dist/esm/pds-checkbox.entry.js +1 -1
  193. package/dist/esm/pds-chip.entry.js +1 -1
  194. package/dist/esm/pds-chip.entry.js.map +1 -1
  195. package/dist/esm/pds-combobox.entry.js +1715 -0
  196. package/dist/esm/pds-combobox.entry.js.map +1 -0
  197. package/dist/esm/pds-copytext.entry.js +2 -2
  198. package/dist/esm/pds-divider.entry.js +1 -1
  199. package/dist/esm/pds-dropdown-menu-item.entry.js +1 -1
  200. package/dist/esm/pds-dropdown-menu-separator.entry.js +1 -1
  201. package/dist/esm/pds-dropdown-menu.entry.js +2 -1318
  202. package/dist/esm/pds-dropdown-menu.entry.js.map +1 -1
  203. package/dist/esm/pds-icon.entry.js +148 -15
  204. package/dist/esm/pds-icon.entry.js.map +1 -1
  205. package/dist/esm/pds-image.entry.js +2 -2
  206. package/dist/esm/pds-input.entry.js +15 -3
  207. package/dist/esm/pds-input.entry.js.map +1 -1
  208. package/dist/esm/pds-link.entry.js +3 -3
  209. package/dist/esm/pds-loader.entry.js +1 -1
  210. package/dist/esm/pds-modal-content.entry.js +2 -2
  211. package/dist/esm/pds-modal-footer.entry.js +1 -1
  212. package/dist/esm/pds-modal-header.entry.js +1 -1
  213. package/dist/esm/pds-modal.entry.js +2 -2
  214. package/dist/esm/pds-popover.entry.js +1 -1
  215. package/dist/esm/pds-progress.entry.js +1 -1
  216. package/dist/esm/pds-property.entry.js +22 -0
  217. package/dist/esm/pds-property.entry.js.map +1 -0
  218. package/dist/esm/pds-radio.entry.js +4 -4
  219. package/dist/esm/pds-row.entry.js +1 -1
  220. package/dist/esm/pds-select.entry.js +13 -4
  221. package/dist/esm/pds-select.entry.js.map +1 -1
  222. package/dist/esm/pds-sortable-item.entry.js +2 -2
  223. package/dist/esm/pds-sortable.entry.js +1 -1
  224. package/dist/esm/pds-switch.entry.js +4 -4
  225. package/dist/esm/pds-tab.entry.js +3 -3
  226. package/dist/esm/pds-table-body.entry.js +1 -1
  227. package/dist/esm/pds-table-cell.entry.js +2 -2
  228. package/dist/esm/pds-table-head-cell.entry.js +3 -3
  229. package/dist/esm/pds-table-head.entry.js +1 -1
  230. package/dist/esm/pds-table-row.entry.js +1 -1
  231. package/dist/esm/pds-table.entry.js +1 -1
  232. package/dist/esm/pds-tabpanel.entry.js +1 -1
  233. package/dist/esm/pds-tabs.entry.js +1 -1
  234. package/dist/esm/pds-text.entry.js +1 -1
  235. package/dist/esm/pds-text.entry.js.map +1 -1
  236. package/dist/esm/pds-textarea.entry.js +18 -6
  237. package/dist/esm/pds-textarea.entry.js.map +1 -1
  238. package/dist/esm/pds-toast.entry.js +3 -3
  239. package/dist/esm/pds-tooltip.entry.js +1 -1
  240. package/dist/esm/pine-core.js +1 -1
  241. package/dist/esm-es5/floating-ui.dom-D_FwyeSw.js +2 -0
  242. package/dist/esm-es5/floating-ui.dom-D_FwyeSw.js.map +1 -0
  243. package/dist/esm-es5/{index-DpOSrebJ.js → index-CzVv99mW.js} +1 -1
  244. package/dist/{esm/index-DpOSrebJ.js.map → esm-es5/index-CzVv99mW.js.map} +1 -1
  245. package/dist/esm-es5/loader.js +1 -1
  246. package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
  247. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  248. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  249. package/dist/esm-es5/pds-box.entry.js.map +1 -1
  250. package/dist/esm-es5/pds-button.entry.js +1 -1
  251. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  252. package/dist/esm-es5/pds-chip.entry.js +1 -1
  253. package/dist/esm-es5/pds-chip.entry.js.map +1 -1
  254. package/dist/esm-es5/pds-combobox.entry.js +3 -0
  255. package/dist/esm-es5/pds-combobox.entry.js.map +1 -0
  256. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  257. package/dist/esm-es5/pds-divider.entry.js +1 -1
  258. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  259. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
  260. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  261. package/dist/esm-es5/pds-dropdown-menu.entry.js.map +1 -1
  262. package/dist/esm-es5/pds-icon.entry.js +1 -1
  263. package/dist/esm-es5/pds-icon.entry.js.map +1 -1
  264. package/dist/esm-es5/pds-image.entry.js +1 -1
  265. package/dist/esm-es5/pds-input.entry.js +1 -1
  266. package/dist/esm-es5/pds-input.entry.js.map +1 -1
  267. package/dist/esm-es5/pds-link.entry.js +1 -1
  268. package/dist/esm-es5/pds-loader.entry.js +1 -1
  269. package/dist/esm-es5/pds-modal-content.entry.js +1 -1
  270. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  271. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  272. package/dist/esm-es5/pds-modal.entry.js +1 -1
  273. package/dist/esm-es5/pds-popover.entry.js +1 -1
  274. package/dist/esm-es5/pds-progress.entry.js +1 -1
  275. package/dist/esm-es5/pds-property.entry.js +2 -0
  276. package/dist/esm-es5/pds-property.entry.js.map +1 -0
  277. package/dist/esm-es5/pds-radio.entry.js +1 -1
  278. package/dist/esm-es5/pds-row.entry.js +1 -1
  279. package/dist/esm-es5/pds-select.entry.js +1 -1
  280. package/dist/esm-es5/pds-select.entry.js.map +1 -1
  281. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  282. package/dist/esm-es5/pds-sortable.entry.js +1 -1
  283. package/dist/esm-es5/pds-switch.entry.js +1 -1
  284. package/dist/esm-es5/pds-tab.entry.js +1 -1
  285. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  286. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  287. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  288. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  289. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  290. package/dist/esm-es5/pds-table.entry.js +1 -1
  291. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  292. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  293. package/dist/esm-es5/pds-text.entry.js +1 -1
  294. package/dist/esm-es5/pds-text.entry.js.map +1 -1
  295. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  296. package/dist/esm-es5/pds-textarea.entry.js.map +1 -1
  297. package/dist/esm-es5/pds-toast.entry.js +1 -1
  298. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  299. package/dist/esm-es5/pine-core.js +1 -1
  300. package/dist/pine-core/{p-78f29270.entry.js → p-000ed179.entry.js} +2 -2
  301. package/dist/pine-core/{p-de550d9e.system.entry.js → p-0c6e9ba0.system.entry.js} +2 -2
  302. package/dist/pine-core/p-160c6806.system.entry.js +2 -0
  303. package/dist/pine-core/p-160c6806.system.entry.js.map +1 -0
  304. package/dist/pine-core/p-1e056ca3.system.entry.js +2 -0
  305. package/dist/pine-core/p-1e056ca3.system.entry.js.map +1 -0
  306. package/dist/pine-core/{p-cc21ddcc.system.entry.js → p-1ef5f46b.system.entry.js} +2 -2
  307. package/dist/pine-core/p-256d15bc.system.entry.js +2 -0
  308. package/dist/pine-core/{p-80f36506.entry.js → p-27b52fc5.entry.js} +2 -2
  309. package/dist/pine-core/{p-04195bdb.entry.js → p-2a2cd90d.entry.js} +2 -2
  310. package/dist/pine-core/{p-07f45626.entry.js → p-2f0aedfa.entry.js} +2 -2
  311. package/dist/pine-core/{p-27c0ffda.system.entry.js → p-2fbc5f8c.system.entry.js} +2 -2
  312. package/dist/pine-core/{p-b2820acd.entry.js → p-30449e82.entry.js} +2 -2
  313. package/dist/pine-core/p-307b456a.entry.js +2 -0
  314. package/dist/pine-core/p-307b456a.entry.js.map +1 -0
  315. package/dist/pine-core/{p-f6b226df.entry.js → p-31fe86a6.entry.js} +2 -2
  316. package/dist/pine-core/p-357b6dd6.system.entry.js +2 -0
  317. package/dist/pine-core/{p-fdf3a5ff.entry.js → p-36d3352a.entry.js} +2 -2
  318. package/dist/pine-core/{p-e9f004c5.entry.js → p-38248640.entry.js} +2 -2
  319. package/dist/pine-core/{p-aeaae417.system.entry.js → p-383af1d4.system.entry.js} +2 -2
  320. package/dist/pine-core/{p-f99c59a8.entry.js → p-39fbd912.entry.js} +2 -2
  321. package/dist/pine-core/p-3b43a1ea.entry.js +2 -0
  322. package/dist/pine-core/{p-a52b1413.entry.js.map → p-3b43a1ea.entry.js.map} +1 -1
  323. package/dist/pine-core/{p-5c4aceb7.entry.js → p-3bbb6fc1.entry.js} +2 -2
  324. package/dist/pine-core/p-3df372d1.entry.js +3 -0
  325. package/dist/pine-core/p-3df372d1.entry.js.map +1 -0
  326. package/dist/pine-core/{p-39a31730.system.entry.js → p-3fd658ad.system.entry.js} +2 -2
  327. package/dist/pine-core/p-447fa824.system.entry.js +2 -0
  328. package/dist/pine-core/p-447fa824.system.entry.js.map +1 -0
  329. package/dist/pine-core/p-495a206d.entry.js +2 -0
  330. package/dist/pine-core/p-495a206d.entry.js.map +1 -0
  331. package/dist/pine-core/p-4a69106a.system.entry.js +2 -0
  332. package/dist/pine-core/p-4a69106a.system.entry.js.map +1 -0
  333. package/dist/pine-core/{p-44f10d3c.entry.js → p-4d22ca40.entry.js} +2 -2
  334. package/dist/pine-core/p-5033d9e8.entry.js +2 -0
  335. package/dist/pine-core/{p-a98cda38.system.entry.js → p-5706c81b.system.entry.js} +2 -2
  336. package/dist/pine-core/p-5a1af174.entry.js +2 -0
  337. package/dist/pine-core/p-5a1af174.entry.js.map +1 -0
  338. package/dist/pine-core/{p-ddcc4932.entry.js → p-5fdbbab9.entry.js} +2 -2
  339. package/dist/pine-core/{p-78327c08.system.entry.js → p-61b7ff04.system.entry.js} +2 -2
  340. package/dist/pine-core/{p-111e7da2.system.entry.js → p-62bc2080.system.entry.js} +2 -2
  341. package/dist/pine-core/{p-fb2fb435.entry.js → p-64c897bb.entry.js} +2 -2
  342. package/dist/pine-core/{p-1d395d27.entry.js → p-667eb50e.entry.js} +2 -2
  343. package/dist/pine-core/{p-51cc93b3.entry.js → p-6d36fae0.entry.js} +2 -2
  344. package/dist/pine-core/p-6ef51211.entry.js +2 -0
  345. package/dist/pine-core/{p-Mqxw-gWj.system.js.map → p-6tdMlyau.system.js.map} +1 -1
  346. package/dist/pine-core/p-708c66c2.entry.js +2 -0
  347. package/dist/pine-core/p-708c66c2.entry.js.map +1 -0
  348. package/dist/pine-core/p-73412ca9.system.entry.js.map +1 -1
  349. package/dist/pine-core/{p-13481ef5.system.entry.js → p-7a431264.system.entry.js} +2 -2
  350. package/dist/pine-core/p-7a431264.system.entry.js.map +1 -0
  351. package/dist/pine-core/{p-5a437fcd.system.entry.js → p-7da6180d.system.entry.js} +2 -2
  352. package/dist/pine-core/{p-19c01019.entry.js → p-80246c79.entry.js} +2 -2
  353. package/dist/pine-core/{p-bf699bad.entry.js → p-822e90ee.entry.js} +2 -2
  354. package/dist/pine-core/p-822e90ee.entry.js.map +1 -0
  355. package/dist/pine-core/{p-d35b3494.entry.js → p-82388e60.entry.js} +2 -2
  356. package/dist/pine-core/p-90a8d1bd.entry.js +2 -0
  357. package/dist/pine-core/p-90a8d1bd.entry.js.map +1 -0
  358. package/dist/pine-core/{p-c1909a5d.system.entry.js → p-91520803.system.entry.js} +2 -2
  359. package/dist/pine-core/{p-ab7e4700.system.entry.js → p-982edcaf.system.entry.js} +2 -2
  360. package/dist/pine-core/p-9b8a3659.system.entry.js +2 -0
  361. package/dist/pine-core/{p-d553e05c.system.entry.js → p-9cc1844a.system.entry.js} +2 -2
  362. package/dist/pine-core/{p-ef9ed75a.system.entry.js → p-9d8bb7f7.system.entry.js} +2 -2
  363. package/dist/pine-core/{p-f46c4618.system.entry.js → p-9df7ba40.system.entry.js} +2 -2
  364. package/dist/pine-core/{p-9c01e81b.system.entry.js → p-9e22eab5.system.entry.js} +2 -2
  365. package/dist/pine-core/p-B-xQ7Q5Y.system.js.map +1 -0
  366. package/dist/pine-core/p-BHZ6CSg4.system.js.map +1 -1
  367. package/dist/pine-core/{p-A4_UN20E.system.js.map → p-BJRnZhwF.system.js.map} +1 -1
  368. package/dist/pine-core/{p-C2d75seA.system.js.map → p-BPlIGHM4.system.js.map} +1 -1
  369. package/dist/pine-core/p-BSg_Clcf.system.js.map +1 -0
  370. package/dist/pine-core/{p-B5JFBYFw.system.js.map → p-Bdnq3aMi.system.js.map} +1 -1
  371. package/dist/pine-core/{p-PkSWq78_.system.js.map → p-Bgszb25I.system.js.map} +1 -1
  372. package/dist/pine-core/{p-DeW-6a7f.system.js.map → p-BlpTiOHo.system.js.map} +1 -1
  373. package/dist/pine-core/{p-BaAcO8Mz.system.js.map → p-Bok_Wwo5.system.js.map} +1 -1
  374. package/dist/pine-core/{p-CkoeYrxa.system.js.map → p-Bpn2QYa2.system.js.map} +1 -1
  375. package/dist/pine-core/{p-D2UtaGL2.system.js.map → p-Bq1H4MPi.system.js.map} +1 -1
  376. package/dist/pine-core/p-BsL2GDnH.system.js +1 -1
  377. package/dist/pine-core/{p-UhZHDNH2.system.js.map → p-C47kwjaJ.system.js.map} +1 -1
  378. package/dist/pine-core/{p-BxBtA60x.system.js.map → p-CD40xhZg.system.js.map} +1 -1
  379. package/dist/pine-core/{p-BE1qV1Jc.system.js.map → p-CLsVcJCa.system.js.map} +1 -1
  380. package/dist/pine-core/{p-CNkajx9x.system.js.map → p-CLscfXhT.system.js.map} +1 -1
  381. package/dist/pine-core/{p-CcsZC7UR.system.js.map → p-CTJnwc4I.system.js.map} +1 -1
  382. package/dist/pine-core/p-CUHK9C55.system.js.map +1 -0
  383. package/dist/pine-core/p-CaJHqbdu.system.js.map +1 -0
  384. package/dist/pine-core/{p-BHp2IZGP.system.js.map → p-Ci1ZzxGS.system.js.map} +1 -1
  385. package/dist/pine-core/{p-BcuE4ZrB.system.js.map → p-ClrDO1lY.system.js.map} +1 -1
  386. package/dist/pine-core/{p-PPIMiuZX.system.js.map → p-Cly-fzRE.system.js.map} +1 -1
  387. package/dist/pine-core/{p-BEYGfY83.system.js.map → p-CtuIf6LK.system.js.map} +1 -1
  388. package/dist/pine-core/p-Ctwx2R4g.system.js.map +1 -0
  389. package/dist/pine-core/{p-3D0orTx_.system.js.map → p-CuHZffVk.system.js.map} +1 -1
  390. package/dist/pine-core/{p-DpOSrebJ.js → p-CzVv99mW.js} +1 -1
  391. package/dist/pine-core/{p-DpOSrebJ.js.map → p-CzVv99mW.js.map} +1 -1
  392. package/dist/pine-core/{p-CGABEyvz.system.js.map → p-D1LdgjO0.system.js.map} +1 -1
  393. package/dist/pine-core/p-DJPo1iGw.system.js.map +1 -0
  394. package/dist/pine-core/{p-BPQAcMLl.system.js.map → p-DKGUedTE.system.js.map} +1 -1
  395. package/dist/pine-core/{p-EqAbQY8l.system.js.map → p-DNqc41uY.system.js.map} +1 -1
  396. package/dist/pine-core/{p-CNYB6FL-.system.js.map → p-DQCWs_Ih.system.js.map} +1 -1
  397. package/dist/pine-core/p-DX9uSGoE.system.js.map +1 -0
  398. package/dist/pine-core/p-D_FwyeSw.js +2 -0
  399. package/dist/pine-core/p-D_FwyeSw.js.map +1 -0
  400. package/dist/pine-core/{p-DyDReOdO.system.js → p-DiBM9O5Q.system.js} +1 -1
  401. package/dist/pine-core/{p-DyDReOdO.system.js.map → p-DiBM9O5Q.system.js.map} +1 -1
  402. package/dist/pine-core/{p--YvWqEjm.system.js.map → p-DwwM3-D4.system.js.map} +1 -1
  403. package/dist/pine-core/{p-CS2nVL5p.system.js.map → p-DxydR7R6.system.js.map} +1 -1
  404. package/dist/pine-core/{p-ClVQjta4.system.js.map → p-Gn2xhxDz.system.js.map} +1 -1
  405. package/dist/pine-core/{p-CTPMEWZT.system.js.map → p-PuPjQNmU.system.js.map} +1 -1
  406. package/dist/pine-core/{p-BISuGf0f.system.js.map → p-PwBWYqtO.system.js.map} +1 -1
  407. package/dist/pine-core/{p-DVhX1_nD.system.js.map → p-U_efBpHV.system.js.map} +1 -1
  408. package/dist/pine-core/p-ZCkmy1Gu.system.js +2 -0
  409. package/dist/pine-core/p-ZCkmy1Gu.system.js.map +1 -0
  410. package/dist/pine-core/{p-86329612.entry.js → p-a4d19fb1.entry.js} +2 -2
  411. package/dist/pine-core/p-af5c9fbd.system.entry.js +2 -0
  412. package/dist/pine-core/{p-10e2feff.entry.js → p-b214c043.entry.js} +2 -2
  413. package/dist/pine-core/{p-8b6b0db7.entry.js → p-b5dc7a18.entry.js} +2 -2
  414. package/dist/pine-core/p-b5dc7a18.entry.js.map +1 -0
  415. package/dist/pine-core/{p-60fbeb1c.entry.js → p-b6d18604.entry.js} +2 -2
  416. package/dist/pine-core/{p-DgTp_KeO.system.js.map → p-b6lYO9O3.system.js.map} +1 -1
  417. package/dist/pine-core/{p-d6d453d8.system.entry.js → p-b93825c4.system.entry.js} +2 -2
  418. package/dist/pine-core/{p-4b2aab79.system.entry.js → p-c5a7c8e9.system.entry.js} +2 -2
  419. package/dist/pine-core/{p-6a7936e7.system.entry.js → p-c5da4a97.system.entry.js} +2 -2
  420. package/dist/pine-core/p-c93786f1.system.entry.js +2 -0
  421. package/dist/pine-core/{p-959c8247.system.entry.js → p-cc15bf6c.system.entry.js} +2 -2
  422. package/dist/pine-core/p-d0ec666b.entry.js +2 -0
  423. package/dist/pine-core/p-d21156cf.entry.js +2 -0
  424. package/dist/pine-core/p-d21156cf.entry.js.map +1 -0
  425. package/dist/pine-core/p-d2d6b3a6.system.entry.js +2 -0
  426. package/dist/pine-core/p-d2d6b3a6.system.entry.js.map +1 -0
  427. package/dist/pine-core/{p-942fa145.system.entry.js → p-d451c7b5.system.entry.js} +2 -2
  428. package/dist/pine-core/{p-065208a1.system.entry.js → p-d64527b2.system.entry.js} +2 -2
  429. package/dist/pine-core/p-d64527b2.system.entry.js.map +1 -0
  430. package/dist/pine-core/{p-0a87e2fc.system.entry.js → p-d6b1f60d.system.entry.js} +2 -2
  431. package/dist/pine-core/{p-d28768d1.entry.js → p-d989287d.entry.js} +2 -2
  432. package/dist/pine-core/{p-a556a328.system.entry.js → p-e0a35811.system.entry.js} +2 -2
  433. package/dist/pine-core/{p-7bb3a5d4.system.entry.js → p-e0a6ba6f.system.entry.js} +2 -2
  434. package/dist/pine-core/{p-c5e1ed09.system.entry.js → p-e416f7a8.system.entry.js} +2 -2
  435. package/dist/pine-core/{p-c551191a.system.entry.js → p-e53547e2.system.entry.js} +2 -2
  436. package/dist/pine-core/p-e68dd704.system.entry.js +2 -0
  437. package/dist/pine-core/p-e68dd704.system.entry.js.map +1 -0
  438. package/dist/pine-core/{p-d0adaca0.system.entry.js → p-e7322ff9.system.entry.js} +2 -2
  439. package/dist/pine-core/{p-79cb7835.system.entry.js → p-e8a4eafa.system.entry.js} +2 -2
  440. package/dist/pine-core/{p-96e9774e.system.entry.js → p-ec1c3452.system.entry.js} +2 -2
  441. package/dist/pine-core/{p-76e35041.entry.js → p-ee0117a2.entry.js} +2 -2
  442. package/dist/pine-core/{p-833b2170.system.entry.js → p-eef645bd.system.entry.js} +2 -2
  443. package/dist/pine-core/{p-8f06b020.entry.js → p-ef08f005.entry.js} +2 -2
  444. package/dist/pine-core/p-f256dd8a.entry.js.map +1 -1
  445. package/dist/pine-core/{p-0a11384e.entry.js → p-f29baa16.entry.js} +2 -2
  446. package/dist/pine-core/{p-2007a0b5.entry.js → p-f30b1479.entry.js} +2 -2
  447. package/dist/pine-core/p-f455deb5.entry.js +2 -0
  448. package/dist/pine-core/{p-8180b641.entry.js → p-f7c02b89.entry.js} +2 -2
  449. package/dist/pine-core/p-f9005ac9.entry.js +2 -0
  450. package/dist/pine-core/p-faaa1caa.system.entry.js +4 -0
  451. package/dist/pine-core/p-faaa1caa.system.entry.js.map +1 -0
  452. package/dist/pine-core/{p-99b5e1a5.entry.js → p-fd3b7077.entry.js} +2 -2
  453. package/dist/pine-core/{p-3ea415b0.entry.js → p-fe73a67f.entry.js} +2 -2
  454. package/dist/pine-core/{p-BwHnCFqU.system.js.map → p-ipxZYSGJ.system.js.map} +1 -1
  455. package/dist/pine-core/p-lWwPttyv.system.js.map +1 -0
  456. package/dist/pine-core/{p-CIc_XeAg.system.js.map → p-mWJg54bF.system.js.map} +1 -1
  457. package/dist/pine-core/{p-CTWkFhWu.system.js.map → p-y1DacLeb.system.js.map} +1 -1
  458. package/dist/pine-core/{p-C0oRS1F9.system.js.map → p-ydqm5FGv.system.js.map} +1 -1
  459. package/dist/pine-core/{p-DGyATOIf.system.js.map → p-zZHye4hT.system.js.map} +1 -1
  460. package/dist/pine-core/pds-box.entry.esm.js.map +1 -1
  461. package/dist/pine-core/pds-chip.entry.esm.js.map +1 -1
  462. package/dist/pine-core/pds-combobox.entry.esm.js.map +1 -0
  463. package/dist/pine-core/pds-dropdown-menu.entry.esm.js.map +1 -1
  464. package/dist/pine-core/pds-icon.entry.esm.js.map +1 -1
  465. package/dist/pine-core/pds-input.entry.esm.js.map +1 -1
  466. package/dist/pine-core/pds-property.entry.esm.js.map +1 -0
  467. package/dist/pine-core/pds-select.entry.esm.js.map +1 -1
  468. package/dist/pine-core/pds-text.entry.esm.js.map +1 -1
  469. package/dist/pine-core/pds-textarea.entry.esm.js.map +1 -1
  470. package/dist/pine-core/pine-core.esm.js +1 -1
  471. package/dist/types/components/pds-combobox/pds-combobox.d.ts +153 -0
  472. package/dist/types/components/pds-input/pds-input.d.ts +6 -0
  473. package/dist/types/components/pds-property/pds-property.d.ts +14 -0
  474. package/dist/types/components/pds-select/pds-select.d.ts +5 -0
  475. package/dist/types/components/pds-text/pds-text.d.ts +3 -0
  476. package/dist/types/components/pds-textarea/pds-textarea.d.ts +8 -0
  477. package/dist/types/components.d.ts +205 -0
  478. package/hydrate/index.js +2285 -292
  479. package/hydrate/index.mjs +2285 -292
  480. package/package.json +4 -2
  481. package/dist/pine-core/p-00599bd8.entry.js +0 -2
  482. package/dist/pine-core/p-00599bd8.entry.js.map +0 -1
  483. package/dist/pine-core/p-03d8cb4c.system.entry.js +0 -2
  484. package/dist/pine-core/p-065208a1.system.entry.js.map +0 -1
  485. package/dist/pine-core/p-0c30661b.system.entry.js +0 -2
  486. package/dist/pine-core/p-13481ef5.system.entry.js.map +0 -1
  487. package/dist/pine-core/p-35917a1a.entry.js +0 -2
  488. package/dist/pine-core/p-3e91dccd.entry.js +0 -2
  489. package/dist/pine-core/p-3e91dccd.entry.js.map +0 -1
  490. package/dist/pine-core/p-513c16c7.entry.js +0 -2
  491. package/dist/pine-core/p-513c16c7.entry.js.map +0 -1
  492. package/dist/pine-core/p-5367f477.system.entry.js +0 -2
  493. package/dist/pine-core/p-593df966.system.entry.js +0 -2
  494. package/dist/pine-core/p-593df966.system.entry.js.map +0 -1
  495. package/dist/pine-core/p-5acda4ac.system.entry.js +0 -2
  496. package/dist/pine-core/p-5acda4ac.system.entry.js.map +0 -1
  497. package/dist/pine-core/p-5e1e7762.entry.js +0 -2
  498. package/dist/pine-core/p-624db3d6.system.entry.js +0 -2
  499. package/dist/pine-core/p-624db3d6.system.entry.js.map +0 -1
  500. package/dist/pine-core/p-65a875f6.entry.js +0 -2
  501. package/dist/pine-core/p-76f7cf21.entry.js +0 -2
  502. package/dist/pine-core/p-8b6b0db7.entry.js.map +0 -1
  503. package/dist/pine-core/p-9db1f179.entry.js +0 -2
  504. package/dist/pine-core/p-9db1f179.entry.js.map +0 -1
  505. package/dist/pine-core/p-B5LBNcOw.system.js.map +0 -1
  506. package/dist/pine-core/p-C3ud771n.system.js.map +0 -1
  507. package/dist/pine-core/p-CdzfTGbZ.system.js.map +0 -1
  508. package/dist/pine-core/p-DMeT5CsE.system.js.map +0 -1
  509. package/dist/pine-core/p-DjXmy34u.system.js.map +0 -1
  510. package/dist/pine-core/p-Ke8SGZqs.system.js.map +0 -1
  511. package/dist/pine-core/p-a52b1413.entry.js +0 -2
  512. package/dist/pine-core/p-bf699bad.entry.js.map +0 -1
  513. package/dist/pine-core/p-dcda4ff5.system.entry.js +0 -2
  514. package/dist/pine-core/p-dfd5a5b6.system.entry.js +0 -2
  515. package/dist/pine-core/p-dfd5a5b6.system.entry.js.map +0 -1
  516. package/dist/pine-core/p-e562ad73.system.entry.js +0 -2
  517. package/dist/pine-core/p-e562ad73.system.entry.js.map +0 -1
  518. package/dist/pine-core/p-fb1eb0c4.entry.js +0 -2
  519. package/dist/pine-core/p-fb1eb0c4.entry.js.map +0 -1
  520. package/dist/pine-core/p-fd1ef1e1.entry.js +0 -2
  521. package/dist/pine-core/p-fed5f55e.system.entry.js +0 -2
  522. /package/dist/pine-core/{p-78f29270.entry.js.map → p-000ed179.entry.js.map} +0 -0
  523. /package/dist/pine-core/{p-de550d9e.system.entry.js.map → p-0c6e9ba0.system.entry.js.map} +0 -0
  524. /package/dist/pine-core/{p-cc21ddcc.system.entry.js.map → p-1ef5f46b.system.entry.js.map} +0 -0
  525. /package/dist/pine-core/{p-fed5f55e.system.entry.js.map → p-256d15bc.system.entry.js.map} +0 -0
  526. /package/dist/pine-core/{p-80f36506.entry.js.map → p-27b52fc5.entry.js.map} +0 -0
  527. /package/dist/pine-core/{p-04195bdb.entry.js.map → p-2a2cd90d.entry.js.map} +0 -0
  528. /package/dist/pine-core/{p-07f45626.entry.js.map → p-2f0aedfa.entry.js.map} +0 -0
  529. /package/dist/pine-core/{p-27c0ffda.system.entry.js.map → p-2fbc5f8c.system.entry.js.map} +0 -0
  530. /package/dist/pine-core/{p-b2820acd.entry.js.map → p-30449e82.entry.js.map} +0 -0
  531. /package/dist/pine-core/{p-f6b226df.entry.js.map → p-31fe86a6.entry.js.map} +0 -0
  532. /package/dist/pine-core/{p-5367f477.system.entry.js.map → p-357b6dd6.system.entry.js.map} +0 -0
  533. /package/dist/pine-core/{p-fdf3a5ff.entry.js.map → p-36d3352a.entry.js.map} +0 -0
  534. /package/dist/pine-core/{p-e9f004c5.entry.js.map → p-38248640.entry.js.map} +0 -0
  535. /package/dist/pine-core/{p-aeaae417.system.entry.js.map → p-383af1d4.system.entry.js.map} +0 -0
  536. /package/dist/pine-core/{p-f99c59a8.entry.js.map → p-39fbd912.entry.js.map} +0 -0
  537. /package/dist/pine-core/{p-5c4aceb7.entry.js.map → p-3bbb6fc1.entry.js.map} +0 -0
  538. /package/dist/pine-core/{p-39a31730.system.entry.js.map → p-3fd658ad.system.entry.js.map} +0 -0
  539. /package/dist/pine-core/{p-44f10d3c.entry.js.map → p-4d22ca40.entry.js.map} +0 -0
  540. /package/dist/pine-core/{p-76f7cf21.entry.js.map → p-5033d9e8.entry.js.map} +0 -0
  541. /package/dist/pine-core/{p-a98cda38.system.entry.js.map → p-5706c81b.system.entry.js.map} +0 -0
  542. /package/dist/pine-core/{p-ddcc4932.entry.js.map → p-5fdbbab9.entry.js.map} +0 -0
  543. /package/dist/pine-core/{p-78327c08.system.entry.js.map → p-61b7ff04.system.entry.js.map} +0 -0
  544. /package/dist/pine-core/{p-111e7da2.system.entry.js.map → p-62bc2080.system.entry.js.map} +0 -0
  545. /package/dist/pine-core/{p-fb2fb435.entry.js.map → p-64c897bb.entry.js.map} +0 -0
  546. /package/dist/pine-core/{p-1d395d27.entry.js.map → p-667eb50e.entry.js.map} +0 -0
  547. /package/dist/pine-core/{p-51cc93b3.entry.js.map → p-6d36fae0.entry.js.map} +0 -0
  548. /package/dist/pine-core/{p-5e1e7762.entry.js.map → p-6ef51211.entry.js.map} +0 -0
  549. /package/dist/pine-core/{p-5a437fcd.system.entry.js.map → p-7da6180d.system.entry.js.map} +0 -0
  550. /package/dist/pine-core/{p-19c01019.entry.js.map → p-80246c79.entry.js.map} +0 -0
  551. /package/dist/pine-core/{p-d35b3494.entry.js.map → p-82388e60.entry.js.map} +0 -0
  552. /package/dist/pine-core/{p-c1909a5d.system.entry.js.map → p-91520803.system.entry.js.map} +0 -0
  553. /package/dist/pine-core/{p-ab7e4700.system.entry.js.map → p-982edcaf.system.entry.js.map} +0 -0
  554. /package/dist/pine-core/{p-dcda4ff5.system.entry.js.map → p-9b8a3659.system.entry.js.map} +0 -0
  555. /package/dist/pine-core/{p-d553e05c.system.entry.js.map → p-9cc1844a.system.entry.js.map} +0 -0
  556. /package/dist/pine-core/{p-ef9ed75a.system.entry.js.map → p-9d8bb7f7.system.entry.js.map} +0 -0
  557. /package/dist/pine-core/{p-f46c4618.system.entry.js.map → p-9df7ba40.system.entry.js.map} +0 -0
  558. /package/dist/pine-core/{p-9c01e81b.system.entry.js.map → p-9e22eab5.system.entry.js.map} +0 -0
  559. /package/dist/pine-core/{p-86329612.entry.js.map → p-a4d19fb1.entry.js.map} +0 -0
  560. /package/dist/pine-core/{p-03d8cb4c.system.entry.js.map → p-af5c9fbd.system.entry.js.map} +0 -0
  561. /package/dist/pine-core/{p-10e2feff.entry.js.map → p-b214c043.entry.js.map} +0 -0
  562. /package/dist/pine-core/{p-60fbeb1c.entry.js.map → p-b6d18604.entry.js.map} +0 -0
  563. /package/dist/pine-core/{p-d6d453d8.system.entry.js.map → p-b93825c4.system.entry.js.map} +0 -0
  564. /package/dist/pine-core/{p-4b2aab79.system.entry.js.map → p-c5a7c8e9.system.entry.js.map} +0 -0
  565. /package/dist/pine-core/{p-6a7936e7.system.entry.js.map → p-c5da4a97.system.entry.js.map} +0 -0
  566. /package/dist/pine-core/{p-0c30661b.system.entry.js.map → p-c93786f1.system.entry.js.map} +0 -0
  567. /package/dist/pine-core/{p-959c8247.system.entry.js.map → p-cc15bf6c.system.entry.js.map} +0 -0
  568. /package/dist/pine-core/{p-fd1ef1e1.entry.js.map → p-d0ec666b.entry.js.map} +0 -0
  569. /package/dist/pine-core/{p-942fa145.system.entry.js.map → p-d451c7b5.system.entry.js.map} +0 -0
  570. /package/dist/pine-core/{p-0a87e2fc.system.entry.js.map → p-d6b1f60d.system.entry.js.map} +0 -0
  571. /package/dist/pine-core/{p-d28768d1.entry.js.map → p-d989287d.entry.js.map} +0 -0
  572. /package/dist/pine-core/{p-a556a328.system.entry.js.map → p-e0a35811.system.entry.js.map} +0 -0
  573. /package/dist/pine-core/{p-7bb3a5d4.system.entry.js.map → p-e0a6ba6f.system.entry.js.map} +0 -0
  574. /package/dist/pine-core/{p-c5e1ed09.system.entry.js.map → p-e416f7a8.system.entry.js.map} +0 -0
  575. /package/dist/pine-core/{p-c551191a.system.entry.js.map → p-e53547e2.system.entry.js.map} +0 -0
  576. /package/dist/pine-core/{p-d0adaca0.system.entry.js.map → p-e7322ff9.system.entry.js.map} +0 -0
  577. /package/dist/pine-core/{p-79cb7835.system.entry.js.map → p-e8a4eafa.system.entry.js.map} +0 -0
  578. /package/dist/pine-core/{p-96e9774e.system.entry.js.map → p-ec1c3452.system.entry.js.map} +0 -0
  579. /package/dist/pine-core/{p-76e35041.entry.js.map → p-ee0117a2.entry.js.map} +0 -0
  580. /package/dist/pine-core/{p-833b2170.system.entry.js.map → p-eef645bd.system.entry.js.map} +0 -0
  581. /package/dist/pine-core/{p-8f06b020.entry.js.map → p-ef08f005.entry.js.map} +0 -0
  582. /package/dist/pine-core/{p-0a11384e.entry.js.map → p-f29baa16.entry.js.map} +0 -0
  583. /package/dist/pine-core/{p-2007a0b5.entry.js.map → p-f30b1479.entry.js.map} +0 -0
  584. /package/dist/pine-core/{p-35917a1a.entry.js.map → p-f455deb5.entry.js.map} +0 -0
  585. /package/dist/pine-core/{p-8180b641.entry.js.map → p-f7c02b89.entry.js.map} +0 -0
  586. /package/dist/pine-core/{p-65a875f6.entry.js.map → p-f9005ac9.entry.js.map} +0 -0
  587. /package/dist/pine-core/{p-99b5e1a5.entry.js.map → p-fd3b7077.entry.js.map} +0 -0
  588. /package/dist/pine-core/{p-3ea415b0.entry.js.map → p-fe73a67f.entry.js.map} +0 -0
package/hydrate/index.js CHANGED
@@ -3149,7 +3149,7 @@ class MockPdsModal {
3149
3149
  'pds-modal__backdrop': true,
3150
3150
  'open': this.open,
3151
3151
  };
3152
- return (hAsync("div", { key: 'e61d355aaf75d5adc97a3e930f898e075f54d931', class: backdropClasses }, hAsync("div", { key: '059c930eb27b9420ca294b2a7c07e53b15ce1c91', class: modalClasses, role: "dialog", "aria-modal": "true", "aria-labelledby": this.componentId ? `${this.componentId}-heading` : null }, hAsync("div", { key: '9b2423c26eb6f015ee68f73805bd50965a32b5b0', class: "pds-modal__header" }, hAsync("slot", { key: '770d212b20667a1ea4dce88a345f4cbbed363e52', name: "header" })), hAsync("div", { key: '51821cd7d5323ae4543d354589ceabebf0c0ccb0', class: "pds-modal-content" }, hAsync("slot", { key: '475b5844c8f9ac44d7fc366b95ca282a908e0cbb' })), hAsync("div", { key: 'eb67b8e10942d51824296b82947025f8afee8a24', class: "pds-modal__footer" }, hAsync("slot", { key: 'b66c31cd4abfb8d30d5dc66735a367d99f149559', name: "footer" })))));
3152
+ return (hAsync("div", { key: '34bb09afe2af63e8092dc1ca4b10e216550ce0ba', class: backdropClasses }, hAsync("div", { key: '8400a7dee99a128523a2238cf88d1bbcdfb65f79', class: modalClasses, role: "dialog", "aria-modal": "true", "aria-labelledby": this.componentId ? `${this.componentId}-heading` : null }, hAsync("div", { key: '9b1ee3bd413a110e4d3abfa4fce4e7fb4014d3f1', class: "pds-modal__header" }, hAsync("slot", { key: '4845c471151b08b7cb7a072a3d2e8c2e06143634', name: "header" })), hAsync("div", { key: '9132767dda413c5d7f2ab9fbe5c4952c6aebc709', class: "pds-modal-content" }, hAsync("slot", { key: 'cb8417be84699a117b76e9b3cbd98352bf3417f5' })), hAsync("div", { key: 'b56977cf61079ce61acd6fe71c9cbbc3fff7316b', class: "pds-modal__footer" }, hAsync("slot", { key: '0fcb7a8bab9322ba6962e0c205389a3d62b9c423', name: "footer" })))));
3153
3153
  }
3154
3154
  get el() { return getElement(this); }
3155
3155
  static get style() { return pdsModalCss$1; }
@@ -3170,7 +3170,7 @@ class MockPdsModal {
3170
3170
  }; }
3171
3171
  }
3172
3172
 
3173
- /* pds-icons v9.4.4, ES Modules */
3173
+ /* pds-icons v9.6.1, ES Modules */
3174
3174
 
3175
3175
  const caretDown = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M5.293 8.293a1 1 0 0 1 1.414 0L12 13.586l5.293-5.293a1 1 0 1 1 1.414 1.414l-6 6a1 1 0 0 1-1.414 0l-6-6a1 1 0 0 1 0-1.414'/></svg>";
3176
3176
  const checkCircleFilled = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M12 1C5.925 1 1 5.925 1 12s4.925 11 11 11 11-4.925 11-11S18.075 1 12 1m5.207 8.707a1 1 0 0 0-1.414-1.414L10.5 13.586l-2.293-2.293a1 1 0 0 0-1.414 1.414l3 3a1 1 0 0 0 1.414 0z'/></svg>";
@@ -3997,115 +3997,6 @@ class PdsChip {
3997
3997
  }; }
3998
3998
  }
3999
3999
 
4000
- const pdsCopytextCss = ":host(.pds-copytext){--copytext-color-background-hover:var(--pine-color-grey-200)}:host(.pds-copytext) pds-button{-ms-flex-align:center;align-items:center;background:var(--pine-color-secondary);border-radius:var(--pine-border-radius-full);border-width:var(--pine-dimension-none);display:-ms-inline-flexbox;display:inline-flex;font-family:var(--pine-font-family-heading);font-size:var(--pine-font-size-body-md);font-weight:var(--pine-font-weight-body-medium);letter-spacing:var(--pine-letter-spacing);line-height:var(--pine-line-height-body);max-width:100%;padding:var(--pine-dimension-2xs) var(--pine-dimension-xs)}:host(.pds-copytext) pds-button::part(button){-webkit-padding-end:calc(var(--pine-dimension-xs) / 2);padding-inline-end:calc(var(--pine-dimension-xs) / 2)}:host(.pds-copytext) pds-button::part(button):hover{background-color:var(--copytext-color-background-hover);color:var(--pine-color-text-secondary-hover)}:host(.pds-copytext) pds-button span{font-weight:var(--pine-font-weight-medium);-webkit-margin-end:var(--pine-dimension-xs);margin-inline-end:var(--pine-dimension-xs);white-space:nowrap}:host(.pds-copytext) pds-button :nth-child(2){-ms-flex-negative:0;flex-shrink:0}:host(.pds-copytext):host(.pds-copytext--bordered){border-width:var(--pine-dimension-none);padding:var(--pine-dimension-none)}:host(.pds-copytext):host(.pds-copytext--bordered) pds-button{padding:var(--pine-dimension-none)}:host(.pds-copytext):host(.pds-copytext--bordered)::part(button):hover{background-color:transparent}:host(.pds-copytext):host(.pds-copytext--bordered) span{border:var(--pine-border);border-radius:var(--pine-border-radius-full);-webkit-margin-end:var(--pine-dimension-sm);margin-inline-end:var(--pine-dimension-sm);padding-block:var(--pine-dimension-xs);padding-inline:var(--pine-dimension-sm)}:host(.pds-copytext):host(.pds-copytext--bordered) :hover span{border:var(--pine-border-hover)}:host(.pds-copytext):host(.pds-copytext--full-width) pds-button,:host(.pds-copytext):host(.pds-copytext--truncated) pds-button{display:-ms-inline-flexbox;display:inline-flex;min-width:auto;width:100%}:host(.pds-copytext):host(.pds-copytext--full-width) pds-button::part(button-content),:host(.pds-copytext):host(.pds-copytext--full-width) pds-button::part(button-text),:host(.pds-copytext):host(.pds-copytext--truncated) pds-button::part(button-content),:host(.pds-copytext):host(.pds-copytext--truncated) pds-button::part(button-text){-ms-flex-negative:1;flex-shrink:1;width:100%}:host(.pds-copytext):host(.pds-copytext--full-width) pds-button span,:host(.pds-copytext):host(.pds-copytext--truncated) pds-button span{text-align:start;width:100%}:host(.pds-copytext):host(.pds-copytext--full-width) pds-button{-ms-flex-pack:justify;justify-content:space-between}:host(.pds-copytext):host(.pds-copytext--truncated) pds-button span{overflow:hidden;text-overflow:ellipsis}";
4001
-
4002
- class PdsCopytext {
4003
- constructor(hostRef) {
4004
- registerInstance(this, hostRef);
4005
- this.pdsCopyTextClick = createEvent(this, "pdsCopyTextClick");
4006
- /**
4007
- * Determines whether `copytext` should have a visible border.
4008
- * @defaultValue true
4009
- */
4010
- this.border = true;
4011
- /**
4012
- * Determines whether `copytext` should expand to the full width of its container.
4013
- * @defaultValue false
4014
- */
4015
- this.fullWidth = false;
4016
- /**
4017
- * Determines whether the `value` should truncate and display with an ellipsis.
4018
- * @defaultValue false
4019
- */
4020
- this.truncate = false;
4021
- this.copyToClipboard = async (value) => {
4022
- try {
4023
- if (typeof navigator.clipboard !== 'undefined') {
4024
- await navigator.clipboard.writeText(value);
4025
- this.pdsCopyTextClick.emit('Copied to clipboard');
4026
- }
4027
- }
4028
- catch (err) {
4029
- this.pdsCopyTextClick.emit(`Error writing text to clipboard: ${err}`);
4030
- }
4031
- };
4032
- this.handleClick = () => {
4033
- this.copyToClipboard(this.value);
4034
- };
4035
- }
4036
- classNames() {
4037
- const classNames = ['pds-copytext'];
4038
- if (this.border) {
4039
- classNames.push('pds-copytext--bordered');
4040
- }
4041
- if (this.fullWidth) {
4042
- classNames.push('pds-copytext--full-width');
4043
- }
4044
- if (this.truncate) {
4045
- classNames.push('pds-copytext--truncated');
4046
- }
4047
- return classNames.join(' ');
4048
- }
4049
- render() {
4050
- return (hAsync(Host, { key: '46c38faeba9b70d2e510a4b6af08866577936478', class: this.classNames(), id: this.componentId }, hAsync("pds-button", { key: '6e28c11a9a7a57f4c256b0283b64ec655a897f65', type: "button", variant: "unstyled", onClick: this.handleClick }, hAsync("span", { key: '6818451171f85fd6ad63f07c69871082d3fcba4e' }, this.value), hAsync("pds-icon", { key: '05e683d7b28575d924d6af482e6ce4c3cfee3f05', icon: copy, size: "16px" }))));
4051
- }
4052
- static get style() { return pdsCopytextCss; }
4053
- static get cmpMeta() { return {
4054
- "$flags$": 9,
4055
- "$tagName$": "pds-copytext",
4056
- "$members$": {
4057
- "border": [516],
4058
- "componentId": [1, "component-id"],
4059
- "fullWidth": [4, "full-width"],
4060
- "truncate": [4],
4061
- "value": [1]
4062
- },
4063
- "$listeners$": undefined,
4064
- "$lazyBundleId$": "-",
4065
- "$attrsToReflect$": [["border", "border"]]
4066
- }; }
4067
- }
4068
-
4069
- const pdsDividerCss = ".pds-divider{background:var(--pine-color-border);border:0;display:-ms-flexbox;display:flex;height:var(--pine-border-width);margin:0;width:100%}.pds-divider--vertical{height:100%;width:1px}.pds-divider--offset-xxs{margin:0 calc(var(--pine-dimension-2xs) * -1);padding:0 var(--pine-dimension-2xs)}.pds-divider--offset-xxs.pds-divider--vertical{margin:calc(var(--pine-dimension-2xs) * -1) 0;padding:var(--pine-dimension-2xs) 0}.pds-divider--offset-xs{margin:0 calc(var(--pine-dimension-xs) * -1);padding:0 var(--pine-dimension-xs)}.pds-divider--offset-xs.pds-divider--vertical{margin:calc(var(--pine-dimension-xs) * -1) 0;padding:var(--pine-dimension-xs) 0}.pds-divider--offset-sm{margin:0 calc(var(--pine-dimension-sm) * -1);padding:0 var(--pine-dimension-sm)}.pds-divider--offset-sm.pds-divider--vertical{margin:calc(var(--pine-dimension-sm) * -1) 0;padding:var(--pine-dimension-sm) 0}.pds-divider--offset-md{margin:0 calc(var(--pine-dimension-md) * -1);padding:0 var(--pine-dimension-md)}.pds-divider--offset-md.pds-divider--vertical{margin:calc(var(--pine-dimension-md) * -1) 0;padding:var(--pine-dimension-md) 0}.pds-divider--offset-lg{margin:0 calc(var(--pine-dimension-lg) * -1);padding:0 var(--pine-dimension-lg)}.pds-divider--offset-lg.pds-divider--vertical{margin:calc(var(--pine-dimension-lg) * -1) 0;padding:var(--pine-dimension-lg) 0}.pds-divider--offset-xl{margin:0 calc(var(--pine-dimension-xl) * -1);padding:0 var(--pine-dimension-xl)}.pds-divider--offset-xl.pds-divider--vertical{margin:calc(var(--pine-dimension-xl) * -1) 0;padding:var(--pine-dimension-xl) 0}.pds-divider--offset-xxl{margin:0 calc(var(--pine-dimension-2xl) * -1);padding:0 var(--pine-dimension-2xl)}.pds-divider--offset-xxl.pds-divider--vertical{margin:calc(var(--pine-dimension-2xl) * -1) 0;padding:var(--pine-dimension-2xl) 0}@media (max-width: 767px){.pds-divider--vertical{display:none}}";
4070
-
4071
- class PdsDivider {
4072
- constructor(hostRef) {
4073
- registerInstance(this, hostRef);
4074
- /**
4075
- * Sets divider to display vertically.
4076
- * @defaultValue false
4077
- */
4078
- this.vertical = false;
4079
- }
4080
- classNames() {
4081
- const classNames = ['pds-divider'];
4082
- if (this.vertical) {
4083
- classNames.push('pds-divider--vertical');
4084
- }
4085
- if (this.offset) {
4086
- const offsetClassName = 'pds-divider--offset-' + this.offset;
4087
- classNames.push(offsetClassName);
4088
- }
4089
- return classNames.join(' ');
4090
- }
4091
- render() {
4092
- return (hAsync(Host, { key: 'ee48ee45e0463abbd3cb7aa686f8d86928830ccb', id: this.componentId }, hAsync("hr", { key: '4af739f85e502a7d9bff1b3581c283cb6ee53a0e', class: this.classNames() })));
4093
- }
4094
- static get style() { return pdsDividerCss; }
4095
- static get cmpMeta() { return {
4096
- "$flags$": 9,
4097
- "$tagName$": "pds-divider",
4098
- "$members$": {
4099
- "componentId": [1, "component-id"],
4100
- "offset": [1],
4101
- "vertical": [4]
4102
- },
4103
- "$listeners$": undefined,
4104
- "$lazyBundleId$": "-",
4105
- "$attrsToReflect$": []
4106
- }; }
4107
- }
4108
-
4109
4000
  /**
4110
4001
  * Custom positioning reference element.
4111
4002
  * @see https://floating-ui.com/docs/virtual-elements
@@ -5298,131 +5189,1983 @@ function isStaticPositioned(element) {
5298
5189
  return getComputedStyle$1(element).position === 'static';
5299
5190
  }
5300
5191
 
5301
- function getTrueOffsetParent(element, polyfill) {
5302
- if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {
5303
- return null;
5304
- }
5305
- if (polyfill) {
5306
- return polyfill(element);
5307
- }
5308
- let rawOffsetParent = element.offsetParent;
5309
-
5310
- // Firefox returns the <html> element as the offsetParent if it's non-static,
5311
- // while Chrome and Safari return the <body> element. The <body> element must
5312
- // be used to perform the correct calculations even if the <html> element is
5313
- // non-static.
5314
- if (getDocumentElement(element) === rawOffsetParent) {
5315
- rawOffsetParent = rawOffsetParent.ownerDocument.body;
5316
- }
5317
- return rawOffsetParent;
5318
- }
5192
+ function getTrueOffsetParent(element, polyfill) {
5193
+ if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {
5194
+ return null;
5195
+ }
5196
+ if (polyfill) {
5197
+ return polyfill(element);
5198
+ }
5199
+ let rawOffsetParent = element.offsetParent;
5200
+
5201
+ // Firefox returns the <html> element as the offsetParent if it's non-static,
5202
+ // while Chrome and Safari return the <body> element. The <body> element must
5203
+ // be used to perform the correct calculations even if the <html> element is
5204
+ // non-static.
5205
+ if (getDocumentElement(element) === rawOffsetParent) {
5206
+ rawOffsetParent = rawOffsetParent.ownerDocument.body;
5207
+ }
5208
+ return rawOffsetParent;
5209
+ }
5210
+
5211
+ // Gets the closest ancestor positioned element. Handles some edge cases,
5212
+ // such as table ancestors and cross browser bugs.
5213
+ function getOffsetParent(element, polyfill) {
5214
+ const win = getWindow(element);
5215
+ if (isTopLayer(element)) {
5216
+ return win;
5217
+ }
5218
+ if (!isHTMLElement(element)) {
5219
+ let svgOffsetParent = getParentNode(element);
5220
+ while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {
5221
+ if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {
5222
+ return svgOffsetParent;
5223
+ }
5224
+ svgOffsetParent = getParentNode(svgOffsetParent);
5225
+ }
5226
+ return win;
5227
+ }
5228
+ let offsetParent = getTrueOffsetParent(element, polyfill);
5229
+ while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {
5230
+ offsetParent = getTrueOffsetParent(offsetParent, polyfill);
5231
+ }
5232
+ if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {
5233
+ return win;
5234
+ }
5235
+ return offsetParent || getContainingBlock(element) || win;
5236
+ }
5237
+
5238
+ const getElementRects = async function (data) {
5239
+ const getOffsetParentFn = this.getOffsetParent || getOffsetParent;
5240
+ const getDimensionsFn = this.getDimensions;
5241
+ const floatingDimensions = await getDimensionsFn(data.floating);
5242
+ return {
5243
+ reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),
5244
+ floating: {
5245
+ x: 0,
5246
+ y: 0,
5247
+ width: floatingDimensions.width,
5248
+ height: floatingDimensions.height
5249
+ }
5250
+ };
5251
+ };
5252
+
5253
+ function isRTL$1(element) {
5254
+ return getComputedStyle$1(element).direction === 'rtl';
5255
+ }
5256
+
5257
+ const platform = {
5258
+ convertOffsetParentRelativeRectToViewportRelativeRect,
5259
+ getDocumentElement,
5260
+ getClippingRect,
5261
+ getOffsetParent,
5262
+ getElementRects,
5263
+ getClientRects,
5264
+ getDimensions,
5265
+ getScale,
5266
+ isElement,
5267
+ isRTL: isRTL$1
5268
+ };
5269
+
5270
+ /**
5271
+ * Modifies the placement by translating the floating element along the
5272
+ * specified axes.
5273
+ * A number (shorthand for `mainAxis` or distance), or an axes configuration
5274
+ * object may be passed.
5275
+ * @see https://floating-ui.com/docs/offset
5276
+ */
5277
+ const offset = offset$1;
5278
+
5279
+ /**
5280
+ * Optimizes the visibility of the floating element by shifting it in order to
5281
+ * keep it in view when it will overflow the clipping boundary.
5282
+ * @see https://floating-ui.com/docs/shift
5283
+ */
5284
+ const shift = shift$1;
5285
+
5286
+ /**
5287
+ * Optimizes the visibility of the floating element by flipping the `placement`
5288
+ * in order to keep it in view when the preferred placement(s) will overflow the
5289
+ * clipping boundary. Alternative to `autoPlacement`.
5290
+ * @see https://floating-ui.com/docs/flip
5291
+ */
5292
+ const flip = flip$1;
5293
+
5294
+ /**
5295
+ * Computes the `x` and `y` coordinates that will place the floating element
5296
+ * next to a given reference element.
5297
+ */
5298
+ const computePosition = (reference, floating, options) => {
5299
+ // This caches the expensive `getClippingElementAncestors` function so that
5300
+ // multiple lifecycle resets re-use the same result. It only lives for a
5301
+ // single call. If other functions become expensive, we can add them as well.
5302
+ const cache = new Map();
5303
+ const mergedOptions = {
5304
+ platform,
5305
+ ...options
5306
+ };
5307
+ const platformWithCache = {
5308
+ ...mergedOptions.platform,
5309
+ _c: cache
5310
+ };
5311
+ return computePosition$1(reference, floating, {
5312
+ ...mergedOptions,
5313
+ platform: platformWithCache
5314
+ });
5315
+ };
5316
+
5317
+ /*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE */
5318
+
5319
+ const {
5320
+ entries,
5321
+ setPrototypeOf,
5322
+ isFrozen,
5323
+ getPrototypeOf,
5324
+ getOwnPropertyDescriptor
5325
+ } = Object;
5326
+ let {
5327
+ freeze,
5328
+ seal,
5329
+ create
5330
+ } = Object; // eslint-disable-line import/no-mutable-exports
5331
+ let {
5332
+ apply,
5333
+ construct
5334
+ } = typeof Reflect !== 'undefined' && Reflect;
5335
+ if (!freeze) {
5336
+ freeze = function freeze(x) {
5337
+ return x;
5338
+ };
5339
+ }
5340
+ if (!seal) {
5341
+ seal = function seal(x) {
5342
+ return x;
5343
+ };
5344
+ }
5345
+ if (!apply) {
5346
+ apply = function apply(fun, thisValue, args) {
5347
+ return fun.apply(thisValue, args);
5348
+ };
5349
+ }
5350
+ if (!construct) {
5351
+ construct = function construct(Func, args) {
5352
+ return new Func(...args);
5353
+ };
5354
+ }
5355
+ const arrayForEach = unapply(Array.prototype.forEach);
5356
+ const arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);
5357
+ const arrayPop = unapply(Array.prototype.pop);
5358
+ const arrayPush = unapply(Array.prototype.push);
5359
+ const arraySplice = unapply(Array.prototype.splice);
5360
+ const stringToLowerCase = unapply(String.prototype.toLowerCase);
5361
+ const stringToString = unapply(String.prototype.toString);
5362
+ const stringMatch = unapply(String.prototype.match);
5363
+ const stringReplace = unapply(String.prototype.replace);
5364
+ const stringIndexOf = unapply(String.prototype.indexOf);
5365
+ const stringTrim = unapply(String.prototype.trim);
5366
+ const objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);
5367
+ const regExpTest = unapply(RegExp.prototype.test);
5368
+ const typeErrorCreate = unconstruct(TypeError);
5369
+ /**
5370
+ * Creates a new function that calls the given function with a specified thisArg and arguments.
5371
+ *
5372
+ * @param func - The function to be wrapped and called.
5373
+ * @returns A new function that calls the given function with a specified thisArg and arguments.
5374
+ */
5375
+ function unapply(func) {
5376
+ return function (thisArg) {
5377
+ if (thisArg instanceof RegExp) {
5378
+ thisArg.lastIndex = 0;
5379
+ }
5380
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
5381
+ args[_key - 1] = arguments[_key];
5382
+ }
5383
+ return apply(func, thisArg, args);
5384
+ };
5385
+ }
5386
+ /**
5387
+ * Creates a new function that constructs an instance of the given constructor function with the provided arguments.
5388
+ *
5389
+ * @param func - The constructor function to be wrapped and called.
5390
+ * @returns A new function that constructs an instance of the given constructor function with the provided arguments.
5391
+ */
5392
+ function unconstruct(func) {
5393
+ return function () {
5394
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
5395
+ args[_key2] = arguments[_key2];
5396
+ }
5397
+ return construct(func, args);
5398
+ };
5399
+ }
5400
+ /**
5401
+ * Add properties to a lookup table
5402
+ *
5403
+ * @param set - The set to which elements will be added.
5404
+ * @param array - The array containing elements to be added to the set.
5405
+ * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.
5406
+ * @returns The modified set with added elements.
5407
+ */
5408
+ function addToSet(set, array) {
5409
+ let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;
5410
+ if (setPrototypeOf) {
5411
+ // Make 'in' and truthy checks like Boolean(set.constructor)
5412
+ // independent of any properties defined on Object.prototype.
5413
+ // Prevent prototype setters from intercepting set as a this value.
5414
+ setPrototypeOf(set, null);
5415
+ }
5416
+ let l = array.length;
5417
+ while (l--) {
5418
+ let element = array[l];
5419
+ if (typeof element === 'string') {
5420
+ const lcElement = transformCaseFunc(element);
5421
+ if (lcElement !== element) {
5422
+ // Config presets (e.g. tags.js, attrs.js) are immutable.
5423
+ if (!isFrozen(array)) {
5424
+ array[l] = lcElement;
5425
+ }
5426
+ element = lcElement;
5427
+ }
5428
+ }
5429
+ set[element] = true;
5430
+ }
5431
+ return set;
5432
+ }
5433
+ /**
5434
+ * Clean up an array to harden against CSPP
5435
+ *
5436
+ * @param array - The array to be cleaned.
5437
+ * @returns The cleaned version of the array
5438
+ */
5439
+ function cleanArray(array) {
5440
+ for (let index = 0; index < array.length; index++) {
5441
+ const isPropertyExist = objectHasOwnProperty(array, index);
5442
+ if (!isPropertyExist) {
5443
+ array[index] = null;
5444
+ }
5445
+ }
5446
+ return array;
5447
+ }
5448
+ /**
5449
+ * Shallow clone an object
5450
+ *
5451
+ * @param object - The object to be cloned.
5452
+ * @returns A new object that copies the original.
5453
+ */
5454
+ function clone$1(object) {
5455
+ const newObject = create(null);
5456
+ for (const [property, value] of entries(object)) {
5457
+ const isPropertyExist = objectHasOwnProperty(object, property);
5458
+ if (isPropertyExist) {
5459
+ if (Array.isArray(value)) {
5460
+ newObject[property] = cleanArray(value);
5461
+ } else if (value && typeof value === 'object' && value.constructor === Object) {
5462
+ newObject[property] = clone$1(value);
5463
+ } else {
5464
+ newObject[property] = value;
5465
+ }
5466
+ }
5467
+ }
5468
+ return newObject;
5469
+ }
5470
+ /**
5471
+ * This method automatically checks if the prop is function or getter and behaves accordingly.
5472
+ *
5473
+ * @param object - The object to look up the getter function in its prototype chain.
5474
+ * @param prop - The property name for which to find the getter function.
5475
+ * @returns The getter function found in the prototype chain or a fallback function.
5476
+ */
5477
+ function lookupGetter(object, prop) {
5478
+ while (object !== null) {
5479
+ const desc = getOwnPropertyDescriptor(object, prop);
5480
+ if (desc) {
5481
+ if (desc.get) {
5482
+ return unapply(desc.get);
5483
+ }
5484
+ if (typeof desc.value === 'function') {
5485
+ return unapply(desc.value);
5486
+ }
5487
+ }
5488
+ object = getPrototypeOf(object);
5489
+ }
5490
+ function fallbackValue() {
5491
+ return null;
5492
+ }
5493
+ return fallbackValue;
5494
+ }
5495
+
5496
+ const html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);
5497
+ const svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);
5498
+ const svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);
5499
+ // List of SVG elements that are disallowed by default.
5500
+ // We still need to know them so that we can do namespace
5501
+ // checks properly in case one wants to add them to
5502
+ // allow-list.
5503
+ const svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);
5504
+ const mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);
5505
+ // Similarly to SVG, we want to know all MathML elements,
5506
+ // even those that we disallow by default.
5507
+ const mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);
5508
+ const text = freeze(['#text']);
5509
+
5510
+ const html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);
5511
+ const svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);
5512
+ const mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);
5513
+ const xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);
5514
+
5515
+ // eslint-disable-next-line unicorn/better-regex
5516
+ const MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode
5517
+ const ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm);
5518
+ const TMPLIT_EXPR = seal(/\$\{[\w\W]*/gm); // eslint-disable-line unicorn/better-regex
5519
+ const DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]+$/); // eslint-disable-line no-useless-escape
5520
+ const ARIA_ATTR = seal(/^aria-[\-\w]+$/); // eslint-disable-line no-useless-escape
5521
+ const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i // eslint-disable-line no-useless-escape
5522
+ );
5523
+ const IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i);
5524
+ const ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g // eslint-disable-line no-control-regex
5525
+ );
5526
+ const DOCTYPE_NAME = seal(/^html$/i);
5527
+ const CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i);
5528
+
5529
+ var EXPRESSIONS = /*#__PURE__*/Object.freeze({
5530
+ __proto__: null,
5531
+ ARIA_ATTR: ARIA_ATTR,
5532
+ ATTR_WHITESPACE: ATTR_WHITESPACE,
5533
+ CUSTOM_ELEMENT: CUSTOM_ELEMENT,
5534
+ DATA_ATTR: DATA_ATTR,
5535
+ DOCTYPE_NAME: DOCTYPE_NAME,
5536
+ ERB_EXPR: ERB_EXPR,
5537
+ IS_ALLOWED_URI: IS_ALLOWED_URI,
5538
+ IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,
5539
+ MUSTACHE_EXPR: MUSTACHE_EXPR,
5540
+ TMPLIT_EXPR: TMPLIT_EXPR
5541
+ });
5542
+
5543
+ /* eslint-disable @typescript-eslint/indent */
5544
+ // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType
5545
+ const NODE_TYPE = {
5546
+ element: 1,
5547
+ text: 3,
5548
+ // Deprecated
5549
+ progressingInstruction: 7,
5550
+ comment: 8,
5551
+ document: 9};
5552
+ const getGlobal = function getGlobal() {
5553
+ return typeof window === 'undefined' ? null : window;
5554
+ };
5555
+ /**
5556
+ * Creates a no-op policy for internal use only.
5557
+ * Don't export this function outside this module!
5558
+ * @param trustedTypes The policy factory.
5559
+ * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).
5560
+ * @return The policy created (or null, if Trusted Types
5561
+ * are not supported or creating the policy failed).
5562
+ */
5563
+ const _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {
5564
+ if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {
5565
+ return null;
5566
+ }
5567
+ // Allow the callers to control the unique policy name
5568
+ // by adding a data-tt-policy-suffix to the script element with the DOMPurify.
5569
+ // Policy creation with duplicate names throws in Trusted Types.
5570
+ let suffix = null;
5571
+ const ATTR_NAME = 'data-tt-policy-suffix';
5572
+ if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {
5573
+ suffix = purifyHostElement.getAttribute(ATTR_NAME);
5574
+ }
5575
+ const policyName = 'dompurify' + (suffix ? '#' + suffix : '');
5576
+ try {
5577
+ return trustedTypes.createPolicy(policyName, {
5578
+ createHTML(html) {
5579
+ return html;
5580
+ },
5581
+ createScriptURL(scriptUrl) {
5582
+ return scriptUrl;
5583
+ }
5584
+ });
5585
+ } catch (_) {
5586
+ // Policy creation failed (most likely another DOMPurify script has
5587
+ // already run). Skip creating the policy, as this will only cause errors
5588
+ // if TT are enforced.
5589
+ console.warn('TrustedTypes policy ' + policyName + ' could not be created.');
5590
+ return null;
5591
+ }
5592
+ };
5593
+ const _createHooksMap = function _createHooksMap() {
5594
+ return {
5595
+ afterSanitizeAttributes: [],
5596
+ afterSanitizeElements: [],
5597
+ afterSanitizeShadowDOM: [],
5598
+ beforeSanitizeAttributes: [],
5599
+ beforeSanitizeElements: [],
5600
+ beforeSanitizeShadowDOM: [],
5601
+ uponSanitizeAttribute: [],
5602
+ uponSanitizeElement: [],
5603
+ uponSanitizeShadowNode: []
5604
+ };
5605
+ };
5606
+ function createDOMPurify() {
5607
+ let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();
5608
+ const DOMPurify = root => createDOMPurify(root);
5609
+ DOMPurify.version = '3.2.6';
5610
+ DOMPurify.removed = [];
5611
+ if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {
5612
+ // Not running in a browser, provide a factory function
5613
+ // so that you can pass your own Window
5614
+ DOMPurify.isSupported = false;
5615
+ return DOMPurify;
5616
+ }
5617
+ let {
5618
+ document
5619
+ } = window;
5620
+ const originalDocument = document;
5621
+ const currentScript = originalDocument.currentScript;
5622
+ const {
5623
+ DocumentFragment,
5624
+ HTMLTemplateElement,
5625
+ Node,
5626
+ Element,
5627
+ NodeFilter,
5628
+ NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,
5629
+ HTMLFormElement,
5630
+ DOMParser,
5631
+ trustedTypes
5632
+ } = window;
5633
+ const ElementPrototype = Element.prototype;
5634
+ const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');
5635
+ const remove = lookupGetter(ElementPrototype, 'remove');
5636
+ const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');
5637
+ const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');
5638
+ const getParentNode = lookupGetter(ElementPrototype, 'parentNode');
5639
+ // As per issue #47, the web-components registry is inherited by a
5640
+ // new document created via createHTMLDocument. As per the spec
5641
+ // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)
5642
+ // a new empty registry is used when creating a template contents owner
5643
+ // document, so we use that as our parent document to ensure nothing
5644
+ // is inherited.
5645
+ if (typeof HTMLTemplateElement === 'function') {
5646
+ const template = document.createElement('template');
5647
+ if (template.content && template.content.ownerDocument) {
5648
+ document = template.content.ownerDocument;
5649
+ }
5650
+ }
5651
+ let trustedTypesPolicy;
5652
+ let emptyHTML = '';
5653
+ const {
5654
+ implementation,
5655
+ createNodeIterator,
5656
+ createDocumentFragment,
5657
+ getElementsByTagName
5658
+ } = document;
5659
+ const {
5660
+ importNode
5661
+ } = originalDocument;
5662
+ let hooks = _createHooksMap();
5663
+ /**
5664
+ * Expose whether this browser supports running the full DOMPurify.
5665
+ */
5666
+ DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;
5667
+ const {
5668
+ MUSTACHE_EXPR,
5669
+ ERB_EXPR,
5670
+ TMPLIT_EXPR,
5671
+ DATA_ATTR,
5672
+ ARIA_ATTR,
5673
+ IS_SCRIPT_OR_DATA,
5674
+ ATTR_WHITESPACE,
5675
+ CUSTOM_ELEMENT
5676
+ } = EXPRESSIONS;
5677
+ let {
5678
+ IS_ALLOWED_URI: IS_ALLOWED_URI$1
5679
+ } = EXPRESSIONS;
5680
+ /**
5681
+ * We consider the elements and attributes below to be safe. Ideally
5682
+ * don't add any new ones but feel free to remove unwanted ones.
5683
+ */
5684
+ /* allowed element names */
5685
+ let ALLOWED_TAGS = null;
5686
+ const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);
5687
+ /* Allowed attribute names */
5688
+ let ALLOWED_ATTR = null;
5689
+ const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);
5690
+ /*
5691
+ * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.
5692
+ * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)
5693
+ * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)
5694
+ * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.
5695
+ */
5696
+ let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {
5697
+ tagNameCheck: {
5698
+ writable: true,
5699
+ configurable: false,
5700
+ enumerable: true,
5701
+ value: null
5702
+ },
5703
+ attributeNameCheck: {
5704
+ writable: true,
5705
+ configurable: false,
5706
+ enumerable: true,
5707
+ value: null
5708
+ },
5709
+ allowCustomizedBuiltInElements: {
5710
+ writable: true,
5711
+ configurable: false,
5712
+ enumerable: true,
5713
+ value: false
5714
+ }
5715
+ }));
5716
+ /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */
5717
+ let FORBID_TAGS = null;
5718
+ /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */
5719
+ let FORBID_ATTR = null;
5720
+ /* Decide if ARIA attributes are okay */
5721
+ let ALLOW_ARIA_ATTR = true;
5722
+ /* Decide if custom data attributes are okay */
5723
+ let ALLOW_DATA_ATTR = true;
5724
+ /* Decide if unknown protocols are okay */
5725
+ let ALLOW_UNKNOWN_PROTOCOLS = false;
5726
+ /* Decide if self-closing tags in attributes are allowed.
5727
+ * Usually removed due to a mXSS issue in jQuery 3.0 */
5728
+ let ALLOW_SELF_CLOSE_IN_ATTR = true;
5729
+ /* Output should be safe for common template engines.
5730
+ * This means, DOMPurify removes data attributes, mustaches and ERB
5731
+ */
5732
+ let SAFE_FOR_TEMPLATES = false;
5733
+ /* Output should be safe even for XML used within HTML and alike.
5734
+ * This means, DOMPurify removes comments when containing risky content.
5735
+ */
5736
+ let SAFE_FOR_XML = true;
5737
+ /* Decide if document with <html>... should be returned */
5738
+ let WHOLE_DOCUMENT = false;
5739
+ /* Track whether config is already set on this instance of DOMPurify. */
5740
+ let SET_CONFIG = false;
5741
+ /* Decide if all elements (e.g. style, script) must be children of
5742
+ * document.body. By default, browsers might move them to document.head */
5743
+ let FORCE_BODY = false;
5744
+ /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html
5745
+ * string (or a TrustedHTML object if Trusted Types are supported).
5746
+ * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead
5747
+ */
5748
+ let RETURN_DOM = false;
5749
+ /* Decide if a DOM `DocumentFragment` should be returned, instead of a html
5750
+ * string (or a TrustedHTML object if Trusted Types are supported) */
5751
+ let RETURN_DOM_FRAGMENT = false;
5752
+ /* Try to return a Trusted Type object instead of a string, return a string in
5753
+ * case Trusted Types are not supported */
5754
+ let RETURN_TRUSTED_TYPE = false;
5755
+ /* Output should be free from DOM clobbering attacks?
5756
+ * This sanitizes markups named with colliding, clobberable built-in DOM APIs.
5757
+ */
5758
+ let SANITIZE_DOM = true;
5759
+ /* Achieve full DOM Clobbering protection by isolating the namespace of named
5760
+ * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.
5761
+ *
5762
+ * HTML/DOM spec rules that enable DOM Clobbering:
5763
+ * - Named Access on Window (§7.3.3)
5764
+ * - DOM Tree Accessors (§3.1.5)
5765
+ * - Form Element Parent-Child Relations (§4.10.3)
5766
+ * - Iframe srcdoc / Nested WindowProxies (§4.8.5)
5767
+ * - HTMLCollection (§4.2.10.2)
5768
+ *
5769
+ * Namespace isolation is implemented by prefixing `id` and `name` attributes
5770
+ * with a constant string, i.e., `user-content-`
5771
+ */
5772
+ let SANITIZE_NAMED_PROPS = false;
5773
+ const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';
5774
+ /* Keep element content when removing element? */
5775
+ let KEEP_CONTENT = true;
5776
+ /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead
5777
+ * of importing it into a new Document and returning a sanitized copy */
5778
+ let IN_PLACE = false;
5779
+ /* Allow usage of profiles like html, svg and mathMl */
5780
+ let USE_PROFILES = {};
5781
+ /* Tags to ignore content of when KEEP_CONTENT is true */
5782
+ let FORBID_CONTENTS = null;
5783
+ const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);
5784
+ /* Tags that are safe for data: URIs */
5785
+ let DATA_URI_TAGS = null;
5786
+ const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);
5787
+ /* Attributes safe for values like "javascript:" */
5788
+ let URI_SAFE_ATTRIBUTES = null;
5789
+ const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);
5790
+ const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';
5791
+ const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
5792
+ const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';
5793
+ /* Document namespace */
5794
+ let NAMESPACE = HTML_NAMESPACE;
5795
+ let IS_EMPTY_INPUT = false;
5796
+ /* Allowed XHTML+XML namespaces */
5797
+ let ALLOWED_NAMESPACES = null;
5798
+ const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);
5799
+ let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);
5800
+ let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);
5801
+ // Certain elements are allowed in both SVG and HTML
5802
+ // namespace. We need to specify them explicitly
5803
+ // so that they don't get erroneously deleted from
5804
+ // HTML namespace.
5805
+ const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);
5806
+ /* Parsing of strict XHTML documents */
5807
+ let PARSER_MEDIA_TYPE = null;
5808
+ const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];
5809
+ const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';
5810
+ let transformCaseFunc = null;
5811
+ /* Keep a reference to config to pass to hooks */
5812
+ let CONFIG = null;
5813
+ /* Ideally, do not touch anything below this line */
5814
+ /* ______________________________________________ */
5815
+ const formElement = document.createElement('form');
5816
+ const isRegexOrFunction = function isRegexOrFunction(testValue) {
5817
+ return testValue instanceof RegExp || testValue instanceof Function;
5818
+ };
5819
+ /**
5820
+ * _parseConfig
5821
+ *
5822
+ * @param cfg optional config literal
5823
+ */
5824
+ // eslint-disable-next-line complexity
5825
+ const _parseConfig = function _parseConfig() {
5826
+ let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5827
+ if (CONFIG && CONFIG === cfg) {
5828
+ return;
5829
+ }
5830
+ /* Shield configuration object from tampering */
5831
+ if (!cfg || typeof cfg !== 'object') {
5832
+ cfg = {};
5833
+ }
5834
+ /* Shield configuration object from prototype pollution */
5835
+ cfg = clone$1(cfg);
5836
+ PARSER_MEDIA_TYPE =
5837
+ // eslint-disable-next-line unicorn/prefer-includes
5838
+ SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;
5839
+ // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.
5840
+ transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;
5841
+ /* Set configuration parameters */
5842
+ ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;
5843
+ ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;
5844
+ ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;
5845
+ URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone$1(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;
5846
+ DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone$1(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;
5847
+ FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;
5848
+ FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone$1({});
5849
+ FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone$1({});
5850
+ USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;
5851
+ ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true
5852
+ ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true
5853
+ ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false
5854
+ ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true
5855
+ SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false
5856
+ SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true
5857
+ WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false
5858
+ RETURN_DOM = cfg.RETURN_DOM || false; // Default false
5859
+ RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false
5860
+ RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false
5861
+ FORCE_BODY = cfg.FORCE_BODY || false; // Default false
5862
+ SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true
5863
+ SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false
5864
+ KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true
5865
+ IN_PLACE = cfg.IN_PLACE || false; // Default false
5866
+ IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;
5867
+ NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;
5868
+ MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;
5869
+ HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;
5870
+ CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};
5871
+ if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {
5872
+ CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;
5873
+ }
5874
+ if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {
5875
+ CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;
5876
+ }
5877
+ if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {
5878
+ CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;
5879
+ }
5880
+ if (SAFE_FOR_TEMPLATES) {
5881
+ ALLOW_DATA_ATTR = false;
5882
+ }
5883
+ if (RETURN_DOM_FRAGMENT) {
5884
+ RETURN_DOM = true;
5885
+ }
5886
+ /* Parse profile info */
5887
+ if (USE_PROFILES) {
5888
+ ALLOWED_TAGS = addToSet({}, text);
5889
+ ALLOWED_ATTR = [];
5890
+ if (USE_PROFILES.html === true) {
5891
+ addToSet(ALLOWED_TAGS, html$1);
5892
+ addToSet(ALLOWED_ATTR, html);
5893
+ }
5894
+ if (USE_PROFILES.svg === true) {
5895
+ addToSet(ALLOWED_TAGS, svg$1);
5896
+ addToSet(ALLOWED_ATTR, svg);
5897
+ addToSet(ALLOWED_ATTR, xml);
5898
+ }
5899
+ if (USE_PROFILES.svgFilters === true) {
5900
+ addToSet(ALLOWED_TAGS, svgFilters);
5901
+ addToSet(ALLOWED_ATTR, svg);
5902
+ addToSet(ALLOWED_ATTR, xml);
5903
+ }
5904
+ if (USE_PROFILES.mathMl === true) {
5905
+ addToSet(ALLOWED_TAGS, mathMl$1);
5906
+ addToSet(ALLOWED_ATTR, mathMl);
5907
+ addToSet(ALLOWED_ATTR, xml);
5908
+ }
5909
+ }
5910
+ /* Merge configuration parameters */
5911
+ if (cfg.ADD_TAGS) {
5912
+ if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
5913
+ ALLOWED_TAGS = clone$1(ALLOWED_TAGS);
5914
+ }
5915
+ addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
5916
+ }
5917
+ if (cfg.ADD_ATTR) {
5918
+ if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
5919
+ ALLOWED_ATTR = clone$1(ALLOWED_ATTR);
5920
+ }
5921
+ addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);
5922
+ }
5923
+ if (cfg.ADD_URI_SAFE_ATTR) {
5924
+ addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);
5925
+ }
5926
+ if (cfg.FORBID_CONTENTS) {
5927
+ if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
5928
+ FORBID_CONTENTS = clone$1(FORBID_CONTENTS);
5929
+ }
5930
+ addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);
5931
+ }
5932
+ /* Add #text in case KEEP_CONTENT is set to true */
5933
+ if (KEEP_CONTENT) {
5934
+ ALLOWED_TAGS['#text'] = true;
5935
+ }
5936
+ /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */
5937
+ if (WHOLE_DOCUMENT) {
5938
+ addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);
5939
+ }
5940
+ /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */
5941
+ if (ALLOWED_TAGS.table) {
5942
+ addToSet(ALLOWED_TAGS, ['tbody']);
5943
+ delete FORBID_TAGS.tbody;
5944
+ }
5945
+ if (cfg.TRUSTED_TYPES_POLICY) {
5946
+ if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {
5947
+ throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');
5948
+ }
5949
+ if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {
5950
+ throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');
5951
+ }
5952
+ // Overwrite existing TrustedTypes policy.
5953
+ trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;
5954
+ // Sign local variables required by `sanitize`.
5955
+ emptyHTML = trustedTypesPolicy.createHTML('');
5956
+ } else {
5957
+ // Uninitialized policy, attempt to initialize the internal dompurify policy.
5958
+ if (trustedTypesPolicy === undefined) {
5959
+ trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);
5960
+ }
5961
+ // If creating the internal policy succeeded sign internal variables.
5962
+ if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {
5963
+ emptyHTML = trustedTypesPolicy.createHTML('');
5964
+ }
5965
+ }
5966
+ // Prevent further manipulation of configuration.
5967
+ // Not available in IE8, Safari 5, etc.
5968
+ if (freeze) {
5969
+ freeze(cfg);
5970
+ }
5971
+ CONFIG = cfg;
5972
+ };
5973
+ /* Keep track of all possible SVG and MathML tags
5974
+ * so that we can perform the namespace checks
5975
+ * correctly. */
5976
+ const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);
5977
+ const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);
5978
+ /**
5979
+ * @param element a DOM element whose namespace is being checked
5980
+ * @returns Return false if the element has a
5981
+ * namespace that a spec-compliant parser would never
5982
+ * return. Return true otherwise.
5983
+ */
5984
+ const _checkValidNamespace = function _checkValidNamespace(element) {
5985
+ let parent = getParentNode(element);
5986
+ // In JSDOM, if we're inside shadow DOM, then parentNode
5987
+ // can be null. We just simulate parent in this case.
5988
+ if (!parent || !parent.tagName) {
5989
+ parent = {
5990
+ namespaceURI: NAMESPACE,
5991
+ tagName: 'template'
5992
+ };
5993
+ }
5994
+ const tagName = stringToLowerCase(element.tagName);
5995
+ const parentTagName = stringToLowerCase(parent.tagName);
5996
+ if (!ALLOWED_NAMESPACES[element.namespaceURI]) {
5997
+ return false;
5998
+ }
5999
+ if (element.namespaceURI === SVG_NAMESPACE) {
6000
+ // The only way to switch from HTML namespace to SVG
6001
+ // is via <svg>. If it happens via any other tag, then
6002
+ // it should be killed.
6003
+ if (parent.namespaceURI === HTML_NAMESPACE) {
6004
+ return tagName === 'svg';
6005
+ }
6006
+ // The only way to switch from MathML to SVG is via`
6007
+ // svg if parent is either <annotation-xml> or MathML
6008
+ // text integration points.
6009
+ if (parent.namespaceURI === MATHML_NAMESPACE) {
6010
+ return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);
6011
+ }
6012
+ // We only allow elements that are defined in SVG
6013
+ // spec. All others are disallowed in SVG namespace.
6014
+ return Boolean(ALL_SVG_TAGS[tagName]);
6015
+ }
6016
+ if (element.namespaceURI === MATHML_NAMESPACE) {
6017
+ // The only way to switch from HTML namespace to MathML
6018
+ // is via <math>. If it happens via any other tag, then
6019
+ // it should be killed.
6020
+ if (parent.namespaceURI === HTML_NAMESPACE) {
6021
+ return tagName === 'math';
6022
+ }
6023
+ // The only way to switch from SVG to MathML is via
6024
+ // <math> and HTML integration points
6025
+ if (parent.namespaceURI === SVG_NAMESPACE) {
6026
+ return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];
6027
+ }
6028
+ // We only allow elements that are defined in MathML
6029
+ // spec. All others are disallowed in MathML namespace.
6030
+ return Boolean(ALL_MATHML_TAGS[tagName]);
6031
+ }
6032
+ if (element.namespaceURI === HTML_NAMESPACE) {
6033
+ // The only way to switch from SVG to HTML is via
6034
+ // HTML integration points, and from MathML to HTML
6035
+ // is via MathML text integration points
6036
+ if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {
6037
+ return false;
6038
+ }
6039
+ if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {
6040
+ return false;
6041
+ }
6042
+ // We disallow tags that are specific for MathML
6043
+ // or SVG and should never appear in HTML namespace
6044
+ return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);
6045
+ }
6046
+ // For XHTML and XML documents that support custom namespaces
6047
+ if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {
6048
+ return true;
6049
+ }
6050
+ // The code should never reach this place (this means
6051
+ // that the element somehow got namespace that is not
6052
+ // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).
6053
+ // Return false just in case.
6054
+ return false;
6055
+ };
6056
+ /**
6057
+ * _forceRemove
6058
+ *
6059
+ * @param node a DOM node
6060
+ */
6061
+ const _forceRemove = function _forceRemove(node) {
6062
+ arrayPush(DOMPurify.removed, {
6063
+ element: node
6064
+ });
6065
+ try {
6066
+ // eslint-disable-next-line unicorn/prefer-dom-node-remove
6067
+ getParentNode(node).removeChild(node);
6068
+ } catch (_) {
6069
+ remove(node);
6070
+ }
6071
+ };
6072
+ /**
6073
+ * _removeAttribute
6074
+ *
6075
+ * @param name an Attribute name
6076
+ * @param element a DOM node
6077
+ */
6078
+ const _removeAttribute = function _removeAttribute(name, element) {
6079
+ try {
6080
+ arrayPush(DOMPurify.removed, {
6081
+ attribute: element.getAttributeNode(name),
6082
+ from: element
6083
+ });
6084
+ } catch (_) {
6085
+ arrayPush(DOMPurify.removed, {
6086
+ attribute: null,
6087
+ from: element
6088
+ });
6089
+ }
6090
+ element.removeAttribute(name);
6091
+ // We void attribute values for unremovable "is" attributes
6092
+ if (name === 'is') {
6093
+ if (RETURN_DOM || RETURN_DOM_FRAGMENT) {
6094
+ try {
6095
+ _forceRemove(element);
6096
+ } catch (_) {}
6097
+ } else {
6098
+ try {
6099
+ element.setAttribute(name, '');
6100
+ } catch (_) {}
6101
+ }
6102
+ }
6103
+ };
6104
+ /**
6105
+ * _initDocument
6106
+ *
6107
+ * @param dirty - a string of dirty markup
6108
+ * @return a DOM, filled with the dirty markup
6109
+ */
6110
+ const _initDocument = function _initDocument(dirty) {
6111
+ /* Create a HTML document */
6112
+ let doc = null;
6113
+ let leadingWhitespace = null;
6114
+ if (FORCE_BODY) {
6115
+ dirty = '<remove></remove>' + dirty;
6116
+ } else {
6117
+ /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */
6118
+ const matches = stringMatch(dirty, /^[\r\n\t ]+/);
6119
+ leadingWhitespace = matches && matches[0];
6120
+ }
6121
+ if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {
6122
+ // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)
6123
+ dirty = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + dirty + '</body></html>';
6124
+ }
6125
+ const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;
6126
+ /*
6127
+ * Use the DOMParser API by default, fallback later if needs be
6128
+ * DOMParser not work for svg when has multiple root element.
6129
+ */
6130
+ if (NAMESPACE === HTML_NAMESPACE) {
6131
+ try {
6132
+ doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);
6133
+ } catch (_) {}
6134
+ }
6135
+ /* Use createHTMLDocument in case DOMParser is not available */
6136
+ if (!doc || !doc.documentElement) {
6137
+ doc = implementation.createDocument(NAMESPACE, 'template', null);
6138
+ try {
6139
+ doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;
6140
+ } catch (_) {
6141
+ // Syntax error if dirtyPayload is invalid xml
6142
+ }
6143
+ }
6144
+ const body = doc.body || doc.documentElement;
6145
+ if (dirty && leadingWhitespace) {
6146
+ body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);
6147
+ }
6148
+ /* Work on whole document or just its body */
6149
+ if (NAMESPACE === HTML_NAMESPACE) {
6150
+ return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];
6151
+ }
6152
+ return WHOLE_DOCUMENT ? doc.documentElement : body;
6153
+ };
6154
+ /**
6155
+ * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.
6156
+ *
6157
+ * @param root The root element or node to start traversing on.
6158
+ * @return The created NodeIterator
6159
+ */
6160
+ const _createNodeIterator = function _createNodeIterator(root) {
6161
+ return createNodeIterator.call(root.ownerDocument || root, root,
6162
+ // eslint-disable-next-line no-bitwise
6163
+ NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);
6164
+ };
6165
+ /**
6166
+ * _isClobbered
6167
+ *
6168
+ * @param element element to check for clobbering attacks
6169
+ * @return true if clobbered, false if safe
6170
+ */
6171
+ const _isClobbered = function _isClobbered(element) {
6172
+ return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');
6173
+ };
6174
+ /**
6175
+ * Checks whether the given object is a DOM node.
6176
+ *
6177
+ * @param value object to check whether it's a DOM node
6178
+ * @return true is object is a DOM node
6179
+ */
6180
+ const _isNode = function _isNode(value) {
6181
+ return typeof Node === 'function' && value instanceof Node;
6182
+ };
6183
+ function _executeHooks(hooks, currentNode, data) {
6184
+ arrayForEach(hooks, hook => {
6185
+ hook.call(DOMPurify, currentNode, data, CONFIG);
6186
+ });
6187
+ }
6188
+ /**
6189
+ * _sanitizeElements
6190
+ *
6191
+ * @protect nodeName
6192
+ * @protect textContent
6193
+ * @protect removeChild
6194
+ * @param currentNode to check for permission to exist
6195
+ * @return true if node was killed, false if left alive
6196
+ */
6197
+ const _sanitizeElements = function _sanitizeElements(currentNode) {
6198
+ let content = null;
6199
+ /* Execute a hook if present */
6200
+ _executeHooks(hooks.beforeSanitizeElements, currentNode, null);
6201
+ /* Check if element is clobbered or can clobber */
6202
+ if (_isClobbered(currentNode)) {
6203
+ _forceRemove(currentNode);
6204
+ return true;
6205
+ }
6206
+ /* Now let's check the element's type and name */
6207
+ const tagName = transformCaseFunc(currentNode.nodeName);
6208
+ /* Execute a hook if present */
6209
+ _executeHooks(hooks.uponSanitizeElement, currentNode, {
6210
+ tagName,
6211
+ allowedTags: ALLOWED_TAGS
6212
+ });
6213
+ /* Detect mXSS attempts abusing namespace confusion */
6214
+ if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\w!]/g, currentNode.textContent)) {
6215
+ _forceRemove(currentNode);
6216
+ return true;
6217
+ }
6218
+ /* Remove any occurrence of processing instructions */
6219
+ if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {
6220
+ _forceRemove(currentNode);
6221
+ return true;
6222
+ }
6223
+ /* Remove any kind of possibly harmful comments */
6224
+ if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\w]/g, currentNode.data)) {
6225
+ _forceRemove(currentNode);
6226
+ return true;
6227
+ }
6228
+ /* Remove element if anything forbids its presence */
6229
+ if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
6230
+ /* Check if we have a custom element to handle */
6231
+ if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {
6232
+ if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {
6233
+ return false;
6234
+ }
6235
+ if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {
6236
+ return false;
6237
+ }
6238
+ }
6239
+ /* Keep content except for bad-listed elements */
6240
+ if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {
6241
+ const parentNode = getParentNode(currentNode) || currentNode.parentNode;
6242
+ const childNodes = getChildNodes(currentNode) || currentNode.childNodes;
6243
+ if (childNodes && parentNode) {
6244
+ const childCount = childNodes.length;
6245
+ for (let i = childCount - 1; i >= 0; --i) {
6246
+ const childClone = cloneNode(childNodes[i], true);
6247
+ childClone.__removalCount = (currentNode.__removalCount || 0) + 1;
6248
+ parentNode.insertBefore(childClone, getNextSibling(currentNode));
6249
+ }
6250
+ }
6251
+ }
6252
+ _forceRemove(currentNode);
6253
+ return true;
6254
+ }
6255
+ /* Check whether element has a valid namespace */
6256
+ if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {
6257
+ _forceRemove(currentNode);
6258
+ return true;
6259
+ }
6260
+ /* Make sure that older browsers don't get fallback-tag mXSS */
6261
+ if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) {
6262
+ _forceRemove(currentNode);
6263
+ return true;
6264
+ }
6265
+ /* Sanitize element content to be template-safe */
6266
+ if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {
6267
+ /* Get the element's text content */
6268
+ content = currentNode.textContent;
6269
+ arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
6270
+ content = stringReplace(content, expr, ' ');
6271
+ });
6272
+ if (currentNode.textContent !== content) {
6273
+ arrayPush(DOMPurify.removed, {
6274
+ element: currentNode.cloneNode()
6275
+ });
6276
+ currentNode.textContent = content;
6277
+ }
6278
+ }
6279
+ /* Execute a hook if present */
6280
+ _executeHooks(hooks.afterSanitizeElements, currentNode, null);
6281
+ return false;
6282
+ };
6283
+ /**
6284
+ * _isValidAttribute
6285
+ *
6286
+ * @param lcTag Lowercase tag name of containing element.
6287
+ * @param lcName Lowercase attribute name.
6288
+ * @param value Attribute value.
6289
+ * @return Returns true if `value` is valid, otherwise false.
6290
+ */
6291
+ // eslint-disable-next-line complexity
6292
+ const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {
6293
+ /* Make sure attribute cannot clobber */
6294
+ if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {
6295
+ return false;
6296
+ }
6297
+ /* Allow valid data-* attributes: At least one character after "-"
6298
+ (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)
6299
+ XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)
6300
+ We don't need to check the value; it's always URI safe. */
6301
+ if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {
6302
+ if (
6303
+ // First condition does a very basic check if a) it's basically a valid custom element tagname AND
6304
+ // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
6305
+ // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck
6306
+ _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||
6307
+ // Alternative, second condition checks if it's an `is`-attribute, AND
6308
+ // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck
6309
+ lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {
6310
+ return false;
6311
+ }
6312
+ /* Check value is safe. First, is attr inert? If so, is safe */
6313
+ } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {
6314
+ return false;
6315
+ } else ;
6316
+ return true;
6317
+ };
6318
+ /**
6319
+ * _isBasicCustomElement
6320
+ * checks if at least one dash is included in tagName, and it's not the first char
6321
+ * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name
6322
+ *
6323
+ * @param tagName name of the tag of the node to sanitize
6324
+ * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.
6325
+ */
6326
+ const _isBasicCustomElement = function _isBasicCustomElement(tagName) {
6327
+ return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);
6328
+ };
6329
+ /**
6330
+ * _sanitizeAttributes
6331
+ *
6332
+ * @protect attributes
6333
+ * @protect nodeName
6334
+ * @protect removeAttribute
6335
+ * @protect setAttribute
6336
+ *
6337
+ * @param currentNode to sanitize
6338
+ */
6339
+ const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {
6340
+ /* Execute a hook if present */
6341
+ _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);
6342
+ const {
6343
+ attributes
6344
+ } = currentNode;
6345
+ /* Check if we have attributes; if not we might have a text node */
6346
+ if (!attributes || _isClobbered(currentNode)) {
6347
+ return;
6348
+ }
6349
+ const hookEvent = {
6350
+ attrName: '',
6351
+ attrValue: '',
6352
+ keepAttr: true,
6353
+ allowedAttributes: ALLOWED_ATTR,
6354
+ forceKeepAttr: undefined
6355
+ };
6356
+ let l = attributes.length;
6357
+ /* Go backwards over all attributes; safely remove bad ones */
6358
+ while (l--) {
6359
+ const attr = attributes[l];
6360
+ const {
6361
+ name,
6362
+ namespaceURI,
6363
+ value: attrValue
6364
+ } = attr;
6365
+ const lcName = transformCaseFunc(name);
6366
+ const initValue = attrValue;
6367
+ let value = name === 'value' ? initValue : stringTrim(initValue);
6368
+ /* Execute a hook if present */
6369
+ hookEvent.attrName = lcName;
6370
+ hookEvent.attrValue = value;
6371
+ hookEvent.keepAttr = true;
6372
+ hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set
6373
+ _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);
6374
+ value = hookEvent.attrValue;
6375
+ /* Full DOM Clobbering protection via namespace isolation,
6376
+ * Prefix id and name attributes with `user-content-`
6377
+ */
6378
+ if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {
6379
+ // Remove the attribute with this value
6380
+ _removeAttribute(name, currentNode);
6381
+ // Prefix the value and later re-create the attribute with the sanitized value
6382
+ value = SANITIZE_NAMED_PROPS_PREFIX + value;
6383
+ }
6384
+ /* Work around a security issue with comments inside attributes */
6385
+ if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title)/i, value)) {
6386
+ _removeAttribute(name, currentNode);
6387
+ continue;
6388
+ }
6389
+ /* Did the hooks approve of the attribute? */
6390
+ if (hookEvent.forceKeepAttr) {
6391
+ continue;
6392
+ }
6393
+ /* Did the hooks approve of the attribute? */
6394
+ if (!hookEvent.keepAttr) {
6395
+ _removeAttribute(name, currentNode);
6396
+ continue;
6397
+ }
6398
+ /* Work around a security issue in jQuery 3.0 */
6399
+ if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) {
6400
+ _removeAttribute(name, currentNode);
6401
+ continue;
6402
+ }
6403
+ /* Sanitize attribute content to be template-safe */
6404
+ if (SAFE_FOR_TEMPLATES) {
6405
+ arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
6406
+ value = stringReplace(value, expr, ' ');
6407
+ });
6408
+ }
6409
+ /* Is `value` valid for this attribute? */
6410
+ const lcTag = transformCaseFunc(currentNode.nodeName);
6411
+ if (!_isValidAttribute(lcTag, lcName, value)) {
6412
+ _removeAttribute(name, currentNode);
6413
+ continue;
6414
+ }
6415
+ /* Handle attributes that require Trusted Types */
6416
+ if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {
6417
+ if (namespaceURI) ; else {
6418
+ switch (trustedTypes.getAttributeType(lcTag, lcName)) {
6419
+ case 'TrustedHTML':
6420
+ {
6421
+ value = trustedTypesPolicy.createHTML(value);
6422
+ break;
6423
+ }
6424
+ case 'TrustedScriptURL':
6425
+ {
6426
+ value = trustedTypesPolicy.createScriptURL(value);
6427
+ break;
6428
+ }
6429
+ }
6430
+ }
6431
+ }
6432
+ /* Handle invalid data-* attribute set by try-catching it */
6433
+ if (value !== initValue) {
6434
+ try {
6435
+ if (namespaceURI) {
6436
+ currentNode.setAttributeNS(namespaceURI, name, value);
6437
+ } else {
6438
+ /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */
6439
+ currentNode.setAttribute(name, value);
6440
+ }
6441
+ if (_isClobbered(currentNode)) {
6442
+ _forceRemove(currentNode);
6443
+ } else {
6444
+ arrayPop(DOMPurify.removed);
6445
+ }
6446
+ } catch (_) {
6447
+ _removeAttribute(name, currentNode);
6448
+ }
6449
+ }
6450
+ }
6451
+ /* Execute a hook if present */
6452
+ _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);
6453
+ };
6454
+ /**
6455
+ * _sanitizeShadowDOM
6456
+ *
6457
+ * @param fragment to iterate over recursively
6458
+ */
6459
+ const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {
6460
+ let shadowNode = null;
6461
+ const shadowIterator = _createNodeIterator(fragment);
6462
+ /* Execute a hook if present */
6463
+ _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);
6464
+ while (shadowNode = shadowIterator.nextNode()) {
6465
+ /* Execute a hook if present */
6466
+ _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);
6467
+ /* Sanitize tags and elements */
6468
+ _sanitizeElements(shadowNode);
6469
+ /* Check attributes next */
6470
+ _sanitizeAttributes(shadowNode);
6471
+ /* Deep shadow DOM detected */
6472
+ if (shadowNode.content instanceof DocumentFragment) {
6473
+ _sanitizeShadowDOM(shadowNode.content);
6474
+ }
6475
+ }
6476
+ /* Execute a hook if present */
6477
+ _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);
6478
+ };
6479
+ // eslint-disable-next-line complexity
6480
+ DOMPurify.sanitize = function (dirty) {
6481
+ let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
6482
+ let body = null;
6483
+ let importedNode = null;
6484
+ let currentNode = null;
6485
+ let returnNode = null;
6486
+ /* Make sure we have a string to sanitize.
6487
+ DO NOT return early, as this will return the wrong type if
6488
+ the user has requested a DOM object rather than a string */
6489
+ IS_EMPTY_INPUT = !dirty;
6490
+ if (IS_EMPTY_INPUT) {
6491
+ dirty = '<!-->';
6492
+ }
6493
+ /* Stringify, in case dirty is an object */
6494
+ if (typeof dirty !== 'string' && !_isNode(dirty)) {
6495
+ if (typeof dirty.toString === 'function') {
6496
+ dirty = dirty.toString();
6497
+ if (typeof dirty !== 'string') {
6498
+ throw typeErrorCreate('dirty is not a string, aborting');
6499
+ }
6500
+ } else {
6501
+ throw typeErrorCreate('toString is not a function');
6502
+ }
6503
+ }
6504
+ /* Return dirty HTML if DOMPurify cannot run */
6505
+ if (!DOMPurify.isSupported) {
6506
+ return dirty;
6507
+ }
6508
+ /* Assign config vars */
6509
+ if (!SET_CONFIG) {
6510
+ _parseConfig(cfg);
6511
+ }
6512
+ /* Clean up removed elements */
6513
+ DOMPurify.removed = [];
6514
+ /* Check if dirty is correctly typed for IN_PLACE */
6515
+ if (typeof dirty === 'string') {
6516
+ IN_PLACE = false;
6517
+ }
6518
+ if (IN_PLACE) {
6519
+ /* Do some early pre-sanitization to avoid unsafe root nodes */
6520
+ if (dirty.nodeName) {
6521
+ const tagName = transformCaseFunc(dirty.nodeName);
6522
+ if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
6523
+ throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');
6524
+ }
6525
+ }
6526
+ } else if (dirty instanceof Node) {
6527
+ /* If dirty is a DOM element, append to an empty document to avoid
6528
+ elements being stripped by the parser */
6529
+ body = _initDocument('<!---->');
6530
+ importedNode = body.ownerDocument.importNode(dirty, true);
6531
+ if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {
6532
+ /* Node is already a body, use as is */
6533
+ body = importedNode;
6534
+ } else if (importedNode.nodeName === 'HTML') {
6535
+ body = importedNode;
6536
+ } else {
6537
+ // eslint-disable-next-line unicorn/prefer-dom-node-append
6538
+ body.appendChild(importedNode);
6539
+ }
6540
+ } else {
6541
+ /* Exit directly if we have nothing to do */
6542
+ if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&
6543
+ // eslint-disable-next-line unicorn/prefer-includes
6544
+ dirty.indexOf('<') === -1) {
6545
+ return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;
6546
+ }
6547
+ /* Initialize the document to work on */
6548
+ body = _initDocument(dirty);
6549
+ /* Check we have a DOM node from the data */
6550
+ if (!body) {
6551
+ return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';
6552
+ }
6553
+ }
6554
+ /* Remove first element node (ours) if FORCE_BODY is set */
6555
+ if (body && FORCE_BODY) {
6556
+ _forceRemove(body.firstChild);
6557
+ }
6558
+ /* Get node iterator */
6559
+ const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);
6560
+ /* Now start iterating over the created document */
6561
+ while (currentNode = nodeIterator.nextNode()) {
6562
+ /* Sanitize tags and elements */
6563
+ _sanitizeElements(currentNode);
6564
+ /* Check attributes next */
6565
+ _sanitizeAttributes(currentNode);
6566
+ /* Shadow DOM detected, sanitize it */
6567
+ if (currentNode.content instanceof DocumentFragment) {
6568
+ _sanitizeShadowDOM(currentNode.content);
6569
+ }
6570
+ }
6571
+ /* If we sanitized `dirty` in-place, return it. */
6572
+ if (IN_PLACE) {
6573
+ return dirty;
6574
+ }
6575
+ /* Return sanitized string or DOM */
6576
+ if (RETURN_DOM) {
6577
+ if (RETURN_DOM_FRAGMENT) {
6578
+ returnNode = createDocumentFragment.call(body.ownerDocument);
6579
+ while (body.firstChild) {
6580
+ // eslint-disable-next-line unicorn/prefer-dom-node-append
6581
+ returnNode.appendChild(body.firstChild);
6582
+ }
6583
+ } else {
6584
+ returnNode = body;
6585
+ }
6586
+ if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {
6587
+ /*
6588
+ AdoptNode() is not used because internal state is not reset
6589
+ (e.g. the past names map of a HTMLFormElement), this is safe
6590
+ in theory but we would rather not risk another attack vector.
6591
+ The state that is cloned by importNode() is explicitly defined
6592
+ by the specs.
6593
+ */
6594
+ returnNode = importNode.call(originalDocument, returnNode, true);
6595
+ }
6596
+ return returnNode;
6597
+ }
6598
+ let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;
6599
+ /* Serialize doctype if allowed */
6600
+ if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {
6601
+ serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\n' + serializedHTML;
6602
+ }
6603
+ /* Sanitize final string template-safe */
6604
+ if (SAFE_FOR_TEMPLATES) {
6605
+ arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {
6606
+ serializedHTML = stringReplace(serializedHTML, expr, ' ');
6607
+ });
6608
+ }
6609
+ return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;
6610
+ };
6611
+ DOMPurify.setConfig = function () {
6612
+ let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6613
+ _parseConfig(cfg);
6614
+ SET_CONFIG = true;
6615
+ };
6616
+ DOMPurify.clearConfig = function () {
6617
+ CONFIG = null;
6618
+ SET_CONFIG = false;
6619
+ };
6620
+ DOMPurify.isValidAttribute = function (tag, attr, value) {
6621
+ /* Initialize shared config vars if necessary. */
6622
+ if (!CONFIG) {
6623
+ _parseConfig({});
6624
+ }
6625
+ const lcTag = transformCaseFunc(tag);
6626
+ const lcName = transformCaseFunc(attr);
6627
+ return _isValidAttribute(lcTag, lcName, value);
6628
+ };
6629
+ DOMPurify.addHook = function (entryPoint, hookFunction) {
6630
+ if (typeof hookFunction !== 'function') {
6631
+ return;
6632
+ }
6633
+ arrayPush(hooks[entryPoint], hookFunction);
6634
+ };
6635
+ DOMPurify.removeHook = function (entryPoint, hookFunction) {
6636
+ if (hookFunction !== undefined) {
6637
+ const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);
6638
+ return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];
6639
+ }
6640
+ return arrayPop(hooks[entryPoint]);
6641
+ };
6642
+ DOMPurify.removeHooks = function (entryPoint) {
6643
+ hooks[entryPoint] = [];
6644
+ };
6645
+ DOMPurify.removeAllHooks = function () {
6646
+ hooks = _createHooksMap();
6647
+ };
6648
+ return DOMPurify;
6649
+ }
6650
+ var purify = createDOMPurify();
6651
+
6652
+ const pdsComboboxCss = ":host{display:block}.pds-combobox{position:relative}.pds-combobox__label{display:block;font-size:0.95rem;-webkit-margin-after:var(--pine-dimension-150);margin-block-end:var(--pine-dimension-150)}.pds-combobox__input{background:var(--pine-color-background-container);border:1px solid var(--pine-color-border);border-radius:var(--pine-dimension-125);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--pine-color-text-active);-ms-flex:1;flex:1;font:var(--pine-typography-body-medium);padding:var(--pine-dimension-xs) var(--pine-dimension-150);-webkit-transition:border-color 0.2s ease;transition:border-color 0.2s ease;width:100%}.pds-combobox__input:hover:not(:disabled){border-color:var(--pine-color-border-hover)}.pds-combobox__input:disabled{background:var(--pine-color-background-container-disabled);border-color:var(--pine-color-border-disabled);color:var(--pine-color-text-disabled);cursor:not-allowed}.pds-combobox__input:disabled::-webkit-input-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-combobox__input:disabled::-moz-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-combobox__input:disabled:-ms-input-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-combobox__input:disabled::-ms-input-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-combobox__input:disabled::placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-combobox__input:focus-visible{border-color:var(--pine-color-border-active);outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}.pds-combobox__input::-webkit-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__input::-moz-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__input:-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__input::-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__input::placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__listbox{background:var(--pine-color-background-container);border:0;border-radius:var(--pine-dimension-125);-webkit-box-shadow:var(--pine-box-shadow);box-shadow:var(--pine-box-shadow);list-style:none;margin:0;min-width:220px;overflow-y:auto;padding:var(--pine-dimension-xs);position:absolute;z-index:1000}.pds-combobox__option{-ms-flex-align:center;align-items:center;background:transparent;border-radius:var(--pine-dimension-125);cursor:pointer;display:-ms-flexbox;display:flex;font:var(--pine-typography-body-medium);-ms-flex-pack:justify;justify-content:space-between;padding:var(--pine-dimension-xs) var(--pine-dimension-sm);-webkit-transition:background 0.15s;transition:background 0.15s}.pds-combobox__option[aria-selected=true]{background:var(--pine-color-grey-150)}.pds-combobox__option .pds-combobox__option--layout .pds-combobox__option-layout-wrapper{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;width:100%}.pds-combobox__option:last-child{-webkit-margin-after:0;margin-block-end:0}.pds-combobox__option--highlighted,.pds-combobox__option[selected],.pds-combobox__option--selected{background:var(--pine-color-grey-150)}.pds-combobox__option-check{color:currentColor;font-size:var(--pine-dimension-150);-webkit-margin-start:var(--pine-dimension-150);margin-inline-start:var(--pine-dimension-150)}.pds-combobox__button-trigger{-ms-flex-align:center;align-items:center;background:var(--color-background-default, var(--pine-color-secondary));border:var(--pine-border);border-radius:var(--pine-border-radius-full);color:var(--color-text-default, #ffffff);cursor:pointer;display:-ms-flexbox;display:flex;font:var(--pine-typography-body-medium);-ms-flex-pack:justify;justify-content:space-between;min-height:var(--pine-dimension-450);outline:none;padding:0 var(--pine-dimension-sm);-webkit-transition:border-color 0.15s, background 0.15s, -webkit-box-shadow 0.15s;transition:border-color 0.15s, background 0.15s, -webkit-box-shadow 0.15s;transition:border-color 0.15s, box-shadow 0.15s, background 0.15s;transition:border-color 0.15s, box-shadow 0.15s, background 0.15s, -webkit-box-shadow 0.15s;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.pds-combobox__button-trigger .pds-combobox__button-trigger-layout-wrapper{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1}.pds-combobox__button-trigger .trigger-content{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;width:100%}.pds-combobox__button-trigger:focus-visible{border-color:var(--color-border-focus, var(--pine-color-border));-webkit-box-shadow:0 0 0 2px var(--color-outline, var(--pine-color-focus-ring));box-shadow:0 0 0 2px var(--color-outline, var(--pine-color-focus-ring))}.pds-combobox__button-trigger:hover{background:var(--color-background-hover, var(--pine-color-secondary-hover));border-color:var(--color-border-hover, var(--pine-color-border-hover))}.pds-combobox__button-trigger[aria-disabled=true],.pds-combobox__button-trigger:disabled{background:var(--color-background-disabled, var(--pine-color-secondary-disabled));border-color:var(--color-border-disabled, var(--pine-color-border-disabled));color:var(--color-text-disabled, var(--pine-color-text-secondary-disabled));cursor:not-allowed;opacity:0.6}.pds-combobox__button-trigger-label{color:inherit;-ms-flex:1 1 auto;flex:1 1 auto;text-align:start}.pds-combobox__button-trigger-chevron{color:currentColor;-webkit-margin-start:var(--pine-dimension-150);margin-inline-start:var(--pine-dimension-150)}.pds-combobox__button-trigger--primary{--color-background-default:var(--pine-color-primary);--color-background-hover:var(--pine-color-primary-hover);--color-background-disabled:var(--pine-color-primary-disabled);--color-border-default:var(--pine-color-primary);--color-border-hover:var(--pine-color-primary-hover);--color-border-disabled:var(--pine-color-primary-disabled);--color-border-focus:var(--pine-color-primary);--color-text-default:var(--pine-color-text-primary);--color-text-disabled:var(--pine-color-text-primary-disabled);--color-outline:var(--pine-color-focus-ring)}.pds-combobox__button-trigger--accent{--color-background-default:var(--pine-color-accent);--color-background-hover:var(--pine-color-accent-hover);--color-background-disabled:var(--pine-color-accent-disabled);--color-border-default:var(--pine-color-accent);--color-border-hover:var(--pine-color-accent-hover);--color-border-disabled:var(--pine-color-accent-disabled);--color-border-focus:var(--pine-color-accent);--color-text-default:var(--pine-color-text-primary);--color-text-disabled:var(--pine-color-text-accent-disabled);--color-outline:var(--pine-color-focus-ring)}.pds-combobox__button-trigger--secondary{--color-background-default:var(--pine-color-secondary);--color-background-hover:var(--pine-color-secondary-hover);--color-background-disabled:var(--pine-color-secondary-disabled);--color-border-default:var(--pine-color-border);--color-border-hover:var(--pine-color-border-hover);--color-border-disabled:var(--pine-color-border-disabled);--color-border-focus:var(--pine-color-border);--color-text-default:var(--pine-color-text-secondary);--color-text-disabled:var(--pine-color-text-secondary-disabled);--color-outline:var(--pine-color-focus-ring)}.pds-combobox__button-trigger--destructive{--color-background-default:var(--pine-color-danger);--color-background-hover:var(--pine-color-danger-hover);--color-background-disabled:var(--pine-color-danger-disabled);--color-border-default:var(--pine-color-danger);--color-border-hover:var(--pine-color-danger-hover);--color-border-disabled:var(--pine-color-danger-disabled);--color-border-focus:var(--pine-color-danger);--color-text-default:var(--pine-color-text-primary);--color-text-disabled:var(--pine-color-text-danger-disabled);--color-outline:var(--pine-color-focus-ring-danger)}.visually-hidden{border:0;clip:rect(0 0 0 0);-webkit-clip-path:polygon(0 0, 0 0, 0 0);clip-path:polygon(0 0, 0 0, 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}[data-layout]{border-radius:var(--pine-dimension-125);padding-block:var(--pine-dimension-xs)}";
6653
+
6654
+ /**
6655
+ * @slot option - Option elements for the combobox dropdown
6656
+ * @slot trigger-content - Custom content for the button trigger when customTriggerContent is true
6657
+ */
6658
+ class PdsCombobox {
6659
+ constructor(hostRef) {
6660
+ registerInstance(this, hostRef);
6661
+ this.pdsComboboxChange = createEvent(this, "pdsComboboxChange");
6662
+ /**
6663
+ * Enable custom layout content for options. Options with data-layout attribute will render their HTML content.
6664
+ * ⚠️ Security Warning: Only use with trusted content. Basic XSS protection is applied, but avoid user-generated content.
6665
+ * @default false
6666
+ */
6667
+ this.customOptionLayouts = false;
6668
+ /**
6669
+ * Enable custom layout content for the button trigger via the trigger-content slot.
6670
+ * When true, uses slot content for initial state but updates dynamically with selected option layout.
6671
+ * ⚠️ Security Warning: Only use with trusted content. Basic XSS protection is applied, but avoid user-generated content.
6672
+ * @default false
6673
+ */
6674
+ this.customTriggerContent = false;
6675
+ /**
6676
+ * If true, the combobox is disabled.
6677
+ */
6678
+ this.disabled = false;
6679
+ /**
6680
+ * Placement of the dropdown relative to the trigger.
6681
+ * @default 'bottom-start'
6682
+ */
6683
+ this.dropdownPlacement = 'bottom-start';
6684
+ /**
6685
+ * Width of the dropdown. Any valid CSS width value.
6686
+ * @default '236px'
6687
+ */
6688
+ this.dropdownWidth = '236px';
6689
+ /**
6690
+ * Visually hides the label text for instances where only the combobox should be displayed.
6691
+ * Label remains accessible to assistive technology such as screen readers.
6692
+ */
6693
+ this.hideLabel = false;
6694
+ /**
6695
+ * Determines the combobox mode: 'filter' (filter options as you type) or 'select-only' (show all options).
6696
+ * @default 'filter'
6697
+ */
6698
+ this.mode = 'filter';
6699
+ /**
6700
+ * Determines the combobox trigger: 'input' (editable input) or 'button' (button-like, non-editable).
6701
+ * @default 'input'
6702
+ */
6703
+ this.trigger = 'input';
6704
+ /**
6705
+ * Width of the trigger (button or input). Any valid CSS width value.
6706
+ * @default 'fit-content'
6707
+ */
6708
+ this.triggerWidth = 'fit-content';
6709
+ /**
6710
+ * The visual variant for the button trigger. Matches Pine button variants.
6711
+ * @default 'secondary'
6712
+ */
6713
+ this.triggerVariant = 'secondary';
6714
+ /**
6715
+ * The value of the combobox input.
6716
+ */
6717
+ this.value = '';
6718
+ /**
6719
+ * Internal state for filtered options
6720
+ */
6721
+ this.filteredOptions = [];
6722
+ /**
6723
+ * Internal state for the currently highlighted option index
6724
+ */
6725
+ this.highlightedIndex = -1;
6726
+ /**
6727
+ * Internal state for dropdown open/close
6728
+ */
6729
+ this.isOpen = false;
6730
+ /**
6731
+ * Internal state for the currently selected option
6732
+ */
6733
+ this.selectedOption = null;
6734
+ /**
6735
+ * Internal state for the sanitized layout content of the selected option
6736
+ */
6737
+ this.selectedOptionLayoutContent = '';
6738
+ this.optionEls = [];
6739
+ this.handleInput = (e) => {
6740
+ const target = e.target;
6741
+ this.value = target.value;
6742
+ this.isOpen = true;
6743
+ this.filterOptions();
6744
+ setTimeout(() => this.openDropdownPositioning(), 0);
6745
+ };
6746
+ this.handleFocus = () => {
6747
+ this.isOpen = true;
6748
+ this.filterOptions();
6749
+ setTimeout(() => this.openDropdownPositioning(), 0);
6750
+ };
6751
+ this.handleKeyDown = (e) => {
6752
+ if (!this.isOpen && (e.key === 'ArrowDown' || e.key === 'ArrowUp')) {
6753
+ this.isOpen = true;
6754
+ return;
6755
+ }
6756
+ switch (e.key) {
6757
+ case 'ArrowDown':
6758
+ this.highlightedIndex = Math.min(this.highlightedIndex + 1, this.filteredOptions.length - 1);
6759
+ break;
6760
+ case 'ArrowUp':
6761
+ this.highlightedIndex = Math.max(this.highlightedIndex - 1, 0);
6762
+ break;
6763
+ case 'Enter':
6764
+ if (this.isOpen && this.highlightedIndex >= 0 && this.highlightedIndex < this.filteredOptions.length) {
6765
+ this.handleOptionClick(this.filteredOptions[this.highlightedIndex]);
6766
+ }
6767
+ break;
6768
+ case 'Escape':
6769
+ this.isOpen = false;
6770
+ break;
6771
+ }
6772
+ };
6773
+ // Event handler for option click
6774
+ this.onOptionClick = (event) => {
6775
+ const idx = Number(event.currentTarget.getAttribute('data-option-index'));
6776
+ const option = this.filteredOptions[idx];
6777
+ this.handleOptionClick(option);
6778
+ };
6779
+ // Event handler for mouse enter on option
6780
+ this.onOptionMouseEnter = (event) => {
6781
+ const idx = Number(event.currentTarget.getAttribute('data-option-index'));
6782
+ this.highlightedIndex = idx;
6783
+ };
6784
+ // Prevent blur on mousedown
6785
+ this.onOptionMouseDown = (event) => {
6786
+ event.preventDefault();
6787
+ };
6788
+ // Handler for button trigger click
6789
+ this.onButtonTriggerClick = () => {
6790
+ this.isOpen = !this.isOpen;
6791
+ if (this.isOpen)
6792
+ setTimeout(() => this.openDropdownPositioning(), 0);
6793
+ };
6794
+ // Handler for button trigger keyboard events
6795
+ this.onButtonTriggerKeyDown = (e) => {
6796
+ if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {
6797
+ e.preventDefault();
6798
+ this.isOpen = true;
6799
+ this.highlightedIndex = 0;
6800
+ setTimeout(() => this.openDropdownPositioning(), 0);
6801
+ }
6802
+ else if (e.key === 'Escape') {
6803
+ this.isOpen = false;
6804
+ }
6805
+ };
6806
+ // Close dropdown when focus leaves the combobox
6807
+ this.onComboboxFocusOut = (event) => {
6808
+ const relatedTarget = event.relatedTarget;
6809
+ if (!this.el.contains(relatedTarget)) {
6810
+ this.isOpen = false;
6811
+ // If there's a selected option but the input value doesn't match, restore the selected option's value
6812
+ if (this.selectedOption && this.value !== this.getOptionLabel(this.selectedOption)) {
6813
+ this.value = this.getOptionLabel(this.selectedOption);
6814
+ }
6815
+ }
6816
+ };
6817
+ }
6818
+ componentWillLoad() {
6819
+ this.updateOptions();
6820
+ }
6821
+ handleValueChange() {
6822
+ this.filterOptions();
6823
+ }
6824
+ handleSelectedOptionChange() {
6825
+ // Update the layout content when selected option changes
6826
+ this.selectedOptionLayoutContent = this.selectedOption && this.isOptionLayout(this.selectedOption)
6827
+ ? this.getOptionLayoutContent(this.selectedOption)
6828
+ : '';
6829
+ }
6830
+ updateOptions() {
6831
+ var _a;
6832
+ // Get all <option> elements from the slot
6833
+ const slot = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot[name="option"], slot:not([name])');
6834
+ if (slot) {
6835
+ this.optionEls = slot.assignedElements({ flatten: true })
6836
+ .filter(el => el.tagName === 'OPTION');
6837
+ // Set initial selected option if one exists (only check DOM on initialization)
6838
+ if (!this.selectedOption) {
6839
+ const initialSelected = this.optionEls.find(opt => opt.hasAttribute('selected')) || null;
6840
+ this.setSelectedOption(initialSelected);
6841
+ }
6842
+ this.filterOptions();
6843
+ }
6844
+ }
6845
+ // Helper method to get option label, falling back to text content if no label attribute
6846
+ getOptionLabel(option) {
6847
+ return option.label || option.textContent || '';
6848
+ }
6849
+ // Helper method to get option layout content
6850
+ getOptionLayoutContent(option) {
6851
+ return this.sanitizeHtml(option.innerHTML || '');
6852
+ }
6853
+ // HTML sanitization using DOMPurify library to prevent XSS attacks
6854
+ sanitizeHtml(html) {
6855
+ // Configure DOMPurify to allow Pine Design System components while removing dangerous content
6856
+ const config = {
6857
+ // Allow all custom elements (including pds-* components)
6858
+ CUSTOM_ELEMENT_HANDLING: {
6859
+ tagNameCheck: (tagName) => {
6860
+ // Allow all pds-* tags and standard safe HTML tags
6861
+ return tagName.startsWith('pds-') || /^[a-z]+$/i.test(tagName);
6862
+ },
6863
+ attributeNameCheck: (attr) => {
6864
+ // Allow standard HTML attributes, data-* attributes, and Pine component attributes
6865
+ return /^[a-zA-Z][a-zA-Z0-9-]*$/.test(attr) || attr.startsWith('data-') || attr.startsWith('aria-');
6866
+ },
6867
+ allowCustomizedBuiltInElements: false,
6868
+ },
6869
+ // Allow standard safe attributes
6870
+ ALLOW_DATA_ATTR: true,
6871
+ ALLOW_ARIA_ATTR: true,
6872
+ // Specifically forbid dangerous tags
6873
+ FORBID_TAGS: ['script', 'iframe', 'object', 'embed', 'form', 'input', 'textarea', 'select', 'button', 'style'],
6874
+ // Forbid all event handler attributes
6875
+ FORBID_ATTR: [
6876
+ 'onerror', 'onload', 'onclick', 'onmouseover', 'onmouseout', 'onmousemove',
6877
+ 'onfocus', 'onblur', 'onchange', 'onsubmit', 'onkeydown', 'onkeyup', 'onkeypress',
6878
+ 'onmousedown', 'onmouseup', 'ondblclick', 'oncontextmenu', 'onscroll'
6879
+ ],
6880
+ // Safe protocol whitelist
6881
+ ALLOWED_URI_REGEXP: /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,
6882
+ };
6883
+ return purify.sanitize(html, config);
6884
+ }
6885
+ // Helper method to check if option should render as layout
6886
+ isOptionLayout(option) {
6887
+ return this.customOptionLayouts && option.hasAttribute('data-layout');
6888
+ }
6889
+ // Helper method to check if option is selected (single source of truth)
6890
+ isOptionSelected(option) {
6891
+ return this.selectedOption === option;
6892
+ }
6893
+ // Helper method to set selected option (centralized state management)
6894
+ setSelectedOption(option) {
6895
+ this.selectedOption = option;
6896
+ }
6897
+ filterOptions() {
6898
+ if (this.mode === 'select-only') {
6899
+ this.filteredOptions = this.optionEls;
6900
+ }
6901
+ else {
6902
+ const val = this.value.toLowerCase();
6903
+ this.filteredOptions = this.optionEls.filter(option => {
6904
+ // For layout options, search both text content and data-search-text attribute
6905
+ if (this.isOptionLayout(option)) {
6906
+ const searchText = option.getAttribute('data-search-text') || option.textContent || '';
6907
+ return searchText.toLowerCase().includes(val);
6908
+ }
6909
+ return this.getOptionLabel(option).toLowerCase().includes(val);
6910
+ });
6911
+ }
6912
+ this.highlightedIndex = -1;
6913
+ }
6914
+ openDropdownPositioning() {
6915
+ if (this.triggerEl && this.listboxEl) {
6916
+ // Apply width and max-height BEFORE positioning calculations
6917
+ this.listboxEl.style.width = this.dropdownWidth;
6918
+ if (this.maxHeight) {
6919
+ this.listboxEl.style.maxHeight = this.maxHeight;
6920
+ this.listboxEl.style.overflowY = 'auto';
6921
+ }
6922
+ computePosition(this.triggerEl, this.listboxEl, {
6923
+ placement: this.dropdownPlacement,
6924
+ strategy: 'absolute',
6925
+ middleware: [offset(12), flip(), shift({ padding: 5 })],
6926
+ }).then(({ x, y }) => {
6927
+ Object.assign(this.listboxEl.style, {
6928
+ left: `${x}px`,
6929
+ top: `${y}px`,
6930
+ position: 'absolute',
6931
+ zIndex: 1000,
6932
+ });
6933
+ });
6934
+ }
6935
+ }
6936
+ /**
6937
+ * Sets focus on the native input element.
6938
+ */
6939
+ async setFocus() {
6940
+ var _a;
6941
+ (_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.focus();
6942
+ }
6943
+ /**
6944
+ * Gets the value of the currently selected option.
6945
+ */
6946
+ async getSelectedValue() {
6947
+ return this.selectedOption ? this.selectedOption.value : null;
6948
+ }
6949
+ // Get the label of the selected option
6950
+ get selectedLabel() {
6951
+ return this.selectedOption ? this.getOptionLabel(this.selectedOption) : '';
6952
+ }
6953
+ // Get the layout content of the selected option for button trigger
6954
+ get selectedLayoutContent() {
6955
+ return this.selectedOptionLayoutContent;
6956
+ }
6957
+ // Check if selected option has layout
6958
+ get selectedHasLayout() {
6959
+ return this.selectedOption ? this.isOptionLayout(this.selectedOption) : false;
6960
+ }
6961
+ handleOptionClick(option) {
6962
+ // Update reactive state - single source of truth
6963
+ this.setSelectedOption(option);
6964
+ this.value = this.getOptionLabel(option);
6965
+ this.isOpen = false;
6966
+ this.pdsComboboxChange.emit({ value: option.value });
6967
+ }
6968
+ renderDropdown() {
6969
+ if (!this.isOpen || this.filteredOptions.length === 0)
6970
+ return null;
6971
+ return (hAsync("ul", { class: "pds-combobox__listbox", role: "listbox", id: "pds-combobox-listbox", ref: el => (this.listboxEl = el) }, this.filteredOptions.map((option, idx) => {
6972
+ const isSelected = this.isOptionSelected(option);
6973
+ const isHighlighted = this.highlightedIndex === idx;
6974
+ const isLayout = this.isOptionLayout(option);
6975
+ return (hAsync("li", { key: option.value, id: `pds-combobox-option-${idx}`, role: "option", "aria-selected": isSelected ? 'true' : 'false', class: {
6976
+ 'pds-combobox__option': true,
6977
+ 'pds-combobox__option--highlighted': isHighlighted,
6978
+ 'pds-combobox__option--layout': isLayout,
6979
+ }, "data-option-index": idx, onMouseDown: this.onOptionMouseDown, onClick: this.onOptionClick, onMouseEnter: this.onOptionMouseEnter }, isLayout ? (hAsync("pds-box", { class: "pds-combobox__option-layout-wrapper", innerHTML: this.getOptionLayoutContent(option) })) : (this.getOptionLabel(option)), isSelected && hAsync("pds-icon", { icon: "check", size: "regular", class: "pds-combobox__option-check" })));
6980
+ })));
6981
+ }
6982
+ // Helper method to render the caret icon
6983
+ renderCaretIcon() {
6984
+ return hAsync("pds-icon", { icon: "caret-down", "aria-hidden": "true", "aria-label": "dropdown indicator", class: "pds-combobox__button-trigger-chevron" });
6985
+ }
6986
+ // Helper method to render layout content
6987
+ renderLayoutContent() {
6988
+ return (hAsync("div", { class: "pds-combobox__button-trigger-layout-wrapper", innerHTML: this.selectedLayoutContent }));
6989
+ }
6990
+ // Helper method to render default text content
6991
+ renderDefaultContent() {
6992
+ return (hAsync("span", { class: "pds-combobox__button-trigger-label" }, this.selectedLabel || this.placeholder));
6993
+ }
6994
+ // Helper method to check if we should show layout content
6995
+ shouldShowLayoutContent() {
6996
+ return this.selectedHasLayout && !!this.selectedLayoutContent;
6997
+ }
6998
+ renderButtonTriggerContent() {
6999
+ // Case 1: Custom trigger content with layout priority
7000
+ if (this.customTriggerContent) {
7001
+ if (this.shouldShowLayoutContent()) {
7002
+ return [this.renderLayoutContent(), this.renderCaretIcon()];
7003
+ }
7004
+ // Fall back to slot content when no layout is available
7005
+ return hAsync("slot", { name: "trigger-content" });
7006
+ }
7007
+ // Case 2: Standard mode with layout content
7008
+ if (this.shouldShowLayoutContent()) {
7009
+ return [this.renderLayoutContent(), this.renderCaretIcon()];
7010
+ }
7011
+ // Case 3: Standard mode with default text content
7012
+ return [this.renderDefaultContent(), this.renderCaretIcon()];
7013
+ }
7014
+ render() {
7015
+ const triggerClass = `pds-combobox__button-trigger pds-combobox__button-trigger--${this.triggerVariant}`;
7016
+ return (hAsync(Host, { key: 'ecc1f18dcb9869055af047446364afd66d13e5f6' }, hAsync("div", { key: 'caf80cf07647666e6ea21bc7e8fa7e944a98f3b5', class: "pds-combobox", tabIndex: -1, onFocusout: this.onComboboxFocusOut }, this.label && (hAsync("label", { key: '08d38b21ce3c2d78a6a405b81e4291d2f5e61aed', htmlFor: this.componentId, class: "pds-combobox__label" }, hAsync("span", { key: '58a3986e2656522377fce50dfad73a0960e8a9db', class: this.hideLabel ? 'visually-hidden' : '' }, this.label))), this.trigger === 'input' ? (hAsync("input", { ref: el => {
7017
+ this.inputEl = el;
7018
+ this.triggerEl = el;
7019
+ }, class: "pds-combobox__input", style: { width: this.triggerWidth }, type: "text", role: "combobox", "aria-autocomplete": "list", "aria-controls": "pds-combobox-listbox", "aria-activedescendant": this.highlightedIndex >= 0 ? `pds-combobox-option-${this.highlightedIndex}` : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, value: this.value, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleInput, onFocus: this.handleFocus, onKeyDown: this.handleKeyDown, autocomplete: "off", part: "input" })) : (hAsync("div", { class: triggerClass, style: { width: this.triggerWidth }, role: "combobox", "aria-haspopup": "listbox", "aria-controls": "pds-combobox-listbox", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, tabIndex: 0, onClick: this.onButtonTriggerClick, "data-layout": this.customTriggerContent, onKeyDown: this.onButtonTriggerKeyDown, ref: el => (this.triggerEl = el), part: "button-trigger" }, this.renderButtonTriggerContent())), hAsync("div", { key: 'a91eb5b7998c9274de0f7e7e5184def30d23ad06', style: { display: 'none' } }, hAsync("slot", { key: '40dbc40a9286b8caade78bfb70af366193bb08f2', onSlotchange: () => this.updateOptions() })), this.renderDropdown())));
7020
+ }
7021
+ get el() { return getElement(this); }
7022
+ static get watchers() { return {
7023
+ "value": ["handleValueChange"],
7024
+ "selectedOption": ["handleSelectedOptionChange"]
7025
+ }; }
7026
+ static get style() { return pdsComboboxCss; }
7027
+ static get cmpMeta() { return {
7028
+ "$flags$": 9,
7029
+ "$tagName$": "pds-combobox",
7030
+ "$members$": {
7031
+ "componentId": [1, "component-id"],
7032
+ "customOptionLayouts": [4, "custom-option-layouts"],
7033
+ "customTriggerContent": [4, "custom-trigger-content"],
7034
+ "disabled": [4],
7035
+ "dropdownPlacement": [1, "dropdown-placement"],
7036
+ "dropdownWidth": [1, "dropdown-width"],
7037
+ "hideLabel": [4, "hide-label"],
7038
+ "label": [1],
7039
+ "maxHeight": [1, "max-height"],
7040
+ "mode": [1],
7041
+ "placeholder": [1],
7042
+ "trigger": [1],
7043
+ "triggerWidth": [1, "trigger-width"],
7044
+ "triggerVariant": [1, "trigger-variant"],
7045
+ "value": [1025],
7046
+ "filteredOptions": [32],
7047
+ "highlightedIndex": [32],
7048
+ "isOpen": [32],
7049
+ "selectedOption": [32],
7050
+ "selectedOptionLayoutContent": [32],
7051
+ "setFocus": [64],
7052
+ "getSelectedValue": [64]
7053
+ },
7054
+ "$listeners$": undefined,
7055
+ "$lazyBundleId$": "-",
7056
+ "$attrsToReflect$": []
7057
+ }; }
7058
+ }
7059
+
7060
+ const pdsCopytextCss = ":host(.pds-copytext){--copytext-color-background-hover:var(--pine-color-grey-200)}:host(.pds-copytext) pds-button{-ms-flex-align:center;align-items:center;background:var(--pine-color-secondary);border-radius:var(--pine-border-radius-full);border-width:var(--pine-dimension-none);display:-ms-inline-flexbox;display:inline-flex;font-family:var(--pine-font-family-heading);font-size:var(--pine-font-size-body-md);font-weight:var(--pine-font-weight-body-medium);letter-spacing:var(--pine-letter-spacing);line-height:var(--pine-line-height-body);max-width:100%;padding:var(--pine-dimension-2xs) var(--pine-dimension-xs)}:host(.pds-copytext) pds-button::part(button){-webkit-padding-end:calc(var(--pine-dimension-xs) / 2);padding-inline-end:calc(var(--pine-dimension-xs) / 2)}:host(.pds-copytext) pds-button::part(button):hover{background-color:var(--copytext-color-background-hover);color:var(--pine-color-text-secondary-hover)}:host(.pds-copytext) pds-button span{font-weight:var(--pine-font-weight-medium);-webkit-margin-end:var(--pine-dimension-xs);margin-inline-end:var(--pine-dimension-xs);white-space:nowrap}:host(.pds-copytext) pds-button :nth-child(2){-ms-flex-negative:0;flex-shrink:0}:host(.pds-copytext):host(.pds-copytext--bordered){border-width:var(--pine-dimension-none);padding:var(--pine-dimension-none)}:host(.pds-copytext):host(.pds-copytext--bordered) pds-button{padding:var(--pine-dimension-none)}:host(.pds-copytext):host(.pds-copytext--bordered)::part(button):hover{background-color:transparent}:host(.pds-copytext):host(.pds-copytext--bordered) span{border:var(--pine-border);border-radius:var(--pine-border-radius-full);-webkit-margin-end:var(--pine-dimension-sm);margin-inline-end:var(--pine-dimension-sm);padding-block:var(--pine-dimension-xs);padding-inline:var(--pine-dimension-sm)}:host(.pds-copytext):host(.pds-copytext--bordered) :hover span{border:var(--pine-border-hover)}:host(.pds-copytext):host(.pds-copytext--full-width) pds-button,:host(.pds-copytext):host(.pds-copytext--truncated) pds-button{display:-ms-inline-flexbox;display:inline-flex;min-width:auto;width:100%}:host(.pds-copytext):host(.pds-copytext--full-width) pds-button::part(button-content),:host(.pds-copytext):host(.pds-copytext--full-width) pds-button::part(button-text),:host(.pds-copytext):host(.pds-copytext--truncated) pds-button::part(button-content),:host(.pds-copytext):host(.pds-copytext--truncated) pds-button::part(button-text){-ms-flex-negative:1;flex-shrink:1;width:100%}:host(.pds-copytext):host(.pds-copytext--full-width) pds-button span,:host(.pds-copytext):host(.pds-copytext--truncated) pds-button span{text-align:start;width:100%}:host(.pds-copytext):host(.pds-copytext--full-width) pds-button{-ms-flex-pack:justify;justify-content:space-between}:host(.pds-copytext):host(.pds-copytext--truncated) pds-button span{overflow:hidden;text-overflow:ellipsis}";
7061
+
7062
+ class PdsCopytext {
7063
+ constructor(hostRef) {
7064
+ registerInstance(this, hostRef);
7065
+ this.pdsCopyTextClick = createEvent(this, "pdsCopyTextClick");
7066
+ /**
7067
+ * Determines whether `copytext` should have a visible border.
7068
+ * @defaultValue true
7069
+ */
7070
+ this.border = true;
7071
+ /**
7072
+ * Determines whether `copytext` should expand to the full width of its container.
7073
+ * @defaultValue false
7074
+ */
7075
+ this.fullWidth = false;
7076
+ /**
7077
+ * Determines whether the `value` should truncate and display with an ellipsis.
7078
+ * @defaultValue false
7079
+ */
7080
+ this.truncate = false;
7081
+ this.copyToClipboard = async (value) => {
7082
+ try {
7083
+ if (typeof navigator.clipboard !== 'undefined') {
7084
+ await navigator.clipboard.writeText(value);
7085
+ this.pdsCopyTextClick.emit('Copied to clipboard');
7086
+ }
7087
+ }
7088
+ catch (err) {
7089
+ this.pdsCopyTextClick.emit(`Error writing text to clipboard: ${err}`);
7090
+ }
7091
+ };
7092
+ this.handleClick = () => {
7093
+ this.copyToClipboard(this.value);
7094
+ };
7095
+ }
7096
+ classNames() {
7097
+ const classNames = ['pds-copytext'];
7098
+ if (this.border) {
7099
+ classNames.push('pds-copytext--bordered');
7100
+ }
7101
+ if (this.fullWidth) {
7102
+ classNames.push('pds-copytext--full-width');
7103
+ }
7104
+ if (this.truncate) {
7105
+ classNames.push('pds-copytext--truncated');
7106
+ }
7107
+ return classNames.join(' ');
7108
+ }
7109
+ render() {
7110
+ return (hAsync(Host, { key: 'fc3a4bb1d6aad33a1a3699dd50a48d2f00e26a47', class: this.classNames(), id: this.componentId }, hAsync("pds-button", { key: '7c555a209f7f8d6c82f909c726d32c1985f52e36', type: "button", variant: "unstyled", onClick: this.handleClick }, hAsync("span", { key: '63e6e5b84be71c1943cb21ec2a5a89af40658577' }, this.value), hAsync("pds-icon", { key: '49059150540623cad1036c1476a39731d1caed79', icon: copy, size: "16px" }))));
7111
+ }
7112
+ static get style() { return pdsCopytextCss; }
7113
+ static get cmpMeta() { return {
7114
+ "$flags$": 9,
7115
+ "$tagName$": "pds-copytext",
7116
+ "$members$": {
7117
+ "border": [516],
7118
+ "componentId": [1, "component-id"],
7119
+ "fullWidth": [4, "full-width"],
7120
+ "truncate": [4],
7121
+ "value": [1]
7122
+ },
7123
+ "$listeners$": undefined,
7124
+ "$lazyBundleId$": "-",
7125
+ "$attrsToReflect$": [["border", "border"]]
7126
+ }; }
7127
+ }
7128
+
7129
+ const pdsDividerCss = ".pds-divider{background:var(--pine-color-border);border:0;display:-ms-flexbox;display:flex;height:var(--pine-border-width);margin:0;width:100%}.pds-divider--vertical{height:100%;width:1px}.pds-divider--offset-xxs{margin:0 calc(var(--pine-dimension-2xs) * -1);padding:0 var(--pine-dimension-2xs)}.pds-divider--offset-xxs.pds-divider--vertical{margin:calc(var(--pine-dimension-2xs) * -1) 0;padding:var(--pine-dimension-2xs) 0}.pds-divider--offset-xs{margin:0 calc(var(--pine-dimension-xs) * -1);padding:0 var(--pine-dimension-xs)}.pds-divider--offset-xs.pds-divider--vertical{margin:calc(var(--pine-dimension-xs) * -1) 0;padding:var(--pine-dimension-xs) 0}.pds-divider--offset-sm{margin:0 calc(var(--pine-dimension-sm) * -1);padding:0 var(--pine-dimension-sm)}.pds-divider--offset-sm.pds-divider--vertical{margin:calc(var(--pine-dimension-sm) * -1) 0;padding:var(--pine-dimension-sm) 0}.pds-divider--offset-md{margin:0 calc(var(--pine-dimension-md) * -1);padding:0 var(--pine-dimension-md)}.pds-divider--offset-md.pds-divider--vertical{margin:calc(var(--pine-dimension-md) * -1) 0;padding:var(--pine-dimension-md) 0}.pds-divider--offset-lg{margin:0 calc(var(--pine-dimension-lg) * -1);padding:0 var(--pine-dimension-lg)}.pds-divider--offset-lg.pds-divider--vertical{margin:calc(var(--pine-dimension-lg) * -1) 0;padding:var(--pine-dimension-lg) 0}.pds-divider--offset-xl{margin:0 calc(var(--pine-dimension-xl) * -1);padding:0 var(--pine-dimension-xl)}.pds-divider--offset-xl.pds-divider--vertical{margin:calc(var(--pine-dimension-xl) * -1) 0;padding:var(--pine-dimension-xl) 0}.pds-divider--offset-xxl{margin:0 calc(var(--pine-dimension-2xl) * -1);padding:0 var(--pine-dimension-2xl)}.pds-divider--offset-xxl.pds-divider--vertical{margin:calc(var(--pine-dimension-2xl) * -1) 0;padding:var(--pine-dimension-2xl) 0}@media (max-width: 767px){.pds-divider--vertical{display:none}}";
5319
7130
 
5320
- // Gets the closest ancestor positioned element. Handles some edge cases,
5321
- // such as table ancestors and cross browser bugs.
5322
- function getOffsetParent(element, polyfill) {
5323
- const win = getWindow(element);
5324
- if (isTopLayer(element)) {
5325
- return win;
5326
- }
5327
- if (!isHTMLElement(element)) {
5328
- let svgOffsetParent = getParentNode(element);
5329
- while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {
5330
- if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {
5331
- return svgOffsetParent;
5332
- }
5333
- svgOffsetParent = getParentNode(svgOffsetParent);
7131
+ class PdsDivider {
7132
+ constructor(hostRef) {
7133
+ registerInstance(this, hostRef);
7134
+ /**
7135
+ * Sets divider to display vertically.
7136
+ * @defaultValue false
7137
+ */
7138
+ this.vertical = false;
5334
7139
  }
5335
- return win;
5336
- }
5337
- let offsetParent = getTrueOffsetParent(element, polyfill);
5338
- while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {
5339
- offsetParent = getTrueOffsetParent(offsetParent, polyfill);
5340
- }
5341
- if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {
5342
- return win;
5343
- }
5344
- return offsetParent || getContainingBlock(element) || win;
5345
- }
5346
-
5347
- const getElementRects = async function (data) {
5348
- const getOffsetParentFn = this.getOffsetParent || getOffsetParent;
5349
- const getDimensionsFn = this.getDimensions;
5350
- const floatingDimensions = await getDimensionsFn(data.floating);
5351
- return {
5352
- reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),
5353
- floating: {
5354
- x: 0,
5355
- y: 0,
5356
- width: floatingDimensions.width,
5357
- height: floatingDimensions.height
7140
+ classNames() {
7141
+ const classNames = ['pds-divider'];
7142
+ if (this.vertical) {
7143
+ classNames.push('pds-divider--vertical');
7144
+ }
7145
+ if (this.offset) {
7146
+ const offsetClassName = 'pds-divider--offset-' + this.offset;
7147
+ classNames.push(offsetClassName);
7148
+ }
7149
+ return classNames.join(' ');
5358
7150
  }
5359
- };
5360
- };
5361
-
5362
- function isRTL$1(element) {
5363
- return getComputedStyle$1(element).direction === 'rtl';
7151
+ render() {
7152
+ return (hAsync(Host, { key: 'c3a01882db1119b8397353aaed193813cba0bfb8', id: this.componentId }, hAsync("hr", { key: 'fe20a28dbd2f10cec125df4dbb4ba7a2837628f1', class: this.classNames() })));
7153
+ }
7154
+ static get style() { return pdsDividerCss; }
7155
+ static get cmpMeta() { return {
7156
+ "$flags$": 9,
7157
+ "$tagName$": "pds-divider",
7158
+ "$members$": {
7159
+ "componentId": [1, "component-id"],
7160
+ "offset": [1],
7161
+ "vertical": [4]
7162
+ },
7163
+ "$listeners$": undefined,
7164
+ "$lazyBundleId$": "-",
7165
+ "$attrsToReflect$": []
7166
+ }; }
5364
7167
  }
5365
7168
 
5366
- const platform = {
5367
- convertOffsetParentRelativeRectToViewportRelativeRect,
5368
- getDocumentElement,
5369
- getClippingRect,
5370
- getOffsetParent,
5371
- getElementRects,
5372
- getClientRects,
5373
- getDimensions,
5374
- getScale,
5375
- isElement,
5376
- isRTL: isRTL$1
5377
- };
5378
-
5379
- /**
5380
- * Modifies the placement by translating the floating element along the
5381
- * specified axes.
5382
- * A number (shorthand for `mainAxis` or distance), or an axes configuration
5383
- * object may be passed.
5384
- * @see https://floating-ui.com/docs/offset
5385
- */
5386
- const offset = offset$1;
5387
-
5388
- /**
5389
- * Optimizes the visibility of the floating element by shifting it in order to
5390
- * keep it in view when it will overflow the clipping boundary.
5391
- * @see https://floating-ui.com/docs/shift
5392
- */
5393
- const shift = shift$1;
5394
-
5395
- /**
5396
- * Optimizes the visibility of the floating element by flipping the `placement`
5397
- * in order to keep it in view when the preferred placement(s) will overflow the
5398
- * clipping boundary. Alternative to `autoPlacement`.
5399
- * @see https://floating-ui.com/docs/flip
5400
- */
5401
- const flip = flip$1;
5402
-
5403
- /**
5404
- * Computes the `x` and `y` coordinates that will place the floating element
5405
- * next to a given reference element.
5406
- */
5407
- const computePosition = (reference, floating, options) => {
5408
- // This caches the expensive `getClippingElementAncestors` function so that
5409
- // multiple lifecycle resets re-use the same result. It only lives for a
5410
- // single call. If other functions become expensive, we can add them as well.
5411
- const cache = new Map();
5412
- const mergedOptions = {
5413
- platform,
5414
- ...options
5415
- };
5416
- const platformWithCache = {
5417
- ...mergedOptions.platform,
5418
- _c: cache
5419
- };
5420
- return computePosition$1(reference, floating, {
5421
- ...mergedOptions,
5422
- platform: platformWithCache
5423
- });
5424
- };
5425
-
5426
7169
  const pdsDropdownMenuCss = ":host{display:block}.is-hidden{display:none}.pds-dropdown-menu--panel{background-color:var(--pine-color-background-container);left:var(--pine-dimension-none);min-width:170px;padding:var(--pine-dimension-xs);position:absolute;z-index:9999}";
5427
7170
 
5428
7171
  class PdsDropdownMenu {
@@ -5666,7 +7409,7 @@ class PdsDropdownMenu {
5666
7409
  }
5667
7410
  }
5668
7411
  render() {
5669
- return (hAsync(Host, { key: '492d6a2baba8c0cf5e05a6c34b774900f5da6886', id: this.componentId }, hAsync("slot", { key: '9d57ee287cff289693c941410bcc62bb9fb1da95', name: "trigger", onSlotchange: this.handleTriggerSlotChange }), hAsync("pds-box", { key: '62ae569a3bf7f958c01cfe1a74d174e413763f72', "border-radius": "sm", display: "flex", direction: "column", class: "pds-dropdown-menu--panel is-hidden", shadow: "100", role: "menu", "aria-orientation": "vertical" }, hAsync("slot", { key: 'ea6d26124c06683e4fde23bc29f955cb04468d7a', onSlotchange: this.handleSlotChange }))));
7412
+ return (hAsync(Host, { key: '1e4384c8ab3fb3ca73221dd7a7f156846e9b8274', id: this.componentId }, hAsync("slot", { key: '0b3b532a025580b36bbe06f86bdb776d99e0c896', name: "trigger", onSlotchange: this.handleTriggerSlotChange }), hAsync("pds-box", { key: '20229e833fa45ff5ce730d3a38e8faab582335c6', "border-radius": "sm", display: "flex", direction: "column", class: "pds-dropdown-menu--panel is-hidden", shadow: "100", role: "menu", "aria-orientation": "vertical" }, hAsync("slot", { key: '47cad78c2e1b5150be13a399820fe64d09955e9d', onSlotchange: this.handleSlotChange }))));
5670
7413
  }
5671
7414
  get host() { return getElement(this); }
5672
7415
  static get style() { return pdsDropdownMenuCss; }
@@ -5752,7 +7495,7 @@ class PdsDropdownMenuItem {
5752
7495
  }, tabIndex: this.disabled ? -1 : 0, type: "button", onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, disabled: this.disabled, "aria-disabled": this.disabled ? 'true' : null }, hAsync("slot", null)));
5753
7496
  }
5754
7497
  render() {
5755
- return (hAsync(Host, { key: 'b27f62c0f1cfe56e777b1a875b93954d4c9da00d', id: this.componentId, class: { 'is-disabled': this.disabled, 'destructive': !this.disabled && this.destructive }, onClick: () => !this.disabled && this.handleClick(), role: "none", tabIndex: -1, "aria-disabled": this.disabled ? 'true' : null }, this.renderElement()));
7498
+ return (hAsync(Host, { key: '89c2973b952f2a2d0b7054817c0532f8654ae279', id: this.componentId, class: { 'is-disabled': this.disabled, 'destructive': !this.disabled && this.destructive }, onClick: () => !this.disabled && this.handleClick(), role: "none", tabIndex: -1, "aria-disabled": this.disabled ? 'true' : null }, this.renderElement()));
5756
7499
  }
5757
7500
  get host() { return getElement(this); }
5758
7501
  static get style() { return pdsDropdownMenuItemCss; }
@@ -5785,7 +7528,7 @@ class PdsDropdownMenuSeparator {
5785
7528
  this.disabled = false;
5786
7529
  }
5787
7530
  render() {
5788
- return (hAsync(Host, { key: '71b19470921b7848e5f0c44ef82aa0d9f8ef2017', id: this.componentId }, hAsync("hr", { key: 'efc84b6b3f3f35421c0af863fb2d4636e542773e' })));
7531
+ return (hAsync(Host, { key: '1058ea61d2ad7c311ee162b909df2531f3589e4c', id: this.componentId }, hAsync("hr", { key: 'a8c2f69ef5fba5ea4ea74553fe72544e31eafb1b' })));
5789
7532
  }
5790
7533
  static get style() { return pdsDropdownMenuSeparatorCss; }
5791
7534
  static get cmpMeta() { return {
@@ -5801,6 +7544,55 @@ class PdsDropdownMenuSeparator {
5801
7544
  }; }
5802
7545
  }
5803
7546
 
7547
+ let missingAssetPathWarning = false;
7548
+ /**
7549
+ *
7550
+ * Reads the component asset path config from meta tag or a global variable.
7551
+ * This is a temporary workaround until these issues have been addressed:
7552
+ *
7553
+ * https://github.com/ionic-team/stencil/issues/2826/
7554
+ * https://github.com/ionic-team/stencil/issues/3470
7555
+ * https://github.com/ionic-team/stencil-ds-output-targets/issues/186
7556
+ */
7557
+ const getAssetPath = (path) => {
7558
+ var _a;
7559
+ const metaPineAssetPath = (_a = document.head.querySelector('meta[data-pine-asset-path]')) === null || _a === void 0 ? void 0 : _a.dataset.pineAssetPath;
7560
+ // Get the asset path from the window object if available
7561
+ const windowAssetPath = window.__PINE_ASSET_PATH__;
7562
+ // Set the CDN Asset path using the latest version
7563
+ const cdnAssetPath = 'https://cdn.jsdelivr.net/npm/@pine-ds/icons/dist/';
7564
+ const assetBasePath = metaPineAssetPath || windowAssetPath || cdnAssetPath;
7565
+ // Display a warning if the assets are fetched from the CDN.
7566
+ if (assetBasePath.startsWith('https://cdn.jsdelivr.net/npm/') && !missingAssetPathWarning) {
7567
+ missingAssetPathWarning = true;
7568
+ console.warn(`
7569
+ Fetching Pine assets from jsDelivr CDN.\n\n It's recommended that you bundle Pine Assets with your application and set the path accordingly.\n\nFor more information, read the documentation: \nhttps://pine-design-system.netlify.app/?path=/docs/resources-assets--docs
7570
+ `);
7571
+ }
7572
+ let assetPath = path;
7573
+ if (path.startsWith('./')) {
7574
+ assetPath = path.substring(2);
7575
+ }
7576
+ if (!assetBasePath.endsWith('/')) {
7577
+ assetPath = '/' + assetPath;
7578
+ }
7579
+ return assetBasePath + assetPath;
7580
+ };
7581
+
7582
+ let CACHED_MAP;
7583
+ const getIconMap = () => {
7584
+ if (typeof window === 'undefined') {
7585
+ return new Map();
7586
+ }
7587
+ else {
7588
+ if (!CACHED_MAP) {
7589
+ const win = window; // eslint-disable-line @typescript-eslint/no-explicit-any
7590
+ win.PdsIcons = win.PdsIcons || {};
7591
+ CACHED_MAP = win.PdsIcons.map = win.PdsIcons.map || new Map();
7592
+ }
7593
+ return CACHED_MAP;
7594
+ }
7595
+ };
5804
7596
  const getName = (iconName, icon) => {
5805
7597
  if (!iconName && icon && !isSrc(icon)) {
5806
7598
  iconName = icon;
@@ -5817,6 +7609,39 @@ const getName = (iconName, icon) => {
5817
7609
  }
5818
7610
  return iconName;
5819
7611
  };
7612
+ const getNamedUrl = (iconName) => {
7613
+ const url = getIconMap().get(iconName);
7614
+ if (url) {
7615
+ return url;
7616
+ }
7617
+ return getAssetPath(`svg/${iconName}.svg`);
7618
+ };
7619
+ const getSrc = (src) => {
7620
+ if (isStr(src)) {
7621
+ src = src.trim();
7622
+ if (isSrc(src)) {
7623
+ return src;
7624
+ }
7625
+ }
7626
+ return null;
7627
+ };
7628
+ const getUrl = (pdsIcon) => {
7629
+ let url = getSrc(pdsIcon.src);
7630
+ if (url) {
7631
+ return url;
7632
+ }
7633
+ url = getName(pdsIcon.name, pdsIcon.icon);
7634
+ if (url) {
7635
+ return getNamedUrl(url);
7636
+ }
7637
+ if (pdsIcon.icon) {
7638
+ url = getSrc(pdsIcon.icon);
7639
+ if (url) {
7640
+ return url;
7641
+ }
7642
+ }
7643
+ return null;
7644
+ };
5820
7645
  /**
5821
7646
  * Returns `true` if the document or host element
5822
7647
  * has a `dir` set to `rtl`. The host value will always
@@ -5929,6 +7754,8 @@ const ICONS_TO_FLIP = [
5929
7754
  'users-tone'
5930
7755
  ];
5931
7756
 
7757
+ const pdsIconContent = new Map();
7758
+
5932
7759
  const pdsIconCss = ":host{--dimension-icon-height:16px;--dimension-icon-width:16px;--color-icon-fill:currentColor;contain:strict;display:inline-block;fill:var(--color-icon-fill);-ms-flex-negative:0;flex-shrink:0;height:var(--dimension-icon-height);width:var(--dimension-icon-width)}:host .pdsicon{fill:var(--color-icon-fill)}.pds-icon-fill-none{fill:none}.icon-inner,.pds-icon,svg{display:block;height:100%;width:100%}:host(.flip-rtl):host-context([dir=rtl]) .icon-inner{-webkit-transform:scaleX(-1);transform:scaleX(-1)}:host(.flip-rtl:dir(rtl)) .icon-inner{-webkit-transform:scaleX(-1);transform:scaleX(-1)}:host(.flip-rtl:dir(ltr)) .icon-inner{-webkit-transform:scaleX(1);transform:scaleX(1)}";
5933
7760
 
5934
7761
  class PdsIcon {
@@ -5970,10 +7797,26 @@ class PdsIcon {
5970
7797
  if (!this.didLoadIcon) {
5971
7798
  this.loadIcon();
5972
7799
  }
7800
+ // Fallback: Ensure icon loads even if IntersectionObserver doesn't fire
7801
+ setTimeout(() => {
7802
+ if (!this.svgContent && !this.isVisible) {
7803
+ this.isVisible = true;
7804
+ this.loadIcon();
7805
+ }
7806
+ }, 100);
7807
+ // Additional fallback for client-side navigation (React Router, etc.)
7808
+ // React's useLayoutEffect and rendering cycles can delay visibility detection
7809
+ setTimeout(() => {
7810
+ if (!this.svgContent && !this.isVisible) {
7811
+ this.isVisible = true;
7812
+ this.loadIcon();
7813
+ }
7814
+ }, 500);
5973
7815
  }
5974
7816
  componentWillLoad() {
5975
7817
  this.inheritedAttributes = inheritAttributes(this.el, ['aria-label']);
5976
7818
  this.setCSSVariables();
7819
+ this.setupInitialAriaLabel();
5977
7820
  }
5978
7821
  setCSSVariables() {
5979
7822
  this.el.style.setProperty(`--dimension-icon-height`, this.iconSize());
@@ -5981,10 +7824,18 @@ class PdsIcon {
5981
7824
  this.el.style.setProperty(`--color-icon-fill`, typeof this.color !== 'undefined' ? this.color : 'currentColor');
5982
7825
  }
5983
7826
  connectedCallback() {
5984
- this.waitUntilVisible(this.el, '50px', () => {
7827
+ // Handle re-connection during client-side navigation
7828
+ if (!this.isVisible && !this.svgContent) {
7829
+ this.waitUntilVisible(this.el, '50px', () => {
7830
+ this.isVisible = true;
7831
+ this.loadIcon();
7832
+ });
7833
+ }
7834
+ // Immediate load attempt if already visible (e.g., during React navigation)
7835
+ if (this.isElementInViewport(this.el)) {
5985
7836
  this.isVisible = true;
5986
7837
  this.loadIcon();
5987
- });
7838
+ }
5988
7839
  }
5989
7840
  disconnectedCallback() {
5990
7841
  if (this.io) {
@@ -5995,11 +7846,17 @@ class PdsIcon {
5995
7846
  updateStyles() {
5996
7847
  this.setCSSVariables();
5997
7848
  }
7849
+ onIconPropertyChange() {
7850
+ this.loadIcon();
7851
+ // Update aria-label when icon properties change
7852
+ this.setupInitialAriaLabel();
7853
+ }
5998
7854
  loadIcon() {
7855
+ // Reset load state when URL changes
7856
+ this.didLoadIcon = false;
7857
+ // Clear existing content to prevent stale content when switching icons
7858
+ this.svgContent = undefined;
5999
7859
  this.iconName = getName(this.name, this.icon);
6000
- if (this.iconName) {
6001
- this.ariaLabel = this.iconName.replace(/\-/g, ' ');
6002
- }
6003
7860
  }
6004
7861
  render() {
6005
7862
  const { ariaLabel, flipRtl, iconName, inheritedAttributes } = this;
@@ -6007,11 +7864,22 @@ class PdsIcon {
6007
7864
  ? shouldRtlFlipIcon(iconName, this.el) && flipRtl !== false
6008
7865
  : false;
6009
7866
  const shouldFlip = flipRtl || shouldIconAutoFlip;
6010
- return (hAsync(Host, Object.assign({ key: 'bc8e46daa75df27a8039e0e767bdb43164ad7d4c', "aria-label": ariaLabel !== undefined && !this.hasAriaHidden() ? ariaLabel : null, alt: "", role: "img", class: Object.assign(Object.assign({}, createColorClasses(this.color)), { 'flip-rtl': shouldFlip, 'icon-rtl': shouldFlip && isRTL(this.el) }) }, inheritedAttributes), (hAsync("div", { class: "icon-inner" }))));
7867
+ // Use inherited aria-label if provided, otherwise fall back to auto-generated one
7868
+ const finalAriaLabel = inheritedAttributes['aria-label'] || ariaLabel;
7869
+ return (hAsync(Host, Object.assign({ key: '43aa73531314e6529a887468e69362430d006229', "aria-label": finalAriaLabel !== undefined && !this.hasAriaHidden() ? finalAriaLabel : null, alt: "", role: "img", class: Object.assign(Object.assign({}, createColorClasses(this.color)), { 'flip-rtl': shouldFlip, 'icon-rtl': shouldFlip && isRTL(this.el) }) }, inheritedAttributes), (hAsync("div", { class: "icon-inner" }))));
6011
7870
  }
6012
7871
  /*****
6013
7872
  * Private Methods
6014
7873
  ****/
7874
+ setupInitialAriaLabel() {
7875
+ // Only set aria-label during initial load if one isn't already provided
7876
+ if (!this.inheritedAttributes['aria-label']) {
7877
+ const iconName = getName(this.name, this.icon);
7878
+ if (iconName) {
7879
+ this.ariaLabel = iconName.replace(/\-/g, ' ');
7880
+ }
7881
+ }
7882
+ }
6015
7883
  waitUntilVisible(el, rootMargin, cb) {
6016
7884
  {
6017
7885
  // browser doesn't support IntersectionObserver
@@ -6019,14 +7887,62 @@ class PdsIcon {
6019
7887
  cb();
6020
7888
  }
6021
7889
  }
7890
+ isElementInViewport(el) {
7891
+ if (!el || !el.isConnected)
7892
+ return false;
7893
+ const rect = el.getBoundingClientRect();
7894
+ const windowHeight = window.innerHeight || document.documentElement.clientHeight;
7895
+ const windowWidth = window.innerWidth || document.documentElement.clientWidth;
7896
+ return (rect.top >= 0 &&
7897
+ rect.left >= 0 &&
7898
+ rect.bottom <= windowHeight &&
7899
+ rect.right <= windowWidth) || (
7900
+ // Also consider partially visible elements
7901
+ rect.top < windowHeight &&
7902
+ rect.bottom > 0 &&
7903
+ rect.left < windowWidth &&
7904
+ rect.right > 0);
7905
+ }
7906
+ /**
7907
+ * Debug method to help diagnose loading issues
7908
+ * Call from browser console: document.querySelector('pds-icon').debugIconState()
7909
+ */
7910
+ debugIconState() {
7911
+ var _a;
7912
+ const url = getUrl(this);
7913
+ const rect = this.el.getBoundingClientRect();
7914
+ console.log('PdsIcon Debug State:', {
7915
+ name: this.name,
7916
+ src: this.src,
7917
+ icon: this.icon,
7918
+ iconName: this.iconName,
7919
+ url,
7920
+ isVisible: this.isVisible,
7921
+ didLoadIcon: this.didLoadIcon,
7922
+ hasSvgContent: !!this.svgContent,
7923
+ svgContentLength: ((_a = this.svgContent) === null || _a === void 0 ? void 0 : _a.length) || 0,
7924
+ isInCache: url ? pdsIconContent.has(url) : false,
7925
+ cachedContent: url ? pdsIconContent.get(url) : null,
7926
+ element: this.el,
7927
+ // Client-side navigation specific debug info
7928
+ isConnected: this.el.isConnected,
7929
+ isInViewport: this.isElementInViewport(this.el),
7930
+ hasIntersectionObserver: !!this.io,
7931
+ boundingClientRect: rect,
7932
+ windowDimensions: {
7933
+ width: window.innerWidth || document.documentElement.clientWidth,
7934
+ height: window.innerHeight || document.documentElement.clientHeight
7935
+ }
7936
+ });
7937
+ }
6022
7938
  static get assetsDirs() { return ["svg"]; }
6023
7939
  get el() { return getElement(this); }
6024
7940
  static get watchers() { return {
6025
7941
  "size": ["updateStyles"],
6026
7942
  "color": ["updateStyles"],
6027
- "name": ["loadIcon"],
6028
- "src": ["loadIcon"],
6029
- "icon": ["loadIcon"]
7943
+ "name": ["onIconPropertyChange"],
7944
+ "src": ["onIconPropertyChange"],
7945
+ "icon": ["onIconPropertyChange"]
6030
7946
  }; }
6031
7947
  static get style() { return pdsIconCss; }
6032
7948
  static get cmpMeta() { return {
@@ -6076,9 +7992,9 @@ class PdsImage {
6076
7992
  this.loading = 'eager';
6077
7993
  }
6078
7994
  render() {
6079
- return (hAsync(Host, { key: 'a706be22398297ae7087239a3dc7474ae17ab358', class: {
7995
+ return (hAsync(Host, { key: 'bffcd250b41bcc96d6278f35be5287cf34ee91ac', class: {
6080
7996
  'pds-image': true,
6081
- }, id: this.componentId }, hAsync("img", { key: '37a465ed175ae298e174370246885fb6d7837112', alt: this.alt, height: this.height, loading: this.loading, sizes: this.sizes, src: this.src, srcset: this.srcset, width: this.width })));
7997
+ }, id: this.componentId }, hAsync("img", { key: 'b241c3d7fcb061b530e57ef4ca0aafe4801d9341', alt: this.alt, height: this.height, loading: this.loading, sizes: this.sizes, src: this.src, srcset: this.srcset, width: this.width })));
6082
7998
  }
6083
7999
  static get style() { return pdsImageCss; }
6084
8000
  static get cmpMeta() { return {
@@ -6104,13 +8020,14 @@ const pdsInputTokensCss$1 = ":host{--pine-input-color-background-danger:var(--pi
6104
8020
 
6105
8021
  const labelCss$4 = ":host{display:inline-block}:host([aria-disabled=true]) label{color:var(--pine-color-text-label-disabled)}:host([aria-readonly=true]) label{color:var(--pine-color-text-label-readonly)}label{color:var(--pine-color-text-label);font:var(--pine-typography-body-medium);letter-spacing:var(--pine-letter-spacing)}";
6106
8022
 
6107
- const pdsInputCss = ":host{--pds-input-background:var(--pine-color-background-container);--pds-input-border-color:var(--pine-color-border);--pds-input-border-color-hover:var(--pine-color-border-hover);--pds-input-border-color-disabled:var(--pine-color-border-disabled);--pds-input-border-radius:var(--pine-dimension-125);--pds-input-border-width:var(--pine-border-width-thin);--pds-input-padding-x:var(--pine-dimension-150);--pds-input-padding-y:var(--pine-dimension-xs);--pds-input-font:var(--pine-typography-body);--pds-input-text-color:var(--pine-color-text-active);--pds-input-placeholder-color:var(--pine-color-text-placeholder);--pds-input-icon-color:var(--pine-color-text-secondary);--pds-input-disabled-background:var(--pine-color-background-container-disabled);--pds-input-disabled-text-color:var(--pine-color-text-disabled);--pds-input-error-color:var(--pine-color-text-message-danger);--pds-input-error-background:var(--pine-input-color-background-danger);--pds-input-error-border:var(--pine-color-border-danger);--pds-input-error-border-hover:var(--pine-color-border-danger-hover);--pds-input-addon-background:var(--pine-color-background-subtle);--pds-input-addon-color:var(--pine-color-text-secondary);--pds-input-field-min-height:calc(var(--pine-dimension-450) + 2px);--box-shadow-focus:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);--box-shadow-focus-error:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring-danger);display:inline}:host pds-select::part(select){background-color:var(--pds-input-error-background);border-color:var(--pds-input-error-border)}:host::part(prefix),:host::part(suffix){-ms-flex-align:center;align-items:center;color:var(--pine-color-text-label-readonly);display:-ms-flexbox;display:flex;height:100%;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);white-space:nowrap;z-index:1}:host::part(prefix){border-end-start-radius:var(--pds-input-border-radius);-webkit-border-end:var(--pine-border-width-none);border-inline-end:var(--pine-border-width-none);border-start-start-radius:var(--pds-input-border-radius);left:var(--pds-input-padding-x)}:host::part(suffix){border-end-end-radius:var(--pds-input-border-radius);-webkit-border-start:var(--pine-border-width-none);border-inline-start:var(--pine-border-width-none);border-start-end-radius:var(--pds-input-border-radius);right:var(--pds-input-padding-x)}:host::part(prepend),:host::part(append){-ms-flex-align:center;align-items:center;background-color:var(--pds-input-addon-background);border:var(--pds-input-border-width) solid var(--pds-input-border-color);color:var(--pds-input-addon-color);display:-ms-flexbox;display:flex}:host::part(prepend){border-end-start-radius:var(--pds-input-border-radius);-webkit-border-end:var(--pine-border-width-none);border-inline-end:var(--pine-border-width-none);border-start-start-radius:var(--pds-input-border-radius)}:host::part(append){border-end-end-radius:var(--pds-input-border-radius);-webkit-border-start:var(--pine-border-width-none);border-inline-start:var(--pine-border-width-none);border-start-end-radius:var(--pds-input-border-radius)}:host([has-prepend]) ::slotted(pds-button[slot=prepend]){--pds-button-background:var(--pds-input-addon-background);--pds-button-border:var(--pine-border-width-none);--pds-button-border-radius-end-end:var(--pine-dimension-none);--pds-button-border-radius-start-end:var(--pine-dimension-none);--pds-button-min-height:var(--pine-dimension-450)}:host([has-append]) ::slotted(pds-button[slot=append]){--pds-button-background:var(--pds-input-addon-background);--pds-button-border:var(--pine-border-width-none);--pds-button-border-radius-end-start:var(--pine-dimension-none);--pds-button-border-radius-start-start:var(--pine-dimension-none);--pds-button-min-height:var(--pine-dimension-450)}:host([has-prepend]) ::slotted(pds-select[slot=prepend]){--pds-select-background:var(--pds-input-addon-background);--pds-select-border:var(--pine-border-width-none);--pds-select-border-radius-end-end:var(--pine-dimension-none);--pds-select-border-radius-start-end:var(--pine-dimension-none);--pds-select-min-height:var(--pine-dimension-450)}:host([has-append]) ::slotted(pds-select[slot=append]){--pds-select-background:var(--pds-input-addon-background);--pds-select-border:var(--pine-border-width-none);--pds-select-border-radius-end-start:var(--pine-dimension-none);--pds-select-border-radius-start-start:var(--pine-dimension-none);--pds-select-min-height:var(--pine-dimension-450)}:host([aria-readonly=true]) input{background-color:var(--pine-color-background-container-disabled);color:var(--pine-color-text-readonly)}:host([disabled=true])::part(prepend),:host([disabled=true])::part(append){background-color:var(--pds-input-disabled-background);border:var(--pds-input-border-width) solid var(--pds-input-border-color-disabled)}:host([invalid=true])::part(prepend),:host([invalid=true])::part(append){background-color:var(--pds-input-error-background);border:var(--pds-input-border-width) solid var(--pds-input-error-border)}.pds-input{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:var(--pine-dimension-2xs)}.pds-input__label{color:var(--pine-color-text-active);font:var(--pine-typography-body-sm-medium);-webkit-margin-after:var(--pine-dimension-2xs);margin-block-end:var(--pine-dimension-2xs)}.pds-input__field-wrapper{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;position:relative;width:100%}.pds-input__field-wrapper.has-prefix .pds-input__field{-webkit-padding-start:calc(2 * var(--pds-input-padding-x) + var(--prefix-width, 1em));padding-inline-start:calc(2 * var(--pds-input-padding-x) + var(--prefix-width, 1em))}.pds-input__field-wrapper.has-suffix .pds-input__field{-webkit-padding-end:calc(2 * var(--pds-input-padding-x) + var(--suffix-width, 1em));padding-inline-end:calc(2 * var(--pds-input-padding-x) + var(--suffix-width, 1em))}.pds-input__field-wrapper.has-prepend .pds-input__field{border-end-start-radius:var(--pine-dimension-none);border-start-start-radius:var(--pine-dimension-none)}.pds-input__field-wrapper.has-append .pds-input__field{border-end-end-radius:var(--pine-dimension-none);border-start-end-radius:var(--pine-dimension-none)}.pds-input__field{background:var(--pds-input-background);border:var(--pds-input-border-width) solid var(--pds-input-border-color);border-radius:var(--pds-input-border-radius);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--pds-input-text-color);-ms-flex:1;flex:1;font:var(--pds-input-font);letter-spacing:var(--pine-letter-spacing);min-height:var(--pds-input-field-min-height);min-width:var(--pine-dimension-none);padding:var(--pds-input-padding-y) var(--pds-input-padding-x);-webkit-transition:border-color 0.2s ease;transition:border-color 0.2s ease;width:100%}.pds-input__field:hover:not(:disabled){border-color:var(--pds-input-border-color-hover)}.pds-input__field:disabled{background:var(--pds-input-disabled-background);border-color:var(--pine-color-border-disabled);color:var(--pds-input-disabled-text-color);cursor:not-allowed}.pds-input__field:disabled::-webkit-input-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-input__field:disabled::-moz-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-input__field:disabled:-ms-input-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-input__field:disabled::-ms-input-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-input__field:disabled::placeholder{color:var(--pine-color-text-placeholder-disabled)}.has-error .pds-input__field:hover:not(:disabled){border-color:var(--pds-input-error-border-hover)}.pds-input__field:focus-visible:not(.has-error){border-color:var(--pine-color-border-active);outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}:host([has-prepend]) .pds-input__field:focus-visible:not(.has-error),:host([has-append]) .pds-input__field:focus-visible:not(.has-error),:host([has-prefix]) .pds-input__field:focus-visible:not(.has-error),:host([has-suffix]) .pds-input__field:focus-visible:not(.has-error){outline-offset:var(--pine-dimension-none)}.pds-input__field::-webkit-input-placeholder{color:var(--pds-input-placeholder-color)}.pds-input__field::-moz-placeholder{color:var(--pds-input-placeholder-color)}.pds-input__field:-ms-input-placeholder{color:var(--pds-input-placeholder-color)}.pds-input__field::-ms-input-placeholder{color:var(--pds-input-placeholder-color)}.pds-input__field::placeholder{color:var(--pds-input-placeholder-color)}.has-error .pds-input__field{background-color:var(--pds-input-error-background);border-color:var(--pds-input-error-border)}.has-error .pds-input__field:focus-visible{outline-color:var(--pine-color-focus-ring-danger)}.pds-input__error-message,.pds-input__helper-message{font:var(--pine-typography-body-sm-medium);-webkit-margin-after:var(--pine-dimension-none);margin-block-end:var(--pine-dimension-none);-webkit-margin-before:var(--pine-dimension-2xs);margin-block-start:var(--pine-dimension-2xs)}.pds-input__error-message{-ms-flex-align:center;align-items:center;color:var(--pds-input-error-color);display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}";
8023
+ const pdsInputCss = ":host{--pds-input-background:var(--pine-color-background-container);--pds-input-border-color:var(--pine-color-border);--pds-input-border-color-hover:var(--pine-color-border-hover);--pds-input-border-color-disabled:var(--pine-color-border-disabled);--pds-input-border-radius:var(--pine-dimension-125);--pds-input-border-width:var(--pine-border-width-thin);--pds-input-padding-x:var(--pine-dimension-150);--pds-input-padding-y:var(--pine-dimension-xs);--pds-input-font:var(--pine-typography-body);--pds-input-text-color:var(--pine-color-text-active);--pds-input-placeholder-color:var(--pine-color-text-placeholder);--pds-input-icon-color:var(--pine-color-text-secondary);--pds-input-disabled-background:var(--pine-color-background-container-disabled);--pds-input-disabled-text-color:var(--pine-color-text-disabled);--pds-input-error-color:var(--pine-color-text-message-danger);--pds-input-error-background:var(--pine-input-color-background-danger);--pds-input-error-border:var(--pine-color-border-danger);--pds-input-error-border-hover:var(--pine-color-border-danger-hover);--pds-input-addon-background:var(--pine-color-background-subtle);--pds-input-addon-color:var(--pine-color-text-secondary);--pds-input-field-min-height:calc(var(--pine-dimension-450) + 2px);--box-shadow-focus:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);--box-shadow-focus-error:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring-danger);display:inline}:host pds-select::part(select){background-color:var(--pds-input-error-background);border-color:var(--pds-input-error-border)}:host::part(prefix),:host::part(suffix){-ms-flex-align:center;align-items:center;color:var(--pine-color-text-label-readonly);display:-ms-flexbox;display:flex;height:100%;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);white-space:nowrap;z-index:1}:host::part(prefix){border-end-start-radius:var(--pds-input-border-radius);-webkit-border-end:var(--pine-border-width-none);border-inline-end:var(--pine-border-width-none);border-start-start-radius:var(--pds-input-border-radius);left:var(--pds-input-padding-x)}:host::part(suffix){border-end-end-radius:var(--pds-input-border-radius);-webkit-border-start:var(--pine-border-width-none);border-inline-start:var(--pine-border-width-none);border-start-end-radius:var(--pds-input-border-radius);right:var(--pds-input-padding-x)}:host::part(prepend),:host::part(append){-ms-flex-align:center;align-items:center;background-color:var(--pds-input-addon-background);border:var(--pds-input-border-width) solid var(--pds-input-border-color);color:var(--pds-input-addon-color);display:-ms-flexbox;display:flex}:host::part(prepend){border-end-start-radius:var(--pds-input-border-radius);-webkit-border-end:var(--pine-border-width-none);border-inline-end:var(--pine-border-width-none);border-start-start-radius:var(--pds-input-border-radius)}:host::part(append){border-end-end-radius:var(--pds-input-border-radius);-webkit-border-start:var(--pine-border-width-none);border-inline-start:var(--pine-border-width-none);border-start-end-radius:var(--pds-input-border-radius)}:host([has-prepend]) ::slotted(pds-button[slot=prepend]){--pds-button-background:var(--pds-input-addon-background);--pds-button-border:var(--pine-border-width-none);--pds-button-border-radius-end-end:var(--pine-dimension-none);--pds-button-border-radius-start-end:var(--pine-dimension-none);--pds-button-min-height:var(--pine-dimension-450)}:host([has-append]) ::slotted(pds-button[slot=append]){--pds-button-background:var(--pds-input-addon-background);--pds-button-border:var(--pine-border-width-none);--pds-button-border-radius-end-start:var(--pine-dimension-none);--pds-button-border-radius-start-start:var(--pine-dimension-none);--pds-button-min-height:var(--pine-dimension-450)}:host([has-prepend]) ::slotted(pds-select[slot=prepend]){--pds-select-background:var(--pds-input-addon-background);--pds-select-border:var(--pine-border-width-none);--pds-select-border-radius-end-end:var(--pine-dimension-none);--pds-select-border-radius-start-end:var(--pine-dimension-none);--pds-select-min-height:var(--pine-dimension-450)}:host([has-append]) ::slotted(pds-select[slot=append]){--pds-select-background:var(--pds-input-addon-background);--pds-select-border:var(--pine-border-width-none);--pds-select-border-radius-end-start:var(--pine-dimension-none);--pds-select-border-radius-start-start:var(--pine-dimension-none);--pds-select-min-height:var(--pine-dimension-450)}:host([aria-readonly=true]) input{background-color:var(--pine-color-background-container-disabled);color:var(--pine-color-text-readonly)}:host([disabled=true])::part(prepend),:host([disabled=true])::part(append){background-color:var(--pds-input-disabled-background);border:var(--pds-input-border-width) solid var(--pds-input-border-color-disabled)}:host([invalid=true])::part(prepend),:host([invalid=true])::part(append){background-color:var(--pds-input-error-background);border:var(--pds-input-border-width) solid var(--pds-input-error-border)}.pds-input{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:var(--pine-dimension-2xs)}.pds-input__label-wrapper{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-webkit-margin-after:var(--pine-dimension-2xs);margin-block-end:var(--pine-dimension-2xs)}.pds-input__label{color:var(--pine-color-text-active);-webkit-margin-after:var(--pine-dimension-2xs);margin-block-end:var(--pine-dimension-2xs)}.pds-input__label-wrapper .pds-input__label{-webkit-margin-after:0;margin-block-end:0}.pds-input__action{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs);-webkit-margin-start:var(--pine-dimension-xs);margin-inline-start:var(--pine-dimension-xs)}.pds-input__field-wrapper{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;position:relative;width:100%}.pds-input__field-wrapper.has-prefix .pds-input__field{-webkit-padding-start:calc(2 * var(--pds-input-padding-x) + var(--prefix-width, 1em));padding-inline-start:calc(2 * var(--pds-input-padding-x) + var(--prefix-width, 1em))}.pds-input__field-wrapper.has-suffix .pds-input__field{-webkit-padding-end:calc(2 * var(--pds-input-padding-x) + var(--suffix-width, 1em));padding-inline-end:calc(2 * var(--pds-input-padding-x) + var(--suffix-width, 1em))}.pds-input__field-wrapper.has-prepend .pds-input__field{border-end-start-radius:var(--pine-dimension-none);border-start-start-radius:var(--pine-dimension-none)}.pds-input__field-wrapper.has-append .pds-input__field{border-end-end-radius:var(--pine-dimension-none);border-start-end-radius:var(--pine-dimension-none)}.pds-input__field{background:var(--pds-input-background);border:var(--pds-input-border-width) solid var(--pds-input-border-color);border-radius:var(--pds-input-border-radius);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--pds-input-text-color);-ms-flex:1;flex:1;font:var(--pds-input-font);letter-spacing:var(--pine-letter-spacing);min-height:var(--pds-input-field-min-height);min-width:var(--pine-dimension-none);padding:var(--pds-input-padding-y) var(--pds-input-padding-x);-webkit-transition:border-color 0.2s ease;transition:border-color 0.2s ease;width:100%}.pds-input__field:hover:not(:disabled){border-color:var(--pds-input-border-color-hover)}.pds-input__field:disabled{background:var(--pds-input-disabled-background);border-color:var(--pine-color-border-disabled);color:var(--pds-input-disabled-text-color);cursor:not-allowed}.pds-input__field:disabled::-webkit-input-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-input__field:disabled::-moz-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-input__field:disabled:-ms-input-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-input__field:disabled::-ms-input-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-input__field:disabled::placeholder{color:var(--pine-color-text-placeholder-disabled)}.has-error .pds-input__field:hover:not(:disabled){border-color:var(--pds-input-error-border-hover)}.pds-input__field:focus-visible:not(.has-error){border-color:var(--pine-color-border-active);outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}:host([has-prepend]) .pds-input__field:focus-visible:not(.has-error),:host([has-append]) .pds-input__field:focus-visible:not(.has-error),:host([has-prefix]) .pds-input__field:focus-visible:not(.has-error),:host([has-suffix]) .pds-input__field:focus-visible:not(.has-error){outline-offset:var(--pine-dimension-none)}.pds-input__field::-webkit-input-placeholder{color:var(--pds-input-placeholder-color)}.pds-input__field::-moz-placeholder{color:var(--pds-input-placeholder-color)}.pds-input__field:-ms-input-placeholder{color:var(--pds-input-placeholder-color)}.pds-input__field::-ms-input-placeholder{color:var(--pds-input-placeholder-color)}.pds-input__field::placeholder{color:var(--pds-input-placeholder-color)}.has-error .pds-input__field{background-color:var(--pds-input-error-background);border-color:var(--pds-input-error-border)}.has-error .pds-input__field:focus-visible{outline-color:var(--pine-color-focus-ring-danger)}.pds-input__error-message,.pds-input__helper-message{font:var(--pine-typography-body-sm-medium);-webkit-margin-after:var(--pine-dimension-none);margin-block-end:var(--pine-dimension-none);-webkit-margin-before:var(--pine-dimension-2xs);margin-block-start:var(--pine-dimension-2xs)}.pds-input__error-message{-ms-flex-align:center;align-items:center;color:var(--pds-input-error-color);display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}";
6108
8024
 
6109
8025
  /**
6110
8026
  * @slot append - Content to be displayed after the input field
6111
8027
  * @slot prefix - Content that is displayed visually within the input field before the input field
6112
8028
  * @slot prepend - Content to be displayed before the input field
6113
8029
  * @slot suffix - Content that is displayed visually within the input field after the input field
8030
+ * @slot action - Content to be displayed in the label area, typically for help icons or links
6114
8031
  */
6115
8032
  class PdsInput {
6116
8033
  constructor(hostRef) {
@@ -6137,6 +8054,10 @@ class PdsInput {
6137
8054
  * If true, the input has append content (focusable)
6138
8055
  */
6139
8056
  this.hasAppend = false;
8057
+ /**
8058
+ * If true, the input has action content in the label area
8059
+ */
8060
+ this.hasAction = false;
6140
8061
  /**
6141
8062
  * Determines the type of control that will be displayed
6142
8063
  * `'email'`, `'number'`, `'password'`, `'tel'`, `'text'`, `'url'`
@@ -6233,12 +8154,20 @@ class PdsInput {
6233
8154
  }
6234
8155
  return null;
6235
8156
  }
8157
+ renderAction() {
8158
+ const hasAction = this.el.querySelector('[slot="action"]') !== null;
8159
+ if (hasAction) {
8160
+ return (hAsync("div", { class: "pds-input__action", part: "action" }, hAsync("slot", { name: "action" })));
8161
+ }
8162
+ return null;
8163
+ }
6236
8164
  componentWillLoad() {
6237
8165
  this.inheritedAttributes = Object.assign({}, inheritAriaAttributes(this.el));
6238
8166
  this.hasPrefix = this.el.querySelector('[slot="prefix"]') !== null;
6239
8167
  this.hasSuffix = this.el.querySelector('[slot="suffix"]') !== null;
6240
8168
  this.hasPrepend = this.el.querySelector('[slot="prepend"]') !== null;
6241
8169
  this.hasAppend = this.el.querySelector('[slot="append"]') !== null;
8170
+ this.hasAction = this.el.querySelector('[slot="action"]') !== null;
6242
8171
  // Store the original pdsInput event emitter
6243
8172
  this.originalPdsInput = this.pdsInput;
6244
8173
  }
@@ -6298,7 +8227,7 @@ class PdsInput {
6298
8227
  'has-prepend': this.hasPrepend,
6299
8228
  'has-append': this.hasAppend,
6300
8229
  };
6301
- return (hAsync(Host, { key: '6ae7251aeee049e0e4f3a66c7d947a3ceb7d2b26', "aria-disabled": this.disabled ? 'true' : null, "aria-readonly": this.readonly ? 'true' : null, "has-prefix": this.hasPrefix ? 'true' : null, "has-suffix": this.hasSuffix ? 'true' : null, "has-prepend": this.hasPrepend ? 'true' : null, "has-append": this.hasAppend ? 'true' : null }, hAsync("div", { key: 'f397d329cf587b9bdf699a0c80a3bdb9c1de0b53', class: "pds-input" }, label && (hAsync("label", { key: '7e5523268dd59acb3fbf2bd659f319cc458166c0', htmlFor: componentId, class: "pds-input__label" }, label, this.required && hAsync("span", { key: 'f197ce55768d8409c9c7832af56e0a6bdc27e90a', class: "pds-input__required-indicator" }, " *"))), hAsync("div", { key: 'ad92476c65ad280622a8aa8c731609aff8ec51a4', class: inputWrapperClasses }, this.renderPrepend(), this.renderPrefix(), hAsync("input", Object.assign({ key: '187ee16cc7458af1dc06a7f424ce6bc2ffede359', ref: (input) => (this.nativeInput = input), class: "pds-input__field", "aria-describedby": assignDescription(componentId, invalid, helperMessage), "aria-invalid": invalid ? "true" : undefined, autocomplete: this.autocomplete, disabled: disabled, id: componentId, max: this.max, maxlength: this.maxlength, min: this.min, minlength: this.minlength, name: this.name, pattern: this.pattern, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, step: this.step, type: this.type, value: value, onInput: this.onInputEvent, onChange: this.onChangeEvent, onBlur: this.onBlurEvent, onFocus: this.onFocusEvent, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd }, this.inheritedAttributes)), this.renderSuffix(), this.renderAppend()), helperMessage && (hAsync("p", { key: 'c11daa2e4ed085033d90a3e9185dd7beb259aa9e', class: "pds-input__helper-message", id: messageId(componentId, 'helper') }, helperMessage)), errorMessage && (hAsync("p", { key: 'd5adbb495bd7abd83655390e0d34cbdf527b656a', class: "pds-input__error-message", id: messageId(componentId, 'error') }, hAsync("pds-icon", { key: 'd1a80c2d7e6f8389488fe2c0bb6dd1923536588a', icon: danger, size: "small" }), errorMessage)))));
8230
+ return (hAsync(Host, { key: 'a8cf9aaa6dc90cb0790a7cad75603a2ebf48451a', "aria-disabled": this.disabled ? 'true' : null, "aria-readonly": this.readonly ? 'true' : null, "has-prefix": this.hasPrefix ? 'true' : null, "has-suffix": this.hasSuffix ? 'true' : null, "has-prepend": this.hasPrepend ? 'true' : null, "has-append": this.hasAppend ? 'true' : null, "has-action": this.hasAction ? 'true' : null }, hAsync("div", { key: '355f87099825b4db4d97500dac2b94a5892a3981', class: "pds-input" }, label && (hAsync("div", { key: 'ee7bdec715478f0945cd1bf6ba435c50e885ebda', class: "pds-input__label-wrapper" }, hAsync("label", { key: '56622a09c8f7313f8c2276363ded8efd2e985fb7', htmlFor: componentId, class: "pds-input__label" }, label, this.required && hAsync("span", { key: 'fb95186cd446e4d338822840423566110ac9dbd0', class: "pds-input__required-indicator" }, " *")), this.renderAction())), hAsync("div", { key: 'c7b209515121ab4e44f054eb817f61e6d9241323', class: inputWrapperClasses }, this.renderPrepend(), this.renderPrefix(), hAsync("input", Object.assign({ key: '02f8238ee2b87b7484da0b4b5282ce22c7dd3de1', ref: (input) => (this.nativeInput = input), class: "pds-input__field", "aria-describedby": assignDescription(componentId, invalid, helperMessage), "aria-invalid": invalid ? "true" : undefined, autocomplete: this.autocomplete, disabled: disabled, id: componentId, max: this.max, maxlength: this.maxlength, min: this.min, minlength: this.minlength, name: this.name, pattern: this.pattern, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, step: this.step, type: this.type, value: value, onInput: this.onInputEvent, onChange: this.onChangeEvent, onBlur: this.onBlurEvent, onFocus: this.onFocusEvent, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd }, this.inheritedAttributes)), this.renderSuffix(), this.renderAppend()), helperMessage && (hAsync("p", { key: 'b93e6b54755d300e9093ac78854b52d296703a00', class: "pds-input__helper-message", id: messageId(componentId, 'helper') }, helperMessage)), errorMessage && (hAsync("p", { key: 'bc16a204c2ad99b28759cde1f066b6ba790a5c80', class: "pds-input__error-message", id: messageId(componentId, 'error') }, hAsync("pds-icon", { key: '354293fa6512ff16603e7190a4131096f58ca819', icon: danger, size: "small" }), errorMessage)))));
6302
8231
  }
6303
8232
  get el() { return getElement(this); }
6304
8233
  static get watchers() { return {
@@ -6334,6 +8263,7 @@ class PdsInput {
6334
8263
  "hasSuffix": [32],
6335
8264
  "hasPrepend": [32],
6336
8265
  "hasAppend": [32],
8266
+ "hasAction": [32],
6337
8267
  "hasFocus": [32],
6338
8268
  "setFocus": [64]
6339
8269
  },
@@ -6390,8 +8320,8 @@ class PdsLink {
6390
8320
  return linkStyles;
6391
8321
  }
6392
8322
  render() {
6393
- return (hAsync("a", { key: 'f2b3e7f26b833f7b187fce6f36c392415e2499df', class: this.classNames(), href: this.href, id: this.componentId, part: "link", target: this.external ? '_blank' : undefined, style: this.setLinkStyles() }, hAsync("slot", { key: 'c85c0add786ab8a90f7cb0d12b75d65a51b8e313' }, this.href), this.external &&
6394
- hAsync("pds-icon", { key: '2ce9fa8d29168659546bc95b0633815978142bbb', icon: launch, size: this.fontSize })));
8323
+ return (hAsync("a", { key: 'eeea6a903a33bf8212506970eddff01e19e02523', class: this.classNames(), href: this.href, id: this.componentId, part: "link", target: this.external ? '_blank' : undefined, style: this.setLinkStyles() }, hAsync("slot", { key: 'b860a1927bc0938d139d9ba9ad69801f27dabc50' }, this.href), this.external &&
8324
+ hAsync("pds-icon", { key: 'eda897680a6e67afd2e112646a84b2bffd1d0cc9', icon: launch, size: this.fontSize })));
6395
8325
  }
6396
8326
  static get style() { return pdsLinkCss; }
6397
8327
  static get cmpMeta() { return {
@@ -6460,7 +8390,7 @@ class PdsLoader {
6460
8390
  }
6461
8391
  }
6462
8392
  render() {
6463
- return (hAsync(Host, { key: '5f9677b6338e4b1d7df0ab3182c91ecae4c5c857', class: `pds-loader ${this.isLoading ? '' : 'pds-loader--hidden'}`, "aria-hidden": !this.isLoading, "aria-busy": this.isLoading, "aria-live": "polite" }, this.variant === 'spinner' && (hAsync("div", { key: '5083b0fd6d468439dd0faa4375107c2cddc49812', class: "pds-loader--spinner" }, hAsync("svg", { key: '689659c659901091215e3745e1778613dc8c64dc', style: this.style(), viewBox: "0 0 200 200", fill: "none" }, hAsync("defs", { key: '2f20b260a1155a966abb9f8d0541374d707d4c09' }, hAsync("linearGradient", { key: '2049a48645d6c02c3e5b4a659cb3767af297172a', id: "spinner-secondHalf" }, hAsync("stop", { key: '8a51fd7117b39505d6e40ded168c1a323f19d791', offset: "0%", "stop-opacity": "0", "stop-color": "currentColor" }), hAsync("stop", { key: '7a5273675a64eb794b8bbe513fa3fbfddb2b8b6b', offset: "100%", "stop-opacity": "0.5", "stop-color": "currentColor" })), hAsync("linearGradient", { key: '12ea88879ebbd8c207e9d5e5838505796c747fd6', id: "spinner-firstHalf" }, hAsync("stop", { key: '08a2198273017b0feeb16ec93a1a1daed34ada94', offset: "0%", "stop-opacity": "1", "stop-color": "currentColor" }), hAsync("stop", { key: '02ac704dd21ba49f579f0f305123b53333ae669e', offset: "100%", "stop-opacity": "0.5", "stop-color": "currentColor" }))), hAsync("g", { key: 'feb3d05f93da9f8d67181864d318678d2930b1dd', class: "pds-loader__spinner-path" }, hAsync("path", { key: 'dde73e34e0a78bdd87f33212eb21a25e0c212b4f', stroke: "url(#spinner-secondHalf)", d: "M 4 100 A 96 96 0 0 1 196 100" }), hAsync("path", { key: 'ce0c541df6294f6b08772d89cf791f0e6342ec0b', stroke: "url(#spinner-firstHalf)", d: "M 196 100 A 96 96 0 0 1 4 100" }), hAsync("path", { key: '25fae107003b2c9172131b54a97ecd9780ac4e42', stroke: "currentColor", "stroke-linecap": "round", d: "M 4 100 A 96 96 0 0 1 4 98" }))))), this.variant === 'typing' && (hAsync("div", { key: '7b467d87b5d4c0dbd96a277868bc587544259cff', class: "pds-loader--typing" }, hAsync("span", { key: '1e0833eec5fc48e990bbfa7ce4e724a1eee019ad' }), hAsync("span", { key: 'ef517f1aafca68e77fed199552a7a468ac8b37b2' }), hAsync("span", { key: 'b6379ba5b3e1fb88c5ce0478bb51bf4471bd6dd1' }))), hAsync("div", { key: '6148a67bddb3749b8778f5a97d381f01096fda23', class: `pds-loader__label ${this.showLabel ? '' : 'pds-loader--hidden'}` }, hAsync("slot", { key: '774fd7274d111b17afe9ef0740e64448c6fcd8d4', name: "label" }, "Loading..."))));
8393
+ return (hAsync(Host, { key: '723a80c291dd72959e43f10575bb947db80b48bc', class: `pds-loader ${this.isLoading ? '' : 'pds-loader--hidden'}`, "aria-hidden": !this.isLoading, "aria-busy": this.isLoading, "aria-live": "polite" }, this.variant === 'spinner' && (hAsync("div", { key: 'f239c576ab11e3ddf07fc15e1084cc67b55e61d7', class: "pds-loader--spinner" }, hAsync("svg", { key: 'd1c7c73d1afbb62646faffae7f2101de5c7c6fb8', style: this.style(), viewBox: "0 0 200 200", fill: "none" }, hAsync("defs", { key: '8e4ff591173df6169ab0472f0e5952f72bf29b25' }, hAsync("linearGradient", { key: '06d48bf0fe1d0db36dbd842c8a1975f965936389', id: "spinner-secondHalf" }, hAsync("stop", { key: '7d4528b15ee0d029062465a2b38a138e17051344', offset: "0%", "stop-opacity": "0", "stop-color": "currentColor" }), hAsync("stop", { key: '67825cd7c3b08d4f50fe1bea3a2eee079b556229', offset: "100%", "stop-opacity": "0.5", "stop-color": "currentColor" })), hAsync("linearGradient", { key: '408f7bb876bd2649f2f22f4ab032d321d69cd6b0', id: "spinner-firstHalf" }, hAsync("stop", { key: '3e530c0cdee5f8d19db55cf8aeb099f50be6eeea', offset: "0%", "stop-opacity": "1", "stop-color": "currentColor" }), hAsync("stop", { key: '61ca38ceb7536a3eb6da8d70004834b8ecc03a4e', offset: "100%", "stop-opacity": "0.5", "stop-color": "currentColor" }))), hAsync("g", { key: 'cbbfe03013311e2830e7d0bc83585e3f58677a50', class: "pds-loader__spinner-path" }, hAsync("path", { key: 'e5376fd10b97844faf97167fd89c9630d42e8c26', stroke: "url(#spinner-secondHalf)", d: "M 4 100 A 96 96 0 0 1 196 100" }), hAsync("path", { key: '0c484548cee25d885bea7017ebbad7be9fe0a4df', stroke: "url(#spinner-firstHalf)", d: "M 196 100 A 96 96 0 0 1 4 100" }), hAsync("path", { key: 'c7d41b97e8cb16182ffb408b1205dd68e70a0b92', stroke: "currentColor", "stroke-linecap": "round", d: "M 4 100 A 96 96 0 0 1 4 98" }))))), this.variant === 'typing' && (hAsync("div", { key: '39fbcd19d720242aeef165281a68ae032c5f7368', class: "pds-loader--typing" }, hAsync("span", { key: 'ca2c0ef3d326be687b15196964be691cfb5de6e3' }), hAsync("span", { key: 'b2d72db5856ab236c546a67fe8cb375e5cf0d500' }), hAsync("span", { key: '9d64698e62e906d151ccbedd438a4390406505c5' }))), hAsync("div", { key: '2d485557a642a81aec4be06b9a6d2b6e86e45563', class: `pds-loader__label ${this.showLabel ? '' : 'pds-loader--hidden'}` }, hAsync("slot", { key: '5e1925ec79160b5ac0dc23530aae2a933ce2ef2f', name: "label" }, "Loading..."))));
6464
8394
  }
6465
8395
  static get style() { return pdsLoaderCss; }
6466
8396
  static get cmpMeta() { return {
@@ -6711,10 +8641,10 @@ class PdsModal {
6711
8641
  return thisZIndex === maxZIndex;
6712
8642
  }
6713
8643
  render() {
6714
- return (hAsync("dialog", { key: '6ec691cfcf4865baeeba14f097d5e647a3201dba', class: {
8644
+ return (hAsync("dialog", { key: '037701d53182dfa8a1c65c4f72433f80d569c2a0', class: {
6715
8645
  'pds-modal__backdrop': true,
6716
8646
  'open': this.open
6717
- }, "aria-modal": "true", "aria-labelledby": `${this.componentId}-heading`, onClick: this.handleBackdropClick }, hAsync("div", { key: 'b7c4681717bfc0d095653c7dcf1a0e42cf069e8b', class: `pds-modal pds-modal--${this.size} pds-modal--scrollable` }, hAsync("slot", { key: '9ca7f711579587c2f49fd19f81a488192d62ce72' }))));
8647
+ }, "aria-modal": "true", "aria-labelledby": `${this.componentId}-heading`, onClick: this.handleBackdropClick }, hAsync("div", { key: '33cf8ccba3a56b0ce9795b85e871055ce1a1c1ec', class: `pds-modal pds-modal--${this.size} pds-modal--scrollable` }, hAsync("slot", { key: '9f98dc099f74cf9a33de8b71bf5508fd9b353c48' }))));
6718
8648
  }
6719
8649
  get el() { return getElement(this); }
6720
8650
  static get watchers() { return {
@@ -6815,10 +8745,10 @@ class PdsModalContent {
6815
8745
  }
6816
8746
  }
6817
8747
  render() {
6818
- return (hAsync(Host, { key: '6b214e3462d8e1e1cb58d6c0075b3143e0db2d51' }, hAsync("div", { key: '2f6a2daeb09a99f096cd46230813fe1b9a6950e9', class: {
8748
+ return (hAsync(Host, { key: '897268bfde6b22a4a8c05b413683b36a321df502' }, hAsync("div", { key: 'f61227128896753e6bdfa9ea62402a23460445e6', class: {
6819
8749
  'pds-modal-content': true,
6820
8750
  [`pds-modal-content--border-${this.border}`]: true
6821
- }, style: { maxHeight: this.contentMaxHeight }, tabindex: "-1" }, hAsync("slot", { key: '8392cc48a2dba0f32d4a83e642bd3f295832251b' }))));
8751
+ }, style: { maxHeight: this.contentMaxHeight }, tabindex: "-1" }, hAsync("slot", { key: '20d4fbb16bc097eaa4f7899ea71feaac65e057d4' }))));
6822
8752
  }
6823
8753
  get el() { return getElement(this); }
6824
8754
  static get style() { return pdsModalContentCss; }
@@ -6842,7 +8772,7 @@ class PdsModalFooter {
6842
8772
  registerInstance(this, hostRef);
6843
8773
  }
6844
8774
  render() {
6845
- return (hAsync("footer", { key: '63d1121b84d10ea99354d07b029b7625d52d9095', class: "pds-modal__footer" }, hAsync("slot", { key: 'dd08fc600f122e422ccd3161bc558f3b9cc075f9' })));
8775
+ return (hAsync("footer", { key: 'daaff7132c3b6bcaecafcb4e8dbbf25bf3ad1de4', class: "pds-modal__footer" }, hAsync("slot", { key: '06ba1513613bea247b8d533a750f1331c509e2e5' })));
6846
8776
  }
6847
8777
  static get style() { return pdsModalFooterCss; }
6848
8778
  static get cmpMeta() { return {
@@ -6862,7 +8792,7 @@ class PdsModalHeader {
6862
8792
  registerInstance(this, hostRef);
6863
8793
  }
6864
8794
  render() {
6865
- return (hAsync("header", { key: 'c832013aee204170c29336e931d36f1eda667f11', class: "pds-modal__header" }, hAsync("slot", { key: '19a76b689a8d8bf116f7061fd7c32415da4299e1' })));
8795
+ return (hAsync("header", { key: '8592e91625152d821a52a7c6ecb4b4077c8b12ae', class: "pds-modal__header" }, hAsync("slot", { key: '6a9f38a579019ef3fd6c3085eb3bfc9865070200' })));
6866
8796
  }
6867
8797
  static get style() { return pdsModalHeaderCss; }
6868
8798
  static get cmpMeta() { return {
@@ -6981,7 +8911,7 @@ class PdsPopover {
6981
8911
  popoverEl.style.left = `${left}px`;
6982
8912
  }
6983
8913
  render() {
6984
- return (hAsync(Host, { key: '35e5f4c21884f02b17dcb920e5c7ba73b8bed849' }, hAsync("button", { key: '586880a84a4ad659a00500206e5b3c6c5e7e1a37', class: "pds-popover__trigger", popoverTarget: this.componentId, popoverTargetAction: this.popoverTargetAction, onClick: this.handleClick }, this.text), hAsync("div", { key: 'fcb97e9b4033eef58bdca4915572b986dabde43c', class: `pds-popover ${this.active ? 'pds-popover--active' : ''}`, id: this.componentId, popover: this.popoverType, style: { maxWidth: `${this.maxWidth}px` } }, hAsync("slot", { key: '1ffb626c69e06f17379ebf4ff4d5498f030909e8' }))));
8914
+ return (hAsync(Host, { key: '74048ac8ac89c87e9a65565151627dca0d7811b4' }, hAsync("button", { key: '61cbfd4ee6572e181e0f098acba36a5855280d62', class: "pds-popover__trigger", popoverTarget: this.componentId, popoverTargetAction: this.popoverTargetAction, onClick: this.handleClick }, this.text), hAsync("div", { key: 'f88b815d14fb15fe4eff85be908e1aa85f1195fb', class: `pds-popover ${this.active ? 'pds-popover--active' : ''}`, id: this.componentId, popover: this.popoverType, style: { maxWidth: `${this.maxWidth}px` } }, hAsync("slot", { key: '5dd632e9e4a833f5dc26626181f63b85340590a1' }))));
6985
8915
  }
6986
8916
  get el() { return getElement(this); }
6987
8917
  static get style() { return pdsPopoverCss; }
@@ -7025,7 +8955,7 @@ class PdsProgress {
7025
8955
  this.showPercent = false;
7026
8956
  }
7027
8957
  render() {
7028
- return (hAsync(Host, { key: '2a7768cc769f62579bfee6d8f9e6109d10df0aaf', class: this.animated ? { 'is-animated': this.animated } : '' }, hAsync("div", { key: '1eef3758e8c6e470f8cdd170e8d6c49e25bf9aa3', class: "pds-progress" }, hAsync("label", { key: '5b75150a747a15379fdf0ee23b1be561e6d990e7', class: "pds-progress__label", htmlFor: this.componentId }, this.label), hAsync("progress", { key: 'e20ad7d705d97ac11173ae515332fc1620a96328', id: this.componentId, max: "100", style: this.fillColor ? { '--color-progress-fill': this.fillColor } : {}, value: this.percent })), this.showPercent && hAsync("div", { key: '8bafb39b5976149b80e720952e625f60f1e3c73c', class: "pds-progress__percentage" }, this.percent, "%")));
8958
+ return (hAsync(Host, { key: 'e260269fec1449c354e6c66d2547697180839002', class: this.animated ? { 'is-animated': this.animated } : '' }, hAsync("div", { key: '44996e689f4ba5e15d40a3e6df3382d532533290', class: "pds-progress" }, hAsync("label", { key: '01d3d9a419bd0f38e3b39c37739a9c7a4966da49', class: "pds-progress__label", htmlFor: this.componentId }, this.label), hAsync("progress", { key: '78013be8fb0d05059ee05a5aba1a6e4ae50e5019', id: this.componentId, max: "100", style: this.fillColor ? { '--color-progress-fill': this.fillColor } : {}, value: this.percent })), this.showPercent && hAsync("div", { key: 'd9da8650c998c67f119818e10a891f55c3baa18e', class: "pds-progress__percentage" }, this.percent, "%")));
7029
8959
  }
7030
8960
  static get style() { return pdsProgressCss; }
7031
8961
  static get cmpMeta() { return {
@@ -7045,6 +8975,36 @@ class PdsProgress {
7045
8975
  }; }
7046
8976
  }
7047
8977
 
8978
+ const pdsPropertyCss = ":host{color:var(--pine-color-text-message);font:var(--pine-typography-body-medium)}";
8979
+
8980
+ /**
8981
+ * @slot (default) - The property text content.
8982
+ */
8983
+ class PdsProperty {
8984
+ constructor(hostRef) {
8985
+ registerInstance(this, hostRef);
8986
+ /**
8987
+ * The name of the icon to display before the property text.
8988
+ */
8989
+ this.icon = 'star';
8990
+ }
8991
+ render() {
8992
+ return (hAsync(Host, { key: 'ff84eef7431dfe6081018528a76987dec7f1dfbc', id: this.componentId }, hAsync("pds-box", { key: 'c9b8218d49ff7ac0a94cb65b9bbbe2069d4651ba', "align-items": "center", gap: "xs" }, hAsync("pds-icon", { key: '06d09314acdda08f48267c4af63eb5393eadfca1', icon: this.icon, size: "var(--pine-dimension-sm)", "aria-hidden": "true" }), hAsync("slot", { key: 'ca3654f3ee0791f5dcce5d0cff0c78e3aa22150b' }))));
8993
+ }
8994
+ static get style() { return pdsPropertyCss; }
8995
+ static get cmpMeta() { return {
8996
+ "$flags$": 9,
8997
+ "$tagName$": "pds-property",
8998
+ "$members$": {
8999
+ "componentId": [1, "component-id"],
9000
+ "icon": [1]
9001
+ },
9002
+ "$listeners$": undefined,
9003
+ "$lazyBundleId$": "-",
9004
+ "$attrsToReflect$": []
9005
+ }; }
9006
+ }
9007
+
7048
9008
  const labelCss$3 = ".sc-pds-radio-h{display:inline-block}[aria-disabled=true].sc-pds-radio-h label.sc-pds-radio{color:var(--pine-color-text-label-disabled)}[aria-readonly=true].sc-pds-radio-h label.sc-pds-radio{color:var(--pine-color-text-label-readonly)}label.sc-pds-radio{color:var(--pine-color-text-label);font:var(--pine-typography-body-medium);letter-spacing:var(--pine-letter-spacing)}";
7049
9009
 
7050
9010
  const pdsRadioCss = ".sc-pds-radio-h{--sizing-check-size:6px;--sizing-input-size:var(--pine-dimension-sm);--sizing-margin-block-start:6px;-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.is-invalid.sc-pds-radio-h input.sc-pds-radio{border-color:var(--pine-color-border-danger)}.is-invalid.sc-pds-radio-h input.sc-pds-radio:checked{background:var(--pine-color-border-danger)}.is-invalid.sc-pds-radio-h input.sc-pds-radio:checked:hover{background:var(--pine-color-border-danger-hover);border-color:var(--pine-color-border-danger-hover)}.is-invalid.sc-pds-radio-h input.sc-pds-radio:focus-visible{outline-color:var(--pine-color-focus-ring-danger)}.is-invalid.sc-pds-radio-h label.sc-pds-radio,.is-invalid.sc-pds-radio-h .pds-radio__message--error.sc-pds-radio{color:var(--pine-color-text-message-danger)}input.sc-pds-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--pine-color-background-container);border:var(--pine-border);border-radius:var(--pine-border-radius-full);-ms-flex:none;flex:none;height:var(--sizing-input-size);margin:0;-webkit-margin-before:var(--pine-dimension-025);margin-block-start:var(--pine-dimension-025);position:relative;width:var(--sizing-input-size)}input.sc-pds-radio:hover{background:var(--pine-color-background-container-hover);border:var(--pine-border-hover)}input.sc-pds-radio:checked{background:var(--pine-color-accent);border-color:var(--pine-color-accent)}input.sc-pds-radio:checked:hover{background:var(--pine-color-accent-hover);border-color:var(--pine-color-accent-hover)}input.sc-pds-radio:checked::after{background:var(--pine-color-background-container);border-radius:var(--pine-border-radius-full);content:\"\";display:block;height:var(--sizing-check-size);left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);width:var(--sizing-check-size)}input.sc-pds-radio:disabled{background:var(--pine-color-background-container-disabled);border-color:var(--pine-color-border-disabled);cursor:not-allowed}input.sc-pds-radio:disabled:checked{background-color:var(--pine-color-accent-disabled);border-color:var(--pine-color-border-disabled)}input.sc-pds-radio:disabled:checked::after{border-color:var(--pine-color-border-disabled)}input.sc-pds-radio:disabled+label.sc-pds-radio{cursor:not-allowed}input.sc-pds-radio:disabled~.pds-radio__message.sc-pds-radio{color:var(--pine-color-text-message-disabled)}input.sc-pds-radio:focus-visible{outline:var(--pine-outline-focus)}label.sc-pds-radio{display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs)}.visually-hidden.sc-pds-radio{border:0;clip:rect(0 0 0 0);-webkit-clip-path:polygon(0 0, 0 0, 0 0);clip-path:polygon(0 0, 0 0, 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pds-radio__message.sc-pds-radio{color:var(--pine-color-text-message);-webkit-margin-before:var(--sizing-margin-block-start);margin-block-start:var(--sizing-margin-block-start);-webkit-margin-start:var(--pine-dimension-md);margin-inline-start:var(--pine-dimension-md);width:100%}.pds-radio__message--error.sc-pds-radio{display:-ms-flexbox;display:flex;font-size:var(--pine-font-size-body-sm);gap:var(--pine-dimension-2xs)}.pds-radio__message--error.sc-pds-radio pds-icon.sc-pds-radio{-webkit-margin-before:var(--pine-dimension-025);margin-block-start:var(--pine-dimension-025)}";
@@ -7093,9 +9053,9 @@ class PdsRadio {
7093
9053
  return classNames.join(' ');
7094
9054
  }
7095
9055
  render() {
7096
- return (hAsync(Host, { key: '8c215fa4193cf8bd246cd83edf97b8316685714e', class: this.classNames() }, hAsync("label", { key: '578530f26dd25f73ccbbb39c773290cd275920cf', htmlFor: this.componentId }, hAsync("input", { key: '9ab61a2683246fae862feb5e432a0872288b7a87', "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage), "aria-invalid": this.invalid ? "true" : undefined, type: "radio", id: this.componentId, name: this.name, value: this.value, checked: this.checked, required: this.required, disabled: this.disabled, onChange: this.handleRadioChange }), hAsync("span", { key: 'f48c47ddb347bf0d7388359665dbbf3abf1b4859', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), this.helperMessage &&
7097
- hAsync("div", { key: 'b8dbb34af90eed82f69621ceaadd8da668f0b3de', class: 'pds-radio__message', id: messageId(this.componentId, 'helper') }, this.helperMessage), this.errorMessage &&
7098
- hAsync("div", { key: 'e777e4f2397ba833aefb7e8cd4ab9a32ea93685a', class: `pds-radio__message pds-radio__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, hAsync("pds-icon", { key: '13bd73d91bb3d676757ac9f4dcfcef7d2a5fcc55', icon: danger, size: "small" }), this.errorMessage)));
9056
+ return (hAsync(Host, { key: '5e8a4bd868172cda64aa2ad4697c7c41f0bdf633', class: this.classNames() }, hAsync("label", { key: 'f18a8a06cf3f9be68ab6b110fe67a8af7c1e8595', htmlFor: this.componentId }, hAsync("input", { key: '7a3ef56682ebe1facedf1eb52445f85e5e7de9d1', "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage), "aria-invalid": this.invalid ? "true" : undefined, type: "radio", id: this.componentId, name: this.name, value: this.value, checked: this.checked, required: this.required, disabled: this.disabled, onChange: this.handleRadioChange }), hAsync("span", { key: 'bd0c351062e30ac4f68252497affdcde4730ef3d', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), this.helperMessage &&
9057
+ hAsync("div", { key: '3b180595a4c088df1f121937c11f7518a802b22f', class: 'pds-radio__message', id: messageId(this.componentId, 'helper') }, this.helperMessage), this.errorMessage &&
9058
+ hAsync("div", { key: 'e931d2de83247c74bac1568f479ee99abd1f20a0', class: `pds-radio__message pds-radio__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, hAsync("pds-icon", { key: '7dab998a2992e3738b5b3cd14ca7031ff6db6dbb', icon: danger, size: "small" }), this.errorMessage)));
7099
9059
  }
7100
9060
  static get style() { return labelCss$3 + pdsRadioCss; }
7101
9061
  static get cmpMeta() { return {
@@ -7157,7 +9117,7 @@ class PdsRow {
7157
9117
  })), (this.minHeight && {
7158
9118
  'min-height': this.minHeight,
7159
9119
  }));
7160
- return hAsync(Host, { key: '7641ed5798525661b1a100bfbce60ed271e76887', class: `pds-row ${rowClasses}`, style: rowInlineStyles });
9120
+ return hAsync(Host, { key: 'b16cc4fa554894bccdb3dadbe07c531145dc2416', class: `pds-row ${rowClasses}`, style: rowInlineStyles });
7161
9121
  }
7162
9122
  static get style() { return pdsRowCss; }
7163
9123
  static get cmpMeta() { return {
@@ -7182,8 +9142,11 @@ const pdsSelectTokensCss = ":host{--pine-select-color-background-danger:var(--pi
7182
9142
 
7183
9143
  const labelCss$2 = ":host{display:inline-block}:host([aria-disabled=true]) label{color:var(--pine-color-text-label-disabled)}:host([aria-readonly=true]) label{color:var(--pine-color-text-label-readonly)}label{color:var(--pine-color-text-label);font:var(--pine-typography-body-medium);letter-spacing:var(--pine-letter-spacing)}";
7184
9144
 
7185
- const pdsSelectCss = ":host{--pds-select-background:var(--pine-color-background-container);--pds-select-border:var(--pine-border);--pds-select-border-radius:var(--pine-dimension-125);--pds-select-border-radius-start-end:var(--pine-dimension-125);--pds-select-border-radius-start-start:var(--pine-dimension-125);--pds-select-border-radius-end-end:var(--pine-dimension-125);--pds-select-border-radius-end-start:var(--pine-dimension-125);--pds-select-min-height:36px;--box-shadow-focus:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);--box-shadow-focus-error:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring-danger)}:host .hidden,:host :host([hidden]){display:none}.pds-select{display:grid;-ms-flex-direction:column;flex-direction:column;grid-template-areas:\"label label\" \"field field\" \"message message\";grid-template-columns:1fr minmax(2rem, -webkit-min-content);grid-template-columns:1fr minmax(2rem, min-content);grid-template-rows:-webkit-min-content -webkit-min-content -webkit-min-content;grid-template-rows:min-content min-content min-content;position:relative;width:100%}label{grid-area:label;-webkit-margin-after:var(--pine-dimension-2xs);margin-block-end:var(--pine-dimension-2xs)}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--pds-select-background);border:var(--pds-select-border);border-radius:var(--pds-select-border-radius);border-bottom-left-radius:var(--pds-select-border-radius-end-start, var(--pds-select-border-radius));border-bottom-right-radius:var(--pds-select-border-radius-end-end, var(--pds-select-border-radius));border-top-left-radius:var(--pds-select-border-radius-start-start, var(--pds-select-border-radius));border-top-right-radius:var(--pds-select-border-radius-start-end, var(--pds-select-border-radius));font:var(--pine-typography-body);grid-area:field;letter-spacing:var(--pine-letter-spacing);min-height:var(--pds-select-min-height);padding:var(--pine-dimension-xs) var(--pine-dimension-150);-webkit-padding-end:var(--pine-dimension-450);padding-inline-end:var(--pine-dimension-450);position:relative}select:hover{border-color:var(--pine-color-border-hover);cursor:pointer}select:focus-visible{border-color:var(--pine-color-border-active);outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}select:disabled{background-color:var(--pine-color-background-container-disabled);border-color:var(--pine-color-border-disabled);color:var(--pine-color-text-disabled);cursor:not-allowed}select:has(~.pds-select__message .pds-select__error-message){background-color:var(--pine-select-color-background-danger);border-color:var(--pine-color-border-danger)}select:has(~.pds-select__message .pds-select__error-message):focus-visible{outline-color:var(--pine-color-focus-ring-danger)}:host(.is-invalid) select{background-color:var(--pine-select-color-background-danger);border-color:var(--pine-color-border-danger)}:host(.is-invalid) select:focus-visible{outline-color:var(--pine-color-focus-ring-danger)}.pds-select__error-message,.pds-select__helper-message{font:var(--pine-typography-body-sm-medium);-webkit-margin-after:0;margin-block-end:0;-webkit-margin-before:var(--pine-dimension-2xs);margin-block-start:var(--pine-dimension-2xs)}.pds-select__error-message{-ms-flex-align:center;align-items:center;color:var(--pine-color-text-message-danger);display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}.pds-select__message{grid-area:message}.pds-select__select-icon{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;grid-column:-1/-2;grid-row:2/3;height:var(--pds-select-min-height);pointer-events:none;position:relative;z-index:1}.visually-hidden{border:0;clip:rect(0 0 0 0);-webkit-clip-path:polygon(0 0, 0 0, 0 0);clip-path:polygon(0 0, 0 0, 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}";
9145
+ const pdsSelectCss = ":host{--pds-select-background:var(--pine-color-background-container);--pds-select-border:var(--pine-border);--pds-select-border-radius:var(--pine-dimension-125);--pds-select-border-radius-start-end:var(--pine-dimension-125);--pds-select-border-radius-start-start:var(--pine-dimension-125);--pds-select-border-radius-end-end:var(--pine-dimension-125);--pds-select-border-radius-end-start:var(--pine-dimension-125);--pds-select-min-height:36px;--box-shadow-focus:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring);--box-shadow-focus-error:0 0 0 1px #ffffff, 0 0 0 3px var(--pine-color-focus-ring-danger)}:host .hidden,:host :host([hidden]){display:none}.pds-select{display:grid;-ms-flex-direction:column;flex-direction:column;grid-template-areas:\"label label\" \"field field\" \"message message\";grid-template-columns:1fr minmax(2rem, -webkit-min-content);grid-template-columns:1fr minmax(2rem, min-content);grid-template-rows:-webkit-min-content -webkit-min-content -webkit-min-content;grid-template-rows:min-content min-content min-content;position:relative;width:100%}.pds-select__label-wrapper{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;grid-area:label;-ms-flex-pack:justify;justify-content:space-between;-webkit-margin-after:var(--pine-dimension-2xs);margin-block-end:var(--pine-dimension-2xs)}.pds-select__action{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs);-webkit-margin-start:var(--pine-dimension-xs);margin-inline-start:var(--pine-dimension-xs)}label{-webkit-margin-after:var(--pine-dimension-2xs);margin-block-end:var(--pine-dimension-2xs)}.pds-select__label-wrapper label{-webkit-margin-after:0;margin-block-end:0}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--pds-select-background);border:var(--pds-select-border);border-radius:var(--pds-select-border-radius);border-bottom-left-radius:var(--pds-select-border-radius-end-start, var(--pds-select-border-radius));border-bottom-right-radius:var(--pds-select-border-radius-end-end, var(--pds-select-border-radius));border-top-left-radius:var(--pds-select-border-radius-start-start, var(--pds-select-border-radius));border-top-right-radius:var(--pds-select-border-radius-start-end, var(--pds-select-border-radius));font:var(--pine-typography-body);grid-area:field;letter-spacing:var(--pine-letter-spacing);min-height:var(--pds-select-min-height);padding:var(--pine-dimension-xs) var(--pine-dimension-150);-webkit-padding-end:var(--pine-dimension-450);padding-inline-end:var(--pine-dimension-450);position:relative}select:hover{border-color:var(--pine-color-border-hover);cursor:pointer}select:focus-visible{border-color:var(--pine-color-border-active);outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}select:disabled{background-color:var(--pine-color-background-container-disabled);border-color:var(--pine-color-border-disabled);color:var(--pine-color-text-disabled);cursor:not-allowed}select:has(~.pds-select__message .pds-select__error-message){background-color:var(--pine-select-color-background-danger);border-color:var(--pine-color-border-danger)}select:has(~.pds-select__message .pds-select__error-message):focus-visible{outline-color:var(--pine-color-focus-ring-danger)}:host(.is-invalid) select{background-color:var(--pine-select-color-background-danger);border-color:var(--pine-color-border-danger)}:host(.is-invalid) select:focus-visible{outline-color:var(--pine-color-focus-ring-danger)}.pds-select__error-message,.pds-select__helper-message{font:var(--pine-typography-body-sm-medium);-webkit-margin-after:0;margin-block-end:0;-webkit-margin-before:var(--pine-dimension-2xs);margin-block-start:var(--pine-dimension-2xs)}.pds-select__error-message{-ms-flex-align:center;align-items:center;color:var(--pine-color-text-message-danger);display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}.pds-select__message{grid-area:message}.pds-select__select-icon{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;grid-column:-1/-2;grid-row:2/3;height:var(--pds-select-min-height);pointer-events:none;position:relative;z-index:1}.visually-hidden{border:0;clip:rect(0 0 0 0);-webkit-clip-path:polygon(0 0, 0 0, 0 0);clip-path:polygon(0 0, 0 0, 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}";
7186
9146
 
9147
+ /**
9148
+ * @slot action - Content to be displayed in the label area, typically for help icons or links
9149
+ */
7187
9150
  class PdsSelect {
7188
9151
  constructor(hostRef) {
7189
9152
  registerInstance(this, hostRef);
@@ -7297,9 +9260,18 @@ class PdsSelect {
7297
9260
  }
7298
9261
  return classNames.join(' ');
7299
9262
  }
9263
+ renderAction() {
9264
+ const hasAction = this.el.querySelector('[slot="action"]') !== null;
9265
+ if (hasAction) {
9266
+ return (hAsync("div", { class: "pds-select__action", part: "action" }, hAsync("slot", { name: "action" })));
9267
+ }
9268
+ return null;
9269
+ }
7300
9270
  render() {
7301
- return (hAsync(Host, { key: 'c0a0b391e6b5c35d5d3d7fce9d1f92583c582aa5', "aria-disabled": this.disabled ? 'true' : null, class: this.classNames() }, hAsync("div", { key: '4f91cfcfcc570cf79d8e6a2f86d741f471489591', class: "pds-select" }, !this.hideLabel && (hAsync("label", { key: '21fa83cfdad6a46be1efa22ebc4df696ca49b7b1', htmlFor: this.componentId }, hAsync("span", { key: '760e46f98327c3b8e9ceb48ee158202ce42b8bb6', class: this.hideLabel ? 'visually-hidden' : '' }, this.label))), hAsync("select", { key: '78d92779624d84df9ae73515bbda74d9d44a8919', "aria-label": this.hideLabel ? this.label : undefined, autocomplete: this.autocomplete || undefined, class: "pds-select__field", disabled: this.disabled, id: this.componentId, multiple: this.multiple, name: this.name, onChange: this.onSelectUpdate, part: "select", required: this.required, ref: (el) => (this.selectEl = el) }), hAsync("div", { key: '9a75bf791747df08018d59de49855410c6dc2312', "aria-hidden": "true", class: "hidden", ref: (el) => (this.slotContainer = el) }, hAsync("slot", { key: '1a974b4e171971e922aa04e9a56d6e6f26635724', onSlotchange: this.handleSlotChange })), this.renderMessages(), !this.multiple && hAsync("pds-icon", { key: '9cbc569418617092229d660b34b2c17a2826c878', class: "pds-select__select-icon", icon: enlarge }))));
9271
+ const hasAction = this.el.querySelector('[slot="action"]') !== null;
9272
+ return (hAsync(Host, { key: '7bbdad147f68a6b000d738c991c4f77e7ba6d934', "aria-disabled": this.disabled ? 'true' : null, class: this.classNames(), "has-action": hasAction && !this.hideLabel ? 'true' : null }, hAsync("div", { key: 'd8b3ba6fcaa63435c919083760573d4a94394f56', class: "pds-select" }, !this.hideLabel && (hAsync("div", { key: '01edc2b7f833d71da9c440ee9e35327210b233d1', class: "pds-select__label-wrapper" }, hAsync("label", { key: '5a7743e84be49edf04deed503a27929d15fa8515', htmlFor: this.componentId }, hAsync("span", { key: 'df5e57ac95def4069ff07f081226d70ca5a15cc8', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), hasAction && this.renderAction())), hAsync("select", { key: '3e9faea02fe9449fdda224bf4f3ee157217640ff', "aria-label": this.hideLabel ? this.label : undefined, autocomplete: this.autocomplete || undefined, class: "pds-select__field", disabled: this.disabled, id: this.componentId, multiple: this.multiple, name: this.name, onChange: this.onSelectUpdate, part: "select", required: this.required, ref: (el) => (this.selectEl = el) }), hAsync("div", { key: '1a75cbfdca145e1d303c8c07de9cb8df5afa267e', "aria-hidden": "true", class: "hidden", ref: (el) => (this.slotContainer = el) }, hAsync("slot", { key: '2656e9edc098798b4a118c2a8b8a0f6283fc6f9a', onSlotchange: this.handleSlotChange })), this.renderMessages(), !this.multiple && hAsync("pds-icon", { key: 'ca5831acc4a4f72221a2d26be14e076daabd35b1', class: "pds-select__select-icon", icon: enlarge }))));
7302
9273
  }
9274
+ get el() { return getElement(this); }
7303
9275
  static get watchers() { return {
7304
9276
  "value": ["valueChanged"]
7305
9277
  }; }
@@ -10038,7 +12010,7 @@ class PdsSortable {
10038
12010
  Sortable.create(this.el, sortableOptions);
10039
12011
  }
10040
12012
  render() {
10041
- return (hAsync(Host, { key: 'c5353036ad9b108f742e55b1a28ebb449cf556d0', class: this.classNames(), id: this.componentId }, hAsync("slot", { key: 'cb71736fb3388f5829476c5b4802d5aa5f811ac7' })));
12013
+ return (hAsync(Host, { key: '1477131e596ce7320a0fd99164b330c3131ed148', class: this.classNames(), id: this.componentId }, hAsync("slot", { key: 'e5045a1937528b4cd269866dc5ec0f28361259d9' })));
10042
12014
  }
10043
12015
  get el() { return getElement(this); }
10044
12016
  static get style() { return pdsSortableCss; }
@@ -10085,7 +12057,7 @@ class PdsSortableItem {
10085
12057
  }
10086
12058
  }
10087
12059
  render() {
10088
- return (hAsync(Host, { key: 'b7817592ed6329f84e09ff5c5e200bc4305275bc', class: "pds-sortable-item", id: this.componentId }, this.showHandle && (hAsync("div", { key: 'c31df5f0c81bd684ac60690044e2409d0cbc7831', class: "pds-sortable-item__handle" }, hAsync("pds-icon", { key: 'ff764a5ef70560c073474a7a51f45dd89df53190', icon: handle }))), hAsync("slot", { key: 'e1f33a5e56b37405b7e46bff24dc91e4ece71870' }), this.enableActions && (hAsync("div", { key: '569563f7c7d5b069888a8c3ee8e50fd3d626b1b2', class: "pds-sortable-item__actions" }, hAsync("slot", { key: '9ca544725723703ddac0de3f0bb9a4b0884d1571', name: "sortable-item-actions" })))));
12060
+ return (hAsync(Host, { key: '221592dd0eec456c0baf58243f529ca463cbf135', class: "pds-sortable-item", id: this.componentId }, this.showHandle && (hAsync("div", { key: 'dbaff57b9faa68f8e72473b082108757b2283373', class: "pds-sortable-item__handle" }, hAsync("pds-icon", { key: '6d42dbe93a13bb6be2f76cccae9aa502d9940de5', icon: handle }))), hAsync("slot", { key: 'c4ae6785c184f6916ff4cc9b551e6cc07f4d0440' }), this.enableActions && (hAsync("div", { key: '4e2d581ae71cb669a06c0ec89c2f8e3e7a74cc65', class: "pds-sortable-item__actions" }, hAsync("slot", { key: '3ac9ddee2738b70fa2d4eec7fafa276d71125219', name: "sortable-item-actions" })))));
10089
12061
  }
10090
12062
  get el() { return getElement(this); }
10091
12063
  static get style() { return pdsSortableItemCss; }
@@ -10150,9 +12122,9 @@ class PdsSwitch {
10150
12122
  this.inheritedAttributes = Object.assign({}, inheritAriaAttributes(this.el));
10151
12123
  }
10152
12124
  render() {
10153
- return (hAsync(Host, { key: 'c91cd6368fff2cbcc6b4974505d94139fa2722c5', class: this.switchClassNames(), "aria-disabled": this.disabled ? 'true' : null }, hAsync("label", { key: 'e46f5f6a8073236ec0d55b2bcc8087dc32ad5a68', htmlFor: this.componentId }, hAsync("input", Object.assign({ key: '9a2db3481c6c5e223819066df34bc220a139df03', "aria-describedby": assignDescription(this.componentId, this.invalid, this.errorMessage || this.helperMessage), "aria-invalid": this.invalid ? "true" : undefined, checked: this.checked, class: "pds-switch__input", disabled: this.disabled, id: this.componentId, name: this.name ? this.name : this.componentId, onChange: this.onSwitchUpdate, required: this.required, type: "checkbox", value: this.value }, this.inheritedAttributes)), hAsync("span", { key: 'c3b138eb7b6800d01e5676e94c17988c8a52d4b2', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), this.helperMessage &&
10154
- hAsync("div", { key: 'fcaaa0ea30c8ad155a0b43004e77549abf888a57', class: `pds-switch__message`, id: messageId(this.componentId, 'helper') }, this.helperMessage), this.errorMessage &&
10155
- hAsync("div", { key: '045311e393d47bebd536d8fbe220260d112ceb3f', class: `pds-switch__message pds-switch__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, hAsync("pds-icon", { key: '035488794764ffaee3275edfa9a3e9fad2d11ddb', icon: danger, size: "small" }), this.errorMessage)));
12125
+ return (hAsync(Host, { key: '128ed012fe386dea88e6da282084589b22453588', class: this.switchClassNames(), "aria-disabled": this.disabled ? 'true' : null }, hAsync("label", { key: '3407eeffca9a0f0c047e5d7c761526b488aafb62', htmlFor: this.componentId }, hAsync("input", Object.assign({ key: '3f16f928b2b96aa212923ba09ee80a3559b8103c', "aria-describedby": assignDescription(this.componentId, this.invalid, this.errorMessage || this.helperMessage), "aria-invalid": this.invalid ? "true" : undefined, checked: this.checked, class: "pds-switch__input", disabled: this.disabled, id: this.componentId, name: this.name ? this.name : this.componentId, onChange: this.onSwitchUpdate, required: this.required, type: "checkbox", value: this.value }, this.inheritedAttributes)), hAsync("span", { key: '09c43ffbabce6a2fe133875ca15e0910d34064fa', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), this.helperMessage &&
12126
+ hAsync("div", { key: '90c9df8b2efef83cf238d540076bad04bf9aa2eb', class: `pds-switch__message`, id: messageId(this.componentId, 'helper') }, this.helperMessage), this.errorMessage &&
12127
+ hAsync("div", { key: 'e812446a907dc0ad822b0c5974fca5913117f051', class: `pds-switch__message pds-switch__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, hAsync("pds-icon", { key: 'e1c93c8ac145e54a205f8bfecf465ba8e484313b', icon: danger, size: "small" }), this.errorMessage)));
10156
12128
  }
10157
12129
  get el() { return getElement(this); }
10158
12130
  static get style() { return labelCss$1 + pdsSwitchCss; }
@@ -10194,9 +12166,9 @@ class PdsTab {
10194
12166
  this.pdsTabClick.emit([index, parentComponentId]);
10195
12167
  }
10196
12168
  render() {
10197
- const availabilityTabEdgeInlineStart = (hAsync("span", { key: 'cdf38229fcb4548cf188e401d8949f0fdddd8160', class: "pds-tab-edge", role: "presentation" }));
10198
- const availabilityTabEdgeInlineEnd = (hAsync("span", { key: 'ffd68b6f2c2a521560495411455185d426d41446', class: "pds-tab-edge pds-tab-edge--end", role: "presentation" }));
10199
- return (hAsync(Host, { key: 'afc723cff632012e447cecf9e4a2d7258b846d48', variant: this.variant, slot: "tabs", index: this.index }, hAsync("button", { key: 'f7f814b9ef9ac505a741ce74abd91934116f975f', role: "tab", id: this.parentComponentId + "__" + this.name, "aria-controls": this.parentComponentId + "__" + this.name + "-panel", tabindex: this.selected ? "0" : "-1", "aria-selected": this.selected ? "true" : "false", class: this.selected ? "pds-tab is-active" : "pds-tab", onClick: this.onTabClick.bind(this, this.index, this.parentComponentId) }, this.variant === "availability" && availabilityTabEdgeInlineStart, this.variant === "availability" && availabilityTabEdgeInlineEnd, hAsync("div", { key: '12fea0cfdf4a1e9acee497ff3e60cb276f6ae649', class: "pds-tab__content" }, hAsync("slot", { key: 'bf4455e277526a453111542ce7c80a0621135f18' })))));
12169
+ const availabilityTabEdgeInlineStart = (hAsync("span", { key: '4f66f8149bd22a451ddc9e2849dfb06110d9bad9', class: "pds-tab-edge", role: "presentation" }));
12170
+ const availabilityTabEdgeInlineEnd = (hAsync("span", { key: '2a8e8c25af220803c4b75d29f31d6381475a12dd', class: "pds-tab-edge pds-tab-edge--end", role: "presentation" }));
12171
+ return (hAsync(Host, { key: '62b2ccf5e478fc50b41bd837979311c535c78412', variant: this.variant, slot: "tabs", index: this.index }, hAsync("button", { key: 'e1b179b308791299b6d57441ea50f79da7bd8f21', role: "tab", id: this.parentComponentId + "__" + this.name, "aria-controls": this.parentComponentId + "__" + this.name + "-panel", tabindex: this.selected ? "0" : "-1", "aria-selected": this.selected ? "true" : "false", class: this.selected ? "pds-tab is-active" : "pds-tab", onClick: this.onTabClick.bind(this, this.index, this.parentComponentId) }, this.variant === "availability" && availabilityTabEdgeInlineStart, this.variant === "availability" && availabilityTabEdgeInlineEnd, hAsync("div", { key: 'fcf7b2db11eaa6e8f0c97b96f925540678a3c864', class: "pds-tab__content" }, hAsync("slot", { key: '2ee6ea6d01dc62bd177e9b8473602b9d5b2549b3' })))));
10200
12172
  }
10201
12173
  get el() { return getElement(this); }
10202
12174
  static get style() { return pdsTabCss; }
@@ -10305,7 +12277,7 @@ class PdsTable {
10305
12277
  headerCheckbox.indeterminate = !allSelectedRows && !noneSelectedRows;
10306
12278
  }
10307
12279
  render() {
10308
- return (hAsync(Host, { key: '8fbd30502d23962edf8977e9d23b8e990f043e23', class: this.classNames(), id: this.componentId, role: "grid", selectable: this.selectable, tabindex: "0" }, hAsync("slot", { key: '5041e5f588db255c747406c47bcfb3524cd58450' })));
12280
+ return (hAsync(Host, { key: '994a8ae5aae1ddcc7dd0271187dd65718bc1401f', class: this.classNames(), id: this.componentId, role: "grid", selectable: this.selectable, tabindex: "0" }, hAsync("slot", { key: 'e07c97a88d1bf1b2efb92f2cdf0159fc93ca9f9a' })));
10309
12281
  }
10310
12282
  get el() { return getElement(this); }
10311
12283
  static get style() { return pdsTableCss; }
@@ -10334,7 +12306,7 @@ class PdsTableBody {
10334
12306
  registerInstance(this, hostRef);
10335
12307
  }
10336
12308
  render() {
10337
- return (hAsync(Host, { key: 'ac8d361f2d78eb929c17523843d2ca0ac53f6789', role: "rowgroup" }, hAsync("slot", { key: '132782ab9466a9dbd4350247aae762d731e7aa71' })));
12309
+ return (hAsync(Host, { key: 'fc9edecfd03417cb9f6c4386b5fb4fd3a015138d', role: "rowgroup" }, hAsync("slot", { key: 'c79c6c1009b0afb456551d2e989491567fe73f43' })));
10338
12310
  }
10339
12311
  static get style() { return pdsTableBodyCss; }
10340
12312
  static get cmpMeta() { return {
@@ -10388,11 +12360,11 @@ class PdsTableCell {
10388
12360
  return classNames.join(' ');
10389
12361
  }
10390
12362
  render() {
10391
- return (hAsync(Host, { key: '801c1c1de26cb633280f308274861e8fd3629091', class: this.classNames(), role: "gridcell", style: this.tableRef &&
12363
+ return (hAsync(Host, { key: '289640cb5d2d78067b4a32a26e2eb9200cdbde1a', class: this.classNames(), role: "gridcell", style: this.tableRef &&
10392
12364
  this.tableRef.fixedColumn &&
10393
12365
  this.tableRef.selectable
10394
12366
  ? { '--fixed-cell-position': '40px' }
10395
- : {} }, hAsync("slot", { key: '0000fae3c9f199e3e80328afa7dd4347f429980b' })));
12367
+ : {} }, hAsync("slot", { key: 'e961e93f1d6cbc3bd6b9aa476632741dfc603bfc' })));
10396
12368
  }
10397
12369
  get hostElement() { return getElement(this); }
10398
12370
  static get style() { return pdsTableCellCss; }
@@ -10453,7 +12425,7 @@ class PdsTableHead {
10453
12425
  }
10454
12426
  }
10455
12427
  render() {
10456
- return (hAsync(Host, { key: '38eaecd17a328791e5993d020a490f63f67cd9d5', role: "row" }, this.tableRef && this.tableRef.selectable && (hAsync("pds-table-head-cell", { key: '438086205f3e018f597c868e98f300d28c4f3384', part: this.tableRef.selectable ? 'checkbox-cell' : '' }, hAsync("pds-checkbox", { key: '835bbe3c1f3a0fcb217f62cf862b9ea80ddff38e', componentId: this.generateUniqueId(), indeterminate: this.indeterminate, onInput: this.handleInput, label: "Select All Rows", hideLabel: true, checked: this.isSelected }))), hAsync("slot", { key: 'aa5507016e20951eab86f62680720c54de5a5a86' })));
12428
+ return (hAsync(Host, { key: '3f315b70b0c57570cbb81415a5590760242e6904', role: "row" }, this.tableRef && this.tableRef.selectable && (hAsync("pds-table-head-cell", { key: '09dc3a0630448be1112650ae34d6c09e0bf2539b', part: this.tableRef.selectable ? 'checkbox-cell' : '' }, hAsync("pds-checkbox", { key: '518ec4ad92e8b0b11fbff1c064a6811e13b442e0', componentId: this.generateUniqueId(), indeterminate: this.indeterminate, onInput: this.handleInput, label: "Select All Rows", hideLabel: true, checked: this.isSelected }))), hAsync("slot", { key: '527db0d141790c0d673cb81d4cca2266495b117e' })));
10457
12429
  }
10458
12430
  get hostElement() { return getElement(this); }
10459
12431
  static get style() { return pdsTableHeadCss; }
@@ -10535,11 +12507,11 @@ class PdsTableHeadCell {
10535
12507
  return classNames.join(' ');
10536
12508
  }
10537
12509
  render() {
10538
- return (hAsync(Host, { key: '2e75e9b8d1254ec21c786fd7e8304aaf38b26377', class: this.classNames(), role: "columnheader", onClick: this.toggleSort, style: this.tableRef &&
12510
+ return (hAsync(Host, { key: 'bf2f29d2214ba308be7c8cca6b2afb66fdccc2fa', class: this.classNames(), role: "columnheader", onClick: this.toggleSort, style: this.tableRef &&
10539
12511
  this.tableRef.fixedColumn &&
10540
12512
  this.tableRef.selectable
10541
12513
  ? { '--fixed-cell-position': '40px' }
10542
- : {} }, hAsync("slot", { key: 'f9c7aae07eb7907a18dcf1a59813a2810341f2e9' }), this.sortable && (hAsync("pds-icon", { key: 'd24a2f2c1db5bb15216ba64bc5a7299e18c23626', icon: this.sortingDirection === 'asc' ? upSmall : downSmall }))));
12514
+ : {} }, hAsync("slot", { key: '14a6849059768b901ec5be69cff37f56ce07c15b' }), this.sortable && (hAsync("pds-icon", { key: '29e0068115ec20dba39e4a798f11d0b0a0c6fef7', icon: this.sortingDirection === 'asc' ? upSmall : downSmall }))));
10543
12515
  }
10544
12516
  get hostElement() { return getElement(this); }
10545
12517
  static get style() { return pdsTableHeadCellCss; }
@@ -10605,7 +12577,7 @@ class PdsTableRow {
10605
12577
  }
10606
12578
  }
10607
12579
  render() {
10608
- return (hAsync(Host, { key: '651138280f94fd837a77e172c7e0ae5181ce8357', class: this.classNames(), role: "row" }, this.tableRef && this.tableRef.selectable && (hAsync("pds-table-cell", { key: '739cd15863b52d60f9a00bffcf0d900b1ce1f545', part: this.tableRef.fixedColumn ? 'checkbox-cell' : '', class: this.tableRef.selectable ? 'has-checkbox' : '' }, hAsync("pds-checkbox", { key: '2b2000bc223fa72e2be0edea25e72e4d26a98fa1', componentId: this.generateUniqueId(), onClick: this.handleClick, indeterminate: this.indeterminate, label: "Select Row", hideLabel: true, checked: this.isSelected }))), hAsync("slot", { key: '9d3be777c57b1ba4be066cc4ffa5496289fbdc02' })));
12580
+ return (hAsync(Host, { key: '3c2be878370bd35f97a3fc4cc1136a6fdb096a24', class: this.classNames(), role: "row" }, this.tableRef && this.tableRef.selectable && (hAsync("pds-table-cell", { key: '40541b11040d4c243d82779cf84e212f73541368', part: this.tableRef.fixedColumn ? 'checkbox-cell' : '', class: this.tableRef.selectable ? 'has-checkbox' : '' }, hAsync("pds-checkbox", { key: 'd20e734a91562340f3808297c2bb6f5f257d7a46', componentId: this.generateUniqueId(), onClick: this.handleClick, indeterminate: this.indeterminate, label: "Select Row", hideLabel: true, checked: this.isSelected }))), hAsync("slot", { key: '148434aa3dace85b0d48aa2a0ead93cda6850d2a' })));
10609
12581
  }
10610
12582
  get hostElement() { return getElement(this); }
10611
12583
  static get style() { return pdsTableRowCss; }
@@ -10634,7 +12606,7 @@ class PdsTabpanel {
10634
12606
  this.selected = false; // eslint-disable-line @stencil-community/strict-mutable
10635
12607
  }
10636
12608
  render() {
10637
- return (hAsync(Host, { key: '021d0c1f2fd740087bdd88069ac82455b8b5ede1', slot: "tabpanels" }, hAsync("div", { key: '036aca9a0a29ba7cfc8aa0132eab027898a661f2', role: "tabpanel", id: this.parentComponentId + "__" + this.name + '-panel', tabindex: "0", "aria-labelledby": this.parentComponentId + "__" + this.name, class: this.selected ? "pds-tabpanel is-active" : "pds-tabpanel" }, hAsync("slot", { key: 'd6b61e7b8af79204dbb5d3e421028715236a7bb1' }))));
12609
+ return (hAsync(Host, { key: '0465e33b28555596cc4a891a63a99c49153f577d', slot: "tabpanels" }, hAsync("div", { key: '8c2404f0aaee7dd7219552b51332d4194aa535ae', role: "tabpanel", id: this.parentComponentId + "__" + this.name + '-panel', tabindex: "0", "aria-labelledby": this.parentComponentId + "__" + this.name, class: this.selected ? "pds-tabpanel is-active" : "pds-tabpanel" }, hAsync("slot", { key: 'f7f9dc2a755aa726b8e46d8641087a8fdb1a9e5e' }))));
10638
12610
  }
10639
12611
  get el() { return getElement(this); }
10640
12612
  static get style() { return pdsTabpanelCss; }
@@ -10735,7 +12707,7 @@ class PdsTabs {
10735
12707
  this.passPropsToChildren();
10736
12708
  }
10737
12709
  render() {
10738
- return (hAsync(Host, { key: 'ed163de5068114e7c7dd8314c7ed036859d0d0af', "active-tab-name": this.activeTabName, class: this.classNames(), id: this.componentId }, hAsync("div", { key: '4b0f2bce407b2ea5c7ceb1435f4f91531334557e', class: "pds-tabs__tablist", role: "tablist", "aria-label": this.tablistLabel }, hAsync("slot", { key: 'a61fb9bd35056f87233c1fec66dda175b201b265', name: "tabs" })), hAsync("slot", { key: 'd78cc498b17ddd84015174802e4eb18fc5053ec2', name: "tabpanels" })));
12710
+ return (hAsync(Host, { key: '3b06654b1d2298a9cfa3fc42996ad72e80942ee4', "active-tab-name": this.activeTabName, class: this.classNames(), id: this.componentId }, hAsync("div", { key: '529e1aa48f7fea4754dbe8a3d8f655eb297e1a9a', class: "pds-tabs__tablist", role: "tablist", "aria-label": this.tablistLabel }, hAsync("slot", { key: 'cca3b75eec2a519e87878b39d8ca52a6c033dc4d', name: "tabs" })), hAsync("slot", { key: 'caf5abcc85eee1e45e197a7ec792a873cdfb104b', name: "tabpanels" })));
10739
12711
  }
10740
12712
  get el() { return getElement(this); }
10741
12713
  static get style() { return pdsTabsCss; }
@@ -10757,6 +12729,9 @@ class PdsTabs {
10757
12729
 
10758
12730
  const pdsTextCss = ":host{display:inline}:host([decoration=underline-dotted])>*{-webkit-text-decoration-color:var(--pine-color-grey-600);text-decoration-color:var(--pine-color-grey-600);-webkit-text-decoration-line:underline;text-decoration-line:underline;-webkit-text-decoration-style:dotted;text-decoration-style:dotted;text-decoration-thickness:12%;text-underline-offset:0.3rem;text-underline-position:under}:host([decoration=strikethrough])>*{text-decoration:line-through}h1{font:var(--pine-typography-heading-1);letter-spacing:var(--pine-letter-spacing-heading-1)}h2{font:var(--pine-typography-heading-2);letter-spacing:var(--pine-letter-spacing-heading-2)}h3{font:var(--pine-typography-heading-3);letter-spacing:var(--pine-letter-spacing-heading-3)}h4{font:var(--pine-typography-heading-4);letter-spacing:var(--pine-letter-spacing-heading-4)}h5{font:var(--pine-typography-heading-5);letter-spacing:var(--pine-letter-spacing-heading-5)}h6{font:var(--pine-typography-heading-6);letter-spacing:var(--pine-letter-spacing-heading-6)}code,em,p,pre,strong{font:var(--pine-typography-body);letter-spacing:var(--pine-letter-spacing)}code,pre{font-family:monospace;letter-spacing:0;line-height:1}em{font-style:normal}strong{font-weight:bolder}:host([truncate])>*{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host([italic])>*{font-style:italic}.pds-text{color:var(--color, var(--pine-color-text));margin:var(--pine-dimension-none)}.pds-text--size-2xl{font-size:var(--pine-font-size-body-2xl)}.pds-text--size-xl{font-size:var(--pine-font-size-body-xl)}.pds-text--size-lg{font-size:var(--pine-font-size-body-lg)}.pds-text--size-md{font-size:var(--pine-font-size-body-md)}.pds-text--size-sm{font-size:var(--pine-font-size-body-sm)}.pds-text--size-xs{font-size:var(--pine-font-size-body-xs)}.pds-text--size-2xs{font-size:var(--pine-font-size-body-2xs)}.pds-text--size-h1{font-size:var(--pine-font-size-heading-1)}.pds-text--size-h2{font-size:var(--pine-font-size-heading-2)}.pds-text--size-h3{font-size:var(--pine-font-size-heading-3)}.pds-text--size-h4{font-size:var(--pine-font-size-heading-4)}.pds-text--size-h5{font-size:var(--pine-font-size-heading-5)}.pds-text--size-h6{font-size:var(--pine-font-size-heading-6)}.pds-text--weight-extra-light{font-weight:var(--pine-font-weight-extra-light)}.pds-text--weight-light{font-weight:var(--pine-font-weight-light)}.pds-text--weight-regular{font-weight:var(--pine-font-weight-regular)}.pds-text--weight-medium{font-weight:var(--pine-font-weight-medium)}.pds-text--weight-semibold{font-weight:var(--pine-font-weight-semi-bold)}.pds-text--weight-bold{font-weight:var(--pine-font-weight-bold)}.pds-text--gutter-2xl{-webkit-margin-after:var(--pine-dimension-2xl);margin-block-end:var(--pine-dimension-2xl)}.pds-text--gutter-xl{-webkit-margin-after:var(--pine-dimension-xl);margin-block-end:var(--pine-dimension-xl)}.pds-text--gutter-lg{-webkit-margin-after:var(--pine-dimension-lg);margin-block-end:var(--pine-dimension-lg)}.pds-text--gutter-md{-webkit-margin-after:var(--pine-dimension-md);margin-block-end:var(--pine-dimension-md)}.pds-text--gutter-sm{-webkit-margin-after:var(--pine-dimension-sm);margin-block-end:var(--pine-dimension-sm)}.pds-text--gutter-xs{-webkit-margin-after:var(--pine-dimension-xs);margin-block-end:var(--pine-dimension-xs)}.pds-text--gutter-2xs{-webkit-margin-after:var(--pine-dimension-2xs);margin-block-end:var(--pine-dimension-2xs)}.pds-text--align-start{text-align:start}.pds-text--align-center{text-align:center}.pds-text--align-end{text-align:end}.pds-text--align-justify{text-align:justify}";
10759
12731
 
12732
+ /**
12733
+ * @part content - The text content container
12734
+ */
10760
12735
  class PdsText {
10761
12736
  constructor(hostRef) {
10762
12737
  registerInstance(this, hostRef);
@@ -10775,7 +12750,7 @@ class PdsText {
10775
12750
  ${this.weight !== undefined && this.weight.trim() !== '' ? `pds-text--weight-${this.weight}` : ''}
10776
12751
  ${this.decoration !== undefined && this.decoration.trim() !== '' ? `pds-text--decoration-${this.decoration}` : ''}
10777
12752
  `;
10778
- return (hAsync(Tag, { key: '327e3b37535dd5eb28cf3ea0430e544261e570c0', style: this.color && setColor(this.color), class: typeClasses }, hAsync("slot", { key: '97010a619baa6fd4a45e79ab9354097e99af0ae2' })));
12753
+ return (hAsync(Tag, { key: '2b8a2f2aaafd342a7df51029213c82224774fd5f', style: this.color && setColor(this.color), class: typeClasses, part: "content" }, hAsync("slot", { key: '8dd80aaec576c1e1ab152529f94732d6074c5542' })));
10779
12754
  }
10780
12755
  get el() { return getElement(this); }
10781
12756
  static get style() { return pdsTextCss; }
@@ -10803,8 +12778,11 @@ const labelCss = ":host{display:inline-block}:host([aria-disabled=true]) label{c
10803
12778
 
10804
12779
  const pdsInputTokensCss = ":host{--pine-input-color-background-danger:var(--pine-color-red-050)}";
10805
12780
 
10806
- const pdsTextareaCss = ":host{display:inline}:host([aria-readonly=true]) textarea{background-color:var(--pine-color-background-container-disabled);color:var(--pine-color-text-readonly)}.pds-textarea{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}label{display:block;-webkit-margin-after:var(--pine-dimension-xs);margin-block-end:var(--pine-dimension-xs)}.pds-textarea__field{background-color:var(--pine-color-background-container);border:var(--pine-border);border-radius:calc(var(--pine-dimension-xs) * 1.25);font:var(--pine-typography-body);letter-spacing:var(--pine-letter-spacing);padding:var(--pine-dimension-xs) var(--pine-dimension-sm)}.pds-textarea__field:hover:not(:disabled,.is-invalid){border:var(--pine-border-hover)}.pds-textarea__field:disabled{background-color:var(--pine-color-background-container-disabled);color:var(--pine-color-text-disabled);cursor:not-allowed}.pds-textarea__field:focus-visible{outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}.pds-textarea__field::-webkit-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field::-moz-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field:-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field::-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field::placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field.is-invalid{background-color:var(--pine-input-color-background-danger);border-color:var(--pine-color-border-danger)}.pds-textarea__field.is-invalid:focus-visible{outline-color:var(--pine-color-focus-ring-danger)}.pds-textarea__error-message,.pds-textarea__helper-message{font:var(--pine-typography-body-sm-medium);-webkit-margin-before:var(--pine-dimension-xs);margin-block-start:var(--pine-dimension-xs)}.pds-textarea__error-message{-ms-flex-align:center;align-items:center;color:var(--pine-color-text-message-danger);display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}";
12781
+ const pdsTextareaCss = ":host{display:inline}:host([aria-readonly=true]) textarea{background-color:var(--pine-color-background-container-disabled);color:var(--pine-color-text-readonly)}.pds-textarea{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.pds-textarea__label-wrapper{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-webkit-margin-after:var(--pine-dimension-xs);margin-block-end:var(--pine-dimension-xs)}.pds-textarea__action{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs);-webkit-margin-start:var(--pine-dimension-xs);margin-inline-start:var(--pine-dimension-xs)}label{display:block;-webkit-margin-after:var(--pine-dimension-xs);margin-block-end:var(--pine-dimension-xs)}.pds-textarea__label-wrapper label{-webkit-margin-after:0;margin-block-end:0}.pds-textarea__field{background-color:var(--pine-color-background-container);border:var(--pine-border);border-radius:calc(var(--pine-dimension-xs) * 1.25);font:var(--pine-typography-body);letter-spacing:var(--pine-letter-spacing);padding:var(--pine-dimension-xs) var(--pine-dimension-sm)}.pds-textarea__field:hover:not(:disabled,.is-invalid){border:var(--pine-border-hover)}.pds-textarea__field:disabled{background-color:var(--pine-color-background-container-disabled);color:var(--pine-color-text-disabled);cursor:not-allowed}.pds-textarea__field:focus-visible{outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}.pds-textarea__field::-webkit-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field::-moz-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field:-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field::-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field::placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field.is-invalid{background-color:var(--pine-input-color-background-danger);border-color:var(--pine-color-border-danger)}.pds-textarea__field.is-invalid:focus-visible{outline-color:var(--pine-color-focus-ring-danger)}.pds-textarea__error-message,.pds-textarea__helper-message{font:var(--pine-typography-body-sm-medium);-webkit-margin-before:var(--pine-dimension-xs);margin-block-start:var(--pine-dimension-xs)}.pds-textarea__error-message{-ms-flex-align:center;align-items:center;color:var(--pine-color-text-message-danger);display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}";
10807
12782
 
12783
+ /**
12784
+ * @slot action - Content to be displayed in the label area, typically for help icons or links
12785
+ */
10808
12786
  class PdsTextarea {
10809
12787
  constructor(hostRef) {
10810
12788
  registerInstance(this, hostRef);
@@ -10842,6 +12820,10 @@ class PdsTextarea {
10842
12820
  */
10843
12821
  this.value = '';
10844
12822
  this.hasFocus = false;
12823
+ /**
12824
+ * If true, the textarea has action content in the label area
12825
+ */
12826
+ this.hasAction = false;
10845
12827
  this.onBlur = (ev) => {
10846
12828
  this.hasFocus = false;
10847
12829
  if (this.focusedValue !== this.value) {
@@ -10922,16 +12904,24 @@ class PdsTextarea {
10922
12904
  }
10923
12905
  componentWillLoad() {
10924
12906
  this.inheritedAttributes = Object.assign(Object.assign({}, inheritAriaAttributes(this.el)), inheritAttributes$1(this.el));
12907
+ this.hasAction = this.el.querySelector('[slot="action"]') !== null;
10925
12908
  }
10926
12909
  componentDidLoad() {
10927
12910
  this.originalPdsInput = this.pdsInput;
10928
12911
  }
12912
+ renderAction() {
12913
+ const hasAction = this.el.querySelector('[slot="action"]') !== null;
12914
+ if (hasAction) {
12915
+ return (hAsync("div", { class: "pds-textarea__action", part: "action" }, hAsync("slot", { name: "action" })));
12916
+ }
12917
+ return null;
12918
+ }
10929
12919
  render() {
10930
12920
  const value = this.getValue();
10931
- return (hAsync(Host, { key: 'ebbf2c30176e11c92f04de02cad236496bc50a44', "aria-disabled": this.disabled ? 'true' : null, "aria-readonly": this.readonly ? 'true' : null }, hAsync("div", { key: '687811120416068af1b6d23a5fa8af149674669b', class: "pds-textarea" }, this.label &&
10932
- hAsync("label", { key: '40fa708e95ff63881f3d41646bf99841625631d6', htmlFor: this.componentId }, this.label), hAsync("textarea", Object.assign({ key: '543b7d6996b441b32f124f13025787c76340218d', ref: (el) => this.nativeTextarea = el, "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage), "aria-invalid": this.invalid ? "true" : undefined, autocomplete: this.autocomplete, class: this.textareaClassNames(), disabled: this.disabled, id: this.componentId, name: this.name, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, rows: this.rows, onBlur: this.onBlur, onChange: this.onTextareaChange, onFocus: this.onFocus, onInput: this.onInput }, this.inheritedAttributes), value), this.helperMessage &&
10933
- hAsync("p", { key: '47cd46e8c8c5daaa3ff6fa830e5dde3624403575', class: "pds-textarea__helper-message", id: messageId(this.componentId, 'helper') }, this.helperMessage), this.invalid &&
10934
- hAsync("p", { key: 'd84d1aece21db4ef596c154919fe689d66f4bd66', "aria-live": "assertive", class: "pds-textarea__error-message", id: messageId(this.componentId, 'error') }, hAsync("pds-icon", { key: 'cb4627c36e25e14f6699ad0cfddd4bf8528755e0', icon: danger, size: "small" }), this.errorMessage))));
12921
+ return (hAsync(Host, { key: 'fa16663adc15f59b07b1d9b6f0ce4ae7d4664967', "aria-disabled": this.disabled ? 'true' : null, "aria-readonly": this.readonly ? 'true' : null, "has-action": this.hasAction ? 'true' : null }, hAsync("div", { key: '5f3406c079111f605a38da627db564ab8f1d2dbb', class: "pds-textarea" }, this.label &&
12922
+ hAsync("div", { key: '00cea607a59cdf31adb21c3b7d92b8dc21560fe8', class: "pds-textarea__label-wrapper" }, hAsync("label", { key: 'e94c947240141495b83329ae9bbc38aefe77cee1', htmlFor: this.componentId }, this.label), this.renderAction()), hAsync("textarea", Object.assign({ key: 'd29a1cc338533a20808060f37af1f784f4556a02', ref: (el) => this.nativeTextarea = el, "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage), "aria-invalid": this.invalid ? "true" : undefined, autocomplete: this.autocomplete, class: this.textareaClassNames(), disabled: this.disabled, id: this.componentId, name: this.name, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, rows: this.rows, onBlur: this.onBlur, onChange: this.onTextareaChange, onFocus: this.onFocus, onInput: this.onInput }, this.inheritedAttributes), value), this.helperMessage &&
12923
+ hAsync("p", { key: 'be35def46c67b7b333be13e0d0ccbf47b4db3e15', class: "pds-textarea__helper-message", id: messageId(this.componentId, 'helper') }, this.helperMessage), this.invalid &&
12924
+ hAsync("p", { key: 'e4636cb54fea2071896a03e17c965039f58ec790', "aria-live": "assertive", class: "pds-textarea__error-message", id: messageId(this.componentId, 'error') }, hAsync("pds-icon", { key: 'dec05eb0d1b7713c96148725a9278f0f62361ba5', icon: danger, size: "small" }), this.errorMessage))));
10935
12925
  }
10936
12926
  get el() { return getElement(this); }
10937
12927
  static get watchers() { return {
@@ -10958,6 +12948,7 @@ class PdsTextarea {
10958
12948
  "rows": [2],
10959
12949
  "value": [1025],
10960
12950
  "hasFocus": [32],
12951
+ "hasAction": [32],
10961
12952
  "setFocus": [64]
10962
12953
  },
10963
12954
  "$listeners$": undefined,
@@ -11048,13 +13039,13 @@ class PdsToast {
11048
13039
  return this.icon && hAsync("pds-icon", { name: this.icon, class: "pds-toast__icon" });
11049
13040
  }
11050
13041
  render() {
11051
- return (hAsync(Host, { key: 'dbb28e20be685c46f8c6cb2dd1a5f58f28e27589', hidden: !this.isVisible }, hAsync("div", { key: '471b6b387799754b92ad16baf70562e26c379616', class: {
13042
+ return (hAsync(Host, { key: '3fb4b7b3600555959e9ed09f9dfd3a725d4a2de7', hidden: !this.isVisible }, hAsync("div", { key: '4f8d554fc30a5e4fb3c498b8fa5a2972a60eb0ab', class: {
11052
13043
  'pds-toast': true,
11053
13044
  [`pds-toast--${this.type}`]: this.type !== 'default',
11054
13045
  'pds-toast--animating-out': this.isAnimatingOut
11055
- }, role: "alert", "aria-live": "polite" }, this.renderIcon(), hAsync("span", { key: '638faa5e37de1bae0e59c994de35e27960fc625b', class: "pds-toast__message" }, hAsync("slot", { key: 'e58c86bbe9a5467b6b362e0f67db4074b9cac0cb' })), this.dismissible && (hAsync("button", { key: '43bd64963222a78163b337b37e9d5ff888236b45', type: "button", class: "pds-toast__button", onClick: () => {
13046
+ }, role: "alert", "aria-live": "polite" }, this.renderIcon(), hAsync("span", { key: 'a70883e76524ce76e562f48d62df1a42fb65659c', class: "pds-toast__message" }, hAsync("slot", { key: '3e2fd182b97d1cd89c59ca109404d77e9f834806' })), this.dismissible && (hAsync("button", { key: '945b766572831b259f2ff36fdf628b254189d334', type: "button", class: "pds-toast__button", onClick: () => {
11056
13047
  this.dismiss();
11057
- }, "aria-label": "Dismiss message" }, hAsync("pds-icon", { key: '0c924e96515a7934f51d80b4e57f97db5bfaed14', name: "remove" }))))));
13048
+ }, "aria-label": "Dismiss message" }, hAsync("pds-icon", { key: '9492720d544270179ae43bd3d1ecb4b1f6c0882b', name: "remove" }))))));
11058
13049
  }
11059
13050
  static get watchers() { return {
11060
13051
  "duration": ["handleDurationChange"]
@@ -11462,7 +13453,7 @@ class PdsTooltip {
11462
13453
  }
11463
13454
  render() {
11464
13455
  const hostId = this.componentId || undefined;
11465
- return (hAsync(Host, { key: '462d8c0b1b70de08c0a4f9fe0b3977fa3b4af461', id: hostId, class: { 'pds-tooltip--is-open': this.opened } }, hAsync("span", { key: 'dfb735da6e04d95701bc223bc054414d781c0f4a', class: "pds-tooltip__trigger", onMouseEnter: this.handleShow, onMouseLeave: this.handleHide, onFocus: this.handleShow, onBlur: this.handleHide, ref: el => this.triggerEl = el }, hAsync("slot", { key: 'f0e5970a1ba6d59045306b836468cd00a06b183f' })), hAsync("div", { key: '212ec606b29bd7a64a2ea3b1b4fae9746361a712', class: "pds-tooltip__content-slot-wrapper", style: { display: 'none' } }, hAsync("slot", { key: '035ea5b2dfec0ca7f1462c30053f8f455cb986f2', name: "content" }))));
13456
+ return (hAsync(Host, { key: 'd0651080fc68d70a01d8c487d08a59f356f06e88', id: hostId, class: { 'pds-tooltip--is-open': this.opened } }, hAsync("span", { key: '9f8c246c63a80c0d30c73687faa133b213c6bb63', class: "pds-tooltip__trigger", onMouseEnter: this.handleShow, onMouseLeave: this.handleHide, onFocus: this.handleShow, onBlur: this.handleHide, ref: el => this.triggerEl = el }, hAsync("slot", { key: '2295b22ac9ec244f31410cd6a3764248100a1c48' })), hAsync("div", { key: '7c8a59703b7c6ff43b0aa9352a869d59bca9b2b1', class: "pds-tooltip__content-slot-wrapper", style: { display: 'none' } }, hAsync("slot", { key: '612dab7daf61394624177c45d47f542d551af52c', name: "content" }))));
11466
13457
  }
11467
13458
  get el() { return getElement(this); }
11468
13459
  static get watchers() { return {
@@ -11501,6 +13492,7 @@ registerComponents([
11501
13492
  PdsButton,
11502
13493
  PdsCheckbox,
11503
13494
  PdsChip,
13495
+ PdsCombobox,
11504
13496
  PdsCopytext,
11505
13497
  PdsDivider,
11506
13498
  PdsDropdownMenu,
@@ -11517,6 +13509,7 @@ registerComponents([
11517
13509
  PdsModalHeader,
11518
13510
  PdsPopover,
11519
13511
  PdsProgress,
13512
+ PdsProperty,
11520
13513
  PdsRadio,
11521
13514
  PdsRow,
11522
13515
  PdsSelect,