igniteui-webcomponents 7.3.0 → 7.3.2

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 (322) hide show
  1. package/CHANGELOG.md +64 -1
  2. package/README.md +30 -0
  3. package/components/avatar/avatar.d.ts +1 -2
  4. package/components/avatar/avatar.js +4 -8
  5. package/components/avatar/avatar.js.map +1 -1
  6. package/components/avatar/themes/avatar.base.css.js +1 -1
  7. package/components/avatar/themes/avatar.base.css.js.map +1 -1
  8. package/components/badge/badge.d.ts +6 -1
  9. package/components/badge/badge.js +8 -5
  10. package/components/badge/badge.js.map +1 -1
  11. package/components/badge/themes/badge.base.css.js +1 -1
  12. package/components/badge/themes/badge.base.css.js.map +1 -1
  13. package/components/banner/themes/banner.base.css.js +1 -1
  14. package/components/banner/themes/banner.base.css.js.map +1 -1
  15. package/components/banner/themes/shared/banner.indigo.css.js +1 -1
  16. package/components/banner/themes/shared/banner.indigo.css.js.map +1 -1
  17. package/components/calendar/base.d.ts +7 -2
  18. package/components/calendar/base.js +8 -3
  19. package/components/calendar/base.js.map +1 -1
  20. package/components/calendar/calendar.d.ts +4 -0
  21. package/components/calendar/calendar.js +41 -14
  22. package/components/calendar/calendar.js.map +1 -1
  23. package/components/calendar/days-view/days-view.d.ts +3 -6
  24. package/components/calendar/days-view/days-view.js +7 -16
  25. package/components/calendar/days-view/days-view.js.map +1 -1
  26. package/components/calendar/helpers.d.ts +13 -0
  27. package/components/calendar/helpers.js +15 -0
  28. package/components/calendar/helpers.js.map +1 -1
  29. package/components/calendar/themes/calendar.base.css.js +1 -1
  30. package/components/calendar/themes/calendar.base.css.js.map +1 -1
  31. package/components/calendar/themes/days-view.base.css.js +1 -1
  32. package/components/calendar/themes/days-view.base.css.js.map +1 -1
  33. package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js +1 -1
  34. package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js.map +1 -1
  35. package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js +1 -1
  36. package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js.map +1 -1
  37. package/components/calendar/themes/shared/fluent/days-view.fluent.css.js +1 -1
  38. package/components/calendar/themes/shared/fluent/days-view.fluent.css.js.map +1 -1
  39. package/components/calendar/themes/shared/indigo/calendar.indigo.css.js +1 -1
  40. package/components/calendar/themes/shared/indigo/calendar.indigo.css.js.map +1 -1
  41. package/components/calendar/themes/shared/indigo/days-view.indigo.css.js +1 -1
  42. package/components/calendar/themes/shared/indigo/days-view.indigo.css.js.map +1 -1
  43. package/components/calendar/themes/shared/material/days-view.material.css.js +1 -1
  44. package/components/calendar/themes/shared/material/days-view.material.css.js.map +1 -1
  45. package/components/calendar/themes/year-month-view.base.css.js +1 -1
  46. package/components/calendar/themes/year-month-view.base.css.js.map +1 -1
  47. package/components/card/themes/container.base.css.js +1 -1
  48. package/components/card/themes/container.base.css.js.map +1 -1
  49. package/components/carousel/themes/carousel.base.css.js +1 -1
  50. package/components/carousel/themes/carousel.base.css.js.map +1 -1
  51. package/components/carousel/themes/shared/carousel.indigo.css.js +1 -1
  52. package/components/carousel/themes/shared/carousel.indigo.css.js.map +1 -1
  53. package/components/chat/themes/chat.base.css.js +1 -1
  54. package/components/chat/themes/chat.base.css.js.map +1 -1
  55. package/components/chat/themes/message.base.css.js +1 -1
  56. package/components/chat/themes/message.base.css.js.map +1 -1
  57. package/components/checkbox/themes/checkbox.base.css.js +1 -1
  58. package/components/checkbox/themes/checkbox.base.css.js.map +1 -1
  59. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js +1 -1
  60. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js.map +1 -1
  61. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js +1 -1
  62. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js.map +1 -1
  63. package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js +1 -1
  64. package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js.map +1 -1
  65. package/components/checkbox/themes/shared/switch/switch.fluent.css.js +1 -1
  66. package/components/checkbox/themes/shared/switch/switch.fluent.css.js.map +1 -1
  67. package/components/checkbox/themes/shared/switch/switch.indigo.css.js +1 -1
  68. package/components/checkbox/themes/shared/switch/switch.indigo.css.js.map +1 -1
  69. package/components/checkbox/themes/shared/switch/switch.material.css.js +1 -1
  70. package/components/checkbox/themes/shared/switch/switch.material.css.js.map +1 -1
  71. package/components/checkbox/themes/switch.base.css.js +1 -1
  72. package/components/checkbox/themes/switch.base.css.js.map +1 -1
  73. package/components/chip/chip.d.ts +30 -14
  74. package/components/chip/chip.js +54 -48
  75. package/components/chip/chip.js.map +1 -1
  76. package/components/chip/themes/chip.base.css.js +1 -1
  77. package/components/chip/themes/chip.base.css.js.map +1 -1
  78. package/components/chip/themes/dark/chip.bootstrap.css.js +1 -1
  79. package/components/chip/themes/dark/chip.bootstrap.css.js.map +1 -1
  80. package/components/chip/themes/dark/chip.fluent.css.js +1 -1
  81. package/components/chip/themes/dark/chip.fluent.css.js.map +1 -1
  82. package/components/chip/themes/dark/chip.indigo.css.js +1 -1
  83. package/components/chip/themes/dark/chip.indigo.css.js.map +1 -1
  84. package/components/chip/themes/dark/chip.material.css.js +1 -1
  85. package/components/chip/themes/dark/chip.material.css.js.map +1 -1
  86. package/components/chip/themes/light/chip.bootstrap.css.js +1 -1
  87. package/components/chip/themes/light/chip.bootstrap.css.js.map +1 -1
  88. package/components/chip/themes/light/chip.fluent.css.js +1 -1
  89. package/components/chip/themes/light/chip.fluent.css.js.map +1 -1
  90. package/components/chip/themes/light/chip.indigo.css.js +1 -1
  91. package/components/chip/themes/light/chip.indigo.css.js.map +1 -1
  92. package/components/chip/themes/light/chip.material.css.js +1 -1
  93. package/components/chip/themes/light/chip.material.css.js.map +1 -1
  94. package/components/chip/themes/shared/chip.bootstrap.css.js +1 -1
  95. package/components/chip/themes/shared/chip.bootstrap.css.js.map +1 -1
  96. package/components/chip/themes/shared/chip.common.css.js +1 -1
  97. package/components/chip/themes/shared/chip.common.css.js.map +1 -1
  98. package/components/chip/themes/shared/chip.fluent.css.js +1 -1
  99. package/components/chip/themes/shared/chip.fluent.css.js.map +1 -1
  100. package/components/chip/themes/shared/chip.indigo.css.js +1 -1
  101. package/components/chip/themes/shared/chip.indigo.css.js.map +1 -1
  102. package/components/color-picker/color-picker.d.ts +2 -2
  103. package/components/color-picker/color-picker.js.map +1 -1
  104. package/components/color-picker/picker-canvas.js +2 -1
  105. package/components/color-picker/picker-canvas.js.map +1 -1
  106. package/components/color-picker/themes/color-picker.base.css.js +1 -1
  107. package/components/color-picker/themes/color-picker.base.css.js.map +1 -1
  108. package/components/combo/themes/combo-item.base.css.js +1 -1
  109. package/components/combo/themes/combo-item.base.css.js.map +1 -1
  110. package/components/combo/themes/combo.base.css.js +1 -1
  111. package/components/combo/themes/combo.base.css.js.map +1 -1
  112. package/components/combo/themes/shared/combo.bootstrap.css.js +1 -1
  113. package/components/combo/themes/shared/combo.bootstrap.css.js.map +1 -1
  114. package/components/date-picker/date-picker.base.d.ts +11 -2
  115. package/components/date-picker/date-picker.base.js +8 -3
  116. package/components/date-picker/date-picker.base.js.map +1 -1
  117. package/components/date-picker/themes/date-picker.base.css.js +1 -1
  118. package/components/date-picker/themes/date-picker.base.css.js.map +1 -1
  119. package/components/date-range-picker/date-range-picker.base.css.js +1 -1
  120. package/components/date-range-picker/date-range-picker.base.css.js.map +1 -1
  121. package/components/date-range-picker/predefined-ranges-area.base.css.js +1 -1
  122. package/components/date-range-picker/predefined-ranges-area.base.css.js.map +1 -1
  123. package/components/divider/themes/divider.base.css.js +1 -1
  124. package/components/divider/themes/divider.base.css.js.map +1 -1
  125. package/components/dropdown/themes/dropdown-item.base.css.js +1 -1
  126. package/components/dropdown/themes/dropdown-item.base.css.js.map +1 -1
  127. package/components/dropdown/themes/dropdown.base.css.js +1 -1
  128. package/components/dropdown/themes/dropdown.base.css.js.map +1 -1
  129. package/components/file-input/themes/file-input.base.css.js +1 -1
  130. package/components/file-input/themes/file-input.base.css.js.map +1 -1
  131. package/components/file-input/themes/shared/file-input.bootstrap.css.js +1 -1
  132. package/components/file-input/themes/shared/file-input.bootstrap.css.js.map +1 -1
  133. package/components/input/themes/shared/input.indigo.css.js +1 -1
  134. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  135. package/components/input/themes/shared/input.material.css.js +1 -1
  136. package/components/input/themes/shared/input.material.css.js.map +1 -1
  137. package/components/list/themes/item.base.css.js +1 -1
  138. package/components/list/themes/item.base.css.js.map +1 -1
  139. package/components/nav-drawer/themes/item.base.css.js +1 -1
  140. package/components/nav-drawer/themes/item.base.css.js.map +1 -1
  141. package/components/progress/themes/linear/linear.progress.base.css.js +1 -1
  142. package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
  143. package/components/progress/themes/linear/shared/linear.progress.bootstrap.css.js +3 -0
  144. package/components/progress/themes/linear/shared/linear.progress.bootstrap.css.js.map +1 -0
  145. package/components/progress/themes/linear/themes.js +3 -2
  146. package/components/progress/themes/linear/themes.js.map +1 -1
  147. package/components/qr-code/qr-code.d.ts +28 -1
  148. package/components/qr-code/qr-code.js +56 -13
  149. package/components/qr-code/qr-code.js.map +1 -1
  150. package/components/qr-code/renderer/export.d.ts +28 -0
  151. package/components/qr-code/renderer/export.js +120 -0
  152. package/components/qr-code/renderer/export.js.map +1 -0
  153. package/components/qr-code/types.d.ts +26 -0
  154. package/components/qr-code/types.js.map +1 -1
  155. package/components/radio/themes/radio.base.css.js +1 -1
  156. package/components/radio/themes/radio.base.css.js.map +1 -1
  157. package/components/radio/themes/shared/radio.bootstrap.css.js +1 -1
  158. package/components/radio/themes/shared/radio.bootstrap.css.js.map +1 -1
  159. package/components/radio/themes/shared/radio.indigo.css.js +1 -1
  160. package/components/radio/themes/shared/radio.indigo.css.js.map +1 -1
  161. package/components/resize-container/themes/resize-container.base.css.js +1 -1
  162. package/components/resize-container/themes/resize-container.base.css.js.map +1 -1
  163. package/components/select/themes/select.base.css.js +1 -1
  164. package/components/select/themes/select.base.css.js.map +1 -1
  165. package/components/select/themes/shared/select.bootstrap.css.js +1 -1
  166. package/components/select/themes/shared/select.bootstrap.css.js.map +1 -1
  167. package/components/slider/themes/shared/slider.material.css.js +1 -1
  168. package/components/slider/themes/shared/slider.material.css.js.map +1 -1
  169. package/components/slider/themes/slider.base.css.js +1 -1
  170. package/components/slider/themes/slider.base.css.js.map +1 -1
  171. package/components/snackbar/themes/snackbar.base.css.js +1 -1
  172. package/components/snackbar/themes/snackbar.base.css.js.map +1 -1
  173. package/components/splitter/themes/splitter.base.css.js +1 -1
  174. package/components/splitter/themes/splitter.base.css.js.map +1 -1
  175. package/components/stepper/themes/step/step.base.css.js +1 -1
  176. package/components/stepper/themes/step/step.base.css.js.map +1 -1
  177. package/components/tabs/themes/shared/tab/tab.bootstrap.css.js +1 -1
  178. package/components/tabs/themes/shared/tab/tab.bootstrap.css.js.map +1 -1
  179. package/components/tabs/themes/shared/tab/tab.fluent.css.js +1 -1
  180. package/components/tabs/themes/shared/tab/tab.fluent.css.js.map +1 -1
  181. package/components/tabs/themes/shared/tab/tab.indigo.css.js +1 -1
  182. package/components/tabs/themes/shared/tab/tab.indigo.css.js.map +1 -1
  183. package/components/tabs/themes/shared/tab/tab.material.css.js +1 -1
  184. package/components/tabs/themes/shared/tab/tab.material.css.js.map +1 -1
  185. package/components/tabs/themes/shared/tabs/tabs.fluent.css.js +1 -1
  186. package/components/tabs/themes/shared/tabs/tabs.fluent.css.js.map +1 -1
  187. package/components/tabs/themes/shared/tabs/tabs.indigo.css.js +1 -1
  188. package/components/tabs/themes/shared/tabs/tabs.indigo.css.js.map +1 -1
  189. package/components/tabs/themes/shared/tabs/tabs.material.css.js +1 -1
  190. package/components/tabs/themes/shared/tabs/tabs.material.css.js.map +1 -1
  191. package/components/tabs/themes/tab.base.css.js +1 -1
  192. package/components/tabs/themes/tab.base.css.js.map +1 -1
  193. package/components/textarea/textarea.d.ts +2 -15
  194. package/components/textarea/textarea.js +48 -93
  195. package/components/textarea/textarea.js.map +1 -1
  196. package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
  197. package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
  198. package/components/textarea/themes/shared/textarea.common.css.js +1 -1
  199. package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
  200. package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
  201. package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
  202. package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
  203. package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
  204. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  205. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  206. package/components/tile-manager/position.d.ts +2 -9
  207. package/components/tile-manager/position.js +27 -42
  208. package/components/tile-manager/position.js.map +1 -1
  209. package/components/tile-manager/resize-state.d.ts +11 -22
  210. package/components/tile-manager/resize-state.js +60 -119
  211. package/components/tile-manager/resize-state.js.map +1 -1
  212. package/components/tile-manager/resize-util.d.ts +3 -7
  213. package/components/tile-manager/resize-util.js +65 -72
  214. package/components/tile-manager/resize-util.js.map +1 -1
  215. package/components/tile-manager/serializer.d.ts +1 -1
  216. package/components/tile-manager/serializer.js +9 -10
  217. package/components/tile-manager/serializer.js.map +1 -1
  218. package/components/tile-manager/themes/shared/tile/tile.common.css.js +1 -1
  219. package/components/tile-manager/themes/shared/tile/tile.common.css.js.map +1 -1
  220. package/components/tile-manager/themes/tile.base.css.js +1 -1
  221. package/components/tile-manager/themes/tile.base.css.js.map +1 -1
  222. package/components/tile-manager/tile-ghost-util.js +16 -20
  223. package/components/tile-manager/tile-ghost-util.js.map +1 -1
  224. package/components/tile-manager/tile-manager.d.ts +5 -2
  225. package/components/tile-manager/tile-manager.js +27 -23
  226. package/components/tile-manager/tile-manager.js.map +1 -1
  227. package/components/tile-manager/tile.d.ts +32 -18
  228. package/components/tile-manager/tile.js +181 -161
  229. package/components/tile-manager/tile.js.map +1 -1
  230. package/components/tile-manager/types.d.ts +1 -5
  231. package/components/tile-manager/types.js.map +1 -1
  232. package/components/toast/themes/toast.base.css.js +1 -1
  233. package/components/toast/themes/toast.base.css.js.map +1 -1
  234. package/components/tooltip/themes/tooltip.base.css.js +1 -1
  235. package/components/tooltip/themes/tooltip.base.css.js.map +1 -1
  236. package/components/tree/themes/item.base.css.js +1 -1
  237. package/components/tree/themes/item.base.css.js.map +1 -1
  238. package/components/validation-container/themes/validator.base.css.js +1 -1
  239. package/components/validation-container/themes/validator.base.css.js.map +1 -1
  240. package/components/validation-container/validation-container.d.ts +10 -12
  241. package/components/validation-container/validation-container.js +14 -17
  242. package/components/validation-container/validation-container.js.map +1 -1
  243. package/custom-elements.json +1061 -946
  244. package/igniteui-webcomponents.css-data.json +1 -1
  245. package/igniteui-webcomponents.html-data.json +1 -1
  246. package/index.d.ts +2 -1
  247. package/index.js.map +1 -1
  248. package/internals/definitions/defineAllComponents.js +4 -0
  249. package/internals/definitions/defineAllComponents.js.map +1 -1
  250. package/internals/directives/drag.d.ts +144 -0
  251. package/internals/directives/drag.js +278 -0
  252. package/internals/directives/drag.js.map +1 -0
  253. package/internals/directives/resize.d.ts +109 -0
  254. package/internals/directives/resize.js +214 -0
  255. package/internals/directives/resize.js.map +1 -0
  256. package/internals/templates/input-shell.d.ts +12 -1
  257. package/internals/templates/input-shell.js +17 -10
  258. package/internals/templates/input-shell.js.map +1 -1
  259. package/internals/utils/dom.d.ts +2 -0
  260. package/internals/utils/dom.js +3 -0
  261. package/internals/utils/dom.js.map +1 -1
  262. package/internals/utils/events.d.ts +2 -0
  263. package/internals/utils/events.js +3 -0
  264. package/internals/utils/events.js.map +1 -1
  265. package/package.json +1 -1
  266. package/skills/README.md +1 -0
  267. package/skills/igniteui-wc-generate-from-image-design/references/gotchas.md +21 -0
  268. package/skills/igniteui-wc-integrate-with-framework/SKILL.md +4 -3
  269. package/skills/igniteui-wc-integrate-with-framework/references/vanilla-js.md +14 -0
  270. package/skills/igniteui-wc-migrate-grid-lite-to-premium/SKILL.md +12 -2
  271. package/web-types.json +2 -2
  272. package/components/resize-container/default-ghost.d.ts +0 -5
  273. package/components/resize-container/default-ghost.js +0 -20
  274. package/components/resize-container/default-ghost.js.map +0 -1
  275. package/components/resize-container/resize-container.d.ts +0 -60
  276. package/components/resize-container/resize-container.js +0 -156
  277. package/components/resize-container/resize-container.js.map +0 -1
  278. package/components/resize-container/resize-controller.d.ts +0 -46
  279. package/components/resize-container/resize-controller.js +0 -195
  280. package/components/resize-container/resize-controller.js.map +0 -1
  281. package/components/resize-container/themes/dark/resize-indicator.bootstrap.css.js +0 -3
  282. package/components/resize-container/themes/dark/resize-indicator.bootstrap.css.js.map +0 -1
  283. package/components/resize-container/themes/dark/resize-indicator.fluent.css.d.ts +0 -1
  284. package/components/resize-container/themes/dark/resize-indicator.fluent.css.js +0 -3
  285. package/components/resize-container/themes/dark/resize-indicator.fluent.css.js.map +0 -1
  286. package/components/resize-container/themes/dark/resize-indicator.indigo.css.d.ts +0 -1
  287. package/components/resize-container/themes/dark/resize-indicator.indigo.css.js +0 -3
  288. package/components/resize-container/themes/dark/resize-indicator.indigo.css.js.map +0 -1
  289. package/components/resize-container/themes/dark/resize-indicator.material.css.d.ts +0 -1
  290. package/components/resize-container/themes/dark/resize-indicator.material.css.js +0 -3
  291. package/components/resize-container/themes/dark/resize-indicator.material.css.js.map +0 -1
  292. package/components/resize-container/themes/dark/resize-indicator.shared.css.d.ts +0 -1
  293. package/components/resize-container/themes/dark/resize-indicator.shared.css.js +0 -3
  294. package/components/resize-container/themes/dark/resize-indicator.shared.css.js.map +0 -1
  295. package/components/resize-container/themes/light/resize-indicator.bootstrap.css.d.ts +0 -1
  296. package/components/resize-container/themes/light/resize-indicator.bootstrap.css.js +0 -3
  297. package/components/resize-container/themes/light/resize-indicator.bootstrap.css.js.map +0 -1
  298. package/components/resize-container/themes/light/resize-indicator.fluent.css.d.ts +0 -1
  299. package/components/resize-container/themes/light/resize-indicator.fluent.css.js +0 -3
  300. package/components/resize-container/themes/light/resize-indicator.fluent.css.js.map +0 -1
  301. package/components/resize-container/themes/light/resize-indicator.indigo.css.d.ts +0 -1
  302. package/components/resize-container/themes/light/resize-indicator.indigo.css.js +0 -3
  303. package/components/resize-container/themes/light/resize-indicator.indigo.css.js.map +0 -1
  304. package/components/resize-container/themes/light/resize-indicator.material.css.d.ts +0 -1
  305. package/components/resize-container/themes/light/resize-indicator.material.css.js +0 -3
  306. package/components/resize-container/themes/light/resize-indicator.material.css.js.map +0 -1
  307. package/components/resize-container/themes/light/resize-indicator.shared.css.d.ts +0 -1
  308. package/components/resize-container/themes/light/resize-indicator.shared.css.js +0 -3
  309. package/components/resize-container/themes/light/resize-indicator.shared.css.js.map +0 -1
  310. package/components/resize-container/themes/shared/resize-container.common.css.d.ts +0 -1
  311. package/components/resize-container/themes/shared/resize-container.common.css.js +0 -3
  312. package/components/resize-container/themes/shared/resize-container.common.css.js.map +0 -1
  313. package/components/resize-container/themes/themes.d.ts +0 -2
  314. package/components/resize-container/themes/themes.js +0 -47
  315. package/components/resize-container/themes/themes.js.map +0 -1
  316. package/components/resize-container/types.d.ts +0 -40
  317. package/components/resize-container/types.js +0 -2
  318. package/components/resize-container/types.js.map +0 -1
  319. package/internals/controllers/drag.d.ts +0 -166
  320. package/internals/controllers/drag.js +0 -283
  321. package/internals/controllers/drag.js.map +0 -1
  322. /package/components/{resize-container/themes/dark/resize-indicator.bootstrap.css.d.ts → progress/themes/linear/shared/linear.progress.bootstrap.css.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"resize-state.js","sourceRoot":"","sources":["../../../src/components/tile-manager/resize-state.ts"],"names":[],"mappings":"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","sourcesContent":["import { firstOf } from '#internals/utils/arrays.js';\nimport { asNumber } from '#internals/utils/math.js';\nimport type { ResizeState } from '../resize-container/types.js';\nimport { ResizeUtil } from './resize-util.js';\nimport type IgcTileComponent from './tile.js';\nimport type {\n ResizeProps,\n ResizeSpanProps,\n TileGridDimension,\n TileGridPosition,\n TileResizeDimensions,\n} from './types.js';\n\nconst CssValues = /(?<start>\\d+)?\\s*\\/?\\s*span\\s*(?<span>\\d+)?/gi;\n\nfunction parseTileGridRect(tile: IgcTileComponent): TileGridPosition {\n const computed = getComputedStyle(tile);\n const { gridColumn, gridRow } = computed;\n\n const [column, row] = [\n firstOf(Array.from(gridColumn.matchAll(CssValues))).groups!,\n firstOf(Array.from(gridRow.matchAll(CssValues))).groups!,\n ];\n\n return {\n column: {\n start: asNumber(column.start, -1),\n span: asNumber(column.span, -1),\n },\n row: { start: asNumber(row.start, -1), span: asNumber(row.span, -1) },\n };\n}\n\nfunction parseTileParentGrid(gridContainer: HTMLElement) {\n const computed = getComputedStyle(gridContainer);\n const { gap, gridTemplateColumns, gridTemplateRows } = computed;\n\n const columns = gridTemplateColumns.split(' ').map(asNumber);\n const rows = gridTemplateRows.split(' ').map(asNumber);\n\n return {\n gap: asNumber(gap),\n columns: {\n count: columns.length,\n entries: columns,\n minSize: asNumber(computed.getPropertyValue('--min-col-width')),\n },\n rows: {\n count: rows.length,\n entries: rows,\n minSize: asNumber(computed.getPropertyValue('--min-row-height')),\n },\n };\n}\n\nclass TileResizeState {\n private _initialPosition!: TileGridPosition;\n private _resizeUtil!: ResizeUtil;\n\n protected _gap = 0;\n protected _prevDeltaX = 0;\n protected _prevDeltaY = 0;\n\n protected _prevSnappedWidth = 0;\n protected _prevSnappedHeight = 0;\n\n protected _position: TileGridPosition = {\n column: { start: 0, span: 0 },\n row: { start: 0, span: 0 },\n };\n\n protected _columns: TileGridDimension = {\n count: 0,\n entries: [],\n minSize: 0,\n };\n\n protected _rows: TileGridDimension = {\n count: 0,\n entries: [],\n minSize: 0,\n };\n\n public resizedDimensions: TileResizeDimensions = {\n width: null,\n height: null,\n };\n\n public get gap(): number {\n return this._gap;\n }\n\n public get position(): TileGridPosition {\n return structuredClone(this._position);\n }\n\n public get columns(): TileGridDimension {\n return structuredClone(this._columns);\n }\n\n public get rows(): TileGridDimension {\n return structuredClone(this._rows);\n }\n\n public calculateSnappedWidth(state: ResizeState): number {\n const resizeProps = this.getResizeProps(state);\n const snappedDimension =\n this._resizeUtil.calculateSnappedDimension(resizeProps);\n\n this._prevDeltaX = snappedDimension.newDelta;\n this._prevSnappedWidth = snappedDimension.snappedSize;\n return snappedDimension.snappedSize;\n }\n\n public calculateSnappedHeight(state: ResizeState): number {\n const resizeProps = this.getResizeProps(state, true);\n const snappedDimension =\n this._resizeUtil.calculateSnappedDimension(resizeProps);\n\n this._prevDeltaY = snappedDimension.newDelta;\n this._prevSnappedHeight = snappedDimension.snappedSize;\n return snappedDimension.snappedSize;\n }\n\n public updateState(\n tileRect: DOMRect,\n tile: IgcTileComponent,\n grid: HTMLElement\n ): void {\n this.initState(grid, tile);\n this.calculateTileStartPosition(grid, tileRect);\n }\n\n /**\n * Calculates and returns the CSS column and row properties of a tile after resizing,\n * based on its new dimensions and starting position.\n */\n public calculateResizedGridPosition(rect: DOMRect) {\n const colProps = this.getResizeSpanProps(rect);\n const rowProps = this.getResizeSpanProps(rect, true);\n\n // REVIEW pass col minSize and allowOverflow?\n this._position.column.span =\n this._resizeUtil.calculateResizedSpan(colProps);\n this._position.row.span = this._resizeUtil.calculateResizedSpan(rowProps);\n\n return {\n colSpan: this._position.column.span,\n rowSpan: this._position.row.span,\n };\n }\n\n private initState(grid: HTMLElement, tile: IgcTileComponent): void {\n const { gap, columns, rows } = parseTileParentGrid(grid);\n\n this._resizeUtil = new ResizeUtil(gap);\n this._initialPosition = parseTileGridRect(tile);\n this._position = structuredClone(this._initialPosition);\n\n this._gap = gap;\n this._columns = columns;\n this._rows = rows;\n this._prevDeltaX = 0;\n this._prevDeltaY = 0;\n this._prevSnappedWidth = 0;\n this._prevSnappedHeight = 0;\n }\n\n private calculateTileStartPosition(\n grid: HTMLElement,\n tileRect: DOMRect\n ): void {\n if (this._position.column.start < 0) {\n const offsetX = this.getGridOffset(grid, 'horizontal');\n\n this._position.column.start = this._resizeUtil.calculatePosition(\n tileRect.left + window.scrollX + grid.scrollLeft - offsetX,\n this._columns.entries\n );\n }\n\n if (this._position.row.start < 0) {\n const offsetY = this.getGridOffset(grid, 'vertical');\n\n this._position.row.start = this._resizeUtil.calculatePosition(\n tileRect.top + window.scrollY - offsetY,\n this._rows.entries\n );\n }\n }\n\n private getGridOffset(\n grid: HTMLElement,\n axis: 'horizontal' | 'vertical'\n ): number {\n const gridRect = grid.getBoundingClientRect();\n const computed = getComputedStyle(grid);\n\n return axis === 'horizontal'\n ? gridRect.left +\n window.scrollX +\n grid.scrollLeft +\n Number.parseFloat(computed.paddingLeft)\n : gridRect.top + window.scrollY + Number.parseFloat(computed.paddingTop);\n }\n\n private getResizeProps(state: ResizeState, isRow = false): ResizeProps {\n return isRow\n ? {\n currentDelta: state.deltaY,\n currentSize: state.current.height,\n prevDelta: this._prevDeltaY,\n gridEntries: this._rows.entries,\n startIndex: this._position.row.start,\n prevSnapped: this._prevSnappedHeight,\n }\n : {\n currentDelta: state.deltaX,\n currentSize: state.current.width,\n prevDelta: this._prevDeltaX,\n gridEntries: this._columns.entries,\n startIndex: this._position.column.start,\n prevSnapped: this._prevSnappedWidth,\n };\n }\n\n private getResizeSpanProps(rect: DOMRect, isRow = false): ResizeSpanProps {\n return isRow\n ? {\n targetSize: rect.height,\n tilePosition: this.position.row,\n tileGridDimension: this.rows,\n gap: this.gap,\n isRow,\n }\n : {\n targetSize: rect.width,\n tilePosition: this.position.column,\n tileGridDimension: this.columns,\n gap: this.gap,\n isRow,\n };\n }\n}\n\nexport function createTileResizeState(): TileResizeState {\n return new TileResizeState();\n}\n"]}
