@pine-ds/core 3.17.0 → 3.19.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 (418) hide show
  1. package/components/index2.js +1 -1
  2. package/components/index2.js.map +1 -1
  3. package/components/pds-button2.js +21 -8
  4. package/components/pds-button2.js.map +1 -1
  5. package/components/pds-chip2.js +20 -7
  6. package/components/pds-chip2.js.map +1 -1
  7. package/components/pds-combobox.js +2 -2
  8. package/components/pds-combobox.js.map +1 -1
  9. package/components/pds-copytext.js +49 -1
  10. package/components/pds-copytext.js.map +1 -1
  11. package/components/pds-dropdown-menu-item.js +3 -2
  12. package/components/pds-dropdown-menu-item.js.map +1 -1
  13. package/components/pds-dropdown-menu.js +1 -1
  14. package/components/pds-dropdown-menu.js.map +1 -1
  15. package/components/pds-link2.js +3 -2
  16. package/components/pds-link2.js.map +1 -1
  17. package/components/pds-multiselect.js +61 -15
  18. package/components/pds-multiselect.js.map +1 -1
  19. package/components/pds-table-cell2.js +36 -3
  20. package/components/pds-table-cell2.js.map +1 -1
  21. package/components/pds-table-head.js +1 -1
  22. package/components/pds-table-head.js.map +1 -1
  23. package/components/pds-table-row.js +3 -3
  24. package/components/pds-table-row.js.map +1 -1
  25. package/components/pds-table.js +12 -4
  26. package/components/pds-table.js.map +1 -1
  27. package/components/pds-text2.js +41 -1
  28. package/components/pds-text2.js.map +1 -1
  29. package/components/truncation-tooltip.js +247 -0
  30. package/components/truncation-tooltip.js.map +1 -0
  31. package/dist/cjs/{index-DkQebouX.js → index-CjhTEk39.js} +3 -3
  32. package/dist/cjs/index-CjhTEk39.js.map +1 -0
  33. package/dist/cjs/loader.cjs.js +1 -1
  34. package/dist/cjs/pds-accordion.cjs.entry.js +1 -1
  35. package/dist/cjs/pds-avatar.cjs.entry.js +1 -1
  36. package/dist/cjs/pds-button.cjs.entry.js +17 -7
  37. package/dist/cjs/pds-button.entry.cjs.js.map +1 -1
  38. package/dist/cjs/pds-checkbox.cjs.entry.js +1 -1
  39. package/dist/cjs/pds-chip.cjs.entry.js +20 -8
  40. package/dist/cjs/pds-chip.entry.cjs.js.map +1 -1
  41. package/dist/cjs/pds-combobox.cjs.entry.js +2 -2
  42. package/dist/cjs/pds-combobox.entry.cjs.js.map +1 -1
  43. package/dist/cjs/pds-copytext.cjs.entry.js +48 -2
  44. package/dist/cjs/pds-copytext.entry.cjs.js.map +1 -1
  45. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +2 -2
  46. package/dist/cjs/pds-dropdown-menu-item.entry.cjs.js.map +1 -1
  47. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +1 -1
  48. package/dist/cjs/pds-dropdown-menu.entry.cjs.js.map +1 -1
  49. package/dist/cjs/pds-filter.cjs.entry.js +1 -1
  50. package/dist/cjs/pds-input.cjs.entry.js +1 -1
  51. package/dist/cjs/pds-link.cjs.entry.js +3 -3
  52. package/dist/cjs/pds-link.entry.cjs.js.map +1 -1
  53. package/dist/cjs/pds-multiselect.cjs.entry.js +58 -15
  54. package/dist/cjs/pds-multiselect.entry.cjs.js.map +1 -1
  55. package/dist/cjs/pds-radio-group.cjs.entry.js +1 -1
  56. package/dist/cjs/pds-radio.cjs.entry.js +1 -1
  57. package/dist/cjs/pds-select.cjs.entry.js +1 -1
  58. package/dist/cjs/pds-sortable-item.cjs.entry.js +1 -1
  59. package/dist/cjs/pds-switch.cjs.entry.js +1 -1
  60. package/dist/cjs/pds-table-cell.cjs.entry.js +35 -3
  61. package/dist/cjs/pds-table-cell.entry.cjs.js.map +1 -1
  62. package/dist/cjs/pds-table-head-cell.cjs.entry.js +1 -1
  63. package/dist/cjs/pds-table-head.cjs.entry.js +1 -1
  64. package/dist/cjs/pds-table-head.entry.cjs.js.map +1 -1
  65. package/dist/cjs/pds-table-row.cjs.entry.js +3 -3
  66. package/dist/cjs/pds-table-row.entry.cjs.js.map +1 -1
  67. package/dist/cjs/pds-table.cjs.entry.js +11 -4
  68. package/dist/cjs/pds-table.entry.cjs.js.map +1 -1
  69. package/dist/cjs/pds-text.cjs.entry.js +40 -1
  70. package/dist/cjs/pds-text.entry.cjs.js.map +1 -1
  71. package/dist/cjs/pds-textarea.cjs.entry.js +1 -1
  72. package/dist/cjs/pine-core.cjs.js +1 -1
  73. package/dist/cjs/truncation-tooltip-BGGnm8SZ.js +249 -0
  74. package/dist/cjs/truncation-tooltip-BGGnm8SZ.js.map +1 -0
  75. package/dist/collection/components/pds-button/pds-button.css +1 -1
  76. package/dist/collection/components/pds-button/pds-button.js +42 -7
  77. package/dist/collection/components/pds-button/pds-button.js.map +1 -1
  78. package/dist/collection/components/pds-chip/pds-chip.css +25 -4
  79. package/dist/collection/components/pds-chip/pds-chip.js +50 -7
  80. package/dist/collection/components/pds-chip/pds-chip.js.map +1 -1
  81. package/dist/collection/components/pds-chip/stories/pds-chip.stories.js +36 -13
  82. package/dist/collection/components/pds-combobox/pds-combobox.js +2 -2
  83. package/dist/collection/components/pds-combobox/pds-combobox.js.map +1 -1
  84. package/dist/collection/components/pds-copytext/pds-copytext.js +52 -2
  85. package/dist/collection/components/pds-copytext/pds-copytext.js.map +1 -1
  86. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +21 -2
  87. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js.map +1 -1
  88. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.css +1 -1
  89. package/dist/collection/components/pds-link/pds-link.js +21 -2
  90. package/dist/collection/components/pds-link/pds-link.js.map +1 -1
  91. package/dist/collection/components/pds-multiselect/pds-multiselect.css +2 -2
  92. package/dist/collection/components/pds-multiselect/pds-multiselect.js +130 -13
  93. package/dist/collection/components/pds-multiselect/pds-multiselect.js.map +1 -1
  94. package/dist/collection/components/pds-multiselect/stories/pds-multiselect.stories.js +55 -0
  95. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.css +1 -1
  96. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +37 -3
  97. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js.map +1 -1
  98. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +1 -1
  99. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js.map +1 -1
  100. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +3 -3
  101. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js.map +1 -1
  102. package/dist/collection/components/pds-table/pds-table.css +1 -0
  103. package/dist/collection/components/pds-table/pds-table.js +33 -17
  104. package/dist/collection/components/pds-table/pds-table.js.map +1 -1
  105. package/dist/collection/components/pds-table/stories/pds-table.stories.js +58 -0
  106. package/dist/collection/components/pds-text/pds-text.js +43 -2
  107. package/dist/collection/components/pds-text/pds-text.js.map +1 -1
  108. package/dist/collection/components/pds-text/stories/pds-text.stories.js +21 -2
  109. package/dist/collection/utils/truncation-tooltip.js +242 -0
  110. package/dist/collection/utils/truncation-tooltip.js.map +1 -0
  111. package/dist/collection/utils/types.js.map +1 -1
  112. package/dist/docs.json +255 -20
  113. package/dist/esm/{index-D094LgxJ.js → index-BFkDH5XU.js} +3 -3
  114. package/dist/esm/index-BFkDH5XU.js.map +1 -0
  115. package/dist/esm/loader.js +1 -1
  116. package/dist/esm/pds-accordion.entry.js +1 -1
  117. package/dist/esm/pds-avatar.entry.js +1 -1
  118. package/dist/esm/pds-button.entry.js +17 -7
  119. package/dist/esm/pds-button.entry.js.map +1 -1
  120. package/dist/esm/pds-checkbox.entry.js +1 -1
  121. package/dist/esm/pds-chip.entry.js +20 -8
  122. package/dist/esm/pds-chip.entry.js.map +1 -1
  123. package/dist/esm/pds-combobox.entry.js +2 -2
  124. package/dist/esm/pds-combobox.entry.js.map +1 -1
  125. package/dist/esm/pds-copytext.entry.js +49 -3
  126. package/dist/esm/pds-copytext.entry.js.map +1 -1
  127. package/dist/esm/pds-dropdown-menu-item.entry.js +2 -2
  128. package/dist/esm/pds-dropdown-menu-item.entry.js.map +1 -1
  129. package/dist/esm/pds-dropdown-menu.entry.js +1 -1
  130. package/dist/esm/pds-dropdown-menu.entry.js.map +1 -1
  131. package/dist/esm/pds-filter.entry.js +1 -1
  132. package/dist/esm/pds-input.entry.js +1 -1
  133. package/dist/esm/pds-link.entry.js +3 -3
  134. package/dist/esm/pds-link.entry.js.map +1 -1
  135. package/dist/esm/pds-multiselect.entry.js +58 -15
  136. package/dist/esm/pds-multiselect.entry.js.map +1 -1
  137. package/dist/esm/pds-radio-group.entry.js +1 -1
  138. package/dist/esm/pds-radio.entry.js +1 -1
  139. package/dist/esm/pds-select.entry.js +1 -1
  140. package/dist/esm/pds-sortable-item.entry.js +1 -1
  141. package/dist/esm/pds-switch.entry.js +1 -1
  142. package/dist/esm/pds-table-cell.entry.js +35 -3
  143. package/dist/esm/pds-table-cell.entry.js.map +1 -1
  144. package/dist/esm/pds-table-head-cell.entry.js +1 -1
  145. package/dist/esm/pds-table-head.entry.js +1 -1
  146. package/dist/esm/pds-table-head.entry.js.map +1 -1
  147. package/dist/esm/pds-table-row.entry.js +3 -3
  148. package/dist/esm/pds-table-row.entry.js.map +1 -1
  149. package/dist/esm/pds-table.entry.js +11 -4
  150. package/dist/esm/pds-table.entry.js.map +1 -1
  151. package/dist/esm/pds-text.entry.js +40 -1
  152. package/dist/esm/pds-text.entry.js.map +1 -1
  153. package/dist/esm/pds-textarea.entry.js +1 -1
  154. package/dist/esm/pine-core.js +1 -1
  155. package/dist/esm/truncation-tooltip-CTHpMbU3.js +247 -0
  156. package/dist/esm/truncation-tooltip-CTHpMbU3.js.map +1 -0
  157. package/dist/esm-es5/{index-D094LgxJ.js → index-BFkDH5XU.js} +1 -1
  158. package/dist/esm-es5/index-BFkDH5XU.js.map +1 -0
  159. package/dist/esm-es5/loader.js +1 -1
  160. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  161. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  162. package/dist/esm-es5/pds-button.entry.js +1 -1
  163. package/dist/esm-es5/pds-button.entry.js.map +1 -1
  164. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  165. package/dist/esm-es5/pds-chip.entry.js +1 -1
  166. package/dist/esm-es5/pds-chip.entry.js.map +1 -1
  167. package/dist/esm-es5/pds-combobox.entry.js +1 -1
  168. package/dist/esm-es5/pds-combobox.entry.js.map +1 -1
  169. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  170. package/dist/esm-es5/pds-copytext.entry.js.map +1 -1
  171. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  172. package/dist/esm-es5/pds-dropdown-menu-item.entry.js.map +1 -1
  173. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  174. package/dist/esm-es5/pds-dropdown-menu.entry.js.map +1 -1
  175. package/dist/esm-es5/pds-filter.entry.js +1 -1
  176. package/dist/esm-es5/pds-input.entry.js +1 -1
  177. package/dist/esm-es5/pds-link.entry.js +1 -1
  178. package/dist/esm-es5/pds-link.entry.js.map +1 -1
  179. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  180. package/dist/esm-es5/pds-multiselect.entry.js.map +1 -1
  181. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  182. package/dist/esm-es5/pds-radio.entry.js +1 -1
  183. package/dist/esm-es5/pds-select.entry.js +1 -1
  184. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  185. package/dist/esm-es5/pds-switch.entry.js +1 -1
  186. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  187. package/dist/esm-es5/pds-table-cell.entry.js.map +1 -1
  188. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  189. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  190. package/dist/esm-es5/pds-table-head.entry.js.map +1 -1
  191. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  192. package/dist/esm-es5/pds-table-row.entry.js.map +1 -1
  193. package/dist/esm-es5/pds-table.entry.js +1 -1
  194. package/dist/esm-es5/pds-table.entry.js.map +1 -1
  195. package/dist/esm-es5/pds-text.entry.js +1 -1
  196. package/dist/esm-es5/pds-text.entry.js.map +1 -1
  197. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  198. package/dist/esm-es5/pine-core.js +1 -1
  199. package/dist/esm-es5/truncation-tooltip-CTHpMbU3.js +2 -0
  200. package/dist/esm-es5/truncation-tooltip-CTHpMbU3.js.map +1 -0
  201. package/dist/pine-core/{p-2aac4495.system.entry.js → p-15ac22bd.system.entry.js} +2 -2
  202. package/dist/pine-core/p-203f6e9e.entry.js +2 -0
  203. package/dist/pine-core/p-203f6e9e.entry.js.map +1 -0
  204. package/dist/pine-core/{p-0ac54273.entry.js → p-276f774a.entry.js} +2 -2
  205. package/dist/pine-core/p-27ccbd3f.entry.js +2 -0
  206. package/dist/pine-core/p-27ccbd3f.entry.js.map +1 -0
  207. package/dist/pine-core/p-2e22a1fc.system.entry.js +2 -0
  208. package/dist/pine-core/p-2e22a1fc.system.entry.js.map +1 -0
  209. package/dist/pine-core/{p-01aec1ad.system.entry.js → p-2f64a2fe.system.entry.js} +2 -2
  210. package/dist/pine-core/p-2f64a2fe.system.entry.js.map +1 -0
  211. package/dist/pine-core/p-3239c67a.entry.js +2 -0
  212. package/dist/pine-core/{p-f5fb71f6.entry.js.map → p-3239c67a.entry.js.map} +1 -1
  213. package/dist/pine-core/{p-ce069162.entry.js → p-32f65e48.entry.js} +2 -2
  214. package/dist/pine-core/p-4189f1be.system.entry.js +2 -0
  215. package/dist/pine-core/p-4189f1be.system.entry.js.map +1 -0
  216. package/dist/pine-core/{p-7d7dce2c.system.entry.js → p-4232520f.system.entry.js} +2 -2
  217. package/dist/pine-core/{p-8e40c9ef.entry.js → p-439e3343.entry.js} +2 -2
  218. package/dist/pine-core/p-439e3343.entry.js.map +1 -0
  219. package/dist/pine-core/{p-5abc5d82.system.entry.js → p-49c2e2ce.system.entry.js} +2 -2
  220. package/dist/pine-core/{p-b1a7a0b2.entry.js → p-4de64b1f.entry.js} +2 -2
  221. package/dist/pine-core/{p-0b52923b.system.entry.js → p-52c5ced3.system.entry.js} +2 -2
  222. package/dist/pine-core/{p-b46f66e8.system.entry.js → p-5757d038.system.entry.js} +2 -2
  223. package/dist/pine-core/p-5757d038.system.entry.js.map +1 -0
  224. package/dist/pine-core/{p-36e5e9f4.system.entry.js → p-57aa762e.system.entry.js} +2 -2
  225. package/dist/pine-core/p-57aa762e.system.entry.js.map +1 -0
  226. package/dist/pine-core/p-57d2c33a.entry.js +2 -0
  227. package/dist/pine-core/p-57d2c33a.entry.js.map +1 -0
  228. package/dist/pine-core/{p-3815f565.entry.js → p-593cee44.entry.js} +2 -2
  229. package/dist/pine-core/{p-73bce0bf.entry.js → p-5a7b25d0.entry.js} +2 -2
  230. package/dist/pine-core/{p-06046885.entry.js → p-5dbbb2be.entry.js} +3 -3
  231. package/dist/pine-core/{p-06046885.entry.js.map → p-5dbbb2be.entry.js.map} +1 -1
  232. package/dist/pine-core/p-5hPM5knE.js +2 -0
  233. package/dist/pine-core/p-5hPM5knE.js.map +1 -0
  234. package/dist/pine-core/{p-957647f9.entry.js → p-663abd80.entry.js} +2 -2
  235. package/dist/pine-core/{p-23111b1c.system.entry.js → p-6980edfe.system.entry.js} +2 -2
  236. package/dist/pine-core/{p-BxVkyfaO.system.js → p-6I02BpQf.system.js} +1 -1
  237. package/dist/pine-core/p-6I02BpQf.system.js.map +1 -0
  238. package/dist/pine-core/{p-c9965216.system.entry.js → p-6fbe6be4.system.entry.js} +2 -2
  239. package/dist/pine-core/p-7514a191.entry.js +2 -0
  240. package/dist/pine-core/p-7514a191.entry.js.map +1 -0
  241. package/dist/pine-core/{p-bd18b9bf.system.entry.js → p-77d4f274.system.entry.js} +2 -2
  242. package/dist/pine-core/{p-78246e05.entry.js → p-85ce731b.entry.js} +2 -2
  243. package/dist/pine-core/{p-b1820970.system.entry.js → p-87cee4a0.system.entry.js} +2 -2
  244. package/dist/pine-core/{p-fbd8ae50.entry.js → p-88686193.entry.js} +2 -2
  245. package/dist/pine-core/p-88eb4f6c.entry.js +2 -0
  246. package/dist/pine-core/p-88eb4f6c.entry.js.map +1 -0
  247. package/dist/pine-core/{p-b09bde5c.system.entry.js → p-8ab66dbc.system.entry.js} +2 -2
  248. package/dist/pine-core/p-8be316b4.system.entry.js +2 -0
  249. package/dist/pine-core/p-8be316b4.system.entry.js.map +1 -0
  250. package/dist/pine-core/{p-7a11a6c7.entry.js → p-8f935480.entry.js} +2 -2
  251. package/dist/pine-core/p-9263809e.entry.js +2 -0
  252. package/dist/pine-core/p-9263809e.entry.js.map +1 -0
  253. package/dist/pine-core/{p-425144ae.entry.js → p-9a9c1b17.entry.js} +2 -2
  254. package/dist/pine-core/p-9a9c1b17.entry.js.map +1 -0
  255. package/dist/pine-core/{p-3f05d72e.system.entry.js → p-9e3e441c.system.entry.js} +2 -2
  256. package/dist/pine-core/{p-3cd53462.entry.js → p-9e8296fc.entry.js} +2 -2
  257. package/dist/pine-core/{p-BJPmPVaF.system.js.map → p-B3dAc5EW.system.js.map} +1 -1
  258. package/dist/pine-core/{p-h_fnwqV_.system.js.map → p-B3xx1u93.system.js.map} +1 -1
  259. package/dist/pine-core/p-B48FyOD0.system.js.map +1 -0
  260. package/dist/pine-core/{p-DY97YDUU.system.js.map → p-B5CyjPYU.system.js.map} +1 -1
  261. package/dist/pine-core/{p-N-jt0_Yl.system.js.map → p-BBJXL9br.system.js.map} +1 -1
  262. package/dist/pine-core/{p-D094LgxJ.js → p-BFkDH5XU.js} +1 -1
  263. package/dist/pine-core/p-BFkDH5XU.js.map +1 -0
  264. package/dist/pine-core/p-BGVC08sX.system.js.map +1 -0
  265. package/dist/pine-core/p-BMx906Ad.system.js.map +1 -0
  266. package/dist/pine-core/{p-CjQwwLdV.system.js.map → p-Bd3ynCsJ.system.js.map} +1 -1
  267. package/dist/pine-core/{p-D4YdQDsG.system.js.map → p-BiLmvJTd.system.js.map} +1 -1
  268. package/dist/pine-core/{p-PZw10cnm.system.js.map → p-C8y7SAd7.system.js.map} +1 -1
  269. package/dist/pine-core/p-C9OQdhX3.system.js.map +1 -0
  270. package/dist/pine-core/{p-gcCcHox5.system.js.map → p-CCh7iS6N.system.js.map} +1 -1
  271. package/dist/pine-core/p-CEE11B7K.system.js.map +1 -0
  272. package/dist/pine-core/{p-D3Ug1A-l.system.js.map → p-CbRBe3Eq.system.js.map} +1 -1
  273. package/dist/pine-core/p-CsWO_n3t.system.js.map +1 -0
  274. package/dist/pine-core/{p-c2oMjk1r.system.js.map → p-Ctc231vq.system.js.map} +1 -1
  275. package/dist/pine-core/p-DXVwADJT.system.js +2 -0
  276. package/dist/pine-core/p-DXVwADJT.system.js.map +1 -0
  277. package/dist/pine-core/p-DYm9--lc.system.js.map +1 -0
  278. package/dist/pine-core/p-DenbFuEN.system.js.map +1 -0
  279. package/dist/pine-core/{p-BnJypAy2.system.js.map → p-DhLX7iDs.system.js.map} +1 -1
  280. package/dist/pine-core/p-Dkz0RoFB.system.js.map +1 -0
  281. package/dist/pine-core/p-JAVnELnm.system.js +1 -1
  282. package/dist/pine-core/{p-15e554ae.entry.js → p-a30edeb1.entry.js} +2 -2
  283. package/dist/pine-core/{p-5O8bhSdk.system.js.map → p-aKHwHZQR.system.js.map} +1 -1
  284. package/dist/pine-core/p-b232004f.system.entry.js +2 -0
  285. package/dist/pine-core/p-b232004f.system.entry.js.map +1 -0
  286. package/dist/pine-core/{p-fce519e3.system.entry.js → p-b416cb4b.system.entry.js} +2 -2
  287. package/dist/pine-core/p-b416cb4b.system.entry.js.map +1 -0
  288. package/dist/pine-core/{p-94c73d98.entry.js → p-b5316979.entry.js} +2 -2
  289. package/dist/pine-core/p-b5316979.entry.js.map +1 -0
  290. package/dist/pine-core/{p-d2b2caa2.system.entry.js → p-b6f57c0f.system.entry.js} +2 -2
  291. package/dist/pine-core/p-b7f2f9f3.system.entry.js +2 -0
  292. package/dist/pine-core/p-b7f2f9f3.system.entry.js.map +1 -0
  293. package/dist/pine-core/{p-19fef546.system.entry.js → p-c301925f.system.entry.js} +2 -2
  294. package/dist/pine-core/{p-19fef546.system.entry.js.map → p-c301925f.system.entry.js.map} +1 -1
  295. package/dist/pine-core/{p-f0df10c7.system.entry.js → p-ca20b134.system.entry.js} +2 -2
  296. package/dist/pine-core/p-ca20b134.system.entry.js.map +1 -0
  297. package/dist/pine-core/{p-6748d7b4.entry.js → p-d38da7a6.entry.js} +2 -2
  298. package/dist/pine-core/p-d38da7a6.entry.js.map +1 -0
  299. package/dist/pine-core/p-eac7cc81.entry.js +2 -0
  300. package/dist/pine-core/p-eac7cc81.entry.js.map +1 -0
  301. package/dist/pine-core/p-ed5ca877.system.entry.js +2 -0
  302. package/dist/pine-core/{p-29266dcd.system.entry.js.map → p-ed5ca877.system.entry.js.map} +1 -1
  303. package/dist/pine-core/{p-13105538.system.entry.js → p-f795d3fe.system.entry.js} +2 -2
  304. package/dist/pine-core/p-f7d9bZ8U.system.js.map +1 -0
  305. package/dist/pine-core/p-f81b0dbb.system.entry.js +2 -0
  306. package/dist/pine-core/p-f81b0dbb.system.entry.js.map +1 -0
  307. package/dist/pine-core/{p-2d21bc31.entry.js → p-f8a2aedd.entry.js} +2 -2
  308. package/dist/pine-core/{p-CQtQQn3_.system.js.map → p-hL5Id7g5.system.js.map} +1 -1
  309. package/dist/pine-core/{p-BK1BTkTt.system.js.map → p-hzdqYC6e.system.js.map} +1 -1
  310. package/dist/pine-core/p-n9xvc2MF.system.js.map +1 -0
  311. package/dist/pine-core/pds-button.entry.esm.js.map +1 -1
  312. package/dist/pine-core/pds-chip.entry.esm.js.map +1 -1
  313. package/dist/pine-core/pds-combobox.entry.esm.js.map +1 -1
  314. package/dist/pine-core/pds-copytext.entry.esm.js.map +1 -1
  315. package/dist/pine-core/pds-dropdown-menu-item.entry.esm.js.map +1 -1
  316. package/dist/pine-core/pds-dropdown-menu.entry.esm.js.map +1 -1
  317. package/dist/pine-core/pds-link.entry.esm.js.map +1 -1
  318. package/dist/pine-core/pds-multiselect.entry.esm.js.map +1 -1
  319. package/dist/pine-core/pds-table-cell.entry.esm.js.map +1 -1
  320. package/dist/pine-core/pds-table-head.entry.esm.js.map +1 -1
  321. package/dist/pine-core/pds-table-row.entry.esm.js.map +1 -1
  322. package/dist/pine-core/pds-table.entry.esm.js.map +1 -1
  323. package/dist/pine-core/pds-text.entry.esm.js.map +1 -1
  324. package/dist/pine-core/pine-core.esm.js +1 -1
  325. package/dist/types/components/pds-button/pds-button.d.ts +12 -1
  326. package/dist/types/components/pds-chip/pds-chip.d.ts +9 -2
  327. package/dist/types/components/pds-copytext/pds-copytext.d.ts +10 -0
  328. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.d.ts +7 -0
  329. package/dist/types/components/pds-link/pds-link.d.ts +6 -0
  330. package/dist/types/components/pds-multiselect/pds-multiselect.d.ts +27 -0
  331. package/dist/types/components/pds-table/pds-table-cell/pds-table-cell.d.ts +7 -1
  332. package/dist/types/components/pds-table/pds-table-row/pds-table-row.d.ts +1 -1
  333. package/dist/types/components/pds-table/pds-table.d.ts +6 -7
  334. package/dist/types/components/pds-text/pds-text.d.ts +9 -0
  335. package/dist/types/components.d.ts +86 -16
  336. package/dist/types/utils/truncation-tooltip.d.ts +21 -0
  337. package/dist/types/utils/types.d.ts +1 -0
  338. package/dist/vscode.html-data.json +68 -8
  339. package/hydrate/index.js +486 -52
  340. package/hydrate/index.mjs +486 -52
  341. package/package.json +2 -2
  342. package/dist/cjs/index-DkQebouX.js.map +0 -1
  343. package/dist/esm/index-D094LgxJ.js.map +0 -1
  344. package/dist/esm-es5/index-D094LgxJ.js.map +0 -1
  345. package/dist/pine-core/p-003884fd.entry.js +0 -2
  346. package/dist/pine-core/p-003884fd.entry.js.map +0 -1
  347. package/dist/pine-core/p-01aec1ad.system.entry.js.map +0 -1
  348. package/dist/pine-core/p-1971d358.entry.js +0 -2
  349. package/dist/pine-core/p-1971d358.entry.js.map +0 -1
  350. package/dist/pine-core/p-23aba538.entry.js +0 -2
  351. package/dist/pine-core/p-23aba538.entry.js.map +0 -1
  352. package/dist/pine-core/p-29266dcd.system.entry.js +0 -2
  353. package/dist/pine-core/p-36e5e9f4.system.entry.js.map +0 -1
  354. package/dist/pine-core/p-3b0a4abe.entry.js +0 -2
  355. package/dist/pine-core/p-3b0a4abe.entry.js.map +0 -1
  356. package/dist/pine-core/p-3c026ec7.system.entry.js +0 -2
  357. package/dist/pine-core/p-3c026ec7.system.entry.js.map +0 -1
  358. package/dist/pine-core/p-425144ae.entry.js.map +0 -1
  359. package/dist/pine-core/p-48ed8147.entry.js +0 -2
  360. package/dist/pine-core/p-48ed8147.entry.js.map +0 -1
  361. package/dist/pine-core/p-6748d7b4.entry.js.map +0 -1
  362. package/dist/pine-core/p-6877a50d.system.entry.js +0 -2
  363. package/dist/pine-core/p-6877a50d.system.entry.js.map +0 -1
  364. package/dist/pine-core/p-6918b378.system.entry.js +0 -2
  365. package/dist/pine-core/p-6918b378.system.entry.js.map +0 -1
  366. package/dist/pine-core/p-8KFA3I5T.system.js.map +0 -1
  367. package/dist/pine-core/p-8e40c9ef.entry.js.map +0 -1
  368. package/dist/pine-core/p-93d0be59.entry.js +0 -2
  369. package/dist/pine-core/p-93d0be59.entry.js.map +0 -1
  370. package/dist/pine-core/p-94c73d98.entry.js.map +0 -1
  371. package/dist/pine-core/p-BpZTjdau.system.js.map +0 -1
  372. package/dist/pine-core/p-BxVkyfaO.system.js.map +0 -1
  373. package/dist/pine-core/p-CjnIO2Ro.system.js.map +0 -1
  374. package/dist/pine-core/p-Ct5QAsPN.system.js.map +0 -1
  375. package/dist/pine-core/p-D094LgxJ.js.map +0 -1
  376. package/dist/pine-core/p-DR2CskUb.system.js.map +0 -1
  377. package/dist/pine-core/p-DZEhYV6y.system.js.map +0 -1
  378. package/dist/pine-core/p-DdTbt4lH.system.js.map +0 -1
  379. package/dist/pine-core/p-Ri89mw0-.system.js.map +0 -1
  380. package/dist/pine-core/p-ZUqfslIz.system.js.map +0 -1
  381. package/dist/pine-core/p-aeb2f6ac.system.entry.js +0 -2
  382. package/dist/pine-core/p-aeb2f6ac.system.entry.js.map +0 -1
  383. package/dist/pine-core/p-b3c66c58.entry.js +0 -2
  384. package/dist/pine-core/p-b3c66c58.entry.js.map +0 -1
  385. package/dist/pine-core/p-b46f66e8.system.entry.js.map +0 -1
  386. package/dist/pine-core/p-cb8c24ad.system.entry.js +0 -2
  387. package/dist/pine-core/p-cb8c24ad.system.entry.js.map +0 -1
  388. package/dist/pine-core/p-d83d6fce.system.entry.js +0 -2
  389. package/dist/pine-core/p-d83d6fce.system.entry.js.map +0 -1
  390. package/dist/pine-core/p-eT6pKhWF.system.js.map +0 -1
  391. package/dist/pine-core/p-f0df10c7.system.entry.js.map +0 -1
  392. package/dist/pine-core/p-f5fb71f6.entry.js +0 -2
  393. package/dist/pine-core/p-fce519e3.system.entry.js.map +0 -1
  394. package/dist/pine-core/p-kYQszSpu.system.js.map +0 -1
  395. /package/dist/pine-core/{p-2aac4495.system.entry.js.map → p-15ac22bd.system.entry.js.map} +0 -0
  396. /package/dist/pine-core/{p-0ac54273.entry.js.map → p-276f774a.entry.js.map} +0 -0
  397. /package/dist/pine-core/{p-ce069162.entry.js.map → p-32f65e48.entry.js.map} +0 -0
  398. /package/dist/pine-core/{p-7d7dce2c.system.entry.js.map → p-4232520f.system.entry.js.map} +0 -0
  399. /package/dist/pine-core/{p-5abc5d82.system.entry.js.map → p-49c2e2ce.system.entry.js.map} +0 -0
  400. /package/dist/pine-core/{p-b1a7a0b2.entry.js.map → p-4de64b1f.entry.js.map} +0 -0
  401. /package/dist/pine-core/{p-0b52923b.system.entry.js.map → p-52c5ced3.system.entry.js.map} +0 -0
  402. /package/dist/pine-core/{p-3815f565.entry.js.map → p-593cee44.entry.js.map} +0 -0
  403. /package/dist/pine-core/{p-73bce0bf.entry.js.map → p-5a7b25d0.entry.js.map} +0 -0
  404. /package/dist/pine-core/{p-957647f9.entry.js.map → p-663abd80.entry.js.map} +0 -0
  405. /package/dist/pine-core/{p-23111b1c.system.entry.js.map → p-6980edfe.system.entry.js.map} +0 -0
  406. /package/dist/pine-core/{p-c9965216.system.entry.js.map → p-6fbe6be4.system.entry.js.map} +0 -0
  407. /package/dist/pine-core/{p-bd18b9bf.system.entry.js.map → p-77d4f274.system.entry.js.map} +0 -0
  408. /package/dist/pine-core/{p-78246e05.entry.js.map → p-85ce731b.entry.js.map} +0 -0
  409. /package/dist/pine-core/{p-b1820970.system.entry.js.map → p-87cee4a0.system.entry.js.map} +0 -0
  410. /package/dist/pine-core/{p-fbd8ae50.entry.js.map → p-88686193.entry.js.map} +0 -0
  411. /package/dist/pine-core/{p-b09bde5c.system.entry.js.map → p-8ab66dbc.system.entry.js.map} +0 -0
  412. /package/dist/pine-core/{p-7a11a6c7.entry.js.map → p-8f935480.entry.js.map} +0 -0
  413. /package/dist/pine-core/{p-3f05d72e.system.entry.js.map → p-9e3e441c.system.entry.js.map} +0 -0
  414. /package/dist/pine-core/{p-3cd53462.entry.js.map → p-9e8296fc.entry.js.map} +0 -0
  415. /package/dist/pine-core/{p-15e554ae.entry.js.map → p-a30edeb1.entry.js.map} +0 -0
  416. /package/dist/pine-core/{p-d2b2caa2.system.entry.js.map → p-b6f57c0f.system.entry.js.map} +0 -0
  417. /package/dist/pine-core/{p-13105538.system.entry.js.map → p-f795d3fe.system.entry.js.map} +0 -0
  418. /package/dist/pine-core/{p-2d21bc31.entry.js.map → p-f8a2aedd.entry.js.map} +0 -0
