geoiq-frontend-ui-kit 2.0.3 → 2.0.4

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 (505) hide show
  1. package/dist/components/atoms/accordion/accordion.d.ts +1 -2
  2. package/dist/components/atoms/accordion/accordion.d.ts.map +1 -1
  3. package/dist/components/atoms/avatar/avatar.d.ts +1 -2
  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 +1 -2
  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 +1 -2
  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 +1 -2
  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 +1 -2
  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 +1 -2
  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 +1 -3
  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 +1 -3
  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 +1 -3
  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 +1 -3
  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 +1 -2
  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 +1 -2
  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 +1 -2
  52. package/dist/components/organisms/dialog/dialog.d.ts.map +1 -1
  53. package/dist/components/organisms/image-editor/components/color-picker.d.ts +1 -3
  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 +1 -2
  56. package/dist/components/organisms/image-editor/components/layers-list.d.ts.map +1 -1
  57. package/dist/components/organisms/image-editor/components/line-session-bar.d.ts +20 -0
  58. package/dist/components/organisms/image-editor/components/line-session-bar.d.ts.map +1 -0
  59. package/dist/components/organisms/image-editor/components/panel-adjust.d.ts +1 -2
  60. package/dist/components/organisms/image-editor/components/panel-adjust.d.ts.map +1 -1
  61. package/dist/components/organisms/image-editor/components/panel-crop.d.ts +1 -2
  62. package/dist/components/organisms/image-editor/components/panel-crop.d.ts.map +1 -1
  63. package/dist/components/organisms/image-editor/components/panel-insert.d.ts +1 -2
  64. package/dist/components/organisms/image-editor/components/panel-insert.d.ts.map +1 -1
  65. package/dist/components/organisms/image-editor/components/panel-selected.d.ts +1 -2
  66. package/dist/components/organisms/image-editor/components/panel-selected.d.ts.map +1 -1
  67. package/dist/components/organisms/image-editor/components/panel.d.ts +1 -2
  68. package/dist/components/organisms/image-editor/components/panel.d.ts.map +1 -1
  69. package/dist/components/organisms/image-editor/components/ribbon.d.ts +1 -2
  70. package/dist/components/organisms/image-editor/components/ribbon.d.ts.map +1 -1
  71. package/dist/components/organisms/image-editor/components/saved-layers-list.d.ts +9 -0
  72. package/dist/components/organisms/image-editor/components/saved-layers-list.d.ts.map +1 -0
  73. package/dist/components/organisms/image-editor/components/status-bar.d.ts +1 -2
  74. package/dist/components/organisms/image-editor/components/status-bar.d.ts.map +1 -1
  75. package/dist/components/organisms/image-editor/image-editor-modal.d.ts +1 -2
  76. package/dist/components/organisms/image-editor/image-editor-modal.d.ts.map +1 -1
  77. package/dist/components/organisms/image-editor/image-editor.types.d.ts +73 -0
  78. package/dist/components/organisms/image-editor/image-editor.types.d.ts.map +1 -1
  79. package/dist/components/organisms/image-editor/use-image-editor.d.ts.map +1 -1
  80. package/dist/components/organisms/sheet/sheet-components.d.ts +2 -2
  81. package/dist/components/organisms/sheet/sheet.d.ts +1 -2
  82. package/dist/components/organisms/sheet/sheet.d.ts.map +1 -1
  83. package/dist/components/organisms/sidebar/sidebar.d.ts +1 -2
  84. package/dist/components/organisms/sidebar/sidebar.d.ts.map +1 -1
  85. package/dist/components/ui/agent-snippet-view/agent-snippet-view.d.ts +1 -1
  86. package/dist/components/ui/agent-snippet-view/agent-snippet-view.d.ts.map +1 -1
  87. package/dist/components/ui/map-marker-hover-card/components/map-cluster-hover-card.d.ts +1 -2
  88. package/dist/components/ui/map-marker-hover-card/components/map-cluster-hover-card.d.ts.map +1 -1
  89. package/dist/components/ui/map-marker-hover-card/components/map-point-hover-card.d.ts +1 -2
  90. package/dist/components/ui/map-marker-hover-card/components/map-point-hover-card.d.ts.map +1 -1
  91. package/dist/components/ui/map-marker-hover-card/map-marker-hover-card.d.ts +1 -2
  92. package/dist/components/ui/map-marker-hover-card/map-marker-hover-card.d.ts.map +1 -1
  93. package/dist/components/ui/star-score/star-score.d.ts +1 -2
  94. package/dist/components/ui/star-score/star-score.d.ts.map +1 -1
  95. package/dist/components/unstyled/calendar/calendar.d.ts +1 -1
  96. package/dist/components/unstyled/calendar/calendar.d.ts.map +1 -1
  97. package/dist/components/unstyled/command/index.d.ts +2 -2
  98. package/dist/components/unstyled/command/index.d.ts.map +1 -1
  99. package/dist/components/unstyled/date-picker/date-picker.d.ts +2 -2
  100. package/dist/components/unstyled/date-picker/date-picker.d.ts.map +1 -1
  101. package/dist/components/unstyled/hover-card/hover-card.d.ts +1 -2
  102. package/dist/components/unstyled/hover-card/hover-card.d.ts.map +1 -1
  103. package/dist/components/unstyled/popover/popover.d.ts +1 -2
  104. package/dist/components/unstyled/popover/popover.d.ts.map +1 -1
  105. package/dist/components/unstyled/table/table.d.ts +2 -2
  106. package/dist/components/unstyled/table/table.d.ts.map +1 -1
  107. package/dist/index.es.js +88 -88
  108. package/dist/{index10.es.js → index.es10.js} +3 -3
  109. package/dist/{index10.es.js.map → index.es10.js.map} +1 -1
  110. package/dist/index.es100.js +152 -0
  111. package/dist/index.es100.js.map +1 -0
  112. package/dist/{index101.es.js → index.es101.js} +1 -1
  113. package/dist/{index101.es.js.map → index.es101.js.map} +1 -1
  114. package/dist/{index136.es.js → index.es102.js} +1 -1
  115. package/dist/{index136.es.js.map → index.es102.js.map} +1 -1
  116. package/dist/{index133.es.js → index.es103.js} +1 -1
  117. package/dist/{index133.es.js.map → index.es103.js.map} +1 -1
  118. package/dist/{index134.es.js → index.es104.js} +1 -1
  119. package/dist/{index134.es.js.map → index.es104.js.map} +1 -1
  120. package/dist/{index135.es.js → index.es105.js} +3 -3
  121. package/dist/{index135.es.js.map → index.es105.js.map} +1 -1
  122. package/dist/{index97.es.js → index.es106.js} +1 -1
  123. package/dist/index.es106.js.map +1 -0
  124. package/dist/{index107.es.js → index.es107.js} +5 -5
  125. package/dist/{index107.es.js.map → index.es107.js.map} +1 -1
  126. package/dist/{index99.es.js → index.es108.js} +1 -1
  127. package/dist/index.es108.js.map +1 -0
  128. package/dist/{index103.es.js → index.es109.js} +2 -2
  129. package/dist/{index103.es.js.map → index.es109.js.map} +1 -1
  130. package/dist/{index11.es.js → index.es11.js} +4 -4
  131. package/dist/{index11.es.js.map → index.es11.js.map} +1 -1
  132. package/dist/{index115.es.js → index.es110.js} +2 -2
  133. package/dist/{index115.es.js.map → index.es110.js.map} +1 -1
  134. package/dist/{index116.es.js → index.es111.js} +6 -6
  135. package/dist/{index116.es.js.map → index.es111.js.map} +1 -1
  136. package/dist/{index98.es.js → index.es112.js} +1 -1
  137. package/dist/index.es112.js.map +1 -0
  138. package/dist/{index106.es.js → index.es113.js} +1 -1
  139. package/dist/{index106.es.js.map → index.es113.js.map} +1 -1
  140. package/dist/{index132.es.js → index.es114.js} +3 -3
  141. package/dist/{index132.es.js.map → index.es114.js.map} +1 -1
  142. package/dist/{index130.es.js → index.es115.js} +3 -3
  143. package/dist/{index130.es.js.map → index.es115.js.map} +1 -1
  144. package/dist/{index128.es.js → index.es116.js} +1 -1
  145. package/dist/{index128.es.js.map → index.es116.js.map} +1 -1
  146. package/dist/{index129.es.js → index.es117.js} +5 -5
  147. package/dist/{index129.es.js.map → index.es117.js.map} +1 -1
  148. package/dist/{index108.es.js → index.es118.js} +1 -1
  149. package/dist/{index108.es.js.map → index.es118.js.map} +1 -1
  150. package/dist/{index105.es.js → index.es119.js} +1 -1
  151. package/dist/{index105.es.js.map → index.es119.js.map} +1 -1
  152. package/dist/{index12.es.js → index.es12.js} +3 -3
  153. package/dist/{index12.es.js.map → index.es12.js.map} +1 -1
  154. package/dist/{index121.es.js → index.es120.js} +4 -4
  155. package/dist/{index121.es.js.map → index.es120.js.map} +1 -1
  156. package/dist/{index122.es.js → index.es121.js} +3 -3
  157. package/dist/{index122.es.js.map → index.es121.js.map} +1 -1
  158. package/dist/{index123.es.js → index.es122.js} +3 -3
  159. package/dist/{index123.es.js.map → index.es122.js.map} +1 -1
  160. package/dist/{index124.es.js → index.es123.js} +3 -3
  161. package/dist/{index124.es.js.map → index.es123.js.map} +1 -1
  162. package/dist/{index125.es.js → index.es124.js} +10 -10
  163. package/dist/{index125.es.js.map → index.es124.js.map} +1 -1
  164. package/dist/{index126.es.js → index.es125.js} +10 -10
  165. package/dist/{index126.es.js.map → index.es125.js.map} +1 -1
  166. package/dist/{index127.es.js → index.es126.js} +5 -5
  167. package/dist/{index127.es.js.map → index.es126.js.map} +1 -1
  168. package/dist/{index110.es.js → index.es127.js} +4 -4
  169. package/dist/{index110.es.js.map → index.es127.js.map} +1 -1
  170. package/dist/{index111.es.js → index.es128.js} +4 -4
  171. package/dist/{index111.es.js.map → index.es128.js.map} +1 -1
  172. package/dist/{index112.es.js → index.es129.js} +5 -5
  173. package/dist/{index112.es.js.map → index.es129.js.map} +1 -1
  174. package/dist/{index13.es.js → index.es13.js} +3 -3
  175. package/dist/{index13.es.js.map → index.es13.js.map} +1 -1
  176. package/dist/{index113.es.js → index.es130.js} +2 -2
  177. package/dist/{index113.es.js.map → index.es130.js.map} +1 -1
  178. package/dist/{index114.es.js → index.es131.js} +3 -3
  179. package/dist/{index114.es.js.map → index.es131.js.map} +1 -1
  180. package/dist/{index109.es.js → index.es132.js} +1 -1
  181. package/dist/{index109.es.js.map → index.es132.js.map} +1 -1
  182. package/dist/{index100.es.js → index.es133.js} +1 -1
  183. package/dist/{index100.es.js.map → index.es133.js.map} +1 -1
  184. package/dist/{index102.es.js → index.es134.js} +2 -2
  185. package/dist/{index102.es.js.map → index.es134.js.map} +1 -1
  186. package/dist/{index104.es.js → index.es135.js} +1 -1
  187. package/dist/{index104.es.js.map → index.es135.js.map} +1 -1
  188. package/dist/{index131.es.js → index.es136.js} +5 -5
  189. package/dist/{index131.es.js.map → index.es136.js.map} +1 -1
  190. package/dist/{index143.es.js → index.es137.js} +1 -1
  191. package/dist/{index143.es.js.map → index.es137.js.map} +1 -1
  192. package/dist/{index144.es.js → index.es138.js} +12 -11
  193. package/dist/index.es138.js.map +1 -0
  194. package/dist/{index145.es.js → index.es139.js} +3 -3
  195. package/dist/{index145.es.js.map → index.es139.js.map} +1 -1
  196. package/dist/{index14.es.js → index.es14.js} +2 -2
  197. package/dist/{index14.es.js.map → index.es14.js.map} +1 -1
  198. package/dist/{index146.es.js → index.es140.js} +2 -2
  199. package/dist/{index146.es.js.map → index.es140.js.map} +1 -1
  200. package/dist/index.es141.js +77 -0
  201. package/dist/index.es141.js.map +1 -0
  202. package/dist/{index147.es.js → index.es142.js} +1 -1
  203. package/dist/{index147.es.js.map → index.es142.js.map} +1 -1
  204. package/dist/{index148.es.js → index.es143.js} +1 -1
  205. package/dist/{index148.es.js.map → index.es143.js.map} +1 -1
  206. package/dist/{index149.es.js → index.es144.js} +10 -7
  207. package/dist/index.es144.js.map +1 -0
  208. package/dist/index.es145.js +408 -0
  209. package/dist/index.es145.js.map +1 -0
  210. package/dist/{index151.es.js → index.es146.js} +16 -12
  211. package/dist/index.es146.js.map +1 -0
  212. package/dist/{index152.es.js → index.es147.js} +5 -5
  213. package/dist/{index152.es.js.map → index.es147.js.map} +1 -1
  214. package/dist/{index153.es.js → index.es148.js} +17 -16
  215. package/dist/index.es148.js.map +1 -0
  216. package/dist/{index154.es.js → index.es149.js} +2 -2
  217. package/dist/{index154.es.js.map → index.es149.js.map} +1 -1
  218. package/dist/{index15.es.js → index.es15.js} +3 -3
  219. package/dist/{index15.es.js.map → index.es15.js.map} +1 -1
  220. package/dist/{index155.es.js → index.es150.js} +4 -4
  221. package/dist/{index155.es.js.map → index.es150.js.map} +1 -1
  222. package/dist/index.es151.js +215 -0
  223. package/dist/index.es151.js.map +1 -0
  224. package/dist/{index157.es.js → index.es152.js} +5 -5
  225. package/dist/{index157.es.js.map → index.es152.js.map} +1 -1
  226. package/dist/index.es153.js +147 -0
  227. package/dist/index.es153.js.map +1 -0
  228. package/dist/index.es154.js +50 -0
  229. package/dist/index.es154.js.map +1 -0
  230. package/dist/index.es155.js +358 -0
  231. package/dist/index.es155.js.map +1 -0
  232. package/dist/{index137.es.js → index.es156.js} +2 -2
  233. package/dist/{index137.es.js.map → index.es156.js.map} +1 -1
  234. package/dist/{index138.es.js → index.es157.js} +1 -1
  235. package/dist/{index138.es.js.map → index.es157.js.map} +1 -1
  236. package/dist/{index159.es.js → index.es158.js} +1 -1
  237. package/dist/{index159.es.js.map → index.es158.js.map} +1 -1
  238. package/dist/{index139.es.js → index.es159.js} +3 -3
  239. package/dist/{index139.es.js.map → index.es159.js.map} +1 -1
  240. package/dist/{index16.es.js → index.es16.js} +8 -8
  241. package/dist/{index16.es.js.map → index.es16.js.map} +1 -1
  242. package/dist/{index140.es.js → index.es160.js} +1 -1
  243. package/dist/{index140.es.js.map → index.es160.js.map} +1 -1
  244. package/dist/{index141.es.js → index.es161.js} +1 -1
  245. package/dist/{index141.es.js.map → index.es161.js.map} +1 -1
  246. package/dist/{index142.es.js → index.es162.js} +1 -1
  247. package/dist/{index142.es.js.map → index.es162.js.map} +1 -1
  248. package/dist/{index160.es.js → index.es163.js} +1 -1
  249. package/dist/{index160.es.js.map → index.es163.js.map} +1 -1
  250. package/dist/{index161.es.js → index.es164.js} +1 -1
  251. package/dist/{index161.es.js.map → index.es164.js.map} +1 -1
  252. package/dist/{index162.es.js → index.es165.js} +1 -1
  253. package/dist/{index162.es.js.map → index.es165.js.map} +1 -1
  254. package/dist/{index164.es.js → index.es166.js} +2 -2
  255. package/dist/{index164.es.js.map → index.es166.js.map} +1 -1
  256. package/dist/{index165.es.js → index.es167.js} +2 -2
  257. package/dist/{index165.es.js.map → index.es167.js.map} +1 -1
  258. package/dist/{index166.es.js → index.es168.js} +4 -4
  259. package/dist/{index166.es.js.map → index.es168.js.map} +1 -1
  260. package/dist/{index167.es.js → index.es169.js} +4 -4
  261. package/dist/{index167.es.js.map → index.es169.js.map} +1 -1
  262. package/dist/{index17.es.js → index.es17.js} +3 -3
  263. package/dist/{index17.es.js.map → index.es17.js.map} +1 -1
  264. package/dist/index.es170.js +101 -0
  265. package/dist/index.es170.js.map +1 -0
  266. package/dist/index.es171.js +259 -0
  267. package/dist/index.es171.js.map +1 -0
  268. package/dist/index.es172.js +66 -0
  269. package/dist/index.es172.js.map +1 -0
  270. package/dist/{index170.es.js → index.es173.js} +19 -19
  271. package/dist/{index170.es.js.map → index.es173.js.map} +1 -1
  272. package/dist/{index171.es.js → index.es174.js} +4 -4
  273. package/dist/{index171.es.js.map → index.es174.js.map} +1 -1
  274. package/dist/{index172.es.js → index.es175.js} +2 -2
  275. package/dist/{index172.es.js.map → index.es175.js.map} +1 -1
  276. package/dist/{index180.es.js → index.es176.js} +1 -1
  277. package/dist/{index180.es.js.map → index.es176.js.map} +1 -1
  278. package/dist/{index181.es.js → index.es177.js} +2 -2
  279. package/dist/{index181.es.js.map → index.es177.js.map} +1 -1
  280. package/dist/{index173.es.js → index.es178.js} +6 -6
  281. package/dist/{index173.es.js.map → index.es178.js.map} +1 -1
  282. package/dist/{index174.es.js → index.es179.js} +16 -17
  283. package/dist/{index174.es.js.map → index.es179.js.map} +1 -1
  284. package/dist/{index18.es.js → index.es18.js} +2 -2
  285. package/dist/{index18.es.js.map → index.es18.js.map} +1 -1
  286. package/dist/{index175.es.js → index.es180.js} +26 -27
  287. package/dist/{index175.es.js.map → index.es180.js.map} +1 -1
  288. package/dist/{index176.es.js → index.es181.js} +12 -13
  289. package/dist/{index176.es.js.map → index.es181.js.map} +1 -1
  290. package/dist/{index177.es.js → index.es182.js} +5 -5
  291. package/dist/{index177.es.js.map → index.es182.js.map} +1 -1
  292. package/dist/{index178.es.js → index.es183.js} +26 -27
  293. package/dist/{index178.es.js.map → index.es183.js.map} +1 -1
  294. package/dist/{index179.es.js → index.es184.js} +29 -30
  295. package/dist/{index179.es.js.map → index.es184.js.map} +1 -1
  296. package/dist/{index182.es.js → index.es185.js} +1 -1
  297. package/dist/{index182.es.js.map → index.es185.js.map} +1 -1
  298. package/dist/{index19.es.js → index.es19.js} +4 -4
  299. package/dist/{index19.es.js.map → index.es19.js.map} +1 -1
  300. package/dist/{index2.es.js → index.es2.js} +5 -5
  301. package/dist/{index2.es.js.map → index.es2.js.map} +1 -1
  302. package/dist/{index20.es.js → index.es20.js} +5 -5
  303. package/dist/{index20.es.js.map → index.es20.js.map} +1 -1
  304. package/dist/{index21.es.js → index.es21.js} +6 -6
  305. package/dist/{index21.es.js.map → index.es21.js.map} +1 -1
  306. package/dist/{index22.es.js → index.es22.js} +2 -2
  307. package/dist/{index22.es.js.map → index.es22.js.map} +1 -1
  308. package/dist/{index23.es.js → index.es23.js} +7 -7
  309. package/dist/{index23.es.js.map → index.es23.js.map} +1 -1
  310. package/dist/{index24.es.js → index.es24.js} +7 -7
  311. package/dist/{index24.es.js.map → index.es24.js.map} +1 -1
  312. package/dist/{index25.es.js → index.es25.js} +3 -3
  313. package/dist/{index25.es.js.map → index.es25.js.map} +1 -1
  314. package/dist/{index26.es.js → index.es26.js} +2 -2
  315. package/dist/{index26.es.js.map → index.es26.js.map} +1 -1
  316. package/dist/{index27.es.js → index.es27.js} +7 -7
  317. package/dist/{index27.es.js.map → index.es27.js.map} +1 -1
  318. package/dist/{index28.es.js → index.es28.js} +9 -9
  319. package/dist/{index28.es.js.map → index.es28.js.map} +1 -1
  320. package/dist/{index29.es.js → index.es29.js} +5 -5
  321. package/dist/{index29.es.js.map → index.es29.js.map} +1 -1
  322. package/dist/{index3.es.js → index.es3.js} +3 -3
  323. package/dist/{index3.es.js.map → index.es3.js.map} +1 -1
  324. package/dist/{index30.es.js → index.es30.js} +3 -3
  325. package/dist/{index30.es.js.map → index.es30.js.map} +1 -1
  326. package/dist/{index31.es.js → index.es31.js} +1 -1
  327. package/dist/{index31.es.js.map → index.es31.js.map} +1 -1
  328. package/dist/{index32.es.js → index.es32.js} +2 -2
  329. package/dist/{index32.es.js.map → index.es32.js.map} +1 -1
  330. package/dist/{index33.es.js → index.es33.js} +3 -3
  331. package/dist/{index33.es.js.map → index.es33.js.map} +1 -1
  332. package/dist/{index34.es.js → index.es34.js} +5 -5
  333. package/dist/{index34.es.js.map → index.es34.js.map} +1 -1
  334. package/dist/{index35.es.js → index.es35.js} +6 -6
  335. package/dist/{index35.es.js.map → index.es35.js.map} +1 -1
  336. package/dist/{index36.es.js → index.es36.js} +5 -5
  337. package/dist/{index36.es.js.map → index.es36.js.map} +1 -1
  338. package/dist/{index37.es.js → index.es37.js} +6 -6
  339. package/dist/{index37.es.js.map → index.es37.js.map} +1 -1
  340. package/dist/{index38.es.js → index.es38.js} +2 -2
  341. package/dist/{index38.es.js.map → index.es38.js.map} +1 -1
  342. package/dist/{index39.es.js → index.es39.js} +3 -3
  343. package/dist/{index39.es.js.map → index.es39.js.map} +1 -1
  344. package/dist/{index4.es.js → index.es4.js} +2 -2
  345. package/dist/{index4.es.js.map → index.es4.js.map} +1 -1
  346. package/dist/{index40.es.js → index.es40.js} +4 -4
  347. package/dist/{index40.es.js.map → index.es40.js.map} +1 -1
  348. package/dist/{index41.es.js → index.es41.js} +5 -5
  349. package/dist/{index41.es.js.map → index.es41.js.map} +1 -1
  350. package/dist/{index42.es.js → index.es42.js} +4 -4
  351. package/dist/{index42.es.js.map → index.es42.js.map} +1 -1
  352. package/dist/{index43.es.js → index.es43.js} +2 -2
  353. package/dist/{index43.es.js.map → index.es43.js.map} +1 -1
  354. package/dist/{index44.es.js → index.es44.js} +2 -2
  355. package/dist/{index44.es.js.map → index.es44.js.map} +1 -1
  356. package/dist/index.es45.js +69 -0
  357. package/dist/index.es45.js.map +1 -0
  358. package/dist/{index46.es.js → index.es46.js} +9 -9
  359. package/dist/{index46.es.js.map → index.es46.js.map} +1 -1
  360. package/dist/{index47.es.js → index.es47.js} +7 -7
  361. package/dist/{index47.es.js.map → index.es47.js.map} +1 -1
  362. package/dist/{index48.es.js → index.es48.js} +10 -10
  363. package/dist/{index48.es.js.map → index.es48.js.map} +1 -1
  364. package/dist/{index49.es.js → index.es49.js} +2 -2
  365. package/dist/{index49.es.js.map → index.es49.js.map} +1 -1
  366. package/dist/{index5.es.js → index.es5.js} +2 -2
  367. package/dist/{index5.es.js.map → index.es5.js.map} +1 -1
  368. package/dist/{index50.es.js → index.es50.js} +1 -1
  369. package/dist/{index50.es.js.map → index.es50.js.map} +1 -1
  370. package/dist/{index51.es.js → index.es51.js} +2 -2
  371. package/dist/{index51.es.js.map → index.es51.js.map} +1 -1
  372. package/dist/{index52.es.js → index.es52.js} +3 -3
  373. package/dist/{index52.es.js.map → index.es52.js.map} +1 -1
  374. package/dist/{index53.es.js → index.es53.js} +7 -7
  375. package/dist/{index53.es.js.map → index.es53.js.map} +1 -1
  376. package/dist/{index54.es.js → index.es54.js} +4 -4
  377. package/dist/{index54.es.js.map → index.es54.js.map} +1 -1
  378. package/dist/{index55.es.js → index.es55.js} +5 -5
  379. package/dist/{index55.es.js.map → index.es55.js.map} +1 -1
  380. package/dist/{index56.es.js → index.es56.js} +3 -3
  381. package/dist/{index56.es.js.map → index.es56.js.map} +1 -1
  382. package/dist/{index57.es.js → index.es57.js} +9 -9
  383. package/dist/{index57.es.js.map → index.es57.js.map} +1 -1
  384. package/dist/{index58.es.js → index.es58.js} +3 -4
  385. package/dist/{index58.es.js.map → index.es58.js.map} +1 -1
  386. package/dist/{index59.es.js → index.es59.js} +2 -2
  387. package/dist/{index59.es.js.map → index.es59.js.map} +1 -1
  388. package/dist/{index6.es.js → index.es6.js} +2 -2
  389. package/dist/{index6.es.js.map → index.es6.js.map} +1 -1
  390. package/dist/{index60.es.js → index.es60.js} +3 -3
  391. package/dist/{index60.es.js.map → index.es60.js.map} +1 -1
  392. package/dist/{index61.es.js → index.es61.js} +2 -2
  393. package/dist/{index61.es.js.map → index.es61.js.map} +1 -1
  394. package/dist/{index62.es.js → index.es62.js} +2 -2
  395. package/dist/{index62.es.js.map → index.es62.js.map} +1 -1
  396. package/dist/{index63.es.js → index.es63.js} +2 -2
  397. package/dist/{index63.es.js.map → index.es63.js.map} +1 -1
  398. package/dist/{index64.es.js → index.es64.js} +3 -3
  399. package/dist/{index64.es.js.map → index.es64.js.map} +1 -1
  400. package/dist/{index65.es.js → index.es65.js} +3 -3
  401. package/dist/{index65.es.js.map → index.es65.js.map} +1 -1
  402. package/dist/{index66.es.js → index.es66.js} +2 -2
  403. package/dist/{index66.es.js.map → index.es66.js.map} +1 -1
  404. package/dist/{index67.es.js → index.es67.js} +3 -3
  405. package/dist/{index67.es.js.map → index.es67.js.map} +1 -1
  406. package/dist/{index68.es.js → index.es68.js} +3 -3
  407. package/dist/{index68.es.js.map → index.es68.js.map} +1 -1
  408. package/dist/{index69.es.js → index.es69.js} +6 -6
  409. package/dist/{index69.es.js.map → index.es69.js.map} +1 -1
  410. package/dist/{index7.es.js → index.es7.js} +2 -2
  411. package/dist/{index7.es.js.map → index.es7.js.map} +1 -1
  412. package/dist/{index70.es.js → index.es70.js} +6 -6
  413. package/dist/{index70.es.js.map → index.es70.js.map} +1 -1
  414. package/dist/{index71.es.js → index.es71.js} +4 -4
  415. package/dist/{index71.es.js.map → index.es71.js.map} +1 -1
  416. package/dist/{index72.es.js → index.es72.js} +8 -8
  417. package/dist/{index72.es.js.map → index.es72.js.map} +1 -1
  418. package/dist/{index73.es.js → index.es73.js} +5 -5
  419. package/dist/{index73.es.js.map → index.es73.js.map} +1 -1
  420. package/dist/{index74.es.js → index.es74.js} +1 -1
  421. package/dist/{index74.es.js.map → index.es74.js.map} +1 -1
  422. package/dist/{index75.es.js → index.es75.js} +1 -1
  423. package/dist/{index75.es.js.map → index.es75.js.map} +1 -1
  424. package/dist/{index76.es.js → index.es76.js} +1 -1
  425. package/dist/{index76.es.js.map → index.es76.js.map} +1 -1
  426. package/dist/{index77.es.js → index.es77.js} +1 -1
  427. package/dist/{index77.es.js.map → index.es77.js.map} +1 -1
  428. package/dist/{index78.es.js → index.es78.js} +2 -2
  429. package/dist/{index78.es.js.map → index.es78.js.map} +1 -1
  430. package/dist/{index79.es.js → index.es79.js} +1 -1
  431. package/dist/{index79.es.js.map → index.es79.js.map} +1 -1
  432. package/dist/{index8.es.js → index.es8.js} +3 -3
  433. package/dist/{index8.es.js.map → index.es8.js.map} +1 -1
  434. package/dist/{index80.es.js → index.es80.js} +3 -3
  435. package/dist/{index80.es.js.map → index.es80.js.map} +1 -1
  436. package/dist/{index81.es.js → index.es81.js} +4 -4
  437. package/dist/{index81.es.js.map → index.es81.js.map} +1 -1
  438. package/dist/{index82.es.js → index.es82.js} +1 -1
  439. package/dist/{index82.es.js.map → index.es82.js.map} +1 -1
  440. package/dist/{index83.es.js → index.es83.js} +1 -1
  441. package/dist/{index83.es.js.map → index.es83.js.map} +1 -1
  442. package/dist/{index84.es.js.map → index.es84.js.map} +1 -1
  443. package/dist/{index85.es.js → index.es85.js} +2 -2
  444. package/dist/{index85.es.js.map → index.es85.js.map} +1 -1
  445. package/dist/{index86.es.js → index.es86.js} +2 -2
  446. package/dist/{index86.es.js.map → index.es86.js.map} +1 -1
  447. package/dist/{index87.es.js → index.es87.js} +1 -1
  448. package/dist/{index87.es.js.map → index.es87.js.map} +1 -1
  449. package/dist/index.es88.js +5 -0
  450. package/dist/index.es88.js.map +1 -0
  451. package/dist/{index89.es.js → index.es89.js} +1 -1
  452. package/dist/{index89.es.js.map → index.es89.js.map} +1 -1
  453. package/dist/{index9.es.js → index.es9.js} +4 -4
  454. package/dist/{index9.es.js.map → index.es9.js.map} +1 -1
  455. package/dist/{index90.es.js → index.es90.js} +2 -2
  456. package/dist/{index90.es.js.map → index.es90.js.map} +1 -1
  457. package/dist/{index91.es.js → index.es91.js} +3 -3
  458. package/dist/{index91.es.js.map → index.es91.js.map} +1 -1
  459. package/dist/{index92.es.js → index.es92.js} +1 -1
  460. package/dist/{index92.es.js.map → index.es92.js.map} +1 -1
  461. package/dist/{index93.es.js → index.es93.js} +1 -1
  462. package/dist/{index93.es.js.map → index.es93.js.map} +1 -1
  463. package/dist/{index94.es.js → index.es94.js} +1 -1
  464. package/dist/{index94.es.js.map → index.es94.js.map} +1 -1
  465. package/dist/{index95.es.js → index.es95.js} +1 -1
  466. package/dist/{index95.es.js.map → index.es95.js.map} +1 -1
  467. package/dist/{index96.es.js → index.es96.js} +1 -1
  468. package/dist/{index96.es.js.map → index.es96.js.map} +1 -1
  469. package/dist/{index117.es.js → index.es97.js} +1 -1
  470. package/dist/index.es97.js.map +1 -0
  471. package/dist/{index118.es.js → index.es98.js} +24 -23
  472. package/dist/index.es98.js.map +1 -0
  473. package/dist/{index119.es.js → index.es99.js} +1 -1
  474. package/dist/index.es99.js.map +1 -0
  475. package/dist/styles.css +72 -11
  476. package/package.json +1 -1
  477. package/dist/index117.es.js.map +0 -1
  478. package/dist/index118.es.js.map +0 -1
  479. package/dist/index119.es.js.map +0 -1
  480. package/dist/index120.es.js +0 -105
  481. package/dist/index120.es.js.map +0 -1
  482. package/dist/index144.es.js.map +0 -1
  483. package/dist/index149.es.js.map +0 -1
  484. package/dist/index150.es.js +0 -325
  485. package/dist/index150.es.js.map +0 -1
  486. package/dist/index151.es.js.map +0 -1
  487. package/dist/index153.es.js.map +0 -1
  488. package/dist/index156.es.js +0 -146
  489. package/dist/index156.es.js.map +0 -1
  490. package/dist/index158.es.js +0 -50
  491. package/dist/index158.es.js.map +0 -1
  492. package/dist/index163.es.js +0 -216
  493. package/dist/index163.es.js.map +0 -1
  494. package/dist/index168.es.js +0 -94
  495. package/dist/index168.es.js.map +0 -1
  496. package/dist/index169.es.js +0 -120
  497. package/dist/index169.es.js.map +0 -1
  498. package/dist/index45.es.js +0 -67
  499. package/dist/index45.es.js.map +0 -1
  500. package/dist/index88.es.js +0 -5
  501. package/dist/index88.es.js.map +0 -1
  502. package/dist/index97.es.js.map +0 -1
  503. package/dist/index98.es.js.map +0 -1
  504. package/dist/index99.es.js.map +0 -1
  505. package/dist/{index84.es.js → index.es84.js} +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es151.js","sources":["../src/components/organisms/image-editor/engine/layer-actions.js"],"sourcesContent":["import { pushHistory } from './history.js'\nimport { emitChange, getSel } from './state.js'\nimport {\n render,\n clampTextSize,\n clampBoxWidth,\n keepingFixed,\n} from './rendering.js'\n\n// These all resize the bounds, which would swing a rotated layer's centre.\nfunction resizeInPlace(state, L, mutate) {\n keepingFixed(state, L, { x: L.x, y: L.y }, mutate)\n}\nimport { SHAPES } from './constants.js'\nimport { applyModeCursor } from './mode.js'\n\nexport function layerName(L) {\n if (L.type === 'text')\n return '“' + (L.text.length > 16 ? L.text.slice(0, 16) + '…' : L.text) + '”'\n if (L.type === 'stroke')\n return L.style === 'highlight' ? 'Highlighter' : 'Brush stroke'\n if (L.type === 'sticker') return 'Sticker'\n const s = SHAPES.find((s) => s.id === L.shape)\n return s ? s.name : L.shape\n}\n\nexport function deleteLayer(state, id) {\n pushHistory(state)\n state.layers = state.layers.filter((l) => l.id !== id)\n if (state.selectedId === id) state.selectedId = null\n render(state)\n state.statusText = 'Layer deleted'\n emitChange(state)\n}\n\nexport function deleteSelected(state) {\n if (state.selectedId != null) deleteLayer(state, state.selectedId)\n}\n\nexport function duplicateSelected(state) {\n const L = getSel(state)\n if (!L) return\n pushHistory(state)\n const copy = JSON.parse(JSON.stringify(L))\n copy.id = state.nextId++\n if (\n copy.type === 'text' ||\n copy.type === 'shape' ||\n copy.type === 'sticker'\n ) {\n copy.x += 20\n copy.y += 20\n } else if (copy.type === 'stroke') {\n copy.points = copy.points.map((p) => ({ x: p.x + 20, y: p.y + 20 }))\n }\n state.layers.push(copy)\n state.selectedId = copy.id\n render(state)\n state.statusText = 'Layer duplicated'\n emitChange(state)\n}\n\nexport function bringSelectedToFront(state) {\n const i = state.layers.findIndex((l) => l.id === state.selectedId)\n if (i < 0) return\n pushHistory(state)\n const [L] = state.layers.splice(i, 1)\n state.layers.push(L)\n render(state)\n emitChange(state)\n}\n\nexport function sendSelectedToBack(state) {\n const i = state.layers.findIndex((l) => l.id === state.selectedId)\n if (i < 0) return\n pushHistory(state)\n const [L] = state.layers.splice(i, 1)\n state.layers.unshift(L)\n render(state)\n emitChange(state)\n}\n\nexport function setAdjustment(state, key, value) {\n state.adj[key] = value\n render(state)\n state.notify()\n}\nexport function setFilter(state, id) {\n state.adj.filter = id\n render(state)\n emitChange(state)\n}\nexport function selectShapeType(state, id) {\n state.selectedShapeType = id\n state.notify()\n}\nexport function setShapeFill(state, v) {\n state.shapeFill = v\n state.notify()\n}\nexport function setShapeWidth(state, v) {\n state.shapeWidth = v\n state.notify()\n}\nexport function setBrushSize(state, v) {\n state.brushSize = v\n state.notify()\n}\nexport function setBrushStyle(state, v) {\n state.brushStyle = v\n state.notify()\n}\nexport function setTextFont(state, v) {\n state.textFont = v\n state.notify()\n}\nexport function setTextSize(state, v) {\n state.textSize = v\n state.notify()\n}\nexport function setTextColor(state, v) {\n state.textColor = v\n state.notify()\n}\nexport function setShapeColor(state, v) {\n state.shapeColor = v\n state.notify()\n}\nexport function setDrawColor(state, v) {\n state.drawColor = v\n applyModeCursor(state)\n state.notify()\n}\n\nexport function setSelectedColor(state, v) {\n const L = getSel(state)\n if (!L) return\n pushHistory(state)\n L.color = v\n render(state)\n emitChange(state)\n}\nexport function setSelectedText(state, v) {\n const L = getSel(state)\n if (!L || L.type !== 'text') return\n resizeInPlace(state, L, () => {\n L.text = v\n })\n render(state)\n state.notify()\n}\nexport function setSelectedFont(state, v) {\n const L = getSel(state)\n if (!L) return\n pushHistory(state)\n resizeInPlace(state, L, () => {\n L.font = v\n })\n render(state)\n emitChange(state)\n}\nexport function setSelectedTextSize(state, v) {\n const L = getSel(state)\n if (!L) return\n resizeInPlace(state, L, () => {\n L.size = v\n clampTextSize(state, L)\n })\n render(state)\n state.notify()\n}\nexport function setSelectedBoxWidth(state, v) {\n const L = getSel(state)\n if (!L || L.type !== 'text') return\n resizeInPlace(state, L, () => {\n L.boxWidth = v\n clampBoxWidth(state, L)\n clampTextSize(state, L)\n })\n render(state)\n state.notify()\n}\nexport function setSelectedShapeFill(state, v) {\n const L = getSel(state)\n if (!L) return\n pushHistory(state)\n L.fill = v\n render(state)\n emitChange(state)\n}\nexport function setSelectedWidth(state, v) {\n const L = getSel(state)\n if (!L) return\n resizeInPlace(state, L, () => {\n L.width = v\n })\n render(state)\n state.notify()\n}\n\n// Labels live on the shape layer itself rather than as a separate text layer,\n// so they move, rotate and delete with the line they annotate.\n\nexport function setSelectedLabel(state, v) {\n const L = getSel(state)\n if (!L || L.type !== 'shape') return\n pushHistory(state)\n L.label = v\n render(state)\n emitChange(state)\n}\n\nexport function setSelectedLabelSize(state, v) {\n const L = getSel(state)\n if (!L || L.type !== 'shape') return\n L.labelSize = v\n render(state)\n state.notify()\n}\n\nexport function setSelectedLabelColor(state, v) {\n const L = getSel(state)\n if (!L || L.type !== 'shape') return\n L.labelColor = v\n render(state)\n state.notify()\n}\n\nexport function setSelectedLabelFont(state, v) {\n const L = getSel(state)\n if (!L || L.type !== 'shape') return\n L.labelFont = v\n render(state)\n state.notify()\n}\n\n/** Toggles a multi-point path between open and closed. */\nexport function setSelectedClosed(state, v) {\n const L = getSel(state)\n if (!L || L.type !== 'shape' || !L.points || L.points.length < 3) return\n pushHistory(state)\n L.closed = !!v\n render(state)\n emitChange(state)\n}\n\nexport function setSelectedLabelSide(state, v) {\n const L = getSel(state)\n if (!L || L.type !== 'shape') return\n L.labelSide = v === 'below' ? 'below' : 'above'\n render(state)\n state.notify()\n}\n\nexport function setSelectedLabelOffset(state, v) {\n const L = getSel(state)\n if (!L || L.type !== 'shape') return\n L.labelOffset = v\n render(state)\n state.notify()\n}\n\n/** Where the label sits along the shaft: 0 = start, 1 = end. */\nexport function setSelectedLabelPos(state, v) {\n const L = getSel(state)\n if (!L || L.type !== 'shape') return\n L.labelPos = Math.min(Math.max(v, 0), 1)\n render(state)\n state.notify()\n}\n\nexport function setSelectedLabelRotate(state, v) {\n const L = getSel(state)\n if (!L || L.type !== 'shape') return\n L.labelRotate = !!v\n render(state)\n state.notify()\n}\n\n/** Explicit multi-point drawing, so chaining points isn't a hidden gesture. */\nexport function setMultiPointMode(state, v) {\n state.multiPointMode = !!v\n state.notify()\n}\n\n// The ribbon's rotate/flip act on the whole image when nothing is selected,\n// and on just the selected layer when something is -- which is what people\n// expect after clicking a layer.\n\nexport function rotateSelected(state, deg) {\n const L = getSel(state)\n if (!L) return\n pushHistory(state)\n L.rotation = ((((L.rotation || 0) + deg) % 360) + 360) % 360\n render(state)\n state.statusText = `Layer rotated to ${Math.round(L.rotation)}°`\n emitChange(state)\n}\n\nexport function flipSelected(state, horizontal) {\n const L = getSel(state)\n if (!L) return\n pushHistory(state)\n if (horizontal) L.flipH = !L.flipH\n else L.flipV = !L.flipV\n render(state)\n state.statusText = horizontal ? 'Layer flipped H' : 'Layer flipped V'\n emitChange(state)\n}\n\n/** Horizontal nudge for text centred inside a closed shape. */\nexport function setSelectedLabelDx(state, v) {\n const L = getSel(state)\n if (!L || L.type !== 'shape') return\n L.labelDx = v\n render(state)\n state.notify()\n}\n\n/** Vertical nudge for text centred inside a closed shape. */\nexport function setSelectedLabelDy(state, v) {\n const L = getSel(state)\n if (!L || L.type !== 'shape') return\n L.labelDy = v\n render(state)\n state.notify()\n}\n"],"names":["resizeInPlace","state","L","mutate","keepingFixed","layerName","s","SHAPES","deleteLayer","id","pushHistory","l","render","emitChange","deleteSelected","duplicateSelected","getSel","copy","p","bringSelectedToFront","sendSelectedToBack","setAdjustment","key","value","setFilter","selectShapeType","setShapeFill","v","setShapeWidth","setBrushSize","setBrushStyle","setTextFont","setTextSize","setTextColor","setShapeColor","setDrawColor","applyModeCursor","setSelectedColor","setSelectedText","setSelectedFont","setSelectedTextSize","clampTextSize","setSelectedBoxWidth","clampBoxWidth","setSelectedShapeFill","setSelectedWidth","setSelectedLabel","setSelectedLabelSize","setSelectedLabelColor","setSelectedLabelFont","setSelectedClosed","setSelectedLabelSide","setSelectedLabelOffset","setSelectedLabelPos","setSelectedLabelRotate","setMultiPointMode","rotateSelected","deg","flipSelected","horizontal","setSelectedLabelDx","setSelectedLabelDy"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { supportsContextFilter as v, rasterizeWithFilter as C } from "./index162.es.js";