1
+ {"version":3,"file":"resize-state.js","sourceRoot":"","sources":["../../../src/components/tile-manager/resize-state.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ResizeState } from '#internals/directives/resize.js';\nimport { firstOf } from '#internals/utils/arrays.js';\nimport { asNumber } from '#internals/utils/math.js';\nimport {\n calculatePosition,\n calculateResizedSpan,\n calculateSnappedDimension,\n} from './resize-util.js';\nimport type IgcTileComponent from './tile.js';\nimport type { TileGridDimension, TileGridPosition } from './types.js';\n\nconst CssValues = /(?<start>\\d+)?\\s*\\/?\\s*span\\s*(?<span>\\d+)?/gi;\n\ntype ResizeAxis = 'column' | 'row';\n\ntype ResizeAxisState = {\n dimension: TileGridDimension;\n prevDelta: number;\n prevSnapped: number;\n};\n\nfunction createAxisState(\n dimension: TileGridDimension = { entries: [], minSize: 0 }\n): ResizeAxisState {\n return { dimension, prevDelta: 0, prevSnapped: 0 };\n}\n\nfunction parseTileGridRect(tile: IgcTileComponent): TileGridPosition {\n const computed = getComputedStyle(tile);\n const { gridColumn, gridRow } = computed;\n\n const [column, row] = [\n firstOf(Array.from(gridColumn.matchAll(CssValues))).groups!,\n firstOf(Array.from(gridRow.matchAll(CssValues))).groups!,\n ];\n\n return {\n column: {\n start: asNumber(column.start, -1),\n span: asNumber(column.span, -1),\n },\n row: { start: asNumber(row.start, -1), span: asNumber(row.span, -1) },\n };\n}\n\nfunction parseTileParentGrid(gridContainer: HTMLElement) {\n const computed = getComputedStyle(gridContainer);\n const { gap, gridTemplateColumns, gridTemplateRows } = computed;\n\n return {\n gap: asNumber(gap),\n columns: {\n entries: gridTemplateColumns.split(' ').map(asNumber),\n minSize: asNumber(computed.getPropertyValue('--min-col-width')),\n },\n rows: {\n entries: gridTemplateRows.split(' ').map(asNumber),\n minSize: asNumber(computed.getPropertyValue('--min-row-height')),\n },\n };\n}\n\nclass TileResizeState {\n private _gap = 0;\n\n private _position: TileGridPosition = {\n column: { start: 0, span: 0 },\n row: { start: 0, span: 0 },\n };\n\n private _axes: Record<ResizeAxis, ResizeAxisState> = {\n column: createAxisState(),\n row: createAxisState(),\n };\n\n public calculateSnappedWidth(state: ResizeState): number {\n return this._calculateSnappedSize(\n 'column',\n state.deltaX,\n state.current.width\n );\n }\n\n public calculateSnappedHeight(state: ResizeState): number {\n return this._calculateSnappedSize(\n 'row',\n state.deltaY,\n state.current.height\n );\n }\n\n public updateState(\n tileRect: DOMRect,\n tile: IgcTileComponent,\n grid: HTMLElement\n ): void {\n this._initState(grid, tile);\n this._calculateTileStartPosition(grid, tileRect);\n }\n\n /**\n * Calculates and returns the CSS column and row properties of a tile after resizing,\n * based on its new dimensions and starting position.\n */\n public calculateResizedGridPosition(rect: DOMRect) {\n const { column, row } = this._position;\n\n // REVIEW pass col minSize and allowOverflow?\n column.span = calculateResizedSpan({\n targetSize: rect.width,\n tilePosition: column,\n tileGridDimension: this._axes.column.dimension,\n gap: this._gap,\n isRow: false,\n });\n\n row.span = calculateResizedSpan({\n targetSize: rect.height,\n tilePosition: row,\n tileGridDimension: this._axes.row.dimension,\n gap: this._gap,\n isRow: true,\n });\n\n return { colSpan: column.span, rowSpan: row.span };\n }\n\n private _calculateSnappedSize(\n axis: ResizeAxis,\n currentDelta: number,\n currentSize: number\n ): number {\n const axisState = this._axes[axis];\n\n const { snappedSize, newDelta } = calculateSnappedDimension({\n currentDelta,\n currentSize,\n prevDelta: axisState.prevDelta,\n prevSnapped: axisState.prevSnapped,\n gridEntries: axisState.dimension.entries,\n startIndex: this._position[axis].start,\n gap: this._gap,\n });\n\n axisState.prevDelta = newDelta;\n axisState.prevSnapped = snappedSize;\n return snappedSize;\n }\n\n private _initState(grid: HTMLElement, tile: IgcTileComponent): void {\n const { gap, columns, rows } = parseTileParentGrid(grid);\n\n this._gap = gap;\n this._position = parseTileGridRect(tile);\n this._axes = {\n column: createAxisState(columns),\n row: createAxisState(rows),\n };\n }\n\n /**\n * Resolves the tile's implicit grid start lines from its offset inside the\n * grid container when the tile has no explicit `colStart`/`rowStart`.\n */\n private _calculateTileStartPosition(\n grid: HTMLElement,\n tileRect: DOMRect\n ): void {\n const { column, row } = this._position;\n\n if (column.start >= 0 && row.start >= 0) {\n return;\n }\n\n const gridRect = grid.getBoundingClientRect();\n const computed = getComputedStyle(grid);\n\n if (column.start < 0) {\n column.start = calculatePosition(\n tileRect.left - gridRect.left - Number.parseFloat(computed.paddingLeft),\n this._axes.column.dimension.entries,\n this._gap\n );\n }\n\n if (row.start < 0) {\n row.start = calculatePosition(\n tileRect.top - gridRect.top - Number.parseFloat(computed.paddingTop),\n this._axes.row.dimension.entries,\n this._gap\n );\n }\n }\n}\n\nexport function createTileResizeState(): TileResizeState {\n return new TileResizeState();\n}\n"]}
@@ -1,8 +1,4 @@
1
1
  import type { ResizeProps, ResizeSpanProps, SnappedDimension } from './types.js';