@@ -0,0 +1,242 @@
1
+ import { computePosition, flip, offset, shift, } from "@floating-ui/dom";
2
+ /** CSS class prefix used for truncation tooltip portal elements */
3
+ const TOOLTIP_CLASS = 'pds-truncation-tooltip';
4
+ /**
5
+ * Injects the truncation tooltip styles into the document head.
6
+ * Uses the same design tokens as pds-tooltip for visual consistency.
7
+ * Only injects once — checks the DOM to avoid duplicates.
8
+ *
9
+ * Z-Index Strategy:
10
+ * Uses --pine-z-index-nuclear (9999) to ensure tooltips appear above all other UI elements.
11
+ * This is necessary because tooltips are portaled to document.body and must overlay:
12
+ * - Modal dialogs
13
+ * - Dropdown menus
14
+ * - Other floating UI elements
15
+ * If you encounter z-index conflicts, ensure your overlays use Pine's z-index tokens
16
+ * or adjust --pine-z-index-nuclear in your theme.
17
+ */
18
+ function injectStyles() {
19
+ if (document.querySelector('[data-pds-truncation-tooltip]'))
20
+ return;
21
+ const style = document.createElement('style');
22
+ style.setAttribute('data-pds-truncation-tooltip', '');
23
+ style.textContent = `
24
+ .${TOOLTIP_CLASS} {
25
+ position: fixed;
26
+ z-index: var(--pine-z-index-nuclear, 9999);
27
+ }
28
+ .${TOOLTIP_CLASS}__content {
29
+ background-color: var(--pine-color-primary, #1a1a2e);
30
+ border-radius: calc(var(--pine-dimension-xs, 4px) * 1.25);
31
+ box-shadow: var(--pine-box-shadow, 0 2px 8px rgba(0,0,0,0.15));
32
+ color: var(--pine-color-text-primary, #fff);
33
+ cursor: text;
34
+ font-family: var(--pine-font-family-body, sans-serif);
35
+ font-size: var(--pine-font-size-body-sm, 0.875rem);
36
+ letter-spacing: var(--pine-letter-spacing, normal);
37
+ line-height: var(--pine-line-height-body, 1.5);
38
+ max-width: 320px;
39
+ opacity: 0;
40
+ padding: var(--pine-dimension-xs, 4px) calc(var(--pine-dimension-md, 12px) / 2);
41
+ transition: opacity 0.15s ease-in-out, visibility 0.15s ease-in-out;
42
+ user-select: text;
43
+ visibility: hidden;
44
+ width: max-content;
45
+ word-break: break-word;
46
+ }
47
+ .${TOOLTIP_CLASS}--visible .${TOOLTIP_CLASS}__content {
48
+ opacity: 1;
49
+ visibility: visible;
50
+ }
51
+ `;
52
+ document.head.appendChild(style);
53
+ }
54
+ /**
55
+ * Checks if an element's content is overflowing horizontally (i.e. text is truncated).
56
+ */
57
+ function isOverflowing(el) {
58
+ return el.scrollWidth > el.clientWidth;
59
+ }
60
+ /**
61
+ * Sets up automatic tooltip behavior for a truncated element.
62
+ *
63
+ * When the element's text overflows, hovering or focusing the host element
64
+ * will display a tooltip showing the full text content. The tooltip is
65
+ * rendered as a portal on document.body and positioned with Floating UI.
66
+ *
67
+ * @returns A cleanup function that removes all listeners, observers, and DOM elements.
68
+ */
69
+ export function setupTruncationTooltip(options) {
70
+ const { hostEl, contentEl, getTooltipText, placement = 'top' } = options;
71
+ injectStyles();
72
+ let portalEl = null;
73
+ let isHovering = false;
74
+ let isHoveringPortal = false;
75
+ let isFocused = false;
76
+ let hideTimeout = null;
77
+ let resizeObserver = null;
78
+ let resizeDebounce = null;
79
+ // Use ResizeObserver to re-evaluate overflow when the element resizes
80
+ // Debounced to prevent performance issues during rapid window resizing
81
+ if (typeof ResizeObserver !== 'undefined') {
82
+ resizeObserver = new ResizeObserver(() => {
83
+ if (resizeDebounce) {
84
+ clearTimeout(resizeDebounce);
85
+ }
86
+ resizeDebounce = setTimeout(() => {
87
+ resizeDebounce = null;
88
+ // If tooltip is showing but text no longer overflows, hide it
89
+ if (portalEl && portalEl.isConnected && !isOverflowing(contentEl)) {
90
+ hideTooltip();
91
+ }
92
+ }, 100);
93
+ });
94
+ resizeObserver.observe(contentEl);
95
+ }
96
+ function createPortal() {
97
+ if (portalEl)
98
+ return;
99
+ const text = getTooltipText();
100
+ if (!text || text.trim() === '')
101
+ return;
102
+ portalEl = document.createElement('div');
103
+ portalEl.className = TOOLTIP_CLASS;
104
+ portalEl.setAttribute('role', 'tooltip');
105
+ portalEl.setAttribute('aria-hidden', 'false');
106
+ const contentDiv = document.createElement('div');
107
+ contentDiv.className = `${TOOLTIP_CLASS}__content`;
108
+ contentDiv.textContent = text.trim();
109
+ portalEl.appendChild(contentDiv);
110
+ document.body.appendChild(portalEl);
111
+ // Allow the user to hover into the tooltip to select/copy text
112
+ portalEl.addEventListener('mouseenter', handlePortalMouseEnter);
113
+ portalEl.addEventListener('mouseleave', handlePortalMouseLeave);
114
+ positionTooltip().then(() => {
115
+ if (portalEl) {
116
+ portalEl.classList.add(`${TOOLTIP_CLASS}--visible`);
117
+ }
118
+ });
119
+ }
120
+ async function positionTooltip() {
121
+ if (!portalEl)
122
+ return;
123
+ try {
124
+ const { x, y } = await computePosition(hostEl, portalEl, {
125
+ placement,
126
+ strategy: 'fixed',
127
+ middleware: [offset(4), flip(), shift({ padding: 5 })],
128
+ });
129
+ Object.assign(portalEl.style, {
130
+ left: `${x}px`,
131
+ top: `${y}px`,
132
+ });
133
+ }
134
+ catch (_a) {
135
+ // Fallback: position above the element with bounds checking
136
+ if (portalEl) {
137
+ const rect = hostEl.getBoundingClientRect();
138
+ const portalRect = portalEl.getBoundingClientRect();
139
+ const padding = 5;
140
+ // Ensure tooltip stays within viewport bounds
141
+ const left = Math.max(padding, Math.min(rect.left, window.innerWidth - portalRect.width - padding));
142
+ const top = Math.max(padding, rect.top - portalRect.height - 8);
143
+ portalEl.style.left = `${left}px`;
144
+ portalEl.style.top = `${top}px`;
145
+ }
146
+ }
147
+ }
148
+ function removePortal() {
149
+ if (portalEl) {
150
+ portalEl.removeEventListener('mouseenter', handlePortalMouseEnter);
151
+ portalEl.removeEventListener('mouseleave', handlePortalMouseLeave);
152
+ portalEl.classList.remove(`${TOOLTIP_CLASS}--visible`);
153
+ // Check if portal is still in the DOM before removing
154
+ if (portalEl.parentNode && portalEl.isConnected) {
155
+ try {
156
+ portalEl.parentNode.removeChild(portalEl);
157
+ }
158
+ catch (e) {
159
+ // Portal was already removed, ignore error
160
+ }
161
+ }
162
+ portalEl = null;
163
+ }
164
+ }
165
+ function cancelHideTimeout() {
166
+ if (hideTimeout !== null) {
167
+ clearTimeout(hideTimeout);
168
+ hideTimeout = null;
169
+ }
170
+ }
171
+ function showTooltip() {
172
+ cancelHideTimeout();
173
+ if (!isOverflowing(contentEl))
174
+ return;
175
+ createPortal();
176
+ }
177
+ function hideTooltip() {
178
+ if (isHovering || isHoveringPortal || isFocused)
179
+ return;
180
+ removePortal();
181
+ }
182
+ /**
183
+ * Schedules tooltip removal after a short delay.
184
+ *
185
+ * The 100ms delay serves two purposes:
186
+ * 1. Gives users time to move their cursor from the truncated text to the tooltip portal
187
+ * without it closing, enabling text selection/copying from the tooltip
188
+ * 2. Prevents flickering when the user briefly moves the cursor during normal interaction
189
+ */
190
+ function scheduleHide() {
191
+ cancelHideTimeout();
192
+ hideTimeout = setTimeout(() => {
193
+ hideTimeout = null;
194
+ hideTooltip();
195
+ }, 100);
196
+ }
197
+ function handleMouseEnter() {
198
+ isHovering = true;
199
+ showTooltip();
200
+ }
201
+ function handleMouseLeave() {
202
+ isHovering = false;
203
+ scheduleHide();
204
+ }
205
+ function handlePortalMouseEnter() {
206
+ isHoveringPortal = true;
207
+ cancelHideTimeout();
208
+ }
209
+ function handlePortalMouseLeave() {
210
+ isHoveringPortal = false;
211
+ scheduleHide();
212
+ }
213
+ function handleFocusIn() {
214
+ isFocused = true;
215
+ showTooltip();
216
+ }
217
+ function handleFocusOut() {
218
+ isFocused = false;
219
+ scheduleHide();
220
+ }
221
+ hostEl.addEventListener('mouseenter', handleMouseEnter);
222
+ hostEl.addEventListener('mouseleave', handleMouseLeave);
223
+ hostEl.addEventListener('focusin', handleFocusIn);
224
+ hostEl.addEventListener('focusout', handleFocusOut);
225
+ // Return cleanup function
226
+ return () => {
227
+ cancelHideTimeout();
228
+ if (resizeDebounce) {
229
+ clearTimeout(resizeDebounce);
230
+ resizeDebounce = null;
231
+ }
232
+ if (resizeObserver) {
233
+ resizeObserver.disconnect();
234
+ }
235
+ hostEl.removeEventListener('mouseenter', handleMouseEnter);
236
+ hostEl.removeEventListener('mouseleave', handleMouseLeave);
237
+ hostEl.removeEventListener('focusin', handleFocusIn);
238
+ hostEl.removeEventListener('focusout', handleFocusOut);
239
+ removePortal();
240
+ };
241
+ }
242
+ //# sourceMappingURL=truncation-tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"truncation-tooltip.js","sourceRoot":"","sources":["../../../src/utils/truncation-tooltip.ts"],"names":[],"mappings":"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","sourcesContent":["import { PlacementType } from './types';\nimport {\n computePosition,\n flip,\n offset,\n shift,\n} from '@floating-ui/dom';\n\nexport interface TruncationTooltipOptions {\n /** The host element (for hover/focus listeners and positioning anchor) */\n hostEl: HTMLElement;\n /** The inner element where overflow actually occurs (inside shadow root) */\n contentEl: HTMLElement;\n /** Function that returns the full text to display in the tooltip */\n getTooltipText: () => string;\n /** Tooltip placement preference (default: 'top') */\n placement?: PlacementType;\n}\n\n/** CSS class prefix used for truncation tooltip portal elements */\nconst TOOLTIP_CLASS = 'pds-truncation-tooltip';\n\n/**\n * Injects the truncation tooltip styles into the document head.\n * Uses the same design tokens as pds-tooltip for visual consistency.\n * Only injects once — checks the DOM to avoid duplicates.\n *\n * Z-Index Strategy:\n * Uses --pine-z-index-nuclear (9999) to ensure tooltips appear above all other UI elements.\n * This is necessary because tooltips are portaled to document.body and must overlay:\n * - Modal dialogs\n * - Dropdown menus\n * - Other floating UI elements\n * If you encounter z-index conflicts, ensure your overlays use Pine's z-index tokens\n * or adjust --pine-z-index-nuclear in your theme.\n */\nfunction injectStyles(): void {\n if (document.querySelector('[data-pds-truncation-tooltip]')) return;\n\n const style = document.createElement('style');\n style.setAttribute('data-pds-truncation-tooltip', '');\n style.textContent = `\n .${TOOLTIP_CLASS} {\n position: fixed;\n z-index: var(--pine-z-index-nuclear, 9999);\n }\n .${TOOLTIP_CLASS}__content {\n background-color: var(--pine-color-primary, #1a1a2e);\n border-radius: calc(var(--pine-dimension-xs, 4px) * 1.25);\n box-shadow: var(--pine-box-shadow, 0 2px 8px rgba(0,0,0,0.15));\n color: var(--pine-color-text-primary, #fff);\n cursor: text;\n font-family: var(--pine-font-family-body, sans-serif);\n font-size: var(--pine-font-size-body-sm, 0.875rem);\n letter-spacing: var(--pine-letter-spacing, normal);\n line-height: var(--pine-line-height-body, 1.5);\n max-width: 320px;\n opacity: 0;\n padding: var(--pine-dimension-xs, 4px) calc(var(--pine-dimension-md, 12px) / 2);\n transition: opacity 0.15s ease-in-out, visibility 0.15s ease-in-out;\n user-select: text;\n visibility: hidden;\n width: max-content;\n word-break: break-word;\n }\n .${TOOLTIP_CLASS}--visible .${TOOLTIP_CLASS}__content {\n opacity: 1;\n visibility: visible;\n }\n `;\n document.head.appendChild(style);\n}\n\n/**\n * Checks if an element's content is overflowing horizontally (i.e. text is truncated).\n */\nfunction isOverflowing(el: HTMLElement): boolean {\n return el.scrollWidth > el.clientWidth;\n}\n\n/**\n * Sets up automatic tooltip behavior for a truncated element.\n *\n * When the element's text overflows, hovering or focusing the host element\n * will display a tooltip showing the full text content. The tooltip is\n * rendered as a portal on document.body and positioned with Floating UI.\n *\n * @returns A cleanup function that removes all listeners, observers, and DOM elements.\n */\nexport function setupTruncationTooltip(options: TruncationTooltipOptions): () => void {\n const { hostEl, contentEl, getTooltipText, placement = 'top' } = options;\n\n injectStyles();\n\n let portalEl: HTMLElement | null = null;\n let isHovering = false;\n let isHoveringPortal = false;\n let isFocused = false;\n let hideTimeout: ReturnType<typeof setTimeout> | null = null;\n let resizeObserver: ResizeObserver | null = null;\n let resizeDebounce: ReturnType<typeof setTimeout> | null = null;\n\n // Use ResizeObserver to re-evaluate overflow when the element resizes\n // Debounced to prevent performance issues during rapid window resizing\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(() => {\n if (resizeDebounce) {\n clearTimeout(resizeDebounce);\n }\n resizeDebounce = setTimeout(() => {\n resizeDebounce = null;\n // If tooltip is showing but text no longer overflows, hide it\n if (portalEl && portalEl.isConnected && !isOverflowing(contentEl)) {\n hideTooltip();\n }\n }, 100);\n });\n resizeObserver.observe(contentEl);\n }\n\n function createPortal(): void {\n if (portalEl) return;\n\n const text = getTooltipText();\n if (!text || text.trim() === '') return;\n\n portalEl = document.createElement('div');\n portalEl.className = TOOLTIP_CLASS;\n portalEl.setAttribute('role', 'tooltip');\n portalEl.setAttribute('aria-hidden', 'false');\n\n const contentDiv = document.createElement('div');\n contentDiv.className = `${TOOLTIP_CLASS}__content`;\n contentDiv.textContent = text.trim();\n\n portalEl.appendChild(contentDiv);\n document.body.appendChild(portalEl);\n\n // Allow the user to hover into the tooltip to select/copy text\n portalEl.addEventListener('mouseenter', handlePortalMouseEnter);\n portalEl.addEventListener('mouseleave', handlePortalMouseLeave);\n\n positionTooltip().then(() => {\n if (portalEl) {\n portalEl.classList.add(`${TOOLTIP_CLASS}--visible`);\n }\n });\n }\n\n async function positionTooltip(): Promise<void> {\n if (!portalEl) return;\n\n try {\n const { x, y } = await computePosition(hostEl, portalEl, {\n placement,\n strategy: 'fixed',\n middleware: [offset(4), flip(), shift({ padding: 5 })],\n });\n\n Object.assign(portalEl.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n } catch {\n // Fallback: position above the element with bounds checking\n if (portalEl) {\n const rect = hostEl.getBoundingClientRect();\n const portalRect = portalEl.getBoundingClientRect();\n const padding = 5;\n\n // Ensure tooltip stays within viewport bounds\n const left = Math.max(padding, Math.min(rect.left, window.innerWidth - portalRect.width - padding));\n const top = Math.max(padding, rect.top - portalRect.height - 8);\n\n portalEl.style.left = `${left}px`;\n portalEl.style.top = `${top}px`;\n }\n }\n }\n\n function removePortal(): void {\n if (portalEl) {\n portalEl.removeEventListener('mouseenter', handlePortalMouseEnter);\n portalEl.removeEventListener('mouseleave', handlePortalMouseLeave);\n portalEl.classList.remove(`${TOOLTIP_CLASS}--visible`);\n // Check if portal is still in the DOM before removing\n if (portalEl.parentNode && portalEl.isConnected) {\n try {\n portalEl.parentNode.removeChild(portalEl);\n } catch (e) {\n // Portal was already removed, ignore error\n }\n }\n portalEl = null;\n }\n }\n\n function cancelHideTimeout(): void {\n if (hideTimeout !== null) {\n clearTimeout(hideTimeout);\n hideTimeout = null;\n }\n }\n\n function showTooltip(): void {\n cancelHideTimeout();\n if (!isOverflowing(contentEl)) return;\n createPortal();\n }\n\n function hideTooltip(): void {\n if (isHovering || isHoveringPortal || isFocused) return;\n removePortal();\n }\n\n /**\n * Schedules tooltip removal after a short delay.\n *\n * The 100ms delay serves two purposes:\n * 1. Gives users time to move their cursor from the truncated text to the tooltip portal\n * without it closing, enabling text selection/copying from the tooltip\n * 2. Prevents flickering when the user briefly moves the cursor during normal interaction\n */\n function scheduleHide(): void {\n cancelHideTimeout();\n hideTimeout = setTimeout(() => {\n hideTimeout = null;\n hideTooltip();\n }, 100);\n }\n\n function handleMouseEnter(): void {\n isHovering = true;\n showTooltip();\n }\n\n function handleMouseLeave(): void {\n isHovering = false;\n scheduleHide();\n }\n\n function handlePortalMouseEnter(): void {\n isHoveringPortal = true;\n cancelHideTimeout();\n }\n\n function handlePortalMouseLeave(): void {\n isHoveringPortal = false;\n scheduleHide();\n }\n\n function handleFocusIn(): void {\n isFocused = true;\n showTooltip();\n }\n\n function handleFocusOut(): void {\n isFocused = false;\n scheduleHide();\n }\n\n hostEl.addEventListener('mouseenter', handleMouseEnter);\n hostEl.addEventListener('mouseleave', handleMouseLeave);\n hostEl.addEventListener('focusin', handleFocusIn);\n hostEl.addEventListener('focusout', handleFocusOut);\n\n // Return cleanup function\n return () => {\n cancelHideTimeout();\n if (resizeDebounce) {\n clearTimeout(resizeDebounce);\n resizeDebounce = null;\n }\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n hostEl.removeEventListener('mouseenter', handleMouseEnter);\n hostEl.removeEventListener('mouseleave', handleMouseLeave);\n hostEl.removeEventListener('focusin', handleFocusIn);\n hostEl.removeEventListener('focusout', handleFocusOut);\n removePortal();\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"","sourcesContent":["export type PlacementType =\n | 'top-start'\n | 'top'\n | 'top-end'\n | 'left-start'\n | 'left'\n | 'left-end'\n | 'right-start'\n | 'right'\n | 'right-end'\n | 'bottom-start'\n | 'bottom'\n | 'bottom-end';\n\nexport type BoxColumnType =\n '0'\n | '1'\n | '2'\n | '3'\n | '4'\n | '5'\n | '6'\n | '7'\n | '8'\n | '9'\n | '10'\n | '11'\n | '12';\n\nexport type BoxSpacingType =\n 'none'\n | 'xxs'\n | 'xs'\n | 'sm'\n | 'md'\n | 'lg'\n | 'xl'\n | 'xxl'\n | '025'\n | '050'\n | '100'\n | '125'\n | '150'\n | '200'\n | '250'\n | '300'\n | '350'\n | '400'\n | '450'\n | '500'\n | '550'\n | '600'\n | '650'\n | '700'\n | '750'\n | '800';\n\nexport type BoxShadowSizeType =\n 'none'\n | '050'\n | '100'\n | '150'\n | '200'\n | '300'\n | '400'\n | '500'\n\nexport type ChipSentimentType =\n 'accent'\n | 'brand'\n | 'danger'\n | 'info'\n | 'neutral'\n | 'success'\n | 'warning';\n\nexport type ChipVariantType =\n 'text'\n | 'tag'\n | 'dropdown';"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"","sourcesContent":["export type PlacementType =\n | 'top-start'\n | 'top'\n | 'top-end'\n | 'left-start'\n | 'left'\n | 'left-end'\n | 'right-start'\n | 'right'\n | 'right-end'\n | 'bottom-start'\n | 'bottom'\n | 'bottom-end';\n\nexport type BoxColumnType =\n '0'\n | '1'\n | '2'\n | '3'\n | '4'\n | '5'\n | '6'\n | '7'\n | '8'\n | '9'\n | '10'\n | '11'\n | '12';\n\nexport type BoxSpacingType =\n 'none'\n | 'xxs'\n | 'xs'\n | 'sm'\n | 'md'\n | 'lg'\n | 'xl'\n | 'xxl'\n | '025'\n | '050'\n | '100'\n | '125'\n | '150'\n | '200'\n | '250'\n | '300'\n | '350'\n | '400'\n | '450'\n | '500'\n | '550'\n | '600'\n | '650'\n | '700'\n | '750'\n | '800';\n\nexport type BoxShadowSizeType =\n 'none'\n | '050'\n | '100'\n | '150'\n | '200'\n | '300'\n | '400'\n | '500'\n\nexport type ChipSentimentType =\n 'accent'\n | 'brand'\n | 'danger'\n | 'info'\n | 'neutral'\n | 'success'\n | 'warning';\n\nexport type ChipSizeType =\n 'sm'\n | 'md'\n | 'lg';\n\nexport type ChipVariantType =\n 'text'\n | 'tag'\n | 'dropdown';"]}