2
- import { syncCanvasSize as m, render as g, baseFilter as p, paintLayer as w } from "./index150.es.js";
3
- import { emit as l, emitChange as f, getState as y, resetAdjValues as S } from "./index149.es.js";
4
- import { loadStickerImage as I } from "./index155.es.js";
1
+ import { supportsContextFilter as v, rasterizeWithFilter as C } from "./index.es165.js";
2
+ import { syncCanvasSize as m, render as g, baseFilter as p, paintLayer as w } from "./index.es145.js";
3
+ import { emit as l, emitChange as f, getState as y, resetAdjValues as S } from "./index.es144.js";
4
+ import { loadStickerImage as I } from "./index.es150.js";
5
5
  function L(e) {
6
6
  const n = (e.type || "").toLowerCase();
7
7
  if (n === "image/heic" || n === "image/heif") return !0;
@@ -144,4 +144,4 @@ export {
144
144
  B as normalizeSource,
145
145
  O as produce
146
146
  };
147
- //# sourceMappingURL=index157.es.js.map
147
+ //# sourceMappingURL=index.es152.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index157.es.js","sources":["../src/components/organisms/image-editor/engine/save-export.js"],"sourcesContent":["import { rasterizeWithFilter, supportsContextFilter } from './canvas-filter.js'\nimport { render, syncCanvasSize, baseFilter, paintLayer } from './rendering.js'\nimport { emit, emitChange, getState, resetAdjValues } from './state.js'\nimport { loadStickerImage } from './stickers.js'\n\nfunction isHeic(file) {\n const type = (file.type || '').toLowerCase()\n if (type === 'image/heic' || type === 'image/heif') return true\n const name = file instanceof File ? file.name.toLowerCase() : ''\n return name.endsWith('.heic') || name.endsWith('.heif')\n}\n\nfunction toObjectURL(blob, cb) {\n cb(URL.createObjectURL(blob))\n}\n\nfunction convertHeicThenLoad(src, cb) {\n import('heic2any')\n .then(({ default: heic2any }) =>\n heic2any({ blob: src, toType: 'image/jpeg', quality: 0.8 })\n )\n .then((converted) =>\n toObjectURL(Array.isArray(converted) ? converted[0] : converted, cb)\n )\n .catch(() => toObjectURL(src, cb))\n}\n\nexport function normalizeSource(state, src, cb) {\n state.isLoadingImage = true\n state.notify()\n if (!src) {\n cb(null)\n return\n }\n if (src instanceof HTMLCanvasElement) {\n cb(src.toDataURL())\n return\n }\n if (\n typeof Blob !== 'undefined' &&\n (src instanceof Blob || src instanceof File)\n ) {\n if (isHeic(src)) {\n if (typeof createImageBitmap === 'function') {\n createImageBitmap(src)\n .then((bmp) => {\n bmp.close()\n toObjectURL(src, cb)\n })\n .catch(() => convertHeicThenLoad(src, cb))\n return\n }\n convertHeicThenLoad(src, cb)\n return\n }\n toObjectURL(src, cb)\n return\n }\n cb(src)\n}\n\nexport function doLoadImage(state, dataURL) {\n const revoke = () => {\n if (typeof dataURL === 'string' && dataURL.startsWith('blob:')) {\n URL.revokeObjectURL(dataURL)\n }\n }\n const im = new Image()\n im.crossOrigin = 'anonymous'\n im.onload = () => {\n let w = im.naturalWidth,\n h = im.naturalHeight\n const MAX = 2000\n if (Math.max(w, h) > MAX) {\n const s = MAX / Math.max(w, h)\n w = Math.round(w * s)\n h = Math.round(h * s)\n }\n state.sourceCanvas.width = w\n state.sourceCanvas.height = h\n state.sourceCanvas.getContext('2d').drawImage(im, 0, 0, w, h)\n state.originalCanvas = document.createElement('canvas')\n state.originalCanvas.width = w\n state.originalCanvas.height = h\n state.originalCanvas.getContext('2d').drawImage(state.sourceCanvas, 0, 0)\n revoke()\n state.layers = []\n state.selectedId = null\n state.undoStack = []\n state.redoStack = []\n state.zoom = 1\n resetAdjValues(state)\n if (state.mounted) syncCanvasSize(state)\n render(state)\n state.mode = 'select'\n state.isLoadingImage = false\n state.statusText = 'Image loaded'\n emit(state, 'load', { width: w, height: h })\n emitChange(state)\n }\n im.onerror = () => {\n revoke()\n state.isLoadingImage = false\n state.statusText = 'Could not load that image (CORS?)'\n // eslint-disable-next-line no-console\n console.warn(\n '[ImageEditor] Failed to load image (likely a CORS issue on the source URL). ' +\n 'Reset stays disabled since there is nothing to revert to.',\n typeof dataURL === 'string' ? dataURL.slice(0, 80) : dataURL\n )\n state.notify()\n }\n im.src = dataURL\n}\n\nexport function loadState(state, s) {\n if (!s || !s.image) return\n const im = new Image()\n im.onload = () => {\n state.sourceCanvas.width = s.width || im.naturalWidth\n state.sourceCanvas.height = s.height || im.naturalHeight\n state.sourceCanvas\n .getContext('2d')\n .drawImage(im, 0, 0, state.sourceCanvas.width, state.sourceCanvas.height)\n state.originalCanvas = document.createElement('canvas')\n state.originalCanvas.width = state.sourceCanvas.width\n state.originalCanvas.height = state.sourceCanvas.height\n state.originalCanvas\n .getContext('2d')\n .drawImage(im, 0, 0, state.sourceCanvas.width, state.sourceCanvas.height)\n state.layers = JSON.parse(JSON.stringify(s.layers || []))\n state.layers.forEach((L) => {\n if (L.id >= state.nextId) state.nextId = L.id + 1\n })\n Object.assign(state.adj, s.adjustments || {})\n state.selectedId = null\n state.undoStack = []\n state.redoStack = []\n state.zoom = 1\n if (state.mounted) syncCanvasSize(state)\n render(state)\n state.mode = 'select'\n state.statusText = 'State restored'\n emit(state, 'load', { restored: true })\n emitChange(state)\n const stickerSrcs = [\n ...new Set(\n state.layers.filter((L) => L.type === 'sticker').map((L) => L.src)\n ),\n ]\n if (stickerSrcs.length) {\n Promise.all(\n stickerSrcs.map((src) => loadStickerImage(state, src).catch(() => {}))\n ).then(() => render(state))\n }\n }\n im.src = s.image\n}\n\nasync function flatten(state) {\n const out = document.createElement('canvas')\n out.width = state.sourceCanvas.width\n out.height = state.sourceCanvas.height\n const o = out.getContext('2d')\n const filter = baseFilter(state)\n\n if (supportsContextFilter()) {\n o.filter = filter\n o.drawImage(state.sourceCanvas, 0, 0)\n o.filter = 'none'\n } else {\n try {\n const filtered = await rasterizeWithFilter(state.sourceCanvas, filter)\n o.drawImage(filtered, 0, 0)\n } catch {\n o.drawImage(state.sourceCanvas, 0, 0)\n }\n }\n\n state.layers.forEach((L) => {\n if (!L._editing) paintLayer(state, o, L)\n })\n return out\n}\n\nfunction buildResult(state, canvasEl, blob, type) {\n const dataURL = canvasEl.toDataURL(type || 'image/png')\n const result = {\n blob: blob,\n dataURL: dataURL,\n canvas: canvasEl,\n width: canvasEl.width,\n height: canvasEl.height,\n type: (blob && blob.type) || type || 'image/png',\n state: getState(state),\n getBlob: (t, q) =>\n new Promise((res) => canvasEl.toBlob((b) => res(b), t || 'image/png', q)),\n download: (filename) => {\n const url = URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n a.download = filename || 'picture-studio.png'\n a.click()\n setTimeout(() => URL.revokeObjectURL(url), 1000)\n return result\n },\n }\n return result\n}\n\nexport function produce(state, type, quality) {\n return flatten(state).then(\n (canvasEl) =>\n new Promise((resolve) => {\n canvasEl.toBlob(\n (blob) =>\n resolve(buildResult(state, canvasEl, blob, type || 'image/png')),\n type || 'image/png',\n quality\n )\n })\n )\n}\n\nexport function doSave(state, self) {\n if (state.isSaving) return\n state.isSaving = true\n state.notify()\n return produce(state, 'image/jpeg', 0.92)\n .then((result) => {\n emit(state, 'save', result)\n const ret =\n typeof state.config.onSave === 'function'\n ? state.config.onSave(result, self)\n : undefined\n return Promise.resolve(ret).finally(() => {\n state.isSaving = false\n state.notify()\n if (!state.config.keepOpenOnSave) self.close()\n })\n })\n .catch(() => {\n state.isSaving = false\n state.notify()\n })\n}\n"],"names":["isHeic","file","type","name","toObjectURL","blob","cb","convertHeicThenLoad","src","heic2any","converted","normalizeSource","state","bmp","doLoadImage","dataURL","revoke","im","w","h","MAX","s","resetAdjValues","syncCanvasSize","render","emit","emitChange","loadState","L","stickerSrcs","loadStickerImage","flatten","out","o","filter","baseFilter","supportsContextFilter","filtered","rasterizeWithFilter","paintLayer","buildResult","canvasEl","result","getState","t","q","res","b","filename","url","a","produce","quality","resolve","doSave","self","ret"],"mappings":"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"}
1
+ {"version":3,"file":"index.es152.js","sources":["../src/components/organisms/image-editor/engine/save-export.js"],"sourcesContent":["import { rasterizeWithFilter, supportsContextFilter } from './canvas-filter.js'\nimport { render, syncCanvasSize, baseFilter, paintLayer } from './rendering.js'\nimport { emit, emitChange, getState, resetAdjValues } from './state.js'\nimport { loadStickerImage } from './stickers.js'\n\nfunction isHeic(file) {\n const type = (file.type || '').toLowerCase()\n if (type === 'image/heic' || type === 'image/heif') return true\n const name = file instanceof File ? file.name.toLowerCase() : ''\n return name.endsWith('.heic') || name.endsWith('.heif')\n}\n\nfunction toObjectURL(blob, cb) {\n cb(URL.createObjectURL(blob))\n}\n\nfunction convertHeicThenLoad(src, cb) {\n import('heic2any')\n .then(({ default: heic2any }) =>\n heic2any({ blob: src, toType: 'image/jpeg', quality: 0.8 })\n )\n .then((converted) =>\n toObjectURL(Array.isArray(converted) ? converted[0] : converted, cb)\n )\n .catch(() => toObjectURL(src, cb))\n}\n\nexport function normalizeSource(state, src, cb) {\n state.isLoadingImage = true\n state.notify()\n if (!src) {\n cb(null)\n return\n }\n if (src instanceof HTMLCanvasElement) {\n cb(src.toDataURL())\n return\n }\n if (\n typeof Blob !== 'undefined' &&\n (src instanceof Blob || src instanceof File)\n ) {\n if (isHeic(src)) {\n if (typeof createImageBitmap === 'function') {\n createImageBitmap(src)\n .then((bmp) => {\n bmp.close()\n toObjectURL(src, cb)\n })\n .catch(() => convertHeicThenLoad(src, cb))\n return\n }\n convertHeicThenLoad(src, cb)\n return\n }\n toObjectURL(src, cb)\n return\n }\n cb(src)\n}\n\nexport function doLoadImage(state, dataURL) {\n const revoke = () => {\n if (typeof dataURL === 'string' && dataURL.startsWith('blob:')) {\n URL.revokeObjectURL(dataURL)\n }\n }\n const im = new Image()\n im.crossOrigin = 'anonymous'\n im.onload = () => {\n let w = im.naturalWidth,\n h = im.naturalHeight\n const MAX = 2000\n if (Math.max(w, h) > MAX) {\n const s = MAX / Math.max(w, h)\n w = Math.round(w * s)\n h = Math.round(h * s)\n }\n state.sourceCanvas.width = w\n state.sourceCanvas.height = h\n state.sourceCanvas.getContext('2d').drawImage(im, 0, 0, w, h)\n state.originalCanvas = document.createElement('canvas')\n state.originalCanvas.width = w\n state.originalCanvas.height = h\n state.originalCanvas.getContext('2d').drawImage(state.sourceCanvas, 0, 0)\n revoke()\n state.layers = []\n state.selectedId = null\n state.undoStack = []\n state.redoStack = []\n state.zoom = 1\n resetAdjValues(state)\n if (state.mounted) syncCanvasSize(state)\n render(state)\n state.mode = 'select'\n state.isLoadingImage = false\n state.statusText = 'Image loaded'\n emit(state, 'load', { width: w, height: h })\n emitChange(state)\n }\n im.onerror = () => {\n revoke()\n state.isLoadingImage = false\n state.statusText = 'Could not load that image (CORS?)'\n // eslint-disable-next-line no-console\n console.warn(\n '[ImageEditor] Failed to load image (likely a CORS issue on the source URL). ' +\n 'Reset stays disabled since there is nothing to revert to.',\n typeof dataURL === 'string' ? dataURL.slice(0, 80) : dataURL\n )\n state.notify()\n }\n im.src = dataURL\n}\n\nexport function loadState(state, s) {\n if (!s || !s.image) return\n const im = new Image()\n im.onload = () => {\n state.sourceCanvas.width = s.width || im.naturalWidth\n state.sourceCanvas.height = s.height || im.naturalHeight\n state.sourceCanvas\n .getContext('2d')\n .drawImage(im, 0, 0, state.sourceCanvas.width, state.sourceCanvas.height)\n state.originalCanvas = document.createElement('canvas')\n state.originalCanvas.width = state.sourceCanvas.width\n state.originalCanvas.height = state.sourceCanvas.height\n state.originalCanvas\n .getContext('2d')\n .drawImage(im, 0, 0, state.sourceCanvas.width, state.sourceCanvas.height)\n state.layers = JSON.parse(JSON.stringify(s.layers || []))\n state.layers.forEach((L) => {\n if (L.id >= state.nextId) state.nextId = L.id + 1\n })\n Object.assign(state.adj, s.adjustments || {})\n state.selectedId = null\n state.undoStack = []\n state.redoStack = []\n state.zoom = 1\n if (state.mounted) syncCanvasSize(state)\n render(state)\n state.mode = 'select'\n state.statusText = 'State restored'\n emit(state, 'load', { restored: true })\n emitChange(state)\n const stickerSrcs = [\n ...new Set(\n state.layers.filter((L) => L.type === 'sticker').map((L) => L.src)\n ),\n ]\n if (stickerSrcs.length) {\n Promise.all(\n stickerSrcs.map((src) => loadStickerImage(state, src).catch(() => {}))\n ).then(() => render(state))\n }\n }\n im.src = s.image\n}\n\nasync function flatten(state) {\n const out = document.createElement('canvas')\n out.width = state.sourceCanvas.width\n out.height = state.sourceCanvas.height\n const o = out.getContext('2d')\n const filter = baseFilter(state)\n\n if (supportsContextFilter()) {\n o.filter = filter\n o.drawImage(state.sourceCanvas, 0, 0)\n o.filter = 'none'\n } else {\n try {\n const filtered = await rasterizeWithFilter(state.sourceCanvas, filter)\n o.drawImage(filtered, 0, 0)\n } catch {\n o.drawImage(state.sourceCanvas, 0, 0)\n }\n }\n\n state.layers.forEach((L) => {\n if (!L._editing) paintLayer(state, o, L)\n })\n return out\n}\n\nfunction buildResult(state, canvasEl, blob, type) {\n const dataURL = canvasEl.toDataURL(type || 'image/png')\n const result = {\n blob: blob,\n dataURL: dataURL,\n canvas: canvasEl,\n width: canvasEl.width,\n height: canvasEl.height,\n type: (blob && blob.type) || type || 'image/png',\n state: getState(state),\n getBlob: (t, q) =>\n new Promise((res) => canvasEl.toBlob((b) => res(b), t || 'image/png', q)),\n download: (filename) => {\n const url = URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n a.download = filename || 'picture-studio.png'\n a.click()\n setTimeout(() => URL.revokeObjectURL(url), 1000)\n return result\n },\n }\n return result\n}\n\nexport function produce(state, type, quality) {\n return flatten(state).then(\n (canvasEl) =>\n new Promise((resolve) => {\n canvasEl.toBlob(\n (blob) =>\n resolve(buildResult(state, canvasEl, blob, type || 'image/png')),\n type || 'image/png',\n quality\n )\n })\n )\n}\n\nexport function doSave(state, self) {\n if (state.isSaving) return\n state.isSaving = true\n state.notify()\n return produce(state, 'image/jpeg', 0.92)\n .then((result) => {\n emit(state, 'save', result)\n const ret =\n typeof state.config.onSave === 'function'\n ? state.config.onSave(result, self)\n : undefined\n return Promise.resolve(ret).finally(() => {\n state.isSaving = false\n state.notify()\n if (!state.config.keepOpenOnSave) self.close()\n })\n })\n .catch(() => {\n state.isSaving = false\n state.notify()\n })\n}\n"],"names":["isHeic","file","type","name","toObjectURL","blob","cb","convertHeicThenLoad","src","heic2any","converted","normalizeSource","state","bmp","doLoadImage","dataURL","revoke","im","w","h","MAX","s","resetAdjValues","syncCanvasSize","render","emit","emitChange","loadState","L","stickerSrcs","loadStickerImage","flatten","out","o","filter","baseFilter","supportsContextFilter","filtered","rasterizeWithFilter","paintLayer","buildResult","canvasEl","result","getState","t","q","res","b","filename","url","a","produce","quality","resolve","doSave","self","ret"],"mappings":"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"}
@@ -0,0 +1,147 @@
1
+ import { pushHistory as u } from "./index.es146.js";
2
+ import { emitChange as h } from "./index.es144.js";
3
+ import { render as p, layerBounds as m } from "./index.es145.js";
4
+ const l = "geoiq-image-editor:saved-layers:v1", b = 200;
5
+ function v(e) {
6
+ const r = e.config?.savedLayersScope;
7
+ return r ? `${l}:${String(r)}` : l;
8
+ }
9
+ const d = ["id", "_editing", "_bounds", "_anchorPt"];
10
+ function S() {
11
+ try {
12
+ return typeof window < "u" && !!window.localStorage;
13
+ } catch {
14
+ return !1;
15
+ }
16
+ }
17
+ function A(e) {
18
+ if (!S()) return [];
19
+ try {
20
+ const r = window.localStorage.getItem(v(e)), i = r ? JSON.parse(r) : [];
21
+ return Array.isArray(i) ? i : [];
22
+ } catch {
23
+ return [];
24
+ }
25
+ }
26
+ function C(e, r) {
27
+ if (S())
28
+ try {
29
+ window.localStorage.setItem(v(e), JSON.stringify(r));
30
+ } catch {
31
+ }
32
+ }
33
+ function $(e) {
34
+ const r = e.config?.savedLayers;
35
+ return e.savedLayers = Array.isArray(r) ? r.slice() : A(e), e.savedLayers;
36
+ }
37
+ function D(e, r) {
38
+ e.savedLayers = Array.isArray(r) ? r.slice() : [], y(e) || g(e), e.notify();
39
+ }
40
+ function y(e) {
41
+ return Array.isArray(e.config?.savedLayers) || typeof e.config?.onSavedLayersChange == "function";
42
+ }
43
+ function f(e) {
44
+ y(e) || g(e), e.config?.onSavedLayersChange?.(e.savedLayers.slice()), e.notify();
45
+ }
46
+ function g(e) {
47
+ C(e, e.savedLayers);
48
+ }
49
+ function I(e) {
50
+ if (e.type === "text") {
51
+ const r = (e.text || "").trim().replace(/\s+/g, " ");
52
+ return r ? r.slice(0, 40) : "Text";
53
+ }
54
+ return e.type === "shape" ? e.label ? String(e.label).trim().slice(0, 40) : e.points && e.points.length > 2 ? "Multi-point line" : e.shape : e.type === "stroke" ? "Drawing" : e.type === "sticker" ? "Sticker" : "Layer";
55
+ }
56
+ function E(e, r) {
57
+ const i = e.selectedId != null ? e.layers.find((c) => c.id === e.selectedId) : null;
58
+ if (!i) return null;
59
+ const a = JSON.parse(JSON.stringify(i));
60
+ d.forEach((c) => delete a[c]);
61
+ const o = {
62
+ id: `sl_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 7)}`,
63
+ name: (r || "").trim() || I(i),
64
+ createdAt: Date.now(),
65
+ layer: a
66
+ }, n = [o, ...e.savedLayers || []], s = y(e) ? n : n.slice(0, b), t = n.length - s.length;
67
+ return e.savedLayers = s, f(e), e.statusText = t ? `Saved "${o.name}" — library full, oldest ${t === 1 ? "layer was" : "layers were"} removed` : `Saved "${o.name}"`, o;
68
+ }
69
+ function J(e, r) {
70
+ e.savedLayers = (e.savedLayers || []).filter((i) => i.id !== r), f(e), e.statusText = "Saved layer removed";
71
+ }
72
+ function M(e, r, i) {
73
+ const a = (e.savedLayers || []).find((o) => o.id === r);
74
+ a && (a.name = (i || "").trim() || a.name, f(e));
75
+ }
76
+ function x(e, r) {
77
+ const i = e.sourceCanvas.width, a = e.sourceCanvas.height, o = m(e, r);
78
+ if (!o.w || !o.h) return;
79
+ const n = Math.min(i * 0.9 / o.w, a * 0.9 / o.h, 1);
80
+ if (n >= 1) return;
81
+ const s = (t) => ({
82
+ x: (t.x - o.x) * n + o.x,
83
+ y: (t.y - o.y) * n + o.y
84
+ });
85
+ if (r.points)
86
+ r.points = r.points.map(s);
87
+ else {
88
+ const t = s({ x: r.x || 0, y: r.y || 0 });
89
+ r.x = t.x, r.y = t.y, typeof r.w == "number" && (r.w *= n), typeof r.h == "number" && (r.h *= n);
90
+ }
91
+ typeof r.size == "number" && (r.size *= n), typeof r.boxWidth == "number" && (r.boxWidth *= n), typeof r.width == "number" && (r.width = Math.max(1, r.width * n)), typeof r.labelSize == "number" && (r.labelSize *= n), typeof r.labelOffset == "number" && (r.labelOffset *= n), typeof r.labelDx == "number" && (r.labelDx *= n), typeof r.labelDy == "number" && (r.labelDy *= n);
92
+ }
93
+ function w(e, r) {
94
+ const i = m(e, r), a = (e.sourceCanvas.width - i.w) / 2 - i.x, o = (e.sourceCanvas.height - i.h) / 2 - i.y;
95
+ r.points ? r.points = r.points.map((n) => ({ x: n.x + a, y: n.y + o })) : (r.x = (r.x || 0) + a, r.y = (r.y || 0) + o);
96
+ }
97
+ function P(e, r) {
98
+ const i = (e.savedLayers || []).find((n) => n.id === r);
99
+ if (!i || !e.sourceCanvas.width) return;
100
+ u(e);
101
+ const a = JSON.parse(JSON.stringify(i.layer));
102
+ d.forEach((n) => delete a[n]);
103
+ const o = e.layers.reduce(
104
+ (n, s) => typeof s.id == "number" && s.id > n ? s.id : n,
105
+ 0
106
+ );
107
+ e.nextId = Math.max(e.nextId, o + 1), a.id = e.nextId++, x(e, a), w(e, a), e.layers.push(a), e.mode = "select", e.selectedId = a.id, p(e), e.statusText = `Added "${i.name}"`, h(e);
108
+ }
109
+ function k(e, r) {
110
+ if (!r || !r.layer || !e.sourceCanvas.width) return;
111
+ u(e);
112
+ const i = JSON.parse(JSON.stringify(r.layer));
113
+ d.forEach((o) => delete i[o]);
114
+ const a = e.layers.reduce(
115
+ (o, n) => typeof n.id == "number" && n.id > o ? n.id : o,
116
+ 0
117
+ );
118
+ e.nextId = Math.max(e.nextId, a + 1), i.id = e.nextId++, x(e, i), w(e, i), e.layers.push(i), e.mode = "select", e.selectedId = i.id, p(e), e.statusText = `Added "${r.name || "layer"}"`, h(e);
119
+ }
120
+ function O(e) {
121
+ return typeof e.config?.onSearchSavedLayers == "function";
122
+ }
123
+ function z(e, r) {
124
+ const i = (r || "").trim();
125
+ if (O(e))
126
+ return Promise.resolve(e.config.onSearchSavedLayers(i)).then(
127
+ (n) => Array.isArray(n) ? n : []
128
+ );
129
+ const a = i.toLowerCase(), o = e.savedLayers || [];
130
+ return Promise.resolve(
131
+ a ? o.filter((n) => (n.name || "").toLowerCase().includes(a)) : o.slice()
132
+ );
133
+ }
134
+ export {
135
+ b as MAX_LOCAL_SAVED,
136
+ O as canSearch,
137
+ J as deleteSavedLayer,
138
+ P as insertSavedLayer,
139
+ k as insertSavedLayerEntry,
140
+ $ as loadSavedLayers,
141
+ M as renameSavedLayer,
142
+ E as saveSelectedLayer,
143
+ z as searchSavedLayers,
144
+ D as setSavedLayers,
145
+ v as storageKey
146
+ };
147
+ //# sourceMappingURL=index.es153.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es153.js","sources":["../src/components/organisms/image-editor/engine/saved-layers.js"],"sourcesContent":["import { pushHistory } from './history.js'\nimport { emitChange } from './state.js'\nimport { render, layerBounds } from './rendering.js'\n\nconst STORAGE_PREFIX = 'geoiq-image-editor:saved-layers:v1'\nexport const MAX_LOCAL_SAVED = 200\n\nexport function storageKey(state) {\n const scope = state.config?.savedLayersScope\n return scope ? `${STORAGE_PREFIX}:${String(scope)}` : STORAGE_PREFIX\n}\n\nconst TRANSIENT = ['id', '_editing', '_bounds', '_anchorPt']\n\nfunction canUseStorage() {\n try {\n return typeof window !== 'undefined' && !!window.localStorage\n } catch {\n // Safari in private mode throws on access rather than returning null.\n return false\n }\n}\n\nfunction readStorage(state) {\n if (!canUseStorage()) return []\n try {\n const raw = window.localStorage.getItem(storageKey(state))\n const parsed = raw ? JSON.parse(raw) : []\n return Array.isArray(parsed) ? parsed : []\n } catch {\n return []\n }\n}\n\nfunction writeStorage(state, items) {\n if (!canUseStorage()) return\n try {\n window.localStorage.setItem(storageKey(state), JSON.stringify(items))\n } catch {\n // Quota exceeded, or storage disabled — the in-memory list still works\n // for this session, so failing silently is better than breaking the editor.\n }\n}\n\n// Host-supplied when the app persists them itself, otherwise localStorage.\nexport function loadSavedLayers(state) {\n const fromConfig = state.config?.savedLayers\n state.savedLayers = Array.isArray(fromConfig)\n ? fromConfig.slice()\n : readStorage(state)\n return state.savedLayers\n}\n\n// The engine is created before the host's fetch resolves, so the library has to\n// be pushed in rather than read from the captured config.\nexport function setSavedLayers(state, list) {\n state.savedLayers = Array.isArray(list) ? list.slice() : []\n // Host-owned lists are not mirrored into localStorage: the app is the source\n // of truth, and a stale local copy would resurface deleted layers.\n if (!isHostManaged(state)) persist_(state)\n state.notify()\n}\n\nfunction isHostManaged(state) {\n return (\n Array.isArray(state.config?.savedLayers) ||\n typeof state.config?.onSavedLayersChange === 'function'\n )\n}\n\nfunction persist(state) {\n if (!isHostManaged(state)) persist_(state)\n state.config?.onSavedLayersChange?.(state.savedLayers.slice())\n state.notify()\n}\n\nfunction persist_(state) {\n writeStorage(state, state.savedLayers)\n}\n\nfunction autoName(L) {\n if (L.type === 'text') {\n const t = (L.text || '').trim().replace(/\\s+/g, ' ')\n return t ? t.slice(0, 40) : 'Text'\n }\n if (L.type === 'shape') {\n if (L.label) return String(L.label).trim().slice(0, 40)\n return L.points && L.points.length > 2 ? 'Multi-point line' : L.shape\n }\n if (L.type === 'stroke') return 'Drawing'\n if (L.type === 'sticker') return 'Sticker'\n return 'Layer'\n}\n\nexport function saveSelectedLayer(state, name) {\n const L =\n state.selectedId != null\n ? state.layers.find((l) => l.id === state.selectedId)\n : null\n if (!L) return null\n const copy = JSON.parse(JSON.stringify(L))\n TRANSIENT.forEach((k) => delete copy[k])\n const entry = {\n id: `sl_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 7)}`,\n name: (name || '').trim() || autoName(L),\n createdAt: Date.now(),\n layer: copy,\n }\n const next = [entry, ...(state.savedLayers || [])]\n const capped = isHostManaged(state) ? next : next.slice(0, MAX_LOCAL_SAVED)\n const dropped = next.length - capped.length\n state.savedLayers = capped\n persist(state)\n // Evicting someone's oldest layer without saying so reads as data loss.\n state.statusText = dropped\n ? `Saved \"${entry.name}\" — library full, oldest ${\n dropped === 1 ? 'layer was' : 'layers were'\n } removed`\n : `Saved \"${entry.name}\"`\n return entry\n}\n\nexport function deleteSavedLayer(state, id) {\n state.savedLayers = (state.savedLayers || []).filter((s) => s.id !== id)\n persist(state)\n state.statusText = 'Saved layer removed'\n}\n\nexport function renameSavedLayer(state, id, name) {\n const entry = (state.savedLayers || []).find((s) => s.id === id)\n if (!entry) return\n entry.name = (name || '').trim() || entry.name\n persist(state)\n}\n\n// A layer saved over a large photo would spill off a small one. Shrinks only:\n// blowing a small layer up to fill a big image is rarely wanted.\nfunction fitToCanvas(state, L) {\n const cw = state.sourceCanvas.width\n const ch = state.sourceCanvas.height\n const b = layerBounds(state, L)\n if (!b.w || !b.h) return\n const k = Math.min((cw * 0.9) / b.w, (ch * 0.9) / b.h, 1)\n if (k >= 1) return\n\n const scalePt = (p) => ({\n x: (p.x - b.x) * k + b.x,\n y: (p.y - b.y) * k + b.y,\n })\n if (L.points) {\n L.points = L.points.map(scalePt)\n } else {\n const o = scalePt({ x: L.x || 0, y: L.y || 0 })\n L.x = o.x\n L.y = o.y\n if (typeof L.w === 'number') L.w *= k\n if (typeof L.h === 'number') L.h *= k\n }\n if (typeof L.size === 'number') L.size *= k\n if (typeof L.boxWidth === 'number') L.boxWidth *= k\n if (typeof L.width === 'number') L.width = Math.max(1, L.width * k)\n if (typeof L.labelSize === 'number') L.labelSize *= k\n if (typeof L.labelOffset === 'number') L.labelOffset *= k\n if (typeof L.labelDx === 'number') L.labelDx *= k\n if (typeof L.labelDy === 'number') L.labelDy *= k\n}\n\nfunction centreOnCanvas(state, L) {\n const b = layerBounds(state, L)\n const dx = (state.sourceCanvas.width - b.w) / 2 - b.x\n const dy = (state.sourceCanvas.height - b.h) / 2 - b.y\n if (L.points) {\n L.points = L.points.map((p) => ({ x: p.x + dx, y: p.y + dy }))\n } else {\n L.x = (L.x || 0) + dx\n L.y = (L.y || 0) + dy\n }\n}\n\nexport function insertSavedLayer(state, id) {\n const entry = (state.savedLayers || []).find((s) => s.id === id)\n if (!entry || !state.sourceCanvas.width) return\n pushHistory(state)\n const L = JSON.parse(JSON.stringify(entry.layer))\n TRANSIENT.forEach((k) => delete L[k])\n const highest = state.layers.reduce(\n (m, l) => (typeof l.id === 'number' && l.id > m ? l.id : m),\n 0\n )\n state.nextId = Math.max(state.nextId, highest + 1)\n L.id = state.nextId++\n fitToCanvas(state, L)\n centreOnCanvas(state, L)\n state.layers.push(L)\n state.mode = 'select'\n state.selectedId = L.id\n render(state)\n state.statusText = `Added \"${entry.name}\"`\n emitChange(state)\n}\n\n// Search results come from the host's API and may not be in the local list, so\n// an id lookup would miss them.\nexport function insertSavedLayerEntry(state, entry) {\n if (!entry || !entry.layer || !state.sourceCanvas.width) return\n pushHistory(state)\n const L = JSON.parse(JSON.stringify(entry.layer))\n TRANSIENT.forEach((k) => delete L[k])\n const highest = state.layers.reduce(\n (m, l) => (typeof l.id === 'number' && l.id > m ? l.id : m),\n 0\n )\n state.nextId = Math.max(state.nextId, highest + 1)\n L.id = state.nextId++\n fitToCanvas(state, L)\n centreOnCanvas(state, L)\n state.layers.push(L)\n state.mode = 'select'\n state.selectedId = L.id\n render(state)\n state.statusText = `Added \"${entry.name || 'layer'}\"`\n emitChange(state)\n}\n\nexport function canSearch(state) {\n return typeof state.config?.onSearchSavedLayers === 'function'\n}\n\n// Uses the host's API when wired up, otherwise filters locally so search still\n// works on the localStorage fallback.\nexport function searchSavedLayers(state, query) {\n const q = (query || '').trim()\n if (canSearch(state)) {\n return Promise.resolve(state.config.onSearchSavedLayers(q)).then((r) =>\n Array.isArray(r) ? r : []\n )\n }\n const needle = q.toLowerCase()\n const list = state.savedLayers || []\n return Promise.resolve(\n needle\n ? list.filter((e) => (e.name || '').toLowerCase().includes(needle))\n : list.slice()\n )\n}\n"],"names":["STORAGE_PREFIX","MAX_LOCAL_SAVED","storageKey","state","scope","TRANSIENT","canUseStorage","readStorage","raw","parsed","writeStorage","items","loadSavedLayers","fromConfig","setSavedLayers","list","isHostManaged","persist_","persist","autoName","L","t","saveSelectedLayer","name","l","copy","k","entry","next","capped","dropped","deleteSavedLayer","id","s","renameSavedLayer","fitToCanvas","cw","ch","b","layerBounds","scalePt","p","o","centreOnCanvas","dx","dy","insertSavedLayer","pushHistory","highest","m","render","emitChange","insertSavedLayerEntry","canSearch","searchSavedLayers","query","q","r","needle","e"],"mappings":";;;AAIA,MAAMA,IAAiB,sCACVC,IAAkB;AAExB,SAASC,EAAWC,GAAO;AAChC,QAAMC,IAAQD,EAAM,QAAQ;AAC5B,SAAOC,IAAQ,GAAGJ,CAAc,IAAI,OAAOI,CAAK,CAAC,KAAKJ;AACxD;AAEA,MAAMK,IAAY,CAAC,MAAM,YAAY,WAAW,WAAW;AAE3D,SAASC,IAAgB;AACvB,MAAI;AACF,WAAO,OAAO,SAAW,OAAe,CAAC,CAAC,OAAO;AAAA,EACnD,QAAQ;AAEN,WAAO;AAAA,EACT;AACF;AAEA,SAASC,EAAYJ,GAAO;AAC1B,MAAI,CAACG,EAAa,EAAI,QAAO,CAAA;AAC7B,MAAI;AACF,UAAME,IAAM,OAAO,aAAa,QAAQN,EAAWC,CAAK,CAAC,GACnDM,IAASD,IAAM,KAAK,MAAMA,CAAG,IAAI,CAAA;AACvC,WAAO,MAAM,QAAQC,CAAM,IAAIA,IAAS,CAAA;AAAA,EAC1C,QAAQ;AACN,WAAO,CAAA;AAAA,EACT;AACF;AAEA,SAASC,EAAaP,GAAOQ,GAAO;AAClC,MAAKL,EAAa;AAClB,QAAI;AACF,aAAO,aAAa,QAAQJ,EAAWC,CAAK,GAAG,KAAK,UAAUQ,CAAK,CAAC;AAAA,IACtE,QAAQ;AAAA,IAGR;AACF;AAGO,SAASC,EAAgBT,GAAO;AACrC,QAAMU,IAAaV,EAAM,QAAQ;AACjC,SAAAA,EAAM,cAAc,MAAM,QAAQU,CAAU,IACxCA,EAAW,MAAK,IAChBN,EAAYJ,CAAK,GACdA,EAAM;AACf;AAIO,SAASW,EAAeX,GAAOY,GAAM;AAC1C,EAAAZ,EAAM,cAAc,MAAM,QAAQY,CAAI,IAAIA,EAAK,UAAU,CAAA,GAGpDC,EAAcb,CAAK,KAAGc,EAASd,CAAK,GACzCA,EAAM,OAAM;AACd;AAEA,SAASa,EAAcb,GAAO;AAC5B,SACE,MAAM,QAAQA,EAAM,QAAQ,WAAW,KACvC,OAAOA,EAAM,QAAQ,uBAAwB;AAEjD;AAEA,SAASe,EAAQf,GAAO;AACtB,EAAKa,EAAcb,CAAK,KAAGc,EAASd,CAAK,GACzCA,EAAM,QAAQ,sBAAsBA,EAAM,YAAY,MAAK,CAAE,GAC7DA,EAAM,OAAM;AACd;AAEA,SAASc,EAASd,GAAO;AACvB,EAAAO,EAAaP,GAAOA,EAAM,WAAW;AACvC;AAEA,SAASgB,EAASC,GAAG;AACnB,MAAIA,EAAE,SAAS,QAAQ;AACrB,UAAMC,KAAKD,EAAE,QAAQ,IAAI,KAAI,EAAG,QAAQ,QAAQ,GAAG;AACnD,WAAOC,IAAIA,EAAE,MAAM,GAAG,EAAE,IAAI;AAAA,EAC9B;AACA,SAAID,EAAE,SAAS,UACTA,EAAE,QAAc,OAAOA,EAAE,KAAK,EAAE,KAAI,EAAG,MAAM,GAAG,EAAE,IAC/CA,EAAE,UAAUA,EAAE,OAAO,SAAS,IAAI,qBAAqBA,EAAE,QAE9DA,EAAE,SAAS,WAAiB,YAC5BA,EAAE,SAAS,YAAkB,YAC1B;AACT;AAEO,SAASE,EAAkBnB,GAAOoB,GAAM;AAC7C,QAAMH,IACJjB,EAAM,cAAc,OAChBA,EAAM,OAAO,KAAK,CAACqB,MAAMA,EAAE,OAAOrB,EAAM,UAAU,IAClD;AACN,MAAI,CAACiB,EAAG,QAAO;AACf,QAAMK,IAAO,KAAK,MAAM,KAAK,UAAUL,CAAC,CAAC;AACzC,EAAAf,EAAU,QAAQ,CAACqB,MAAM,OAAOD,EAAKC,CAAC,CAAC;AACvC,QAAMC,IAAQ;AAAA,IACZ,IAAI,MAAM,KAAK,IAAG,EAAG,SAAS,EAAE,CAAC,IAAI,KAAK,OAAM,EAAG,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAC3E,OAAOJ,KAAQ,IAAI,KAAI,KAAMJ,EAASC,CAAC;AAAA,IACvC,WAAW,KAAK,IAAG;AAAA,IACnB,OAAOK;AAAA,EACX,GACQG,IAAO,CAACD,GAAO,GAAIxB,EAAM,eAAe,CAAA,CAAG,GAC3C0B,IAASb,EAAcb,CAAK,IAAIyB,IAAOA,EAAK,MAAM,GAAG3B,CAAe,GACpE6B,IAAUF,EAAK,SAASC,EAAO;AACrC,SAAA1B,EAAM,cAAc0B,GACpBX,EAAQf,CAAK,GAEbA,EAAM,aAAa2B,IACf,UAAUH,EAAM,IAAI,4BAClBG,MAAY,IAAI,cAAc,aACtC,aACM,UAAUH,EAAM,IAAI,KACjBA;AACT;AAEO,SAASI,EAAiB5B,GAAO6B,GAAI;AAC1C,EAAA7B,EAAM,eAAeA,EAAM,eAAe,CAAA,GAAI,OAAO,CAAC8B,MAAMA,EAAE,OAAOD,CAAE,GACvEd,EAAQf,CAAK,GACbA,EAAM,aAAa;AACrB;AAEO,SAAS+B,EAAiB/B,GAAO6B,GAAIT,GAAM;AAChD,QAAMI,KAASxB,EAAM,eAAe,CAAA,GAAI,KAAK,CAAC8B,MAAMA,EAAE,OAAOD,CAAE;AAC/D,EAAKL,MACLA,EAAM,QAAQJ,KAAQ,IAAI,KAAI,KAAMI,EAAM,MAC1CT,EAAQf,CAAK;AACf;AAIA,SAASgC,EAAYhC,GAAOiB,GAAG;AAC7B,QAAMgB,IAAKjC,EAAM,aAAa,OACxBkC,IAAKlC,EAAM,aAAa,QACxBmC,IAAIC,EAAYpC,GAAOiB,CAAC;AAC9B,MAAI,CAACkB,EAAE,KAAK,CAACA,EAAE,EAAG;AAClB,QAAMZ,IAAI,KAAK,IAAKU,IAAK,MAAOE,EAAE,GAAID,IAAK,MAAOC,EAAE,GAAG,CAAC;AACxD,MAAIZ,KAAK,EAAG;AAEZ,QAAMc,IAAU,CAACC,OAAO;AAAA,IACtB,IAAIA,EAAE,IAAIH,EAAE,KAAKZ,IAAIY,EAAE;AAAA,IACvB,IAAIG,EAAE,IAAIH,EAAE,KAAKZ,IAAIY,EAAE;AAAA,EAC3B;AACE,MAAIlB,EAAE;AACJ,IAAAA,EAAE,SAASA,EAAE,OAAO,IAAIoB,CAAO;AAAA,OAC1B;AACL,UAAME,IAAIF,EAAQ,EAAE,GAAGpB,EAAE,KAAK,GAAG,GAAGA,EAAE,KAAK,EAAC,CAAE;AAC9C,IAAAA,EAAE,IAAIsB,EAAE,GACRtB,EAAE,IAAIsB,EAAE,GACJ,OAAOtB,EAAE,KAAM,aAAUA,EAAE,KAAKM,IAChC,OAAON,EAAE,KAAM,aAAUA,EAAE,KAAKM;AAAA,EACtC;AACA,EAAI,OAAON,EAAE,QAAS,aAAUA,EAAE,QAAQM,IACtC,OAAON,EAAE,YAAa,aAAUA,EAAE,YAAYM,IAC9C,OAAON,EAAE,SAAU,aAAUA,EAAE,QAAQ,KAAK,IAAI,GAAGA,EAAE,QAAQM,CAAC,IAC9D,OAAON,EAAE,aAAc,aAAUA,EAAE,aAAaM,IAChD,OAAON,EAAE,eAAgB,aAAUA,EAAE,eAAeM,IACpD,OAAON,EAAE,WAAY,aAAUA,EAAE,WAAWM,IAC5C,OAAON,EAAE,WAAY,aAAUA,EAAE,WAAWM;AAClD;AAEA,SAASiB,EAAexC,GAAOiB,GAAG;AAChC,QAAMkB,IAAIC,EAAYpC,GAAOiB,CAAC,GACxBwB,KAAMzC,EAAM,aAAa,QAAQmC,EAAE,KAAK,IAAIA,EAAE,GAC9CO,KAAM1C,EAAM,aAAa,SAASmC,EAAE,KAAK,IAAIA,EAAE;AACrD,EAAIlB,EAAE,SACJA,EAAE,SAASA,EAAE,OAAO,IAAI,CAACqB,OAAO,EAAE,GAAGA,EAAE,IAAIG,GAAI,GAAGH,EAAE,IAAII,IAAK,KAE7DzB,EAAE,KAAKA,EAAE,KAAK,KAAKwB,GACnBxB,EAAE,KAAKA,EAAE,KAAK,KAAKyB;AAEvB;AAEO,SAASC,EAAiB3C,GAAO6B,GAAI;AAC1C,QAAML,KAASxB,EAAM,eAAe,CAAA,GAAI,KAAK,CAAC8B,MAAMA,EAAE,OAAOD,CAAE;AAC/D,MAAI,CAACL,KAAS,CAACxB,EAAM,aAAa,MAAO;AACzC,EAAA4C,EAAY5C,CAAK;AACjB,QAAMiB,IAAI,KAAK,MAAM,KAAK,UAAUO,EAAM,KAAK,CAAC;AAChD,EAAAtB,EAAU,QAAQ,CAACqB,MAAM,OAAON,EAAEM,CAAC,CAAC;AACpC,QAAMsB,IAAU7C,EAAM,OAAO;AAAA,IAC3B,CAAC8C,GAAGzB,MAAO,OAAOA,EAAE,MAAO,YAAYA,EAAE,KAAKyB,IAAIzB,EAAE,KAAKyB;AAAA,IACzD;AAAA,EACJ;AACE,EAAA9C,EAAM,SAAS,KAAK,IAAIA,EAAM,QAAQ6C,IAAU,CAAC,GACjD5B,EAAE,KAAKjB,EAAM,UACbgC,EAAYhC,GAAOiB,CAAC,GACpBuB,EAAexC,GAAOiB,CAAC,GACvBjB,EAAM,OAAO,KAAKiB,CAAC,GACnBjB,EAAM,OAAO,UACbA,EAAM,aAAaiB,EAAE,IACrB8B,EAAO/C,CAAK,GACZA,EAAM,aAAa,UAAUwB,EAAM,IAAI,KACvCwB,EAAWhD,CAAK;AAClB;AAIO,SAASiD,EAAsBjD,GAAOwB,GAAO;AAClD,MAAI,CAACA,KAAS,CAACA,EAAM,SAAS,CAACxB,EAAM,aAAa,MAAO;AACzD,EAAA4C,EAAY5C,CAAK;AACjB,QAAMiB,IAAI,KAAK,MAAM,KAAK,UAAUO,EAAM,KAAK,CAAC;AAChD,EAAAtB,EAAU,QAAQ,CAACqB,MAAM,OAAON,EAAEM,CAAC,CAAC;AACpC,QAAMsB,IAAU7C,EAAM,OAAO;AAAA,IAC3B,CAAC8C,GAAGzB,MAAO,OAAOA,EAAE,MAAO,YAAYA,EAAE,KAAKyB,IAAIzB,EAAE,KAAKyB;AAAA,IACzD;AAAA,EACJ;AACE,EAAA9C,EAAM,SAAS,KAAK,IAAIA,EAAM,QAAQ6C,IAAU,CAAC,GACjD5B,EAAE,KAAKjB,EAAM,UACbgC,EAAYhC,GAAOiB,CAAC,GACpBuB,EAAexC,GAAOiB,CAAC,GACvBjB,EAAM,OAAO,KAAKiB,CAAC,GACnBjB,EAAM,OAAO,UACbA,EAAM,aAAaiB,EAAE,IACrB8B,EAAO/C,CAAK,GACZA,EAAM,aAAa,UAAUwB,EAAM,QAAQ,OAAO,KAClDwB,EAAWhD,CAAK;AAClB;AAEO,SAASkD,EAAUlD,GAAO;AAC/B,SAAO,OAAOA,EAAM,QAAQ,uBAAwB;AACtD;AAIO,SAASmD,EAAkBnD,GAAOoD,GAAO;AAC9C,QAAMC,KAAKD,KAAS,IAAI,KAAI;AAC5B,MAAIF,EAAUlD,CAAK;AACjB,WAAO,QAAQ,QAAQA,EAAM,OAAO,oBAAoBqD,CAAC,CAAC,EAAE;AAAA,MAAK,CAACC,MAChE,MAAM,QAAQA,CAAC,IAAIA,IAAI,CAAA;AAAA,IAC7B;AAEE,QAAMC,IAASF,EAAE,YAAW,GACtBzC,IAAOZ,EAAM,eAAe,CAAA;AAClC,SAAO,QAAQ;AAAA,IACbuD,IACI3C,EAAK,OAAO,CAAC4C,OAAOA,EAAE,QAAQ,IAAI,YAAW,EAAG,SAASD,CAAM,CAAC,IAChE3C,EAAK,MAAK;AAAA,EAClB;AACA;"}
@@ -0,0 +1,50 @@
1
+ import { onDown as v, onMove as u, onUp as E, onDbl as t, finishPoly as a, undoPolyPoint as m, cancelPoly as g } from "./index.es155.js";
2
+ import { autoGrowTextEditor as L, commitTextEdit as k, blurTextEditor as x } from "./index.es149.js";
3
+ import { undo as P, redo as D } from "./index.es146.js";
4
+ import { applyModeCursor as w, selectLayer as l, setMode as T } from "./index.es148.js";
5
+ import { fitStage as z, render as p, syncCanvasSize as K } from "./index.es145.js";
6
+ import { normalizeSource as h, doLoadImage as C } from "./index.es152.js";
7
+ import { deleteLayer as I } from "./index.es151.js";
8
+ import { panPointerUp as y, resetPan as c, panPointerDown as b, panPointerMove as _ } from "./index.es166.js";
9
+ function G(e, i, o) {
10
+ e.canvasEl = o.canvas, e.overlayEl = o.overlay, e.textEditorEl = o.textEditor, e.stageEl = o.stage, e.ctx = e.canvasEl.getContext("2d"), e.octx = e.overlayEl.getContext("2d"), e.mounted = !0, w(e), e.overlayEl.addEventListener(
11
+ "lostpointercapture",
12
+ (n) => y(e, n)
13
+ ), e.overlayEl.addEventListener("pointerdown", (n) => {
14
+ n.preventDefault(), n.isPrimary && e.panPointers?.size && c(e), !b(e, n) && v(e, n);
15
+ }), e.overlayEl.addEventListener("pointermove", (n) => {
16
+ n.preventDefault(), !_(e, n) && u(e, n);
17
+ }), e.overlayEl.addEventListener("pointerup", (n) => {
18
+ y(e, n), E(e, n);
19
+ }), e.overlayEl.addEventListener("pointercancel", (n) => {
20
+ c(e), E(e, n);
21
+ }), e.overlayEl.addEventListener("dblclick", (n) => t(e, n));
22
+ const d = () => {
23
+ e.editingLayer && (x(e), l(e, null));
24
+ };
25
+ e.textEditorEl.addEventListener("keydown", (n) => {
26
+ n.key === "Enter" ? (n.stopPropagation(), (n.metaKey || n.ctrlKey) && (n.preventDefault(), d())) : n.key === "Escape" && (n.stopPropagation(), e.editingLayer && (e.editingLayer._editing = !1), e.editingLayer = null, e.textEditorEl.blur(), l(e, null));
27
+ }), e.textEditorEl.addEventListener("input", () => L(e)), e.textEditorEl.addEventListener("blur", () => k(e)), e.stageEl.addEventListener(
28
+ "pointerdown",
29
+ (n) => {
30
+ n.target !== e.textEditorEl && (d(), n.target !== e.overlayEl && e.selectedId != null && l(e, null));
31
+ },
32
+ !0
33
+ ), ["dragover", "dragenter"].forEach(
34
+ (n) => e.stageEl.addEventListener(n, (r) => r.preventDefault())
35
+ ), e.stageEl.addEventListener("drop", (n) => {
36
+ n.preventDefault();
37
+ const r = n.dataTransfer.files[0];
38
+ r && r.type.startsWith("image/") && h(e, r, (f) => C(e, f));
39
+ }), i._keyHandler = (n) => {
40
+ if (!i.isOpen()) return;
41
+ const r = document.activeElement && document.activeElement.tagName;
42
+ r === "INPUT" || r === "TEXTAREA" || r === "SELECT" || (e.pendingPoly && n.key === "Enter" ? (n.preventDefault(), a(e, !1)) : e.pendingPoly && (n.key === "Backspace" || n.key === "Delete") ? (n.preventDefault(), m(e)) : (n.metaKey || n.ctrlKey) && n.key === "z" && !n.shiftKey ? (n.preventDefault(), P(e)) : (n.metaKey || n.ctrlKey) && (n.key === "y" || n.shiftKey && n.key === "z") ? (n.preventDefault(), D(e)) : n.key === "Escape" ? e.pendingPoly ? g(e) : e.mode !== "select" || e.selectedId != null ? (T(e, "select"), l(e, null)) : e.config.closeOnEscape !== !1 && i.close() : (n.key === "Delete" || n.key === "Backspace") && e.selectedId != null && e.mode === "select" && (n.preventDefault(), I(e, e.selectedId)));
43
+ }, document.addEventListener("keydown", i._keyHandler), i._resizeHandler = () => {
44
+ e.sourceCanvas.width && i.isOpen() && (z(e), p(e));
45
+ }, window.addEventListener("resize", i._resizeHandler), e.sourceCanvas.width && (K(e), p(e));
46
+ }
47
+ export {
48
+ G as mount
49
+ };
50
+ //# sourceMappingURL=index.es154.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es154.js","sources":["../src/components/organisms/image-editor/engine/mount.js"],"sourcesContent":["import {\n onDown,\n onMove,\n onUp,\n onDbl,\n cancelPoly,\n finishPoly,\n undoPolyPoint,\n} from './pointer.js'\nimport {\n autoGrowTextEditor,\n blurTextEditor,\n commitTextEdit,\n} from './text-editor.js'\nimport { undo, redo } from './history.js'\nimport { setMode, selectLayer, applyModeCursor } from './mode.js'\nimport { fitStage, render, syncCanvasSize } from './rendering.js'\nimport { normalizeSource, doLoadImage } from './save-export.js'\nimport { deleteLayer } from './layer-actions.js'\nimport {\n panPointerDown,\n panPointerMove,\n panPointerUp,\n resetPan,\n} from './touch-pan.js'\n\nexport function mount(state, self, refs) {\n state.canvasEl = refs.canvas\n state.overlayEl = refs.overlay\n state.textEditorEl = refs.textEditor\n state.stageEl = refs.stage\n state.ctx = state.canvasEl.getContext('2d')\n state.octx = state.overlayEl.getContext('2d')\n state.mounted = true\n applyModeCursor(state)\n\n state.overlayEl.addEventListener('lostpointercapture', (e) =>\n panPointerUp(state, e)\n )\n state.overlayEl.addEventListener('pointerdown', (e) => {\n e.preventDefault()\n if (e.isPrimary && state.panPointers?.size) resetPan(state)\n if (panPointerDown(state, e)) return\n onDown(state, e)\n })\n state.overlayEl.addEventListener('pointermove', (e) => {\n e.preventDefault()\n if (panPointerMove(state, e)) return\n onMove(state, e)\n })\n state.overlayEl.addEventListener('pointerup', (e) => {\n panPointerUp(state, e)\n onUp(state, e)\n })\n state.overlayEl.addEventListener('pointercancel', (e) => {\n resetPan(state)\n onUp(state, e)\n })\n state.overlayEl.addEventListener('dblclick', (e) => onDbl(state, e))\n\n // Commit, unfocus, deselect — guarded so an ordinary drag never deselects.\n const endTextEdit = () => {\n if (!state.editingLayer) return\n blurTextEditor(state)\n selectLayer(state, null)\n }\n\n state.textEditorEl.addEventListener('keydown', (e) => {\n if (e.key === 'Enter') {\n // Enter inserts a newline; stopped so no parent form reads it as submit.\n e.stopPropagation()\n if (e.metaKey || e.ctrlKey) {\n e.preventDefault()\n endTextEdit()\n }\n } else if (e.key === 'Escape') {\n // Escape discards the edit, so restore nothing — just let go.\n e.stopPropagation()\n if (state.editingLayer) state.editingLayer._editing = false\n state.editingLayer = null\n state.textEditorEl.blur()\n selectLayer(state, null)\n }\n })\n state.textEditorEl.addEventListener('input', () => autoGrowTextEditor(state))\n state.textEditorEl.addEventListener('blur', () => commitTextEdit(state))\n\n // Capture phase: the overlay preventDefaults away the implicit blur.\n state.stageEl.addEventListener(\n 'pointerdown',\n (e) => {\n if (e.target === state.textEditorEl) return\n endTextEdit()\n // Presses on the padding deselect; presses on the image are onDown's.\n if (e.target !== state.overlayEl && state.selectedId != null) {\n selectLayer(state, null)\n }\n },\n true\n )\n ;['dragover', 'dragenter'].forEach((ev) =>\n state.stageEl.addEventListener(ev, (e) => e.preventDefault())\n )\n state.stageEl.addEventListener('drop', (e) => {\n e.preventDefault()\n const f = e.dataTransfer.files[0]\n if (f && f.type.startsWith('image/'))\n normalizeSource(state, f, (d) => doLoadImage(state, d))\n })\n\n self._keyHandler = (e) => {\n if (!self.isOpen()) return\n const tag = document.activeElement && document.activeElement.tagName\n if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT') return\n if (state.pendingPoly && e.key === 'Enter') {\n e.preventDefault()\n finishPoly(state, false)\n } else if (\n state.pendingPoly &&\n (e.key === 'Backspace' || e.key === 'Delete')\n ) {\n // While drawing, Backspace takes back the last corner rather than\n // deleting a layer -- misclicking a corner shouldn't cost the whole line.\n e.preventDefault()\n undoPolyPoint(state)\n } else if ((e.metaKey || e.ctrlKey) && e.key === 'z' && !e.shiftKey) {\n e.preventDefault()\n undo(state)\n } else if (\n (e.metaKey || e.ctrlKey) &&\n (e.key === 'y' || (e.shiftKey && e.key === 'z'))\n ) {\n e.preventDefault()\n redo(state)\n } else if (e.key === 'Escape') {\n if (state.pendingPoly) {\n // A half-drawn line is the innermost thing Escape can back out of.\n cancelPoly(state)\n } else if (state.mode !== 'select' || state.selectedId != null) {\n setMode(state, 'select')\n selectLayer(state, null)\n } else if (state.config.closeOnEscape !== false) self.close()\n } else if (\n (e.key === 'Delete' || e.key === 'Backspace') &&\n state.selectedId != null &&\n state.mode === 'select'\n ) {\n e.preventDefault()\n deleteLayer(state, state.selectedId)\n }\n }\n document.addEventListener('keydown', self._keyHandler)\n\n self._resizeHandler = () => {\n if (state.sourceCanvas.width && self.isOpen()) {\n fitStage(state)\n render(state)\n }\n }\n window.addEventListener('resize', self._resizeHandler)\n\n if (state.sourceCanvas.width) {\n syncCanvasSize(state)\n render(state)\n }\n}\n"],"names":["mount","state","self","refs","applyModeCursor","e","panPointerUp","resetPan","panPointerDown","onDown","panPointerMove","onMove","onUp","onDbl","endTextEdit","blurTextEditor","selectLayer","autoGrowTextEditor","commitTextEdit","ev","f","normalizeSource","d","doLoadImage","tag","finishPoly","undoPolyPoint","undo","redo","cancelPoly","setMode","deleteLayer","fitStage","render","syncCanvasSize"],"mappings":"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"}