2
- export declare class ResizeUtil {
3
- private gap;
4
- constructor(gap: number);
5
- calculateSnappedDimension(resizeProps: ResizeProps): SnappedDimension;
6
- calculateResizedSpan(props: ResizeSpanProps): number;
7
- calculatePosition(targetPosition: number, sizes: number[]): number;
8
- }
2
+ export declare function calculateSnappedDimension(props: ResizeProps): SnappedDimension;
3
+ export declare function calculateResizedSpan(props: ResizeSpanProps): number;
4
+ export declare function calculatePosition(targetPosition: number, sizes: number[], gap: number): number;
@@ -1,84 +1,77 @@
1
- export class ResizeUtil {
2
- constructor(gap) {
3
- this.gap = gap;
1
+ export function calculateSnappedDimension(props) {
2
+ const { currentDelta, prevDelta, currentSize, gridEntries, startIndex, prevSnapped, gap, } = props;
3
+ const effectiveDelta = currentDelta - prevDelta;
4
+ let snappedSize = currentSize;
5
+ if (Math.trunc(currentSize) < gridEntries[startIndex - 1]) {
6
+ return {
7
+ snappedSize: gridEntries[startIndex - 1],
8
+ newDelta: currentDelta,
9
+ };
4
10
  }
5
- calculateSnappedDimension(resizeProps) {
6
- const { currentDelta, prevDelta, currentSize, gridEntries, startIndex, prevSnapped, } = resizeProps;
7
- const effectiveDelta = currentDelta - prevDelta;
8
- let snappedSize = currentSize;
9
- if (Math.trunc(currentSize) < gridEntries[startIndex - 1]) {
10
- return {
11
- snappedSize: gridEntries[startIndex - 1],
12
- newDelta: currentDelta,
13
- };
14
- }
15
- if (effectiveDelta === 0 && prevSnapped) {
16
- return { snappedSize: prevSnapped, newDelta: currentDelta };
17
- }
18
- let accumulated = 0;
19
- for (let i = startIndex - 1; i < gridEntries.length; i++) {
20
- const currentEntry = gridEntries[i];
21
- const nextEntry = gridEntries[i + 1] ?? currentEntry;
22
- const prevEntry = i > 0 ? gridEntries[i - 1] : currentEntry;
23
- const halfwayExpand = accumulated + currentEntry + this.gap + nextEntry / 2;
24
- const halfwayShrink = accumulated + prevEntry / 2;
25
- const entryEnd = accumulated + currentEntry + this.gap;
26
- if (effectiveDelta > 0) {
27
- if (currentSize >= halfwayExpand &&
28
- currentSize <= entryEnd + nextEntry) {
29
- snappedSize = entryEnd + nextEntry;
30
- }
11
+ if (effectiveDelta === 0 && prevSnapped) {
12
+ return { snappedSize: prevSnapped, newDelta: currentDelta };
13
+ }
14
+ let accumulated = 0;
15
+ for (let i = startIndex - 1; i < gridEntries.length; i++) {
16
+ const currentEntry = gridEntries[i];
17
+ const nextEntry = gridEntries[i + 1] ?? currentEntry;
18
+ const prevEntry = i > 0 ? gridEntries[i - 1] : currentEntry;
19
+ const halfwayExpand = accumulated + currentEntry + gap + nextEntry / 2;
20
+ const halfwayShrink = accumulated + prevEntry / 2;
21
+ const entryEnd = accumulated + currentEntry + gap;
22
+ if (effectiveDelta > 0) {
23
+ if (currentSize >= halfwayExpand && currentSize <= entryEnd + nextEntry) {
24
+ snappedSize = entryEnd + nextEntry;
31
25
  }
32
- else if (effectiveDelta < 0) {
33
- if (currentSize <= halfwayShrink &&
34
- currentSize > accumulated - this.gap) {
35
- snappedSize = accumulated - this.gap;
36
- }
26
+ }
27
+ else if (effectiveDelta < 0) {
28
+ if (currentSize <= halfwayShrink && currentSize > accumulated - gap) {
29
+ snappedSize = accumulated - gap;
37
30
  }
38
- accumulated += currentEntry + this.gap;
39
31
  }
40
- return { snappedSize, newDelta: currentDelta };
32
+ accumulated += currentEntry + gap;
41
33
  }
42
- calculateResizedSpan(props) {
43
- const { targetSize, tilePosition, tileGridDimension, gap, isRow } = props;
44
- const { entries, minSize } = tileGridDimension;
45
- let accumulatedSize = 0;
46
- let newSpan = tilePosition.span;
47
- const sizesAfterStart = entries.slice(tilePosition.start - 1);
48
- const availableSize = sizesAfterStart.reduce((sum, s) => sum + s, 0) +
49
- (sizesAfterStart.length - 1) * gap;
50
- if (targetSize <= sizesAfterStart[0] + gap) {
51
- return 1;
52
- }
53
- if (Math.trunc(targetSize) > Math.trunc(availableSize)) {
54
- const remainingSize = targetSize - availableSize;
55
- const additionalSpan = Math.ceil(remainingSize / (minSize + gap));
56
- newSpan = sizesAfterStart.length + additionalSpan;
57
- return isRow ? newSpan : Math.min(entries.length, newSpan);
34
+ return { snappedSize, newDelta: currentDelta };
35
+ }
36
+ export function calculateResizedSpan(props) {
37
+ const { targetSize, tilePosition, tileGridDimension, gap, isRow } = props;
38
+ const { entries, minSize } = tileGridDimension;
39
+ let accumulatedSize = 0;
40
+ let newSpan = tilePosition.span;
41
+ const sizesAfterStart = entries.slice(tilePosition.start - 1);
42
+ const availableSize = sizesAfterStart.reduce((sum, s) => sum + s, 0) +
43
+ (sizesAfterStart.length - 1) * gap;
44
+ if (targetSize <= sizesAfterStart[0] + gap) {
45
+ return 1;
46
+ }
47
+ if (Math.trunc(targetSize) > Math.trunc(availableSize)) {
48
+ const remainingSize = targetSize - availableSize;
49
+ const additionalSpan = Math.ceil(remainingSize / (minSize + gap));
50
+ newSpan = sizesAfterStart.length + additionalSpan;
51
+ return isRow ? newSpan : Math.min(entries.length, newSpan);
52
+ }
53
+ for (let i = tilePosition.start - 1; i < entries.length; i++) {
54
+ const currentSize = entries[i];
55
+ const nextSize = entries[i + 1] ?? currentSize;
56
+ const halfwayPoint = accumulatedSize + currentSize + gap + nextSize / 2;
57
+ if (targetSize > halfwayPoint) {
58
+ newSpan = i + 3 - tilePosition.start;
58
59
  }
59
- for (let i = tilePosition.start - 1; i < entries.length; i++) {
60
- const currentSize = entries[i];
61
- const nextSize = entries[i + 1] ?? currentSize;
62
- const halfwayPoint = accumulatedSize + currentSize + gap + nextSize / 2;
63
- if (targetSize > halfwayPoint) {
64
- newSpan = i + 3 - tilePosition.start;
65
- }
66
- else {
67
- break;
68
- }
69
- accumulatedSize += currentSize + gap;
60
+ else {
61
+ break;
70
62
  }
71
- return newSpan;
63
+ accumulatedSize += currentSize + gap;
72
64
  }
73
- calculatePosition(targetPosition, sizes) {
74
- let accumulatedSize = 0;
75
- for (const [i, size] of sizes.entries()) {
76
- accumulatedSize += size + this.gap;
77
- if (Math.trunc(targetPosition) < Math.trunc(accumulatedSize - this.gap)) {
78
- return i + 1;
79
- }
65
+ return newSpan;
66
+ }
67
+ export function calculatePosition(targetPosition, sizes, gap) {
68
+ let accumulatedSize = 0;
69
+ for (const [i, size] of sizes.entries()) {
70
+ accumulatedSize += size + gap;
71
+ if (Math.trunc(targetPosition) < Math.trunc(accumulatedSize - gap)) {
72
+ return i + 1;
80
73
  }
81
- return 1;
82
74
  }
75
+ return 1;
83
76
  }
84
77
  //# sourceMappingURL=resize-util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resize-util.js","sourceRoot":"","sources":["../../../src/components/tile-manager/resize-util.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ResizeProps,\n ResizeSpanProps,\n SnappedDimension,\n} from './types.js';\n\nexport class ResizeUtil {\n private gap: number;\n\n constructor(gap: number) {\n this.gap = gap;\n }\n\n public calculateSnappedDimension(resizeProps: ResizeProps): SnappedDimension {\n const {\n currentDelta,\n prevDelta,\n currentSize,\n gridEntries,\n startIndex,\n prevSnapped,\n } = resizeProps;\n\n const effectiveDelta = currentDelta - prevDelta;\n let snappedSize = currentSize;\n\n // If current size is below minimum, force to the size of the starting cell.\n if (Math.trunc(currentSize) < gridEntries[startIndex - 1]) {\n return {\n snappedSize: gridEntries[startIndex - 1],\n newDelta: currentDelta,\n };\n }\n\n // If no change in delta and we have a snapped value, reuse it.\n if (effectiveDelta === 0 && prevSnapped) {\n return { snappedSize: prevSnapped, newDelta: currentDelta };\n }\n\n let accumulated = 0;\n for (let i = startIndex - 1; i < gridEntries.length; i++) {\n const currentEntry = gridEntries[i];\n const nextEntry = gridEntries[i + 1] ?? currentEntry;\n const prevEntry = i > 0 ? gridEntries[i - 1] : currentEntry;\n\n // Thresholds for snapping to the next or previous tile boundary.\n const halfwayExpand =\n accumulated + currentEntry + this.gap + nextEntry / 2;\n const halfwayShrink = accumulated + prevEntry / 2;\n const entryEnd = accumulated + currentEntry + this.gap;\n\n if (effectiveDelta > 0) {\n // Expanding: snap when passing the halfway threshold.\n if (\n currentSize >= halfwayExpand &&\n currentSize <= entryEnd + nextEntry\n ) {\n snappedSize = entryEnd + nextEntry;\n }\n } else if (effectiveDelta < 0) {\n // Shrinking: snap when falling below the halfway threshold.\n if (\n currentSize <= halfwayShrink &&\n currentSize > accumulated - this.gap\n ) {\n snappedSize = accumulated - this.gap;\n }\n }\n\n accumulated += currentEntry + this.gap;\n }\n\n return { snappedSize, newDelta: currentDelta };\n }\n\n public calculateResizedSpan(props: ResizeSpanProps): number {\n const { targetSize, tilePosition, tileGridDimension, gap, isRow } = props;\n const { entries, minSize } = tileGridDimension;\n\n let accumulatedSize = 0;\n let newSpan = tilePosition.span;\n\n const sizesAfterStart = entries.slice(tilePosition.start - 1);\n const availableSize =\n sizesAfterStart.reduce((sum, s) => sum + s, 0) +\n (sizesAfterStart.length - 1) * gap;\n\n if (targetSize <= sizesAfterStart[0] + gap) {\n return 1;\n }\n\n if (Math.trunc(targetSize) > Math.trunc(availableSize)) {\n const remainingSize = targetSize - availableSize;\n\n const additionalSpan = Math.ceil(remainingSize / (minSize + gap));\n newSpan = sizesAfterStart.length + additionalSpan;\n return isRow ? newSpan : Math.min(entries.length, newSpan);\n }\n\n for (let i = tilePosition.start - 1; i < entries.length; i++) {\n const currentSize = entries[i];\n const nextSize = entries[i + 1] ?? currentSize;\n\n const halfwayPoint = accumulatedSize + currentSize + gap + nextSize / 2;\n\n if (targetSize > halfwayPoint) {\n newSpan = i + 3 - tilePosition.start;\n } else {\n break;\n }\n\n accumulatedSize += currentSize + gap;\n }\n\n return newSpan;\n }\n\n public calculatePosition(targetPosition: number, sizes: number[]): number {\n let accumulatedSize = 0;\n\n for (const [i, size] of sizes.entries()) {\n accumulatedSize += size + this.gap;\n\n if (Math.trunc(targetPosition) < Math.trunc(accumulatedSize - this.gap)) {\n return i + 1;\n }\n }\n\n return 1;\n }\n}\n"]}
1
+ {"version":3,"file":"resize-util.js","sourceRoot":"","sources":["../../../src/components/tile-manager/resize-util.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ResizeProps,\n ResizeSpanProps,\n SnappedDimension,\n} from './types.js';\n\nexport function calculateSnappedDimension(\n props: ResizeProps\n): SnappedDimension {\n const {\n currentDelta,\n prevDelta,\n currentSize,\n gridEntries,\n startIndex,\n prevSnapped,\n gap,\n } = props;\n\n const effectiveDelta = currentDelta - prevDelta;\n let snappedSize = currentSize;\n\n // If current size is below minimum, force to the size of the starting cell.\n if (Math.trunc(currentSize) < gridEntries[startIndex - 1]) {\n return {\n snappedSize: gridEntries[startIndex - 1],\n newDelta: currentDelta,\n };\n }\n\n // If no change in delta and we have a snapped value, reuse it.\n if (effectiveDelta === 0 && prevSnapped) {\n return { snappedSize: prevSnapped, newDelta: currentDelta };\n }\n\n let accumulated = 0;\n for (let i = startIndex - 1; i < gridEntries.length; i++) {\n const currentEntry = gridEntries[i];\n const nextEntry = gridEntries[i + 1] ?? currentEntry;\n const prevEntry = i > 0 ? gridEntries[i - 1] : currentEntry;\n\n // Thresholds for snapping to the next or previous tile boundary.\n const halfwayExpand = accumulated + currentEntry + gap + nextEntry / 2;\n const halfwayShrink = accumulated + prevEntry / 2;\n const entryEnd = accumulated + currentEntry + gap;\n\n if (effectiveDelta > 0) {\n // Expanding: snap when passing the halfway threshold.\n if (currentSize >= halfwayExpand && currentSize <= entryEnd + nextEntry) {\n snappedSize = entryEnd + nextEntry;\n }\n } else if (effectiveDelta < 0) {\n // Shrinking: snap when falling below the halfway threshold.\n if (currentSize <= halfwayShrink && currentSize > accumulated - gap) {\n snappedSize = accumulated - gap;\n }\n }\n\n accumulated += currentEntry + gap;\n }\n\n return { snappedSize, newDelta: currentDelta };\n}\n\nexport function calculateResizedSpan(props: ResizeSpanProps): number {\n const { targetSize, tilePosition, tileGridDimension, gap, isRow } = props;\n const { entries, minSize } = tileGridDimension;\n\n let accumulatedSize = 0;\n let newSpan = tilePosition.span;\n\n const sizesAfterStart = entries.slice(tilePosition.start - 1);\n const availableSize =\n sizesAfterStart.reduce((sum, s) => sum + s, 0) +\n (sizesAfterStart.length - 1) * gap;\n\n if (targetSize <= sizesAfterStart[0] + gap) {\n return 1;\n }\n\n if (Math.trunc(targetSize) > Math.trunc(availableSize)) {\n const remainingSize = targetSize - availableSize;\n\n const additionalSpan = Math.ceil(remainingSize / (minSize + gap));\n newSpan = sizesAfterStart.length + additionalSpan;\n return isRow ? newSpan : Math.min(entries.length, newSpan);\n }\n\n for (let i = tilePosition.start - 1; i < entries.length; i++) {\n const currentSize = entries[i];\n const nextSize = entries[i + 1] ?? currentSize;\n\n const halfwayPoint = accumulatedSize + currentSize + gap + nextSize / 2;\n\n if (targetSize > halfwayPoint) {\n newSpan = i + 3 - tilePosition.start;\n } else {\n break;\n }\n\n accumulatedSize += currentSize + gap;\n }\n\n return newSpan;\n}\n\nexport function calculatePosition(\n targetPosition: number,\n sizes: number[],\n gap: number\n): number {\n let accumulatedSize = 0;\n\n for (const [i, size] of sizes.entries()) {\n accumulatedSize += size + gap;\n\n if (Math.trunc(targetPosition) < Math.trunc(accumulatedSize - gap)) {\n return i + 1;\n }\n }\n\n return 1;\n}\n"]}
@@ -12,7 +12,7 @@ export interface SerializedTile {
12
12
  id: string | null;
13
13
  }
14
14
  declare class TileManagerSerializer {
15
- tileManager: IgcTileManagerComponent;
15
+ private readonly _tileManager;
16
16
  constructor(tileManager: IgcTileManagerComponent);
17
17
  save(): SerializedTile[];
18
18
  saveAsJSON(): string;
@@ -1,9 +1,9 @@
1
1
  class TileManagerSerializer {
2
2
  constructor(tileManager) {
3
- this.tileManager = tileManager;
3
+ this._tileManager = tileManager;
4
4
  }
5
5
  save() {
6
- return this.tileManager.tiles.map((tile) => {
6
+ return this._tileManager.tiles.map((tile) => {
7
7
  return {
8
8
  colSpan: tile.colSpan,
9
9
  colStart: tile.colStart,
@@ -23,18 +23,17 @@ class TileManagerSerializer {
23
23
  }
24
24
  load(tiles) {
25
25
  const mapped = new Map(tiles.map((tile) => [tile.id, tile]));
26
- for (const tile of this.tileManager.tiles) {
27
- if (!mapped.has(tile.id)) {
28
- continue;
29
- }
26
+ for (const tile of this._tileManager.tiles) {
30
27
  const serialized = mapped.get(tile.id);
31
- Object.assign(tile, serialized);
28
+ if (serialized) {
29
+ Object.assign(tile, serialized);
30
+ }
32
31
  }
33
32
  }
34
33
  loadFromJSON(data) {
35
- if (!data)
36
- return;
37
- this.load(JSON.parse(data));
34
+ if (data) {
35
+ this.load(JSON.parse(data));
36
+ }
38
37
  }
39
38
  }
40
39
  export function createSerializer(host) {
@@ -1 +1 @@
1
- {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../../src/components/tile-manager/serializer.ts"],"names":[],"mappings":"AAeA,MAAM,qBAAqB;IAGzB,YAAY,WAAoC;QAC9C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAEM,IAAI;QACT,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACzC,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,EAAE,EAAE,IAAI,CAAC,EAAE;aACZ,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;IAEM,IAAI,CAAC,KAAuB;QACjC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAE7D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACzB,SAAS;YACX,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC;YAExC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAEM,YAAY,CAAC,IAAY;QAC9B,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,UAAU,gBAAgB,CAAC,IAA6B;IAC5D,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC","sourcesContent":["import type IgcTileManagerComponent from './tile-manager.js';\n\nexport interface SerializedTile {\n colSpan: number;\n colStart: number | null;\n disableFullscreen: boolean;\n disableMaximize: boolean;\n disableResize: boolean;\n maximized: boolean;\n position: number;\n rowSpan: number;\n rowStart: number | null;\n id: string | null;\n}\n\nclass TileManagerSerializer {\n public tileManager: IgcTileManagerComponent;\n\n constructor(tileManager: IgcTileManagerComponent) {\n this.tileManager = tileManager;\n }\n\n public save(): SerializedTile[] {\n return this.tileManager.tiles.map((tile) => {\n return {\n colSpan: tile.colSpan,\n colStart: tile.colStart,\n disableFullscreen: tile.disableFullscreen,\n disableMaximize: tile.disableMaximize,\n disableResize: tile.disableResize,\n maximized: tile.maximized,\n position: tile.position,\n rowSpan: tile.rowSpan,\n rowStart: tile.rowStart,\n id: tile.id,\n };\n });\n }\n\n public saveAsJSON(): string {\n return JSON.stringify(this.save());\n }\n\n public load(tiles: SerializedTile[]): void {\n const mapped = new Map(tiles.map((tile) => [tile.id, tile]));\n\n for (const tile of this.tileManager.tiles) {\n if (!mapped.has(tile.id)) {\n continue;\n }\n\n const serialized = mapped.get(tile.id)!;\n\n Object.assign(tile, serialized);\n }\n }\n\n public loadFromJSON(data: string): void {\n if (!data) return;\n\n this.load(JSON.parse(data));\n }\n}\n\nexport function createSerializer(host: IgcTileManagerComponent) {\n return new TileManagerSerializer(host);\n}\n"]}
1
+ {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../../src/components/tile-manager/serializer.ts"],"names":[],"mappings":"AAeA,MAAM,qBAAqB;IAGzB,YAAY,WAAoC;QAC9C,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAClC,CAAC;IAEM,IAAI;QACT,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1C,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,EAAE,EAAE,IAAI,CAAC,EAAE;aACZ,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;IAEM,IAAI,CAAC,KAAuB;QACjC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAE7D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEvC,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAEM,YAAY,CAAC,IAAY;QAC9B,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,gBAAgB,CAAC,IAA6B;IAC5D,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC","sourcesContent":["import type IgcTileManagerComponent from './tile-manager.js';\n\nexport interface SerializedTile {\n colSpan: number;\n colStart: number | null;\n disableFullscreen: boolean;\n disableMaximize: boolean;\n disableResize: boolean;\n maximized: boolean;\n position: number;\n rowSpan: number;\n rowStart: number | null;\n id: string | null;\n}\n\nclass TileManagerSerializer {\n private readonly _tileManager: IgcTileManagerComponent;\n\n constructor(tileManager: IgcTileManagerComponent) {\n this._tileManager = tileManager;\n }\n\n public save(): SerializedTile[] {\n return this._tileManager.tiles.map((tile) => {\n return {\n colSpan: tile.colSpan,\n colStart: tile.colStart,\n disableFullscreen: tile.disableFullscreen,\n disableMaximize: tile.disableMaximize,\n disableResize: tile.disableResize,\n maximized: tile.maximized,\n position: tile.position,\n rowSpan: tile.rowSpan,\n rowStart: tile.rowStart,\n id: tile.id,\n };\n });\n }\n\n public saveAsJSON(): string {\n return JSON.stringify(this.save());\n }\n\n public load(tiles: SerializedTile[]): void {\n const mapped = new Map(tiles.map((tile) => [tile.id, tile]));\n\n for (const tile of this._tileManager.tiles) {\n const serialized = mapped.get(tile.id);\n\n if (serialized) {\n Object.assign(tile, serialized);\n }\n }\n }\n\n public loadFromJSON(data: string): void {\n if (data) {\n this.load(JSON.parse(data));\n }\n }\n}\n\nexport function createSerializer(host: IgcTileManagerComponent) {\n return new TileManagerSerializer(host);\n}\n"]}
@@ -1,3 +1,3 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `[part~=drag-over]::after,[part~=base]::after{content:"";position:absolute;pointer-events:none;inset:0;width:100%;height:100%;border-radius:inherit}:host{--component-size: var(--ig-size, var(--default-size));--_border-radius: var(--border-radius)}[part~=base]{background:var(--tile-background);border-radius:var(--_border-radius);box-shadow:var(--resting-elevation)}[part~=base]::after{border:.0625rem solid var(--border-color)}[part~=base]:not([part~=resizable]):hover::after{border:.0625rem solid var(--hover-border-color)}:host([part=resizing]),:host([part=dragging]){border-radius:var(--border-radius)}:host([part=dragging]){background:var(--placeholder-background);border:.0625rem solid var(--ghost-border)}[part~=base][part~=resizing]{opacity:.3}[part=content-container]{background:var(--content-background);color:var(--content-color)}[part=ghost]{border-radius:var(--border-radius);border:.0625rem solid var(--ghost-border);background:var(--overlay-background)}[part~=drag-over]::after{z-index:1000;border:.0625rem solid var(--ghost-border);background:var(--overlay-background)}[part=header]{background:var(--header-background);border-top-left-radius:var(--_border-radius);border-top-right-radius:var(--_border-radius)}[part=title]{color:var(--title-color)}igc-divider{--color: var(--divider-color)}igc-resize{--resize-indicator: var(--ghost-border)}igc-resize[part~=side-adorner]::part(trigger-side){background-color:rgba(0,0,0,0);right:0}igc-resize[part~=corner-adorner]::part(trigger){background-color:rgba(0,0,0,0);right:0;bottom:0}igc-resize[part~=bottom-adorner]::part(trigger-bottom){background-color:rgba(0,0,0,0);bottom:0}`;
2
+ export const styles = css `[part~=active]::after,[part~=drag-over]::after,[part~=base]::after{content:"";position:absolute;pointer-events:none;inset:0;width:100%;height:100%;border-radius:inherit}:host{--component-size: var(--ig-size, var(--default-size));--_border-radius: var(--border-radius)}[part~=base]{background:var(--tile-background);border-radius:var(--_border-radius);box-shadow:var(--resting-elevation)}[part~=base]::after{border:.0625rem solid var(--border-color)}[part~=base]:not([part~=resizable]):hover::after{border:.0625rem solid var(--hover-border-color)}:host([part=resizing]),:host([part=dragging]){border-radius:var(--border-radius)}:host([part=dragging]){background:var(--placeholder-background);border:.0625rem solid var(--ghost-border)}[part~=base][part~=resizing]{opacity:.3}[part=content-container]{background:var(--content-background);color:var(--content-color)}[part=ghost]{border-radius:var(--border-radius);border:.0625rem solid var(--ghost-border);background:var(--overlay-background)}[part~=drag-over]::after{z-index:1000;border:.0625rem solid var(--ghost-border);background:var(--overlay-background)}[part=header]{background:var(--header-background);border-top-left-radius:var(--_border-radius);border-top-right-radius:var(--_border-radius)}[part=title]{color:var(--title-color)}igc-divider{--color: var(--divider-color)}[part~=active]::after{border-radius:var(--_border-radius);border:.0625rem solid var(--ghost-border)}[part~=trigger-side],[part~=trigger],[part~=trigger-bottom]{width:var(--_size);aspect-ratio:1;border-radius:50%;z-index:11111;background-color:var(--ghost-border)}[part~=custom]{background-color:rgba(0,0,0,0)}[part~=trigger-side][part~=custom],[part~=trigger][part~=custom]{right:0}[part~=trigger][part~=custom],[part~=trigger-bottom][part~=custom]{bottom:0}`;
3
3
  //# sourceMappingURL=tile.common.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tile.common.css.js","sourceRoot":"","sources":["../../../../../../src/components/tile-manager/themes/shared/tile/tile.common.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,umDAAumD,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`[part~=drag-over]::after,[part~=base]::after{content:\"\";position:absolute;pointer-events:none;inset:0;width:100%;height:100%;border-radius:inherit}:host{--component-size: var(--ig-size, var(--default-size));--_border-radius: var(--border-radius)}[part~=base]{background:var(--tile-background);border-radius:var(--_border-radius);box-shadow:var(--resting-elevation)}[part~=base]::after{border:.0625rem solid var(--border-color)}[part~=base]:not([part~=resizable]):hover::after{border:.0625rem solid var(--hover-border-color)}:host([part=resizing]),:host([part=dragging]){border-radius:var(--border-radius)}:host([part=dragging]){background:var(--placeholder-background);border:.0625rem solid var(--ghost-border)}[part~=base][part~=resizing]{opacity:.3}[part=content-container]{background:var(--content-background);color:var(--content-color)}[part=ghost]{border-radius:var(--border-radius);border:.0625rem solid var(--ghost-border);background:var(--overlay-background)}[part~=drag-over]::after{z-index:1000;border:.0625rem solid var(--ghost-border);background:var(--overlay-background)}[part=header]{background:var(--header-background);border-top-left-radius:var(--_border-radius);border-top-right-radius:var(--_border-radius)}[part=title]{color:var(--title-color)}igc-divider{--color: var(--divider-color)}igc-resize{--resize-indicator: var(--ghost-border)}igc-resize[part~=side-adorner]::part(trigger-side){background-color:rgba(0,0,0,0);right:0}igc-resize[part~=corner-adorner]::part(trigger){background-color:rgba(0,0,0,0);right:0;bottom:0}igc-resize[part~=bottom-adorner]::part(trigger-bottom){background-color:rgba(0,0,0,0);bottom:0}`;\n "]}
1
+ {"version":3,"file":"tile.common.css.js","sourceRoot":"","sources":["../../../../../../src/components/tile-manager/themes/shared/tile/tile.common.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,2vDAA2vD,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`[part~=active]::after,[part~=drag-over]::after,[part~=base]::after{content:\"\";position:absolute;pointer-events:none;inset:0;width:100%;height:100%;border-radius:inherit}:host{--component-size: var(--ig-size, var(--default-size));--_border-radius: var(--border-radius)}[part~=base]{background:var(--tile-background);border-radius:var(--_border-radius);box-shadow:var(--resting-elevation)}[part~=base]::after{border:.0625rem solid var(--border-color)}[part~=base]:not([part~=resizable]):hover::after{border:.0625rem solid var(--hover-border-color)}:host([part=resizing]),:host([part=dragging]){border-radius:var(--border-radius)}:host([part=dragging]){background:var(--placeholder-background);border:.0625rem solid var(--ghost-border)}[part~=base][part~=resizing]{opacity:.3}[part=content-container]{background:var(--content-background);color:var(--content-color)}[part=ghost]{border-radius:var(--border-radius);border:.0625rem solid var(--ghost-border);background:var(--overlay-background)}[part~=drag-over]::after{z-index:1000;border:.0625rem solid var(--ghost-border);background:var(--overlay-background)}[part=header]{background:var(--header-background);border-top-left-radius:var(--_border-radius);border-top-right-radius:var(--_border-radius)}[part=title]{color:var(--title-color)}igc-divider{--color: var(--divider-color)}[part~=active]::after{border-radius:var(--_border-radius);border:.0625rem solid var(--ghost-border)}[part~=trigger-side],[part~=trigger],[part~=trigger-bottom]{width:var(--_size);aspect-ratio:1;border-radius:50%;z-index:11111;background-color:var(--ghost-border)}[part~=custom]{background-color:rgba(0,0,0,0)}[part~=trigger-side][part~=custom],[part~=trigger][part~=custom]{right:0}[part~=trigger][part~=custom],[part~=trigger-bottom][part~=custom]{bottom:0}`;\n "]}
@@ -1,3 +1,3 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{--pad-block: max(var(--is-large, 1) * max(0.8125rem, -1 * 0.8125rem), var(--is-medium, 1) * max(0.8125rem, -1 * 0.8125rem), var(--is-small, 1) * max(0.5rem, -1 * 0.5rem));--pad-inline: max(var(--is-large, 1) * max(1.25rem, -1 * 1.25rem), var(--is-medium, 1) * max(1rem, -1 * 1rem), var(--is-small, 1) * max(0.75rem, -1 * 0.75rem));display:block;position:relative;grid-column:var(--ig-col-start, auto)/span var(--ig-col-span, 1);grid-row:var(--ig-row-start, auto)/span var(--ig-row-span, 1)}:host([part=resizing]) igc-resize,:host([part=dragging]) igc-resize{--resize-visibility: hidden}:host([part=resizing]) igc-resize::part(active)::after,:host([part=dragging]) igc-resize::part(active)::after{border:none}[part~=tile-container]{width:100%;height:100%}[part~=base]{width:100%;height:100%;overflow:hidden}[part=content-container]{display:block;border-radius:inherit}[part=content-container] ::slotted(*){font-family:var(--ig-body-1-font-family, var(--ig-font-family));font-size:var(--ig-body-1-font-size);font-weight:var(--ig-body-1-font-weight);font-style:var(--ig-body-1-font-style);line-height:var(--ig-body-1-line-height);letter-spacing:var(--ig-body-1-letter-spacing);text-transform:var(--ig-body-1-text-transform);margin-top:var(--ig-body-1-margin-top);margin-bottom:var(--ig-body-1-margin-bottom);margin:0}:host([maximized]){position:absolute;inset:0;width:100%;height:100%;z-index:10;grid-column:unset;grid-row:unset}:host([maximized]) [part~=base]{width:100%;height:100%}[part=ghost]{position:absolute;top:0;left:0;width:100%;height:100%;transform:scale(0);z-index:10}[part=header]{display:flex;align-items:center;gap:max(var(--is-large, 1)*max(1rem, -1 * 1rem),var(--is-medium, 1)*max(1rem, -1 * 1rem),var(--is-small, 1)*max(0.75rem, -1 * 0.75rem));width:100%;padding-block:var(--pad-block);padding-inline:var(--pad-inline)}:host([disable-fullscreen][disable-maximize]) igc-divider{display:none}[part=title]{display:flex;flex-direction:column;justify-content:center;flex:1 0 0%;overflow:hidden;min-width:2ch}::slotted([slot=title]){font-family:var(--ig-h6-font-family, var(--ig-font-family));font-size:var(--ig-h6-font-size);font-weight:var(--ig-h6-font-weight);font-style:var(--ig-h6-font-style);line-height:var(--ig-h6-line-height);letter-spacing:var(--ig-h6-letter-spacing);text-transform:var(--ig-h6-text-transform);margin-top:var(--ig-h6-margin-top);margin-bottom:var(--ig-h6-margin-bottom);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:100%;min-width:2ch;margin-bottom:0;display:block}[part=actions]{display:flex;gap:.5rem;margin-inline-start:auto;flex-shrink:0}`;
2
+ export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{--pad-block: max(var(--is-large, 1) * max(0.8125rem, -1 * 0.8125rem), var(--is-medium, 1) * max(0.8125rem, -1 * 0.8125rem), var(--is-small, 1) * max(0.5rem, -1 * 0.5rem));--pad-inline: max(var(--is-large, 1) * max(1.25rem, -1 * 1.25rem), var(--is-medium, 1) * max(1rem, -1 * 1rem), var(--is-small, 1) * max(0.75rem, -1 * 0.75rem));display:block;position:relative;grid-column:var(--ig-col-start, auto)/span var(--ig-col-span, 1);grid-row:var(--ig-row-start, auto)/span var(--ig-row-span, 1)}:host([part=resizing]) [part~=trigger-side],:host([part=resizing]) [part~=trigger],:host([part=resizing]) [part~=trigger-bottom],:host([part=dragging]) [part~=trigger-side],:host([part=dragging]) [part~=trigger],:host([part=dragging]) [part~=trigger-bottom]{visibility:hidden}:host([part=resizing]) [part~=active]::after,:host([part=dragging]) [part~=active]::after{border:none}[part~=tile-container]{position:relative;width:100%;height:100%}[part~=trigger-side],[part~=trigger],[part~=trigger-bottom]{--_size: 0.6875rem;display:inline-flex;position:absolute;z-index:1}[part~=trigger-side]{top:calc(50% - var(--_size));right:calc(var(--_size)/2*-1);cursor:e-resize}[part~=trigger]{bottom:calc(var(--_size)/2*-1);right:calc(var(--_size)/2*-1);cursor:se-resize}[part~=trigger-bottom]{left:calc(50% - var(--_size));bottom:calc(var(--_size)/2*-1);cursor:s-resize}[part~=trigger]:focus{outline:none}[part~=base]{width:100%;height:100%;overflow:hidden}[part=content-container]{display:block;border-radius:inherit}[part=content-container] ::slotted(*){font-family:var(--ig-body-1-font-family, var(--ig-font-family));font-size:var(--ig-body-1-font-size);font-weight:var(--ig-body-1-font-weight);font-style:var(--ig-body-1-font-style);line-height:var(--ig-body-1-line-height);letter-spacing:var(--ig-body-1-letter-spacing);text-transform:var(--ig-body-1-text-transform);margin-top:var(--ig-body-1-margin-top);margin-bottom:var(--ig-body-1-margin-bottom);margin:0}:host([maximized]){position:absolute;inset:0;width:100%;height:100%;z-index:10;grid-column:unset;grid-row:unset}:host([maximized]) [part~=base]{width:100%;height:100%}[part=ghost]{position:absolute;top:0;left:0;width:100%;height:100%;transform:scale(0);z-index:10}[part=header]{display:flex;align-items:center;gap:max(var(--is-large, 1)*max(1rem, -1 * 1rem),var(--is-medium, 1)*max(1rem, -1 * 1rem),var(--is-small, 1)*max(0.75rem, -1 * 0.75rem));width:100%;padding-block:var(--pad-block);padding-inline:var(--pad-inline)}:host([disable-fullscreen][disable-maximize]) igc-divider{display:none}[part=title]{display:flex;flex-direction:column;justify-content:center;flex:1 0 0%;overflow:hidden;min-width:2ch}::slotted([slot=title]){font-family:var(--ig-h6-font-family, var(--ig-font-family));font-size:var(--ig-h6-font-size);font-weight:var(--ig-h6-font-weight);font-style:var(--ig-h6-font-style);line-height:var(--ig-h6-line-height);letter-spacing:var(--ig-h6-letter-spacing);text-transform:var(--ig-h6-text-transform);margin-top:var(--ig-h6-margin-top);margin-bottom:var(--ig-h6-margin-bottom);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:100%;min-width:2ch;margin-bottom:0;display:block}[part=actions]{display:flex;gap:.5rem;margin-inline-start:auto;flex-shrink:0}@media(forced-colors: active){[part~=trigger],[part~=trigger-side],[part~=trigger-bottom]{border:.0625rem solid CanvasText}[part~=trigger]:hover,[part~=trigger-side]:hover,[part~=trigger-bottom]:hover{border-color:Highlight}[part~=base]:not([part~=resizable]):hover::after{--hover-border-color: Highlight}}`;
3
3
  //# sourceMappingURL=tile.base.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tile.base.css.js","sourceRoot":"","sources":["../../../../src/components/tile-manager/themes/tile.base.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,q/GAAq/G,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{--pad-block: max(var(--is-large, 1) * max(0.8125rem, -1 * 0.8125rem), var(--is-medium, 1) * max(0.8125rem, -1 * 0.8125rem), var(--is-small, 1) * max(0.5rem, -1 * 0.5rem));--pad-inline: max(var(--is-large, 1) * max(1.25rem, -1 * 1.25rem), var(--is-medium, 1) * max(1rem, -1 * 1rem), var(--is-small, 1) * max(0.75rem, -1 * 0.75rem));display:block;position:relative;grid-column:var(--ig-col-start, auto)/span var(--ig-col-span, 1);grid-row:var(--ig-row-start, auto)/span var(--ig-row-span, 1)}:host([part=resizing]) igc-resize,:host([part=dragging]) igc-resize{--resize-visibility: hidden}:host([part=resizing]) igc-resize::part(active)::after,:host([part=dragging]) igc-resize::part(active)::after{border:none}[part~=tile-container]{width:100%;height:100%}[part~=base]{width:100%;height:100%;overflow:hidden}[part=content-container]{display:block;border-radius:inherit}[part=content-container] ::slotted(*){font-family:var(--ig-body-1-font-family, var(--ig-font-family));font-size:var(--ig-body-1-font-size);font-weight:var(--ig-body-1-font-weight);font-style:var(--ig-body-1-font-style);line-height:var(--ig-body-1-line-height);letter-spacing:var(--ig-body-1-letter-spacing);text-transform:var(--ig-body-1-text-transform);margin-top:var(--ig-body-1-margin-top);margin-bottom:var(--ig-body-1-margin-bottom);margin:0}:host([maximized]){position:absolute;inset:0;width:100%;height:100%;z-index:10;grid-column:unset;grid-row:unset}:host([maximized]) [part~=base]{width:100%;height:100%}[part=ghost]{position:absolute;top:0;left:0;width:100%;height:100%;transform:scale(0);z-index:10}[part=header]{display:flex;align-items:center;gap:max(var(--is-large, 1)*max(1rem, -1 * 1rem),var(--is-medium, 1)*max(1rem, -1 * 1rem),var(--is-small, 1)*max(0.75rem, -1 * 0.75rem));width:100%;padding-block:var(--pad-block);padding-inline:var(--pad-inline)}:host([disable-fullscreen][disable-maximize]) igc-divider{display:none}[part=title]{display:flex;flex-direction:column;justify-content:center;flex:1 0 0%;overflow:hidden;min-width:2ch}::slotted([slot=title]){font-family:var(--ig-h6-font-family, var(--ig-font-family));font-size:var(--ig-h6-font-size);font-weight:var(--ig-h6-font-weight);font-style:var(--ig-h6-font-style);line-height:var(--ig-h6-line-height);letter-spacing:var(--ig-h6-letter-spacing);text-transform:var(--ig-h6-text-transform);margin-top:var(--ig-h6-margin-top);margin-bottom:var(--ig-h6-margin-bottom);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:100%;min-width:2ch;margin-bottom:0;display:block}[part=actions]{display:flex;gap:.5rem;margin-inline-start:auto;flex-shrink:0}`;\n "]}
1
+ {"version":3,"file":"tile.base.css.js","sourceRoot":"","sources":["../../../../src/components/tile-manager/themes/tile.base.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,65IAA65I,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{--pad-block: max(var(--is-large, 1) * max(0.8125rem, -1 * 0.8125rem), var(--is-medium, 1) * max(0.8125rem, -1 * 0.8125rem), var(--is-small, 1) * max(0.5rem, -1 * 0.5rem));--pad-inline: max(var(--is-large, 1) * max(1.25rem, -1 * 1.25rem), var(--is-medium, 1) * max(1rem, -1 * 1rem), var(--is-small, 1) * max(0.75rem, -1 * 0.75rem));display:block;position:relative;grid-column:var(--ig-col-start, auto)/span var(--ig-col-span, 1);grid-row:var(--ig-row-start, auto)/span var(--ig-row-span, 1)}:host([part=resizing]) [part~=trigger-side],:host([part=resizing]) [part~=trigger],:host([part=resizing]) [part~=trigger-bottom],:host([part=dragging]) [part~=trigger-side],:host([part=dragging]) [part~=trigger],:host([part=dragging]) [part~=trigger-bottom]{visibility:hidden}:host([part=resizing]) [part~=active]::after,:host([part=dragging]) [part~=active]::after{border:none}[part~=tile-container]{position:relative;width:100%;height:100%}[part~=trigger-side],[part~=trigger],[part~=trigger-bottom]{--_size: 0.6875rem;display:inline-flex;position:absolute;z-index:1}[part~=trigger-side]{top:calc(50% - var(--_size));right:calc(var(--_size)/2*-1);cursor:e-resize}[part~=trigger]{bottom:calc(var(--_size)/2*-1);right:calc(var(--_size)/2*-1);cursor:se-resize}[part~=trigger-bottom]{left:calc(50% - var(--_size));bottom:calc(var(--_size)/2*-1);cursor:s-resize}[part~=trigger]:focus{outline:none}[part~=base]{width:100%;height:100%;overflow:hidden}[part=content-container]{display:block;border-radius:inherit}[part=content-container] ::slotted(*){font-family:var(--ig-body-1-font-family, var(--ig-font-family));font-size:var(--ig-body-1-font-size);font-weight:var(--ig-body-1-font-weight);font-style:var(--ig-body-1-font-style);line-height:var(--ig-body-1-line-height);letter-spacing:var(--ig-body-1-letter-spacing);text-transform:var(--ig-body-1-text-transform);margin-top:var(--ig-body-1-margin-top);margin-bottom:var(--ig-body-1-margin-bottom);margin:0}:host([maximized]){position:absolute;inset:0;width:100%;height:100%;z-index:10;grid-column:unset;grid-row:unset}:host([maximized]) [part~=base]{width:100%;height:100%}[part=ghost]{position:absolute;top:0;left:0;width:100%;height:100%;transform:scale(0);z-index:10}[part=header]{display:flex;align-items:center;gap:max(var(--is-large, 1)*max(1rem, -1 * 1rem),var(--is-medium, 1)*max(1rem, -1 * 1rem),var(--is-small, 1)*max(0.75rem, -1 * 0.75rem));width:100%;padding-block:var(--pad-block);padding-inline:var(--pad-inline)}:host([disable-fullscreen][disable-maximize]) igc-divider{display:none}[part=title]{display:flex;flex-direction:column;justify-content:center;flex:1 0 0%;overflow:hidden;min-width:2ch}::slotted([slot=title]){font-family:var(--ig-h6-font-family, var(--ig-font-family));font-size:var(--ig-h6-font-size);font-weight:var(--ig-h6-font-weight);font-style:var(--ig-h6-font-style);line-height:var(--ig-h6-line-height);letter-spacing:var(--ig-h6-letter-spacing);text-transform:var(--ig-h6-text-transform);margin-top:var(--ig-h6-margin-top);margin-bottom:var(--ig-h6-margin-bottom);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:100%;min-width:2ch;margin-bottom:0;display:block}[part=actions]{display:flex;gap:.5rem;margin-inline-start:auto;flex-shrink:0}@media(forced-colors: active){[part~=trigger],[part~=trigger-side],[part~=trigger-bottom]{border:.0625rem solid CanvasText}[part~=trigger]:hover,[part~=trigger-side]:hover,[part~=trigger-bottom]:hover{border-color:Highlight}[part~=base]:not([part~=resizable]):hover::after{--hover-border-color: Highlight}}`;\n "]}
@@ -1,27 +1,31 @@
1
1
  import { isLTR } from '#internals/utils/dom.js';
2
+ function getBaseGhostStyles(tile, computed, background, borderColor) {
3
+ const { width, height } = tile.getBoundingClientRect();
4
+ return {
5
+ position: 'absolute',
6
+ contain: 'strict',
7
+ zIndex: 1000,
8
+ width: `${width}px`,
9
+ height: `${height}px`,
10
+ background: computed.getPropertyValue(background),
11
+ border: `1px solid ${computed.getPropertyValue(borderColor)}`,
12
+ borderRadius: computed.getPropertyValue('--border-radius'),
13
+ };
14
+ }
2
15
  export function createTileDragGhost(tile) {
3
16
  const clone = tile.cloneNode(true);
4
17
  const computed = getComputedStyle(tile);
5
- const { width, height } = tile.getBoundingClientRect();
6
18
  Object.assign(clone, {
7
19
  id: null,
8
20
  inert: true,
9
21
  position: -1,
10
22
  });
11
- Object.assign(clone.style, {
23
+ Object.assign(clone.style, getBaseGhostStyles(tile, computed, '--tile-background', '--hover-border-color'), {
12
24
  direction: isLTR(tile) ? 'ltr' : 'rtl',
13
- position: 'absolute',
14
- contain: 'strict',
15
25
  top: 0,
16
26
  left: 0,
17
- width: `${width}px`,
18
- height: `${height}px`,
19
27
  opacity: 0.6,
20
- background: computed.getPropertyValue('--tile-background'),
21
- border: `1px solid ${computed.getPropertyValue('--hover-border-color')}`,
22
- borderRadius: computed.getPropertyValue('--border-radius'),
23
28
  boxShadow: computed.getPropertyValue('--drag-elevation'),
24
- zIndex: 1000,
25
29
  viewTransitionName: 'dragged-tile-ghost',
26
30
  });
27
31
  return clone;
@@ -29,20 +33,12 @@ export function createTileDragGhost(tile) {
29
33
  export function createTileGhost(tile) {
30
34
  const element = document.createElement('div');
31
35
  const computed = getComputedStyle(tile);
32
- const { x, y, width, height } = tile.getBoundingClientRect();
36
+ const { x, y } = tile.getBoundingClientRect();
33
37
  const { scrollX, scrollY } = window;
34
- Object.assign(element.style, {
38
+ Object.assign(element.style, getBaseGhostStyles(tile, computed, '--placeholder-background', '--ghost-border'), {
35
39
  boxSizing: 'border-box',
36
- position: 'absolute',
37
- contain: 'strict',
38
40
  top: `${y + scrollY}px`,
39
41
  left: `${x + scrollX}px`,
40
- zIndex: 1000,
41
- background: computed.getPropertyValue('--placeholder-background'),
42
- border: `1px solid ${computed.getPropertyValue('--ghost-border')}`,
43
- borderRadius: computed.getPropertyValue('--border-radius'),
44
- width: `${width}px`,
45
- height: `${height}px`,
46
42
  });
47
43
  return element;
48
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tile-ghost-util.js","sourceRoot":"","sources":["../../../src/components/tile-manager/tile-ghost-util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAGhD,MAAM,UAAU,mBAAmB,CAAC,IAAsB;IACxD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAqB,CAAC;IACvD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAExC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAEvD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;QACnB,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,CAAC,CAAC;KACb,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;QACzB,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;QACtC,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,GAAG,KAAK,IAAI;QACnB,MAAM,EAAE,GAAG,MAAM,IAAI;QACrB,OAAO,EAAE,GAAG;QACZ,UAAU,EAAE,QAAQ,CAAC,gBAAgB,CAAC,mBAAmB,CAAC;QAC1D,MAAM,EAAE,aAAa,QAAQ,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,EAAE;QACxE,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;QAC1D,SAAS,EAAE,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;QACxD,MAAM,EAAE,IAAI;QACZ,kBAAkB,EAAE,oBAAoB;KACzC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAsB;IACpD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC7D,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEpC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;QAC3B,SAAS,EAAE,YAAY;QACvB,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO,IAAI;QACvB,IAAI,EAAE,GAAG,CAAC,GAAG,OAAO,IAAI;QACxB,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,QAAQ,CAAC,gBAAgB,CAAC,0BAA0B,CAAC;QACjE,MAAM,EAAE,aAAa,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE;QAClE,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;QAC1D,KAAK,EAAE,GAAG,KAAK,IAAI;QACnB,MAAM,EAAE,GAAG,MAAM,IAAI;KACtB,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import { isLTR } from '#internals/utils/dom.js';\nimport type IgcTileComponent from './tile.js';\n\nexport function createTileDragGhost(tile: IgcTileComponent): IgcTileComponent {\n const clone = tile.cloneNode(true) as IgcTileComponent;\n const computed = getComputedStyle(tile);\n\n const { width, height } = tile.getBoundingClientRect();\n\n Object.assign(clone, {\n id: null,\n inert: true,\n position: -1,\n });\n\n Object.assign(clone.style, {\n direction: isLTR(tile) ? 'ltr' : 'rtl',\n position: 'absolute',\n contain: 'strict',\n top: 0,\n left: 0,\n width: `${width}px`,\n height: `${height}px`,\n opacity: 0.6,\n background: computed.getPropertyValue('--tile-background'),\n border: `1px solid ${computed.getPropertyValue('--hover-border-color')}`,\n borderRadius: computed.getPropertyValue('--border-radius'),\n boxShadow: computed.getPropertyValue('--drag-elevation'),\n zIndex: 1000,\n viewTransitionName: 'dragged-tile-ghost',\n });\n\n return clone;\n}\n\nexport function createTileGhost(tile: IgcTileComponent): HTMLElement {\n const element = document.createElement('div');\n const computed = getComputedStyle(tile);\n const { x, y, width, height } = tile.getBoundingClientRect();\n const { scrollX, scrollY } = window;\n\n Object.assign(element.style, {\n boxSizing: 'border-box',\n position: 'absolute',\n contain: 'strict',\n top: `${y + scrollY}px`,\n left: `${x + scrollX}px`,\n zIndex: 1000,\n background: computed.getPropertyValue('--placeholder-background'),\n border: `1px solid ${computed.getPropertyValue('--ghost-border')}`,\n borderRadius: computed.getPropertyValue('--border-radius'),\n width: `${width}px`,\n height: `${height}px`,\n });\n\n return element;\n}\n"]}
1
+ {"version":3,"file":"tile-ghost-util.js","sourceRoot":"","sources":["../../../src/components/tile-manager/tile-ghost-util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAIhD,SAAS,kBAAkB,CACzB,IAAsB,EACtB,QAA6B,EAC7B,UAAkB,EAClB,WAAmB;IAEnB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAEvD,OAAO;QACL,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,GAAG,KAAK,IAAI;QACnB,MAAM,EAAE,GAAG,MAAM,IAAI;QACrB,UAAU,EAAE,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC;QACjD,MAAM,EAAE,aAAa,QAAQ,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE;QAC7D,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;KAC3D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAsB;IACxD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAqB,CAAC;IACvD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAExC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;QACnB,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,CAAC,CAAC;KACb,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CACX,KAAK,CAAC,KAAK,EACX,kBAAkB,CAChB,IAAI,EACJ,QAAQ,EACR,mBAAmB,EACnB,sBAAsB,CACvB,EACD;QACE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;QACtC,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,GAAG;QACZ,SAAS,EAAE,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;QACxD,kBAAkB,EAAE,oBAAoB;KACzC,CACF,CAAC;IAEF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAsB;IACpD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC9C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEpC,MAAM,CAAC,MAAM,CACX,OAAO,CAAC,KAAK,EACb,kBAAkB,CAChB,IAAI,EACJ,QAAQ,EACR,0BAA0B,EAC1B,gBAAgB,CACjB,EACD;QACE,SAAS,EAAE,YAAY;QACvB,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO,IAAI;QACvB,IAAI,EAAE,GAAG,CAAC,GAAG,OAAO,IAAI;KACzB,CACF,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import { isLTR } from '#internals/utils/dom.js';\nimport type IgcTileComponent from './tile.js';\n\n/** Ghost styling shared between the drag and resize ghosts, themed from the tile's CSS variables. */\nfunction getBaseGhostStyles(\n tile: IgcTileComponent,\n computed: CSSStyleDeclaration,\n background: string,\n borderColor: string\n) {\n const { width, height } = tile.getBoundingClientRect();\n\n return {\n position: 'absolute',\n contain: 'strict',\n zIndex: 1000,\n width: `${width}px`,\n height: `${height}px`,\n background: computed.getPropertyValue(background),\n border: `1px solid ${computed.getPropertyValue(borderColor)}`,\n borderRadius: computed.getPropertyValue('--border-radius'),\n };\n}\n\nexport function createTileDragGhost(tile: IgcTileComponent): IgcTileComponent {\n const clone = tile.cloneNode(true) as IgcTileComponent;\n const computed = getComputedStyle(tile);\n\n Object.assign(clone, {\n id: null,\n inert: true,\n position: -1,\n });\n\n Object.assign(\n clone.style,\n getBaseGhostStyles(\n tile,\n computed,\n '--tile-background',\n '--hover-border-color'\n ),\n {\n direction: isLTR(tile) ? 'ltr' : 'rtl',\n top: 0,\n left: 0,\n opacity: 0.6,\n boxShadow: computed.getPropertyValue('--drag-elevation'),\n viewTransitionName: 'dragged-tile-ghost',\n }\n );\n\n return clone;\n}\n\nexport function createTileGhost(tile: IgcTileComponent): HTMLElement {\n const element = document.createElement('div');\n const computed = getComputedStyle(tile);\n const { x, y } = tile.getBoundingClientRect();\n const { scrollX, scrollY } = window;\n\n Object.assign(\n element.style,\n getBaseGhostStyles(\n tile,\n computed,\n '--placeholder-background',\n '--ghost-border'\n ),\n {\n boxSizing: 'border-box',\n top: `${y + scrollY}px`,\n left: `${x + scrollX}px`,\n }\n );\n\n return element;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { LitElement } from 'lit';
1
+ import { LitElement, type PropertyValues } from 'lit';
2
2
  import type { TileManagerDragMode, TileManagerResizeMode } from '../types.js';
3
3
  import IgcTileComponent from './tile.js';
4
4
  /**
@@ -21,6 +21,8 @@ export default class IgcTileManagerComponent extends LitElement {
21
21
  static styles: import("lit").CSSResult[];
22
22
  static register(): void;
23
23
  private _internalStyles;
24
+ /** Whether any of the tiles is currently in a maximized state. */
25
+ private _hasMaximizedTile;
24
26
  /** Shared config for the properties that project into a grid CSS variable. */
25
27
  private static _styleVariable;
26
28
  private _serializer;
@@ -72,8 +74,9 @@ export default class IgcTileManagerComponent extends LitElement {
72
74
  */
73
75
  get tiles(): IgcTileComponent[];
74
76
  constructor();
75
- protected updated(): void;
77
+ protected updated(changed: PropertyValues<this>): void;
76
78
  protected firstUpdated(): void;
79
+ private _updateMaximizedTile;
77
80
  private _observerCallback;
78
81
  /**
79
82
  * Locks/unlocks the grid container height in response to a tile's maximized state changing.