@tartaguti/ui-components 0.0.0-stage → 0.1.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 (392) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +21 -0
  3. package/README.md +192 -2
  4. package/THIRD-PARTY-NOTICES.md +29 -0
  5. package/custom-elements.json +16731 -0
  6. package/dist/accordion/tt-accordion-item.d.ts +32 -0
  7. package/dist/accordion/tt-accordion-item.d.ts.map +1 -0
  8. package/dist/accordion/tt-accordion-item.js +247 -0
  9. package/dist/accordion/tt-accordion-item.js.map +1 -0
  10. package/dist/accordion/tt-accordion.d.ts +28 -0
  11. package/dist/accordion/tt-accordion.d.ts.map +1 -0
  12. package/dist/accordion/tt-accordion.js +148 -0
  13. package/dist/accordion/tt-accordion.js.map +1 -0
  14. package/dist/bento/tt-bento-item.d.ts +35 -0
  15. package/dist/bento/tt-bento-item.d.ts.map +1 -0
  16. package/dist/bento/tt-bento-item.js +201 -0
  17. package/dist/bento/tt-bento-item.js.map +1 -0
  18. package/dist/bento/tt-bento.d.ts +25 -0
  19. package/dist/bento/tt-bento.d.ts.map +1 -0
  20. package/dist/bento/tt-bento.js +314 -0
  21. package/dist/bento/tt-bento.js.map +1 -0
  22. package/dist/floating.d.ts +61 -0
  23. package/dist/floating.d.ts.map +1 -0
  24. package/dist/floating.js +120 -0
  25. package/dist/floating.js.map +1 -0
  26. package/dist/index.d.ts +92 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +96 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/interaction/tt-draggable.d.ts +29 -0
  31. package/dist/interaction/tt-draggable.d.ts.map +1 -0
  32. package/dist/interaction/tt-draggable.js +66 -0
  33. package/dist/interaction/tt-draggable.js.map +1 -0
  34. package/dist/interaction/tt-droppable.d.ts +37 -0
  35. package/dist/interaction/tt-droppable.d.ts.map +1 -0
  36. package/dist/interaction/tt-droppable.js +108 -0
  37. package/dist/interaction/tt-droppable.js.map +1 -0
  38. package/dist/interaction/tt-resizable.d.ts +45 -0
  39. package/dist/interaction/tt-resizable.d.ts.map +1 -0
  40. package/dist/interaction/tt-resizable.js +210 -0
  41. package/dist/interaction/tt-resizable.js.map +1 -0
  42. package/dist/interaction/tt-reveal.d.ts +54 -0
  43. package/dist/interaction/tt-reveal.d.ts.map +1 -0
  44. package/dist/interaction/tt-reveal.js +302 -0
  45. package/dist/interaction/tt-reveal.js.map +1 -0
  46. package/dist/motion.d.ts +8 -0
  47. package/dist/motion.d.ts.map +1 -0
  48. package/dist/motion.js +49 -0
  49. package/dist/motion.js.map +1 -0
  50. package/dist/overlay.d.ts +7 -0
  51. package/dist/overlay.d.ts.map +1 -0
  52. package/dist/overlay.js +121 -0
  53. package/dist/overlay.js.map +1 -0
  54. package/dist/safe-url.d.ts +14 -0
  55. package/dist/safe-url.d.ts.map +1 -0
  56. package/dist/safe-url.js +46 -0
  57. package/dist/safe-url.js.map +1 -0
  58. package/dist/scroll-lock.d.ts +22 -0
  59. package/dist/scroll-lock.d.ts.map +1 -0
  60. package/dist/scroll-lock.js +56 -0
  61. package/dist/scroll-lock.js.map +1 -0
  62. package/dist/sidebar/tt-menu-group.d.ts +69 -0
  63. package/dist/sidebar/tt-menu-group.d.ts.map +1 -0
  64. package/dist/sidebar/tt-menu-group.js +358 -0
  65. package/dist/sidebar/tt-menu-group.js.map +1 -0
  66. package/dist/sidebar/tt-menu-item.d.ts +70 -0
  67. package/dist/sidebar/tt-menu-item.d.ts.map +1 -0
  68. package/dist/sidebar/tt-menu-item.js +502 -0
  69. package/dist/sidebar/tt-menu-item.js.map +1 -0
  70. package/dist/sidebar/tt-sidebar-footer.d.ts +39 -0
  71. package/dist/sidebar/tt-sidebar-footer.d.ts.map +1 -0
  72. package/dist/sidebar/tt-sidebar-footer.js +205 -0
  73. package/dist/sidebar/tt-sidebar-footer.js.map +1 -0
  74. package/dist/sidebar/tt-sidebar-header.d.ts +31 -0
  75. package/dist/sidebar/tt-sidebar-header.d.ts.map +1 -0
  76. package/dist/sidebar/tt-sidebar-header.js +150 -0
  77. package/dist/sidebar/tt-sidebar-header.js.map +1 -0
  78. package/dist/sidebar/tt-sidebar.d.ts +72 -0
  79. package/dist/sidebar/tt-sidebar.d.ts.map +1 -0
  80. package/dist/sidebar/tt-sidebar.js +539 -0
  81. package/dist/sidebar/tt-sidebar.js.map +1 -0
  82. package/dist/sr-only.d.ts +15 -0
  83. package/dist/sr-only.d.ts.map +1 -0
  84. package/dist/sr-only.js +27 -0
  85. package/dist/sr-only.js.map +1 -0
  86. package/dist/tokens.css +1124 -0
  87. package/dist/tt-alert.d.ts +26 -0
  88. package/dist/tt-alert.d.ts.map +1 -0
  89. package/dist/tt-alert.js +165 -0
  90. package/dist/tt-alert.js.map +1 -0
  91. package/dist/tt-aspect-ratio.d.ts +40 -0
  92. package/dist/tt-aspect-ratio.d.ts.map +1 -0
  93. package/dist/tt-aspect-ratio.js +98 -0
  94. package/dist/tt-aspect-ratio.js.map +1 -0
  95. package/dist/tt-auth.d.ts +75 -0
  96. package/dist/tt-auth.d.ts.map +1 -0
  97. package/dist/tt-auth.js +520 -0
  98. package/dist/tt-auth.js.map +1 -0
  99. package/dist/tt-avatar.d.ts +26 -0
  100. package/dist/tt-avatar.d.ts.map +1 -0
  101. package/dist/tt-avatar.js +169 -0
  102. package/dist/tt-avatar.js.map +1 -0
  103. package/dist/tt-badge.d.ts +36 -0
  104. package/dist/tt-badge.d.ts.map +1 -0
  105. package/dist/tt-badge.js +135 -0
  106. package/dist/tt-badge.js.map +1 -0
  107. package/dist/tt-breadcrumbs.d.ts +22 -0
  108. package/dist/tt-breadcrumbs.d.ts.map +1 -0
  109. package/dist/tt-breadcrumbs.js +144 -0
  110. package/dist/tt-breadcrumbs.js.map +1 -0
  111. package/dist/tt-button-group.d.ts +32 -0
  112. package/dist/tt-button-group.d.ts.map +1 -0
  113. package/dist/tt-button-group.js +132 -0
  114. package/dist/tt-button-group.js.map +1 -0
  115. package/dist/tt-button.d.ts +31 -0
  116. package/dist/tt-button.d.ts.map +1 -0
  117. package/dist/tt-button.js +483 -0
  118. package/dist/tt-button.js.map +1 -0
  119. package/dist/tt-card.d.ts +26 -0
  120. package/dist/tt-card.d.ts.map +1 -0
  121. package/dist/tt-card.js +429 -0
  122. package/dist/tt-card.js.map +1 -0
  123. package/dist/tt-chart.d.ts +36 -0
  124. package/dist/tt-chart.d.ts.map +1 -0
  125. package/dist/tt-chart.js +332 -0
  126. package/dist/tt-chart.js.map +1 -0
  127. package/dist/tt-checkbox-group.d.ts +38 -0
  128. package/dist/tt-checkbox-group.d.ts.map +1 -0
  129. package/dist/tt-checkbox-group.js +243 -0
  130. package/dist/tt-checkbox-group.js.map +1 -0
  131. package/dist/tt-checkbox.d.ts +35 -0
  132. package/dist/tt-checkbox.d.ts.map +1 -0
  133. package/dist/tt-checkbox.js +354 -0
  134. package/dist/tt-checkbox.js.map +1 -0
  135. package/dist/tt-code-block.d.ts +37 -0
  136. package/dist/tt-code-block.d.ts.map +1 -0
  137. package/dist/tt-code-block.js +409 -0
  138. package/dist/tt-code-block.js.map +1 -0
  139. package/dist/tt-collapsible.d.ts +71 -0
  140. package/dist/tt-collapsible.d.ts.map +1 -0
  141. package/dist/tt-collapsible.js +206 -0
  142. package/dist/tt-collapsible.js.map +1 -0
  143. package/dist/tt-combobox.d.ts +107 -0
  144. package/dist/tt-combobox.d.ts.map +1 -0
  145. package/dist/tt-combobox.js +816 -0
  146. package/dist/tt-combobox.js.map +1 -0
  147. package/dist/tt-company-card.d.ts +30 -0
  148. package/dist/tt-company-card.d.ts.map +1 -0
  149. package/dist/tt-company-card.js +382 -0
  150. package/dist/tt-company-card.js.map +1 -0
  151. package/dist/tt-comparison-table.d.ts +59 -0
  152. package/dist/tt-comparison-table.d.ts.map +1 -0
  153. package/dist/tt-comparison-table.js +441 -0
  154. package/dist/tt-comparison-table.js.map +1 -0
  155. package/dist/tt-component-doc.d.ts +63 -0
  156. package/dist/tt-component-doc.d.ts.map +1 -0
  157. package/dist/tt-component-doc.js +585 -0
  158. package/dist/tt-component-doc.js.map +1 -0
  159. package/dist/tt-confirm.d.ts +45 -0
  160. package/dist/tt-confirm.d.ts.map +1 -0
  161. package/dist/tt-confirm.js +151 -0
  162. package/dist/tt-confirm.js.map +1 -0
  163. package/dist/tt-contact-list.d.ts +18 -0
  164. package/dist/tt-contact-list.d.ts.map +1 -0
  165. package/dist/tt-contact-list.js +101 -0
  166. package/dist/tt-contact-list.js.map +1 -0
  167. package/dist/tt-copy-button.d.ts +25 -0
  168. package/dist/tt-copy-button.d.ts.map +1 -0
  169. package/dist/tt-copy-button.js +194 -0
  170. package/dist/tt-copy-button.js.map +1 -0
  171. package/dist/tt-data-table.d.ts +69 -0
  172. package/dist/tt-data-table.d.ts.map +1 -0
  173. package/dist/tt-data-table.js +542 -0
  174. package/dist/tt-data-table.js.map +1 -0
  175. package/dist/tt-divider.d.ts +19 -0
  176. package/dist/tt-divider.d.ts.map +1 -0
  177. package/dist/tt-divider.js +104 -0
  178. package/dist/tt-divider.js.map +1 -0
  179. package/dist/tt-drawer.d.ts +38 -0
  180. package/dist/tt-drawer.d.ts.map +1 -0
  181. package/dist/tt-drawer.js +433 -0
  182. package/dist/tt-drawer.js.map +1 -0
  183. package/dist/tt-dropdown-menu.d.ts +57 -0
  184. package/dist/tt-dropdown-menu.d.ts.map +1 -0
  185. package/dist/tt-dropdown-menu.js +631 -0
  186. package/dist/tt-dropdown-menu.js.map +1 -0
  187. package/dist/tt-empty-state.d.ts +13 -0
  188. package/dist/tt-empty-state.d.ts.map +1 -0
  189. package/dist/tt-empty-state.js +94 -0
  190. package/dist/tt-empty-state.js.map +1 -0
  191. package/dist/tt-example.d.ts +33 -0
  192. package/dist/tt-example.d.ts.map +1 -0
  193. package/dist/tt-example.js +250 -0
  194. package/dist/tt-example.js.map +1 -0
  195. package/dist/tt-file-upload.d.ts +85 -0
  196. package/dist/tt-file-upload.d.ts.map +1 -0
  197. package/dist/tt-file-upload.js +662 -0
  198. package/dist/tt-file-upload.js.map +1 -0
  199. package/dist/tt-filter.d.ts +62 -0
  200. package/dist/tt-filter.d.ts.map +1 -0
  201. package/dist/tt-filter.js +393 -0
  202. package/dist/tt-filter.js.map +1 -0
  203. package/dist/tt-form.d.ts +33 -0
  204. package/dist/tt-form.d.ts.map +1 -0
  205. package/dist/tt-form.js +202 -0
  206. package/dist/tt-form.js.map +1 -0
  207. package/dist/tt-grid.d.ts +22 -0
  208. package/dist/tt-grid.d.ts.map +1 -0
  209. package/dist/tt-grid.js +106 -0
  210. package/dist/tt-grid.js.map +1 -0
  211. package/dist/tt-icon.d.ts +20 -0
  212. package/dist/tt-icon.d.ts.map +1 -0
  213. package/dist/tt-icon.js +510 -0
  214. package/dist/tt-icon.js.map +1 -0
  215. package/dist/tt-image.d.ts +59 -0
  216. package/dist/tt-image.d.ts.map +1 -0
  217. package/dist/tt-image.js +314 -0
  218. package/dist/tt-image.js.map +1 -0
  219. package/dist/tt-inbox.d.ts +45 -0
  220. package/dist/tt-inbox.d.ts.map +1 -0
  221. package/dist/tt-inbox.js +275 -0
  222. package/dist/tt-inbox.js.map +1 -0
  223. package/dist/tt-input.d.ts +43 -0
  224. package/dist/tt-input.d.ts.map +1 -0
  225. package/dist/tt-input.js +476 -0
  226. package/dist/tt-input.js.map +1 -0
  227. package/dist/tt-kbd.d.ts +39 -0
  228. package/dist/tt-kbd.d.ts.map +1 -0
  229. package/dist/tt-kbd.js +145 -0
  230. package/dist/tt-kbd.js.map +1 -0
  231. package/dist/tt-key-values.d.ts +17 -0
  232. package/dist/tt-key-values.d.ts.map +1 -0
  233. package/dist/tt-key-values.js +126 -0
  234. package/dist/tt-key-values.js.map +1 -0
  235. package/dist/tt-knowledge-doc.d.ts +24 -0
  236. package/dist/tt-knowledge-doc.d.ts.map +1 -0
  237. package/dist/tt-knowledge-doc.js +120 -0
  238. package/dist/tt-knowledge-doc.js.map +1 -0
  239. package/dist/tt-layout.d.ts +36 -0
  240. package/dist/tt-layout.d.ts.map +1 -0
  241. package/dist/tt-layout.js +318 -0
  242. package/dist/tt-layout.js.map +1 -0
  243. package/dist/tt-modal.d.ts +32 -0
  244. package/dist/tt-modal.d.ts.map +1 -0
  245. package/dist/tt-modal.js +553 -0
  246. package/dist/tt-modal.js.map +1 -0
  247. package/dist/tt-navbar.d.ts +33 -0
  248. package/dist/tt-navbar.d.ts.map +1 -0
  249. package/dist/tt-navbar.js +390 -0
  250. package/dist/tt-navbar.js.map +1 -0
  251. package/dist/tt-page-header.d.ts +28 -0
  252. package/dist/tt-page-header.d.ts.map +1 -0
  253. package/dist/tt-page-header.js +166 -0
  254. package/dist/tt-page-header.js.map +1 -0
  255. package/dist/tt-page.d.ts +14 -0
  256. package/dist/tt-page.d.ts.map +1 -0
  257. package/dist/tt-page.js +163 -0
  258. package/dist/tt-page.js.map +1 -0
  259. package/dist/tt-pagination.d.ts +27 -0
  260. package/dist/tt-pagination.d.ts.map +1 -0
  261. package/dist/tt-pagination.js +194 -0
  262. package/dist/tt-pagination.js.map +1 -0
  263. package/dist/tt-preview.d.ts +11 -0
  264. package/dist/tt-preview.d.ts.map +1 -0
  265. package/dist/tt-preview.js +68 -0
  266. package/dist/tt-preview.js.map +1 -0
  267. package/dist/tt-product.d.ts +40 -0
  268. package/dist/tt-product.d.ts.map +1 -0
  269. package/dist/tt-product.js +590 -0
  270. package/dist/tt-product.js.map +1 -0
  271. package/dist/tt-profile-card.d.ts +23 -0
  272. package/dist/tt-profile-card.d.ts.map +1 -0
  273. package/dist/tt-profile-card.js +199 -0
  274. package/dist/tt-profile-card.js.map +1 -0
  275. package/dist/tt-progress.d.ts +26 -0
  276. package/dist/tt-progress.d.ts.map +1 -0
  277. package/dist/tt-progress.js +156 -0
  278. package/dist/tt-progress.js.map +1 -0
  279. package/dist/tt-quantity.d.ts +36 -0
  280. package/dist/tt-quantity.d.ts.map +1 -0
  281. package/dist/tt-quantity.js +396 -0
  282. package/dist/tt-quantity.js.map +1 -0
  283. package/dist/tt-radio-group.d.ts +50 -0
  284. package/dist/tt-radio-group.d.ts.map +1 -0
  285. package/dist/tt-radio-group.js +372 -0
  286. package/dist/tt-radio-group.js.map +1 -0
  287. package/dist/tt-rating.d.ts +54 -0
  288. package/dist/tt-rating.d.ts.map +1 -0
  289. package/dist/tt-rating.js +312 -0
  290. package/dist/tt-rating.js.map +1 -0
  291. package/dist/tt-search.d.ts +47 -0
  292. package/dist/tt-search.d.ts.map +1 -0
  293. package/dist/tt-search.js +360 -0
  294. package/dist/tt-search.js.map +1 -0
  295. package/dist/tt-section.d.ts +13 -0
  296. package/dist/tt-section.d.ts.map +1 -0
  297. package/dist/tt-section.js +98 -0
  298. package/dist/tt-section.js.map +1 -0
  299. package/dist/tt-select.d.ts +62 -0
  300. package/dist/tt-select.d.ts.map +1 -0
  301. package/dist/tt-select.js +662 -0
  302. package/dist/tt-select.js.map +1 -0
  303. package/dist/tt-skeleton.d.ts +20 -0
  304. package/dist/tt-skeleton.d.ts.map +1 -0
  305. package/dist/tt-skeleton.js +143 -0
  306. package/dist/tt-skeleton.js.map +1 -0
  307. package/dist/tt-slider.d.ts +74 -0
  308. package/dist/tt-slider.d.ts.map +1 -0
  309. package/dist/tt-slider.js +426 -0
  310. package/dist/tt-slider.js.map +1 -0
  311. package/dist/tt-social-links.d.ts +34 -0
  312. package/dist/tt-social-links.d.ts.map +1 -0
  313. package/dist/tt-social-links.js +242 -0
  314. package/dist/tt-social-links.js.map +1 -0
  315. package/dist/tt-sparkline.d.ts +19 -0
  316. package/dist/tt-sparkline.d.ts.map +1 -0
  317. package/dist/tt-sparkline.js +191 -0
  318. package/dist/tt-sparkline.js.map +1 -0
  319. package/dist/tt-spinner.d.ts +19 -0
  320. package/dist/tt-spinner.d.ts.map +1 -0
  321. package/dist/tt-spinner.js +93 -0
  322. package/dist/tt-spinner.js.map +1 -0
  323. package/dist/tt-stack.d.ts +42 -0
  324. package/dist/tt-stack.d.ts.map +1 -0
  325. package/dist/tt-stack.js +158 -0
  326. package/dist/tt-stack.js.map +1 -0
  327. package/dist/tt-stat.d.ts +17 -0
  328. package/dist/tt-stat.d.ts.map +1 -0
  329. package/dist/tt-stat.js +134 -0
  330. package/dist/tt-stat.js.map +1 -0
  331. package/dist/tt-switch.d.ts +39 -0
  332. package/dist/tt-switch.d.ts.map +1 -0
  333. package/dist/tt-switch.js +254 -0
  334. package/dist/tt-switch.js.map +1 -0
  335. package/dist/tt-switcher.d.ts +23 -0
  336. package/dist/tt-switcher.d.ts.map +1 -0
  337. package/dist/tt-switcher.js +203 -0
  338. package/dist/tt-switcher.js.map +1 -0
  339. package/dist/tt-table-cell.d.ts +26 -0
  340. package/dist/tt-table-cell.d.ts.map +1 -0
  341. package/dist/tt-table-cell.js +121 -0
  342. package/dist/tt-table-cell.js.map +1 -0
  343. package/dist/tt-table-row.d.ts +31 -0
  344. package/dist/tt-table-row.d.ts.map +1 -0
  345. package/dist/tt-table-row.js +72 -0
  346. package/dist/tt-table-row.js.map +1 -0
  347. package/dist/tt-table.d.ts +44 -0
  348. package/dist/tt-table.d.ts.map +1 -0
  349. package/dist/tt-table.js +270 -0
  350. package/dist/tt-table.js.map +1 -0
  351. package/dist/tt-tabs.d.ts +31 -0
  352. package/dist/tt-tabs.d.ts.map +1 -0
  353. package/dist/tt-tabs.js +223 -0
  354. package/dist/tt-tabs.js.map +1 -0
  355. package/dist/tt-tag-list.d.ts +19 -0
  356. package/dist/tt-tag-list.d.ts.map +1 -0
  357. package/dist/tt-tag-list.js +136 -0
  358. package/dist/tt-tag-list.js.map +1 -0
  359. package/dist/tt-text.d.ts +52 -0
  360. package/dist/tt-text.d.ts.map +1 -0
  361. package/dist/tt-text.js +337 -0
  362. package/dist/tt-text.js.map +1 -0
  363. package/dist/tt-textarea.d.ts +43 -0
  364. package/dist/tt-textarea.d.ts.map +1 -0
  365. package/dist/tt-textarea.js +356 -0
  366. package/dist/tt-textarea.js.map +1 -0
  367. package/dist/tt-thread.d.ts +62 -0
  368. package/dist/tt-thread.d.ts.map +1 -0
  369. package/dist/tt-thread.js +374 -0
  370. package/dist/tt-thread.js.map +1 -0
  371. package/dist/tt-toast.d.ts +49 -0
  372. package/dist/tt-toast.d.ts.map +1 -0
  373. package/dist/tt-toast.js +440 -0
  374. package/dist/tt-toast.js.map +1 -0
  375. package/dist/tt-toggle-group.d.ts +73 -0
  376. package/dist/tt-toggle-group.d.ts.map +1 -0
  377. package/dist/tt-toggle-group.js +273 -0
  378. package/dist/tt-toggle-group.js.map +1 -0
  379. package/dist/tt-toggle.d.ts +54 -0
  380. package/dist/tt-toggle.d.ts.map +1 -0
  381. package/dist/tt-toggle.js +232 -0
  382. package/dist/tt-toggle.js.map +1 -0
  383. package/dist/tt-toolbar.d.ts +26 -0
  384. package/dist/tt-toolbar.d.ts.map +1 -0
  385. package/dist/tt-toolbar.js +164 -0
  386. package/dist/tt-toolbar.js.map +1 -0
  387. package/dist/tt-tooltip.d.ts +42 -0
  388. package/dist/tt-tooltip.d.ts.map +1 -0
  389. package/dist/tt-tooltip.js +299 -0
  390. package/dist/tt-tooltip.js.map +1 -0
  391. package/package.json +84 -4
  392. package/vscode.html-custom-data.json +2907 -0
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Keeping a top-layer element glued to the thing that opened it.
3
+ *
4
+ * THE BUG THIS EXISTS FOR: `scroll` events are not composed, so they do
5
+ * not escape a shadow root. A `window.addEventListener("scroll", fn, true)`
6
+ * never fires for a scroll container living inside some component's shadow
7
+ * DOM, which in this library is the norm rather than the exception: the
8
+ * page scrolls inside tt-layout's `.content`, not on the document. The
9
+ * result was a menu that stayed nailed to the viewport while the button it
10
+ * belonged to scrolled away underneath it.
11
+ *
12
+ * The fix is the same one positioning libraries use: find every scrollable
13
+ * ancestor of the anchor and listen on each of them directly, hopping out
14
+ * of shadow roots on the way up.
15
+ */
16
+ /** True when this element can actually scroll in either axis. */
17
+ function isScrollable(element) {
18
+ const style = getComputedStyle(element);
19
+ const overflow = style.overflow + style.overflowY + style.overflowX;
20
+ return /(auto|scroll|overlay)/.test(overflow);
21
+ }
22
+ /**
23
+ * Every scrollable ancestor of `element` in the FLATTENED tree.
24
+ *
25
+ * Three different "parents" matter here, and using the wrong one is why
26
+ * the first version of this did nothing:
27
+ *
28
+ * assignedSlot A slotted element renders wherever its slot is, which is
29
+ * inside some other component's shadow root. Its parentNode
30
+ * still points at its light-DOM parent, which is NOT where
31
+ * it visually sits. Stepping to the slot is what follows
32
+ * the element to where it is actually painted.
33
+ * ShadowRoot Has no parentElement, so a plain walk stops dead. Its
34
+ * `host` continues in the outer tree.
35
+ * parentNode The ordinary case.
36
+ *
37
+ * Missing the first one is what left the page's real scroll container
38
+ * unwatched: tt-layout's .content lives in tt-layout's shadow root, and
39
+ * every page is slotted into it, so no parentNode chain ever reaches it.
40
+ */
41
+ export function scrollAncestors(element) {
42
+ const found = [];
43
+ let node = element;
44
+ while (node) {
45
+ // Rendered into a slot: follow it there, not to the light-DOM parent.
46
+ const slot = node instanceof Element ? node.assignedSlot : null;
47
+ if (slot) {
48
+ node = slot;
49
+ continue;
50
+ }
51
+ if (node instanceof ShadowRoot) {
52
+ node = node.host;
53
+ continue;
54
+ }
55
+ const parent = node.parentNode;
56
+ if (parent instanceof Element && isScrollable(parent)) {
57
+ found.push(parent);
58
+ }
59
+ node = parent;
60
+ }
61
+ return found;
62
+ }
63
+ /**
64
+ * Calls `onChange` whenever the anchor may have moved: any ancestor
65
+ * scrolling, the window scrolling or resizing, or the anchor itself
66
+ * changing size.
67
+ *
68
+ * Returns the unsubscribe function. Call it when the floating element
69
+ * closes, or these listeners outlive it.
70
+ */
71
+ export function trackAnchor(anchor, onChange) {
72
+ const targets = [
73
+ ...scrollAncestors(anchor),
74
+ window,
75
+ ];
76
+ // passive: this never calls preventDefault, and saying so lets the
77
+ // browser scroll without waiting to find out.
78
+ for (const target of targets) {
79
+ target.addEventListener("scroll", onChange, { passive: true });
80
+ }
81
+ window.addEventListener("resize", onChange);
82
+ // Catches the cases scroll cannot see: a sibling above the anchor
83
+ // growing, a font loading, a container animating open.
84
+ const observer = new ResizeObserver(onChange);
85
+ observer.observe(anchor);
86
+ return () => {
87
+ for (const target of targets) {
88
+ target.removeEventListener("scroll", onChange);
89
+ }
90
+ window.removeEventListener("resize", onChange);
91
+ observer.disconnect();
92
+ };
93
+ }
94
+ /**
95
+ * Park a top-layer element under its anchor, flipping above when there
96
+ * is no room below and clamping so it never leaves the viewport.
97
+ *
98
+ * CALL THIS AFTER showPopover(), never before. A closed popover is
99
+ * display:none and a display:none element measures 0x0, so positioning
100
+ * first works with a width of zero: the align=end offset collapses onto
101
+ * the anchor's right edge and the clamp has nothing to clamp with, which
102
+ * puts a menu near the right edge off screen.
103
+ */
104
+ export function placeBelow(anchor, floating, options = {}) {
105
+ const { align = "start", gap = 4, edge = 8 } = options;
106
+ const a = anchor.getBoundingClientRect();
107
+ const f = floating.getBoundingClientRect();
108
+ // clientWidth/clientHeight, not innerWidth/innerHeight: the inner pair
109
+ // includes the scrollbar, so clamping against them leaves the last few
110
+ // pixels sitting underneath it.
111
+ const viewportWidth = document.documentElement.clientWidth;
112
+ const viewportHeight = document.documentElement.clientHeight;
113
+ const roomBelow = viewportHeight - a.bottom;
114
+ const top = roomBelow < f.height + gap ? a.top - f.height - gap : a.bottom + gap;
115
+ let left = align === "end" ? a.right - f.width : a.left;
116
+ left = Math.max(edge, Math.min(left, viewportWidth - f.width - edge));
117
+ floating.style.top = `${Math.max(edge, top)}px`;
118
+ floating.style.left = `${left}px`;
119
+ }
120
+ //# sourceMappingURL=floating.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"floating.js","sourceRoot":"","sources":["../src/floating.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ export * from "./interaction/tt-draggable.js";
2
+ export * from "./interaction/tt-droppable.js";
3
+ export * from "./interaction/tt-resizable.js";
4
+ export * from "./interaction/tt-reveal.js";
5
+ export * from "./safe-url.js";
6
+ export * from "./floating.js";
7
+ export * from "./tt-button.js";
8
+ export * from "./tt-input.js";
9
+ export * from "./tt-checkbox.js";
10
+ export * from "./tt-checkbox-group.js";
11
+ export * from "./tt-textarea.js";
12
+ export * from "./tt-switch.js";
13
+ export * from "./tt-kbd.js";
14
+ export * from "./tt-text.js";
15
+ export * from "./tt-aspect-ratio.js";
16
+ export * from "./tt-collapsible.js";
17
+ export * from "./tt-slider.js";
18
+ export * from "./tt-toggle.js";
19
+ export * from "./tt-toggle-group.js";
20
+ export * from "./tt-radio-group.js";
21
+ export * from "./tt-select.js";
22
+ export * from "./tt-combobox.js";
23
+ export * from "./tt-card.js";
24
+ export * from "./tt-image.js";
25
+ export * from "./tt-icon.js";
26
+ export * from "./tt-form.js";
27
+ export * from "./tt-badge.js";
28
+ export * from "./tt-empty-state.js";
29
+ export * from "./tt-breadcrumbs.js";
30
+ export * from "./tt-copy-button.js";
31
+ export * from "./tt-drawer.js";
32
+ export * from "./tt-alert.js";
33
+ export * from "./tt-auth.js";
34
+ export * from "./tt-avatar.js";
35
+ export * from "./tt-divider.js";
36
+ export * from "./tt-progress.js";
37
+ export * from "./tt-rating.js";
38
+ export * from "./tt-spinner.js";
39
+ export * from "./tt-tabs.js";
40
+ export * from "./tt-tooltip.js";
41
+ export * from "./tt-page-header.js";
42
+ export * from "./tt-confirm.js";
43
+ export * from "./tt-skeleton.js";
44
+ export * from "./tt-toast.js";
45
+ export * from "./tt-pagination.js";
46
+ export * from "./tt-sparkline.js";
47
+ export * from "./tt-chart.js";
48
+ export * from "./tt-key-values.js";
49
+ export * from "./tt-tag-list.js";
50
+ export * from "./tt-contact-list.js";
51
+ export * from "./tt-social-links.js";
52
+ export * from "./tt-company-card.js";
53
+ export * from "./tt-comparison-table.js";
54
+ export * from "./tt-inbox.js";
55
+ export * from "./tt-thread.js";
56
+ export * from "./tt-dropdown-menu.js";
57
+ export * from "./tt-quantity.js";
58
+ export * from "./tt-filter.js";
59
+ export * from "./tt-file-upload.js";
60
+ export * from "./tt-button-group.js";
61
+ export * from "./tt-layout.js";
62
+ export * from "./tt-navbar.js";
63
+ export * from "./tt-page.js";
64
+ export * from "./tt-section.js";
65
+ export * from "./tt-toolbar.js";
66
+ export * from "./tt-stack.js";
67
+ export * from "./tt-modal.js";
68
+ export * from "./sidebar/tt-sidebar.js";
69
+ export * from "./sidebar/tt-sidebar-header.js";
70
+ export * from "./sidebar/tt-sidebar-footer.js";
71
+ export * from "./sidebar/tt-menu-item.js";
72
+ export * from "./sidebar/tt-menu-group.js";
73
+ export * from "./accordion/tt-accordion.js";
74
+ export * from "./accordion/tt-accordion-item.js";
75
+ export * from "./bento/tt-bento.js";
76
+ export * from "./bento/tt-bento-item.js";
77
+ export * from "./tt-search.js";
78
+ export * from "./tt-profile-card.js";
79
+ export * from "./tt-product.js";
80
+ export * from "./tt-stat.js";
81
+ export * from "./tt-grid.js";
82
+ export * from "./tt-data-table.js";
83
+ export * from "./tt-preview.js";
84
+ export * from "./tt-example.js";
85
+ export * from "./tt-code-block.js";
86
+ export * from "./tt-table.js";
87
+ export * from "./tt-table-row.js";
88
+ export * from "./tt-table-cell.js";
89
+ export * from "./tt-switcher.js";
90
+ export * from "./tt-component-doc.js";
91
+ export * from "./tt-knowledge-doc.js";
92
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,96 @@
1
+ // Primitives
2
+ export * from "./interaction/tt-draggable.js";
3
+ export * from "./interaction/tt-droppable.js";
4
+ export * from "./interaction/tt-resizable.js";
5
+ export * from "./interaction/tt-reveal.js";
6
+ export * from "./safe-url.js";
7
+ export * from "./floating.js";
8
+ export * from "./tt-button.js";
9
+ export * from "./tt-input.js";
10
+ export * from "./tt-checkbox.js";
11
+ export * from "./tt-checkbox-group.js";
12
+ export * from "./tt-textarea.js";
13
+ export * from "./tt-switch.js";
14
+ export * from "./tt-kbd.js";
15
+ export * from "./tt-text.js";
16
+ export * from "./tt-aspect-ratio.js";
17
+ export * from "./tt-collapsible.js";
18
+ export * from "./tt-slider.js";
19
+ export * from "./tt-toggle.js";
20
+ export * from "./tt-toggle-group.js";
21
+ export * from "./tt-radio-group.js";
22
+ export * from "./tt-select.js";
23
+ export * from "./tt-combobox.js";
24
+ export * from "./tt-card.js";
25
+ export * from "./tt-image.js";
26
+ export * from "./tt-icon.js";
27
+ export * from "./tt-form.js";
28
+ export * from "./tt-badge.js";
29
+ export * from "./tt-empty-state.js";
30
+ export * from "./tt-breadcrumbs.js";
31
+ export * from "./tt-copy-button.js";
32
+ export * from "./tt-drawer.js";
33
+ export * from "./tt-alert.js";
34
+ export * from "./tt-auth.js";
35
+ export * from "./tt-avatar.js";
36
+ export * from "./tt-divider.js";
37
+ export * from "./tt-progress.js";
38
+ export * from "./tt-rating.js";
39
+ export * from "./tt-spinner.js";
40
+ export * from "./tt-tabs.js";
41
+ export * from "./tt-tooltip.js";
42
+ export * from "./tt-page-header.js";
43
+ export * from "./tt-confirm.js";
44
+ export * from "./tt-skeleton.js";
45
+ export * from "./tt-toast.js";
46
+ export * from "./tt-pagination.js";
47
+ export * from "./tt-sparkline.js";
48
+ export * from "./tt-chart.js";
49
+ export * from "./tt-key-values.js";
50
+ export * from "./tt-tag-list.js";
51
+ export * from "./tt-contact-list.js";
52
+ export * from "./tt-social-links.js";
53
+ export * from "./tt-company-card.js";
54
+ export * from "./tt-comparison-table.js";
55
+ export * from "./tt-inbox.js";
56
+ export * from "./tt-thread.js";
57
+ export * from "./tt-dropdown-menu.js";
58
+ export * from "./tt-quantity.js";
59
+ export * from "./tt-filter.js";
60
+ export * from "./tt-file-upload.js";
61
+ export * from "./tt-button-group.js";
62
+ // Layout & navigation
63
+ export * from "./tt-layout.js";
64
+ export * from "./tt-navbar.js";
65
+ export * from "./tt-page.js";
66
+ export * from "./tt-section.js";
67
+ export * from "./tt-toolbar.js";
68
+ export * from "./tt-stack.js";
69
+ export * from "./tt-modal.js";
70
+ export * from "./sidebar/tt-sidebar.js";
71
+ export * from "./sidebar/tt-sidebar-header.js";
72
+ export * from "./sidebar/tt-sidebar-footer.js";
73
+ export * from "./sidebar/tt-menu-item.js";
74
+ export * from "./sidebar/tt-menu-group.js";
75
+ export * from "./accordion/tt-accordion.js";
76
+ export * from "./accordion/tt-accordion-item.js";
77
+ export * from "./bento/tt-bento.js";
78
+ export * from "./bento/tt-bento-item.js";
79
+ // Compositions
80
+ export * from "./tt-search.js";
81
+ export * from "./tt-profile-card.js";
82
+ export * from "./tt-product.js";
83
+ export * from "./tt-stat.js";
84
+ export * from "./tt-grid.js";
85
+ export * from "./tt-data-table.js";
86
+ // Documentation tooling
87
+ export * from "./tt-preview.js";
88
+ export * from "./tt-example.js";
89
+ export * from "./tt-code-block.js";
90
+ export * from "./tt-table.js";
91
+ export * from "./tt-table-row.js";
92
+ export * from "./tt-table-cell.js";
93
+ export * from "./tt-switcher.js";
94
+ export * from "./tt-component-doc.js";
95
+ export * from "./tt-knowledge-doc.js";
96
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { Directive } from "lit/directive.js";
2
+ import type { ElementPart, PartInfo, DirectiveParameters } from "lit/directive.js";
3
+ export interface DraggableOptions {
4
+ /** Data payload attached to the drag event */
5
+ data?: unknown;
6
+ /** Disable dragging functionality */
7
+ disabled?: boolean;
8
+ /** Data format type (defaults to 'text/plain') */
9
+ format?: string;
10
+ /** Callback fired when dragging begins */
11
+ onDragStart?: (e: DragEvent) => void;
12
+ /** Callback fired when dragging ends */
13
+ onDragEnd?: (e: DragEvent) => void;
14
+ }
15
+ declare class DraggableDirective extends Directive {
16
+ private element?;
17
+ private options;
18
+ private attached;
19
+ constructor(partInfo: PartInfo);
20
+ render(_options?: DraggableOptions): void;
21
+ update(part: ElementPart, [options]: DirectiveParameters<this>): void;
22
+ private handleDragStart;
23
+ private handleDragEnd;
24
+ private attach;
25
+ private detach;
26
+ }
27
+ export declare const draggable: (_options?: DraggableOptions | undefined) => import("lit-html/directive.js").DirectiveResult<typeof DraggableDirective>;
28
+ export {};
29
+ //# sourceMappingURL=tt-draggable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tt-draggable.d.ts","sourceRoot":"","sources":["../../src/interaction/tt-draggable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAa,MAAM,kBAAkB,CAAC;AAIxD,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEnF,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,wCAAwC;IACxC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;CACpC;AAYD,cAAM,kBAAmB,SAAQ,SAAS;IACxC,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,QAAQ;IAS9B,MAAM,CAAC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAIhC,MAAM,CACb,IAAI,EAAE,WAAW,EACjB,CAAC,OAAY,CAAC,EAAE,mBAAmB,CAAC,IAAI,CAAC,GACxC,IAAI;IAQP,OAAO,CAAC,eAAe,CAQrB;IAEF,OAAO,CAAC,aAAa,CAGnB;IAEF,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,MAAM;CAQf;AAED,eAAO,MAAM,SAAS,yHAAgC,CAAC"}
@@ -0,0 +1,66 @@
1
+ // Imports for runtime code (values/classes)
2
+ import { Directive, directive } from "lit/directive.js";
3
+ import { PartType } from "lit/directive.js";
4
+ /*
5
+ Listeners are attached ONCE and read the latest options.
6
+
7
+ update() runs on every render of the template this sits in. It used to
8
+ detach and reattach each time, which also stripped the `dragging`
9
+ attribute: if anything re-rendered mid-drag (an onDragStart that sets
10
+ state is the obvious case), the item lost its dragging style while it
11
+ was still being dragged. Keeping the newest options in a field gives the
12
+ same "always current" behaviour without touching the element.
13
+ */
14
+ class DraggableDirective extends Directive {
15
+ constructor(partInfo) {
16
+ super(partInfo);
17
+ this.options = {};
18
+ this.attached = false;
19
+ this.handleDragStart = (e) => {
20
+ const { data, format, onDragStart } = this.options;
21
+ if (e.dataTransfer && data !== undefined) {
22
+ const payload = typeof data === 'string' ? data : JSON.stringify(data);
23
+ e.dataTransfer.setData(format || 'text/plain', payload);
24
+ }
25
+ this.element?.setAttribute('dragging', '');
26
+ onDragStart?.(e);
27
+ };
28
+ this.handleDragEnd = (e) => {
29
+ this.element?.removeAttribute('dragging');
30
+ this.options.onDragEnd?.(e);
31
+ };
32
+ if (partInfo.type !== PartType.ELEMENT) {
33
+ throw new Error('The draggable directive can only be attached directly to an element (e.g. <tt-card ${draggable()}>)');
34
+ }
35
+ }
36
+ render(_options) {
37
+ // Behavior-only directive
38
+ }
39
+ update(part, [options = {}]) {
40
+ this.element = part.element;
41
+ this.options = options;
42
+ if (options.disabled)
43
+ this.detach();
44
+ else
45
+ this.attach();
46
+ }
47
+ attach() {
48
+ if (this.attached || !this.element)
49
+ return;
50
+ this.attached = true;
51
+ this.element.draggable = true;
52
+ this.element.addEventListener('dragstart', this.handleDragStart);
53
+ this.element.addEventListener('dragend', this.handleDragEnd);
54
+ }
55
+ detach() {
56
+ if (!this.attached || !this.element)
57
+ return;
58
+ this.attached = false;
59
+ this.element.removeAttribute('draggable');
60
+ this.element.removeAttribute('dragging');
61
+ this.element.removeEventListener('dragstart', this.handleDragStart);
62
+ this.element.removeEventListener('dragend', this.handleDragEnd);
63
+ }
64
+ }
65
+ export const draggable = directive(DraggableDirective);
66
+ //# sourceMappingURL=tt-draggable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tt-draggable.js","sourceRoot":"","sources":["../../src/interaction/tt-draggable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { Directive } from "lit/directive.js";
2
+ import type { ElementPart, PartInfo, DirectiveParameters } from "lit/directive.js";
3
+ export interface DroppableOptions {
4
+ /** Disable drop target functionality */
5
+ disabled?: boolean;
6
+ /** Expected data format type (defaults to 'text/plain') */
7
+ format?: string;
8
+ /** Custom filter function to allow/deny drops dynamically */
9
+ canDrop?: (e: DragEvent) => boolean;
10
+ /** Fired when a dragged item enters the target area */
11
+ onDragEnter?: (e: DragEvent) => void;
12
+ /** Fired when a dragged item is over the target area */
13
+ onDragOver?: (e: DragEvent) => void;
14
+ /** Fired when a dragged item leaves the target area */
15
+ onDragLeave?: (e: DragEvent) => void;
16
+ /** Fired when an item is dropped. Receives the parsed payload and raw event */
17
+ onDrop?: (data: unknown, e: DragEvent) => void;
18
+ }
19
+ declare class DroppableDirective extends Directive {
20
+ private element?;
21
+ private options;
22
+ private attached;
23
+ private enterCounter;
24
+ constructor(partInfo: PartInfo);
25
+ render(_options?: DroppableOptions): void;
26
+ update(part: ElementPart, [options]: DirectiveParameters<this>): void;
27
+ private allowed;
28
+ private handleDragEnter;
29
+ private handleDragOver;
30
+ private handleDragLeave;
31
+ private handleDrop;
32
+ private attach;
33
+ private detach;
34
+ }
35
+ export declare const droppable: (_options?: DroppableOptions | undefined) => import("lit-html/directive.js").DirectiveResult<typeof DroppableDirective>;
36
+ export {};
37
+ //# sourceMappingURL=tt-droppable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tt-droppable.d.ts","sourceRoot":"","sources":["../../src/interaction/tt-droppable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAa,MAAM,kBAAkB,CAAC;AAGxD,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEnF,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC;IACpC,uDAAuD;IACvD,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,wDAAwD;IACxD,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACpC,uDAAuD;IACvD,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,+EAA+E;IAC/E,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;CAChD;AAYD,cAAM,kBAAmB,SAAQ,SAAS;IACxC,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAK;gBAEb,QAAQ,EAAE,QAAQ;IAS9B,MAAM,CAAC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAIhC,MAAM,CACb,IAAI,EAAE,WAAW,EACjB,CAAC,OAAY,CAAC,EAAE,mBAAmB,CAAC,IAAI,CAAC,GACxC,IAAI;IAQP,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,eAAe,CAQrB;IAEF,OAAO,CAAC,cAAc,CASpB;IAEF,OAAO,CAAC,eAAe,CAQrB;IAEF,OAAO,CAAC,UAAU,CAgBhB;IAEF,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,MAAM;CAUf;AAED,eAAO,MAAM,SAAS,yHAAgC,CAAC"}
@@ -0,0 +1,108 @@
1
+ import { Directive, directive } from "lit/directive.js";
2
+ import { PartType } from "lit/directive.js";
3
+ /*
4
+ Listeners are attached ONCE and read the latest options.
5
+
6
+ update() runs on every render of the template this sits in. It used to
7
+ detach and reattach each time, and detaching cleared the `dragover`
8
+ attribute and reset the enter counter. An onDragEnter that sets state
9
+ (the usual way to show a drop zone) re-renders, which wiped the very
10
+ highlight it had just asked for, and the counter then went negative on
11
+ the next dragleave.
12
+ */
13
+ class DroppableDirective extends Directive {
14
+ constructor(partInfo) {
15
+ super(partInfo);
16
+ this.options = {};
17
+ this.attached = false;
18
+ this.enterCounter = 0; // Tracks nested elements to avoid flickering dragleave
19
+ this.handleDragEnter = (e) => {
20
+ e.preventDefault();
21
+ this.enterCounter++;
22
+ if (!this.allowed(e))
23
+ return;
24
+ if (this.enterCounter === 1) {
25
+ this.element?.setAttribute('dragover', '');
26
+ this.options.onDragEnter?.(e);
27
+ }
28
+ };
29
+ this.handleDragOver = (e) => {
30
+ // e.preventDefault() is required to allow a drop in the browser
31
+ e.preventDefault();
32
+ if (!this.allowed(e)) {
33
+ if (e.dataTransfer)
34
+ e.dataTransfer.dropEffect = 'none';
35
+ return;
36
+ }
37
+ if (e.dataTransfer)
38
+ e.dataTransfer.dropEffect = 'copy';
39
+ this.options.onDragOver?.(e);
40
+ };
41
+ this.handleDragLeave = (e) => {
42
+ e.preventDefault();
43
+ this.enterCounter--;
44
+ if (this.enterCounter <= 0) {
45
+ this.enterCounter = 0;
46
+ this.element?.removeAttribute('dragover');
47
+ this.options.onDragLeave?.(e);
48
+ }
49
+ };
50
+ this.handleDrop = (e) => {
51
+ e.preventDefault();
52
+ this.enterCounter = 0;
53
+ this.element?.removeAttribute('dragover');
54
+ if (!this.allowed(e))
55
+ return;
56
+ let payload = null;
57
+ const rawData = e.dataTransfer?.getData(this.options.format || 'text/plain');
58
+ if (rawData) {
59
+ try {
60
+ payload = JSON.parse(rawData);
61
+ }
62
+ catch {
63
+ payload = rawData; // Fallback to raw string if not JSON
64
+ }
65
+ }
66
+ this.options.onDrop?.(payload, e);
67
+ };
68
+ if (partInfo.type !== PartType.ELEMENT) {
69
+ throw new Error('The droppable directive can only be attached directly to an element (e.g. <div ${droppable()}>)');
70
+ }
71
+ }
72
+ render(_options) {
73
+ // Behavior-only directive
74
+ }
75
+ update(part, [options = {}]) {
76
+ this.element = part.element;
77
+ this.options = options;
78
+ if (options.disabled)
79
+ this.detach();
80
+ else
81
+ this.attach();
82
+ }
83
+ allowed(e) {
84
+ return !this.options.canDrop || this.options.canDrop(e);
85
+ }
86
+ attach() {
87
+ if (this.attached || !this.element)
88
+ return;
89
+ this.attached = true;
90
+ this.element.addEventListener('dragenter', this.handleDragEnter);
91
+ this.element.addEventListener('dragover', this.handleDragOver);
92
+ this.element.addEventListener('dragleave', this.handleDragLeave);
93
+ this.element.addEventListener('drop', this.handleDrop);
94
+ }
95
+ detach() {
96
+ if (!this.attached || !this.element)
97
+ return;
98
+ this.attached = false;
99
+ this.enterCounter = 0;
100
+ this.element.removeAttribute('dragover');
101
+ this.element.removeEventListener('dragenter', this.handleDragEnter);
102
+ this.element.removeEventListener('dragover', this.handleDragOver);
103
+ this.element.removeEventListener('dragleave', this.handleDragLeave);
104
+ this.element.removeEventListener('drop', this.handleDrop);
105
+ }
106
+ }
107
+ export const droppable = directive(DroppableDirective);
108
+ //# sourceMappingURL=tt-droppable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tt-droppable.js","sourceRoot":"","sources":["../../src/interaction/tt-droppable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { Directive } from "lit/directive.js";
2
+ import type { ElementPart, PartInfo, DirectiveParameters } from "lit/directive.js";
3
+ /** How far a resize gesture has moved, in CSS pixels. */
4
+ export interface ResizeDelta {
5
+ dx: number;
6
+ dy: number;
7
+ }
8
+ export interface ResizableOptions {
9
+ /** Which movement is reported. Default "x". The other axis is always reported as 0. */
10
+ axis?: "x" | "y" | "both";
11
+ /** Pixels per arrow-key press. Default 16. */
12
+ step?: number;
13
+ /** Turns the handle off: no listeners, no touch-action. */
14
+ disabled?: boolean;
15
+ /** A pointer drag or a key press begins a gesture. */
16
+ onResizeStart?: () => void;
17
+ /** Movement since the gesture started, in CSS pixels (cumulative, not per-event). */
18
+ onResize?: (delta: ResizeDelta) => void;
19
+ /** The gesture finished. Receives the final cumulative delta. */
20
+ onResizeEnd?: (delta: ResizeDelta) => void;
21
+ }
22
+ declare class ResizableDirective extends Directive {
23
+ private element?;
24
+ private options;
25
+ private attached;
26
+ private pointerId;
27
+ private startX;
28
+ private startY;
29
+ private delta;
30
+ constructor(partInfo: PartInfo);
31
+ render(_options?: ResizableOptions): void;
32
+ update(part: ElementPart, [options]: DirectiveParameters<this>): void;
33
+ private measure;
34
+ private handlePointerDown;
35
+ private handlePointerMove;
36
+ private handlePointerEnd;
37
+ private end;
38
+ private handleKeyDown;
39
+ private keyDelta;
40
+ private attach;
41
+ private detach;
42
+ }
43
+ export declare const resizable: (_options?: ResizableOptions | undefined) => import("lit-html/directive.js").DirectiveResult<typeof ResizableDirective>;
44
+ export {};
45
+ //# sourceMappingURL=tt-resizable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tt-resizable.d.ts","sourceRoot":"","sources":["../../src/interaction/tt-resizable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAa,MAAM,kBAAkB,CAAC;AAGxD,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EACR,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAE1B,yDAAyD;AACzD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,uFAAuF;IACvF,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC;IAC1B,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,qFAAqF;IACrF,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,iEAAiE;IACjE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CAC5C;AAkCD,cAAM,kBAAmB,SAAQ,SAAS;IACxC,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,QAAQ,CAAS;IAGzB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,KAAK,CAAiC;gBAElC,QAAQ,EAAE,QAAQ;IAS9B,MAAM,CAAC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAIhC,MAAM,CACb,IAAI,EAAE,WAAW,EACjB,CAAC,OAAY,CAAC,EAAE,mBAAmB,CAAC,IAAI,CAAC,GACxC,IAAI;IAUP,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,iBAAiB,CA+BvB;IAEF,OAAO,CAAC,iBAAiB,CAMvB;IAIF,OAAO,CAAC,gBAAgB,CAEtB;IAEF,OAAO,CAAC,GAAG;IAYX,OAAO,CAAC,aAAa,CAmBnB;IAIF,OAAO,CAAC,QAAQ;IAoBhB,OAAO,CAAC,MAAM;IAuBd,OAAO,CAAC,MAAM;CA8Bf;AAED,eAAO,MAAM,SAAS,yHAAgC,CAAC"}