geoiq-frontend-ui-kit 2.0.2 → 2.0.3

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 (474) hide show
  1. package/dist/components/atoms/accordion/accordion.d.ts +2 -1
  2. package/dist/components/atoms/accordion/accordion.d.ts.map +1 -1
  3. package/dist/components/atoms/avatar/avatar.d.ts +2 -1
  4. package/dist/components/atoms/avatar/avatar.d.ts.map +1 -1
  5. package/dist/components/atoms/badge/badge.d.ts +2 -2
  6. package/dist/components/atoms/badge/badge.d.ts.map +1 -1
  7. package/dist/components/atoms/skeleton/skeleton.d.ts +1 -1
  8. package/dist/components/atoms/skeleton/skeleton.d.ts.map +1 -1
  9. package/dist/components/atoms/tooltip/tooltip.d.ts +2 -2
  10. package/dist/components/atoms/tooltip/tooltip.d.ts.map +1 -1
  11. package/dist/components/molecules/breadcrumb/breadcrumb-components.d.ts +2 -2
  12. package/dist/components/molecules/breadcrumb/breadcrumb.d.ts +2 -1
  13. package/dist/components/molecules/breadcrumb/breadcrumb.d.ts.map +1 -1
  14. package/dist/components/molecules/creatable-multi-combobox/creatable-multi-combobox.d.ts +2 -1
  15. package/dist/components/molecules/creatable-multi-combobox/creatable-multi-combobox.d.ts.map +1 -1
  16. package/dist/components/molecules/dropdown-menu/dropdown-menu-components.d.ts +1 -1
  17. package/dist/components/molecules/dropdown-menu/dropdown-menu.d.ts +2 -1
  18. package/dist/components/molecules/dropdown-menu/dropdown-menu.d.ts.map +1 -1
  19. package/dist/components/molecules/multi-combobox/index.d.ts +2 -2
  20. package/dist/components/molecules/multi-combobox/index.d.ts.map +1 -1
  21. package/dist/components/molecules/multi-select/index.d.ts +2 -2
  22. package/dist/components/molecules/multi-select/index.d.ts.map +1 -1
  23. package/dist/components/molecules/pagination/pagination-components.d.ts +4 -4
  24. package/dist/components/molecules/single-combobox/single-combobox.d.ts +2 -2
  25. package/dist/components/molecules/single-combobox/single-combobox.d.ts.map +1 -1
  26. package/dist/components/molecules/stepper/stepper-components.d.ts +1 -1
  27. package/dist/components/molecules/stepper/stepper-components.d.ts.map +1 -1
  28. package/dist/components/molecules/stepper/stepper.d.ts +2 -1
  29. package/dist/components/molecules/stepper/stepper.d.ts.map +1 -1
  30. package/dist/components/molecules/stepper/stepper.mock.d.ts +2 -2
  31. package/dist/components/molecules/stepper/stepper.mock.d.ts.map +1 -1
  32. package/dist/components/molecules/swatch-grid/swatch-grid.d.ts +2 -1
  33. package/dist/components/molecules/swatch-grid/swatch-grid.d.ts.map +1 -1
  34. package/dist/components/molecules/toast/assets/svgs/danger-icon.d.ts +3 -1
  35. package/dist/components/molecules/toast/assets/svgs/danger-icon.d.ts.map +1 -1
  36. package/dist/components/molecules/toast/assets/svgs/info-icon.d.ts +3 -1
  37. package/dist/components/molecules/toast/assets/svgs/info-icon.d.ts.map +1 -1
  38. package/dist/components/molecules/toast/assets/svgs/success-icon.d.ts +3 -1
  39. package/dist/components/molecules/toast/assets/svgs/success-icon.d.ts.map +1 -1
  40. package/dist/components/molecules/toast/assets/svgs/warning-icon.d.ts +3 -1
  41. package/dist/components/molecules/toast/assets/svgs/warning-icon.d.ts.map +1 -1
  42. package/dist/components/molecules/toast/toast-components.d.ts +1 -1
  43. package/dist/components/molecules/toast/toast.d.ts +2 -1
  44. package/dist/components/molecules/toast/toast.d.ts.map +1 -1
  45. package/dist/components/molecules/toggle-multi-select/index.d.ts +2 -2
  46. package/dist/components/molecules/toggle-multi-select/index.d.ts.map +1 -1
  47. package/dist/components/organisms/alert-dialog/alert-dialog-components.d.ts +2 -2
  48. package/dist/components/organisms/alert-dialog/alert-dialog.d.ts +2 -1
  49. package/dist/components/organisms/alert-dialog/alert-dialog.d.ts.map +1 -1
  50. package/dist/components/organisms/dialog/dialog-components.d.ts +2 -2
  51. package/dist/components/organisms/dialog/dialog.d.ts +2 -1
  52. package/dist/components/organisms/dialog/dialog.d.ts.map +1 -1
  53. package/dist/components/organisms/image-editor/components/color-picker.d.ts +3 -1
  54. package/dist/components/organisms/image-editor/components/color-picker.d.ts.map +1 -1
  55. package/dist/components/organisms/image-editor/components/layers-list.d.ts +2 -1
  56. package/dist/components/organisms/image-editor/components/layers-list.d.ts.map +1 -1
  57. package/dist/components/organisms/image-editor/components/panel-adjust.d.ts +2 -1
  58. package/dist/components/organisms/image-editor/components/panel-adjust.d.ts.map +1 -1
  59. package/dist/components/organisms/image-editor/components/panel-crop.d.ts +2 -1
  60. package/dist/components/organisms/image-editor/components/panel-crop.d.ts.map +1 -1
  61. package/dist/components/organisms/image-editor/components/panel-insert.d.ts +2 -1
  62. package/dist/components/organisms/image-editor/components/panel-insert.d.ts.map +1 -1
  63. package/dist/components/organisms/image-editor/components/panel-selected.d.ts +2 -1
  64. package/dist/components/organisms/image-editor/components/panel-selected.d.ts.map +1 -1
  65. package/dist/components/organisms/image-editor/components/panel.d.ts +2 -1
  66. package/dist/components/organisms/image-editor/components/panel.d.ts.map +1 -1
  67. package/dist/components/organisms/image-editor/components/ribbon.d.ts +2 -1
  68. package/dist/components/organisms/image-editor/components/ribbon.d.ts.map +1 -1
  69. package/dist/components/organisms/image-editor/components/status-bar.d.ts +2 -1
  70. package/dist/components/organisms/image-editor/components/status-bar.d.ts.map +1 -1
  71. package/dist/components/organisms/image-editor/image-editor-modal.d.ts +2 -1
  72. package/dist/components/organisms/image-editor/image-editor-modal.d.ts.map +1 -1
  73. package/dist/components/organisms/sheet/sheet-components.d.ts +2 -2
  74. package/dist/components/organisms/sheet/sheet.d.ts +2 -1
  75. package/dist/components/organisms/sheet/sheet.d.ts.map +1 -1
  76. package/dist/components/organisms/sidebar/sidebar.d.ts +2 -1
  77. package/dist/components/organisms/sidebar/sidebar.d.ts.map +1 -1
  78. package/dist/components/ui/agent-snippet-view/agent-snippet-view.d.ts +1 -1
  79. package/dist/components/ui/agent-snippet-view/agent-snippet-view.d.ts.map +1 -1
  80. package/dist/components/ui/map-marker-hover-card/components/map-cluster-hover-card.d.ts +2 -1
  81. package/dist/components/ui/map-marker-hover-card/components/map-cluster-hover-card.d.ts.map +1 -1
  82. package/dist/components/ui/map-marker-hover-card/components/map-point-hover-card.d.ts +2 -1
  83. package/dist/components/ui/map-marker-hover-card/components/map-point-hover-card.d.ts.map +1 -1
  84. package/dist/components/ui/map-marker-hover-card/map-marker-hover-card.d.ts +2 -1
  85. package/dist/components/ui/map-marker-hover-card/map-marker-hover-card.d.ts.map +1 -1
  86. package/dist/components/ui/request-credits-view/component/request-credit-dialog.d.ts.map +1 -1
  87. package/dist/components/ui/star-score/star-score.d.ts +2 -1
  88. package/dist/components/ui/star-score/star-score.d.ts.map +1 -1
  89. package/dist/components/unstyled/calendar/calendar.d.ts +1 -1
  90. package/dist/components/unstyled/calendar/calendar.d.ts.map +1 -1
  91. package/dist/components/unstyled/command/index.d.ts +2 -2
  92. package/dist/components/unstyled/command/index.d.ts.map +1 -1
  93. package/dist/components/unstyled/date-picker/date-picker.d.ts +2 -2
  94. package/dist/components/unstyled/date-picker/date-picker.d.ts.map +1 -1
  95. package/dist/components/unstyled/hover-card/hover-card.d.ts +2 -1
  96. package/dist/components/unstyled/hover-card/hover-card.d.ts.map +1 -1
  97. package/dist/components/unstyled/popover/popover.d.ts +2 -1
  98. package/dist/components/unstyled/popover/popover.d.ts.map +1 -1
  99. package/dist/components/unstyled/table/table.d.ts +2 -2
  100. package/dist/components/unstyled/table/table.d.ts.map +1 -1
  101. package/dist/index.es.js +88 -88
  102. package/dist/{index.es10.js → index10.es.js} +3 -3
  103. package/dist/{index.es10.js.map → index10.es.js.map} +1 -1
  104. package/dist/{index.es102.js → index100.es.js} +1 -1
  105. package/dist/{index.es102.js.map → index100.es.js.map} +1 -1
  106. package/dist/{index.es126.js → index101.es.js} +1 -1
  107. package/dist/{index.es126.js.map → index101.es.js.map} +1 -1
  108. package/dist/{index.es99.js → index102.es.js} +2 -2
  109. package/dist/index102.es.js.map +1 -0
  110. package/dist/{index.es100.js → index103.es.js} +2 -2
  111. package/dist/{index.es100.js.map → index103.es.js.map} +1 -1
  112. package/dist/{index.es101.js → index104.es.js} +1 -1
  113. package/dist/{index.es101.js.map → index104.es.js.map} +1 -1
  114. package/dist/{index.es104.js → index105.es.js} +1 -1
  115. package/dist/{index.es104.js.map → index105.es.js.map} +1 -1
  116. package/dist/{index.es119.js → index106.es.js} +1 -1
  117. package/dist/{index.es119.js.map → index106.es.js.map} +1 -1
  118. package/dist/{index.es112.js → index107.es.js} +5 -5
  119. package/dist/{index.es112.js.map → index107.es.js.map} +1 -1
  120. package/dist/{index.es103.js → index108.es.js} +1 -1
  121. package/dist/{index.es103.js.map → index108.es.js.map} +1 -1
  122. package/dist/{index.es136.js → index109.es.js} +1 -1
  123. package/dist/{index.es136.js.map → index109.es.js.map} +1 -1
  124. package/dist/{index.es11.js → index11.es.js} +4 -4
  125. package/dist/{index.es11.js.map → index11.es.js.map} +1 -1
  126. package/dist/{index.es127.js → index110.es.js} +4 -4
  127. package/dist/{index.es127.js.map → index110.es.js.map} +1 -1
  128. package/dist/{index.es128.js → index111.es.js} +4 -4
  129. package/dist/{index.es128.js.map → index111.es.js.map} +1 -1
  130. package/dist/{index.es129.js → index112.es.js} +5 -5
  131. package/dist/{index.es129.js.map → index112.es.js.map} +1 -1
  132. package/dist/{index.es130.js → index113.es.js} +2 -2
  133. package/dist/{index.es130.js.map → index113.es.js.map} +1 -1
  134. package/dist/{index.es131.js → index114.es.js} +3 -3
  135. package/dist/{index.es131.js.map → index114.es.js.map} +1 -1
  136. package/dist/{index.es123.js → index115.es.js} +2 -2
  137. package/dist/{index.es123.js.map → index115.es.js.map} +1 -1
  138. package/dist/{index.es124.js → index116.es.js} +6 -6
  139. package/dist/{index.es124.js.map → index116.es.js.map} +1 -1
  140. package/dist/{index.es115.js → index117.es.js} +1 -1
  141. package/dist/{index.es115.js.map → index117.es.js.map} +1 -1
  142. package/dist/{index.es116.js → index118.es.js} +7 -7
  143. package/dist/{index.es116.js.map → index118.es.js.map} +1 -1
  144. package/dist/{index.es117.js → index119.es.js} +1 -1
  145. package/dist/{index.es117.js.map → index119.es.js.map} +1 -1
  146. package/dist/{index.es12.js → index12.es.js} +3 -3
  147. package/dist/{index.es12.js.map → index12.es.js.map} +1 -1
  148. package/dist/{index.es118.js → index120.es.js} +13 -13
  149. package/dist/{index.es118.js.map → index120.es.js.map} +1 -1
  150. package/dist/{index.es105.js → index121.es.js} +4 -4
  151. package/dist/{index.es105.js.map → index121.es.js.map} +1 -1
  152. package/dist/{index.es106.js → index122.es.js} +3 -3
  153. package/dist/{index.es106.js.map → index122.es.js.map} +1 -1
  154. package/dist/{index.es107.js → index123.es.js} +3 -3
  155. package/dist/{index.es107.js.map → index123.es.js.map} +1 -1
  156. package/dist/{index.es108.js → index124.es.js} +3 -3
  157. package/dist/{index.es108.js.map → index124.es.js.map} +1 -1
  158. package/dist/{index.es109.js → index125.es.js} +10 -10
  159. package/dist/{index.es109.js.map → index125.es.js.map} +1 -1
  160. package/dist/{index.es110.js → index126.es.js} +10 -10
  161. package/dist/{index.es110.js.map → index126.es.js.map} +1 -1
  162. package/dist/{index.es111.js → index127.es.js} +5 -5
  163. package/dist/{index.es111.js.map → index127.es.js.map} +1 -1
  164. package/dist/{index.es113.js → index128.es.js} +1 -1
  165. package/dist/{index.es113.js.map → index128.es.js.map} +1 -1
  166. package/dist/{index.es114.js → index129.es.js} +5 -5
  167. package/dist/{index.es114.js.map → index129.es.js.map} +1 -1
  168. package/dist/{index.es13.js → index13.es.js} +3 -3
  169. package/dist/{index.es13.js.map → index13.es.js.map} +1 -1
  170. package/dist/{index.es135.js → index130.es.js} +3 -3
  171. package/dist/{index.es135.js.map → index130.es.js.map} +1 -1
  172. package/dist/{index.es98.js → index131.es.js} +5 -5
  173. package/dist/index131.es.js.map +1 -0
  174. package/dist/{index.es132.js → index132.es.js} +3 -3
  175. package/dist/{index.es132.js.map → index132.es.js.map} +1 -1
  176. package/dist/{index.es120.js → index133.es.js} +1 -1
  177. package/dist/{index.es120.js.map → index133.es.js.map} +1 -1
  178. package/dist/{index.es134.js → index134.es.js} +1 -1
  179. package/dist/{index.es134.js.map → index134.es.js.map} +1 -1
  180. package/dist/{index.es125.js → index135.es.js} +3 -3
  181. package/dist/{index.es125.js.map → index135.es.js.map} +1 -1
  182. package/dist/{index.es97.js → index136.es.js} +1 -1
  183. package/dist/index136.es.js.map +1 -0
  184. package/dist/{index.es139.js → index137.es.js} +2 -2
  185. package/dist/{index.es139.js.map → index137.es.js.map} +1 -1
  186. package/dist/{index.es156.js → index138.es.js} +1 -1
  187. package/dist/{index.es156.js.map → index138.es.js.map} +1 -1
  188. package/dist/{index.es158.js → index139.es.js} +3 -3
  189. package/dist/{index.es158.js.map → index139.es.js.map} +1 -1
  190. package/dist/{index.es14.js → index14.es.js} +2 -2
  191. package/dist/{index.es14.js.map → index14.es.js.map} +1 -1
  192. package/dist/{index.es159.js → index140.es.js} +1 -1
  193. package/dist/{index.es159.js.map → index140.es.js.map} +1 -1
  194. package/dist/{index.es160.js → index141.es.js} +1 -1
  195. package/dist/{index.es160.js.map → index141.es.js.map} +1 -1
  196. package/dist/{index.es161.js → index142.es.js} +1 -1
  197. package/dist/{index.es161.js.map → index142.es.js.map} +1 -1
  198. package/dist/{index.es140.js → index143.es.js} +1 -1
  199. package/dist/{index.es140.js.map → index143.es.js.map} +1 -1
  200. package/dist/{index.es141.js → index144.es.js} +6 -6
  201. package/dist/{index.es141.js.map → index144.es.js.map} +1 -1
  202. package/dist/{index.es142.js → index145.es.js} +3 -3
  203. package/dist/{index.es142.js.map → index145.es.js.map} +1 -1
  204. package/dist/{index.es143.js → index146.es.js} +2 -2
  205. package/dist/{index.es143.js.map → index146.es.js.map} +1 -1
  206. package/dist/{index.es144.js → index147.es.js} +1 -1
  207. package/dist/{index.es144.js.map → index147.es.js.map} +1 -1
  208. package/dist/{index.es145.js → index148.es.js} +1 -1
  209. package/dist/{index.es145.js.map → index148.es.js.map} +1 -1
  210. package/dist/{index.es146.js → index149.es.js} +2 -2
  211. package/dist/{index.es146.js.map → index149.es.js.map} +1 -1
  212. package/dist/{index.es15.js → index15.es.js} +3 -3
  213. package/dist/{index.es15.js.map → index15.es.js.map} +1 -1
  214. package/dist/{index.es147.js → index150.es.js} +3 -3
  215. package/dist/{index.es147.js.map → index150.es.js.map} +1 -1
  216. package/dist/{index.es148.js → index151.es.js} +3 -3
  217. package/dist/{index.es148.js.map → index151.es.js.map} +1 -1
  218. package/dist/{index.es149.js → index152.es.js} +5 -5
  219. package/dist/{index.es149.js.map → index152.es.js.map} +1 -1
  220. package/dist/{index.es150.js → index153.es.js} +3 -3
  221. package/dist/{index.es150.js.map → index153.es.js.map} +1 -1
  222. package/dist/{index.es151.js → index154.es.js} +2 -2
  223. package/dist/{index.es151.js.map → index154.es.js.map} +1 -1
  224. package/dist/{index.es152.js → index155.es.js} +4 -4
  225. package/dist/{index.es152.js.map → index155.es.js.map} +1 -1
  226. package/dist/{index.es153.js → index156.es.js} +6 -6
  227. package/dist/{index.es153.js.map → index156.es.js.map} +1 -1
  228. package/dist/{index.es154.js → index157.es.js} +5 -5
  229. package/dist/{index.es154.js.map → index157.es.js.map} +1 -1
  230. package/dist/{index.es155.js → index158.es.js} +9 -9
  231. package/dist/{index.es155.js.map → index158.es.js.map} +1 -1
  232. package/dist/{index.es157.js → index159.es.js} +1 -1
  233. package/dist/{index.es157.js.map → index159.es.js.map} +1 -1
  234. package/dist/{index.es16.js → index16.es.js} +8 -8
  235. package/dist/{index.es16.js.map → index16.es.js.map} +1 -1
  236. package/dist/{index.es137.js → index160.es.js} +1 -1
  237. package/dist/{index.es137.js.map → index160.es.js.map} +1 -1
  238. package/dist/{index.es138.js → index161.es.js} +1 -1
  239. package/dist/{index.es138.js.map → index161.es.js.map} +1 -1
  240. package/dist/{index.es162.js → index162.es.js} +1 -1
  241. package/dist/{index.es162.js.map → index162.es.js.map} +1 -1
  242. package/dist/{index.es163.js → index163.es.js} +6 -6
  243. package/dist/{index.es163.js.map → index163.es.js.map} +1 -1
  244. package/dist/{index.es164.js → index164.es.js} +2 -2
  245. package/dist/{index.es164.js.map → index164.es.js.map} +1 -1
  246. package/dist/{index.es165.js → index165.es.js} +2 -2
  247. package/dist/{index.es165.js.map → index165.es.js.map} +1 -1
  248. package/dist/{index.es166.js → index166.es.js} +4 -4
  249. package/dist/{index.es166.js.map → index166.es.js.map} +1 -1
  250. package/dist/{index.es167.js → index167.es.js} +4 -4
  251. package/dist/{index.es167.js.map → index167.es.js.map} +1 -1
  252. package/dist/{index.es168.js → index168.es.js} +8 -8
  253. package/dist/{index.es168.js.map → index168.es.js.map} +1 -1
  254. package/dist/{index.es169.js → index169.es.js} +8 -8
  255. package/dist/{index.es169.js.map → index169.es.js.map} +1 -1
  256. package/dist/{index.es17.js → index17.es.js} +3 -3
  257. package/dist/{index.es17.js.map → index17.es.js.map} +1 -1
  258. package/dist/{index.es170.js → index170.es.js} +19 -19
  259. package/dist/{index.es170.js.map → index170.es.js.map} +1 -1
  260. package/dist/{index.es171.js → index171.es.js} +4 -4
  261. package/dist/{index.es171.js.map → index171.es.js.map} +1 -1
  262. package/dist/{index.es172.js → index172.es.js} +2 -2
  263. package/dist/{index.es172.js.map → index172.es.js.map} +1 -1
  264. package/dist/{index.es173.js → index173.es.js} +6 -6
  265. package/dist/{index.es173.js.map → index173.es.js.map} +1 -1
  266. package/dist/{index.es174.js → index174.es.js} +17 -16
  267. package/dist/{index.es174.js.map → index174.es.js.map} +1 -1
  268. package/dist/{index.es175.js → index175.es.js} +27 -26
  269. package/dist/{index.es175.js.map → index175.es.js.map} +1 -1
  270. package/dist/{index.es176.js → index176.es.js} +13 -12
  271. package/dist/{index.es176.js.map → index176.es.js.map} +1 -1
  272. package/dist/{index.es177.js → index177.es.js} +5 -5
  273. package/dist/{index.es177.js.map → index177.es.js.map} +1 -1
  274. package/dist/{index.es178.js → index178.es.js} +27 -26
  275. package/dist/{index.es178.js.map → index178.es.js.map} +1 -1
  276. package/dist/{index.es179.js → index179.es.js} +30 -29
  277. package/dist/{index.es179.js.map → index179.es.js.map} +1 -1
  278. package/dist/{index.es18.js → index18.es.js} +2 -2
  279. package/dist/{index.es18.js.map → index18.es.js.map} +1 -1
  280. package/dist/{index.es180.js → index180.es.js} +1 -1
  281. package/dist/{index.es180.js.map → index180.es.js.map} +1 -1
  282. package/dist/{index.es181.js → index181.es.js} +2 -2
  283. package/dist/{index.es181.js.map → index181.es.js.map} +1 -1
  284. package/dist/{index.es182.js → index182.es.js} +1 -1
  285. package/dist/{index.es182.js.map → index182.es.js.map} +1 -1
  286. package/dist/{index.es19.js → index19.es.js} +4 -4
  287. package/dist/{index.es19.js.map → index19.es.js.map} +1 -1
  288. package/dist/{index.es2.js → index2.es.js} +26 -26
  289. package/dist/index2.es.js.map +1 -0
  290. package/dist/{index.es20.js → index20.es.js} +5 -5
  291. package/dist/{index.es20.js.map → index20.es.js.map} +1 -1
  292. package/dist/{index.es21.js → index21.es.js} +6 -6
  293. package/dist/{index.es21.js.map → index21.es.js.map} +1 -1
  294. package/dist/{index.es22.js → index22.es.js} +2 -2
  295. package/dist/{index.es22.js.map → index22.es.js.map} +1 -1
  296. package/dist/{index.es23.js → index23.es.js} +7 -7
  297. package/dist/{index.es23.js.map → index23.es.js.map} +1 -1
  298. package/dist/{index.es24.js → index24.es.js} +7 -7
  299. package/dist/{index.es24.js.map → index24.es.js.map} +1 -1
  300. package/dist/{index.es25.js → index25.es.js} +3 -3
  301. package/dist/{index.es25.js.map → index25.es.js.map} +1 -1
  302. package/dist/{index.es26.js → index26.es.js} +2 -2
  303. package/dist/{index.es26.js.map → index26.es.js.map} +1 -1
  304. package/dist/{index.es27.js → index27.es.js} +7 -7
  305. package/dist/{index.es27.js.map → index27.es.js.map} +1 -1
  306. package/dist/{index.es28.js → index28.es.js} +9 -9
  307. package/dist/{index.es28.js.map → index28.es.js.map} +1 -1
  308. package/dist/{index.es29.js → index29.es.js} +5 -5
  309. package/dist/{index.es29.js.map → index29.es.js.map} +1 -1
  310. package/dist/{index.es3.js → index3.es.js} +3 -3
  311. package/dist/{index.es3.js.map → index3.es.js.map} +1 -1
  312. package/dist/{index.es30.js → index30.es.js} +3 -3
  313. package/dist/{index.es30.js.map → index30.es.js.map} +1 -1
  314. package/dist/{index.es31.js → index31.es.js} +1 -1
  315. package/dist/{index.es31.js.map → index31.es.js.map} +1 -1
  316. package/dist/{index.es32.js → index32.es.js} +2 -2
  317. package/dist/{index.es32.js.map → index32.es.js.map} +1 -1
  318. package/dist/{index.es33.js → index33.es.js} +3 -3
  319. package/dist/{index.es33.js.map → index33.es.js.map} +1 -1
  320. package/dist/{index.es34.js → index34.es.js} +5 -5
  321. package/dist/{index.es34.js.map → index34.es.js.map} +1 -1
  322. package/dist/{index.es35.js → index35.es.js} +6 -6
  323. package/dist/{index.es35.js.map → index35.es.js.map} +1 -1
  324. package/dist/{index.es36.js → index36.es.js} +5 -5
  325. package/dist/{index.es36.js.map → index36.es.js.map} +1 -1
  326. package/dist/{index.es37.js → index37.es.js} +6 -6
  327. package/dist/{index.es37.js.map → index37.es.js.map} +1 -1
  328. package/dist/{index.es38.js → index38.es.js} +2 -2
  329. package/dist/{index.es38.js.map → index38.es.js.map} +1 -1
  330. package/dist/{index.es39.js → index39.es.js} +3 -3
  331. package/dist/{index.es39.js.map → index39.es.js.map} +1 -1
  332. package/dist/{index.es4.js → index4.es.js} +2 -2
  333. package/dist/{index.es4.js.map → index4.es.js.map} +1 -1
  334. package/dist/{index.es40.js → index40.es.js} +4 -4
  335. package/dist/{index.es40.js.map → index40.es.js.map} +1 -1
  336. package/dist/{index.es41.js → index41.es.js} +5 -5
  337. package/dist/{index.es41.js.map → index41.es.js.map} +1 -1
  338. package/dist/{index.es42.js → index42.es.js} +4 -4
  339. package/dist/{index.es42.js.map → index42.es.js.map} +1 -1
  340. package/dist/{index.es43.js → index43.es.js} +2 -2
  341. package/dist/{index.es43.js.map → index43.es.js.map} +1 -1
  342. package/dist/{index.es44.js → index44.es.js} +2 -2
  343. package/dist/{index.es44.js.map → index44.es.js.map} +1 -1
  344. package/dist/{index.es45.js → index45.es.js} +5 -5
  345. package/dist/{index.es45.js.map → index45.es.js.map} +1 -1
  346. package/dist/{index.es46.js → index46.es.js} +9 -9
  347. package/dist/{index.es46.js.map → index46.es.js.map} +1 -1
  348. package/dist/{index.es47.js → index47.es.js} +7 -7
  349. package/dist/{index.es47.js.map → index47.es.js.map} +1 -1
  350. package/dist/{index.es48.js → index48.es.js} +10 -10
  351. package/dist/{index.es48.js.map → index48.es.js.map} +1 -1
  352. package/dist/{index.es49.js → index49.es.js} +2 -2
  353. package/dist/{index.es49.js.map → index49.es.js.map} +1 -1
  354. package/dist/{index.es5.js → index5.es.js} +2 -2
  355. package/dist/{index.es5.js.map → index5.es.js.map} +1 -1
  356. package/dist/{index.es50.js → index50.es.js} +1 -1
  357. package/dist/{index.es50.js.map → index50.es.js.map} +1 -1
  358. package/dist/{index.es51.js → index51.es.js} +2 -2
  359. package/dist/{index.es51.js.map → index51.es.js.map} +1 -1
  360. package/dist/{index.es52.js → index52.es.js} +3 -3
  361. package/dist/{index.es52.js.map → index52.es.js.map} +1 -1
  362. package/dist/{index.es53.js → index53.es.js} +7 -7
  363. package/dist/{index.es53.js.map → index53.es.js.map} +1 -1
  364. package/dist/{index.es54.js → index54.es.js} +4 -4
  365. package/dist/{index.es54.js.map → index54.es.js.map} +1 -1
  366. package/dist/{index.es55.js → index55.es.js} +5 -5
  367. package/dist/{index.es55.js.map → index55.es.js.map} +1 -1
  368. package/dist/{index.es56.js → index56.es.js} +3 -3
  369. package/dist/{index.es56.js.map → index56.es.js.map} +1 -1
  370. package/dist/{index.es57.js → index57.es.js} +9 -9
  371. package/dist/{index.es57.js.map → index57.es.js.map} +1 -1
  372. package/dist/{index.es58.js → index58.es.js} +4 -3
  373. package/dist/{index.es58.js.map → index58.es.js.map} +1 -1
  374. package/dist/{index.es59.js → index59.es.js} +2 -2
  375. package/dist/{index.es59.js.map → index59.es.js.map} +1 -1
  376. package/dist/{index.es6.js → index6.es.js} +2 -2
  377. package/dist/{index.es6.js.map → index6.es.js.map} +1 -1
  378. package/dist/{index.es60.js → index60.es.js} +3 -3
  379. package/dist/{index.es60.js.map → index60.es.js.map} +1 -1
  380. package/dist/{index.es61.js → index61.es.js} +2 -2
  381. package/dist/{index.es61.js.map → index61.es.js.map} +1 -1
  382. package/dist/{index.es62.js → index62.es.js} +2 -2
  383. package/dist/{index.es62.js.map → index62.es.js.map} +1 -1
  384. package/dist/{index.es63.js → index63.es.js} +2 -2
  385. package/dist/{index.es63.js.map → index63.es.js.map} +1 -1
  386. package/dist/{index.es64.js → index64.es.js} +3 -3
  387. package/dist/{index.es64.js.map → index64.es.js.map} +1 -1
  388. package/dist/{index.es65.js → index65.es.js} +3 -3
  389. package/dist/{index.es65.js.map → index65.es.js.map} +1 -1
  390. package/dist/{index.es66.js → index66.es.js} +2 -2
  391. package/dist/{index.es66.js.map → index66.es.js.map} +1 -1
  392. package/dist/{index.es67.js → index67.es.js} +3 -3
  393. package/dist/{index.es67.js.map → index67.es.js.map} +1 -1
  394. package/dist/{index.es68.js → index68.es.js} +3 -3
  395. package/dist/{index.es68.js.map → index68.es.js.map} +1 -1
  396. package/dist/{index.es69.js → index69.es.js} +6 -6
  397. package/dist/{index.es69.js.map → index69.es.js.map} +1 -1
  398. package/dist/{index.es7.js → index7.es.js} +2 -2
  399. package/dist/{index.es7.js.map → index7.es.js.map} +1 -1
  400. package/dist/{index.es70.js → index70.es.js} +6 -6
  401. package/dist/{index.es70.js.map → index70.es.js.map} +1 -1
  402. package/dist/{index.es71.js → index71.es.js} +4 -4
  403. package/dist/{index.es71.js.map → index71.es.js.map} +1 -1
  404. package/dist/{index.es72.js → index72.es.js} +8 -8
  405. package/dist/{index.es72.js.map → index72.es.js.map} +1 -1
  406. package/dist/{index.es73.js → index73.es.js} +5 -5
  407. package/dist/{index.es73.js.map → index73.es.js.map} +1 -1
  408. package/dist/{index.es74.js → index74.es.js} +1 -1
  409. package/dist/{index.es74.js.map → index74.es.js.map} +1 -1
  410. package/dist/{index.es75.js → index75.es.js} +1 -1
  411. package/dist/{index.es75.js.map → index75.es.js.map} +1 -1
  412. package/dist/{index.es76.js → index76.es.js} +1 -1
  413. package/dist/{index.es76.js.map → index76.es.js.map} +1 -1
  414. package/dist/{index.es77.js → index77.es.js} +1 -1
  415. package/dist/{index.es77.js.map → index77.es.js.map} +1 -1
  416. package/dist/{index.es78.js → index78.es.js} +2 -2
  417. package/dist/{index.es78.js.map → index78.es.js.map} +1 -1
  418. package/dist/{index.es79.js → index79.es.js} +1 -1
  419. package/dist/{index.es79.js.map → index79.es.js.map} +1 -1
  420. package/dist/{index.es8.js → index8.es.js} +3 -3
  421. package/dist/{index.es8.js.map → index8.es.js.map} +1 -1
  422. package/dist/{index.es80.js → index80.es.js} +3 -3
  423. package/dist/{index.es80.js.map → index80.es.js.map} +1 -1
  424. package/dist/{index.es81.js → index81.es.js} +4 -4
  425. package/dist/{index.es81.js.map → index81.es.js.map} +1 -1
  426. package/dist/{index.es82.js → index82.es.js} +1 -1
  427. package/dist/{index.es82.js.map → index82.es.js.map} +1 -1
  428. package/dist/{index.es83.js → index83.es.js} +1 -1
  429. package/dist/{index.es83.js.map → index83.es.js.map} +1 -1
  430. package/dist/{index.es84.js.map → index84.es.js.map} +1 -1
  431. package/dist/{index.es85.js → index85.es.js} +2 -2
  432. package/dist/{index.es85.js.map → index85.es.js.map} +1 -1
  433. package/dist/{index.es86.js → index86.es.js} +2 -2
  434. package/dist/{index.es86.js.map → index86.es.js.map} +1 -1
  435. package/dist/{index.es87.js → index87.es.js} +1 -1
  436. package/dist/{index.es87.js.map → index87.es.js.map} +1 -1
  437. package/dist/index88.es.js +5 -0
  438. package/dist/index88.es.js.map +1 -0
  439. package/dist/{index.es89.js → index89.es.js} +1 -1
  440. package/dist/{index.es89.js.map → index89.es.js.map} +1 -1
  441. package/dist/{index.es9.js → index9.es.js} +4 -4
  442. package/dist/{index.es9.js.map → index9.es.js.map} +1 -1
  443. package/dist/{index.es90.js → index90.es.js} +2 -2
  444. package/dist/{index.es90.js.map → index90.es.js.map} +1 -1
  445. package/dist/{index.es91.js → index91.es.js} +3 -3
  446. package/dist/{index.es91.js.map → index91.es.js.map} +1 -1
  447. package/dist/{index.es92.js → index92.es.js} +1 -1
  448. package/dist/{index.es92.js.map → index92.es.js.map} +1 -1
  449. package/dist/{index.es93.js → index93.es.js} +1 -1
  450. package/dist/{index.es93.js.map → index93.es.js.map} +1 -1
  451. package/dist/{index.es94.js → index94.es.js} +1 -1
  452. package/dist/{index.es94.js.map → index94.es.js.map} +1 -1
  453. package/dist/{index.es95.js → index95.es.js} +1 -1
  454. package/dist/{index.es95.js.map → index95.es.js.map} +1 -1
  455. package/dist/{index.es96.js → index96.es.js} +1 -1
  456. package/dist/{index.es96.js.map → index96.es.js.map} +1 -1
  457. package/dist/{index.es122.js → index97.es.js} +1 -1
  458. package/dist/index97.es.js.map +1 -0
  459. package/dist/{index.es133.js → index98.es.js} +1 -1
  460. package/dist/index98.es.js.map +1 -0
  461. package/dist/{index.es121.js → index99.es.js} +1 -1
  462. package/dist/index99.es.js.map +1 -0
  463. package/dist/styles.css +11 -17
  464. package/package.json +2 -1
  465. package/dist/index.es121.js.map +0 -1
  466. package/dist/index.es122.js.map +0 -1
  467. package/dist/index.es133.js.map +0 -1
  468. package/dist/index.es2.js.map +0 -1
  469. package/dist/index.es88.js +0 -5
  470. package/dist/index.es88.js.map +0 -1
  471. package/dist/index.es97.js.map +0 -1
  472. package/dist/index.es98.js.map +0 -1
  473. package/dist/index.es99.js.map +0 -1
  474. package/dist/{index.es84.js → index84.es.js} +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.es163.js","sources":["../src/components/organisms/image-editor/engine/pointer.js"],"sourcesContent":["import { pushHistory } from './history.js'\nimport { emitChange } from './state.js'\nimport {\n render,\n renderOverlay,\n paintLayer,\n layerBounds,\n onResizeHandle,\n normRect,\n clampTextSize,\n clampBoxWidth,\n onRotateHandle,\n layerCenter,\n rotatePoint,\n toLayerSpace,\n DIRECTIONAL_SHAPES,\n} from './rendering.js'\nimport { setMode, selectLayer } from './mode.js'\nimport { openTextEditor } from './text-editor.js'\n\nexport function toSource(state, e) {\n // While actively dragging, use the rect captured at pointerdown instead of\n // re-querying live — on mobile the browser's address-bar/toolbar chrome\n // can collapse mid-gesture (typically ~1s in) and reflow the canvas out\n // from under the drag. Since this is (pointer position - element origin),\n // a rect that shifts mid-drag snaps the result toward 0 (leftmost/\n // smallest), which is exactly what re-querying every move would do.\n const r =\n state.dragMode && state.dragRect\n ? state.dragRect\n : state.overlayEl.getBoundingClientRect()\n const x = ((e.clientX - r.left) / r.width) * state.sourceCanvas.width\n const y = ((e.clientY - r.top) / r.height) * state.sourceCanvas.height\n return {\n x: Math.min(Math.max(x, 0), state.sourceCanvas.width),\n y: Math.min(Math.max(y, 0), state.sourceCanvas.height),\n }\n}\n\nfunction rotatedAABB(b, rotationDeg) {\n if (!rotationDeg) return b\n const rad = (rotationDeg * Math.PI) / 180\n const cos = Math.abs(Math.cos(rad)),\n sin = Math.abs(Math.sin(rad))\n const w = b.w * cos + b.h * sin,\n h = b.w * sin + b.h * cos\n const cx = b.x + b.w / 2,\n cy = b.y + b.h / 2\n return { x: cx - w / 2, y: cy - h / 2, w, h }\n}\n\nfunction strokeMargin(L) {\n if (L.type !== 'shape') return 0\n const alwaysStroked = DIRECTIONAL_SHAPES.includes(L.shape)\n return alwaysStroked || L.fill !== 'fill' ? (L.width || 0) / 2 : 0\n}\n\nfunction clampLayerToCanvas(state, L) {\n const rotated = rotatedAABB(layerBounds(state, L), L.rotation)\n const margin = strokeMargin(L)\n const b = {\n x: rotated.x - margin,\n y: rotated.y - margin,\n w: rotated.w + margin * 2,\n h: rotated.h + margin * 2,\n }\n const dx = Math.min(Math.max(b.x, 0), state.sourceCanvas.width - b.w) - b.x\n const dy = Math.min(Math.max(b.y, 0), state.sourceCanvas.height - b.h) - b.y\n if (!dx && !dy) return\n if (L.type === 'stroke') {\n L.points = L.points.map((pt) => ({ x: pt.x + dx, y: pt.y + dy }))\n } else {\n L.x += dx\n L.y += dy\n }\n}\n\nexport function hitLayer(state, p) {\n const { layers } = state\n for (let i = layers.length - 1; i >= 0; i--) {\n const b = layerBounds(state, layers[i])\n const q = toLayerSpace(state, layers[i], p)\n if (\n q.x >= b.x - 6 &&\n q.x <= b.x + b.w + 6 &&\n q.y >= b.y - 6 &&\n q.y <= b.y + b.h + 6\n )\n return layers[i]\n }\n return null\n}\n\nexport function onDown(state, e) {\n if (!state.sourceCanvas.width) return\n if (state.dragMode) return\n state.overlayEl.setPointerCapture(e.pointerId)\n state.activePointerId = e.pointerId\n state.dragRect = state.overlayEl.getBoundingClientRect()\n const p = toSource(state, e)\n if (state.mode === 'select') {\n const sel =\n state.selectedId != null\n ? state.layers.find((l) => l.id === state.selectedId)\n : null\n if (sel && onRotateHandle(state, p, sel)) {\n const c = layerCenter(state, sel)\n state.dragMode = 'rotate'\n state.rotateStart = {\n center: c,\n angle: Math.atan2(p.y - c.y, p.x - c.x),\n rotation: sel.rotation || 0,\n }\n pushHistory(state)\n return\n }\n const corner = sel ? onResizeHandle(state, p, sel) : null\n if (corner) {\n state.dragMode = 'resize'\n state.resizeCorner = corner\n state.dragStart = p\n state.dragOrig = JSON.parse(JSON.stringify(sel))\n if (sel.type === 'shape' && DIRECTIONAL_SHAPES.includes(sel.shape)) {\n state.resizeAnchor =\n corner === 'start'\n ? { x: sel.x + sel.w, y: sel.y + sel.h }\n : { x: sel.x, y: sel.y }\n } else {\n const b = layerBounds(state, sel)\n const isLeft = corner === 'tl' || corner === 'bl'\n state.resizeAnchor = {\n x: isLeft ? b.x + b.w : b.x,\n // Text keeps its top edge: its height follows the wrapping.\n y:\n sel.type === 'text'\n ? b.y\n : corner === 'tl' || corner === 'tr'\n ? b.y + b.h\n : b.y,\n }\n }\n state.resizeCenter = layerCenter(state, sel)\n state.resizeAnchorWorld = rotatePoint(\n state.resizeAnchor,\n state.resizeCenter,\n sel.rotation || 0\n )\n pushHistory(state)\n return\n }\n const hit = hitLayer(state, p)\n if (hit) {\n selectLayer(state, hit.id)\n state.dragMode = 'move'\n state.dragStart = p\n state.dragOrig = JSON.parse(JSON.stringify(hit))\n pushHistory(state)\n } else selectLayer(state, null)\n } else if (state.mode === 'text') {\n pushHistory(state)\n const L = {\n id: state.nextId++,\n type: 'text',\n text: 'Text',\n x: p.x,\n y: p.y,\n size: state.textSize,\n font: state.textFont,\n color: state.textColor,\n rotation: 0,\n flipH: false,\n flipV: false,\n boxWidth: 10,\n }\n state.octx.font = `${L.size}px ${L.font}`\n const placeholderWidth = state.octx.measureText(L.text).width\n L.boxWidth = Math.round(Math.max(700, placeholderWidth + 40))\n clampBoxWidth(state, L)\n clampTextSize(state, L)\n state.layers.push(L)\n setMode(state, 'select')\n selectLayer(state, L.id)\n openTextEditor(state, L, true)\n } else if (state.mode === 'draw') {\n pushHistory(state)\n state.pendingStroke = {\n id: state.nextId++,\n type: 'stroke',\n color: state.drawColor,\n width: state.brushSize,\n style: state.brushStyle,\n points: [p],\n }\n state.dragMode = 'draw'\n } else if (state.mode === 'shape') {\n pushHistory(state)\n state.pendingShape = {\n id: state.nextId++,\n type: 'shape',\n shape: state.selectedShapeType,\n fill: state.shapeFill,\n width: state.shapeWidth,\n color: state.shapeColor,\n x: p.x,\n y: p.y,\n w: 0,\n h: 0,\n rotation: 0,\n flipH: false,\n flipV: false,\n }\n state.dragMode = 'newshape'\n state.dragStart = p\n } else if (state.mode === 'crop') {\n state.dragMode = 'crop'\n state.cropStart = p\n state.cropRect = { x: p.x, y: p.y, w: 0, h: 0 }\n }\n}\n\nexport function onMove(state, e) {\n if (\n state.dragMode &&\n state.activePointerId != null &&\n e.pointerId !== state.activePointerId\n ) {\n return\n }\n if (!state.dragMode) {\n if (state.mode === 'select') {\n const p = toSource(state, e),\n sel =\n state.selectedId != null\n ? state.layers.find((l) => l.id === state.selectedId)\n : null\n const corner = sel ? onResizeHandle(state, p, sel) : null\n if (sel && onRotateHandle(state, p, sel)) {\n state.overlayEl.style.cursor = 'grab'\n } else if (corner === 'start' || corner === 'end') {\n state.overlayEl.style.cursor =\n sel.w >= 0 === sel.h >= 0 ? 'nwse-resize' : 'nesw-resize'\n } else if (corner) {\n state.overlayEl.style.cursor =\n corner === 'tl' || corner === 'br' ? 'nwse-resize' : 'nesw-resize'\n } else if (sel && hitLayer(state, p) === sel) {\n state.overlayEl.style.cursor = 'move'\n } else if (hitLayer(state, p)) {\n state.overlayEl.style.cursor = 'pointer'\n } else {\n state.overlayEl.style.cursor = 'default'\n }\n }\n return\n }\n const p = toSource(state, e)\n if (state.dragMode === 'move') {\n const dx = p.x - state.dragStart.x,\n dy = p.y - state.dragStart.y,\n L = state.layers.find((l) => l.id === state.selectedId)\n if (L.type === 'text' || L.type === 'shape' || L.type === 'sticker') {\n L.x = state.dragOrig.x + dx\n L.y = state.dragOrig.y + dy\n } else if (L.type === 'stroke') {\n L.points = state.dragOrig.points.map((pt) => ({\n x: pt.x + dx,\n y: pt.y + dy,\n }))\n }\n clampLayerToCanvas(state, L)\n renderOverlay(state)\n } else if (state.dragMode === 'resize') {\n const L = state.layers.find((l) => l.id === state.selectedId)\n const rot = L.rotation || 0\n // Resize along the layer's own axes, so a tilted box grows the way it looks.\n const q = rot ? rotatePoint(p, state.resizeCenter, -rot) : p\n if (L.type === 'text') {\n const isLeft = state.resizeCorner === 'tl' || state.resizeCorner === 'bl'\n // Absolute from drag start, so the fix-up below cannot accumulate.\n L.y = state.dragOrig.y\n L.size = state.dragOrig.size\n if (isLeft) {\n const rightEdge = state.dragOrig.x + state.dragOrig.boxWidth\n L.boxWidth = Math.max(20, rightEdge - q.x)\n L.x = rightEdge - L.boxWidth\n } else {\n L.x = state.dragOrig.x\n L.boxWidth = Math.max(20, q.x - state.dragOrig.x)\n }\n clampBoxWidth(state, L)\n clampTextSize(state, L)\n state.notify()\n } else if (L.type === 'shape' && DIRECTIONAL_SHAPES.includes(L.shape)) {\n const anchor = state.resizeAnchor\n const MIN_LEN = 8\n let w = q.x - anchor.x\n let h = q.y - anchor.y\n if (Math.hypot(w, h) < MIN_LEN) {\n const ang = Math.atan2(h || 1, w || 1)\n w = MIN_LEN * Math.cos(ang)\n h = MIN_LEN * Math.sin(ang)\n }\n if (state.resizeCorner === 'start') {\n L.x = anchor.x + w\n L.y = anchor.y + h\n L.w = -w\n L.h = -h\n } else {\n L.x = anchor.x\n L.y = anchor.y\n L.w = w\n L.h = h\n }\n } else if (L.type === 'shape' || L.type === 'sticker') {\n const anchor = state.resizeAnchor\n const MIN_SIZE = 8\n let w = q.x - anchor.x\n let h = q.y - anchor.y\n if (Math.abs(w) < MIN_SIZE) {\n w =\n anchor.x + MIN_SIZE <= state.sourceCanvas.width ? MIN_SIZE : -MIN_SIZE\n }\n if (Math.abs(h) < MIN_SIZE) {\n h =\n anchor.y + MIN_SIZE <= state.sourceCanvas.height\n ? MIN_SIZE\n : -MIN_SIZE\n }\n L.x = Math.min(anchor.x, anchor.x + w)\n L.y = Math.min(anchor.y, anchor.y + h)\n L.w = Math.abs(w)\n L.h = Math.abs(h)\n }\n // Resizing moves the centre it spins about; pin the anchor back down.\n if (rot) {\n const moved = rotatePoint(state.resizeAnchor, layerCenter(state, L), rot)\n L.x += state.resizeAnchorWorld.x - moved.x\n L.y += state.resizeAnchorWorld.y - moved.y\n }\n renderOverlay(state)\n } else if (state.dragMode === 'rotate') {\n const L = state.layers.find((l) => l.id === state.selectedId)\n const { center, angle, rotation } = state.rotateStart\n const swept = Math.atan2(p.y - center.y, p.x - center.x) - angle\n const deg = rotation + (swept * 180) / Math.PI\n L.rotation = ((deg % 360) + 360) % 360\n renderOverlay(state)\n } else if (state.dragMode === 'draw') {\n state.pendingStroke.points.push(p)\n state.octx.clearRect(0, 0, state.overlayEl.width, state.overlayEl.height)\n state.layers.forEach((L) => paintLayer(state, state.octx, L))\n paintLayer(state, state.octx, state.pendingStroke)\n } else if (state.dragMode === 'newshape') {\n state.pendingShape.w = p.x - state.dragStart.x\n state.pendingShape.h = p.y - state.dragStart.y\n renderOverlay(state)\n } else if (state.dragMode === 'crop') {\n let w = p.x - state.cropStart.x,\n h = p.y - state.cropStart.y\n if (state.cropRatio !== 'free') {\n const rr = parseFloat(state.cropRatio)\n h = (Math.sign(h || 1) * Math.abs(w)) / rr\n const maxH =\n h >= 0\n ? state.sourceCanvas.height - state.cropStart.y\n : state.cropStart.y\n if (Math.abs(h) > maxH) {\n h = Math.sign(h) * maxH\n w = Math.sign(w || 1) * Math.abs(h) * rr\n }\n }\n state.cropRect = { x: state.cropStart.x, y: state.cropStart.y, w, h }\n renderOverlay(state)\n }\n}\n\nexport function onUp(state, e) {\n if (\n e &&\n state.dragMode &&\n state.activePointerId != null &&\n e.pointerId !== state.activePointerId\n ) {\n return\n }\n if (state.dragMode === 'draw' && state.pendingStroke) {\n if (state.pendingStroke.points.length >= 1) {\n state.layers.push(state.pendingStroke)\n selectLayer(state, state.pendingStroke.id)\n }\n state.pendingStroke = null\n render(state)\n state.statusText = 'Stroke added'\n emitChange(state)\n } else if (state.dragMode === 'newshape' && state.pendingShape) {\n if (\n Math.abs(state.pendingShape.w) > 3 ||\n Math.abs(state.pendingShape.h) > 3\n ) {\n state.layers.push(state.pendingShape)\n const id = state.pendingShape.id\n state.pendingShape = null\n setMode(state, 'select')\n selectLayer(state, id)\n state.statusText = 'Shape added'\n emitChange(state)\n } else {\n state.pendingShape = null\n renderOverlay(state)\n state.notify()\n }\n } else if (state.dragMode === 'crop') {\n if (state.cropRect) state.cropRect = normRect(state.cropRect)\n renderOverlay(state)\n state.notify()\n } else if (\n state.dragMode === 'move' ||\n state.dragMode === 'resize' ||\n state.dragMode === 'rotate'\n ) {\n if (state.dragMode === 'rotate') {\n const L = state.layers.find((l) => l.id === state.selectedId)\n if (L) state.statusText = `Rotated to ${Math.round(L.rotation)}°`\n }\n render(state)\n state.notify()\n }\n if (state.activePointerId != null) {\n if (state.overlayEl.hasPointerCapture(state.activePointerId)) {\n state.overlayEl.releasePointerCapture(state.activePointerId)\n }\n state.activePointerId = null\n }\n state.dragMode = null\n state.dragStart = null\n state.dragOrig = null\n state.dragRect = null\n state.resizeAnchor = null\n state.resizeCenter = null\n state.resizeAnchorWorld = null\n state.rotateStart = null\n}\n\nexport function onDbl(state, e) {\n if (state.mode !== 'select') return\n const p = toSource(state, e),\n hit = hitLayer(state, p)\n if (hit && hit.type === 'text') {\n selectLayer(state, hit.id)\n openTextEditor(state, hit, false)\n }\n}\n"],"names":["toSource","state","e","r","x","y","rotatedAABB","b","rotationDeg","rad","cos","sin","w","h","cx","cy","strokeMargin","L","DIRECTIONAL_SHAPES","clampLayerToCanvas","rotated","layerBounds","margin","dx","dy","pt","hitLayer","p","layers","i","q","toLayerSpace","onDown","sel","l","onRotateHandle","c","layerCenter","pushHistory","corner","onResizeHandle","isLeft","rotatePoint","hit","selectLayer","placeholderWidth","clampBoxWidth","clampTextSize","setMode","openTextEditor","onMove","renderOverlay","rot","rightEdge","anchor","MIN_LEN","ang","MIN_SIZE","moved","center","angle","rotation","swept","deg","paintLayer","rr","maxH","onUp","render","emitChange","id","normRect","onDbl"],"mappings":"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"}
1
+ {"version":3,"file":"index163.es.js","sources":["../src/components/organisms/image-editor/engine/pointer.js"],"sourcesContent":["import { pushHistory } from './history.js'\nimport { emitChange } from './state.js'\nimport {\n render,\n renderOverlay,\n paintLayer,\n layerBounds,\n onResizeHandle,\n normRect,\n clampTextSize,\n clampBoxWidth,\n onRotateHandle,\n layerCenter,\n rotatePoint,\n toLayerSpace,\n DIRECTIONAL_SHAPES,\n} from './rendering.js'\nimport { setMode, selectLayer } from './mode.js'\nimport { openTextEditor } from './text-editor.js'\n\nexport function toSource(state, e) {\n // While actively dragging, use the rect captured at pointerdown instead of\n // re-querying live — on mobile the browser's address-bar/toolbar chrome\n // can collapse mid-gesture (typically ~1s in) and reflow the canvas out\n // from under the drag. Since this is (pointer position - element origin),\n // a rect that shifts mid-drag snaps the result toward 0 (leftmost/\n // smallest), which is exactly what re-querying every move would do.\n const r =\n state.dragMode && state.dragRect\n ? state.dragRect\n : state.overlayEl.getBoundingClientRect()\n const x = ((e.clientX - r.left) / r.width) * state.sourceCanvas.width\n const y = ((e.clientY - r.top) / r.height) * state.sourceCanvas.height\n return {\n x: Math.min(Math.max(x, 0), state.sourceCanvas.width),\n y: Math.min(Math.max(y, 0), state.sourceCanvas.height),\n }\n}\n\nfunction rotatedAABB(b, rotationDeg) {\n if (!rotationDeg) return b\n const rad = (rotationDeg * Math.PI) / 180\n const cos = Math.abs(Math.cos(rad)),\n sin = Math.abs(Math.sin(rad))\n const w = b.w * cos + b.h * sin,\n h = b.w * sin + b.h * cos\n const cx = b.x + b.w / 2,\n cy = b.y + b.h / 2\n return { x: cx - w / 2, y: cy - h / 2, w, h }\n}\n\nfunction strokeMargin(L) {\n if (L.type !== 'shape') return 0\n const alwaysStroked = DIRECTIONAL_SHAPES.includes(L.shape)\n return alwaysStroked || L.fill !== 'fill' ? (L.width || 0) / 2 : 0\n}\n\nfunction clampLayerToCanvas(state, L) {\n const rotated = rotatedAABB(layerBounds(state, L), L.rotation)\n const margin = strokeMargin(L)\n const b = {\n x: rotated.x - margin,\n y: rotated.y - margin,\n w: rotated.w + margin * 2,\n h: rotated.h + margin * 2,\n }\n const dx = Math.min(Math.max(b.x, 0), state.sourceCanvas.width - b.w) - b.x\n const dy = Math.min(Math.max(b.y, 0), state.sourceCanvas.height - b.h) - b.y\n if (!dx && !dy) return\n if (L.type === 'stroke') {\n L.points = L.points.map((pt) => ({ x: pt.x + dx, y: pt.y + dy }))\n } else {\n L.x += dx\n L.y += dy\n }\n}\n\nexport function hitLayer(state, p) {\n const { layers } = state\n for (let i = layers.length - 1; i >= 0; i--) {\n const b = layerBounds(state, layers[i])\n const q = toLayerSpace(state, layers[i], p)\n if (\n q.x >= b.x - 6 &&\n q.x <= b.x + b.w + 6 &&\n q.y >= b.y - 6 &&\n q.y <= b.y + b.h + 6\n )\n return layers[i]\n }\n return null\n}\n\nexport function onDown(state, e) {\n if (!state.sourceCanvas.width) return\n if (state.dragMode) return\n state.overlayEl.setPointerCapture(e.pointerId)\n state.activePointerId = e.pointerId\n state.dragRect = state.overlayEl.getBoundingClientRect()\n const p = toSource(state, e)\n if (state.mode === 'select') {\n const sel =\n state.selectedId != null\n ? state.layers.find((l) => l.id === state.selectedId)\n : null\n if (sel && onRotateHandle(state, p, sel)) {\n const c = layerCenter(state, sel)\n state.dragMode = 'rotate'\n state.rotateStart = {\n center: c,\n angle: Math.atan2(p.y - c.y, p.x - c.x),\n rotation: sel.rotation || 0,\n }\n pushHistory(state)\n return\n }\n const corner = sel ? onResizeHandle(state, p, sel) : null\n if (corner) {\n state.dragMode = 'resize'\n state.resizeCorner = corner\n state.dragStart = p\n state.dragOrig = JSON.parse(JSON.stringify(sel))\n if (sel.type === 'shape' && DIRECTIONAL_SHAPES.includes(sel.shape)) {\n state.resizeAnchor =\n corner === 'start'\n ? { x: sel.x + sel.w, y: sel.y + sel.h }\n : { x: sel.x, y: sel.y }\n } else {\n const b = layerBounds(state, sel)\n const isLeft = corner === 'tl' || corner === 'bl'\n state.resizeAnchor = {\n x: isLeft ? b.x + b.w : b.x,\n // Text keeps its top edge: its height follows the wrapping.\n y:\n sel.type === 'text'\n ? b.y\n : corner === 'tl' || corner === 'tr'\n ? b.y + b.h\n : b.y,\n }\n }\n state.resizeCenter = layerCenter(state, sel)\n state.resizeAnchorWorld = rotatePoint(\n state.resizeAnchor,\n state.resizeCenter,\n sel.rotation || 0\n )\n pushHistory(state)\n return\n }\n const hit = hitLayer(state, p)\n if (hit) {\n selectLayer(state, hit.id)\n state.dragMode = 'move'\n state.dragStart = p\n state.dragOrig = JSON.parse(JSON.stringify(hit))\n pushHistory(state)\n } else selectLayer(state, null)\n } else if (state.mode === 'text') {\n pushHistory(state)\n const L = {\n id: state.nextId++,\n type: 'text',\n text: 'Text',\n x: p.x,\n y: p.y,\n size: state.textSize,\n font: state.textFont,\n color: state.textColor,\n rotation: 0,\n flipH: false,\n flipV: false,\n boxWidth: 10,\n }\n state.octx.font = `${L.size}px ${L.font}`\n const placeholderWidth = state.octx.measureText(L.text).width\n L.boxWidth = Math.round(Math.max(700, placeholderWidth + 40))\n clampBoxWidth(state, L)\n clampTextSize(state, L)\n state.layers.push(L)\n setMode(state, 'select')\n selectLayer(state, L.id)\n openTextEditor(state, L, true)\n } else if (state.mode === 'draw') {\n pushHistory(state)\n state.pendingStroke = {\n id: state.nextId++,\n type: 'stroke',\n color: state.drawColor,\n width: state.brushSize,\n style: state.brushStyle,\n points: [p],\n }\n state.dragMode = 'draw'\n } else if (state.mode === 'shape') {\n pushHistory(state)\n state.pendingShape = {\n id: state.nextId++,\n type: 'shape',\n shape: state.selectedShapeType,\n fill: state.shapeFill,\n width: state.shapeWidth,\n color: state.shapeColor,\n x: p.x,\n y: p.y,\n w: 0,\n h: 0,\n rotation: 0,\n flipH: false,\n flipV: false,\n }\n state.dragMode = 'newshape'\n state.dragStart = p\n } else if (state.mode === 'crop') {\n state.dragMode = 'crop'\n state.cropStart = p\n state.cropRect = { x: p.x, y: p.y, w: 0, h: 0 }\n }\n}\n\nexport function onMove(state, e) {\n if (\n state.dragMode &&\n state.activePointerId != null &&\n e.pointerId !== state.activePointerId\n ) {\n return\n }\n if (!state.dragMode) {\n if (state.mode === 'select') {\n const p = toSource(state, e),\n sel =\n state.selectedId != null\n ? state.layers.find((l) => l.id === state.selectedId)\n : null\n const corner = sel ? onResizeHandle(state, p, sel) : null\n if (sel && onRotateHandle(state, p, sel)) {\n state.overlayEl.style.cursor = 'grab'\n } else if (corner === 'start' || corner === 'end') {\n state.overlayEl.style.cursor =\n sel.w >= 0 === sel.h >= 0 ? 'nwse-resize' : 'nesw-resize'\n } else if (corner) {\n state.overlayEl.style.cursor =\n corner === 'tl' || corner === 'br' ? 'nwse-resize' : 'nesw-resize'\n } else if (sel && hitLayer(state, p) === sel) {\n state.overlayEl.style.cursor = 'move'\n } else if (hitLayer(state, p)) {\n state.overlayEl.style.cursor = 'pointer'\n } else {\n state.overlayEl.style.cursor = 'default'\n }\n }\n return\n }\n const p = toSource(state, e)\n if (state.dragMode === 'move') {\n const dx = p.x - state.dragStart.x,\n dy = p.y - state.dragStart.y,\n L = state.layers.find((l) => l.id === state.selectedId)\n if (L.type === 'text' || L.type === 'shape' || L.type === 'sticker') {\n L.x = state.dragOrig.x + dx\n L.y = state.dragOrig.y + dy\n } else if (L.type === 'stroke') {\n L.points = state.dragOrig.points.map((pt) => ({\n x: pt.x + dx,\n y: pt.y + dy,\n }))\n }\n clampLayerToCanvas(state, L)\n renderOverlay(state)\n } else if (state.dragMode === 'resize') {\n const L = state.layers.find((l) => l.id === state.selectedId)\n const rot = L.rotation || 0\n // Resize along the layer's own axes, so a tilted box grows the way it looks.\n const q = rot ? rotatePoint(p, state.resizeCenter, -rot) : p\n if (L.type === 'text') {\n const isLeft = state.resizeCorner === 'tl' || state.resizeCorner === 'bl'\n // Absolute from drag start, so the fix-up below cannot accumulate.\n L.y = state.dragOrig.y\n L.size = state.dragOrig.size\n if (isLeft) {\n const rightEdge = state.dragOrig.x + state.dragOrig.boxWidth\n L.boxWidth = Math.max(20, rightEdge - q.x)\n L.x = rightEdge - L.boxWidth\n } else {\n L.x = state.dragOrig.x\n L.boxWidth = Math.max(20, q.x - state.dragOrig.x)\n }\n clampBoxWidth(state, L)\n clampTextSize(state, L)\n state.notify()\n } else if (L.type === 'shape' && DIRECTIONAL_SHAPES.includes(L.shape)) {\n const anchor = state.resizeAnchor\n const MIN_LEN = 8\n let w = q.x - anchor.x\n let h = q.y - anchor.y\n if (Math.hypot(w, h) < MIN_LEN) {\n const ang = Math.atan2(h || 1, w || 1)\n w = MIN_LEN * Math.cos(ang)\n h = MIN_LEN * Math.sin(ang)\n }\n if (state.resizeCorner === 'start') {\n L.x = anchor.x + w\n L.y = anchor.y + h\n L.w = -w\n L.h = -h\n } else {\n L.x = anchor.x\n L.y = anchor.y\n L.w = w\n L.h = h\n }\n } else if (L.type === 'shape' || L.type === 'sticker') {\n const anchor = state.resizeAnchor\n const MIN_SIZE = 8\n let w = q.x - anchor.x\n let h = q.y - anchor.y\n if (Math.abs(w) < MIN_SIZE) {\n w =\n anchor.x + MIN_SIZE <= state.sourceCanvas.width ? MIN_SIZE : -MIN_SIZE\n }\n if (Math.abs(h) < MIN_SIZE) {\n h =\n anchor.y + MIN_SIZE <= state.sourceCanvas.height\n ? MIN_SIZE\n : -MIN_SIZE\n }\n L.x = Math.min(anchor.x, anchor.x + w)\n L.y = Math.min(anchor.y, anchor.y + h)\n L.w = Math.abs(w)\n L.h = Math.abs(h)\n }\n // Resizing moves the centre it spins about; pin the anchor back down.\n if (rot) {\n const moved = rotatePoint(state.resizeAnchor, layerCenter(state, L), rot)\n L.x += state.resizeAnchorWorld.x - moved.x\n L.y += state.resizeAnchorWorld.y - moved.y\n }\n renderOverlay(state)\n } else if (state.dragMode === 'rotate') {\n const L = state.layers.find((l) => l.id === state.selectedId)\n const { center, angle, rotation } = state.rotateStart\n const swept = Math.atan2(p.y - center.y, p.x - center.x) - angle\n const deg = rotation + (swept * 180) / Math.PI\n L.rotation = ((deg % 360) + 360) % 360\n renderOverlay(state)\n } else if (state.dragMode === 'draw') {\n state.pendingStroke.points.push(p)\n state.octx.clearRect(0, 0, state.overlayEl.width, state.overlayEl.height)\n state.layers.forEach((L) => paintLayer(state, state.octx, L))\n paintLayer(state, state.octx, state.pendingStroke)\n } else if (state.dragMode === 'newshape') {\n state.pendingShape.w = p.x - state.dragStart.x\n state.pendingShape.h = p.y - state.dragStart.y\n renderOverlay(state)\n } else if (state.dragMode === 'crop') {\n let w = p.x - state.cropStart.x,\n h = p.y - state.cropStart.y\n if (state.cropRatio !== 'free') {\n const rr = parseFloat(state.cropRatio)\n h = (Math.sign(h || 1) * Math.abs(w)) / rr\n const maxH =\n h >= 0\n ? state.sourceCanvas.height - state.cropStart.y\n : state.cropStart.y\n if (Math.abs(h) > maxH) {\n h = Math.sign(h) * maxH\n w = Math.sign(w || 1) * Math.abs(h) * rr\n }\n }\n state.cropRect = { x: state.cropStart.x, y: state.cropStart.y, w, h }\n renderOverlay(state)\n }\n}\n\nexport function onUp(state, e) {\n if (\n e &&\n state.dragMode &&\n state.activePointerId != null &&\n e.pointerId !== state.activePointerId\n ) {\n return\n }\n if (state.dragMode === 'draw' && state.pendingStroke) {\n if (state.pendingStroke.points.length >= 1) {\n state.layers.push(state.pendingStroke)\n selectLayer(state, state.pendingStroke.id)\n }\n state.pendingStroke = null\n render(state)\n state.statusText = 'Stroke added'\n emitChange(state)\n } else if (state.dragMode === 'newshape' && state.pendingShape) {\n if (\n Math.abs(state.pendingShape.w) > 3 ||\n Math.abs(state.pendingShape.h) > 3\n ) {\n state.layers.push(state.pendingShape)\n const id = state.pendingShape.id\n state.pendingShape = null\n setMode(state, 'select')\n selectLayer(state, id)\n state.statusText = 'Shape added'\n emitChange(state)\n } else {\n state.pendingShape = null\n renderOverlay(state)\n state.notify()\n }\n } else if (state.dragMode === 'crop') {\n if (state.cropRect) state.cropRect = normRect(state.cropRect)\n renderOverlay(state)\n state.notify()\n } else if (\n state.dragMode === 'move' ||\n state.dragMode === 'resize' ||\n state.dragMode === 'rotate'\n ) {\n if (state.dragMode === 'rotate') {\n const L = state.layers.find((l) => l.id === state.selectedId)\n if (L) state.statusText = `Rotated to ${Math.round(L.rotation)}°`\n }\n render(state)\n state.notify()\n }\n if (state.activePointerId != null) {\n if (state.overlayEl.hasPointerCapture(state.activePointerId)) {\n state.overlayEl.releasePointerCapture(state.activePointerId)\n }\n state.activePointerId = null\n }\n state.dragMode = null\n state.dragStart = null\n state.dragOrig = null\n state.dragRect = null\n state.resizeAnchor = null\n state.resizeCenter = null\n state.resizeAnchorWorld = null\n state.rotateStart = null\n}\n\nexport function onDbl(state, e) {\n if (state.mode !== 'select') return\n const p = toSource(state, e),\n hit = hitLayer(state, p)\n if (hit && hit.type === 'text') {\n selectLayer(state, hit.id)\n openTextEditor(state, hit, false)\n }\n}\n"],"names":["toSource","state","e","r","x","y","rotatedAABB","b","rotationDeg","rad","cos","sin","w","h","cx","cy","strokeMargin","L","DIRECTIONAL_SHAPES","clampLayerToCanvas","rotated","layerBounds","margin","dx","dy","pt","hitLayer","p","layers","i","q","toLayerSpace","onDown","sel","l","onRotateHandle","c","layerCenter","pushHistory","corner","onResizeHandle","isLeft","rotatePoint","hit","selectLayer","placeholderWidth","clampBoxWidth","clampTextSize","setMode","openTextEditor","onMove","renderOverlay","rot","rightEdge","anchor","MIN_LEN","ang","MIN_SIZE","moved","center","angle","rotation","swept","deg","paintLayer","rr","maxH","onUp","render","emitChange","id","normRect","onDbl"],"mappings":";;;;;AAoBO,SAASA,EAASC,GAAOC,GAAG;AAOjC,QAAMC,IACJF,EAAM,YAAYA,EAAM,WACpBA,EAAM,WACNA,EAAM,UAAU,sBAAqB,GACrCG,KAAMF,EAAE,UAAUC,EAAE,QAAQA,EAAE,QAASF,EAAM,aAAa,OAC1DI,KAAMH,EAAE,UAAUC,EAAE,OAAOA,EAAE,SAAUF,EAAM,aAAa;AAChE,SAAO;AAAA,IACL,GAAG,KAAK,IAAI,KAAK,IAAIG,GAAG,CAAC,GAAGH,EAAM,aAAa,KAAK;AAAA,IACpD,GAAG,KAAK,IAAI,KAAK,IAAII,GAAG,CAAC,GAAGJ,EAAM,aAAa,MAAM;AAAA,EACzD;AACA;AAEA,SAASK,EAAYC,GAAGC,GAAa;AACnC,MAAI,CAACA,EAAa,QAAOD;AACzB,QAAME,IAAOD,IAAc,KAAK,KAAM,KAChCE,IAAM,KAAK,IAAI,KAAK,IAAID,CAAG,CAAC,GAChCE,IAAM,KAAK,IAAI,KAAK,IAAIF,CAAG,CAAC,GACxBG,IAAIL,EAAE,IAAIG,IAAMH,EAAE,IAAII,GAC1BE,IAAIN,EAAE,IAAII,IAAMJ,EAAE,IAAIG,GAClBI,IAAKP,EAAE,IAAIA,EAAE,IAAI,GACrBQ,IAAKR,EAAE,IAAIA,EAAE,IAAI;AACnB,SAAO,EAAE,GAAGO,IAAKF,IAAI,GAAG,GAAGG,IAAKF,IAAI,GAAG,GAAAD,GAAG,GAAAC,EAAC;AAC7C;AAEA,SAASG,EAAaC,GAAG;AACvB,SAAIA,EAAE,SAAS,UAAgB,IACTC,EAAmB,SAASD,EAAE,KAAK,KACjCA,EAAE,SAAS,UAAUA,EAAE,SAAS,KAAK,IAAI;AACnE;AAEA,SAASE,EAAmBlB,GAAOgB,GAAG;AACpC,QAAMG,IAAUd,EAAYe,EAAYpB,GAAOgB,CAAC,GAAGA,EAAE,QAAQ,GACvDK,IAASN,EAAaC,CAAC,GACvBV,IAAI;AAAA,IACR,GAAGa,EAAQ,IAAIE;AAAA,IACf,GAAGF,EAAQ,IAAIE;AAAA,IACf,GAAGF,EAAQ,IAAIE,IAAS;AAAA,IACxB,GAAGF,EAAQ,IAAIE,IAAS;AAAA,EAC5B,GACQC,IAAK,KAAK,IAAI,KAAK,IAAIhB,EAAE,GAAG,CAAC,GAAGN,EAAM,aAAa,QAAQM,EAAE,CAAC,IAAIA,EAAE,GACpEiB,IAAK,KAAK,IAAI,KAAK,IAAIjB,EAAE,GAAG,CAAC,GAAGN,EAAM,aAAa,SAASM,EAAE,CAAC,IAAIA,EAAE;AAC3E,EAAI,CAACgB,KAAM,CAACC,MACRP,EAAE,SAAS,WACbA,EAAE,SAASA,EAAE,OAAO,IAAI,CAACQ,OAAQ,EAAE,GAAGA,EAAG,IAAIF,GAAI,GAAGE,EAAG,IAAID,IAAK,KAEhEP,EAAE,KAAKM,GACPN,EAAE,KAAKO;AAEX;AAEO,SAASE,EAASzB,GAAO0B,GAAG;AACjC,QAAM,EAAE,QAAAC,EAAM,IAAK3B;AACnB,WAAS4B,IAAID,EAAO,SAAS,GAAGC,KAAK,GAAGA,KAAK;AAC3C,UAAMtB,IAAIc,EAAYpB,GAAO2B,EAAOC,CAAC,CAAC,GAChCC,IAAIC,EAAa9B,GAAO2B,EAAOC,CAAC,GAAGF,CAAC;AAC1C,QACEG,EAAE,KAAKvB,EAAE,IAAI,KACbuB,EAAE,KAAKvB,EAAE,IAAIA,EAAE,IAAI,KACnBuB,EAAE,KAAKvB,EAAE,IAAI,KACbuB,EAAE,KAAKvB,EAAE,IAAIA,EAAE,IAAI;AAEnB,aAAOqB,EAAOC,CAAC;AAAA,EACnB;AACA,SAAO;AACT;AAEO,SAASG,EAAO/B,GAAOC,GAAG;AAE/B,MADI,CAACD,EAAM,aAAa,SACpBA,EAAM,SAAU;AACpB,EAAAA,EAAM,UAAU,kBAAkBC,EAAE,SAAS,GAC7CD,EAAM,kBAAkBC,EAAE,WAC1BD,EAAM,WAAWA,EAAM,UAAU,sBAAqB;AACtD,QAAM0B,IAAI3B,EAASC,GAAOC,CAAC;AAC3B,MAAID,EAAM,SAAS,UAAU;AAC3B,UAAMgC,IACJhC,EAAM,cAAc,OAChBA,EAAM,OAAO,KAAK,CAACiC,MAAMA,EAAE,OAAOjC,EAAM,UAAU,IAClD;AACN,QAAIgC,KAAOE,EAAelC,GAAO0B,GAAGM,CAAG,GAAG;AACxC,YAAMG,IAAIC,EAAYpC,GAAOgC,CAAG;AAChC,MAAAhC,EAAM,WAAW,UACjBA,EAAM,cAAc;AAAA,QAClB,QAAQmC;AAAA,QACR,OAAO,KAAK,MAAMT,EAAE,IAAIS,EAAE,GAAGT,EAAE,IAAIS,EAAE,CAAC;AAAA,QACtC,UAAUH,EAAI,YAAY;AAAA,MAClC,GACMK,EAAYrC,CAAK;AACjB;AAAA,IACF;AACA,UAAMsC,IAASN,IAAMO,EAAevC,GAAO0B,GAAGM,CAAG,IAAI;AACrD,QAAIM,GAAQ;AAKV,UAJAtC,EAAM,WAAW,UACjBA,EAAM,eAAesC,GACrBtC,EAAM,YAAY0B,GAClB1B,EAAM,WAAW,KAAK,MAAM,KAAK,UAAUgC,CAAG,CAAC,GAC3CA,EAAI,SAAS,WAAWf,EAAmB,SAASe,EAAI,KAAK;AAC/D,QAAAhC,EAAM,eACJsC,MAAW,UACP,EAAE,GAAGN,EAAI,IAAIA,EAAI,GAAG,GAAGA,EAAI,IAAIA,EAAI,EAAC,IACpC,EAAE,GAAGA,EAAI,GAAG,GAAGA,EAAI,EAAC;AAAA,WACrB;AACL,cAAM1B,IAAIc,EAAYpB,GAAOgC,CAAG,GAC1BQ,IAASF,MAAW,QAAQA,MAAW;AAC7C,QAAAtC,EAAM,eAAe;AAAA,UACnB,GAAGwC,IAASlC,EAAE,IAAIA,EAAE,IAAIA,EAAE;AAAA;AAAA,UAE1B,GACE0B,EAAI,SAAS,SACT1B,EAAE,IACFgC,MAAW,QAAQA,MAAW,OAC5BhC,EAAE,IAAIA,EAAE,IACRA,EAAE;AAAA,QACpB;AAAA,MACM;AACA,MAAAN,EAAM,eAAeoC,EAAYpC,GAAOgC,CAAG,GAC3ChC,EAAM,oBAAoByC;AAAA,QACxBzC,EAAM;AAAA,QACNA,EAAM;AAAA,QACNgC,EAAI,YAAY;AAAA,MACxB,GACMK,EAAYrC,CAAK;AACjB;AAAA,IACF;AACA,UAAM0C,IAAMjB,EAASzB,GAAO0B,CAAC;AAC7B,IAAIgB,KACFC,EAAY3C,GAAO0C,EAAI,EAAE,GACzB1C,EAAM,WAAW,QACjBA,EAAM,YAAY0B,GAClB1B,EAAM,WAAW,KAAK,MAAM,KAAK,UAAU0C,CAAG,CAAC,GAC/CL,EAAYrC,CAAK,KACZ2C,EAAY3C,GAAO,IAAI;AAAA,EAChC,WAAWA,EAAM,SAAS,QAAQ;AAChC,IAAAqC,EAAYrC,CAAK;AACjB,UAAMgB,IAAI;AAAA,MACR,IAAIhB,EAAM;AAAA,MACV,MAAM;AAAA,MACN,MAAM;AAAA,MACN,GAAG0B,EAAE;AAAA,MACL,GAAGA,EAAE;AAAA,MACL,MAAM1B,EAAM;AAAA,MACZ,MAAMA,EAAM;AAAA,MACZ,OAAOA,EAAM;AAAA,MACb,UAAU;AAAA,MACV,OAAO;AAAA,MACP,OAAO;AAAA,MACP,UAAU;AAAA,IAChB;AACI,IAAAA,EAAM,KAAK,OAAO,GAAGgB,EAAE,IAAI,MAAMA,EAAE,IAAI;AACvC,UAAM4B,IAAmB5C,EAAM,KAAK,YAAYgB,EAAE,IAAI,EAAE;AACxD,IAAAA,EAAE,WAAW,KAAK,MAAM,KAAK,IAAI,KAAK4B,IAAmB,EAAE,CAAC,GAC5DC,EAAc7C,GAAOgB,CAAC,GACtB8B,EAAc9C,GAAOgB,CAAC,GACtBhB,EAAM,OAAO,KAAKgB,CAAC,GACnB+B,EAAQ/C,GAAO,QAAQ,GACvB2C,EAAY3C,GAAOgB,EAAE,EAAE,GACvBgC,EAAehD,GAAOgB,GAAG,EAAI;AAAA,EAC/B,MAAO,CAAIhB,EAAM,SAAS,UACxBqC,EAAYrC,CAAK,GACjBA,EAAM,gBAAgB;AAAA,IACpB,IAAIA,EAAM;AAAA,IACV,MAAM;AAAA,IACN,OAAOA,EAAM;AAAA,IACb,OAAOA,EAAM;AAAA,IACb,OAAOA,EAAM;AAAA,IACb,QAAQ,CAAC0B,CAAC;AAAA,EAChB,GACI1B,EAAM,WAAW,UACRA,EAAM,SAAS,WACxBqC,EAAYrC,CAAK,GACjBA,EAAM,eAAe;AAAA,IACnB,IAAIA,EAAM;AAAA,IACV,MAAM;AAAA,IACN,OAAOA,EAAM;AAAA,IACb,MAAMA,EAAM;AAAA,IACZ,OAAOA,EAAM;AAAA,IACb,OAAOA,EAAM;AAAA,IACb,GAAG0B,EAAE;AAAA,IACL,GAAGA,EAAE;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,UAAU;AAAA,IACV,OAAO;AAAA,IACP,OAAO;AAAA,EACb,GACI1B,EAAM,WAAW,YACjBA,EAAM,YAAY0B,KACT1B,EAAM,SAAS,WACxBA,EAAM,WAAW,QACjBA,EAAM,YAAY0B,GAClB1B,EAAM,WAAW,EAAE,GAAG0B,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAG,GAAG,GAAG,EAAC;AAEjD;AAEO,SAASuB,EAAOjD,GAAOC,GAAG;AAC/B,MACED,EAAM,YACNA,EAAM,mBAAmB,QACzBC,EAAE,cAAcD,EAAM;AAEtB;AAEF,MAAI,CAACA,EAAM,UAAU;AACnB,QAAIA,EAAM,SAAS,UAAU;AAC3B,YAAM0B,IAAI3B,EAASC,GAAOC,CAAC,GACzB+B,IACEhC,EAAM,cAAc,OAChBA,EAAM,OAAO,KAAK,CAACiC,MAAMA,EAAE,OAAOjC,EAAM,UAAU,IAClD,MACFsC,IAASN,IAAMO,EAAevC,GAAO0B,GAAGM,CAAG,IAAI;AACrD,MAAIA,KAAOE,EAAelC,GAAO0B,GAAGM,CAAG,IACrChC,EAAM,UAAU,MAAM,SAAS,SACtBsC,MAAW,WAAWA,MAAW,QAC1CtC,EAAM,UAAU,MAAM,SACpBgC,EAAI,KAAK,KAAMA,EAAI,KAAK,IAAI,gBAAgB,gBACrCM,IACTtC,EAAM,UAAU,MAAM,SACpBsC,MAAW,QAAQA,MAAW,OAAO,gBAAgB,gBAC9CN,KAAOP,EAASzB,GAAO0B,CAAC,MAAMM,IACvChC,EAAM,UAAU,MAAM,SAAS,SACtByB,EAASzB,GAAO0B,CAAC,IAC1B1B,EAAM,UAAU,MAAM,SAAS,YAE/BA,EAAM,UAAU,MAAM,SAAS;AAAA,IAEnC;AACA;AAAA,EACF;AACA,QAAM0B,IAAI3B,EAASC,GAAOC,CAAC;AAC3B,MAAID,EAAM,aAAa,QAAQ;AAC7B,UAAMsB,IAAKI,EAAE,IAAI1B,EAAM,UAAU,GAC/BuB,IAAKG,EAAE,IAAI1B,EAAM,UAAU,GAC3BgB,IAAIhB,EAAM,OAAO,KAAK,CAACiC,MAAMA,EAAE,OAAOjC,EAAM,UAAU;AACxD,IAAIgB,EAAE,SAAS,UAAUA,EAAE,SAAS,WAAWA,EAAE,SAAS,aACxDA,EAAE,IAAIhB,EAAM,SAAS,IAAIsB,GACzBN,EAAE,IAAIhB,EAAM,SAAS,IAAIuB,KAChBP,EAAE,SAAS,aACpBA,EAAE,SAAShB,EAAM,SAAS,OAAO,IAAI,CAACwB,OAAQ;AAAA,MAC5C,GAAGA,EAAG,IAAIF;AAAA,MACV,GAAGE,EAAG,IAAID;AAAA,IAClB,EAAQ,IAEJL,EAAmBlB,GAAOgB,CAAC,GAC3BkC,EAAclD,CAAK;AAAA,EACrB,WAAWA,EAAM,aAAa,UAAU;AACtC,UAAMgB,IAAIhB,EAAM,OAAO,KAAK,CAACiC,MAAMA,EAAE,OAAOjC,EAAM,UAAU,GACtDmD,IAAMnC,EAAE,YAAY,GAEpBa,IAAIsB,IAAMV,EAAYf,GAAG1B,EAAM,cAAc,CAACmD,CAAG,IAAIzB;AAC3D,QAAIV,EAAE,SAAS,QAAQ;AACrB,YAAMwB,IAASxC,EAAM,iBAAiB,QAAQA,EAAM,iBAAiB;AAIrE,UAFAgB,EAAE,IAAIhB,EAAM,SAAS,GACrBgB,EAAE,OAAOhB,EAAM,SAAS,MACpBwC,GAAQ;AACV,cAAMY,IAAYpD,EAAM,SAAS,IAAIA,EAAM,SAAS;AACpD,QAAAgB,EAAE,WAAW,KAAK,IAAI,IAAIoC,IAAYvB,EAAE,CAAC,GACzCb,EAAE,IAAIoC,IAAYpC,EAAE;AAAA,MACtB;AACE,QAAAA,EAAE,IAAIhB,EAAM,SAAS,GACrBgB,EAAE,WAAW,KAAK,IAAI,IAAIa,EAAE,IAAI7B,EAAM,SAAS,CAAC;AAElD,MAAA6C,EAAc7C,GAAOgB,CAAC,GACtB8B,EAAc9C,GAAOgB,CAAC,GACtBhB,EAAM,OAAM;AAAA,IACd,WAAWgB,EAAE,SAAS,WAAWC,EAAmB,SAASD,EAAE,KAAK,GAAG;AACrE,YAAMqC,IAASrD,EAAM,cACfsD,IAAU;AAChB,UAAI3C,IAAIkB,EAAE,IAAIwB,EAAO,GACjBzC,IAAIiB,EAAE,IAAIwB,EAAO;AACrB,UAAI,KAAK,MAAM1C,GAAGC,CAAC,IAAI0C,GAAS;AAC9B,cAAMC,IAAM,KAAK,MAAM3C,KAAK,GAAGD,KAAK,CAAC;AACrC,QAAAA,IAAI2C,IAAU,KAAK,IAAIC,CAAG,GAC1B3C,IAAI0C,IAAU,KAAK,IAAIC,CAAG;AAAA,MAC5B;AACA,MAAIvD,EAAM,iBAAiB,WACzBgB,EAAE,IAAIqC,EAAO,IAAI1C,GACjBK,EAAE,IAAIqC,EAAO,IAAIzC,GACjBI,EAAE,IAAI,CAACL,GACPK,EAAE,IAAI,CAACJ,MAEPI,EAAE,IAAIqC,EAAO,GACbrC,EAAE,IAAIqC,EAAO,GACbrC,EAAE,IAAIL,GACNK,EAAE,IAAIJ;AAAA,IAEV,WAAWI,EAAE,SAAS,WAAWA,EAAE,SAAS,WAAW;AACrD,YAAMqC,IAASrD,EAAM,cACfwD,IAAW;AACjB,UAAI7C,IAAIkB,EAAE,IAAIwB,EAAO,GACjBzC,IAAIiB,EAAE,IAAIwB,EAAO;AACrB,MAAI,KAAK,IAAI1C,CAAC,IAAI6C,MAChB7C,IACE0C,EAAO,IAAIG,KAAYxD,EAAM,aAAa,QAAQwD,IAAW,CAACA,IAE9D,KAAK,IAAI5C,CAAC,IAAI4C,MAChB5C,IACEyC,EAAO,IAAIG,KAAYxD,EAAM,aAAa,SACtCwD,IACA,CAACA,IAETxC,EAAE,IAAI,KAAK,IAAIqC,EAAO,GAAGA,EAAO,IAAI1C,CAAC,GACrCK,EAAE,IAAI,KAAK,IAAIqC,EAAO,GAAGA,EAAO,IAAIzC,CAAC,GACrCI,EAAE,IAAI,KAAK,IAAIL,CAAC,GAChBK,EAAE,IAAI,KAAK,IAAIJ,CAAC;AAAA,IAClB;AAEA,QAAIuC,GAAK;AACP,YAAMM,IAAQhB,EAAYzC,EAAM,cAAcoC,EAAYpC,GAAOgB,CAAC,GAAGmC,CAAG;AACxE,MAAAnC,EAAE,KAAKhB,EAAM,kBAAkB,IAAIyD,EAAM,GACzCzC,EAAE,KAAKhB,EAAM,kBAAkB,IAAIyD,EAAM;AAAA,IAC3C;AACA,IAAAP,EAAclD,CAAK;AAAA,EACrB,WAAWA,EAAM,aAAa,UAAU;AACtC,UAAMgB,IAAIhB,EAAM,OAAO,KAAK,CAACiC,MAAMA,EAAE,OAAOjC,EAAM,UAAU,GACtD,EAAE,QAAA0D,GAAQ,OAAAC,GAAO,UAAAC,EAAQ,IAAK5D,EAAM,aACpC6D,IAAQ,KAAK,MAAMnC,EAAE,IAAIgC,EAAO,GAAGhC,EAAE,IAAIgC,EAAO,CAAC,IAAIC,GACrDG,IAAMF,IAAYC,IAAQ,MAAO,KAAK;AAC5C,IAAA7C,EAAE,YAAa8C,IAAM,MAAO,OAAO,KACnCZ,EAAclD,CAAK;AAAA,EACrB,WAAWA,EAAM,aAAa;AAC5B,IAAAA,EAAM,cAAc,OAAO,KAAK0B,CAAC,GACjC1B,EAAM,KAAK,UAAU,GAAG,GAAGA,EAAM,UAAU,OAAOA,EAAM,UAAU,MAAM,GACxEA,EAAM,OAAO,QAAQ,CAACgB,MAAM+C,EAAW/D,GAAOA,EAAM,MAAMgB,CAAC,CAAC,GAC5D+C,EAAW/D,GAAOA,EAAM,MAAMA,EAAM,aAAa;AAAA,WACxCA,EAAM,aAAa;AAC5B,IAAAA,EAAM,aAAa,IAAI0B,EAAE,IAAI1B,EAAM,UAAU,GAC7CA,EAAM,aAAa,IAAI0B,EAAE,IAAI1B,EAAM,UAAU,GAC7CkD,EAAclD,CAAK;AAAA,WACVA,EAAM,aAAa,QAAQ;AACpC,QAAIW,IAAIe,EAAE,IAAI1B,EAAM,UAAU,GAC5BY,IAAIc,EAAE,IAAI1B,EAAM,UAAU;AAC5B,QAAIA,EAAM,cAAc,QAAQ;AAC9B,YAAMgE,IAAK,WAAWhE,EAAM,SAAS;AACrC,MAAAY,IAAK,KAAK,KAAKA,KAAK,CAAC,IAAI,KAAK,IAAID,CAAC,IAAKqD;AACxC,YAAMC,IACJrD,KAAK,IACDZ,EAAM,aAAa,SAASA,EAAM,UAAU,IAC5CA,EAAM,UAAU;AACtB,MAAI,KAAK,IAAIY,CAAC,IAAIqD,MAChBrD,IAAI,KAAK,KAAKA,CAAC,IAAIqD,GACnBtD,IAAI,KAAK,KAAKA,KAAK,CAAC,IAAI,KAAK,IAAIC,CAAC,IAAIoD;AAAA,IAE1C;AACA,IAAAhE,EAAM,WAAW,EAAE,GAAGA,EAAM,UAAU,GAAG,GAAGA,EAAM,UAAU,GAAG,GAAAW,GAAG,GAAAC,EAAC,GACnEsC,EAAclD,CAAK;AAAA,EACrB;AACF;AAEO,SAASkE,EAAKlE,GAAOC,GAAG;AAC7B,MACE,EAAAA,KACAD,EAAM,YACNA,EAAM,mBAAmB,QACzBC,EAAE,cAAcD,EAAM,kBAIxB;AAAA,QAAIA,EAAM,aAAa,UAAUA,EAAM;AACrC,MAAIA,EAAM,cAAc,OAAO,UAAU,MACvCA,EAAM,OAAO,KAAKA,EAAM,aAAa,GACrC2C,EAAY3C,GAAOA,EAAM,cAAc,EAAE,IAE3CA,EAAM,gBAAgB,MACtBmE,EAAOnE,CAAK,GACZA,EAAM,aAAa,gBACnBoE,EAAWpE,CAAK;AAAA,aACPA,EAAM,aAAa,cAAcA,EAAM;AAChD,UACE,KAAK,IAAIA,EAAM,aAAa,CAAC,IAAI,KACjC,KAAK,IAAIA,EAAM,aAAa,CAAC,IAAI,GACjC;AACA,QAAAA,EAAM,OAAO,KAAKA,EAAM,YAAY;AACpC,cAAMqE,IAAKrE,EAAM,aAAa;AAC9B,QAAAA,EAAM,eAAe,MACrB+C,EAAQ/C,GAAO,QAAQ,GACvB2C,EAAY3C,GAAOqE,CAAE,GACrBrE,EAAM,aAAa,eACnBoE,EAAWpE,CAAK;AAAA,MAClB;AACE,QAAAA,EAAM,eAAe,MACrBkD,EAAclD,CAAK,GACnBA,EAAM,OAAM;AAAA,aAELA,EAAM,aAAa;AAC5B,MAAIA,EAAM,aAAUA,EAAM,WAAWsE,EAAStE,EAAM,QAAQ,IAC5DkD,EAAclD,CAAK,GACnBA,EAAM,OAAM;AAAA,aAEZA,EAAM,aAAa,UACnBA,EAAM,aAAa,YACnBA,EAAM,aAAa,UACnB;AACA,UAAIA,EAAM,aAAa,UAAU;AAC/B,cAAMgB,IAAIhB,EAAM,OAAO,KAAK,CAACiC,MAAMA,EAAE,OAAOjC,EAAM,UAAU;AAC5D,QAAIgB,MAAGhB,EAAM,aAAa,cAAc,KAAK,MAAMgB,EAAE,QAAQ,CAAC;AAAA,MAChE;AACA,MAAAmD,EAAOnE,CAAK,GACZA,EAAM,OAAM;AAAA,IACd;AACA,IAAIA,EAAM,mBAAmB,SACvBA,EAAM,UAAU,kBAAkBA,EAAM,eAAe,KACzDA,EAAM,UAAU,sBAAsBA,EAAM,eAAe,GAE7DA,EAAM,kBAAkB,OAE1BA,EAAM,WAAW,MACjBA,EAAM,YAAY,MAClBA,EAAM,WAAW,MACjBA,EAAM,WAAW,MACjBA,EAAM,eAAe,MACrBA,EAAM,eAAe,MACrBA,EAAM,oBAAoB,MAC1BA,EAAM,cAAc;AAAA;AACtB;AAEO,SAASuE,EAAMvE,GAAOC,GAAG;AAC9B,MAAID,EAAM,SAAS,SAAU;AAC7B,QAAM0B,IAAI3B,EAASC,GAAOC,CAAC,GACzByC,IAAMjB,EAASzB,GAAO0B,CAAC;AACzB,EAAIgB,KAAOA,EAAI,SAAS,WACtBC,EAAY3C,GAAO0C,EAAI,EAAE,GACzBM,EAAehD,GAAO0C,GAAK,EAAK;AAEpC;"}
@@ -1,4 +1,4 @@
1
- import { applyZoom as m, renderOverlay as x } from "./index.es147.js";
1
+ import { applyZoom as m, renderOverlay as x } from "./index150.es.js";
2
2
  function f(n) {
3
3
  const [r, i] = n;
4
4
  return { x: (r.x + i.x) / 2, y: (r.y + i.y) / 2 };
@@ -54,4 +54,4 @@ export {
54
54
  h as panPointerUp,
55
55
  I as resetPan
56
56
  };
57
- //# sourceMappingURL=index.es164.js.map
57
+ //# sourceMappingURL=index164.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es164.js","sources":["../src/components/organisms/image-editor/engine/touch-pan.js"],"sourcesContent":["import { applyZoom, renderOverlay } from './rendering.js'\n\nfunction midpoint(points) {\n const [a, b] = points\n return { x: (a.x + b.x) / 2, y: (a.y + b.y) / 2 }\n}\n\nfunction distance(points) {\n const [a, b] = points\n return Math.hypot(a.x - b.x, a.y - b.y)\n}\n\nfunction cancelActiveDrag(state) {\n if (!state.dragMode) return\n state.pendingStroke = null\n state.pendingShape = null\n state.dragMode = null\n if (\n state.activePointerId != null &&\n state.overlayEl?.hasPointerCapture?.(state.activePointerId)\n ) {\n state.overlayEl.releasePointerCapture(state.activePointerId)\n }\n state.activePointerId = null\n renderOverlay(state)\n state.notify()\n}\n\nfunction baseline(state) {\n const points = [...state.panPointers.values()].slice(0, 2)\n if (points.length !== 2) return null\n const mid = midpoint(points)\n return { x: mid.x, y: mid.y, distance: distance(points) }\n}\n\nfunction cancelFrame(state) {\n if (state.panFrame == null) return\n cancelAnimationFrame(state.panFrame)\n state.panFrame = null\n}\n\nfunction applyGesture(state) {\n const points = [...state.panPointers.values()].slice(0, 2)\n if (points.length !== 2 || !state.panLast || !state.stageEl) return\n\n const stage = state.stageEl\n const mid = midpoint(points)\n const dist = distance(points)\n const rect = stage.getBoundingClientRect()\n const localX = mid.x - rect.left\n const localY = mid.y - rect.top\n\n if (state.panLast.distance > 0 && dist > 0) {\n const ratio = dist / state.panLast.distance\n if (Math.abs(ratio - 1) > 0.005) {\n const previousScale = state.viewScale\n applyZoom(state, state.zoom * ratio)\n const scaled = state.viewScale / previousScale\n if (scaled !== 1) {\n stage.scrollLeft = (stage.scrollLeft + localX) * scaled - localX\n stage.scrollTop = (stage.scrollTop + localY) * scaled - localY\n }\n }\n }\n\n stage.scrollLeft -= mid.x - state.panLast.x\n stage.scrollTop -= mid.y - state.panLast.y\n state.panLast = { x: mid.x, y: mid.y, distance: dist }\n}\n\nexport function panPointerDown(state, e) {\n if (e.pointerType === 'mouse') return false\n state.panPointers ??= new Map()\n state.panPointers.set(e.pointerId, { x: e.clientX, y: e.clientY })\n if (!state.stageEl || state.panPointers.size < 2) return false\n\n cancelActiveDrag(state)\n state.panLast = baseline(state)\n return true\n}\n\nexport function panPointerMove(state, e) {\n if (!state.panPointers?.has(e.pointerId)) return false\n state.panPointers.set(e.pointerId, { x: e.clientX, y: e.clientY })\n if (state.panPointers.size < 2 || !state.panLast || !state.stageEl) {\n return false\n }\n\n if (state.panFrame == null) {\n state.panFrame = requestAnimationFrame(() => {\n state.panFrame = null\n applyGesture(state)\n })\n }\n return true\n}\n\nexport function panPointerUp(state, e) {\n if (!state.panPointers) return\n if (state.panFrame != null) {\n cancelFrame(state)\n applyGesture(state)\n }\n state.panPointers.delete(e.pointerId)\n state.panLast = state.panPointers.size >= 2 ? baseline(state) : null\n}\n\nexport function resetPan(state) {\n cancelFrame(state)\n state.panPointers?.clear()\n state.panLast = null\n}\n"],"names":["midpoint","points","a","b","distance","cancelActiveDrag","state","renderOverlay","baseline","mid","cancelFrame","applyGesture","stage","dist","rect","localX","localY","ratio","previousScale","applyZoom","scaled","panPointerDown","e","panPointerMove","panPointerUp","resetPan"],"mappings":"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"}
1
+ {"version":3,"file":"index164.es.js","sources":["../src/components/organisms/image-editor/engine/touch-pan.js"],"sourcesContent":["import { applyZoom, renderOverlay } from './rendering.js'\n\nfunction midpoint(points) {\n const [a, b] = points\n return { x: (a.x + b.x) / 2, y: (a.y + b.y) / 2 }\n}\n\nfunction distance(points) {\n const [a, b] = points\n return Math.hypot(a.x - b.x, a.y - b.y)\n}\n\nfunction cancelActiveDrag(state) {\n if (!state.dragMode) return\n state.pendingStroke = null\n state.pendingShape = null\n state.dragMode = null\n if (\n state.activePointerId != null &&\n state.overlayEl?.hasPointerCapture?.(state.activePointerId)\n ) {\n state.overlayEl.releasePointerCapture(state.activePointerId)\n }\n state.activePointerId = null\n renderOverlay(state)\n state.notify()\n}\n\nfunction baseline(state) {\n const points = [...state.panPointers.values()].slice(0, 2)\n if (points.length !== 2) return null\n const mid = midpoint(points)\n return { x: mid.x, y: mid.y, distance: distance(points) }\n}\n\nfunction cancelFrame(state) {\n if (state.panFrame == null) return\n cancelAnimationFrame(state.panFrame)\n state.panFrame = null\n}\n\nfunction applyGesture(state) {\n const points = [...state.panPointers.values()].slice(0, 2)\n if (points.length !== 2 || !state.panLast || !state.stageEl) return\n\n const stage = state.stageEl\n const mid = midpoint(points)\n const dist = distance(points)\n const rect = stage.getBoundingClientRect()\n const localX = mid.x - rect.left\n const localY = mid.y - rect.top\n\n if (state.panLast.distance > 0 && dist > 0) {\n const ratio = dist / state.panLast.distance\n if (Math.abs(ratio - 1) > 0.005) {\n const previousScale = state.viewScale\n applyZoom(state, state.zoom * ratio)\n const scaled = state.viewScale / previousScale\n if (scaled !== 1) {\n stage.scrollLeft = (stage.scrollLeft + localX) * scaled - localX\n stage.scrollTop = (stage.scrollTop + localY) * scaled - localY\n }\n }\n }\n\n stage.scrollLeft -= mid.x - state.panLast.x\n stage.scrollTop -= mid.y - state.panLast.y\n state.panLast = { x: mid.x, y: mid.y, distance: dist }\n}\n\nexport function panPointerDown(state, e) {\n if (e.pointerType === 'mouse') return false\n state.panPointers ??= new Map()\n state.panPointers.set(e.pointerId, { x: e.clientX, y: e.clientY })\n if (!state.stageEl || state.panPointers.size < 2) return false\n\n cancelActiveDrag(state)\n state.panLast = baseline(state)\n return true\n}\n\nexport function panPointerMove(state, e) {\n if (!state.panPointers?.has(e.pointerId)) return false\n state.panPointers.set(e.pointerId, { x: e.clientX, y: e.clientY })\n if (state.panPointers.size < 2 || !state.panLast || !state.stageEl) {\n return false\n }\n\n if (state.panFrame == null) {\n state.panFrame = requestAnimationFrame(() => {\n state.panFrame = null\n applyGesture(state)\n })\n }\n return true\n}\n\nexport function panPointerUp(state, e) {\n if (!state.panPointers) return\n if (state.panFrame != null) {\n cancelFrame(state)\n applyGesture(state)\n }\n state.panPointers.delete(e.pointerId)\n state.panLast = state.panPointers.size >= 2 ? baseline(state) : null\n}\n\nexport function resetPan(state) {\n cancelFrame(state)\n state.panPointers?.clear()\n state.panLast = null\n}\n"],"names":["midpoint","points","a","b","distance","cancelActiveDrag","state","renderOverlay","baseline","mid","cancelFrame","applyGesture","stage","dist","rect","localX","localY","ratio","previousScale","applyZoom","scaled","panPointerDown","e","panPointerMove","panPointerUp","resetPan"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { X as s, Type as n, Sticker as c, Shapes as m } from "lucide-react";
2
2
  import e from "react";
3
- import { cn as i } from "./index.es89.js";
3
+ import { cn as i } from "./index89.es.js";
4
4
  function o(t) {
5
5
  return t === "text" ? /* @__PURE__ */ e.createElement(n, { className: "h-3.5 w-3.5 shrink-0 text-light-4" }) : t === "sticker" ? /* @__PURE__ */ e.createElement(c, { className: "h-3.5 w-3.5 shrink-0 text-light-4" }) : /* @__PURE__ */ e.createElement(m, { className: "h-3.5 w-3.5 shrink-0 text-light-4" });
6
6
  }
@@ -36,4 +36,4 @@ function h({ ui: t, engine: a }) {
36
36
  export {
37
37
  h as LayersList
38
38
  };
39
- //# sourceMappingURL=index.es165.js.map
39
+ //# sourceMappingURL=index165.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es165.js","sources":["../src/components/organisms/image-editor/components/layers-list.tsx"],"sourcesContent":["import { Shapes, Sticker, Type, X } from 'lucide-react'\nimport React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nimport { ImageEditorEngine, ImageEditorUiState } from '../image-editor.types'\n\ninterface LayersListProps {\n ui: ImageEditorUiState\n engine: ImageEditorEngine\n}\n\nfunction layerIcon(type: string) {\n if (type === 'text')\n return <Type className=\"h-3.5 w-3.5 shrink-0 text-light-4\" />\n if (type === 'sticker')\n return <Sticker className=\"h-3.5 w-3.5 shrink-0 text-light-4\" />\n return <Shapes className=\"h-3.5 w-3.5 shrink-0 text-light-4\" />\n}\n\nexport function LayersList({ ui, engine }: LayersListProps) {\n return (\n <div>\n <div className=\"my-3.5 h-px bg-neutral-1\" />\n <div className=\"mb-2 flex items-center justify-between text-xs text-light-4\">\n <span>Layers</span>\n <span>{ui.layers.length || ''}</span>\n </div>\n {!ui.layers.length ? (\n <p className=\"text-xs italic text-light-4\">\n No layers yet. Use Text, Draw, or Shape.\n </p>\n ) : (\n <div className=\"flex flex-col gap-1.5\">\n {[...ui.layers].reverse().map((l) => (\n <div\n key={l.id}\n className={cn(\n 'flex items-center gap-2 rounded-lg border border-neutral-1 bg-white px-2.5 py-1.5 text-xs cursor-pointer',\n ui.selected?.id === l.id && 'border-rest-p1 ring-1 ring-rest-p1'\n )}\n onClick={() => {\n if (ui.mode !== 'select') engine.setMode('select')\n engine.selectLayer(l.id)\n }}\n >\n {layerIcon(l.type)}\n <span className=\"flex-1 truncate\">{l.name}</span>\n <button\n type=\"button\"\n title=\"Delete\"\n onClick={(e) => {\n e.stopPropagation()\n engine.deleteLayer(l.id)\n }}\n className=\"text-light-4 hover:text-danger-1\"\n >\n <X className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"names":["layerIcon","type","React","Type","Sticker","Shapes","LayersList","ui","engine","l","cn","e","X"],"mappings":";;;AAYA,SAASA,EAAUC,GAAc;AAC/B,SAAIA,MAAS,SACJC,gBAAAA,EAAA,cAACC,GAAA,EAAK,WAAU,oCAAA,CAAoC,IACzDF,MAAS,YACJC,gBAAAA,EAAA,cAACE,GAAA,EAAQ,WAAU,oCAAA,CAAoC,IACzDF,gBAAAA,EAAA,cAACG,GAAA,EAAO,WAAU,oCAAA,CAAoC;AAC/D;AAEO,SAASC,EAAW,EAAE,IAAAC,GAAI,QAAAC,KAA2B;AAC1D,SACEN,gBAAAA,EAAA,cAAC,aACCA,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,2BAAA,CAA2B,mCACzC,OAAA,EAAI,WAAU,iEACbA,gBAAAA,EAAA,cAAC,QAAA,MAAK,QAAM,GACZA,gBAAAA,EAAA,cAAC,cAAMK,EAAG,OAAO,UAAU,EAAG,CAChC,GACEA,EAAG,OAAO,SAKVL,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,wBAAA,GACZ,CAAC,GAAGK,EAAG,MAAM,EAAE,QAAA,EAAU,IAAI,CAACE,MAC7BP,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKO,EAAE;AAAA,MACP,WAAWC;AAAA,QACT;AAAA,QACAH,EAAG,UAAU,OAAOE,EAAE,MAAM;AAAA,MAAA;AAAA,MAE9B,SAAS,MAAM;AACb,QAAIF,EAAG,SAAS,YAAUC,EAAO,QAAQ,QAAQ,GACjDA,EAAO,YAAYC,EAAE,EAAE;AAAA,MACzB;AAAA,IAAA;AAAA,IAECT,EAAUS,EAAE,IAAI;AAAA,IACjBP,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,kBAAA,GAAmBO,EAAE,IAAK;AAAA,IAC1CP,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAM;AAAA,QACN,SAAS,CAACS,MAAM;AACd,UAAAA,EAAE,gBAAA,GACFH,EAAO,YAAYC,EAAE,EAAE;AAAA,QACzB;AAAA,QACA,WAAU;AAAA,MAAA;AAAA,MAEVP,gBAAAA,EAAA,cAACU,GAAA,EAAE,WAAU,cAAA,CAAc;AAAA,IAAA;AAAA,EAC7B,CAEH,CACH,IAhCAV,gBAAAA,EAAA,cAAC,KAAA,EAAE,WAAU,8BAAA,GAA8B,0CAE3C,CAgCJ;AAEJ;"}
1
+ {"version":3,"file":"index165.es.js","sources":["../src/components/organisms/image-editor/components/layers-list.tsx"],"sourcesContent":["import { Shapes, Sticker, Type, X } from 'lucide-react'\nimport React from 'react'\n\nimport { cn } from '@/lib/utils'\n\nimport { ImageEditorEngine, ImageEditorUiState } from '../image-editor.types'\n\ninterface LayersListProps {\n ui: ImageEditorUiState\n engine: ImageEditorEngine\n}\n\nfunction layerIcon(type: string) {\n if (type === 'text')\n return <Type className=\"h-3.5 w-3.5 shrink-0 text-light-4\" />\n if (type === 'sticker')\n return <Sticker className=\"h-3.5 w-3.5 shrink-0 text-light-4\" />\n return <Shapes className=\"h-3.5 w-3.5 shrink-0 text-light-4\" />\n}\n\nexport function LayersList({ ui, engine }: LayersListProps) {\n return (\n <div>\n <div className=\"my-3.5 h-px bg-neutral-1\" />\n <div className=\"mb-2 flex items-center justify-between text-xs text-light-4\">\n <span>Layers</span>\n <span>{ui.layers.length || ''}</span>\n </div>\n {!ui.layers.length ? (\n <p className=\"text-xs italic text-light-4\">\n No layers yet. Use Text, Draw, or Shape.\n </p>\n ) : (\n <div className=\"flex flex-col gap-1.5\">\n {[...ui.layers].reverse().map((l) => (\n <div\n key={l.id}\n className={cn(\n 'flex items-center gap-2 rounded-lg border border-neutral-1 bg-white px-2.5 py-1.5 text-xs cursor-pointer',\n ui.selected?.id === l.id && 'border-rest-p1 ring-1 ring-rest-p1'\n )}\n onClick={() => {\n if (ui.mode !== 'select') engine.setMode('select')\n engine.selectLayer(l.id)\n }}\n >\n {layerIcon(l.type)}\n <span className=\"flex-1 truncate\">{l.name}</span>\n <button\n type=\"button\"\n title=\"Delete\"\n onClick={(e) => {\n e.stopPropagation()\n engine.deleteLayer(l.id)\n }}\n className=\"text-light-4 hover:text-danger-1\"\n >\n <X className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n ))}\n </div>\n )}\n </div>\n )\n}\n"],"names":["layerIcon","type","React","Type","Sticker","Shapes","LayersList","ui","engine","l","cn","e","X"],"mappings":";;;AAYA,SAASA,EAAUC,GAAc;AAC/B,SAAIA,MAAS,SACJC,gBAAAA,EAAA,cAACC,GAAA,EAAK,WAAU,oCAAA,CAAoC,IACzDF,MAAS,YACJC,gBAAAA,EAAA,cAACE,GAAA,EAAQ,WAAU,oCAAA,CAAoC,IACzDF,gBAAAA,EAAA,cAACG,GAAA,EAAO,WAAU,oCAAA,CAAoC;AAC/D;AAEO,SAASC,EAAW,EAAE,IAAAC,GAAI,QAAAC,KAA2B;AAC1D,SACEN,gBAAAA,EAAA,cAAC,aACCA,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,2BAAA,CAA2B,mCACzC,OAAA,EAAI,WAAU,iEACbA,gBAAAA,EAAA,cAAC,QAAA,MAAK,QAAM,GACZA,gBAAAA,EAAA,cAAC,cAAMK,EAAG,OAAO,UAAU,EAAG,CAChC,GACEA,EAAG,OAAO,SAKVL,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,wBAAA,GACZ,CAAC,GAAGK,EAAG,MAAM,EAAE,QAAA,EAAU,IAAI,CAACE,MAC7BP,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKO,EAAE;AAAA,MACP,WAAWC;AAAA,QACT;AAAA,QACAH,EAAG,UAAU,OAAOE,EAAE,MAAM;AAAA,MAAA;AAAA,MAE9B,SAAS,MAAM;AACb,QAAIF,EAAG,SAAS,YAAUC,EAAO,QAAQ,QAAQ,GACjDA,EAAO,YAAYC,EAAE,EAAE;AAAA,MACzB;AAAA,IAAA;AAAA,IAECT,EAAUS,EAAE,IAAI;AAAA,IACjBP,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,kBAAA,GAAmBO,EAAE,IAAK;AAAA,IAC1CP,gBAAAA,EAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAM;AAAA,QACN,SAAS,CAACS,MAAM;AACd,UAAAA,EAAE,gBAAA,GACFH,EAAO,YAAYC,EAAE,EAAE;AAAA,QACzB;AAAA,QACA,WAAU;AAAA,MAAA;AAAA,MAEVP,gBAAAA,EAAA,cAACU,GAAA,EAAE,WAAU,cAAA,CAAc;AAAA,IAAA;AAAA,EAC7B,CAEH,CACH,IAhCAV,gBAAAA,EAAA,cAAC,KAAA,EAAE,WAAU,8BAAA,GAA8B,0CAE3C,CAgCJ;AAEJ;"}
@@ -1,7 +1,7 @@
1
1
  import t from "react";
2
- import { Slider as i } from "./index.es30.js";
3
- import { SwatchGrid as n } from "./index.es38.js";
4
- import { FILTERS as r } from "./index.es145.js";
2
+ import { Slider as i } from "./index30.es.js";
3
+ import { SwatchGrid as n } from "./index38.es.js";
4
+ import { FILTERS as r } from "./index148.es.js";
5
5
  const s = [
6
6
  { key: "brightness", label: "Brightness", suffix: "%", min: 0, max: 200 },
7
7
  { key: "contrast", label: "Contrast", suffix: "%", min: 0, max: 200 },
@@ -33,4 +33,4 @@ function o({ adjustments: a, engine: l }) {
33
33
  export {
34
34
  o as PanelAdjust
35
35
  };
36
- //# sourceMappingURL=index.es166.js.map
36
+ //# sourceMappingURL=index166.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es166.js","sources":["../src/components/organisms/image-editor/components/panel-adjust.tsx"],"sourcesContent":["import React from 'react'\n\nimport { Slider } from '@/components/molecules/slider'\nimport { SwatchGrid } from '@/components/molecules/swatch-grid'\n\nimport {\n ImageEditorAdjustments,\n ImageEditorEngine,\n} from '../image-editor.types'\nimport { FILTERS } from '../picture-studio-engine'\n\nconst SLIDERS: {\n key: Exclude<keyof ImageEditorAdjustments, 'filter'>\n label: string\n suffix: string\n min: number\n max: number\n}[] = [\n { key: 'brightness', label: 'Brightness', suffix: '%', min: 0, max: 200 },\n { key: 'contrast', label: 'Contrast', suffix: '%', min: 0, max: 200 },\n { key: 'saturate', label: 'Saturation', suffix: '%', min: 0, max: 200 },\n { key: 'sepia', label: 'Warmth', suffix: '%', min: 0, max: 100 },\n { key: 'blur', label: 'Blur', suffix: 'px', min: 0, max: 12 },\n { key: 'hue', label: 'Hue', suffix: '°', min: 0, max: 360 },\n]\n\ninterface PanelAdjustProps {\n adjustments: ImageEditorAdjustments\n engine: ImageEditorEngine\n}\n\nexport function PanelAdjust({ adjustments, engine }: PanelAdjustProps) {\n return (\n <div>\n {SLIDERS.map((s) => (\n <div key={s.key} className=\"mb-3\">\n <div className=\"mb-1 flex justify-between text-xs\">\n <span>{s.label}</span>\n <span className=\"tabular-nums text-light-4\">\n {adjustments[s.key]}\n {s.suffix}\n </span>\n </div>\n <Slider\n min={s.min}\n max={s.max}\n step={1}\n value={[adjustments[s.key]]}\n onValueChange={([v]) => engine.setAdjustment(s.key, v)}\n />\n </div>\n ))}\n <div className=\"my-3.5 h-px bg-neutral-1\" />\n <span className=\"mb-2 block text-xs text-light-4\">Artistic filters</span>\n <SwatchGrid\n columns={2}\n value={adjustments.filter}\n onSelect={(id) => engine.setFilter(id)}\n items={FILTERS.map((f) => ({ value: f.id, label: f.name }))}\n />\n </div>\n )\n}\n"],"names":["SLIDERS","PanelAdjust","adjustments","engine","React","s","Slider","v","SwatchGrid","id","FILTERS","f"],"mappings":";;;;AAWA,MAAMA,IAMA;AAAA,EACJ,EAAE,KAAK,cAAc,OAAO,cAAc,QAAQ,KAAK,KAAK,GAAG,KAAK,IAAA;AAAA,EACpE,EAAE,KAAK,YAAY,OAAO,YAAY,QAAQ,KAAK,KAAK,GAAG,KAAK,IAAA;AAAA,EAChE,EAAE,KAAK,YAAY,OAAO,cAAc,QAAQ,KAAK,KAAK,GAAG,KAAK,IAAA;AAAA,EAClE,EAAE,KAAK,SAAS,OAAO,UAAU,QAAQ,KAAK,KAAK,GAAG,KAAK,IAAA;AAAA,EAC3D,EAAE,KAAK,QAAQ,OAAO,QAAQ,QAAQ,MAAM,KAAK,GAAG,KAAK,GAAA;AAAA,EACzD,EAAE,KAAK,OAAO,OAAO,OAAO,QAAQ,KAAK,KAAK,GAAG,KAAK,IAAA;AACxD;AAOO,SAASC,EAAY,EAAE,aAAAC,GAAa,QAAAC,KAA4B;AACrE,SACEC,gBAAAA,EAAA,cAAC,OAAA,MACEJ,EAAQ,IAAI,CAACK,MACZD,gBAAAA,EAAA,cAAC,OAAA,EAAI,KAAKC,EAAE,KAAK,WAAU,OAAA,mCACxB,OAAA,EAAI,WAAU,oCAAA,GACbD,gBAAAA,EAAA,cAAC,QAAA,MAAMC,EAAE,KAAM,mCACd,QAAA,EAAK,WAAU,4BAAA,GACbH,EAAYG,EAAE,GAAG,GACjBA,EAAE,MACL,CACF,GACAD,gBAAAA,EAAA;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,KAAKD,EAAE;AAAA,MACP,KAAKA,EAAE;AAAA,MACP,MAAM;AAAA,MACN,OAAO,CAACH,EAAYG,EAAE,GAAG,CAAC;AAAA,MAC1B,eAAe,CAAC,CAACE,CAAC,MAAMJ,EAAO,cAAcE,EAAE,KAAKE,CAAC;AAAA,IAAA;AAAA,EAAA,CAEzD,CACD,GACDH,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,4BAA2B,GAC1CA,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,kCAAA,GAAkC,kBAAgB,GAClEA,gBAAAA,EAAA;AAAA,IAACI;AAAA,IAAA;AAAA,MACC,SAAS;AAAA,MACT,OAAON,EAAY;AAAA,MACnB,UAAU,CAACO,MAAON,EAAO,UAAUM,CAAE;AAAA,MACrC,OAAOC,EAAQ,IAAI,CAACC,OAAO,EAAE,OAAOA,EAAE,IAAI,OAAOA,EAAE,KAAA,EAAO;AAAA,IAAA;AAAA,EAAA,CAE9D;AAEJ;"}
1
+ {"version":3,"file":"index166.es.js","sources":["../src/components/organisms/image-editor/components/panel-adjust.tsx"],"sourcesContent":["import React from 'react'\n\nimport { Slider } from '@/components/molecules/slider'\nimport { SwatchGrid } from '@/components/molecules/swatch-grid'\n\nimport {\n ImageEditorAdjustments,\n ImageEditorEngine,\n} from '../image-editor.types'\nimport { FILTERS } from '../picture-studio-engine'\n\nconst SLIDERS: {\n key: Exclude<keyof ImageEditorAdjustments, 'filter'>\n label: string\n suffix: string\n min: number\n max: number\n}[] = [\n { key: 'brightness', label: 'Brightness', suffix: '%', min: 0, max: 200 },\n { key: 'contrast', label: 'Contrast', suffix: '%', min: 0, max: 200 },\n { key: 'saturate', label: 'Saturation', suffix: '%', min: 0, max: 200 },\n { key: 'sepia', label: 'Warmth', suffix: '%', min: 0, max: 100 },\n { key: 'blur', label: 'Blur', suffix: 'px', min: 0, max: 12 },\n { key: 'hue', label: 'Hue', suffix: '°', min: 0, max: 360 },\n]\n\ninterface PanelAdjustProps {\n adjustments: ImageEditorAdjustments\n engine: ImageEditorEngine\n}\n\nexport function PanelAdjust({ adjustments, engine }: PanelAdjustProps) {\n return (\n <div>\n {SLIDERS.map((s) => (\n <div key={s.key} className=\"mb-3\">\n <div className=\"mb-1 flex justify-between text-xs\">\n <span>{s.label}</span>\n <span className=\"tabular-nums text-light-4\">\n {adjustments[s.key]}\n {s.suffix}\n </span>\n </div>\n <Slider\n min={s.min}\n max={s.max}\n step={1}\n value={[adjustments[s.key]]}\n onValueChange={([v]) => engine.setAdjustment(s.key, v)}\n />\n </div>\n ))}\n <div className=\"my-3.5 h-px bg-neutral-1\" />\n <span className=\"mb-2 block text-xs text-light-4\">Artistic filters</span>\n <SwatchGrid\n columns={2}\n value={adjustments.filter}\n onSelect={(id) => engine.setFilter(id)}\n items={FILTERS.map((f) => ({ value: f.id, label: f.name }))}\n />\n </div>\n )\n}\n"],"names":["SLIDERS","PanelAdjust","adjustments","engine","React","s","Slider","v","SwatchGrid","id","FILTERS","f"],"mappings":";;;;AAWA,MAAMA,IAMA;AAAA,EACJ,EAAE,KAAK,cAAc,OAAO,cAAc,QAAQ,KAAK,KAAK,GAAG,KAAK,IAAA;AAAA,EACpE,EAAE,KAAK,YAAY,OAAO,YAAY,QAAQ,KAAK,KAAK,GAAG,KAAK,IAAA;AAAA,EAChE,EAAE,KAAK,YAAY,OAAO,cAAc,QAAQ,KAAK,KAAK,GAAG,KAAK,IAAA;AAAA,EAClE,EAAE,KAAK,SAAS,OAAO,UAAU,QAAQ,KAAK,KAAK,GAAG,KAAK,IAAA;AAAA,EAC3D,EAAE,KAAK,QAAQ,OAAO,QAAQ,QAAQ,MAAM,KAAK,GAAG,KAAK,GAAA;AAAA,EACzD,EAAE,KAAK,OAAO,OAAO,OAAO,QAAQ,KAAK,KAAK,GAAG,KAAK,IAAA;AACxD;AAOO,SAASC,EAAY,EAAE,aAAAC,GAAa,QAAAC,KAA4B;AACrE,SACEC,gBAAAA,EAAA,cAAC,OAAA,MACEJ,EAAQ,IAAI,CAACK,MACZD,gBAAAA,EAAA,cAAC,OAAA,EAAI,KAAKC,EAAE,KAAK,WAAU,OAAA,mCACxB,OAAA,EAAI,WAAU,oCAAA,GACbD,gBAAAA,EAAA,cAAC,QAAA,MAAMC,EAAE,KAAM,mCACd,QAAA,EAAK,WAAU,4BAAA,GACbH,EAAYG,EAAE,GAAG,GACjBA,EAAE,MACL,CACF,GACAD,gBAAAA,EAAA;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,KAAKD,EAAE;AAAA,MACP,KAAKA,EAAE;AAAA,MACP,MAAM;AAAA,MACN,OAAO,CAACH,EAAYG,EAAE,GAAG,CAAC;AAAA,MAC1B,eAAe,CAAC,CAACE,CAAC,MAAMJ,EAAO,cAAcE,EAAE,KAAKE,CAAC;AAAA,IAAA;AAAA,EAAA,CAEzD,CACD,GACDH,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,4BAA2B,GAC1CA,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,kCAAA,GAAkC,kBAAgB,GAClEA,gBAAAA,EAAA;AAAA,IAACI;AAAA,IAAA;AAAA,MACC,SAAS;AAAA,MACT,OAAON,EAAY;AAAA,MACnB,UAAU,CAACO,MAAON,EAAO,UAAUM,CAAE;AAAA,MACrC,OAAOC,EAAQ,IAAI,CAACC,OAAO,EAAE,OAAOA,EAAE,IAAI,OAAOA,EAAE,KAAA,EAAO;AAAA,IAAA;AAAA,EAAA,CAE9D;AAEJ;"}
@@ -1,7 +1,7 @@
1
1
  import e from "react";
2
- import { SingleSelect as l } from "./index.es29.js";
3
- import { CROP_RATIOS as o } from "./index.es145.js";
4
- import { useImageEditorPortalContainer as n } from "./index.es140.js";
2
+ import { SingleSelect as l } from "./index29.es.js";
3
+ import { CROP_RATIOS as o } from "./index148.es.js";
4
+ import { useImageEditorPortalContainer as n } from "./index143.es.js";
5
5
  function s({ ui: r, engine: t }) {
6
6
  const a = n();
7
7
  return /* @__PURE__ */ e.createElement("div", null, /* @__PURE__ */ e.createElement("p", { className: "mb-3.5 text-xs leading-relaxed text-light-4" }, "Drag a box on the image, then apply."), /* @__PURE__ */ e.createElement("span", { className: "mb-1 block text-xs text-light-4" }, "Aspect ratio"), /* @__PURE__ */ e.createElement(
@@ -33,4 +33,4 @@ function s({ ui: r, engine: t }) {
33
33
  export {
34
34
  s as PanelCrop
35
35
  };
36
- //# sourceMappingURL=index.es167.js.map
36
+ //# sourceMappingURL=index167.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es167.js","sources":["../src/components/organisms/image-editor/components/panel-crop.tsx"],"sourcesContent":["import React from 'react'\n\nimport { SingleSelect } from '@/components/molecules/single-select'\n\nimport { ImageEditorEngine, ImageEditorUiState } from '../image-editor.types'\nimport { CROP_RATIOS } from '../picture-studio-engine'\nimport { useImageEditorPortalContainer } from './portal-context'\n\ninterface PanelCropProps {\n ui: ImageEditorUiState\n engine: ImageEditorEngine\n}\n\nexport function PanelCrop({ ui, engine }: PanelCropProps) {\n const container = useImageEditorPortalContainer()\n return (\n <div>\n <p className=\"mb-3.5 text-xs leading-relaxed text-light-4\">\n Drag a box on the image, then apply.\n </p>\n <span className=\"mb-1 block text-xs text-light-4\">Aspect ratio</span>\n <SingleSelect\n items={CROP_RATIOS}\n value={ui.cropRatio}\n onValueChange={engine.setCropRatio}\n container={container}\n />\n <div className=\"my-3.5 h-px bg-neutral-1\" />\n <button\n type=\"button\"\n onClick={engine.applyCrop}\n className=\"mb-2 w-full rounded-lg bg-rest-p1 py-2.5 text-sm text-white hover:bg-hover-p1\"\n >\n Apply crop\n </button>\n <button\n type=\"button\"\n onClick={engine.cancelCrop}\n className=\"w-full rounded-lg border border-neutral-1 bg-white py-2.5 text-sm hover:bg-light-3\"\n >\n Cancel\n </button>\n </div>\n )\n}\n"],"names":["PanelCrop","ui","engine","container","useImageEditorPortalContainer","React","SingleSelect","CROP_RATIOS"],"mappings":";;;;AAaO,SAASA,EAAU,EAAE,IAAAC,GAAI,QAAAC,KAA0B;AACxD,QAAMC,IAAYC,EAAA;AAClB,SACEC,gBAAAA,EAAA,cAAC,OAAA,MACCA,gBAAAA,EAAA,cAAC,KAAA,EAAE,WAAU,8CAAA,GAA8C,sCAE3D,GACAA,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,qCAAkC,cAAY,GAC9DA,gBAAAA,EAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAOC;AAAA,MACP,OAAON,EAAG;AAAA,MACV,eAAeC,EAAO;AAAA,MACtB,WAAAC;AAAA,IAAA;AAAA,EAAA,GAEFE,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,4BAA2B,GAC1CA,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAASH,EAAO;AAAA,MAChB,WAAU;AAAA,IAAA;AAAA,IACX;AAAA,EAAA,GAGDG,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAASH,EAAO;AAAA,MAChB,WAAU;AAAA,IAAA;AAAA,IACX;AAAA,EAAA,CAGH;AAEJ;"}
1
+ {"version":3,"file":"index167.es.js","sources":["../src/components/organisms/image-editor/components/panel-crop.tsx"],"sourcesContent":["import React from 'react'\n\nimport { SingleSelect } from '@/components/molecules/single-select'\n\nimport { ImageEditorEngine, ImageEditorUiState } from '../image-editor.types'\nimport { CROP_RATIOS } from '../picture-studio-engine'\nimport { useImageEditorPortalContainer } from './portal-context'\n\ninterface PanelCropProps {\n ui: ImageEditorUiState\n engine: ImageEditorEngine\n}\n\nexport function PanelCrop({ ui, engine }: PanelCropProps) {\n const container = useImageEditorPortalContainer()\n return (\n <div>\n <p className=\"mb-3.5 text-xs leading-relaxed text-light-4\">\n Drag a box on the image, then apply.\n </p>\n <span className=\"mb-1 block text-xs text-light-4\">Aspect ratio</span>\n <SingleSelect\n items={CROP_RATIOS}\n value={ui.cropRatio}\n onValueChange={engine.setCropRatio}\n container={container}\n />\n <div className=\"my-3.5 h-px bg-neutral-1\" />\n <button\n type=\"button\"\n onClick={engine.applyCrop}\n className=\"mb-2 w-full rounded-lg bg-rest-p1 py-2.5 text-sm text-white hover:bg-hover-p1\"\n >\n Apply crop\n </button>\n <button\n type=\"button\"\n onClick={engine.cancelCrop}\n className=\"w-full rounded-lg border border-neutral-1 bg-white py-2.5 text-sm hover:bg-light-3\"\n >\n Cancel\n </button>\n </div>\n )\n}\n"],"names":["PanelCrop","ui","engine","container","useImageEditorPortalContainer","React","SingleSelect","CROP_RATIOS"],"mappings":";;;;AAaO,SAASA,EAAU,EAAE,IAAAC,GAAI,QAAAC,KAA0B;AACxD,QAAMC,IAAYC,EAAA;AAClB,SACEC,gBAAAA,EAAA,cAAC,OAAA,MACCA,gBAAAA,EAAA,cAAC,KAAA,EAAE,WAAU,8CAAA,GAA8C,sCAE3D,GACAA,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,qCAAkC,cAAY,GAC9DA,gBAAAA,EAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAOC;AAAA,MACP,OAAON,EAAG;AAAA,MACV,eAAeC,EAAO;AAAA,MACtB,WAAAC;AAAA,IAAA;AAAA,EAAA,GAEFE,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,4BAA2B,GAC1CA,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAASH,EAAO;AAAA,MAChB,WAAU;AAAA,IAAA;AAAA,IACX;AAAA,EAAA,GAGDG,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAASH,EAAO;AAAA,MAChB,WAAU;AAAA,IAAA;AAAA,IACX;AAAA,EAAA,CAGH;AAEJ;"}
@@ -1,11 +1,11 @@
1
1
  import e from "react";
2
- import { Slider as s } from "./index.es30.js";
3
- import { SingleSelect as r } from "./index.es29.js";
4
- import { SwatchGrid as c } from "./index.es38.js";
5
- import { FONTS as n, SHAPES as h } from "./index.es145.js";
6
- import { ShapeIcons as i } from "./index.es180.js";
7
- import { ColorPicker as o } from "./index.es181.js";
8
- import { useImageEditorPortalContainer as p } from "./index.es140.js";
2
+ import { Slider as s } from "./index30.es.js";
3
+ import { SingleSelect as r } from "./index29.es.js";
4
+ import { SwatchGrid as c } from "./index38.es.js";
5
+ import { FONTS as n, SHAPES as h } from "./index148.es.js";
6
+ import { ShapeIcons as i } from "./index180.es.js";
7
+ import { ColorPicker as o } from "./index181.es.js";
8
+ import { useImageEditorPortalContainer as p } from "./index143.es.js";
9
9
  const x = [
10
10
  { label: "Outline only", value: "stroke" },
11
11
  { label: "Solid fill", value: "fill" }
@@ -91,4 +91,4 @@ function f({ ui: t, engine: l }) {
91
91
  export {
92
92
  f as PanelInsert
93
93
  };
94
- //# sourceMappingURL=index.es168.js.map
94
+ //# sourceMappingURL=index168.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es168.js","sources":["../src/components/organisms/image-editor/components/panel-insert.tsx"],"sourcesContent":["import React from 'react'\n\nimport { Slider } from '@/components/molecules/slider'\nimport { SingleSelect } from '@/components/molecules/single-select'\nimport { SwatchGrid } from '@/components/molecules/swatch-grid'\n\nimport { ImageEditorEngine, ImageEditorUiState } from '../image-editor.types'\nimport { FONTS, SHAPES } from '../picture-studio-engine'\nimport { ShapeIcons } from './shape-icons'\nimport { ColorPicker } from './color-picker'\nimport { useImageEditorPortalContainer } from './portal-context'\n\ninterface PanelInsertProps {\n ui: ImageEditorUiState\n engine: ImageEditorEngine\n}\n\nconst FILL_ITEMS = [\n { label: 'Outline only', value: 'stroke' },\n { label: 'Solid fill', value: 'fill' },\n]\nconst BRUSH_STYLE_ITEMS = [\n { label: 'Marker', value: 'round' },\n { label: 'Highlighter', value: 'highlight' },\n]\n\nexport function PanelInsert({ ui, engine }: PanelInsertProps) {\n const container = useImageEditorPortalContainer()\n return (\n <div>\n {ui.mode === 'text' && (\n <div className=\"mb-3.5\">\n <span className=\"mb-1 block text-xs text-light-4\">Font</span>\n <SingleSelect\n items={FONTS}\n value={ui.textFont}\n onValueChange={engine.setTextFont}\n container={container}\n />\n <span className=\"mb-1 mt-2.5 block text-xs text-light-4\">Size</span>\n <Slider\n min={16}\n max={200}\n step={1}\n value={[ui.textSize]}\n onValueChange={([v]) => engine.setTextSize(v)}\n />\n </div>\n )}\n\n {ui.mode === 'shape' && (\n <div className=\"mb-3.5\">\n <span className=\"mb-1 block text-xs text-light-4\">Shape</span>\n <SwatchGrid\n columns={3}\n value={ui.selectedShapeType}\n onSelect={engine.selectShapeType}\n items={SHAPES.map((s) => ({\n value: s.id,\n label: s.name,\n icon: ShapeIcons[s.id],\n }))}\n />\n <span className=\"mb-1 mt-2.5 block text-xs text-light-4\">\n Fill style\n </span>\n <SingleSelect\n items={FILL_ITEMS}\n value={ui.shapeFill}\n onValueChange={(v) => engine.setShapeFill(v as 'stroke' | 'fill')}\n container={container}\n />\n <span className=\"mb-1 mt-2.5 block text-xs text-light-4\">\n Thickness\n </span>\n <Slider\n min={1}\n max={40}\n step={1}\n value={[ui.shapeWidth]}\n onValueChange={([v]) => engine.setShapeWidth(v)}\n />\n </div>\n )}\n\n {ui.mode === 'draw' && (\n <div className=\"mb-3.5\">\n <span className=\"mb-1 block text-xs text-light-4\">Brush size</span>\n <Slider\n min={1}\n max={60}\n step={1}\n value={[ui.brushSize]}\n onValueChange={([v]) => engine.setBrushSize(v)}\n />\n <span className=\"mb-1 mt-2.5 block text-xs text-light-4\">\n Brush style\n </span>\n <SingleSelect\n items={BRUSH_STYLE_ITEMS}\n value={ui.brushStyle}\n onValueChange={(v) =>\n engine.setBrushStyle(v as 'round' | 'highlight')\n }\n container={container}\n />\n </div>\n )}\n\n {ui.mode === 'sticker' && (\n <div className=\"mb-3.5\">\n <SwatchGrid\n columns={3}\n onSelect={engine.addSticker}\n emptyMessage={\n <>\n No stickers configured — pass a <code>stickers</code> prop with\n image URLs.\n </>\n }\n items={ui.stickers.map((src) => ({ value: src, thumbnail: src }))}\n />\n </div>\n )}\n\n {ui.mode === 'text' && (\n <ColorPicker value={ui.textColor} onChange={engine.setTextColor} />\n )}\n {ui.mode === 'shape' && (\n <ColorPicker value={ui.shapeColor} onChange={engine.setShapeColor} />\n )}\n {ui.mode === 'draw' && (\n <ColorPicker value={ui.drawColor} onChange={engine.setDrawColor} />\n )}\n </div>\n )\n}\n"],"names":["FILL_ITEMS","BRUSH_STYLE_ITEMS","PanelInsert","ui","engine","container","useImageEditorPortalContainer","React","SingleSelect","FONTS","Slider","v","SwatchGrid","SHAPES","s","ShapeIcons","src","ColorPicker"],"mappings":";;;;;;;;AAiBA,MAAMA,IAAa;AAAA,EACjB,EAAE,OAAO,gBAAgB,OAAO,SAAA;AAAA,EAChC,EAAE,OAAO,cAAc,OAAO,OAAA;AAChC,GACMC,IAAoB;AAAA,EACxB,EAAE,OAAO,UAAU,OAAO,QAAA;AAAA,EAC1B,EAAE,OAAO,eAAe,OAAO,YAAA;AACjC;AAEO,SAASC,EAAY,EAAE,IAAAC,GAAI,QAAAC,KAA4B;AAC5D,QAAMC,IAAYC,EAAA;AAClB,SACEC,gBAAAA,EAAA,cAAC,OAAA,MACEJ,EAAG,SAAS,UACXI,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,YACbA,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,qCAAkC,MAAI,GACtDA,gBAAAA,EAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAOC;AAAA,MACP,OAAON,EAAG;AAAA,MACV,eAAeC,EAAO;AAAA,MACtB,WAAAC;AAAA,IAAA;AAAA,EAAA,GAEFE,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,4CAAyC,MAAI,GAC7DA,gBAAAA,EAAA;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO,CAACP,EAAG,QAAQ;AAAA,MACnB,eAAe,CAAC,CAACQ,CAAC,MAAMP,EAAO,YAAYO,CAAC;AAAA,IAAA;AAAA,EAAA,CAEhD,GAGDR,EAAG,SAAS,WACXI,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,SAAA,GACbA,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,qCAAkC,OAAK,GACvDA,gBAAAA,EAAA;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,SAAS;AAAA,MACT,OAAOT,EAAG;AAAA,MACV,UAAUC,EAAO;AAAA,MACjB,OAAOS,EAAO,IAAI,CAACC,OAAO;AAAA,QACxB,OAAOA,EAAE;AAAA,QACT,OAAOA,EAAE;AAAA,QACT,MAAMC,EAAWD,EAAE,EAAE;AAAA,MAAA,EACrB;AAAA,IAAA;AAAA,EAAA,GAEJP,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,4CAAyC,YAEzD,GACAA,gBAAAA,EAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAOR;AAAA,MACP,OAAOG,EAAG;AAAA,MACV,eAAe,CAACQ,MAAMP,EAAO,aAAaO,CAAsB;AAAA,MAChE,WAAAN;AAAA,IAAA;AAAA,EAAA,GAEFE,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,4CAAyC,WAEzD,GACAA,gBAAAA,EAAA;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO,CAACP,EAAG,UAAU;AAAA,MACrB,eAAe,CAAC,CAACQ,CAAC,MAAMP,EAAO,cAAcO,CAAC;AAAA,IAAA;AAAA,EAAA,CAElD,GAGDR,EAAG,SAAS,UACXI,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,SAAA,GACbA,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,qCAAkC,YAAU,GAC5DA,gBAAAA,EAAA;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO,CAACP,EAAG,SAAS;AAAA,MACpB,eAAe,CAAC,CAACQ,CAAC,MAAMP,EAAO,aAAaO,CAAC;AAAA,IAAA;AAAA,EAAA,GAE/CJ,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,4CAAyC,aAEzD,GACAA,gBAAAA,EAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAOP;AAAA,MACP,OAAOE,EAAG;AAAA,MACV,eAAe,CAACQ,MACdP,EAAO,cAAcO,CAA0B;AAAA,MAEjD,WAAAN;AAAA,IAAA;AAAA,EAAA,CAEJ,GAGDF,EAAG,SAAS,aACXI,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,SAAA,GACbA,gBAAAA,EAAA;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,SAAS;AAAA,MACT,UAAUR,EAAO;AAAA,MACjB,cACEG,gBAAAA,EAAA,cAAAA,EAAA,UAAA,MAAE,oEACiC,QAAA,MAAK,UAAQ,GAAO,wBAEvD;AAAA,MAEF,OAAOJ,EAAG,SAAS,IAAI,CAACa,OAAS,EAAE,OAAOA,GAAK,WAAWA,IAAM;AAAA,IAAA;AAAA,EAAA,CAEpE,GAGDb,EAAG,SAAS,0CACVc,GAAA,EAAY,OAAOd,EAAG,WAAW,UAAUC,EAAO,aAAA,CAAc,GAElED,EAAG,SAAS,WACXI,gBAAAA,EAAA,cAACU,GAAA,EAAY,OAAOd,EAAG,YAAY,UAAUC,EAAO,eAAe,GAEpED,EAAG,SAAS,UACXI,gBAAAA,EAAA,cAACU,KAAY,OAAOd,EAAG,WAAW,UAAUC,EAAO,cAAc,CAErE;AAEJ;"}
1
+ {"version":3,"file":"index168.es.js","sources":["../src/components/organisms/image-editor/components/panel-insert.tsx"],"sourcesContent":["import React from 'react'\n\nimport { Slider } from '@/components/molecules/slider'\nimport { SingleSelect } from '@/components/molecules/single-select'\nimport { SwatchGrid } from '@/components/molecules/swatch-grid'\n\nimport { ImageEditorEngine, ImageEditorUiState } from '../image-editor.types'\nimport { FONTS, SHAPES } from '../picture-studio-engine'\nimport { ShapeIcons } from './shape-icons'\nimport { ColorPicker } from './color-picker'\nimport { useImageEditorPortalContainer } from './portal-context'\n\ninterface PanelInsertProps {\n ui: ImageEditorUiState\n engine: ImageEditorEngine\n}\n\nconst FILL_ITEMS = [\n { label: 'Outline only', value: 'stroke' },\n { label: 'Solid fill', value: 'fill' },\n]\nconst BRUSH_STYLE_ITEMS = [\n { label: 'Marker', value: 'round' },\n { label: 'Highlighter', value: 'highlight' },\n]\n\nexport function PanelInsert({ ui, engine }: PanelInsertProps) {\n const container = useImageEditorPortalContainer()\n return (\n <div>\n {ui.mode === 'text' && (\n <div className=\"mb-3.5\">\n <span className=\"mb-1 block text-xs text-light-4\">Font</span>\n <SingleSelect\n items={FONTS}\n value={ui.textFont}\n onValueChange={engine.setTextFont}\n container={container}\n />\n <span className=\"mb-1 mt-2.5 block text-xs text-light-4\">Size</span>\n <Slider\n min={16}\n max={200}\n step={1}\n value={[ui.textSize]}\n onValueChange={([v]) => engine.setTextSize(v)}\n />\n </div>\n )}\n\n {ui.mode === 'shape' && (\n <div className=\"mb-3.5\">\n <span className=\"mb-1 block text-xs text-light-4\">Shape</span>\n <SwatchGrid\n columns={3}\n value={ui.selectedShapeType}\n onSelect={engine.selectShapeType}\n items={SHAPES.map((s) => ({\n value: s.id,\n label: s.name,\n icon: ShapeIcons[s.id],\n }))}\n />\n <span className=\"mb-1 mt-2.5 block text-xs text-light-4\">\n Fill style\n </span>\n <SingleSelect\n items={FILL_ITEMS}\n value={ui.shapeFill}\n onValueChange={(v) => engine.setShapeFill(v as 'stroke' | 'fill')}\n container={container}\n />\n <span className=\"mb-1 mt-2.5 block text-xs text-light-4\">\n Thickness\n </span>\n <Slider\n min={1}\n max={40}\n step={1}\n value={[ui.shapeWidth]}\n onValueChange={([v]) => engine.setShapeWidth(v)}\n />\n </div>\n )}\n\n {ui.mode === 'draw' && (\n <div className=\"mb-3.5\">\n <span className=\"mb-1 block text-xs text-light-4\">Brush size</span>\n <Slider\n min={1}\n max={60}\n step={1}\n value={[ui.brushSize]}\n onValueChange={([v]) => engine.setBrushSize(v)}\n />\n <span className=\"mb-1 mt-2.5 block text-xs text-light-4\">\n Brush style\n </span>\n <SingleSelect\n items={BRUSH_STYLE_ITEMS}\n value={ui.brushStyle}\n onValueChange={(v) =>\n engine.setBrushStyle(v as 'round' | 'highlight')\n }\n container={container}\n />\n </div>\n )}\n\n {ui.mode === 'sticker' && (\n <div className=\"mb-3.5\">\n <SwatchGrid\n columns={3}\n onSelect={engine.addSticker}\n emptyMessage={\n <>\n No stickers configured — pass a <code>stickers</code> prop with\n image URLs.\n </>\n }\n items={ui.stickers.map((src) => ({ value: src, thumbnail: src }))}\n />\n </div>\n )}\n\n {ui.mode === 'text' && (\n <ColorPicker value={ui.textColor} onChange={engine.setTextColor} />\n )}\n {ui.mode === 'shape' && (\n <ColorPicker value={ui.shapeColor} onChange={engine.setShapeColor} />\n )}\n {ui.mode === 'draw' && (\n <ColorPicker value={ui.drawColor} onChange={engine.setDrawColor} />\n )}\n </div>\n )\n}\n"],"names":["FILL_ITEMS","BRUSH_STYLE_ITEMS","PanelInsert","ui","engine","container","useImageEditorPortalContainer","React","SingleSelect","FONTS","Slider","v","SwatchGrid","SHAPES","s","ShapeIcons","src","ColorPicker"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { Trash2 as c } from "lucide-react";
2
2
  import e from "react";
3
- import { Button as m } from "./index.es9.js";
4
- import { Textarea as o } from "./index.es16.js";
5
- import { Slider as n } from "./index.es30.js";
6
- import { SingleSelect as s } from "./index.es29.js";
7
- import { FONTS as i } from "./index.es145.js";
8
- import { ColorPicker as x } from "./index.es181.js";
9
- import { useImageEditorPortalContainer as p } from "./index.es140.js";
3
+ import { Button as m } from "./index9.es.js";
4
+ import { Textarea as o } from "./index16.es.js";
5
+ import { Slider as n } from "./index30.es.js";
6
+ import { SingleSelect as s } from "./index29.es.js";
7
+ import { FONTS as i } from "./index148.es.js";
8
+ import { ColorPicker as x } from "./index181.es.js";
9
+ import { useImageEditorPortalContainer as p } from "./index143.es.js";
10
10
  const u = [
11
11
  { label: "Outline only", value: "stroke" },
12
12
  { label: "Solid fill", value: "fill" }
@@ -117,4 +117,4 @@ function C({ selected: t, engine: a }) {
117
117
  export {
118
118
  C as PanelSelected
119
119
  };
120
- //# sourceMappingURL=index.es169.js.map
120
+ //# sourceMappingURL=index169.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es169.js","sources":["../src/components/organisms/image-editor/components/panel-selected.tsx"],"sourcesContent":["import { Trash2 } from 'lucide-react'\nimport React from 'react'\n\nimport { Button } from '@/components/atoms/button'\nimport { Textarea } from '@/components/atoms/textarea'\nimport { Slider } from '@/components/molecules/slider'\nimport { SingleSelect } from '@/components/molecules/single-select'\n\nimport {\n ImageEditorEngine,\n ImageEditorSelectedLayer,\n} from '../image-editor.types'\nimport { FONTS } from '../picture-studio-engine'\nimport { ColorPicker } from './color-picker'\nimport { useImageEditorPortalContainer } from './portal-context'\n\ninterface PanelSelectedProps {\n selected: ImageEditorSelectedLayer\n engine: ImageEditorEngine\n}\n\nconst FILL_ITEMS = [\n { label: 'Outline only', value: 'stroke' },\n { label: 'Solid fill', value: 'fill' },\n]\n\nexport function PanelSelected({ selected, engine }: PanelSelectedProps) {\n const container = useImageEditorPortalContainer()\n return (\n <div>\n {selected.type === 'text' && (\n <div className=\"mb-3.5\">\n <span className=\"mb-1 block text-xs text-light-4\">Text</span>\n <Textarea\n className=\"min-h-[52px]\"\n value={selected.text ?? ''}\n onChange={(e) => engine.setSelectedText(e.target.value)}\n />\n <span className=\"mb-1 mt-2.5 block text-xs text-light-4\">Font</span>\n <SingleSelect\n items={FONTS}\n value={selected.font ?? ''}\n onValueChange={engine.setSelectedFont}\n container={container}\n />\n <div className=\"mb-1 mt-2.5 flex justify-between text-xs text-light-4\">\n <span>Size</span>\n <span>{selected.size}px</span>\n </div>\n <Slider\n min={10}\n max={240}\n step={1}\n value={[selected.size ?? 24]}\n onValueChange={([v]) => engine.setSelectedTextSize(v)}\n />\n <div className=\"mb-1 mt-2.5 flex justify-between text-xs text-light-4\">\n <span>Box size</span>\n <span>{selected.boxWidth}px</span>\n </div>\n <Slider\n min={20}\n max={2000}\n step={1}\n value={[selected.boxWidth ?? 200]}\n onValueChange={([v]) => engine.setSelectedBoxWidth(v)}\n />\n </div>\n )}\n\n {selected.type === 'shape' && (\n <div className=\"mb-3.5\">\n <span className=\"mb-1 block text-xs text-light-4\">Fill style</span>\n <SingleSelect\n items={FILL_ITEMS}\n value={selected.fill ?? 'stroke'}\n onValueChange={(v) =>\n engine.setSelectedShapeFill(v as 'stroke' | 'fill')\n }\n container={container}\n />\n <span className=\"mb-1 mt-2.5 block text-xs text-light-4\">\n Thickness\n </span>\n <Slider\n min={1}\n max={40}\n step={1}\n value={[selected.width ?? 6]}\n onValueChange={([v]) => engine.setSelectedWidth(v)}\n />\n </div>\n )}\n\n {selected.type === 'stroke' && (\n <div className=\"mb-3.5\">\n <span className=\"mb-1 block text-xs text-light-4\">Brush size</span>\n <Slider\n min={1}\n max={60}\n step={1}\n value={[selected.width ?? 8]}\n onValueChange={([v]) => engine.setSelectedWidth(v)}\n />\n </div>\n )}\n\n {selected.type !== 'sticker' && (\n <ColorPicker\n value={selected.color ?? '#d24b2f'}\n onChange={engine.setSelectedColor}\n />\n )}\n\n <div className=\"my-3.5 h-px bg-neutral-1\" />\n\n <div className=\"flex flex-col gap-2\">\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={engine.bringSelectedToFront}\n >\n Bring to front\n </Button>\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={engine.sendSelectedToBack}\n >\n Send to back\n </Button>\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={engine.duplicateSelected}\n >\n Duplicate\n </Button>\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={engine.deleteSelected}\n prefixIcon={<Trash2 className=\"h-4 w-4\" />}\n className=\"text-danger-1\"\n >\n Delete layer\n </Button>\n </div>\n </div>\n )\n}\n"],"names":["FILL_ITEMS","PanelSelected","selected","engine","container","useImageEditorPortalContainer","React","Textarea","e","SingleSelect","FONTS","Slider","v","ColorPicker","Button","Trash2"],"mappings":"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"}
1
+ {"version":3,"file":"index169.es.js","sources":["../src/components/organisms/image-editor/components/panel-selected.tsx"],"sourcesContent":["import { Trash2 } from 'lucide-react'\nimport React from 'react'\n\nimport { Button } from '@/components/atoms/button'\nimport { Textarea } from '@/components/atoms/textarea'\nimport { Slider } from '@/components/molecules/slider'\nimport { SingleSelect } from '@/components/molecules/single-select'\n\nimport {\n ImageEditorEngine,\n ImageEditorSelectedLayer,\n} from '../image-editor.types'\nimport { FONTS } from '../picture-studio-engine'\nimport { ColorPicker } from './color-picker'\nimport { useImageEditorPortalContainer } from './portal-context'\n\ninterface PanelSelectedProps {\n selected: ImageEditorSelectedLayer\n engine: ImageEditorEngine\n}\n\nconst FILL_ITEMS = [\n { label: 'Outline only', value: 'stroke' },\n { label: 'Solid fill', value: 'fill' },\n]\n\nexport function PanelSelected({ selected, engine }: PanelSelectedProps) {\n const container = useImageEditorPortalContainer()\n return (\n <div>\n {selected.type === 'text' && (\n <div className=\"mb-3.5\">\n <span className=\"mb-1 block text-xs text-light-4\">Text</span>\n <Textarea\n className=\"min-h-[52px]\"\n value={selected.text ?? ''}\n onChange={(e) => engine.setSelectedText(e.target.value)}\n />\n <span className=\"mb-1 mt-2.5 block text-xs text-light-4\">Font</span>\n <SingleSelect\n items={FONTS}\n value={selected.font ?? ''}\n onValueChange={engine.setSelectedFont}\n container={container}\n />\n <div className=\"mb-1 mt-2.5 flex justify-between text-xs text-light-4\">\n <span>Size</span>\n <span>{selected.size}px</span>\n </div>\n <Slider\n min={10}\n max={240}\n step={1}\n value={[selected.size ?? 24]}\n onValueChange={([v]) => engine.setSelectedTextSize(v)}\n />\n <div className=\"mb-1 mt-2.5 flex justify-between text-xs text-light-4\">\n <span>Box size</span>\n <span>{selected.boxWidth}px</span>\n </div>\n <Slider\n min={20}\n max={2000}\n step={1}\n value={[selected.boxWidth ?? 200]}\n onValueChange={([v]) => engine.setSelectedBoxWidth(v)}\n />\n </div>\n )}\n\n {selected.type === 'shape' && (\n <div className=\"mb-3.5\">\n <span className=\"mb-1 block text-xs text-light-4\">Fill style</span>\n <SingleSelect\n items={FILL_ITEMS}\n value={selected.fill ?? 'stroke'}\n onValueChange={(v) =>\n engine.setSelectedShapeFill(v as 'stroke' | 'fill')\n }\n container={container}\n />\n <span className=\"mb-1 mt-2.5 block text-xs text-light-4\">\n Thickness\n </span>\n <Slider\n min={1}\n max={40}\n step={1}\n value={[selected.width ?? 6]}\n onValueChange={([v]) => engine.setSelectedWidth(v)}\n />\n </div>\n )}\n\n {selected.type === 'stroke' && (\n <div className=\"mb-3.5\">\n <span className=\"mb-1 block text-xs text-light-4\">Brush size</span>\n <Slider\n min={1}\n max={60}\n step={1}\n value={[selected.width ?? 8]}\n onValueChange={([v]) => engine.setSelectedWidth(v)}\n />\n </div>\n )}\n\n {selected.type !== 'sticker' && (\n <ColorPicker\n value={selected.color ?? '#d24b2f'}\n onChange={engine.setSelectedColor}\n />\n )}\n\n <div className=\"my-3.5 h-px bg-neutral-1\" />\n\n <div className=\"flex flex-col gap-2\">\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={engine.bringSelectedToFront}\n >\n Bring to front\n </Button>\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={engine.sendSelectedToBack}\n >\n Send to back\n </Button>\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={engine.duplicateSelected}\n >\n Duplicate\n </Button>\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={engine.deleteSelected}\n prefixIcon={<Trash2 className=\"h-4 w-4\" />}\n className=\"text-danger-1\"\n >\n Delete layer\n </Button>\n </div>\n </div>\n )\n}\n"],"names":["FILL_ITEMS","PanelSelected","selected","engine","container","useImageEditorPortalContainer","React","Textarea","e","SingleSelect","FONTS","Slider","v","ColorPicker","Button","Trash2"],"mappings":";;;;;;;;;AAqBA,MAAMA,IAAa;AAAA,EACjB,EAAE,OAAO,gBAAgB,OAAO,SAAA;AAAA,EAChC,EAAE,OAAO,cAAc,OAAO,OAAA;AAChC;AAEO,SAASC,EAAc,EAAE,UAAAC,GAAU,QAAAC,KAA8B;AACtE,QAAMC,IAAYC,EAAA;AAClB,SACEC,gBAAAA,EAAA,cAAC,OAAA,MACEJ,EAAS,SAAS,UACjBI,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,YACbA,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,qCAAkC,MAAI,GACtDA,gBAAAA,EAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAOL,EAAS,QAAQ;AAAA,MACxB,UAAU,CAACM,MAAML,EAAO,gBAAgBK,EAAE,OAAO,KAAK;AAAA,IAAA;AAAA,EAAA,GAExDF,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,4CAAyC,MAAI,GAC7DA,gBAAAA,EAAA;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,OAAOC;AAAA,MACP,OAAOR,EAAS,QAAQ;AAAA,MACxB,eAAeC,EAAO;AAAA,MACtB,WAAAC;AAAA,IAAA;AAAA,EAAA,GAEFE,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,2DACbA,gBAAAA,EAAA,cAAC,QAAA,MAAK,MAAI,mCACT,QAAA,MAAMJ,EAAS,MAAK,IAAE,CACzB,GACAI,gBAAAA,EAAA;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO,CAACT,EAAS,QAAQ,EAAE;AAAA,MAC3B,eAAe,CAAC,CAACU,CAAC,MAAMT,EAAO,oBAAoBS,CAAC;AAAA,IAAA;AAAA,EAAA,GAEtDN,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,2DACbA,gBAAAA,EAAA,cAAC,QAAA,MAAK,UAAQ,mCACb,QAAA,MAAMJ,EAAS,UAAS,IAAE,CAC7B,GACAI,gBAAAA,EAAA;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO,CAACT,EAAS,YAAY,GAAG;AAAA,MAChC,eAAe,CAAC,CAACU,CAAC,MAAMT,EAAO,oBAAoBS,CAAC;AAAA,IAAA;AAAA,EAAA,CAExD,GAGDV,EAAS,SAAS,WACjBI,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,SAAA,GACbA,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,qCAAkC,YAAU,GAC5DA,gBAAAA,EAAA;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,OAAOT;AAAA,MACP,OAAOE,EAAS,QAAQ;AAAA,MACxB,eAAe,CAACU,MACdT,EAAO,qBAAqBS,CAAsB;AAAA,MAEpD,WAAAR;AAAA,IAAA;AAAA,EAAA,GAEFE,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,4CAAyC,WAEzD,GACAA,gBAAAA,EAAA;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO,CAACT,EAAS,SAAS,CAAC;AAAA,MAC3B,eAAe,CAAC,CAACU,CAAC,MAAMT,EAAO,iBAAiBS,CAAC;AAAA,IAAA;AAAA,EAAA,CAErD,GAGDV,EAAS,SAAS,YACjBI,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,SAAA,GACbA,gBAAAA,EAAA,cAAC,QAAA,EAAK,WAAU,qCAAkC,YAAU,GAC5DA,gBAAAA,EAAA;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO,CAACT,EAAS,SAAS,CAAC;AAAA,MAC3B,eAAe,CAAC,CAACU,CAAC,MAAMT,EAAO,iBAAiBS,CAAC;AAAA,IAAA;AAAA,EAAA,CAErD,GAGDV,EAAS,SAAS,aACjBI,gBAAAA,EAAA;AAAA,IAACO;AAAA,IAAA;AAAA,MACC,OAAOX,EAAS,SAAS;AAAA,MACzB,UAAUC,EAAO;AAAA,IAAA;AAAA,EAAA,mCAIpB,OAAA,EAAI,WAAU,4BAA2B,GAE1CG,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,sBAAA,GACbA,gBAAAA,EAAA;AAAA,IAACQ;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,SAASX,EAAO;AAAA,IAAA;AAAA,IACjB;AAAA,EAAA,GAGDG,gBAAAA,EAAA;AAAA,IAACQ;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,SAASX,EAAO;AAAA,IAAA;AAAA,IACjB;AAAA,EAAA,GAGDG,gBAAAA,EAAA;AAAA,IAACQ;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,SAASX,EAAO;AAAA,IAAA;AAAA,IACjB;AAAA,EAAA,GAGDG,gBAAAA,EAAA;AAAA,IAACQ;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,SAASX,EAAO;AAAA,MAChB,YAAYG,gBAAAA,EAAA,cAACS,GAAA,EAAO,WAAU,WAAU;AAAA,MACxC,WAAU;AAAA,IAAA;AAAA,IACX;AAAA,EAAA,CAGH,CACF;AAEJ;"}
@@ -1,7 +1,7 @@
1
1
  import * as t from "react";
2
2
  import * as e from "@radix-ui/react-tooltip";
3
- import { cn as m } from "./index.es89.js";
4
- import { Typography as o } from "./index.es19.js";
3
+ import { cn as m } from "./index89.es.js";
4
+ import { Typography as o } from "./index19.es.js";
5
5
  const f = e.Provider, g = e.Root, h = e.Trigger, n = t.forwardRef(({ className: a, sideOffset: i = 4, headerText: r, content: l, ...d }, s) => /* @__PURE__ */ t.createElement(
6
6
  e.Content,
7
7
  {
@@ -22,4 +22,4 @@ export {
22
22
  h as TooltipTrigger,
23
23
  g as TooltipWrapper
24
24
  };
25
- //# sourceMappingURL=index.es17.js.map
25
+ //# sourceMappingURL=index17.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es17.js","sources":["../src/components/atoms/tooltip/tooltip-components.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\n\nimport { cn } from '@/lib/utils'\nimport { Typography } from '@/components/atoms/typography'\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\ntype TooltipContentProps = {\n headerText: React.ReactNode\n content: React.ReactNode\n} & Omit<\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>,\n 'content'\n>\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n TooltipContentProps\n>(({ className, sideOffset = 4, headerText, content, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 overflow-hidden bg-light-1 rounded-lg bg p-3 text-xs text-light-4 animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 border border-neutral-1 max-w-96 shadow-lg',\n className\n )}\n {...props}\n >\n <div className=\"flex gap-0.5 flex-col\">\n <Typography variant={'body5'} className=\"text-light-2\">\n {headerText}\n </Typography>\n <Typography variant={'body6'} className=\"text-light-4\">\n {content}\n </Typography>\n </div>\n </TooltipPrimitive.Content>\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport {\n Tooltip as TooltipWrapper,\n TooltipTrigger,\n TooltipContent,\n TooltipProvider,\n}\n"],"names":["TooltipProvider","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","React","className","sideOffset","headerText","content","props","ref","cn","Typography"],"mappings":";;;;AAQA,MAAMA,IAAkBC,EAAiB,UAEnCC,IAAUD,EAAiB,MAE3BE,IAAiBF,EAAiB,SAUlCG,IAAiBC,EAAM,WAG3B,CAAC,EAAE,WAAAC,GAAW,YAAAC,IAAa,GAAG,YAAAC,GAAY,SAAAC,GAAS,GAAGC,EAAA,GAASC,MAC/D,gBAAAN,EAAA;AAAA,EAACJ,EAAiB;AAAA,EAAjB;AAAA,IACC,KAAAU;AAAA,IACA,YAAAJ;AAAA,IACA,WAAWK;AAAA,MACT;AAAA,MACAN;AAAA,IAAA;AAAA,IAED,GAAGI;AAAA,EAAA;AAAA,kCAEH,OAAA,EAAI,WAAU,2BACb,gBAAAL,EAAA,cAACQ,GAAA,EAAW,SAAS,SAAS,WAAU,kBACrCL,CACH,mCACCK,GAAA,EAAW,SAAS,SAAS,WAAU,eAAA,GACrCJ,CACH,CACF;AACF,CACD;AACDL,EAAe,cAAcH,EAAiB,QAAQ;"}
1
+ {"version":3,"file":"index17.es.js","sources":["../src/components/atoms/tooltip/tooltip-components.tsx"],"sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\n\nimport { cn } from '@/lib/utils'\nimport { Typography } from '@/components/atoms/typography'\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\ntype TooltipContentProps = {\n headerText: React.ReactNode\n content: React.ReactNode\n} & Omit<\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>,\n 'content'\n>\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n TooltipContentProps\n>(({ className, sideOffset = 4, headerText, content, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 overflow-hidden bg-light-1 rounded-lg bg p-3 text-xs text-light-4 animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 border border-neutral-1 max-w-96 shadow-lg',\n className\n )}\n {...props}\n >\n <div className=\"flex gap-0.5 flex-col\">\n <Typography variant={'body5'} className=\"text-light-2\">\n {headerText}\n </Typography>\n <Typography variant={'body6'} className=\"text-light-4\">\n {content}\n </Typography>\n </div>\n </TooltipPrimitive.Content>\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport {\n Tooltip as TooltipWrapper,\n TooltipTrigger,\n TooltipContent,\n TooltipProvider,\n}\n"],"names":["TooltipProvider","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","React","className","sideOffset","headerText","content","props","ref","cn","Typography"],"mappings":";;;;AAQA,MAAMA,IAAkBC,EAAiB,UAEnCC,IAAUD,EAAiB,MAE3BE,IAAiBF,EAAiB,SAUlCG,IAAiBC,EAAM,WAG3B,CAAC,EAAE,WAAAC,GAAW,YAAAC,IAAa,GAAG,YAAAC,GAAY,SAAAC,GAAS,GAAGC,EAAA,GAASC,MAC/D,gBAAAN,EAAA;AAAA,EAACJ,EAAiB;AAAA,EAAjB;AAAA,IACC,KAAAU;AAAA,IACA,YAAAJ;AAAA,IACA,WAAWK;AAAA,MACT;AAAA,MACAN;AAAA,IAAA;AAAA,IAED,GAAGI;AAAA,EAAA;AAAA,kCAEH,OAAA,EAAI,WAAU,2BACb,gBAAAL,EAAA,cAACQ,GAAA,EAAW,SAAS,SAAS,WAAU,kBACrCL,CACH,mCACCK,GAAA,EAAW,SAAS,SAAS,WAAU,eAAA,GACrCJ,CACH,CACF;AACF,CACD;AACDL,EAAe,cAAcH,EAAiB,QAAQ;"}
@@ -1,23 +1,23 @@
1
1
  import t from "react";
2
- import { Input as m } from "./index.es11.js";
3
- import { Checkbox as v } from "./index.es10.js";
4
- import { RadioGroup as u, RadioGroupItem as p } from "./index.es13.js";
5
- import { MultiCombobox as I } from "./index.es23.js";
6
- import { SingleCombobox as _ } from "./index.es27.js";
7
- import { CreatableMultiCombobox as C } from "./index.es28.js";
8
- import { Textarea as x } from "./index.es16.js";
9
- import { Typography as s } from "./index.es19.js";
2
+ import { Input as m } from "./index11.es.js";
3
+ import { Checkbox as v } from "./index10.es.js";
4
+ import { RadioGroup as u, RadioGroupItem as p } from "./index13.es.js";
5
+ import { MultiCombobox as I } from "./index23.es.js";
6
+ import { SingleCombobox as _ } from "./index27.es.js";
7
+ import { CreatableMultiCombobox as C } from "./index28.es.js";
8
+ import { Textarea as x } from "./index16.es.js";
9
+ import { Typography as s } from "./index19.es.js";
10
10
  import { Phone as O, Mail as T } from "lucide-react";
11
- import { SingleImagePicker as y } from "./index.es173.js";
12
- import { SingleVideoPicker as R } from "./index.es174.js";
13
- import { MultiImagePicker as M } from "./index.es175.js";
14
- import { MultiVideoPicker as P } from "./index.es176.js";
15
- import { RepeatableGroup as N } from "./index.es177.js";
16
- import { TaggableMultiImagePicker as B } from "./index.es178.js";
17
- import { FormFieldType as c } from "./index.es161.js";
18
- import { DatePicker as U } from "./index.es69.js";
19
- import { TaggableImageUploadFieldWithInput as G } from "./index.es179.js";
20
- import { useFormValues as L } from "./index.es160.js";
11
+ import { SingleImagePicker as y } from "./index173.es.js";
12
+ import { SingleVideoPicker as R } from "./index174.es.js";
13
+ import { MultiImagePicker as M } from "./index175.es.js";
14
+ import { MultiVideoPicker as P } from "./index176.es.js";
15
+ import { RepeatableGroup as N } from "./index177.es.js";
16
+ import { TaggableMultiImagePicker as B } from "./index178.es.js";
17
+ import { FormFieldType as c } from "./index142.es.js";
18
+ import { DatePicker as U } from "./index69.es.js";
19
+ import { TaggableImageUploadFieldWithInput as G } from "./index179.es.js";
20
+ import { useFormValues as L } from "./index141.es.js";
21
21
  const f = ({ field: e }) => {
22
22
  const {
23
23
  values: o,
@@ -286,4 +286,4 @@ const f = ({ field: e }) => {
286
286
  export {
287
287
  f as FormField
288
288
  };
289
- //# sourceMappingURL=index.es170.js.map
289
+ //# sourceMappingURL=index170.es.js.map