geoiq-frontend-ui-kit 2.0.4 → 2.0.6

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 (514) 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/announcement-bar/announcement-bar.d.ts +5 -0
  12. package/dist/components/molecules/announcement-bar/announcement-bar.d.ts.map +1 -0
  13. package/dist/components/molecules/announcement-bar/announcement-bar.styles.d.ts +8 -0
  14. package/dist/components/molecules/announcement-bar/announcement-bar.styles.d.ts.map +1 -0
  15. package/dist/components/molecules/announcement-bar/announcement-bar.types.d.ts +15 -0
  16. package/dist/components/molecules/announcement-bar/announcement-bar.types.d.ts.map +1 -0
  17. package/dist/components/molecules/announcement-bar/index.d.ts +3 -0
  18. package/dist/components/molecules/announcement-bar/index.d.ts.map +1 -0
  19. package/dist/components/molecules/breadcrumb/breadcrumb-components.d.ts +2 -2
  20. package/dist/components/molecules/breadcrumb/breadcrumb.d.ts +2 -1
  21. package/dist/components/molecules/breadcrumb/breadcrumb.d.ts.map +1 -1
  22. package/dist/components/molecules/creatable-multi-combobox/creatable-multi-combobox.d.ts +2 -1
  23. package/dist/components/molecules/creatable-multi-combobox/creatable-multi-combobox.d.ts.map +1 -1
  24. package/dist/components/molecules/dropdown-menu/dropdown-menu-components.d.ts +1 -1
  25. package/dist/components/molecules/dropdown-menu/dropdown-menu.d.ts +2 -1
  26. package/dist/components/molecules/dropdown-menu/dropdown-menu.d.ts.map +1 -1
  27. package/dist/components/molecules/multi-combobox/index.d.ts +2 -2
  28. package/dist/components/molecules/multi-combobox/index.d.ts.map +1 -1
  29. package/dist/components/molecules/multi-select/index.d.ts +2 -2
  30. package/dist/components/molecules/multi-select/index.d.ts.map +1 -1
  31. package/dist/components/molecules/pagination/pagination-components.d.ts +4 -4
  32. package/dist/components/molecules/single-combobox/single-combobox.d.ts +2 -2
  33. package/dist/components/molecules/single-combobox/single-combobox.d.ts.map +1 -1
  34. package/dist/components/molecules/stepper/stepper-components.d.ts +1 -1
  35. package/dist/components/molecules/stepper/stepper-components.d.ts.map +1 -1
  36. package/dist/components/molecules/stepper/stepper.d.ts +2 -1
  37. package/dist/components/molecules/stepper/stepper.d.ts.map +1 -1
  38. package/dist/components/molecules/stepper/stepper.mock.d.ts +2 -2
  39. package/dist/components/molecules/stepper/stepper.mock.d.ts.map +1 -1
  40. package/dist/components/molecules/swatch-grid/swatch-grid.d.ts +2 -1
  41. package/dist/components/molecules/swatch-grid/swatch-grid.d.ts.map +1 -1
  42. package/dist/components/molecules/toast/assets/svgs/danger-icon.d.ts +3 -1
  43. package/dist/components/molecules/toast/assets/svgs/danger-icon.d.ts.map +1 -1
  44. package/dist/components/molecules/toast/assets/svgs/info-icon.d.ts +3 -1
  45. package/dist/components/molecules/toast/assets/svgs/info-icon.d.ts.map +1 -1
  46. package/dist/components/molecules/toast/assets/svgs/success-icon.d.ts +3 -1
  47. package/dist/components/molecules/toast/assets/svgs/success-icon.d.ts.map +1 -1
  48. package/dist/components/molecules/toast/assets/svgs/warning-icon.d.ts +3 -1
  49. package/dist/components/molecules/toast/assets/svgs/warning-icon.d.ts.map +1 -1
  50. package/dist/components/molecules/toast/toast-components.d.ts +1 -1
  51. package/dist/components/molecules/toast/toast.d.ts +2 -1
  52. package/dist/components/molecules/toast/toast.d.ts.map +1 -1
  53. package/dist/components/molecules/toggle-multi-select/index.d.ts +2 -2
  54. package/dist/components/molecules/toggle-multi-select/index.d.ts.map +1 -1
  55. package/dist/components/organisms/alert-dialog/alert-dialog-components.d.ts +2 -2
  56. package/dist/components/organisms/alert-dialog/alert-dialog.d.ts +2 -1
  57. package/dist/components/organisms/alert-dialog/alert-dialog.d.ts.map +1 -1
  58. package/dist/components/organisms/dialog/dialog-components.d.ts +2 -2
  59. package/dist/components/organisms/dialog/dialog-components.d.ts.map +1 -1
  60. package/dist/components/organisms/dialog/dialog.d.ts +2 -1
  61. package/dist/components/organisms/dialog/dialog.d.ts.map +1 -1
  62. package/dist/components/organisms/feature-dialog/feature-dialog.d.ts +5 -0
  63. package/dist/components/organisms/feature-dialog/feature-dialog.d.ts.map +1 -0
  64. package/dist/components/organisms/feature-dialog/feature-dialog.styles.d.ts +5 -0
  65. package/dist/components/organisms/feature-dialog/feature-dialog.styles.d.ts.map +1 -0
  66. package/dist/components/organisms/feature-dialog/feature-dialog.types.d.ts +25 -0
  67. package/dist/components/organisms/feature-dialog/feature-dialog.types.d.ts.map +1 -0
  68. package/dist/components/organisms/feature-dialog/index.d.ts +3 -0
  69. package/dist/components/organisms/feature-dialog/index.d.ts.map +1 -0
  70. package/dist/components/organisms/image-editor/components/color-picker.d.ts +3 -1
  71. package/dist/components/organisms/image-editor/components/color-picker.d.ts.map +1 -1
  72. package/dist/components/organisms/image-editor/components/layers-list.d.ts +2 -1
  73. package/dist/components/organisms/image-editor/components/layers-list.d.ts.map +1 -1
  74. package/dist/components/organisms/image-editor/components/line-session-bar.d.ts +2 -1
  75. package/dist/components/organisms/image-editor/components/line-session-bar.d.ts.map +1 -1
  76. package/dist/components/organisms/image-editor/components/panel-adjust.d.ts +2 -1
  77. package/dist/components/organisms/image-editor/components/panel-adjust.d.ts.map +1 -1
  78. package/dist/components/organisms/image-editor/components/panel-crop.d.ts +2 -1
  79. package/dist/components/organisms/image-editor/components/panel-crop.d.ts.map +1 -1
  80. package/dist/components/organisms/image-editor/components/panel-insert.d.ts +2 -1
  81. package/dist/components/organisms/image-editor/components/panel-insert.d.ts.map +1 -1
  82. package/dist/components/organisms/image-editor/components/panel-selected.d.ts +2 -1
  83. package/dist/components/organisms/image-editor/components/panel-selected.d.ts.map +1 -1
  84. package/dist/components/organisms/image-editor/components/panel.d.ts +2 -1
  85. package/dist/components/organisms/image-editor/components/panel.d.ts.map +1 -1
  86. package/dist/components/organisms/image-editor/components/ribbon.d.ts +2 -1
  87. package/dist/components/organisms/image-editor/components/ribbon.d.ts.map +1 -1
  88. package/dist/components/organisms/image-editor/components/saved-layers-list.d.ts +2 -1
  89. package/dist/components/organisms/image-editor/components/saved-layers-list.d.ts.map +1 -1
  90. package/dist/components/organisms/image-editor/components/status-bar.d.ts +2 -1
  91. package/dist/components/organisms/image-editor/components/status-bar.d.ts.map +1 -1
  92. package/dist/components/organisms/image-editor/image-editor-modal.d.ts +2 -1
  93. package/dist/components/organisms/image-editor/image-editor-modal.d.ts.map +1 -1
  94. package/dist/components/organisms/sheet/sheet-components.d.ts +2 -2
  95. package/dist/components/organisms/sheet/sheet.d.ts +2 -1
  96. package/dist/components/organisms/sheet/sheet.d.ts.map +1 -1
  97. package/dist/components/organisms/sidebar/sidebar.d.ts +2 -1
  98. package/dist/components/organisms/sidebar/sidebar.d.ts.map +1 -1
  99. package/dist/components/ui/agent-snippet-view/agent-snippet-view.d.ts +1 -1
  100. package/dist/components/ui/agent-snippet-view/agent-snippet-view.d.ts.map +1 -1
  101. package/dist/components/ui/map-marker-hover-card/components/map-cluster-hover-card.d.ts +2 -1
  102. package/dist/components/ui/map-marker-hover-card/components/map-cluster-hover-card.d.ts.map +1 -1
  103. package/dist/components/ui/map-marker-hover-card/components/map-point-hover-card.d.ts +2 -1
  104. package/dist/components/ui/map-marker-hover-card/components/map-point-hover-card.d.ts.map +1 -1
  105. package/dist/components/ui/map-marker-hover-card/map-marker-hover-card.d.ts +2 -1
  106. package/dist/components/ui/map-marker-hover-card/map-marker-hover-card.d.ts.map +1 -1
  107. package/dist/components/ui/star-score/star-score.d.ts +2 -1
  108. package/dist/components/ui/star-score/star-score.d.ts.map +1 -1
  109. package/dist/components/unstyled/calendar/calendar.d.ts +1 -1
  110. package/dist/components/unstyled/calendar/calendar.d.ts.map +1 -1
  111. package/dist/components/unstyled/command/index.d.ts +2 -2
  112. package/dist/components/unstyled/command/index.d.ts.map +1 -1
  113. package/dist/components/unstyled/date-picker/date-picker.d.ts +2 -2
  114. package/dist/components/unstyled/date-picker/date-picker.d.ts.map +1 -1
  115. package/dist/components/unstyled/hover-card/hover-card.d.ts +2 -1
  116. package/dist/components/unstyled/hover-card/hover-card.d.ts.map +1 -1
  117. package/dist/components/unstyled/popover/popover.d.ts +2 -1
  118. package/dist/components/unstyled/popover/popover.d.ts.map +1 -1
  119. package/dist/components/unstyled/table/table.d.ts +2 -2
  120. package/dist/components/unstyled/table/table.d.ts.map +1 -1
  121. package/dist/index.d.ts +4 -0
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.es.js +199 -195
  124. package/dist/index.es.js.map +1 -1
  125. package/dist/{index.es10.js → index10.es.js} +3 -3
  126. package/dist/{index.es10.js.map → index10.es.js.map} +1 -1
  127. package/dist/{index.es107.js → index100.es.js} +5 -5
  128. package/dist/{index.es107.js.map → index100.es.js.map} +1 -1
  129. package/dist/{index.es133.js → index101.es.js} +1 -1
  130. package/dist/{index.es133.js.map → index101.es.js.map} +1 -1
  131. package/dist/{index.es113.js → index102.es.js} +1 -1
  132. package/dist/{index.es113.js.map → index102.es.js.map} +1 -1
  133. package/dist/{index.es134.js → index103.es.js} +2 -2
  134. package/dist/{index.es134.js.map → index103.es.js.map} +1 -1
  135. package/dist/{index.es135.js → index104.es.js} +1 -1
  136. package/dist/{index.es135.js.map → index104.es.js.map} +1 -1
  137. package/dist/{index.es118.js → index105.es.js} +1 -1
  138. package/dist/{index.es118.js.map → index105.es.js.map} +1 -1
  139. package/dist/{index.es101.js → index106.es.js} +1 -1
  140. package/dist/{index.es101.js.map → index106.es.js.map} +1 -1
  141. package/dist/{index.es112.js → index107.es.js} +1 -1
  142. package/dist/{index.es112.js.map → index107.es.js.map} +1 -1
  143. package/dist/{index.es119.js → index108.es.js} +1 -1
  144. package/dist/{index.es119.js.map → index108.es.js.map} +1 -1
  145. package/dist/{index.es127.js → index109.es.js} +4 -4
  146. package/dist/{index.es127.js.map → index109.es.js.map} +1 -1
  147. package/dist/{index.es11.js → index11.es.js} +4 -4
  148. package/dist/{index.es11.js.map → index11.es.js.map} +1 -1
  149. package/dist/{index.es128.js → index110.es.js} +4 -4
  150. package/dist/{index.es128.js.map → index110.es.js.map} +1 -1
  151. package/dist/{index.es129.js → index111.es.js} +5 -5
  152. package/dist/{index.es129.js.map → index111.es.js.map} +1 -1
  153. package/dist/{index.es130.js → index112.es.js} +2 -2
  154. package/dist/{index.es130.js.map → index112.es.js.map} +1 -1
  155. package/dist/{index.es131.js → index113.es.js} +3 -3
  156. package/dist/{index.es131.js.map → index113.es.js.map} +1 -1
  157. package/dist/{index.es116.js → index114.es.js} +1 -1
  158. package/dist/{index.es116.js.map → index114.es.js.map} +1 -1
  159. package/dist/{index.es117.js → index115.es.js} +5 -5
  160. package/dist/{index.es117.js.map → index115.es.js.map} +1 -1
  161. package/dist/index116.es.js +34 -0
  162. package/dist/index116.es.js.map +1 -0
  163. package/dist/{index.es103.js → index117.es.js} +1 -1
  164. package/dist/{index.es103.js.map → index117.es.js.map} +1 -1
  165. package/dist/{index.es115.js → index118.es.js} +3 -3
  166. package/dist/{index.es115.js.map → index118.es.js.map} +1 -1
  167. package/dist/{index.es105.js → index119.es.js} +3 -3
  168. package/dist/{index.es105.js.map → index119.es.js.map} +1 -1
  169. package/dist/{index.es12.js → index12.es.js} +3 -3
  170. package/dist/{index.es12.js.map → index12.es.js.map} +1 -1
  171. package/dist/{index.es120.js → index120.es.js} +4 -4
  172. package/dist/{index.es120.js.map → index120.es.js.map} +1 -1
  173. package/dist/{index.es121.js → index121.es.js} +3 -3
  174. package/dist/{index.es121.js.map → index121.es.js.map} +1 -1
  175. package/dist/{index.es122.js → index122.es.js} +3 -3
  176. package/dist/{index.es122.js.map → index122.es.js.map} +1 -1
  177. package/dist/{index.es123.js → index123.es.js} +3 -3
  178. package/dist/{index.es123.js.map → index123.es.js.map} +1 -1
  179. package/dist/{index.es124.js → index124.es.js} +10 -10
  180. package/dist/{index.es124.js.map → index124.es.js.map} +1 -1
  181. package/dist/{index.es125.js → index125.es.js} +10 -10
  182. package/dist/{index.es125.js.map → index125.es.js.map} +1 -1
  183. package/dist/{index.es126.js → index126.es.js} +5 -5
  184. package/dist/{index.es126.js.map → index126.es.js.map} +1 -1
  185. package/dist/{index.es97.js → index127.es.js} +1 -1
  186. package/dist/index127.es.js.map +1 -0
  187. package/dist/{index.es98.js → index128.es.js} +8 -8
  188. package/dist/index128.es.js.map +1 -0
  189. package/dist/{index.es99.js → index129.es.js} +1 -1
  190. package/dist/index129.es.js.map +1 -0
  191. package/dist/{index.es13.js → index13.es.js} +3 -3
  192. package/dist/{index.es13.js.map → index13.es.js.map} +1 -1
  193. package/dist/{index.es100.js → index130.es.js} +15 -15
  194. package/dist/{index.es100.js.map → index130.es.js.map} +1 -1
  195. package/dist/{index.es104.js → index131.es.js} +1 -1
  196. package/dist/{index.es104.js.map → index131.es.js.map} +1 -1
  197. package/dist/{index.es106.js → index132.es.js} +1 -1
  198. package/dist/{index.es106.js.map → index132.es.js.map} +1 -1
  199. package/dist/{index.es114.js → index133.es.js} +3 -3
  200. package/dist/{index.es114.js.map → index133.es.js.map} +1 -1
  201. package/dist/{index.es132.js → index134.es.js} +1 -1
  202. package/dist/{index.es132.js.map → index134.es.js.map} +1 -1
  203. package/dist/{index.es108.js → index135.es.js} +1 -1
  204. package/dist/{index.es108.js.map → index135.es.js.map} +1 -1
  205. package/dist/{index.es102.js → index136.es.js} +1 -1
  206. package/dist/{index.es102.js.map → index136.es.js.map} +1 -1
  207. package/dist/{index.es110.js → index137.es.js} +2 -2
  208. package/dist/{index.es110.js.map → index137.es.js.map} +1 -1
  209. package/dist/{index.es111.js → index138.es.js} +6 -6
  210. package/dist/{index.es111.js.map → index138.es.js.map} +1 -1
  211. package/dist/{index.es136.js → index139.es.js} +5 -5
  212. package/dist/{index.es136.js.map → index139.es.js.map} +1 -1
  213. package/dist/{index.es14.js → index14.es.js} +2 -2
  214. package/dist/{index.es14.js.map → index14.es.js.map} +1 -1
  215. package/dist/index140.es.js +17 -0
  216. package/dist/index140.es.js.map +1 -0
  217. package/dist/{index.es156.js → index141.es.js} +2 -2
  218. package/dist/{index.es156.js.map → index141.es.js.map} +1 -1
  219. package/dist/{index.es159.js → index142.es.js} +3 -3
  220. package/dist/{index.es159.js.map → index142.es.js.map} +1 -1
  221. package/dist/{index.es160.js → index143.es.js} +1 -1
  222. package/dist/{index.es160.js.map → index143.es.js.map} +1 -1
  223. package/dist/{index.es161.js → index144.es.js} +1 -1
  224. package/dist/{index.es161.js.map → index144.es.js.map} +1 -1
  225. package/dist/{index.es162.js → index145.es.js} +1 -1
  226. package/dist/{index.es162.js.map → index145.es.js.map} +1 -1
  227. package/dist/{index.es137.js → index146.es.js} +1 -1
  228. package/dist/{index.es137.js.map → index146.es.js.map} +1 -1
  229. package/dist/{index.es138.js → index147.es.js} +7 -7
  230. package/dist/{index.es138.js.map → index147.es.js.map} +1 -1
  231. package/dist/{index.es139.js → index148.es.js} +3 -3
  232. package/dist/{index.es139.js.map → index148.es.js.map} +1 -1
  233. package/dist/{index.es140.js → index149.es.js} +2 -2
  234. package/dist/{index.es140.js.map → index149.es.js.map} +1 -1
  235. package/dist/{index.es15.js → index15.es.js} +3 -3
  236. package/dist/{index.es15.js.map → index15.es.js.map} +1 -1
  237. package/dist/{index.es141.js → index150.es.js} +1 -1
  238. package/dist/{index.es141.js.map → index150.es.js.map} +1 -1
  239. package/dist/{index.es142.js → index151.es.js} +1 -1
  240. package/dist/{index.es142.js.map → index151.es.js.map} +1 -1
  241. package/dist/{index.es143.js → index152.es.js} +1 -1
  242. package/dist/{index.es143.js.map → index152.es.js.map} +1 -1
  243. package/dist/{index.es144.js → index153.es.js} +2 -2
  244. package/dist/{index.es144.js.map → index153.es.js.map} +1 -1
  245. package/dist/{index.es145.js → index154.es.js} +3 -3
  246. package/dist/{index.es145.js.map → index154.es.js.map} +1 -1
  247. package/dist/{index.es146.js → index155.es.js} +3 -3
  248. package/dist/{index.es146.js.map → index155.es.js.map} +1 -1
  249. package/dist/{index.es147.js → index156.es.js} +5 -5
  250. package/dist/{index.es147.js.map → index156.es.js.map} +1 -1
  251. package/dist/{index.es148.js → index157.es.js} +4 -4
  252. package/dist/{index.es148.js.map → index157.es.js.map} +1 -1
  253. package/dist/{index.es149.js → index158.es.js} +2 -2
  254. package/dist/{index.es149.js.map → index158.es.js.map} +1 -1
  255. package/dist/{index.es150.js → index159.es.js} +4 -4
  256. package/dist/{index.es150.js.map → index159.es.js.map} +1 -1
  257. package/dist/{index.es16.js → index16.es.js} +8 -8
  258. package/dist/{index.es16.js.map → index16.es.js.map} +1 -1
  259. package/dist/{index.es151.js → index160.es.js} +6 -6
  260. package/dist/{index.es151.js.map → index160.es.js.map} +1 -1
  261. package/dist/{index.es152.js → index161.es.js} +5 -5
  262. package/dist/{index.es152.js.map → index161.es.js.map} +1 -1
  263. package/dist/{index.es153.js → index162.es.js} +4 -4
  264. package/dist/{index.es153.js.map → index162.es.js.map} +1 -1
  265. package/dist/{index.es154.js → index163.es.js} +9 -9
  266. package/dist/{index.es154.js.map → index163.es.js.map} +1 -1
  267. package/dist/{index.es155.js → index164.es.js} +6 -6
  268. package/dist/{index.es155.js.map → index164.es.js.map} +1 -1
  269. package/dist/{index.es158.js → index165.es.js} +1 -1
  270. package/dist/{index.es158.js.map → index165.es.js.map} +1 -1
  271. package/dist/{index.es157.js → index166.es.js} +1 -1
  272. package/dist/{index.es157.js.map → index166.es.js.map} +1 -1
  273. package/dist/{index.es163.js → index167.es.js} +1 -1
  274. package/dist/{index.es163.js.map → index167.es.js.map} +1 -1
  275. package/dist/{index.es164.js → index168.es.js} +1 -1
  276. package/dist/{index.es164.js.map → index168.es.js.map} +1 -1
  277. package/dist/{index.es165.js → index169.es.js} +1 -1
  278. package/dist/{index.es165.js.map → index169.es.js.map} +1 -1
  279. package/dist/{index.es17.js → index17.es.js} +3 -3
  280. package/dist/{index.es17.js.map → index17.es.js.map} +1 -1
  281. package/dist/{index.es166.js → index170.es.js} +2 -2
  282. package/dist/{index.es166.js.map → index170.es.js.map} +1 -1
  283. package/dist/{index.es173.js → index171.es.js} +19 -19
  284. package/dist/{index.es173.js.map → index171.es.js.map} +1 -1
  285. package/dist/{index.es167.js → index172.es.js} +2 -2
  286. package/dist/{index.es167.js.map → index172.es.js.map} +1 -1
  287. package/dist/{index.es168.js → index173.es.js} +4 -4
  288. package/dist/{index.es168.js.map → index173.es.js.map} +1 -1
  289. package/dist/{index.es169.js → index174.es.js} +4 -4
  290. package/dist/{index.es169.js.map → index174.es.js.map} +1 -1
  291. package/dist/{index.es170.js → index175.es.js} +9 -9
  292. package/dist/{index.es170.js.map → index175.es.js.map} +1 -1
  293. package/dist/{index.es171.js → index176.es.js} +10 -10
  294. package/dist/{index.es171.js.map → index176.es.js.map} +1 -1
  295. package/dist/{index.es172.js → index177.es.js} +2 -2
  296. package/dist/{index.es172.js.map → index177.es.js.map} +1 -1
  297. package/dist/{index.es174.js → index178.es.js} +4 -4
  298. package/dist/{index.es174.js.map → index178.es.js.map} +1 -1
  299. package/dist/{index.es175.js → index179.es.js} +2 -2
  300. package/dist/{index.es175.js.map → index179.es.js.map} +1 -1
  301. package/dist/{index.es18.js → index18.es.js} +2 -2
  302. package/dist/{index.es18.js.map → index18.es.js.map} +1 -1
  303. package/dist/{index.es178.js → index180.es.js} +6 -6
  304. package/dist/{index.es178.js.map → index180.es.js.map} +1 -1
  305. package/dist/{index.es179.js → index181.es.js} +17 -16
  306. package/dist/{index.es179.js.map → index181.es.js.map} +1 -1
  307. package/dist/{index.es180.js → index182.es.js} +27 -26
  308. package/dist/{index.es180.js.map → index182.es.js.map} +1 -1
  309. package/dist/{index.es181.js → index183.es.js} +13 -12
  310. package/dist/{index.es181.js.map → index183.es.js.map} +1 -1
  311. package/dist/{index.es182.js → index184.es.js} +5 -5
  312. package/dist/{index.es182.js.map → index184.es.js.map} +1 -1
  313. package/dist/{index.es183.js → index185.es.js} +27 -26
  314. package/dist/{index.es183.js.map → index185.es.js.map} +1 -1
  315. package/dist/{index.es184.js → index186.es.js} +30 -29
  316. package/dist/{index.es184.js.map → index186.es.js.map} +1 -1
  317. package/dist/{index.es176.js → index187.es.js} +1 -1
  318. package/dist/{index.es176.js.map → index187.es.js.map} +1 -1
  319. package/dist/{index.es177.js → index188.es.js} +2 -2
  320. package/dist/{index.es177.js.map → index188.es.js.map} +1 -1
  321. package/dist/{index.es185.js → index189.es.js} +1 -1
  322. package/dist/{index.es185.js.map → index189.es.js.map} +1 -1
  323. package/dist/{index.es19.js → index19.es.js} +4 -4
  324. package/dist/{index.es19.js.map → index19.es.js.map} +1 -1
  325. package/dist/{index.es2.js → index2.es.js} +5 -5
  326. package/dist/{index.es2.js.map → index2.es.js.map} +1 -1
  327. package/dist/{index.es20.js → index20.es.js} +5 -5
  328. package/dist/{index.es20.js.map → index20.es.js.map} +1 -1
  329. package/dist/index21.es.js +57 -0
  330. package/dist/index21.es.js.map +1 -0
  331. package/dist/index22.es.js +79 -0
  332. package/dist/index22.es.js.map +1 -0
  333. package/dist/{index.es21.js → index23.es.js} +6 -6
  334. package/dist/{index.es21.js.map → index23.es.js.map} +1 -1
  335. package/dist/{index.es22.js → index24.es.js} +2 -2
  336. package/dist/{index.es22.js.map → index24.es.js.map} +1 -1
  337. package/dist/{index.es23.js → index25.es.js} +7 -7
  338. package/dist/{index.es23.js.map → index25.es.js.map} +1 -1
  339. package/dist/{index.es24.js → index26.es.js} +7 -7
  340. package/dist/{index.es24.js.map → index26.es.js.map} +1 -1
  341. package/dist/{index.es25.js → index27.es.js} +3 -3
  342. package/dist/{index.es25.js.map → index27.es.js.map} +1 -1
  343. package/dist/{index.es26.js → index28.es.js} +2 -2
  344. package/dist/{index.es26.js.map → index28.es.js.map} +1 -1
  345. package/dist/{index.es27.js → index29.es.js} +7 -7
  346. package/dist/{index.es27.js.map → index29.es.js.map} +1 -1
  347. package/dist/{index.es3.js → index3.es.js} +3 -3
  348. package/dist/{index.es3.js.map → index3.es.js.map} +1 -1
  349. package/dist/{index.es28.js → index30.es.js} +9 -9
  350. package/dist/{index.es28.js.map → index30.es.js.map} +1 -1
  351. package/dist/{index.es29.js → index31.es.js} +5 -5
  352. package/dist/{index.es29.js.map → index31.es.js.map} +1 -1
  353. package/dist/{index.es30.js → index32.es.js} +3 -3
  354. package/dist/{index.es30.js.map → index32.es.js.map} +1 -1
  355. package/dist/{index.es31.js → index33.es.js} +1 -1
  356. package/dist/{index.es31.js.map → index33.es.js.map} +1 -1
  357. package/dist/{index.es32.js → index34.es.js} +2 -2
  358. package/dist/{index.es32.js.map → index34.es.js.map} +1 -1
  359. package/dist/{index.es33.js → index35.es.js} +3 -3
  360. package/dist/{index.es33.js.map → index35.es.js.map} +1 -1
  361. package/dist/index36.es.js +39 -0
  362. package/dist/index36.es.js.map +1 -0
  363. package/dist/{index.es35.js → index37.es.js} +6 -6
  364. package/dist/{index.es35.js.map → index37.es.js.map} +1 -1
  365. package/dist/{index.es36.js → index38.es.js} +5 -5
  366. package/dist/{index.es36.js.map → index38.es.js.map} +1 -1
  367. package/dist/{index.es37.js → index39.es.js} +6 -6
  368. package/dist/{index.es37.js.map → index39.es.js.map} +1 -1
  369. package/dist/{index.es4.js → index4.es.js} +2 -2
  370. package/dist/{index.es4.js.map → index4.es.js.map} +1 -1
  371. package/dist/{index.es38.js → index40.es.js} +2 -2
  372. package/dist/{index.es38.js.map → index40.es.js.map} +1 -1
  373. package/dist/{index.es39.js → index41.es.js} +3 -3
  374. package/dist/{index.es39.js.map → index41.es.js.map} +1 -1
  375. package/dist/index42.es.js +91 -0
  376. package/dist/index42.es.js.map +1 -0
  377. package/dist/{index.es41.js → index43.es.js} +5 -5
  378. package/dist/{index.es41.js.map → index43.es.js.map} +1 -1
  379. package/dist/{index.es42.js → index44.es.js} +4 -4
  380. package/dist/{index.es42.js.map → index44.es.js.map} +1 -1
  381. package/dist/{index.es43.js → index45.es.js} +2 -2
  382. package/dist/{index.es43.js.map → index45.es.js.map} +1 -1
  383. package/dist/{index.es44.js → index46.es.js} +2 -2
  384. package/dist/{index.es44.js.map → index46.es.js.map} +1 -1
  385. package/dist/{index.es45.js → index47.es.js} +5 -5
  386. package/dist/{index.es45.js.map → index47.es.js.map} +1 -1
  387. package/dist/{index.es46.js → index48.es.js} +9 -9
  388. package/dist/{index.es46.js.map → index48.es.js.map} +1 -1
  389. package/dist/{index.es47.js → index49.es.js} +7 -7
  390. package/dist/{index.es47.js.map → index49.es.js.map} +1 -1
  391. package/dist/{index.es5.js → index5.es.js} +2 -2
  392. package/dist/{index.es5.js.map → index5.es.js.map} +1 -1
  393. package/dist/{index.es48.js → index50.es.js} +10 -10
  394. package/dist/{index.es48.js.map → index50.es.js.map} +1 -1
  395. package/dist/{index.es49.js → index51.es.js} +2 -2
  396. package/dist/{index.es49.js.map → index51.es.js.map} +1 -1
  397. package/dist/{index.es50.js → index52.es.js} +1 -1
  398. package/dist/{index.es50.js.map → index52.es.js.map} +1 -1
  399. package/dist/{index.es51.js → index53.es.js} +2 -2
  400. package/dist/{index.es51.js.map → index53.es.js.map} +1 -1
  401. package/dist/{index.es52.js → index54.es.js} +3 -3
  402. package/dist/{index.es52.js.map → index54.es.js.map} +1 -1
  403. package/dist/{index.es53.js → index55.es.js} +7 -7
  404. package/dist/{index.es53.js.map → index55.es.js.map} +1 -1
  405. package/dist/{index.es54.js → index56.es.js} +4 -4
  406. package/dist/{index.es54.js.map → index56.es.js.map} +1 -1
  407. package/dist/{index.es55.js → index57.es.js} +5 -5
  408. package/dist/{index.es55.js.map → index57.es.js.map} +1 -1
  409. package/dist/{index.es56.js → index58.es.js} +3 -3
  410. package/dist/{index.es56.js.map → index58.es.js.map} +1 -1
  411. package/dist/{index.es57.js → index59.es.js} +9 -9
  412. package/dist/{index.es57.js.map → index59.es.js.map} +1 -1
  413. package/dist/{index.es6.js → index6.es.js} +2 -2
  414. package/dist/{index.es6.js.map → index6.es.js.map} +1 -1
  415. package/dist/{index.es58.js → index60.es.js} +4 -3
  416. package/dist/{index.es58.js.map → index60.es.js.map} +1 -1
  417. package/dist/{index.es59.js → index61.es.js} +2 -2
  418. package/dist/{index.es59.js.map → index61.es.js.map} +1 -1
  419. package/dist/{index.es60.js → index62.es.js} +3 -3
  420. package/dist/{index.es60.js.map → index62.es.js.map} +1 -1
  421. package/dist/{index.es61.js → index63.es.js} +2 -2
  422. package/dist/{index.es61.js.map → index63.es.js.map} +1 -1
  423. package/dist/{index.es62.js → index64.es.js} +2 -2
  424. package/dist/{index.es62.js.map → index64.es.js.map} +1 -1
  425. package/dist/{index.es63.js → index65.es.js} +2 -2
  426. package/dist/{index.es63.js.map → index65.es.js.map} +1 -1
  427. package/dist/{index.es64.js → index66.es.js} +3 -3
  428. package/dist/{index.es64.js.map → index66.es.js.map} +1 -1
  429. package/dist/{index.es65.js → index67.es.js} +3 -3
  430. package/dist/{index.es65.js.map → index67.es.js.map} +1 -1
  431. package/dist/{index.es66.js → index68.es.js} +2 -2
  432. package/dist/{index.es66.js.map → index68.es.js.map} +1 -1
  433. package/dist/{index.es67.js → index69.es.js} +3 -3
  434. package/dist/{index.es67.js.map → index69.es.js.map} +1 -1
  435. package/dist/{index.es7.js → index7.es.js} +2 -2
  436. package/dist/{index.es7.js.map → index7.es.js.map} +1 -1
  437. package/dist/{index.es68.js → index70.es.js} +3 -3
  438. package/dist/{index.es68.js.map → index70.es.js.map} +1 -1
  439. package/dist/{index.es69.js → index71.es.js} +6 -6
  440. package/dist/{index.es69.js.map → index71.es.js.map} +1 -1
  441. package/dist/{index.es70.js → index72.es.js} +6 -6
  442. package/dist/{index.es70.js.map → index72.es.js.map} +1 -1
  443. package/dist/{index.es71.js → index73.es.js} +4 -4
  444. package/dist/{index.es71.js.map → index73.es.js.map} +1 -1
  445. package/dist/{index.es72.js → index74.es.js} +8 -8
  446. package/dist/{index.es72.js.map → index74.es.js.map} +1 -1
  447. package/dist/{index.es73.js → index75.es.js} +5 -5
  448. package/dist/{index.es73.js.map → index75.es.js.map} +1 -1
  449. package/dist/{index.es74.js → index76.es.js} +1 -1
  450. package/dist/{index.es74.js.map → index76.es.js.map} +1 -1
  451. package/dist/{index.es75.js → index77.es.js} +1 -1
  452. package/dist/{index.es75.js.map → index77.es.js.map} +1 -1
  453. package/dist/{index.es76.js → index78.es.js} +1 -1
  454. package/dist/{index.es76.js.map → index78.es.js.map} +1 -1
  455. package/dist/{index.es77.js → index79.es.js} +1 -1
  456. package/dist/{index.es77.js.map → index79.es.js.map} +1 -1
  457. package/dist/{index.es8.js → index8.es.js} +3 -3
  458. package/dist/{index.es8.js.map → index8.es.js.map} +1 -1
  459. package/dist/index80.es.js +90 -0
  460. package/dist/index80.es.js.map +1 -0
  461. package/dist/{index.es79.js → index81.es.js} +1 -1
  462. package/dist/{index.es79.js.map → index81.es.js.map} +1 -1
  463. package/dist/{index.es80.js → index82.es.js} +3 -3
  464. package/dist/{index.es80.js.map → index82.es.js.map} +1 -1
  465. package/dist/{index.es81.js → index83.es.js} +4 -4
  466. package/dist/{index.es81.js.map → index83.es.js.map} +1 -1
  467. package/dist/{index.es82.js → index84.es.js} +1 -1
  468. package/dist/{index.es82.js.map → index84.es.js.map} +1 -1
  469. package/dist/{index.es83.js → index85.es.js} +1 -1
  470. package/dist/{index.es83.js.map → index85.es.js.map} +1 -1
  471. package/dist/{index.es84.js → index86.es.js} +1 -1
  472. package/dist/{index.es84.js.map → index86.es.js.map} +1 -1
  473. package/dist/{index.es85.js → index87.es.js} +2 -2
  474. package/dist/{index.es85.js.map → index87.es.js.map} +1 -1
  475. package/dist/{index.es86.js → index88.es.js} +2 -2
  476. package/dist/{index.es86.js.map → index88.es.js.map} +1 -1
  477. package/dist/{index.es87.js → index89.es.js} +1 -1
  478. package/dist/{index.es87.js.map → index89.es.js.map} +1 -1
  479. package/dist/{index.es9.js → index9.es.js} +4 -4
  480. package/dist/{index.es9.js.map → index9.es.js.map} +1 -1
  481. package/dist/index90.es.js +5 -0
  482. package/dist/index90.es.js.map +1 -0
  483. package/dist/{index.es89.js → index91.es.js} +1 -1
  484. package/dist/{index.es89.js.map → index91.es.js.map} +1 -1
  485. package/dist/{index.es90.js → index92.es.js} +2 -2
  486. package/dist/{index.es90.js.map → index92.es.js.map} +1 -1
  487. package/dist/{index.es91.js → index93.es.js} +3 -3
  488. package/dist/{index.es91.js.map → index93.es.js.map} +1 -1
  489. package/dist/{index.es92.js → index94.es.js} +1 -1
  490. package/dist/{index.es92.js.map → index94.es.js.map} +1 -1
  491. package/dist/{index.es93.js → index95.es.js} +1 -1
  492. package/dist/{index.es93.js.map → index95.es.js.map} +1 -1
  493. package/dist/{index.es94.js → index96.es.js} +1 -1
  494. package/dist/{index.es94.js.map → index96.es.js.map} +1 -1
  495. package/dist/{index.es95.js → index97.es.js} +1 -1
  496. package/dist/{index.es95.js.map → index97.es.js.map} +1 -1
  497. package/dist/{index.es96.js → index98.es.js} +1 -1
  498. package/dist/{index.es96.js.map → index98.es.js.map} +1 -1
  499. package/dist/{index.es109.js → index99.es.js} +2 -2
  500. package/dist/index99.es.js.map +1 -0
  501. package/dist/styles.css +428 -29
  502. package/package.json +1 -1
  503. package/dist/index.es109.js.map +0 -1
  504. package/dist/index.es34.js +0 -31
  505. package/dist/index.es34.js.map +0 -1
  506. package/dist/index.es40.js +0 -91
  507. package/dist/index.es40.js.map +0 -1
  508. package/dist/index.es78.js +0 -88
  509. package/dist/index.es78.js.map +0 -1
  510. package/dist/index.es88.js +0 -5
  511. package/dist/index.es88.js.map +0 -1
  512. package/dist/index.es97.js.map +0 -1
  513. package/dist/index.es98.js.map +0 -1
  514. package/dist/index.es99.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.es171.js","sources":["../src/components/organisms/image-editor/components/panel-selected.tsx"],"sourcesContent":["import { Bookmark, Spline, Trash2 } from 'lucide-react'\nimport React, { useState } from 'react'\n\nimport { Button } from '@/components/atoms/button'\nimport { Input } from '@/components/atoms/input'\nimport { Textarea } from '@/components/atoms/textarea'\nimport { Slider } from '@/components/molecules/slider'\nimport { Switch } from '@/components/atoms/switch'\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\nconst CLOSED_SHAPES = ['rect', 'ellipse', 'circle']\n\nconst MULTI_POINT_SHAPES = ['line', 'dashedLine']\n\nconst DIRECTIONAL_SHAPES = [\n 'line',\n 'dashedLine',\n 'arrow',\n 'dashedArrow',\n 'doubleArrow',\n 'dashedDoubleArrow',\n]\n\nexport function PanelSelected({ selected, engine }: PanelSelectedProps) {\n const container = useImageEditorPortalContainer()\n const [naming, setNaming] = useState(false)\n const [layerName, setLayerName] = useState('')\n\n const suggestedName = () => {\n if (selected.type === 'text')\n return (selected.text ?? '').trim().slice(0, 40)\n if (selected.label) return selected.label.trim().slice(0, 40)\n return selected.shape ?? selected.type ?? ''\n }\n\n const commitSave = () => {\n engine.saveSelectedLayer(layerName.trim() || undefined)\n setNaming(false)\n setLayerName('')\n }\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\n {MULTI_POINT_SHAPES.includes(selected.shape ?? '') && (\n <>\n <div className=\"my-3 h-px bg-neutral-1\" />\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={engine.continueSelectedLine}\n prefixIcon={<Spline className=\"h-4 w-4\" />}\n >\n Continue this line\n </Button>\n <p className=\"mt-1.5 text-[11px] leading-snug text-light-4\">\n Reopens the line so you can click more corners onto the end.\n </p>\n </>\n )}\n\n {(DIRECTIONAL_SHAPES.includes(selected.shape ?? '') ||\n CLOSED_SHAPES.includes(selected.shape ?? '')) && (\n <>\n <div className=\"my-3 h-px bg-neutral-1\" />\n <span className=\"mb-1 block text-xs text-light-4\">\n {CLOSED_SHAPES.includes(selected.shape ?? '') || selected.closed\n ? 'Text inside shape'\n : 'Label above line'}\n </span>\n <Textarea\n className=\"min-h-[44px]\"\n placeholder=\"Add a caption…\"\n value={selected.label ?? ''}\n onChange={(e) => engine.setSelectedLabel(e.target.value)}\n />\n {!!selected.label && (\n <>\n <span className=\"mb-1 mt-2.5 block text-xs text-light-4\">\n Label font\n </span>\n <SingleSelect\n items={FONTS}\n value={selected.labelFont ?? FONTS[1].value}\n onValueChange={engine.setSelectedLabelFont}\n container={container}\n />\n <div className=\"mb-1 mt-2.5 flex justify-between text-xs text-light-4\">\n <span>Label size</span>\n <span>{selected.labelSize ?? 42}px</span>\n </div>\n <Slider\n min={10}\n max={200}\n step={1}\n value={[selected.labelSize ?? 42]}\n onValueChange={([v]) => engine.setSelectedLabelSize(v)}\n />\n\n {!CLOSED_SHAPES.includes(selected.shape ?? '') &&\n !selected.closed && (\n <>\n <span className=\"mb-1 mt-2.5 block text-xs text-light-4\">\n Label side\n </span>\n <SingleSelect\n items={[\n { label: 'Above the line', value: 'above' },\n { label: 'Below the line', value: 'below' },\n ]}\n value={selected.labelSide ?? 'above'}\n onValueChange={(v) =>\n engine.setSelectedLabelSide(v as 'above' | 'below')\n }\n container={container}\n />\n\n <div className=\"mb-1 mt-2.5 flex justify-between text-xs text-light-4\">\n <span>Distance from line</span>\n <span>{selected.labelOffset ?? 10}px</span>\n </div>\n <Slider\n min={0}\n max={200}\n step={1}\n value={[selected.labelOffset ?? 10]}\n onValueChange={([v]) =>\n engine.setSelectedLabelOffset(v)\n }\n />\n\n <div className=\"mb-1 mt-2.5 flex justify-between text-xs text-light-4\">\n <span>Position along line</span>\n <span>\n {Math.round((selected.labelPos ?? 0.5) * 100)}%\n </span>\n </div>\n <Slider\n min={0}\n max={100}\n step={1}\n value={[Math.round((selected.labelPos ?? 0.5) * 100)]}\n onValueChange={([v]) =>\n engine.setSelectedLabelPos(v / 100)\n }\n />\n\n <div className=\"mt-3 flex items-center justify-between gap-3\">\n <span className=\"text-xs text-light-4\">\n Follow line angle\n </span>\n <Switch\n checked={selected.labelRotate !== false}\n onCheckedChange={engine.setSelectedLabelRotate}\n />\n </div>\n </>\n )}\n\n {(CLOSED_SHAPES.includes(selected.shape ?? '') ||\n selected.closed) && (\n <>\n <div className=\"mb-1 mt-2.5 flex justify-between text-xs text-light-4\">\n <span>Horizontal position</span>\n <span>{selected.labelDx ?? 0}px</span>\n </div>\n <Slider\n min={-300}\n max={300}\n step={1}\n value={[selected.labelDx ?? 0]}\n onValueChange={([v]) => engine.setSelectedLabelDx(v)}\n />\n <div className=\"mb-1 mt-2.5 flex justify-between text-xs text-light-4\">\n <span>Vertical position</span>\n <span>{selected.labelDy ?? 0}px</span>\n </div>\n <Slider\n min={-300}\n max={300}\n step={1}\n value={[selected.labelDy ?? 0]}\n onValueChange={([v]) => engine.setSelectedLabelDy(v)}\n />\n </>\n )}\n </>\n )}\n {(selected.pointCount ?? 0) >= 3 && (\n <>\n <span className=\"mb-1 mt-2.5 block text-xs text-light-4\">\n Path\n </span>\n <SingleSelect\n items={[\n { label: 'Open line', value: 'open' },\n { label: 'Closed shape', value: 'closed' },\n ]}\n value={selected.closed ? 'closed' : 'open'}\n onValueChange={(v) =>\n engine.setSelectedClosed(v === 'closed')\n }\n container={container}\n />\n </>\n )}\n </>\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 {naming ? (\n <div className=\"rounded-lg border border-neutral-2 bg-rest-s1 p-2\">\n <span className=\"mb-1 block text-xs text-light-4\">Layer name</span>\n <Input\n autoFocus\n value={layerName}\n placeholder={suggestedName() || 'Layer name'}\n onChange={(e) => setLayerName(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') commitSave()\n if (e.key === 'Escape') setNaming(false)\n }}\n />\n <div className=\"mt-2 flex gap-2\">\n <Button size=\"sm\" onClick={commitSave} title=\"Save\" />\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={() => setNaming(false)}\n title=\"Cancel\"\n />\n </div>\n </div>\n ) : (\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={() => {\n setLayerName(suggestedName())\n setNaming(true)\n }}\n prefixIcon={<Bookmark className=\"h-4 w-4\" />}\n >\n Save for reuse\n </Button>\n )}\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","CLOSED_SHAPES","MULTI_POINT_SHAPES","DIRECTIONAL_SHAPES","PanelSelected","selected","engine","container","useImageEditorPortalContainer","naming","setNaming","useState","layerName","setLayerName","suggestedName","commitSave","React","Textarea","e","SingleSelect","FONTS","Slider","v","Button","Spline","Switch","ColorPicker","Input","Bookmark","Trash2"],"mappings":"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"}
1
+ {"version":3,"file":"index176.es.js","sources":["../src/components/organisms/image-editor/components/panel-selected.tsx"],"sourcesContent":["import { Bookmark, Spline, Trash2 } from 'lucide-react'\nimport React, { useState } from 'react'\n\nimport { Button } from '@/components/atoms/button'\nimport { Input } from '@/components/atoms/input'\nimport { Textarea } from '@/components/atoms/textarea'\nimport { Slider } from '@/components/molecules/slider'\nimport { Switch } from '@/components/atoms/switch'\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\nconst CLOSED_SHAPES = ['rect', 'ellipse', 'circle']\n\nconst MULTI_POINT_SHAPES = ['line', 'dashedLine']\n\nconst DIRECTIONAL_SHAPES = [\n 'line',\n 'dashedLine',\n 'arrow',\n 'dashedArrow',\n 'doubleArrow',\n 'dashedDoubleArrow',\n]\n\nexport function PanelSelected({ selected, engine }: PanelSelectedProps) {\n const container = useImageEditorPortalContainer()\n const [naming, setNaming] = useState(false)\n const [layerName, setLayerName] = useState('')\n\n const suggestedName = () => {\n if (selected.type === 'text')\n return (selected.text ?? '').trim().slice(0, 40)\n if (selected.label) return selected.label.trim().slice(0, 40)\n return selected.shape ?? selected.type ?? ''\n }\n\n const commitSave = () => {\n engine.saveSelectedLayer(layerName.trim() || undefined)\n setNaming(false)\n setLayerName('')\n }\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\n {MULTI_POINT_SHAPES.includes(selected.shape ?? '') && (\n <>\n <div className=\"my-3 h-px bg-neutral-1\" />\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={engine.continueSelectedLine}\n prefixIcon={<Spline className=\"h-4 w-4\" />}\n >\n Continue this line\n </Button>\n <p className=\"mt-1.5 text-[11px] leading-snug text-light-4\">\n Reopens the line so you can click more corners onto the end.\n </p>\n </>\n )}\n\n {(DIRECTIONAL_SHAPES.includes(selected.shape ?? '') ||\n CLOSED_SHAPES.includes(selected.shape ?? '')) && (\n <>\n <div className=\"my-3 h-px bg-neutral-1\" />\n <span className=\"mb-1 block text-xs text-light-4\">\n {CLOSED_SHAPES.includes(selected.shape ?? '') || selected.closed\n ? 'Text inside shape'\n : 'Label above line'}\n </span>\n <Textarea\n className=\"min-h-[44px]\"\n placeholder=\"Add a caption…\"\n value={selected.label ?? ''}\n onChange={(e) => engine.setSelectedLabel(e.target.value)}\n />\n {!!selected.label && (\n <>\n <span className=\"mb-1 mt-2.5 block text-xs text-light-4\">\n Label font\n </span>\n <SingleSelect\n items={FONTS}\n value={selected.labelFont ?? FONTS[1].value}\n onValueChange={engine.setSelectedLabelFont}\n container={container}\n />\n <div className=\"mb-1 mt-2.5 flex justify-between text-xs text-light-4\">\n <span>Label size</span>\n <span>{selected.labelSize ?? 42}px</span>\n </div>\n <Slider\n min={10}\n max={200}\n step={1}\n value={[selected.labelSize ?? 42]}\n onValueChange={([v]) => engine.setSelectedLabelSize(v)}\n />\n\n {!CLOSED_SHAPES.includes(selected.shape ?? '') &&\n !selected.closed && (\n <>\n <span className=\"mb-1 mt-2.5 block text-xs text-light-4\">\n Label side\n </span>\n <SingleSelect\n items={[\n { label: 'Above the line', value: 'above' },\n { label: 'Below the line', value: 'below' },\n ]}\n value={selected.labelSide ?? 'above'}\n onValueChange={(v) =>\n engine.setSelectedLabelSide(v as 'above' | 'below')\n }\n container={container}\n />\n\n <div className=\"mb-1 mt-2.5 flex justify-between text-xs text-light-4\">\n <span>Distance from line</span>\n <span>{selected.labelOffset ?? 10}px</span>\n </div>\n <Slider\n min={0}\n max={200}\n step={1}\n value={[selected.labelOffset ?? 10]}\n onValueChange={([v]) =>\n engine.setSelectedLabelOffset(v)\n }\n />\n\n <div className=\"mb-1 mt-2.5 flex justify-between text-xs text-light-4\">\n <span>Position along line</span>\n <span>\n {Math.round((selected.labelPos ?? 0.5) * 100)}%\n </span>\n </div>\n <Slider\n min={0}\n max={100}\n step={1}\n value={[Math.round((selected.labelPos ?? 0.5) * 100)]}\n onValueChange={([v]) =>\n engine.setSelectedLabelPos(v / 100)\n }\n />\n\n <div className=\"mt-3 flex items-center justify-between gap-3\">\n <span className=\"text-xs text-light-4\">\n Follow line angle\n </span>\n <Switch\n checked={selected.labelRotate !== false}\n onCheckedChange={engine.setSelectedLabelRotate}\n />\n </div>\n </>\n )}\n\n {(CLOSED_SHAPES.includes(selected.shape ?? '') ||\n selected.closed) && (\n <>\n <div className=\"mb-1 mt-2.5 flex justify-between text-xs text-light-4\">\n <span>Horizontal position</span>\n <span>{selected.labelDx ?? 0}px</span>\n </div>\n <Slider\n min={-300}\n max={300}\n step={1}\n value={[selected.labelDx ?? 0]}\n onValueChange={([v]) => engine.setSelectedLabelDx(v)}\n />\n <div className=\"mb-1 mt-2.5 flex justify-between text-xs text-light-4\">\n <span>Vertical position</span>\n <span>{selected.labelDy ?? 0}px</span>\n </div>\n <Slider\n min={-300}\n max={300}\n step={1}\n value={[selected.labelDy ?? 0]}\n onValueChange={([v]) => engine.setSelectedLabelDy(v)}\n />\n </>\n )}\n </>\n )}\n {(selected.pointCount ?? 0) >= 3 && (\n <>\n <span className=\"mb-1 mt-2.5 block text-xs text-light-4\">\n Path\n </span>\n <SingleSelect\n items={[\n { label: 'Open line', value: 'open' },\n { label: 'Closed shape', value: 'closed' },\n ]}\n value={selected.closed ? 'closed' : 'open'}\n onValueChange={(v) =>\n engine.setSelectedClosed(v === 'closed')\n }\n container={container}\n />\n </>\n )}\n </>\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 {naming ? (\n <div className=\"rounded-lg border border-neutral-2 bg-rest-s1 p-2\">\n <span className=\"mb-1 block text-xs text-light-4\">Layer name</span>\n <Input\n autoFocus\n value={layerName}\n placeholder={suggestedName() || 'Layer name'}\n onChange={(e) => setLayerName(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') commitSave()\n if (e.key === 'Escape') setNaming(false)\n }}\n />\n <div className=\"mt-2 flex gap-2\">\n <Button size=\"sm\" onClick={commitSave} title=\"Save\" />\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={() => setNaming(false)}\n title=\"Cancel\"\n />\n </div>\n </div>\n ) : (\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={() => {\n setLayerName(suggestedName())\n setNaming(true)\n }}\n prefixIcon={<Bookmark className=\"h-4 w-4\" />}\n >\n Save for reuse\n </Button>\n )}\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","CLOSED_SHAPES","MULTI_POINT_SHAPES","DIRECTIONAL_SHAPES","PanelSelected","selected","engine","container","useImageEditorPortalContainer","naming","setNaming","useState","layerName","setLayerName","suggestedName","commitSave","React","Textarea","e","SingleSelect","FONTS","Slider","v","Button","Spline","Switch","ColorPicker","Input","Bookmark","Trash2"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Bookmark as f, SearchIcon as v, Loader2 as E, Plus as b, Trash2 as N } from "lucide-react";
2
2
  import e, { useState as o, useEffect as S } from "react";
3
- import { Input as k } from "./index.es11.js";
3
+ import { Input as k } from "./index11.es.js";
4
4
  const L = {
5
5
  text: "Text",
6
6
  shape: "Shape",
@@ -63,4 +63,4 @@ function R({ ui: r, engine: a }) {
63
63
  export {
64
64
  R as SavedLayersList
65
65
  };
66
- //# sourceMappingURL=index.es172.js.map
66
+ //# sourceMappingURL=index177.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es172.js","sources":["../src/components/organisms/image-editor/components/saved-layers-list.tsx"],"sourcesContent":["import { Bookmark, Loader2, Plus, SearchIcon, Trash2 } from 'lucide-react'\nimport React, { useEffect, useState } from 'react'\n\nimport { Input } from '@/components/atoms/input'\n\nimport {\n ImageEditorEngine,\n ImageEditorSavedLayer,\n ImageEditorUiState,\n} from '../image-editor.types'\n\ninterface SavedLayersListProps {\n ui: ImageEditorUiState\n engine: ImageEditorEngine\n}\n\nconst TYPE_LABEL: Record<string, string> = {\n text: 'Text',\n shape: 'Shape',\n stroke: 'Drawing',\n sticker: 'Sticker',\n}\n\nconst SEARCH_DEBOUNCE_MS = 350\n\nexport function SavedLayersList({ ui, engine }: SavedLayersListProps) {\n const [query, setQuery] = useState('')\n const [results, setResults] = useState<ImageEditorSavedLayer[] | null>(null)\n const [searching, setSearching] = useState(false)\n\n const saved = ui.savedLayers ?? []\n const searchable = ui.canSearchSavedLayers || saved.length > 0\n\n useEffect(() => {\n const q = query.trim()\n if (!q) {\n setResults(null)\n setSearching(false)\n return\n }\n setSearching(true)\n let cancelled = false\n const t = setTimeout(() => {\n engine\n .searchSavedLayers(q)\n // A slow response for an old query must not overwrite a newer one.\n .then((r) => !cancelled && setResults(r))\n .catch(() => !cancelled && setResults([]))\n .finally(() => !cancelled && setSearching(false))\n }, SEARCH_DEBOUNCE_MS)\n return () => {\n cancelled = true\n clearTimeout(t)\n }\n }, [query, engine])\n\n if (!searchable) return null\n\n const rows = results ?? saved\n const isSearchResults = results !== null\n\n return (\n <div className=\"mt-4 border-t border-neutral-1 pt-3.5\">\n <span className=\"mb-2 flex items-center gap-1.5 text-xs font-medium text-light-2\">\n <Bookmark className=\"h-3.5 w-3.5\" />\n Saved layers\n </span>\n\n <div className=\"relative mb-2\">\n <Input\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n placeholder=\"Search saved layers\"\n className=\"pl-2 bg-light-1\"\n prefix={<SearchIcon className='h-5 w-5 text-light-4'/>}\n aria-label=\"Search saved layers\"\n />\n {searching && (\n <Loader2 className=\"absolute right-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 animate-spin text-light-4\" />\n )}\n </div>\n\n {rows.length === 0 ? (\n <p className=\"px-0.5 py-2 text-xs text-light-4\">\n {isSearchResults ? 'No layers match that.' : 'Nothing saved yet.'}\n </p>\n ) : (\n <ul className=\"flex flex-col gap-1\">\n {rows.map((item) => (\n <li key={item.id} className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={() =>\n isSearchResults\n ? engine.insertSavedLayerEntry(\n item as ImageEditorSavedLayer\n )\n : engine.insertSavedLayer(item.id)\n }\n disabled={!ui.hasImage}\n title={`Add \"${item.name}\"`}\n className=\"flex min-h-9 flex-1 items-center gap-2 overflow-hidden rounded-lg border border-neutral-2 bg-rest-s1 px-2.5 text-left text-xs hover:bg-hover-s1 disabled:pointer-events-none disabled:opacity-50\"\n >\n <Plus className=\"h-4 w-4 shrink-0 text-light-4\" />\n <span className=\"truncate text-light-2\">{item.name}</span>\n <span className=\"ml-auto shrink-0 text-[10px] uppercase tracking-wide text-light-4\">\n {TYPE_LABEL[\n ('type' in item\n ? (item.type as string)\n : ((item as ImageEditorSavedLayer).layer\n ?.type as string)) ?? ''\n ] ?? ''}\n </span>\n </button>\n <button\n type=\"button\"\n onClick={() => engine.deleteSavedLayer(item.id)}\n aria-label={`Delete saved layer ${item.name}`}\n className=\"flex min-h-9 w-9 shrink-0 items-center justify-center rounded-lg text-light-4 hover:bg-hover-s1 hover:text-danger-1\"\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n </button>\n </li>\n ))}\n </ul>\n )}\n </div>\n )\n}\n"],"names":["TYPE_LABEL","SEARCH_DEBOUNCE_MS","SavedLayersList","ui","engine","query","setQuery","useState","results","setResults","searching","setSearching","saved","searchable","useEffect","q","cancelled","t","r","rows","isSearchResults","React","Bookmark","Input","e","SearchIcon","Loader2","item","Plus","Trash2"],"mappings":"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"}
1
+ {"version":3,"file":"index177.es.js","sources":["../src/components/organisms/image-editor/components/saved-layers-list.tsx"],"sourcesContent":["import { Bookmark, Loader2, Plus, SearchIcon, Trash2 } from 'lucide-react'\nimport React, { useEffect, useState } from 'react'\n\nimport { Input } from '@/components/atoms/input'\n\nimport {\n ImageEditorEngine,\n ImageEditorSavedLayer,\n ImageEditorUiState,\n} from '../image-editor.types'\n\ninterface SavedLayersListProps {\n ui: ImageEditorUiState\n engine: ImageEditorEngine\n}\n\nconst TYPE_LABEL: Record<string, string> = {\n text: 'Text',\n shape: 'Shape',\n stroke: 'Drawing',\n sticker: 'Sticker',\n}\n\nconst SEARCH_DEBOUNCE_MS = 350\n\nexport function SavedLayersList({ ui, engine }: SavedLayersListProps) {\n const [query, setQuery] = useState('')\n const [results, setResults] = useState<ImageEditorSavedLayer[] | null>(null)\n const [searching, setSearching] = useState(false)\n\n const saved = ui.savedLayers ?? []\n const searchable = ui.canSearchSavedLayers || saved.length > 0\n\n useEffect(() => {\n const q = query.trim()\n if (!q) {\n setResults(null)\n setSearching(false)\n return\n }\n setSearching(true)\n let cancelled = false\n const t = setTimeout(() => {\n engine\n .searchSavedLayers(q)\n // A slow response for an old query must not overwrite a newer one.\n .then((r) => !cancelled && setResults(r))\n .catch(() => !cancelled && setResults([]))\n .finally(() => !cancelled && setSearching(false))\n }, SEARCH_DEBOUNCE_MS)\n return () => {\n cancelled = true\n clearTimeout(t)\n }\n }, [query, engine])\n\n if (!searchable) return null\n\n const rows = results ?? saved\n const isSearchResults = results !== null\n\n return (\n <div className=\"mt-4 border-t border-neutral-1 pt-3.5\">\n <span className=\"mb-2 flex items-center gap-1.5 text-xs font-medium text-light-2\">\n <Bookmark className=\"h-3.5 w-3.5\" />\n Saved layers\n </span>\n\n <div className=\"relative mb-2\">\n <Input\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n placeholder=\"Search saved layers\"\n className=\"pl-2 bg-light-1\"\n prefix={<SearchIcon className='h-5 w-5 text-light-4'/>}\n aria-label=\"Search saved layers\"\n />\n {searching && (\n <Loader2 className=\"absolute right-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 animate-spin text-light-4\" />\n )}\n </div>\n\n {rows.length === 0 ? (\n <p className=\"px-0.5 py-2 text-xs text-light-4\">\n {isSearchResults ? 'No layers match that.' : 'Nothing saved yet.'}\n </p>\n ) : (\n <ul className=\"flex flex-col gap-1\">\n {rows.map((item) => (\n <li key={item.id} className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={() =>\n isSearchResults\n ? engine.insertSavedLayerEntry(\n item as ImageEditorSavedLayer\n )\n : engine.insertSavedLayer(item.id)\n }\n disabled={!ui.hasImage}\n title={`Add \"${item.name}\"`}\n className=\"flex min-h-9 flex-1 items-center gap-2 overflow-hidden rounded-lg border border-neutral-2 bg-rest-s1 px-2.5 text-left text-xs hover:bg-hover-s1 disabled:pointer-events-none disabled:opacity-50\"\n >\n <Plus className=\"h-4 w-4 shrink-0 text-light-4\" />\n <span className=\"truncate text-light-2\">{item.name}</span>\n <span className=\"ml-auto shrink-0 text-[10px] uppercase tracking-wide text-light-4\">\n {TYPE_LABEL[\n ('type' in item\n ? (item.type as string)\n : ((item as ImageEditorSavedLayer).layer\n ?.type as string)) ?? ''\n ] ?? ''}\n </span>\n </button>\n <button\n type=\"button\"\n onClick={() => engine.deleteSavedLayer(item.id)}\n aria-label={`Delete saved layer ${item.name}`}\n className=\"flex min-h-9 w-9 shrink-0 items-center justify-center rounded-lg text-light-4 hover:bg-hover-s1 hover:text-danger-1\"\n >\n <Trash2 className=\"h-3.5 w-3.5\" />\n </button>\n </li>\n ))}\n </ul>\n )}\n </div>\n )\n}\n"],"names":["TYPE_LABEL","SEARCH_DEBOUNCE_MS","SavedLayersList","ui","engine","query","setQuery","useState","results","setResults","searching","setSearching","saved","searchable","useEffect","q","cancelled","t","r","rows","isSearchResults","React","Bookmark","Input","e","SearchIcon","Loader2","item","Plus","Trash2"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import * as r from "react";
2
2
  import { Clock4 as m } from "lucide-react";
3
- import { convertEpochTime as i } from "./index.es185.js";
4
- import { AvatarDemo as c } from "./index.es6.js";
5
- import { Typography as a } from "./index.es19.js";
3
+ import { convertEpochTime as i } from "./index189.es.js";
4
+ import { AvatarDemo as c } from "./index6.es.js";
5
+ import { Typography as a } from "./index19.es.js";
6
6
  const u = (e) => {
7
7
  const l = (t) => t ? t.split(" ").map((s) => s[0]).join("").toUpperCase() : "", o = () => {
8
8
  typeof window < "u" && e?.action?.redirect_url && (window.location.href = e?.action?.redirect_url);
@@ -35,4 +35,4 @@ const u = (e) => {
35
35
  export {
36
36
  u as default
37
37
  };
38
- //# sourceMappingURL=index.es174.js.map
38
+ //# sourceMappingURL=index178.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es174.js","sources":["../src/components/organisms/navbar/components/notification-panel/components/notification-card/notification-card.tsx"],"sourcesContent":["import { FC } from 'react'\nimport { NotificationCardProps } from './notification-card.types'\nimport * as React from 'react'\nimport { Clock4 } from 'lucide-react'\nimport { convertEpochTime } from './notification.utils'\nimport { Avatar } from '@/components/atoms/avatar'\nimport { Typography } from '@/components/atoms/typography'\n\nconst NotificationCard: FC<NotificationCardProps> = (notification) => {\n const getInitials = (name: string): string => {\n if (!name) {\n return ''\n }\n return name\n .split(' ')\n .map((word) => word[0])\n .join('')\n .toUpperCase()\n }\n\n const onCardClick = () => {\n if (typeof window !== 'undefined' && notification?.action?.redirect_url)\n window.location.href = notification?.action?.redirect_url\n }\n\n return (\n <div\n className=\"flex flex-row items-start justify-start gap-2 p-3 border-b border-neutral-1 bg-light-1 hover:cursor-pointer\"\n onClick={() => {\n onCardClick()\n }}\n role=\"button\"\n onKeyDown={(event: React.KeyboardEvent) => {\n if (event.key === 'Enter') {\n onCardClick()\n }\n }}\n tabIndex={0}\n >\n <Avatar\n fallback={getInitials(notification.user.first_name)}\n imageSrc={notification.user.profile_url}\n alt={getInitials(notification.user.first_name)}\n size=\"md\"\n />\n <div className=\"flex flex-col gap-1\">\n <Typography variant=\"body3\" className=\"text-light-2 hover:underline\">\n {notification.title}\n </Typography>\n <Typography variant=\"body4\" className=\"text-light-3\">\n {notification.description}\n </Typography>\n\n <div className=\"flex flex-row gap-[6px]\">\n <Clock4 size={16} className=\"stroke-light-2\" />\n <Typography variant=\"body6\" className=\"text-light-3\">\n {convertEpochTime(Number(notification.timestamp))}\n </Typography>\n </div>\n </div>\n </div>\n )\n}\n\nexport default NotificationCard\n"],"names":["NotificationCard","notification","getInitials","name","word","onCardClick","React","event","Avatar","Typography","Clock4","convertEpochTime"],"mappings":";;;;;AAQA,MAAMA,IAA8C,CAACC,MAAiB;AACpE,QAAMC,IAAc,CAACC,MACdA,IAGEA,EACJ,MAAM,GAAG,EACT,IAAI,CAACC,MAASA,EAAK,CAAC,CAAC,EACrB,KAAK,EAAE,EACP,YAAA,IANM,IASLC,IAAc,MAAM;AACxB,IAAI,OAAO,SAAW,OAAeJ,GAAc,QAAQ,iBACzD,OAAO,SAAS,OAAOA,GAAc,QAAQ;AAAA,EACjD;AAEA,SACE,gBAAAK,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,SAAS,MAAM;AACb,QAAAD,EAAA;AAAA,MACF;AAAA,MACA,MAAK;AAAA,MACL,WAAW,CAACE,MAA+B;AACzC,QAAIA,EAAM,QAAQ,WAChBF,EAAA;AAAA,MAEJ;AAAA,MACA,UAAU;AAAA,IAAA;AAAA,IAEV,gBAAAC,EAAA;AAAA,MAACE;AAAAA,MAAA;AAAA,QACC,UAAUN,EAAYD,EAAa,KAAK,UAAU;AAAA,QAClD,UAAUA,EAAa,KAAK;AAAA,QAC5B,KAAKC,EAAYD,EAAa,KAAK,UAAU;AAAA,QAC7C,MAAK;AAAA,MAAA;AAAA,IAAA;AAAA,IAEP,gBAAAK,EAAA,cAAC,SAAI,WAAU,sBAAA,mCACZG,GAAA,EAAW,SAAQ,SAAQ,WAAU,kCACnCR,EAAa,KAChB,mCACCQ,GAAA,EAAW,SAAQ,SAAQ,WAAU,kBACnCR,EAAa,WAChB,GAEA,gBAAAK,EAAA,cAAC,SAAI,WAAU,0BAAA,mCACZI,GAAA,EAAO,MAAM,IAAI,WAAU,iBAAA,CAAiB,GAC7C,gBAAAJ,EAAA,cAACG,GAAA,EAAW,SAAQ,SAAQ,WAAU,kBACnCE,EAAiB,OAAOV,EAAa,SAAS,CAAC,CAClD,CACF,CACF;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"index178.es.js","sources":["../src/components/organisms/navbar/components/notification-panel/components/notification-card/notification-card.tsx"],"sourcesContent":["import { FC } from 'react'\nimport { NotificationCardProps } from './notification-card.types'\nimport * as React from 'react'\nimport { Clock4 } from 'lucide-react'\nimport { convertEpochTime } from './notification.utils'\nimport { Avatar } from '@/components/atoms/avatar'\nimport { Typography } from '@/components/atoms/typography'\n\nconst NotificationCard: FC<NotificationCardProps> = (notification) => {\n const getInitials = (name: string): string => {\n if (!name) {\n return ''\n }\n return name\n .split(' ')\n .map((word) => word[0])\n .join('')\n .toUpperCase()\n }\n\n const onCardClick = () => {\n if (typeof window !== 'undefined' && notification?.action?.redirect_url)\n window.location.href = notification?.action?.redirect_url\n }\n\n return (\n <div\n className=\"flex flex-row items-start justify-start gap-2 p-3 border-b border-neutral-1 bg-light-1 hover:cursor-pointer\"\n onClick={() => {\n onCardClick()\n }}\n role=\"button\"\n onKeyDown={(event: React.KeyboardEvent) => {\n if (event.key === 'Enter') {\n onCardClick()\n }\n }}\n tabIndex={0}\n >\n <Avatar\n fallback={getInitials(notification.user.first_name)}\n imageSrc={notification.user.profile_url}\n alt={getInitials(notification.user.first_name)}\n size=\"md\"\n />\n <div className=\"flex flex-col gap-1\">\n <Typography variant=\"body3\" className=\"text-light-2 hover:underline\">\n {notification.title}\n </Typography>\n <Typography variant=\"body4\" className=\"text-light-3\">\n {notification.description}\n </Typography>\n\n <div className=\"flex flex-row gap-[6px]\">\n <Clock4 size={16} className=\"stroke-light-2\" />\n <Typography variant=\"body6\" className=\"text-light-3\">\n {convertEpochTime(Number(notification.timestamp))}\n </Typography>\n </div>\n </div>\n </div>\n )\n}\n\nexport default NotificationCard\n"],"names":["NotificationCard","notification","getInitials","name","word","onCardClick","React","event","Avatar","Typography","Clock4","convertEpochTime"],"mappings":";;;;;AAQA,MAAMA,IAA8C,CAACC,MAAiB;AACpE,QAAMC,IAAc,CAACC,MACdA,IAGEA,EACJ,MAAM,GAAG,EACT,IAAI,CAACC,MAASA,EAAK,CAAC,CAAC,EACrB,KAAK,EAAE,EACP,YAAA,IANM,IASLC,IAAc,MAAM;AACxB,IAAI,OAAO,SAAW,OAAeJ,GAAc,QAAQ,iBACzD,OAAO,SAAS,OAAOA,GAAc,QAAQ;AAAA,EACjD;AAEA,SACE,gBAAAK,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,SAAS,MAAM;AACb,QAAAD,EAAA;AAAA,MACF;AAAA,MACA,MAAK;AAAA,MACL,WAAW,CAACE,MAA+B;AACzC,QAAIA,EAAM,QAAQ,WAChBF,EAAA;AAAA,MAEJ;AAAA,MACA,UAAU;AAAA,IAAA;AAAA,IAEV,gBAAAC,EAAA;AAAA,MAACE;AAAAA,MAAA;AAAA,QACC,UAAUN,EAAYD,EAAa,KAAK,UAAU;AAAA,QAClD,UAAUA,EAAa,KAAK;AAAA,QAC5B,KAAKC,EAAYD,EAAa,KAAK,UAAU;AAAA,QAC7C,MAAK;AAAA,MAAA;AAAA,IAAA;AAAA,IAEP,gBAAAK,EAAA,cAAC,SAAI,WAAU,sBAAA,mCACZG,GAAA,EAAW,SAAQ,SAAQ,WAAU,kCACnCR,EAAa,KAChB,mCACCQ,GAAA,EAAW,SAAQ,SAAQ,WAAU,kBACnCR,EAAa,WAChB,GAEA,gBAAAK,EAAA,cAAC,SAAI,WAAU,0BAAA,mCACZI,GAAA,EAAO,MAAM,IAAI,WAAU,iBAAA,CAAiB,GAC7C,gBAAAJ,EAAA,cAACG,GAAA,EAAW,SAAQ,SAAQ,WAAU,kBACnCE,EAAiB,OAAOV,EAAa,SAAS,CAAC,CAClD,CACF,CACF;AAAA,EAAA;AAGN;"}
@@ -1,4 +1,4 @@
1
- import { Typography as t } from "./index.es19.js";
1
+ import { Typography as t } from "./index19.es.js";
2
2
  import * as e from "react";
3
3
  const i = () => /* @__PURE__ */ e.createElement("div", { className: "flex flex-col items-center justify-center h-full max-w-80" }, /* @__PURE__ */ e.createElement(
4
4
  "img",
@@ -11,4 +11,4 @@ const i = () => /* @__PURE__ */ e.createElement("div", { className: "flex flex-c
11
11
  export {
12
12
  i as default
13
13
  };
14
- //# sourceMappingURL=index.es175.js.map
14
+ //# sourceMappingURL=index179.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es175.js","sources":["../src/components/organisms/navbar/components/notification-panel/components/empty-state/empty-state.tsx"],"sourcesContent":["import { Typography } from '@/components/atoms/typography'\nimport { FC } from 'react'\nimport * as React from 'react'\n\nconst EmptyNotificationState: FC = () => {\n return (\n <div className=\"flex flex-col items-center justify-center h-full max-w-80\">\n <img\n src=\"https://frontend-static-files.geoiq.io/strapi/notification_empty_state_d1614ba3d3/notification_empty_state_d1614ba3d3.svg\"\n alt=\"empty-state\"\n className=\"h-[150px] w-[150px]\"\n />\n <div className=\"flex flex-col items-center justify-center gap-1\">\n <Typography variant=\"body1\" className=\"text-light-1\">\n No new notifications for now!\n </Typography>\n <Typography variant=\"body4\" className=\"text-center text-light-4\">\n Stay tuned for updates, and we&apos;ll keep you posted when something\n comes up!\n </Typography>\n </div>\n </div>\n )\n}\n\nexport default EmptyNotificationState\n"],"names":["EmptyNotificationState","React","Typography"],"mappings":";;AAIA,MAAMA,IAA6B,MAE/B,gBAAAC,EAAA,cAAC,OAAA,EAAI,WAAU,4DAAA,GACb,gBAAAA,EAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAI;AAAA,IACJ,KAAI;AAAA,IACJ,WAAU;AAAA,EAAA;AAAA,mCAEX,OAAA,EAAI,WAAU,qDACb,gBAAAA,EAAA,cAACC,GAAA,EAAW,SAAQ,SAAQ,WAAU,kBAAe,+BAErD,mCACCA,GAAA,EAAW,SAAQ,SAAQ,WAAU,8BAA2B,4EAGjE,CACF,CACF;"}
1
+ {"version":3,"file":"index179.es.js","sources":["../src/components/organisms/navbar/components/notification-panel/components/empty-state/empty-state.tsx"],"sourcesContent":["import { Typography } from '@/components/atoms/typography'\nimport { FC } from 'react'\nimport * as React from 'react'\n\nconst EmptyNotificationState: FC = () => {\n return (\n <div className=\"flex flex-col items-center justify-center h-full max-w-80\">\n <img\n src=\"https://frontend-static-files.geoiq.io/strapi/notification_empty_state_d1614ba3d3/notification_empty_state_d1614ba3d3.svg\"\n alt=\"empty-state\"\n className=\"h-[150px] w-[150px]\"\n />\n <div className=\"flex flex-col items-center justify-center gap-1\">\n <Typography variant=\"body1\" className=\"text-light-1\">\n No new notifications for now!\n </Typography>\n <Typography variant=\"body4\" className=\"text-center text-light-4\">\n Stay tuned for updates, and we&apos;ll keep you posted when something\n comes up!\n </Typography>\n </div>\n </div>\n )\n}\n\nexport default EmptyNotificationState\n"],"names":["EmptyNotificationState","React","Typography"],"mappings":";;AAIA,MAAMA,IAA6B,MAE/B,gBAAAC,EAAA,cAAC,OAAA,EAAI,WAAU,4DAAA,GACb,gBAAAA,EAAA;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAI;AAAA,IACJ,KAAI;AAAA,IACJ,WAAU;AAAA,EAAA;AAAA,mCAEX,OAAA,EAAI,WAAU,qDACb,gBAAAA,EAAA,cAACC,GAAA,EAAW,SAAQ,SAAQ,WAAU,kBAAe,+BAErD,mCACCA,GAAA,EAAW,SAAQ,SAAQ,WAAU,8BAA2B,4EAGjE,CACF,CACF;"}
@@ -1,4 +1,4 @@
1
- import { TooltipProvider as i, TooltipWrapper as n, TooltipTrigger as a, TooltipContent as m } from "./index.es17.js";
1
+ import { TooltipProvider as i, TooltipWrapper as n, TooltipTrigger as a, TooltipContent as m } from "./index17.es.js";
2
2
  import * as t from "react";
3
3
  function c({
4
4
  headerText: o,
@@ -24,4 +24,4 @@ function c({
24
24
  export {
25
25
  c as default
26
26
  };
27
- //# sourceMappingURL=index.es18.js.map
27
+ //# sourceMappingURL=index18.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es18.js","sources":["../src/components/atoms/tooltip/tooltip.tsx"],"sourcesContent":["import {\n TooltipWrapper,\n TooltipContent,\n TooltipTrigger,\n TooltipProvider,\n} from './tooltip-components'\nimport * as React from 'react'\nimport { TooltipProps } from './tooltip.types'\n\nexport default function Tooltip({\n headerText,\n content,\n className,\n // id,\n ...props\n}: TooltipProps) {\n return (\n // <div id={id}>\n <TooltipProvider>\n <TooltipWrapper {...props}>\n <TooltipTrigger>{props?.triggerElement}</TooltipTrigger>\n <TooltipContent\n side={props?.side ?? 'top'}\n headerText={headerText ?? ''}\n content={content ?? ''}\n className={className}\n {...props}\n />\n </TooltipWrapper>\n </TooltipProvider>\n // </div>\n )\n}\n"],"names":["Tooltip","headerText","content","className","props","React","TooltipProvider","TooltipWrapper","TooltipTrigger","TooltipContent"],"mappings":";;AASA,SAAwBA,EAAQ;AAAA,EAC9B,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA;AAAA,EAEA,GAAGC;AACL,GAAiB;AACf;AAAA;AAAA,IAEE,gBAAAC,EAAA,cAACC,GAAA,MACC,gBAAAD,EAAA,cAACE,GAAA,EAAgB,GAAGH,KAClB,gBAAAC,EAAA,cAACG,GAAA,MAAgBJ,GAAO,cAAe,GACvC,gBAAAC,EAAA;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,MAAML,GAAO,QAAQ;AAAA,QACrB,YAAYH,KAAc;AAAA,QAC1B,SAASC,KAAW;AAAA,QACpB,WAAAC;AAAA,QACC,GAAGC;AAAA,MAAA;AAAA,IAAA,CAER,CACF;AAAA;AAGJ;"}
1
+ {"version":3,"file":"index18.es.js","sources":["../src/components/atoms/tooltip/tooltip.tsx"],"sourcesContent":["import {\n TooltipWrapper,\n TooltipContent,\n TooltipTrigger,\n TooltipProvider,\n} from './tooltip-components'\nimport * as React from 'react'\nimport { TooltipProps } from './tooltip.types'\n\nexport default function Tooltip({\n headerText,\n content,\n className,\n // id,\n ...props\n}: TooltipProps) {\n return (\n // <div id={id}>\n <TooltipProvider>\n <TooltipWrapper {...props}>\n <TooltipTrigger>{props?.triggerElement}</TooltipTrigger>\n <TooltipContent\n side={props?.side ?? 'top'}\n headerText={headerText ?? ''}\n content={content ?? ''}\n className={className}\n {...props}\n />\n </TooltipWrapper>\n </TooltipProvider>\n // </div>\n )\n}\n"],"names":["Tooltip","headerText","content","className","props","React","TooltipProvider","TooltipWrapper","TooltipTrigger","TooltipContent"],"mappings":";;AASA,SAAwBA,EAAQ;AAAA,EAC9B,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AAAA;AAAA,EAEA,GAAGC;AACL,GAAiB;AACf;AAAA;AAAA,IAEE,gBAAAC,EAAA,cAACC,GAAA,MACC,gBAAAD,EAAA,cAACE,GAAA,EAAgB,GAAGH,KAClB,gBAAAC,EAAA,cAACG,GAAA,MAAgBJ,GAAO,cAAe,GACvC,gBAAAC,EAAA;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,MAAML,GAAO,QAAQ;AAAA,QACrB,YAAYH,KAAc;AAAA,QAC1B,SAASC,KAAW;AAAA,QACpB,WAAAC;AAAA,QACC,GAAGC;AAAA,MAAA;AAAA,IAAA,CAER,CACF;AAAA;AAGJ;"}
@@ -1,10 +1,10 @@
1
- import { Typography as u } from "./index.es19.js";
1
+ import { Typography as u } from "./index19.es.js";
2
2
  import e, { useState as v, useRef as N } from "react";
3
- import "./index.es35.js";
4
- import { useToast as h } from "./index.es87.js";
5
- import { Spinner as x } from "./index.es64.js";
3
+ import "./index37.es.js";
4
+ import { useToast as h } from "./index89.es.js";
5
+ import { Spinner as x } from "./index66.es.js";
6
6
  import { Upload as _, X as w, Pen as k } from "lucide-react";
7
- import { useFormValues as I } from "./index.es161.js";
7
+ import { useFormValues as I } from "./index144.es.js";
8
8
  const j = ({
9
9
  id: g,
10
10
  onChange: l,
@@ -84,4 +84,4 @@ const j = ({
84
84
  export {
85
85
  j as SingleImagePicker
86
86
  };
87
- //# sourceMappingURL=index.es178.js.map
87
+ //# sourceMappingURL=index180.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es178.js","sources":["../src/components/ui/form-renderer/components/form-fields/components/single-image-picker/index.tsx"],"sourcesContent":["import { Typography } from '@/components/atoms/typography'\nimport { useToast } from '@/components/molecules/toast'\nimport { Spinner } from '@/components/unstyled/spinner'\nimport { Upload, X, Pen } from 'lucide-react'\nimport React, { useRef, useState } from 'react'\nimport { useFormValues } from '../../../../context/form-values'\nimport { AssetValue } from '../../../../form.types'\n\ninterface ImagePickerProps {\n id: string\n onChange: (data?: AssetValue) => void\n value?: AssetValue\n accept?: string\n error?: string\n}\n\nconst SingleImagePicker: React.FC<ImagePickerProps> = ({\n id,\n onChange,\n value,\n accept = 'image/*',\n error,\n}) => {\n const { onAssetUpload, onToggleImageEditor } = useFormValues()\n const { toast } = useToast()\n\n const [isLoading, setIsLoading] = useState(false)\n const fileInputRef = useRef<HTMLInputElement>(null)\n\n const handleImageSelect = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0]\n if (!file || isLoading) return\n if (onAssetUpload) {\n setIsLoading(true)\n onAssetUpload(file)\n .then((data: AssetValue) => {\n onChange({ ...data, original_private_url: data.private_url })\n\n toast({\n title: 'Alert!',\n description: `File uploaded successfully.`,\n icon: 'success',\n })\n })\n .catch(() => {\n onChange(undefined)\n toast({\n title: 'Alert!',\n description: `Error uploading file`,\n icon: 'warning',\n })\n })\n .finally(() => {\n setIsLoading(false)\n // Reset the file input so the same file can be selected again\n if (fileInputRef.current) {\n fileInputRef.current.value = ''\n }\n })\n }\n }\n\n const onReplaceImage = (data: AssetValue) => {\n onChange({\n ...data,\n original_private_url: value?.original_private_url ?? value?.private_url,\n })\n }\n\n const handleClick = () => {\n if (!isLoading) {\n fileInputRef.current?.click()\n }\n }\n\n return (\n <div className=\"relative\">\n {isLoading && (\n <div className=\"absolute inset-0 z-10 flex items-center justify-center bg-white bg-opacity-70\">\n <Spinner className=\"w-8 h-8 text-primary-1\" />\n </div>\n )}\n <div className=\"relative p-8 border-2 border-dashed rounded-lg border-primary-1 bg-primary-1\">\n <button className=\"w-full\" onClick={handleClick}>\n <div className=\"flex flex-col items-center gap-3 text-center\">\n <div className=\"bg-gray-100 rounded-full\">\n <Upload className=\"w-6 h-6 text-gray-500\" />\n </div>\n <Typography variant=\"body1\" className=\"text-gray-600\">\n {isLoading\n ? 'Uploading...'\n : value\n ? 'Replace Image'\n : 'Attach Image'}\n </Typography>\n </div>\n </button>\n <input\n ref={fileInputRef}\n id={`${id}-gallery`}\n type=\"file\"\n accept={accept}\n disabled={isLoading}\n onChange={handleImageSelect}\n className=\"hidden\"\n />\n\n {error && (\n <Typography variant=\"body1\" className=\"mt-1 text-danger-1\">\n {error}\n </Typography>\n )}\n </div>\n {value && (\n <div className=\"grid grid-cols-2 gap-4 mt-4 sm:grid-cols-3 md:grid-cols-4\">\n <div className=\"relative flex rounded\">\n <img\n src={value.public_url}\n alt=\"Preview\"\n className=\"object-cover w-full h-24 rounded\"\n />\n <button\n type=\"button\"\n onClick={() => {\n if (!isLoading) {\n onChange(undefined)\n }\n }}\n className=\"absolute p-1 text-white bg-white rounded-full right-2 top-2 opacity-70 hover:opacity-100\"\n >\n <X size={16} className=\"stroke-danger\" />\n </button>\n {onToggleImageEditor && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.currentTarget.blur()\n onToggleImageEditor({\n imageUrl: value.public_url,\n index: -1,\n onReplaceImage,\n })\n }}\n className=\"absolute p-1 text-white bg-white rounded-full left-2 top-2 opacity-70 hover:opacity-100\"\n >\n <Pen size={16} className=\"stroke-danger\" />\n </button>\n )}\n </div>\n </div>\n )}\n </div>\n )\n}\n\nexport { SingleImagePicker }\n"],"names":["SingleImagePicker","id","onChange","value","accept","error","onAssetUpload","onToggleImageEditor","useFormValues","toast","useToast","isLoading","setIsLoading","useState","fileInputRef","useRef","handleImageSelect","e","file","data","onReplaceImage","handleClick","React","Spinner","Upload","Typography","X","Pen"],"mappings":"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"}
1
+ {"version":3,"file":"index180.es.js","sources":["../src/components/ui/form-renderer/components/form-fields/components/single-image-picker/index.tsx"],"sourcesContent":["import { Typography } from '@/components/atoms/typography'\nimport { useToast } from '@/components/molecules/toast'\nimport { Spinner } from '@/components/unstyled/spinner'\nimport { Upload, X, Pen } from 'lucide-react'\nimport React, { useRef, useState } from 'react'\nimport { useFormValues } from '../../../../context/form-values'\nimport { AssetValue } from '../../../../form.types'\n\ninterface ImagePickerProps {\n id: string\n onChange: (data?: AssetValue) => void\n value?: AssetValue\n accept?: string\n error?: string\n}\n\nconst SingleImagePicker: React.FC<ImagePickerProps> = ({\n id,\n onChange,\n value,\n accept = 'image/*',\n error,\n}) => {\n const { onAssetUpload, onToggleImageEditor } = useFormValues()\n const { toast } = useToast()\n\n const [isLoading, setIsLoading] = useState(false)\n const fileInputRef = useRef<HTMLInputElement>(null)\n\n const handleImageSelect = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0]\n if (!file || isLoading) return\n if (onAssetUpload) {\n setIsLoading(true)\n onAssetUpload(file)\n .then((data: AssetValue) => {\n onChange({ ...data, original_private_url: data.private_url })\n\n toast({\n title: 'Alert!',\n description: `File uploaded successfully.`,\n icon: 'success',\n })\n })\n .catch(() => {\n onChange(undefined)\n toast({\n title: 'Alert!',\n description: `Error uploading file`,\n icon: 'warning',\n })\n })\n .finally(() => {\n setIsLoading(false)\n // Reset the file input so the same file can be selected again\n if (fileInputRef.current) {\n fileInputRef.current.value = ''\n }\n })\n }\n }\n\n const onReplaceImage = (data: AssetValue) => {\n onChange({\n ...data,\n original_private_url: value?.original_private_url ?? value?.private_url,\n })\n }\n\n const handleClick = () => {\n if (!isLoading) {\n fileInputRef.current?.click()\n }\n }\n\n return (\n <div className=\"relative\">\n {isLoading && (\n <div className=\"absolute inset-0 z-10 flex items-center justify-center bg-white bg-opacity-70\">\n <Spinner className=\"w-8 h-8 text-primary-1\" />\n </div>\n )}\n <div className=\"relative p-8 border-2 border-dashed rounded-lg border-primary-1 bg-primary-1\">\n <button className=\"w-full\" onClick={handleClick}>\n <div className=\"flex flex-col items-center gap-3 text-center\">\n <div className=\"bg-gray-100 rounded-full\">\n <Upload className=\"w-6 h-6 text-gray-500\" />\n </div>\n <Typography variant=\"body1\" className=\"text-gray-600\">\n {isLoading\n ? 'Uploading...'\n : value\n ? 'Replace Image'\n : 'Attach Image'}\n </Typography>\n </div>\n </button>\n <input\n ref={fileInputRef}\n id={`${id}-gallery`}\n type=\"file\"\n accept={accept}\n disabled={isLoading}\n onChange={handleImageSelect}\n className=\"hidden\"\n />\n\n {error && (\n <Typography variant=\"body1\" className=\"mt-1 text-danger-1\">\n {error}\n </Typography>\n )}\n </div>\n {value && (\n <div className=\"grid grid-cols-2 gap-4 mt-4 sm:grid-cols-3 md:grid-cols-4\">\n <div className=\"relative flex rounded\">\n <img\n src={value.public_url}\n alt=\"Preview\"\n className=\"object-cover w-full h-24 rounded\"\n />\n <button\n type=\"button\"\n onClick={() => {\n if (!isLoading) {\n onChange(undefined)\n }\n }}\n className=\"absolute p-1 text-white bg-white rounded-full right-2 top-2 opacity-70 hover:opacity-100\"\n >\n <X size={16} className=\"stroke-danger\" />\n </button>\n {onToggleImageEditor && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.currentTarget.blur()\n onToggleImageEditor({\n imageUrl: value.public_url,\n index: -1,\n onReplaceImage,\n })\n }}\n className=\"absolute p-1 text-white bg-white rounded-full left-2 top-2 opacity-70 hover:opacity-100\"\n >\n <Pen size={16} className=\"stroke-danger\" />\n </button>\n )}\n </div>\n </div>\n )}\n </div>\n )\n}\n\nexport { SingleImagePicker }\n"],"names":["SingleImagePicker","id","onChange","value","accept","error","onAssetUpload","onToggleImageEditor","useFormValues","toast","useToast","isLoading","setIsLoading","useState","fileInputRef","useRef","handleImageSelect","e","file","data","onReplaceImage","handleClick","React","Spinner","Upload","Typography","X","Pen"],"mappings":";;;;;;;AAgBA,MAAMA,IAAgD,CAAC;AAAA,EACrD,IAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,OAAAC;AACF,MAAM;AACJ,QAAM,EAAE,eAAAC,GAAe,qBAAAC,EAAA,IAAwBC,EAAA,GACzC,EAAE,OAAAC,EAAA,IAAUC,EAAA,GAEZ,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1CC,IAAeC,EAAyB,IAAI,GAE5CC,IAAoB,CAACC,MAA2C;AACpE,UAAMC,IAAOD,EAAE,OAAO,QAAQ,CAAC;AAC/B,IAAI,CAACC,KAAQP,KACTL,MACFM,EAAa,EAAI,GACjBN,EAAcY,CAAI,EACf,KAAK,CAACC,MAAqB;AAC1B,MAAAjB,EAAS,EAAE,GAAGiB,GAAM,sBAAsBA,EAAK,aAAa,GAE5DV,EAAM;AAAA,QACJ,OAAO;AAAA,QACP,aAAa;AAAA,QACb,MAAM;AAAA,MAAA,CACP;AAAA,IACH,CAAC,EACA,MAAM,MAAM;AACX,MAAAP,EAAS,MAAS,GAClBO,EAAM;AAAA,QACJ,OAAO;AAAA,QACP,aAAa;AAAA,QACb,MAAM;AAAA,MAAA,CACP;AAAA,IACH,CAAC,EACA,QAAQ,MAAM;AACb,MAAAG,EAAa,EAAK,GAEdE,EAAa,YACfA,EAAa,QAAQ,QAAQ;AAAA,IAEjC,CAAC;AAAA,EAEP,GAEMM,IAAiB,CAACD,MAAqB;AAC3C,IAAAjB,EAAS;AAAA,MACP,GAAGiB;AAAA,MACH,sBAAsBhB,GAAO,wBAAwBA,GAAO;AAAA,IAAA,CAC7D;AAAA,EACH,GAEMkB,IAAc,MAAM;AACxB,IAAKV,KACHG,EAAa,SAAS,MAAA;AAAA,EAE1B;AAEA,SACEQ,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,WAAA,GACZX,qCACE,OAAA,EAAI,WAAU,gFAAA,GACbW,gBAAAA,EAAA,cAACC,GAAA,EAAQ,WAAU,0BAAyB,CAC9C,GAEFD,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,+EAAA,mCACZ,UAAA,EAAO,WAAU,UAAS,SAASD,EAAA,GAClCC,gBAAAA,EAAA,cAAC,SAAI,WAAU,+CAAA,GACbA,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,2BAAA,mCACZE,GAAA,EAAO,WAAU,wBAAA,CAAwB,CAC5C,GACAF,gBAAAA,EAAA,cAACG,KAAW,SAAQ,SAAQ,WAAU,gBAAA,GACnCd,IACG,iBACAR,IACE,kBACA,cACR,CACF,CACF,GACAmB,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKR;AAAA,MACL,IAAI,GAAGb,CAAE;AAAA,MACT,MAAK;AAAA,MACL,QAAAG;AAAA,MACA,UAAUO;AAAA,MACV,UAAUK;AAAA,MACV,WAAU;AAAA,IAAA;AAAA,EAAA,GAGXX,KACCiB,gBAAAA,EAAA,cAACG,KAAW,SAAQ,SAAQ,WAAU,qBAAA,GACnCpB,CACH,CAEJ,GACCF,qCACE,OAAA,EAAI,WAAU,+DACbmB,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,wBAAA,GACbA,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKnB,EAAM;AAAA,MACX,KAAI;AAAA,MACJ,WAAU;AAAA,IAAA;AAAA,EAAA,GAEZmB,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS,MAAM;AACb,QAAKX,KACHT,EAAS,MAAS;AAAA,MAEtB;AAAA,MACA,WAAU;AAAA,IAAA;AAAA,IAEVoB,gBAAAA,EAAA,cAACI,GAAA,EAAE,MAAM,IAAI,WAAU,gBAAA,CAAgB;AAAA,EAAA,GAExCnB,KACCe,gBAAAA,EAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS,CAACL,MAAM;AACd,QAAAA,EAAE,cAAc,KAAA,GAChBV,EAAoB;AAAA,UAClB,UAAUJ,EAAM;AAAA,UAChB,OAAO;AAAA,UACP,gBAAAiB;AAAA,QAAA,CACD;AAAA,MACH;AAAA,MACA,WAAU;AAAA,IAAA;AAAA,IAEVE,gBAAAA,EAAA,cAACK,GAAA,EAAI,MAAM,IAAI,WAAU,gBAAA,CAAgB;AAAA,EAAA,CAG/C,CACF,CAEJ;AAEJ;"}
@@ -1,37 +1,38 @@
1
- import { Typography as d } from "./index.es19.js";
2
- import { Spinner as y } from "./index.es64.js";
3
- import { Video as h, X as N } from "lucide-react";
4
- import e, { useState as x, useRef as m } from "react";
5
- import { useFormValues as k } from "./index.es161.js";
6
- import { useToast as w } from "./index.es87.js";
7
- const j = ({
1
+ import { Typography as d } from "./index19.es.js";
2
+ import e, { useState as y, useRef as m } from "react";
3
+ import "./index37.es.js";
4
+ import { useToast as h } from "./index89.es.js";
5
+ import { Spinner as N } from "./index66.es.js";
6
+ import { Video as x, X as k } from "lucide-react";
7
+ import { useFormValues as w } from "./index144.es.js";
8
+ const z = ({
8
9
  id: u,
9
10
  onChange: r,
10
11
  value: l,
11
12
  accept: p = "video/*",
12
13
  error: i
13
14
  }) => {
14
- const { onAssetUpload: c } = k(), { toast: s } = w(), [t, o] = x(!1), a = m(null), f = m(null), g = (v) => {
15
+ const { onAssetUpload: c } = w(), { toast: o } = h(), [t, s] = y(!1), a = m(null), f = m(null), g = (v) => {
15
16
  const n = v.target.files?.[0];
16
- !n || t || c && (o(!0), c(n).then((b) => {
17
- r(b), s({
17
+ !n || t || c && (s(!0), c(n).then((b) => {
18
+ r(b), o({
18
19
  title: "Alert!",
19
20
  description: "Video uploaded successfully.",
20
21
  icon: "success"
21
22
  });
22
23
  }).catch(() => {
23
- r(void 0), s({
24
+ r(void 0), o({
24
25
  title: "Alert!",
25
26
  description: "Error uploading video",
26
27
  icon: "warning"
27
28
  });
28
29
  }).finally(() => {
29
- o(!1), a.current && (a.current.value = "");
30
+ s(!1), a.current && (a.current.value = "");
30
31
  }));
31
32
  }, E = () => {
32
33
  t || a.current?.click();
33
34
  };
34
- return /* @__PURE__ */ e.createElement("div", { className: "relative" }, t && /* @__PURE__ */ e.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center bg-white bg-opacity-70" }, /* @__PURE__ */ e.createElement(y, { className: "w-8 h-8 text-primary-1" })), /* @__PURE__ */ e.createElement("div", { className: "relative p-8 border-2 border-dashed rounded-lg border-primary-1 bg-primary-1" }, /* @__PURE__ */ e.createElement("button", { className: "w-full", onClick: E }, /* @__PURE__ */ e.createElement("div", { className: "flex flex-col items-center gap-3 text-center" }, /* @__PURE__ */ e.createElement("div", { className: "bg-gray-100 rounded-full" }, /* @__PURE__ */ e.createElement(h, { className: "w-6 h-6 text-gray-500" })), /* @__PURE__ */ e.createElement(d, { variant: "body1", className: "text-gray-600" }, t ? "Uploading..." : l ? "Replace Video" : "Attach Video"))), /* @__PURE__ */ e.createElement(
35
+ return /* @__PURE__ */ e.createElement("div", { className: "relative" }, t && /* @__PURE__ */ e.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center bg-white bg-opacity-70" }, /* @__PURE__ */ e.createElement(N, { className: "w-8 h-8 text-primary-1" })), /* @__PURE__ */ e.createElement("div", { className: "relative p-8 border-2 border-dashed rounded-lg border-primary-1 bg-primary-1" }, /* @__PURE__ */ e.createElement("button", { className: "w-full", onClick: E }, /* @__PURE__ */ e.createElement("div", { className: "flex flex-col items-center gap-3 text-center" }, /* @__PURE__ */ e.createElement("div", { className: "bg-gray-100 rounded-full" }, /* @__PURE__ */ e.createElement(x, { className: "w-6 h-6 text-gray-500" })), /* @__PURE__ */ e.createElement(d, { variant: "body1", className: "text-gray-600" }, t ? "Uploading..." : l ? "Replace Video" : "Attach Video"))), /* @__PURE__ */ e.createElement(
35
36
  "input",
36
37
  {
37
38
  ref: a,
@@ -70,10 +71,10 @@ const j = ({
70
71
  },
71
72
  className: "absolute p-1 text-white bg-white rounded-full right-2 top-2 opacity-70 hover:opacity-100"
72
73
  },
73
- /* @__PURE__ */ e.createElement(N, { size: 16, className: "stroke-danger" })
74
+ /* @__PURE__ */ e.createElement(k, { size: 16, className: "stroke-danger" })
74
75
  ))));
75
76
  };
76
77
  export {
77
- j as SingleVideoPicker
78
+ z as SingleVideoPicker
78
79
  };
79
- //# sourceMappingURL=index.es179.js.map
80
+ //# sourceMappingURL=index181.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es179.js","sources":["../src/components/ui/form-renderer/components/form-fields/components/single-video-picker/index.tsx"],"sourcesContent":["import { Typography } from '@/components/atoms/typography'\nimport { useToast } from '@/components/molecules/toast'\nimport { Spinner } from '@/components/unstyled/spinner'\nimport { X, Video } from 'lucide-react'\nimport React, { useRef, useState } from 'react'\nimport { useFormValues } from '../../../../context/form-values'\nimport { AssetValue } from '../../../../form.types'\n\ninterface VideoPickerProps {\n id: string\n onChange: (data?: AssetValue) => void\n value?: AssetValue\n accept?: string\n error?: string\n}\n\nconst SingleVideoPicker: React.FC<VideoPickerProps> = ({\n id,\n onChange,\n value,\n accept = 'video/*',\n error,\n}) => {\n const { onAssetUpload } = useFormValues()\n const { toast } = useToast()\n\n const [isLoading, setIsLoading] = useState(false)\n const fileInputRef = useRef<HTMLInputElement>(null)\n const videoElRef = useRef<HTMLVideoElement>(null)\n\n const handleVideoSelect = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0]\n if (!file || isLoading) return\n if (onAssetUpload) {\n setIsLoading(true)\n onAssetUpload(file)\n .then((data: AssetValue) => {\n onChange(data)\n\n toast({\n title: 'Alert!',\n description: `Video uploaded successfully.`,\n icon: 'success',\n })\n })\n .catch(() => {\n onChange(undefined)\n toast({\n title: 'Alert!',\n description: `Error uploading video`,\n icon: 'warning',\n })\n })\n .finally(() => {\n setIsLoading(false)\n // Reset the file input so the same video can be selected again\n if (fileInputRef.current) {\n fileInputRef.current.value = ''\n }\n })\n }\n }\n\n const handleClick = () => {\n if (!isLoading) {\n fileInputRef.current?.click()\n }\n }\n\n return (\n <div className=\"relative\">\n {isLoading && (\n <div className=\"absolute inset-0 z-10 flex items-center justify-center bg-white bg-opacity-70\">\n <Spinner className=\"w-8 h-8 text-primary-1\" />\n </div>\n )}\n <div className=\"relative p-8 border-2 border-dashed rounded-lg border-primary-1 bg-primary-1\">\n <button className=\"w-full\" onClick={handleClick}>\n <div className=\"flex flex-col items-center gap-3 text-center\">\n <div className=\"bg-gray-100 rounded-full\">\n <Video className=\"w-6 h-6 text-gray-500\" />\n </div>\n <Typography variant=\"body1\" className=\"text-gray-600\">\n {isLoading\n ? 'Uploading...'\n : value\n ? 'Replace Video'\n : 'Attach Video'}\n </Typography>\n </div>\n </button>\n <input\n ref={fileInputRef}\n id={`${id}-gallery`}\n type=\"file\"\n accept={accept}\n disabled={isLoading}\n onChange={handleVideoSelect}\n className=\"hidden\"\n />\n\n {error && (\n <Typography variant=\"body1\" className=\"mt-1 text-danger-1\">\n {error}\n </Typography>\n )}\n </div>\n {value && (\n <div className=\"grid grid-cols-2 gap-4 mt-4 sm:grid-cols-2 md:grid-cols-2\">\n <div className=\"relative flex rounded\">\n <video\n ref={videoElRef}\n src={value.public_url}\n className=\"object-cover h-32 rounded\"\n controls={true}\n controlsList=\"nodownload\"\n preload=\"metadata\"\n >\n {/* Add caption track for accessibility */}\n <track\n kind=\"captions\"\n label=\"English captions\"\n srcLang=\"en\"\n src=\"\"\n default\n />\n </video>\n <button\n onClick={() => {\n if (!isLoading) {\n onChange(undefined)\n }\n }}\n className=\"absolute p-1 text-white bg-white rounded-full right-2 top-2 opacity-70 hover:opacity-100\"\n >\n <X size={16} className=\"stroke-danger\" />\n </button>\n </div>\n </div>\n )}\n </div>\n )\n}\n\nexport { SingleVideoPicker }\n"],"names":["SingleVideoPicker","id","onChange","value","accept","error","onAssetUpload","useFormValues","toast","useToast","isLoading","setIsLoading","useState","fileInputRef","useRef","videoElRef","handleVideoSelect","e","file","data","handleClick","React","Spinner","Video","Typography","X"],"mappings":"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"}
1
+ {"version":3,"file":"index181.es.js","sources":["../src/components/ui/form-renderer/components/form-fields/components/single-video-picker/index.tsx"],"sourcesContent":["import { Typography } from '@/components/atoms/typography'\nimport { useToast } from '@/components/molecules/toast'\nimport { Spinner } from '@/components/unstyled/spinner'\nimport { X, Video } from 'lucide-react'\nimport React, { useRef, useState } from 'react'\nimport { useFormValues } from '../../../../context/form-values'\nimport { AssetValue } from '../../../../form.types'\n\ninterface VideoPickerProps {\n id: string\n onChange: (data?: AssetValue) => void\n value?: AssetValue\n accept?: string\n error?: string\n}\n\nconst SingleVideoPicker: React.FC<VideoPickerProps> = ({\n id,\n onChange,\n value,\n accept = 'video/*',\n error,\n}) => {\n const { onAssetUpload } = useFormValues()\n const { toast } = useToast()\n\n const [isLoading, setIsLoading] = useState(false)\n const fileInputRef = useRef<HTMLInputElement>(null)\n const videoElRef = useRef<HTMLVideoElement>(null)\n\n const handleVideoSelect = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0]\n if (!file || isLoading) return\n if (onAssetUpload) {\n setIsLoading(true)\n onAssetUpload(file)\n .then((data: AssetValue) => {\n onChange(data)\n\n toast({\n title: 'Alert!',\n description: `Video uploaded successfully.`,\n icon: 'success',\n })\n })\n .catch(() => {\n onChange(undefined)\n toast({\n title: 'Alert!',\n description: `Error uploading video`,\n icon: 'warning',\n })\n })\n .finally(() => {\n setIsLoading(false)\n // Reset the file input so the same video can be selected again\n if (fileInputRef.current) {\n fileInputRef.current.value = ''\n }\n })\n }\n }\n\n const handleClick = () => {\n if (!isLoading) {\n fileInputRef.current?.click()\n }\n }\n\n return (\n <div className=\"relative\">\n {isLoading && (\n <div className=\"absolute inset-0 z-10 flex items-center justify-center bg-white bg-opacity-70\">\n <Spinner className=\"w-8 h-8 text-primary-1\" />\n </div>\n )}\n <div className=\"relative p-8 border-2 border-dashed rounded-lg border-primary-1 bg-primary-1\">\n <button className=\"w-full\" onClick={handleClick}>\n <div className=\"flex flex-col items-center gap-3 text-center\">\n <div className=\"bg-gray-100 rounded-full\">\n <Video className=\"w-6 h-6 text-gray-500\" />\n </div>\n <Typography variant=\"body1\" className=\"text-gray-600\">\n {isLoading\n ? 'Uploading...'\n : value\n ? 'Replace Video'\n : 'Attach Video'}\n </Typography>\n </div>\n </button>\n <input\n ref={fileInputRef}\n id={`${id}-gallery`}\n type=\"file\"\n accept={accept}\n disabled={isLoading}\n onChange={handleVideoSelect}\n className=\"hidden\"\n />\n\n {error && (\n <Typography variant=\"body1\" className=\"mt-1 text-danger-1\">\n {error}\n </Typography>\n )}\n </div>\n {value && (\n <div className=\"grid grid-cols-2 gap-4 mt-4 sm:grid-cols-2 md:grid-cols-2\">\n <div className=\"relative flex rounded\">\n <video\n ref={videoElRef}\n src={value.public_url}\n className=\"object-cover h-32 rounded\"\n controls={true}\n controlsList=\"nodownload\"\n preload=\"metadata\"\n >\n {/* Add caption track for accessibility */}\n <track\n kind=\"captions\"\n label=\"English captions\"\n srcLang=\"en\"\n src=\"\"\n default\n />\n </video>\n <button\n onClick={() => {\n if (!isLoading) {\n onChange(undefined)\n }\n }}\n className=\"absolute p-1 text-white bg-white rounded-full right-2 top-2 opacity-70 hover:opacity-100\"\n >\n <X size={16} className=\"stroke-danger\" />\n </button>\n </div>\n </div>\n )}\n </div>\n )\n}\n\nexport { SingleVideoPicker }\n"],"names":["SingleVideoPicker","id","onChange","value","accept","error","onAssetUpload","useFormValues","toast","useToast","isLoading","setIsLoading","useState","fileInputRef","useRef","videoElRef","handleVideoSelect","e","file","data","handleClick","React","Spinner","Video","Typography","X"],"mappings":"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"}
@@ -1,24 +1,25 @@
1
- import { Typography as m } from "./index.es19.js";
2
- import { Spinner as v } from "./index.es64.js";
3
- import { Upload as A, X as $, Pen as x } from "lucide-react";
4
- import e, { useState as M, useRef as P } from "react";
5
- import { useFormValues as R } from "./index.es161.js";
6
- import { useToast as T } from "./index.es87.js";
7
- const L = ({
1
+ import { Typography as m } from "./index19.es.js";
2
+ import e, { useState as v, useRef as A } from "react";
3
+ import "./index37.es.js";
4
+ import { useToast as $ } from "./index89.es.js";
5
+ import { Spinner as x } from "./index66.es.js";
6
+ import { Upload as M, X as P, Pen as R } from "lucide-react";
7
+ import { useFormValues as T } from "./index144.es.js";
8
+ const V = ({
8
9
  id: f,
9
10
  onChange: o,
10
- value: l = [],
11
+ value: r = [],
11
12
  accept: h = "image/*",
12
13
  error: d,
13
- maxImages: r = 20
14
+ maxImages: l = 20
14
15
  }) => {
15
- const { onAssetUpload: g, onToggleImageEditor: p } = R(), { toast: s } = T(), [a, u] = M(!1), c = P(null), y = async (i) => {
16
+ const { onAssetUpload: g, onToggleImageEditor: p } = T(), { toast: s } = $(), [a, u] = v(!1), c = A(null), y = async (i) => {
16
17
  const t = i.target.files;
17
18
  if (!(!t?.length || a)) {
18
- if (l.length + t.length > r) {
19
+ if (r.length + t.length > l) {
19
20
  s({
20
21
  title: "Alert!",
21
- description: `Maximum ${r} images allowed.`,
22
+ description: `Maximum ${l} images allowed.`,
22
23
  icon: "warning"
23
24
  });
24
25
  return;
@@ -27,7 +28,7 @@ const L = ({
27
28
  u(!0);
28
29
  try {
29
30
  const n = Array.from(t).map((k) => g(k)), w = await Promise.all(n);
30
- o([...l, ...w]), s({
31
+ o([...r, ...w]), s({
31
32
  title: "Alert!",
32
33
  description: `${t.length} ${t.length === 1 ? "image" : "images"} uploaded successfully.`,
33
34
  icon: "success"
@@ -44,30 +45,30 @@ const L = ({
44
45
  }
45
46
  }
46
47
  }, b = () => {
47
- !a && l.length < r ? c.current?.click() : l.length >= r && s({
48
+ !a && r.length < l ? c.current?.click() : r.length >= l && s({
48
49
  title: "Alert!",
49
- description: `Maximum ${r} images allowed.`,
50
+ description: `Maximum ${l} images allowed.`,
50
51
  icon: "warning"
51
52
  });
52
53
  }, E = (i) => {
53
54
  if (!a) {
54
- const t = [...l];
55
+ const t = [...r];
55
56
  t.splice(i, 1), o(t);
56
57
  }
57
58
  };
58
59
  function N(i, t) {
59
- const n = [...l];
60
+ const n = [...r];
60
61
  n.splice(t, 1, i), o(n);
61
62
  }
62
- return /* @__PURE__ */ e.createElement("div", { className: "relative" }, a && /* @__PURE__ */ e.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center bg-white bg-opacity-70" }, /* @__PURE__ */ e.createElement(v, { className: "w-8 h-8 text-primary-1" })), /* @__PURE__ */ e.createElement("div", { className: "relative p-8 border-2 border-dashed rounded-lg border-primary-1 bg-primary-1" }, /* @__PURE__ */ e.createElement(
63
+ return /* @__PURE__ */ e.createElement("div", { className: "relative" }, a && /* @__PURE__ */ e.createElement("div", { className: "absolute inset-0 z-10 flex items-center justify-center bg-white bg-opacity-70" }, /* @__PURE__ */ e.createElement(x, { className: "w-8 h-8 text-primary-1" })), /* @__PURE__ */ e.createElement("div", { className: "relative p-8 border-2 border-dashed rounded-lg border-primary-1 bg-primary-1" }, /* @__PURE__ */ e.createElement(
63
64
  "button",
64
65
  {
65
66
  className: "w-full",
66
67
  onClick: b,
67
68
  type: "button",
68
- disabled: a || l.length >= r
69
+ disabled: a || r.length >= l
69
70
  },
70
- /* @__PURE__ */ e.createElement("div", { className: "flex flex-col items-center gap-3 text-center" }, /* @__PURE__ */ e.createElement("div", { className: "bg-gray-100 rounded-full" }, /* @__PURE__ */ e.createElement(A, { className: "w-6 h-6 text-gray-500" })), /* @__PURE__ */ e.createElement(m, { variant: "body1", className: "text-gray-600" }, a ? "Uploading..." : l.length >= r ? `Maximum ${r} images reached` : "Add Images"), l.length > 0 && /* @__PURE__ */ e.createElement(m, { variant: "body1", className: "text-gray-500" }, l.length, " of ", r, " images"))
71
+ /* @__PURE__ */ e.createElement("div", { className: "flex flex-col items-center gap-3 text-center" }, /* @__PURE__ */ e.createElement("div", { className: "bg-gray-100 rounded-full" }, /* @__PURE__ */ e.createElement(M, { className: "w-6 h-6 text-gray-500" })), /* @__PURE__ */ e.createElement(m, { variant: "body1", className: "text-gray-600" }, a ? "Uploading..." : r.length >= l ? `Maximum ${l} images reached` : "Add Images"), r.length > 0 && /* @__PURE__ */ e.createElement(m, { variant: "body1", className: "text-gray-500" }, r.length, " of ", l, " images"))
71
72
  ), /* @__PURE__ */ e.createElement(
72
73
  "input",
73
74
  {
@@ -75,12 +76,12 @@ const L = ({
75
76
  id: `${f}-gallery`,
76
77
  type: "file",
77
78
  accept: h,
78
- disabled: a || l.length >= r,
79
+ disabled: a || r.length >= l,
79
80
  onChange: y,
80
81
  className: "hidden",
81
82
  multiple: !0
82
83
  }
83
- ), d && /* @__PURE__ */ e.createElement(m, { variant: "body1", className: "mt-1 text-danger-1" }, d)), l.length > 0 && /* @__PURE__ */ e.createElement("div", { className: "grid grid-cols-2 gap-4 mt-4 sm:grid-cols-3 md:grid-cols-4" }, l.map((i, t) => /* @__PURE__ */ e.createElement("div", { key: t, className: "relative flex rounded" }, /* @__PURE__ */ e.createElement(
84
+ ), d && /* @__PURE__ */ e.createElement(m, { variant: "body1", className: "mt-1 text-danger-1" }, d)), r.length > 0 && /* @__PURE__ */ e.createElement("div", { className: "grid grid-cols-2 gap-4 mt-4 sm:grid-cols-3 md:grid-cols-4" }, r.map((i, t) => /* @__PURE__ */ e.createElement("div", { key: t, className: "relative flex rounded" }, /* @__PURE__ */ e.createElement(
84
85
  "img",
85
86
  {
86
87
  src: i.public_url,
@@ -95,7 +96,7 @@ const L = ({
95
96
  type: "button",
96
97
  disabled: a
97
98
  },
98
- /* @__PURE__ */ e.createElement($, { size: 16, className: "stroke-danger" })
99
+ /* @__PURE__ */ e.createElement(P, { size: 16, className: "stroke-danger" })
99
100
  ), p && /* @__PURE__ */ e.createElement(
100
101
  "button",
101
102
  {
@@ -109,10 +110,10 @@ const L = ({
109
110
  },
110
111
  className: "absolute p-1 text-white bg-white rounded-full left-2 top-2 opacity-70 hover:opacity-100"
111
112
  },
112
- /* @__PURE__ */ e.createElement(x, { size: 16, className: "stroke-danger" })
113
+ /* @__PURE__ */ e.createElement(R, { size: 16, className: "stroke-danger" })
113
114
  )))));
114
115
  };
115
116
  export {
116
- L as MultiImagePicker
117
+ V as MultiImagePicker
117
118
  };
118
- //# sourceMappingURL=index.es180.js.map
119
+ //# sourceMappingURL=index182.es.js.map