geoiq-frontend-ui-kit 2.0.2 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/dist/components/organisms/image-editor/components/line-session-bar.d.ts +20 -0
  2. package/dist/components/organisms/image-editor/components/line-session-bar.d.ts.map +1 -0
  3. package/dist/components/organisms/image-editor/components/panel-insert.d.ts.map +1 -1
  4. package/dist/components/organisms/image-editor/components/panel-selected.d.ts.map +1 -1
  5. package/dist/components/organisms/image-editor/components/panel.d.ts.map +1 -1
  6. package/dist/components/organisms/image-editor/components/saved-layers-list.d.ts +9 -0
  7. package/dist/components/organisms/image-editor/components/saved-layers-list.d.ts.map +1 -0
  8. package/dist/components/organisms/image-editor/image-editor-modal.d.ts.map +1 -1
  9. package/dist/components/organisms/image-editor/image-editor.types.d.ts +73 -0
  10. package/dist/components/organisms/image-editor/image-editor.types.d.ts.map +1 -1
  11. package/dist/components/organisms/image-editor/use-image-editor.d.ts.map +1 -1
  12. package/dist/components/ui/request-credits-view/component/request-credit-dialog.d.ts.map +1 -1
  13. package/dist/index.es100.js +147 -120
  14. package/dist/index.es100.js.map +1 -1
  15. package/dist/index.es101.js +16 -11
  16. package/dist/index.es101.js.map +1 -1
  17. package/dist/index.es102.js +7 -41
  18. package/dist/index.es102.js.map +1 -1
  19. package/dist/index.es103.js +21 -10
  20. package/dist/index.es103.js.map +1 -1
  21. package/dist/index.es104.js +7 -74
  22. package/dist/index.es104.js.map +1 -1
  23. package/dist/index.es105.js +177 -30
  24. package/dist/index.es105.js.map +1 -1
  25. package/dist/index.es106.js +45 -16
  26. package/dist/index.es106.js.map +1 -1
  27. package/dist/index.es107.js +42 -20
  28. package/dist/index.es107.js.map +1 -1
  29. package/dist/index.es108.js +22 -12
  30. package/dist/index.es108.js.map +1 -1
  31. package/dist/index.es109.js +122 -98
  32. package/dist/index.es109.js.map +1 -1
  33. package/dist/index.es11.js +1 -1
  34. package/dist/index.es110.js +33 -62
  35. package/dist/index.es110.js.map +1 -1
  36. package/dist/index.es111.js +60 -52
  37. package/dist/index.es111.js.map +1 -1
  38. package/dist/index.es112.js +10 -41
  39. package/dist/index.es112.js.map +1 -1
  40. package/dist/index.es113.js +21 -11
  41. package/dist/index.es113.js.map +1 -1
  42. package/dist/index.es114.js +42 -92
  43. package/dist/index.es114.js.map +1 -1
  44. package/dist/index.es115.js +37 -16
  45. package/dist/index.es115.js.map +1 -1
  46. package/dist/index.es116.js +12 -99
  47. package/dist/index.es116.js.map +1 -1
  48. package/dist/index.es117.js +92 -13
  49. package/dist/index.es117.js.map +1 -1
  50. package/dist/index.es118.js +13 -101
  51. package/dist/index.es118.js.map +1 -1
  52. package/dist/index.es119.js +71 -20
  53. package/dist/index.es119.js.map +1 -1
  54. package/dist/index.es12.js +1 -1
  55. package/dist/index.es120.js +34 -25
  56. package/dist/index.es120.js.map +1 -1
  57. package/dist/index.es121.js +20 -22
  58. package/dist/index.es121.js.map +1 -1
  59. package/dist/index.es122.js +16 -45
  60. package/dist/index.es122.js.map +1 -1
  61. package/dist/index.es123.js +11 -34
  62. package/dist/index.es123.js.map +1 -1
  63. package/dist/index.es124.js +96 -61
  64. package/dist/index.es124.js.map +1 -1
  65. package/dist/index.es125.js +57 -174
  66. package/dist/index.es125.js.map +1 -1
  67. package/dist/index.es126.js +50 -17
  68. package/dist/index.es126.js.map +1 -1
  69. package/dist/index.es127.js +2 -2
  70. package/dist/index.es128.js +2 -2
  71. package/dist/index.es129.js +1 -1
  72. package/dist/index.es130.js +1 -1
  73. package/dist/index.es131.js +2 -2
  74. package/dist/index.es132.js +35 -38
  75. package/dist/index.es132.js.map +1 -1
  76. package/dist/index.es133.js +41 -7
  77. package/dist/index.es133.js.map +1 -1
  78. package/dist/index.es134.js +88 -7
  79. package/dist/index.es134.js.map +1 -1
  80. package/dist/index.es135.js +14 -34
  81. package/dist/index.es135.js.map +1 -1
  82. package/dist/index.es136.js +269 -35
  83. package/dist/index.es136.js.map +1 -1
  84. package/dist/index.es137.js +7 -2
  85. package/dist/index.es137.js.map +1 -1
  86. package/dist/index.es138.js +23 -25
  87. package/dist/index.es138.js.map +1 -1
  88. package/dist/index.es139.js +169 -15
  89. package/dist/index.es139.js.map +1 -1
  90. package/dist/index.es140.js +82 -7
  91. package/dist/index.es140.js.map +1 -1
  92. package/dist/index.es141.js +73 -21
  93. package/dist/index.es141.js.map +1 -1
  94. package/dist/index.es142.js +3 -168
  95. package/dist/index.es142.js.map +1 -1
  96. package/dist/index.es143.js +56 -82
  97. package/dist/index.es143.js.map +1 -1
  98. package/dist/index.es144.js +119 -4
  99. package/dist/index.es144.js.map +1 -1
  100. package/dist/index.es145.js +405 -56
  101. package/dist/index.es145.js.map +1 -1
  102. package/dist/index.es146.js +25 -110
  103. package/dist/index.es146.js.map +1 -1
  104. package/dist/index.es147.js +60 -314
  105. package/dist/index.es147.js.map +1 -1
  106. package/dist/index.es148.js +29 -24
  107. package/dist/index.es148.js.map +1 -1
  108. package/dist/index.es149.js +21 -64
  109. package/dist/index.es149.js.map +1 -1
  110. package/dist/index.es150.js +36 -30
  111. package/dist/index.es150.js.map +1 -1
  112. package/dist/index.es151.js +211 -24
  113. package/dist/index.es151.js.map +1 -1
  114. package/dist/index.es152.js +141 -35
  115. package/dist/index.es152.js.map +1 -1
  116. package/dist/index.es153.js +141 -140
  117. package/dist/index.es153.js.map +1 -1
  118. package/dist/index.es154.js +45 -142
  119. package/dist/index.es154.js.map +1 -1
  120. package/dist/index.es155.js +353 -45
  121. package/dist/index.es155.js.map +1 -1
  122. package/dist/index.es156.js +14 -10
  123. package/dist/index.es156.js.map +1 -1
  124. package/dist/index.es157.js +10 -42
  125. package/dist/index.es157.js.map +1 -1
  126. package/dist/index.es158.js +44 -5
  127. package/dist/index.es158.js.map +1 -1
  128. package/dist/index.es159.js +5 -11
  129. package/dist/index.es159.js.map +1 -1
  130. package/dist/index.es16.js +1 -1
  131. package/dist/index.es160.js +10 -10
  132. package/dist/index.es160.js.map +1 -1
  133. package/dist/index.es161.js +11 -2
  134. package/dist/index.es161.js.map +1 -1
  135. package/dist/index.es162.js +2 -91
  136. package/dist/index.es162.js.map +1 -1
  137. package/dist/index.es163.js +2 -213
  138. package/dist/index.es163.js.map +1 -1
  139. package/dist/index.es164.js +23 -52
  140. package/dist/index.es164.js.map +1 -1
  141. package/dist/index.es165.js +88 -33
  142. package/dist/index.es165.js.map +1 -1
  143. package/dist/index.es166.js +52 -31
  144. package/dist/index.es166.js.map +1 -1
  145. package/dist/index.es167.js +32 -29
  146. package/dist/index.es167.js.map +1 -1
  147. package/dist/index.es168.js +26 -84
  148. package/dist/index.es168.js.map +1 -1
  149. package/dist/index.es169.js +27 -111
  150. package/dist/index.es169.js.map +1 -1
  151. package/dist/index.es170.js +97 -285
  152. package/dist/index.es170.js.map +1 -1
  153. package/dist/index.es171.js +251 -30
  154. package/dist/index.es171.js.map +1 -1
  155. package/dist/index.es172.js +63 -11
  156. package/dist/index.es172.js.map +1 -1
  157. package/dist/index.es173.js +284 -82
  158. package/dist/index.es173.js.map +1 -1
  159. package/dist/index.es174.js +29 -70
  160. package/dist/index.es174.js.map +1 -1
  161. package/dist/index.es175.js +10 -114
  162. package/dist/index.es175.js.map +1 -1
  163. package/dist/index.es176.js +23 -106
  164. package/dist/index.es176.js.map +1 -1
  165. package/dist/index.es177.js +19 -82
  166. package/dist/index.es177.js.map +1 -1
  167. package/dist/index.es178.js +63 -109
  168. package/dist/index.es178.js.map +1 -1
  169. package/dist/index.es179.js +63 -117
  170. package/dist/index.es179.js.map +1 -1
  171. package/dist/index.es180.js +112 -23
  172. package/dist/index.es180.js.map +1 -1
  173. package/dist/index.es181.js +103 -18
  174. package/dist/index.es181.js.map +1 -1
  175. package/dist/index.es182.js +86 -5
  176. package/dist/index.es182.js.map +1 -1
  177. package/dist/index.es183.js +133 -0
  178. package/dist/index.es183.js.map +1 -0
  179. package/dist/index.es184.js +133 -0
  180. package/dist/index.es184.js.map +1 -0
  181. package/dist/index.es185.js +9 -0
  182. package/dist/index.es185.js.map +1 -0
  183. package/dist/index.es19.js +1 -1
  184. package/dist/index.es2.js +21 -21
  185. package/dist/index.es2.js.map +1 -1
  186. package/dist/index.es20.js +1 -1
  187. package/dist/index.es21.js +3 -3
  188. package/dist/index.es22.js +1 -1
  189. package/dist/index.es25.js +1 -1
  190. package/dist/index.es27.js +1 -1
  191. package/dist/index.es28.js +2 -2
  192. package/dist/index.es30.js +1 -1
  193. package/dist/index.es32.js +1 -1
  194. package/dist/index.es33.js +1 -1
  195. package/dist/index.es45.js +48 -46
  196. package/dist/index.es45.js.map +1 -1
  197. package/dist/index.es46.js +2 -2
  198. package/dist/index.es47.js +1 -1
  199. package/dist/index.es48.js +1 -1
  200. package/dist/index.es53.js +1 -1
  201. package/dist/index.es54.js +1 -1
  202. package/dist/index.es57.js +1 -1
  203. package/dist/index.es59.js +1 -1
  204. package/dist/index.es67.js +2 -2
  205. package/dist/index.es68.js +1 -1
  206. package/dist/index.es71.js +1 -1
  207. package/dist/index.es72.js +7 -7
  208. package/dist/index.es73.js +2 -2
  209. package/dist/index.es85.js +1 -1
  210. package/dist/index.es97.js +16 -11
  211. package/dist/index.es97.js.map +1 -1
  212. package/dist/index.es98.js +89 -262
  213. package/dist/index.es98.js.map +1 -1
  214. package/dist/index.es99.js +13 -87
  215. package/dist/index.es99.js.map +1 -1
  216. package/dist/styles.css +55 -0
  217. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.es157.js","sources":["../src/components/unstyled/otp-input/otp-input.styles.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nexport const OTPInputVariants = cva(\n `relative flex h-12 w-11 items-center justify-center border-y border-r border-input text-light-1 transition-all\n first:rounded-l-md first:border-l last:rounded-r-md`,\n {\n variants: {\n isError: {\n true: '',\n false: '',\n },\n isFocused: {\n true: '',\n false: '',\n },\n },\n defaultVariants: {\n isError: false,\n isFocused: false,\n },\n compoundVariants: [\n {\n isError: true,\n isFocused: true,\n className: 'border-danger-2 ring-4 ring-danger-1',\n },\n {\n isError: false,\n isFocused: true,\n className: 'border-primary-2 ring-4 ring-primary-1',\n },\n {\n isError: true,\n isFocused: false,\n className: 'border-danger-2',\n },\n {\n isError: false,\n isFocused: false,\n className: 'border-neutral-2',\n },\n ],\n }\n)\n"],"names":["OTPInputVariants","cva"],"mappings":";AAEO,MAAMA,IAAmBC;AAAA,EAC9B;AAAA;AAAA,EAEA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,MAET,WAAW;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,WAAW;AAAA,IAAA;AAAA,IAEb,kBAAkB;AAAA,MAChB;AAAA,QACE,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW;AAAA,MAAA;AAAA,MAEb;AAAA,QACE,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW;AAAA,MAAA;AAAA,MAEb;AAAA,QACE,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW;AAAA,MAAA;AAAA,MAEb;AAAA,QACE,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW;AAAA,MAAA;AAAA,IACb;AAAA,EACF;AAEJ;"}
1
+ {"version":3,"file":"index.es157.js","sources":["../src/components/ui/map-marker-hover-card/map-marker-hover-card.styles.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nexport const hoverDetailCardStyles = {\n img: cva('', {\n variants: {\n hasIcon: {\n true: 'w-12 h-12',\n false: 'h-5 w-5',\n },\n },\n }),\n}\n"],"names":["hoverDetailCardStyles","cva"],"mappings":";AAEO,MAAMA,IAAwB;AAAA,EACnC,KAAKC,EAAI,IAAI;AAAA,IACX,UAAU;AAAA,MACR,SAAS;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EACF,CACD;AACH;"}
@@ -1,8 +1,47 @@
1
- import e from "react";
2
- import { FormField as m } from "./index.es170.js";
3
- import { Typography as r } from "./index.es19.js";
4
- const i = ({ section: t }) => /* @__PURE__ */ e.createElement("div", { className: "form-section" }, /* @__PURE__ */ e.createElement("section", { className: "flex flex-col gap-3" }, /* @__PURE__ */ e.createElement(r, { variant: "h3", className: "text-light-2" }, t.name), t.fields.map((a) => /* @__PURE__ */ e.createElement(m, { key: a.id, field: a }))));
1
+ import { cva as r } from "class-variance-authority";
2
+ const s = r(
3
+ `relative flex h-12 w-11 items-center justify-center border-y border-r border-input text-light-1 transition-all
4
+ first:rounded-l-md first:border-l last:rounded-r-md`,
5
+ {
6
+ variants: {
7
+ isError: {
8
+ true: "",
9
+ false: ""
10
+ },
11
+ isFocused: {
12
+ true: "",
13
+ false: ""
14
+ }
15
+ },
16
+ defaultVariants: {
17
+ isError: !1,
18
+ isFocused: !1
19
+ },
20
+ compoundVariants: [
21
+ {
22
+ isError: !0,
23
+ isFocused: !0,
24
+ className: "border-danger-2 ring-4 ring-danger-1"
25
+ },
26
+ {
27
+ isError: !1,
28
+ isFocused: !0,
29
+ className: "border-primary-2 ring-4 ring-primary-1"
30
+ },
31
+ {
32
+ isError: !0,
33
+ isFocused: !1,
34
+ className: "border-danger-2"
35
+ },
36
+ {
37
+ isError: !1,
38
+ isFocused: !1,
39
+ className: "border-neutral-2"
40
+ }
41
+ ]
42
+ }
43
+ );
5
44
  export {
6
- i as FormSection
45
+ s as OTPInputVariants
7
46
  };
8
47
  //# sourceMappingURL=index.es158.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es158.js","sources":["../src/components/ui/form-renderer/components/form-section.tsx"],"sourcesContent":["// components/FormSection.tsx\nimport React from 'react'\nimport { FormSection as FormSectionType } from '../form.types'\nimport { FormField } from './form-fields'\nimport { Typography } from '@/components/atoms/typography'\ninterface FormSectionProps {\n section: FormSectionType\n}\n\nexport const FormSection: React.FC<FormSectionProps> = ({ section }) => {\n return (\n <div className=\"form-section\">\n <section className=\"flex flex-col gap-3\">\n <Typography variant=\"h3\" className=\"text-light-2\">\n {section.name}\n </Typography>\n {section.fields.map((field) => (\n <FormField key={field.id} field={field} />\n ))}\n </section>\n </div>\n )\n}\n"],"names":["FormSection","section","React","Typography","field","FormField"],"mappings":";;;AASO,MAAMA,IAA0C,CAAC,EAAE,SAAAC,QAEtDC,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,eAAA,GACbA,gBAAAA,EAAA,cAAC,WAAA,EAAQ,WAAU,yBACjBA,gBAAAA,EAAA,cAACC,GAAA,EAAW,SAAQ,MAAK,WAAU,eAAA,GAChCF,EAAQ,IACX,GACCA,EAAQ,OAAO,IAAI,CAACG,MACnBF,gBAAAA,EAAA,cAACG,GAAA,EAAU,KAAKD,EAAM,IAAI,OAAAA,EAAA,CAAc,CACzC,CACH,CACF;"}
1
+ {"version":3,"file":"index.es158.js","sources":["../src/components/unstyled/otp-input/otp-input.styles.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nexport const OTPInputVariants = cva(\n `relative flex h-12 w-11 items-center justify-center border-y border-r border-input text-light-1 transition-all\n first:rounded-l-md first:border-l last:rounded-r-md`,\n {\n variants: {\n isError: {\n true: '',\n false: '',\n },\n isFocused: {\n true: '',\n false: '',\n },\n },\n defaultVariants: {\n isError: false,\n isFocused: false,\n },\n compoundVariants: [\n {\n isError: true,\n isFocused: true,\n className: 'border-danger-2 ring-4 ring-danger-1',\n },\n {\n isError: false,\n isFocused: true,\n className: 'border-primary-2 ring-4 ring-primary-1',\n },\n {\n isError: true,\n isFocused: false,\n className: 'border-danger-2',\n },\n {\n isError: false,\n isFocused: false,\n className: 'border-neutral-2',\n },\n ],\n }\n)\n"],"names":["OTPInputVariants","cva"],"mappings":";AAEO,MAAMA,IAAmBC;AAAA,EAC9B;AAAA;AAAA,EAEA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,MAET,WAAW;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,WAAW;AAAA,IAAA;AAAA,IAEb,kBAAkB;AAAA,MAChB;AAAA,QACE,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW;AAAA,MAAA;AAAA,MAEb;AAAA,QACE,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW;AAAA,MAAA;AAAA,MAEb;AAAA,QACE,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW;AAAA,MAAA;AAAA,MAEb;AAAA,QACE,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW;AAAA,MAAA;AAAA,IACb;AAAA,EACF;AAEJ;"}
@@ -1,14 +1,8 @@
1
- import { createContext as r, useContext as e } from "react";
2
- const o = r(null), n = () => {
3
- const t = e(o);
4
- if (!t)
5
- throw new Error(
6
- "useFormStructure must be used within a FormStructureProvider"
7
- );
8
- return t;
9
- };
1
+ import e from "react";
2
+ import { FormField as m } from "./index.es173.js";
3
+ import { Typography as r } from "./index.es19.js";
4
+ const i = ({ section: t }) => /* @__PURE__ */ e.createElement("div", { className: "form-section" }, /* @__PURE__ */ e.createElement("section", { className: "flex flex-col gap-3" }, /* @__PURE__ */ e.createElement(r, { variant: "h3", className: "text-light-2" }, t.name), t.fields.map((a) => /* @__PURE__ */ e.createElement(m, { key: a.id, field: a }))));
10
5
  export {
11
- o as FormStructureContext,
12
- n as useFormStructure
6
+ i as FormSection
13
7
  };
14
8
  //# sourceMappingURL=index.es159.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es159.js","sources":["../src/components/ui/form-renderer/context/form-structure/form-structure.context.ts"],"sourcesContent":["// contexts/FormStructureContext.tsx\nimport { createContext, useContext } from 'react'\nimport { FormStructure, FormStep } from '../../form.types'\n\ninterface FormStructureContextType {\n structure: FormStructure\n currentStepIndex: number\n currentStep: FormStep\n goToNextStep: () => void\n goToPreviousStep: () => void\n goToStep: (stepIndex: number) => void\n isFirstStep: boolean\n isLastStep: boolean\n totalSteps: number\n}\n\nexport const FormStructureContext =\n createContext<FormStructureContextType | null>(null)\n\nexport const useFormStructure = () => {\n const context = useContext(FormStructureContext)\n if (!context) {\n throw new Error(\n 'useFormStructure must be used within a FormStructureProvider'\n )\n }\n return context\n}\n"],"names":["FormStructureContext","createContext","useFormStructure","context","useContext"],"mappings":";AAgBO,MAAMA,IACXC,EAA+C,IAAI,GAExCC,IAAmB,MAAM;AACpC,QAAMC,IAAUC,EAAWJ,CAAoB;AAC/C,MAAI,CAACG;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAGJ,SAAOA;AACT;"}
1
+ {"version":3,"file":"index.es159.js","sources":["../src/components/ui/form-renderer/components/form-section.tsx"],"sourcesContent":["// components/FormSection.tsx\nimport React from 'react'\nimport { FormSection as FormSectionType } from '../form.types'\nimport { FormField } from './form-fields'\nimport { Typography } from '@/components/atoms/typography'\ninterface FormSectionProps {\n section: FormSectionType\n}\n\nexport const FormSection: React.FC<FormSectionProps> = ({ section }) => {\n return (\n <div className=\"form-section\">\n <section className=\"flex flex-col gap-3\">\n <Typography variant=\"h3\" className=\"text-light-2\">\n {section.name}\n </Typography>\n {section.fields.map((field) => (\n <FormField key={field.id} field={field} />\n ))}\n </section>\n </div>\n )\n}\n"],"names":["FormSection","section","React","Typography","field","FormField"],"mappings":";;;AASO,MAAMA,IAA0C,CAAC,EAAE,SAAAC,QAEtDC,gBAAAA,EAAA,cAAC,OAAA,EAAI,WAAU,eAAA,GACbA,gBAAAA,EAAA,cAAC,WAAA,EAAQ,WAAU,yBACjBA,gBAAAA,EAAA,cAACC,GAAA,EAAW,SAAQ,MAAK,WAAU,eAAA,GAChCF,EAAQ,IACX,GACCA,EAAQ,OAAO,IAAI,CAACG,MACnBF,gBAAAA,EAAA,cAACG,GAAA,EAAU,KAAKD,EAAM,IAAI,OAAAA,EAAA,CAAc,CACzC,CACH,CACF;"}
@@ -6,7 +6,7 @@ import "./index.es60.js";
6
6
  import "./index.es90.js";
7
7
  import "./index.es29.js";
8
8
  import "./index.es35.js";
9
- import { TextAreaVariants as m } from "./index.es126.js";
9
+ import { TextAreaVariants as m } from "./index.es101.js";
10
10
  const g = e.forwardRef(
11
11
  ({ className: o, inputLabel: i, showTextCount: l, maximumTextCount: a, id: d, ...t }, f) => {
12
12
  const [r, s] = e.useState(!1), c = e.useRef(null);
@@ -1,14 +1,14 @@
1
- import { createContext as t, useContext as o } from "react";
2
- const r = t(
3
- null
4
- ), n = () => {
5
- const e = o(r);
6
- if (!e)
7
- throw new Error("useFormValues must be used within a FormValuesProvider");
8
- return e;
1
+ import { createContext as r, useContext as e } from "react";
2
+ const o = r(null), n = () => {
3
+ const t = e(o);
4
+ if (!t)
5
+ throw new Error(
6
+ "useFormStructure must be used within a FormStructureProvider"
7
+ );
8
+ return t;
9
9
  };
10
10
  export {
11
- r as FormValuesContext,
12
- n as useFormValues
11
+ o as FormStructureContext,
12
+ n as useFormStructure
13
13
  };
14
14
  //# sourceMappingURL=index.es160.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es160.js","sources":["../src/components/ui/form-renderer/context/form-values/form-values.context.ts"],"sourcesContent":["// contexts/FormValuesContext.tsx\nimport { createContext, useContext } from 'react'\nimport {\n AssetValue,\n FormField,\n FormFieldValue,\n FormStep,\n FormValues,\n onToggleImageEditor,\n} from '../../form.types'\n\ninterface FormValuesContextType {\n values: FormValues\n errors: Record<string, string>\n setValue: (fieldId: string, value: FormFieldValue) => void\n setFormValues: (formValues: FormValues) => void\n validateField: (field: FormField) => {\n isValid: boolean\n errorMessage: string\n }\n validateStep: (step: FormStep) => {\n isStepValid: boolean\n errors: Record<string, string>\n }\n submitForm: () => void\n onAssetUpload?: (file: File) => Promise<AssetValue>\n onToggleImageEditor?: onToggleImageEditor\n /** Returns headers for API requests (e.g. Authorization from cookie). Used by CreatableMultiCombobox */\n getRequestHeaders?: () =>\n | Record<string, string>\n | Promise<Record<string, string>>\n /** Returns extra body fields for create option API (e.g. { email } from cookie). Used by CreatableMultiCombobox */\n getCreateOptionExtraBody?: () =>\n | Record<string, unknown>\n | Promise<Record<string, unknown>>\n}\n\nexport const FormValuesContext = createContext<FormValuesContextType | null>(\n null\n)\n\nexport const useFormValues = () => {\n const context = useContext(FormValuesContext)\n if (!context) {\n throw new Error('useFormValues must be used within a FormValuesProvider')\n }\n return context\n}\n"],"names":["FormValuesContext","createContext","useFormValues","context","useContext"],"mappings":";AAqCO,MAAMA,IAAoBC;AAAA,EAC/B;AACF,GAEaC,IAAgB,MAAM;AACjC,QAAMC,IAAUC,EAAWJ,CAAiB;AAC5C,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,wDAAwD;AAE1E,SAAOA;AACT;"}
1
+ {"version":3,"file":"index.es160.js","sources":["../src/components/ui/form-renderer/context/form-structure/form-structure.context.ts"],"sourcesContent":["// contexts/FormStructureContext.tsx\nimport { createContext, useContext } from 'react'\nimport { FormStructure, FormStep } from '../../form.types'\n\ninterface FormStructureContextType {\n structure: FormStructure\n currentStepIndex: number\n currentStep: FormStep\n goToNextStep: () => void\n goToPreviousStep: () => void\n goToStep: (stepIndex: number) => void\n isFirstStep: boolean\n isLastStep: boolean\n totalSteps: number\n}\n\nexport const FormStructureContext =\n createContext<FormStructureContextType | null>(null)\n\nexport const useFormStructure = () => {\n const context = useContext(FormStructureContext)\n if (!context) {\n throw new Error(\n 'useFormStructure must be used within a FormStructureProvider'\n )\n }\n return context\n}\n"],"names":["FormStructureContext","createContext","useFormStructure","context","useContext"],"mappings":";AAgBO,MAAMA,IACXC,EAA+C,IAAI,GAExCC,IAAmB,MAAM;AACpC,QAAMC,IAAUC,EAAWJ,CAAoB;AAC/C,MAAI,CAACG;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAGJ,SAAOA;AACT;"}
@@ -1,5 +1,14 @@
1
- var _ = /* @__PURE__ */ ((I) => (I.SHORT_TEXT = "short-text", I.EMAIL = "email", I.LONG_TEXT = "long-text", I.NUMBER = "number", I.MOBILE_NUMBER = "mobile-number", I.DATE_PICKER = "date-picker", I.SINGLE_COMBOBOX = "single-combobox", I.CREATABLE_MULTI_COMBOBOX = "creatable-multi-combobox", I.MULTI_COMBOBOX = "multi-combobox", I.RADIO_GROUP = "radio-group", I.RADIO_GROUP_WITH_OPTIONAL_INPUT = "radio-group-with-optional-input", I.CHECKBOX_GROUP = "checkbox-group", I.SINGLE_IMAGE_PICKER = "single-image-picker", I.MULTI_IMAGE_PICKER = "multi-image-picker", I.TAGGABLE_MULTI_IMAGE_PICKER = "taggable-multi-image-picker", I.SINGLE_VIDEO_PICKER = "single-video-picker", I.MULTI_VIDEO_PICKER = "multi-video-picker", I.SINGLE_VIDEO_PICKER_WITH_INPUT = "single-video-picker-with-input", I.TAGGABLE_MULTI_IMAGE_PICKER_WITH_INPUT = "taggable-multi-image-picker-with-input", I.REPEATABLE_GROUP_FIELD = "repeatable-group-field", I))(_ || {});
1
+ import { createContext as t, useContext as o } from "react";
2
+ const r = t(
3
+ null
4
+ ), n = () => {
5
+ const e = o(r);
6
+ if (!e)
7
+ throw new Error("useFormValues must be used within a FormValuesProvider");
8
+ return e;
9
+ };
2
10
  export {
3
- _ as FormFieldType
11
+ r as FormValuesContext,
12
+ n as useFormValues
4
13
  };
5
14
  //# sourceMappingURL=index.es161.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es161.js","sources":["../src/components/ui/form-renderer/form.enums.ts"],"sourcesContent":["export enum FormFieldType {\n // Text fields\n SHORT_TEXT = 'short-text',\n EMAIL = 'email',\n LONG_TEXT = 'long-text',\n // Number fields\n NUMBER = 'number',\n MOBILE_NUMBER = 'mobile-number',\n DATE_PICKER = 'date-picker',\n\n // Selection fields\n SINGLE_COMBOBOX = 'single-combobox',\n CREATABLE_MULTI_COMBOBOX = 'creatable-multi-combobox',\n MULTI_COMBOBOX = 'multi-combobox',\n RADIO_GROUP = 'radio-group',\n RADIO_GROUP_WITH_OPTIONAL_INPUT = 'radio-group-with-optional-input',\n CHECKBOX_GROUP = 'checkbox-group',\n\n // Upload fields\n SINGLE_IMAGE_PICKER = 'single-image-picker',\n MULTI_IMAGE_PICKER = 'multi-image-picker',\n TAGGABLE_MULTI_IMAGE_PICKER = 'taggable-multi-image-picker',\n SINGLE_VIDEO_PICKER = 'single-video-picker',\n MULTI_VIDEO_PICKER = 'multi-video-picker',\n SINGLE_VIDEO_PICKER_WITH_INPUT = 'single-video-picker-with-input',\n TAGGABLE_MULTI_IMAGE_PICKER_WITH_INPUT = 'taggable-multi-image-picker-with-input',\n\n REPEATABLE_GROUP_FIELD = 'repeatable-group-field',\n}\n"],"names":["FormFieldType"],"mappings":"AAAO,IAAKA,sBAAAA,OAEVA,EAAA,aAAa,cACbA,EAAA,QAAQ,SACRA,EAAA,YAAY,aAEZA,EAAA,SAAS,UACTA,EAAA,gBAAgB,iBAChBA,EAAA,cAAc,eAGdA,EAAA,kBAAkB,mBAClBA,EAAA,2BAA2B,4BAC3BA,EAAA,iBAAiB,kBACjBA,EAAA,cAAc,eACdA,EAAA,kCAAkC,mCAClCA,EAAA,iBAAiB,kBAGjBA,EAAA,sBAAsB,uBACtBA,EAAA,qBAAqB,sBACrBA,EAAA,8BAA8B,+BAC9BA,EAAA,sBAAsB,uBACtBA,EAAA,qBAAqB,sBACrBA,EAAA,iCAAiC,kCACjCA,EAAA,yCAAyC,0CAEzCA,EAAA,yBAAyB,0BA3BfA,IAAAA,KAAA,CAAA,CAAA;"}
1
+ {"version":3,"file":"index.es161.js","sources":["../src/components/ui/form-renderer/context/form-values/form-values.context.ts"],"sourcesContent":["// contexts/FormValuesContext.tsx\nimport { createContext, useContext } from 'react'\nimport {\n AssetValue,\n FormField,\n FormFieldValue,\n FormStep,\n FormValues,\n onToggleImageEditor,\n} from '../../form.types'\n\ninterface FormValuesContextType {\n values: FormValues\n errors: Record<string, string>\n setValue: (fieldId: string, value: FormFieldValue) => void\n setFormValues: (formValues: FormValues) => void\n validateField: (field: FormField) => {\n isValid: boolean\n errorMessage: string\n }\n validateStep: (step: FormStep) => {\n isStepValid: boolean\n errors: Record<string, string>\n }\n submitForm: () => void\n onAssetUpload?: (file: File) => Promise<AssetValue>\n onToggleImageEditor?: onToggleImageEditor\n /** Returns headers for API requests (e.g. Authorization from cookie). Used by CreatableMultiCombobox */\n getRequestHeaders?: () =>\n | Record<string, string>\n | Promise<Record<string, string>>\n /** Returns extra body fields for create option API (e.g. { email } from cookie). Used by CreatableMultiCombobox */\n getCreateOptionExtraBody?: () =>\n | Record<string, unknown>\n | Promise<Record<string, unknown>>\n}\n\nexport const FormValuesContext = createContext<FormValuesContextType | null>(\n null\n)\n\nexport const useFormValues = () => {\n const context = useContext(FormValuesContext)\n if (!context) {\n throw new Error('useFormValues must be used within a FormValuesProvider')\n }\n return context\n}\n"],"names":["FormValuesContext","createContext","useFormValues","context","useContext"],"mappings":";AAqCO,MAAMA,IAAoBC;AAAA,EAC/B;AACF,GAEaC,IAAgB,MAAM;AACjC,QAAMC,IAAUC,EAAWJ,CAAiB;AAC5C,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,wDAAwD;AAE1E,SAAOA;AACT;"}
@@ -1,94 +1,5 @@
1
- let s = null;
2
- function d() {
3
- if (s !== null) return s;
4
- if (typeof document > "u") return !1;
5
- const t = document.createElement("canvas").getContext("2d");
6
- return s = !!t && "filter" in t, s;
7
- }
8
- function p(t) {
9
- return String(t).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
10
- }
11
- function h(t) {
12
- const e = parseFloat(t);
13
- return Number.isNaN(e) ? null : t.trim().endsWith("%") ? e / 100 : e;
14
- }
15
- function u(t, e) {
16
- return `<feComponentTransfer>${["R", "G", "B"].map(
17
- (n) => `<feFunc${n} type="linear" slope="${t}" intercept="${e}"/>`
18
- ).join("")}</feComponentTransfer>`;
19
- }
20
- function m(t) {
21
- const e = 1 - t;
22
- return `<feColorMatrix type="matrix" values="${[
23
- 0.393 + 0.607 * e,
24
- 0.769 - 0.769 * e,
25
- 0.189 - 0.189 * e,
26
- 0,
27
- 0,
28
- 0.349 - 0.349 * e,
29
- 0.686 + 0.314 * e,
30
- 0.168 - 0.168 * e,
31
- 0,
32
- 0,
33
- 0.272 - 0.272 * e,
34
- 0.534 - 0.534 * e,
35
- 0.131 + 0.869 * e,
36
- 0,
37
- 0,
38
- 0,
39
- 0,
40
- 0,
41
- 1,
42
- 0
43
- ].join(" ")}"/>`;
44
- }
45
- function g(t) {
46
- const e = [], i = /([a-zA-Z-]+)\(([^)]*)\)/g;
47
- let n;
48
- for (; (n = i.exec(t)) !== null; ) {
49
- const a = n[1].toLowerCase(), r = h(n[2]);
50
- if (r !== null)
51
- switch (a) {
52
- case "brightness":
53
- e.push(u(r, 0));
54
- break;
55
- case "contrast":
56
- e.push(u(r, -0.5 * r + 0.5));
57
- break;
58
- case "saturate":
59
- e.push(`<feColorMatrix type="saturate" values="${r}"/>`);
60
- break;
61
- case "grayscale":
62
- e.push(
63
- `<feColorMatrix type="saturate" values="${1 - r}"/>`
64
- );
65
- break;
66
- case "sepia":
67
- e.push(m(r));
68
- break;
69
- case "hue-rotate":
70
- e.push(`<feColorMatrix type="hueRotate" values="${r}"/>`);
71
- break;
72
- case "blur":
73
- r > 0 && e.push(`<feGaussianBlur stdDeviation="${r}"/>`);
74
- break;
75
- }
76
- }
77
- return e;
78
- }
79
- function v(t, e) {
80
- return new Promise((i, n) => {
81
- const a = g(e);
82
- if (!a.length) {
83
- n(new Error("no translatable filter primitives"));
84
- return;
85
- }
86
- const { width: r, height: l } = t, c = t.toDataURL("image/png"), f = `<svg xmlns="http://www.w3.org/2000/svg" width="${r}" height="${l}"><filter id="f" color-interpolation-filters="sRGB" x="0" y="0" width="100%" height="100%">${a.join("")}</filter><image href="${p(c)}" width="${r}" height="${l}" filter="url(#f)"/></svg>`, o = new Image();
87
- o.onload = () => i(o), o.onerror = () => n(new Error("filter rasterisation failed")), o.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(f);
88
- });
89
- }
1
+ var _ = /* @__PURE__ */ ((I) => (I.SHORT_TEXT = "short-text", I.EMAIL = "email", I.LONG_TEXT = "long-text", I.NUMBER = "number", I.MOBILE_NUMBER = "mobile-number", I.DATE_PICKER = "date-picker", I.SINGLE_COMBOBOX = "single-combobox", I.CREATABLE_MULTI_COMBOBOX = "creatable-multi-combobox", I.MULTI_COMBOBOX = "multi-combobox", I.RADIO_GROUP = "radio-group", I.RADIO_GROUP_WITH_OPTIONAL_INPUT = "radio-group-with-optional-input", I.CHECKBOX_GROUP = "checkbox-group", I.SINGLE_IMAGE_PICKER = "single-image-picker", I.MULTI_IMAGE_PICKER = "multi-image-picker", I.TAGGABLE_MULTI_IMAGE_PICKER = "taggable-multi-image-picker", I.SINGLE_VIDEO_PICKER = "single-video-picker", I.MULTI_VIDEO_PICKER = "multi-video-picker", I.SINGLE_VIDEO_PICKER_WITH_INPUT = "single-video-picker-with-input", I.TAGGABLE_MULTI_IMAGE_PICKER_WITH_INPUT = "taggable-multi-image-picker-with-input", I.REPEATABLE_GROUP_FIELD = "repeatable-group-field", I))(_ || {});
90
2
  export {
91
- v as rasterizeWithFilter,
92
- d as supportsContextFilter
3
+ _ as FormFieldType
93
4
  };
94
5
  //# sourceMappingURL=index.es162.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es162.js","sources":["../src/components/organisms/image-editor/engine/canvas-filter.js"],"sourcesContent":["let contextFilterSupport = null\n\nexport function supportsContextFilter() {\n if (contextFilterSupport !== null) return contextFilterSupport\n if (typeof document === 'undefined') return false\n const ctx = document.createElement('canvas').getContext('2d')\n contextFilterSupport = !!ctx && 'filter' in ctx\n return contextFilterSupport\n}\n\nfunction escapeXml(value) {\n return String(value)\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n}\n\nfunction toAmount(raw) {\n const value = parseFloat(raw)\n if (Number.isNaN(value)) return null\n return raw.trim().endsWith('%') ? value / 100 : value\n}\n\nfunction componentTransfer(slope, intercept) {\n const fn = ['R', 'G', 'B']\n .map(\n (c) =>\n `<feFunc${c} type=\"linear\" slope=\"${slope}\" intercept=\"${intercept}\"/>`\n )\n .join('')\n return `<feComponentTransfer>${fn}</feComponentTransfer>`\n}\n\nfunction sepiaMatrix(amount) {\n const r = 1 - amount\n const m = [\n 0.393 + 0.607 * r,\n 0.769 - 0.769 * r,\n 0.189 - 0.189 * r,\n 0,\n 0,\n 0.349 - 0.349 * r,\n 0.686 + 0.314 * r,\n 0.168 - 0.168 * r,\n 0,\n 0,\n 0.272 - 0.272 * r,\n 0.534 - 0.534 * r,\n 0.131 + 0.869 * r,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n ]\n return `<feColorMatrix type=\"matrix\" values=\"${m.join(' ')}\"/>`\n}\n\nfunction toSvgPrimitives(filter) {\n const primitives = []\n const re = /([a-zA-Z-]+)\\(([^)]*)\\)/g\n let match\n\n while ((match = re.exec(filter)) !== null) {\n const name = match[1].toLowerCase()\n const amount = toAmount(match[2])\n if (amount === null) continue\n\n switch (name) {\n case 'brightness':\n primitives.push(componentTransfer(amount, 0))\n break\n case 'contrast':\n primitives.push(componentTransfer(amount, -0.5 * amount + 0.5))\n break\n case 'saturate':\n primitives.push(`<feColorMatrix type=\"saturate\" values=\"${amount}\"/>`)\n break\n case 'grayscale':\n primitives.push(\n `<feColorMatrix type=\"saturate\" values=\"${1 - amount}\"/>`\n )\n break\n case 'sepia':\n primitives.push(sepiaMatrix(amount))\n break\n case 'hue-rotate':\n primitives.push(`<feColorMatrix type=\"hueRotate\" values=\"${amount}\"/>`)\n break\n case 'blur':\n if (amount > 0) {\n primitives.push(`<feGaussianBlur stdDeviation=\"${amount}\"/>`)\n }\n break\n default:\n break\n }\n }\n\n return primitives\n}\n\nexport function rasterizeWithFilter(sourceCanvas, filter) {\n return new Promise((resolve, reject) => {\n const primitives = toSvgPrimitives(filter)\n if (!primitives.length) {\n reject(new Error('no translatable filter primitives'))\n return\n }\n\n const { width, height } = sourceCanvas\n const href = sourceCanvas.toDataURL('image/png')\n const svg =\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${width}\" height=\"${height}\">` +\n `<filter id=\"f\" color-interpolation-filters=\"sRGB\" ` +\n `x=\"0\" y=\"0\" width=\"100%\" height=\"100%\">${primitives.join('')}</filter>` +\n `<image href=\"${escapeXml(href)}\" width=\"${width}\" height=\"${height}\" ` +\n `filter=\"url(#f)\"/>` +\n `</svg>`\n\n const img = new Image()\n img.onload = () => resolve(img)\n img.onerror = () => reject(new Error('filter rasterisation failed'))\n img.src = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg)\n })\n}\n"],"names":["contextFilterSupport","supportsContextFilter","ctx","escapeXml","value","toAmount","raw","componentTransfer","slope","intercept","c","sepiaMatrix","amount","r","toSvgPrimitives","filter","primitives","re","match","name","rasterizeWithFilter","sourceCanvas","resolve","reject","width","height","href","svg","img"],"mappings":"AAAA,IAAIA,IAAuB;AAEpB,SAASC,IAAwB;AACtC,MAAID,MAAyB,KAAM,QAAOA;AAC1C,MAAI,OAAO,WAAa,IAAa,QAAO;AAC5C,QAAME,IAAM,SAAS,cAAc,QAAQ,EAAE,WAAW,IAAI;AAC5D,SAAAF,IAAuB,CAAC,CAACE,KAAO,YAAYA,GACrCF;AACT;AAEA,SAASG,EAAUC,GAAO;AACxB,SAAO,OAAOA,CAAK,EAChB,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,QAAQ;AAC3B;AAEA,SAASC,EAASC,GAAK;AACrB,QAAMF,IAAQ,WAAWE,CAAG;AAC5B,SAAI,OAAO,MAAMF,CAAK,IAAU,OACzBE,EAAI,OAAO,SAAS,GAAG,IAAIF,IAAQ,MAAMA;AAClD;AAEA,SAASG,EAAkBC,GAAOC,GAAW;AAO3C,SAAO,wBANI,CAAC,KAAK,KAAK,GAAG,EACtB;AAAA,IACC,CAACC,MACC,UAAUA,CAAC,yBAAyBF,CAAK,gBAAgBC,CAAS;AAAA,EAC1E,EACK,KAAK,EAAE,CACuB;AACnC;AAEA,SAASE,EAAYC,GAAQ;AAC3B,QAAMC,IAAI,IAAID;AAuBd,SAAO,wCAtBG;AAAA,IACR,QAAQ,QAAQC;AAAA,IAChB,QAAQ,QAAQA;AAAA,IAChB,QAAQ,QAAQA;AAAA,IAChB;AAAA,IACA;AAAA,IACA,QAAQ,QAAQA;AAAA,IAChB,QAAQ,QAAQA;AAAA,IAChB,QAAQ,QAAQA;AAAA,IAChB;AAAA,IACA;AAAA,IACA,QAAQ,QAAQA;AAAA,IAChB,QAAQ,QAAQA;AAAA,IAChB,QAAQ,QAAQA;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,EACmD,KAAK,GAAG,CAAC;AAC5D;AAEA,SAASC,EAAgBC,GAAQ;AAC/B,QAAMC,IAAa,CAAA,GACbC,IAAK;AACX,MAAIC;AAEJ,UAAQA,IAAQD,EAAG,KAAKF,CAAM,OAAO,QAAM;AACzC,UAAMI,IAAOD,EAAM,CAAC,EAAE,YAAW,GAC3BN,IAASP,EAASa,EAAM,CAAC,CAAC;AAChC,QAAIN,MAAW;AAEf,cAAQO,GAAI;AAAA,QACV,KAAK;AACH,UAAAH,EAAW,KAAKT,EAAkBK,GAAQ,CAAC,CAAC;AAC5C;AAAA,QACF,KAAK;AACH,UAAAI,EAAW,KAAKT,EAAkBK,GAAQ,OAAOA,IAAS,GAAG,CAAC;AAC9D;AAAA,QACF,KAAK;AACH,UAAAI,EAAW,KAAK,0CAA0CJ,CAAM,KAAK;AACrE;AAAA,QACF,KAAK;AACH,UAAAI,EAAW;AAAA,YACT,0CAA0C,IAAIJ,CAAM;AAAA,UAC9D;AACQ;AAAA,QACF,KAAK;AACH,UAAAI,EAAW,KAAKL,EAAYC,CAAM,CAAC;AACnC;AAAA,QACF,KAAK;AACH,UAAAI,EAAW,KAAK,2CAA2CJ,CAAM,KAAK;AACtE;AAAA,QACF,KAAK;AACH,UAAIA,IAAS,KACXI,EAAW,KAAK,iCAAiCJ,CAAM,KAAK;AAE9D;AAAA,MAGR;AAAA,EACE;AAEA,SAAOI;AACT;AAEO,SAASI,EAAoBC,GAAcN,GAAQ;AACxD,SAAO,IAAI,QAAQ,CAACO,GAASC,MAAW;AACtC,UAAMP,IAAaF,EAAgBC,CAAM;AACzC,QAAI,CAACC,EAAW,QAAQ;AACtB,MAAAO,EAAO,IAAI,MAAM,mCAAmC,CAAC;AACrD;AAAA,IACF;AAEA,UAAM,EAAE,OAAAC,GAAO,QAAAC,MAAWJ,GACpBK,IAAOL,EAAa,UAAU,WAAW,GACzCM,IACJ,kDAAkDH,CAAK,aAAaC,CAAM,8FAEhCT,EAAW,KAAK,EAAE,CAAC,yBAC7Cb,EAAUuB,CAAI,CAAC,YAAYF,CAAK,aAAaC,CAAM,8BAI/DG,IAAM,IAAI,MAAK;AACrB,IAAAA,EAAI,SAAS,MAAMN,EAAQM,CAAG,GAC9BA,EAAI,UAAU,MAAML,EAAO,IAAI,MAAM,6BAA6B,CAAC,GACnEK,EAAI,MAAM,sCAAsC,mBAAmBD,CAAG;AAAA,EACxE,CAAC;AACH;"}
1
+ {"version":3,"file":"index.es162.js","sources":["../src/components/ui/form-renderer/form.enums.ts"],"sourcesContent":["export enum FormFieldType {\n // Text fields\n SHORT_TEXT = 'short-text',\n EMAIL = 'email',\n LONG_TEXT = 'long-text',\n // Number fields\n NUMBER = 'number',\n MOBILE_NUMBER = 'mobile-number',\n DATE_PICKER = 'date-picker',\n\n // Selection fields\n SINGLE_COMBOBOX = 'single-combobox',\n CREATABLE_MULTI_COMBOBOX = 'creatable-multi-combobox',\n MULTI_COMBOBOX = 'multi-combobox',\n RADIO_GROUP = 'radio-group',\n RADIO_GROUP_WITH_OPTIONAL_INPUT = 'radio-group-with-optional-input',\n CHECKBOX_GROUP = 'checkbox-group',\n\n // Upload fields\n SINGLE_IMAGE_PICKER = 'single-image-picker',\n MULTI_IMAGE_PICKER = 'multi-image-picker',\n TAGGABLE_MULTI_IMAGE_PICKER = 'taggable-multi-image-picker',\n SINGLE_VIDEO_PICKER = 'single-video-picker',\n MULTI_VIDEO_PICKER = 'multi-video-picker',\n SINGLE_VIDEO_PICKER_WITH_INPUT = 'single-video-picker-with-input',\n TAGGABLE_MULTI_IMAGE_PICKER_WITH_INPUT = 'taggable-multi-image-picker-with-input',\n\n REPEATABLE_GROUP_FIELD = 'repeatable-group-field',\n}\n"],"names":["FormFieldType"],"mappings":"AAAO,IAAKA,sBAAAA,OAEVA,EAAA,aAAa,cACbA,EAAA,QAAQ,SACRA,EAAA,YAAY,aAEZA,EAAA,SAAS,UACTA,EAAA,gBAAgB,iBAChBA,EAAA,cAAc,eAGdA,EAAA,kBAAkB,mBAClBA,EAAA,2BAA2B,4BAC3BA,EAAA,iBAAiB,kBACjBA,EAAA,cAAc,eACdA,EAAA,kCAAkC,mCAClCA,EAAA,iBAAiB,kBAGjBA,EAAA,sBAAsB,uBACtBA,EAAA,qBAAqB,sBACrBA,EAAA,8BAA8B,+BAC9BA,EAAA,sBAAsB,uBACtBA,EAAA,qBAAqB,sBACrBA,EAAA,iCAAiC,kCACjCA,EAAA,yCAAyC,0CAEzCA,EAAA,yBAAyB,0BA3BfA,IAAAA,KAAA,CAAA,CAAA;"}
@@ -1,216 +1,5 @@
1
- import { pushHistory as x } from "./index.es148.js";
2
- import { emitChange as v } from "./index.es146.js";
3
- import { onRotateHandle as I, layerCenter as a, onResizeHandle as C, DIRECTIONAL_SHAPES as S, layerBounds as w, rotatePoint as M, clampBoxWidth as E, clampTextSize as b, renderOverlay as p, paintLayer as z, render as s, normRect as k, toLayerSpace as P } from "./index.es147.js";
4
- import { selectLayer as g, setMode as R } from "./index.es150.js";
5
- import { openTextEditor as O } from "./index.es151.js";
6
- function f(r, l) {
7
- const e = r.dragMode && r.dragRect ? r.dragRect : r.overlayEl.getBoundingClientRect(), o = (l.clientX - e.left) / e.width * r.sourceCanvas.width, n = (l.clientY - e.top) / e.height * r.sourceCanvas.height;
8
- return {
9
- x: Math.min(Math.max(o, 0), r.sourceCanvas.width),
10
- y: Math.min(Math.max(n, 0), r.sourceCanvas.height)
11
- };
12
- }
13
- function A(r, l) {
14
- if (!l) return r;
15
- const e = l * Math.PI / 180, o = Math.abs(Math.cos(e)), n = Math.abs(Math.sin(e)), d = r.w * o + r.h * n, i = r.w * n + r.h * o, c = r.x + r.w / 2, h = r.y + r.h / 2;
16
- return { x: c - d / 2, y: h - i / 2, w: d, h: i };
17
- }
18
- function W(r) {
19
- return r.type !== "shape" ? 0 : S.includes(r.shape) || r.fill !== "fill" ? (r.width || 0) / 2 : 0;
20
- }
21
- function T(r, l) {
22
- const e = A(w(r, l), l.rotation), o = W(l), n = {
23
- x: e.x - o,
24
- y: e.y - o,
25
- w: e.w + o * 2,
26
- h: e.h + o * 2
27
- }, d = Math.min(Math.max(n.x, 0), r.sourceCanvas.width - n.w) - n.x, i = Math.min(Math.max(n.y, 0), r.sourceCanvas.height - n.h) - n.y;
28
- !d && !i || (l.type === "stroke" ? l.points = l.points.map((c) => ({ x: c.x + d, y: c.y + i })) : (l.x += d, l.y += i));
29
- }
30
- function u(r, l) {
31
- const { layers: e } = r;
32
- for (let o = e.length - 1; o >= 0; o--) {
33
- const n = w(r, e[o]), d = P(r, e[o], l);
34
- if (d.x >= n.x - 6 && d.x <= n.x + n.w + 6 && d.y >= n.y - 6 && d.y <= n.y + n.h + 6)
35
- return e[o];
36
- }
37
- return null;
38
- }
39
- function F(r, l) {
40
- if (!r.sourceCanvas.width || r.dragMode) return;
41
- r.overlayEl.setPointerCapture(l.pointerId), r.activePointerId = l.pointerId, r.dragRect = r.overlayEl.getBoundingClientRect();
42
- const e = f(r, l);
43
- if (r.mode === "select") {
44
- const o = r.selectedId != null ? r.layers.find((i) => i.id === r.selectedId) : null;
45
- if (o && I(r, e, o)) {
46
- const i = a(r, o);
47
- r.dragMode = "rotate", r.rotateStart = {
48
- center: i,
49
- angle: Math.atan2(e.y - i.y, e.x - i.x),
50
- rotation: o.rotation || 0
51
- }, x(r);
52
- return;
53
- }
54
- const n = o ? C(r, e, o) : null;
55
- if (n) {
56
- if (r.dragMode = "resize", r.resizeCorner = n, r.dragStart = e, r.dragOrig = JSON.parse(JSON.stringify(o)), o.type === "shape" && S.includes(o.shape))
57
- r.resizeAnchor = n === "start" ? { x: o.x + o.w, y: o.y + o.h } : { x: o.x, y: o.y };
58
- else {
59
- const i = w(r, o), c = n === "tl" || n === "bl";
60
- r.resizeAnchor = {
61
- x: c ? i.x + i.w : i.x,
62
- // Text keeps its top edge: its height follows the wrapping.
63
- y: o.type === "text" ? i.y : n === "tl" || n === "tr" ? i.y + i.h : i.y
64
- };
65
- }
66
- r.resizeCenter = a(r, o), r.resizeAnchorWorld = M(
67
- r.resizeAnchor,
68
- r.resizeCenter,
69
- o.rotation || 0
70
- ), x(r);
71
- return;
72
- }
73
- const d = u(r, e);
74
- d ? (g(r, d.id), r.dragMode = "move", r.dragStart = e, r.dragOrig = JSON.parse(JSON.stringify(d)), x(r)) : g(r, null);
75
- } else if (r.mode === "text") {
76
- x(r);
77
- const o = {
78
- id: r.nextId++,
79
- type: "text",
80
- text: "Text",
81
- x: e.x,
82
- y: e.y,
83
- size: r.textSize,
84
- font: r.textFont,
85
- color: r.textColor,
86
- rotation: 0,
87
- flipH: !1,
88
- flipV: !1,
89
- boxWidth: 10
90
- };
91
- r.octx.font = `${o.size}px ${o.font}`;
92
- const n = r.octx.measureText(o.text).width;
93
- o.boxWidth = Math.round(Math.max(700, n + 40)), E(r, o), b(r, o), r.layers.push(o), R(r, "select"), g(r, o.id), O(r, o, !0);
94
- } else r.mode === "draw" ? (x(r), r.pendingStroke = {
95
- id: r.nextId++,
96
- type: "stroke",
97
- color: r.drawColor,
98
- width: r.brushSize,
99
- style: r.brushStyle,
100
- points: [e]
101
- }, r.dragMode = "draw") : r.mode === "shape" ? (x(r), r.pendingShape = {
102
- id: r.nextId++,
103
- type: "shape",
104
- shape: r.selectedShapeType,
105
- fill: r.shapeFill,
106
- width: r.shapeWidth,
107
- color: r.shapeColor,
108
- x: e.x,
109
- y: e.y,
110
- w: 0,
111
- h: 0,
112
- rotation: 0,
113
- flipH: !1,
114
- flipV: !1
115
- }, r.dragMode = "newshape", r.dragStart = e) : r.mode === "crop" && (r.dragMode = "crop", r.cropStart = e, r.cropRect = { x: e.x, y: e.y, w: 0, h: 0 });
116
- }
117
- function _(r, l) {
118
- if (r.dragMode && r.activePointerId != null && l.pointerId !== r.activePointerId)
119
- return;
120
- if (!r.dragMode) {
121
- if (r.mode === "select") {
122
- const o = f(r, l), n = r.selectedId != null ? r.layers.find((i) => i.id === r.selectedId) : null, d = n ? C(r, o, n) : null;
123
- n && I(r, o, n) ? r.overlayEl.style.cursor = "grab" : d === "start" || d === "end" ? r.overlayEl.style.cursor = n.w >= 0 == n.h >= 0 ? "nwse-resize" : "nesw-resize" : d ? r.overlayEl.style.cursor = d === "tl" || d === "br" ? "nwse-resize" : "nesw-resize" : n && u(r, o) === n ? r.overlayEl.style.cursor = "move" : u(r, o) ? r.overlayEl.style.cursor = "pointer" : r.overlayEl.style.cursor = "default";
124
- }
125
- return;
126
- }
127
- const e = f(r, l);
128
- if (r.dragMode === "move") {
129
- const o = e.x - r.dragStart.x, n = e.y - r.dragStart.y, d = r.layers.find((i) => i.id === r.selectedId);
130
- d.type === "text" || d.type === "shape" || d.type === "sticker" ? (d.x = r.dragOrig.x + o, d.y = r.dragOrig.y + n) : d.type === "stroke" && (d.points = r.dragOrig.points.map((i) => ({
131
- x: i.x + o,
132
- y: i.y + n
133
- }))), T(r, d), p(r);
134
- } else if (r.dragMode === "resize") {
135
- const o = r.layers.find((i) => i.id === r.selectedId), n = o.rotation || 0, d = n ? M(e, r.resizeCenter, -n) : e;
136
- if (o.type === "text") {
137
- const i = r.resizeCorner === "tl" || r.resizeCorner === "bl";
138
- if (o.y = r.dragOrig.y, o.size = r.dragOrig.size, i) {
139
- const c = r.dragOrig.x + r.dragOrig.boxWidth;
140
- o.boxWidth = Math.max(20, c - d.x), o.x = c - o.boxWidth;
141
- } else
142
- o.x = r.dragOrig.x, o.boxWidth = Math.max(20, d.x - r.dragOrig.x);
143
- E(r, o), b(r, o), r.notify();
144
- } else if (o.type === "shape" && S.includes(o.shape)) {
145
- const i = r.resizeAnchor, c = 8;
146
- let h = d.x - i.x, y = d.y - i.y;
147
- if (Math.hypot(h, y) < c) {
148
- const m = Math.atan2(y || 1, h || 1);
149
- h = c * Math.cos(m), y = c * Math.sin(m);
150
- }
151
- r.resizeCorner === "start" ? (o.x = i.x + h, o.y = i.y + y, o.w = -h, o.h = -y) : (o.x = i.x, o.y = i.y, o.w = h, o.h = y);
152
- } else if (o.type === "shape" || o.type === "sticker") {
153
- const i = r.resizeAnchor, c = 8;
154
- let h = d.x - i.x, y = d.y - i.y;
155
- Math.abs(h) < c && (h = i.x + c <= r.sourceCanvas.width ? c : -c), Math.abs(y) < c && (y = i.y + c <= r.sourceCanvas.height ? c : -c), o.x = Math.min(i.x, i.x + h), o.y = Math.min(i.y, i.y + y), o.w = Math.abs(h), o.h = Math.abs(y);
156
- }
157
- if (n) {
158
- const i = M(r.resizeAnchor, a(r, o), n);
159
- o.x += r.resizeAnchorWorld.x - i.x, o.y += r.resizeAnchorWorld.y - i.y;
160
- }
161
- p(r);
162
- } else if (r.dragMode === "rotate") {
163
- const o = r.layers.find((y) => y.id === r.selectedId), { center: n, angle: d, rotation: i } = r.rotateStart, c = Math.atan2(e.y - n.y, e.x - n.x) - d, h = i + c * 180 / Math.PI;
164
- o.rotation = (h % 360 + 360) % 360, p(r);
165
- } else if (r.dragMode === "draw")
166
- r.pendingStroke.points.push(e), r.octx.clearRect(0, 0, r.overlayEl.width, r.overlayEl.height), r.layers.forEach((o) => z(r, r.octx, o)), z(r, r.octx, r.pendingStroke);
167
- else if (r.dragMode === "newshape")
168
- r.pendingShape.w = e.x - r.dragStart.x, r.pendingShape.h = e.y - r.dragStart.y, p(r);
169
- else if (r.dragMode === "crop") {
170
- let o = e.x - r.cropStart.x, n = e.y - r.cropStart.y;
171
- if (r.cropRatio !== "free") {
172
- const d = parseFloat(r.cropRatio);
173
- n = Math.sign(n || 1) * Math.abs(o) / d;
174
- const i = n >= 0 ? r.sourceCanvas.height - r.cropStart.y : r.cropStart.y;
175
- Math.abs(n) > i && (n = Math.sign(n) * i, o = Math.sign(o || 1) * Math.abs(n) * d);
176
- }
177
- r.cropRect = { x: r.cropStart.x, y: r.cropStart.y, w: o, h: n }, p(r);
178
- }
179
- }
180
- function $(r, l) {
181
- if (!(l && r.dragMode && r.activePointerId != null && l.pointerId !== r.activePointerId)) {
182
- if (r.dragMode === "draw" && r.pendingStroke)
183
- r.pendingStroke.points.length >= 1 && (r.layers.push(r.pendingStroke), g(r, r.pendingStroke.id)), r.pendingStroke = null, s(r), r.statusText = "Stroke added", v(r);
184
- else if (r.dragMode === "newshape" && r.pendingShape)
185
- if (Math.abs(r.pendingShape.w) > 3 || Math.abs(r.pendingShape.h) > 3) {
186
- r.layers.push(r.pendingShape);
187
- const e = r.pendingShape.id;
188
- r.pendingShape = null, R(r, "select"), g(r, e), r.statusText = "Shape added", v(r);
189
- } else
190
- r.pendingShape = null, p(r), r.notify();
191
- else if (r.dragMode === "crop")
192
- r.cropRect && (r.cropRect = k(r.cropRect)), p(r), r.notify();
193
- else if (r.dragMode === "move" || r.dragMode === "resize" || r.dragMode === "rotate") {
194
- if (r.dragMode === "rotate") {
195
- const e = r.layers.find((o) => o.id === r.selectedId);
196
- e && (r.statusText = `Rotated to ${Math.round(e.rotation)}°`);
197
- }
198
- s(r), r.notify();
199
- }
200
- r.activePointerId != null && (r.overlayEl.hasPointerCapture(r.activePointerId) && r.overlayEl.releasePointerCapture(r.activePointerId), r.activePointerId = null), r.dragMode = null, r.dragStart = null, r.dragOrig = null, r.dragRect = null, r.resizeAnchor = null, r.resizeCenter = null, r.resizeAnchorWorld = null, r.rotateStart = null;
201
- }
202
- }
203
- function q(r, l) {
204
- if (r.mode !== "select") return;
205
- const e = f(r, l), o = u(r, e);
206
- o && o.type === "text" && (g(r, o.id), O(r, o, !1));
207
- }
1
+ const a = "Plus Jakarta Sans";
208
2
  export {
209
- u as hitLayer,
210
- q as onDbl,
211
- F as onDown,
212
- _ as onMove,
213
- $ as onUp,
214
- f as toSource
3
+ a as FONT_FAMILY
215
4
  };
216
5
  //# sourceMappingURL=index.es163.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es163.js","sources":["../src/components/organisms/image-editor/engine/pointer.js"],"sourcesContent":["import { pushHistory } from './history.js'\nimport { emitChange } from './state.js'\nimport {\n render,\n renderOverlay,\n paintLayer,\n layerBounds,\n onResizeHandle,\n normRect,\n clampTextSize,\n clampBoxWidth,\n onRotateHandle,\n layerCenter,\n rotatePoint,\n toLayerSpace,\n DIRECTIONAL_SHAPES,\n} from './rendering.js'\nimport { setMode, selectLayer } from './mode.js'\nimport { openTextEditor } from './text-editor.js'\n\nexport function toSource(state, e) {\n // While actively dragging, use the rect captured at pointerdown instead of\n // re-querying live — on mobile the browser's address-bar/toolbar chrome\n // can collapse mid-gesture (typically ~1s in) and reflow the canvas out\n // from under the drag. Since this is (pointer position - element origin),\n // a rect that shifts mid-drag snaps the result toward 0 (leftmost/\n // smallest), which is exactly what re-querying every move would do.\n const r =\n state.dragMode && state.dragRect\n ? state.dragRect\n : state.overlayEl.getBoundingClientRect()\n const x = ((e.clientX - r.left) / r.width) * state.sourceCanvas.width\n const y = ((e.clientY - r.top) / r.height) * state.sourceCanvas.height\n return {\n x: Math.min(Math.max(x, 0), state.sourceCanvas.width),\n y: Math.min(Math.max(y, 0), state.sourceCanvas.height),\n }\n}\n\nfunction rotatedAABB(b, rotationDeg) {\n if (!rotationDeg) return b\n const rad = (rotationDeg * Math.PI) / 180\n const cos = Math.abs(Math.cos(rad)),\n sin = Math.abs(Math.sin(rad))\n const w = b.w * cos + b.h * sin,\n h = b.w * sin + b.h * cos\n const cx = b.x + b.w / 2,\n cy = b.y + b.h / 2\n return { x: cx - w / 2, y: cy - h / 2, w, h }\n}\n\nfunction strokeMargin(L) {\n if (L.type !== 'shape') return 0\n const alwaysStroked = DIRECTIONAL_SHAPES.includes(L.shape)\n return alwaysStroked || L.fill !== 'fill' ? (L.width || 0) / 2 : 0\n}\n\nfunction clampLayerToCanvas(state, L) {\n const rotated = rotatedAABB(layerBounds(state, L), L.rotation)\n const margin = strokeMargin(L)\n const b = {\n x: rotated.x - margin,\n y: rotated.y - margin,\n w: rotated.w + margin * 2,\n h: rotated.h + margin * 2,\n }\n const dx = Math.min(Math.max(b.x, 0), state.sourceCanvas.width - b.w) - b.x\n const dy = Math.min(Math.max(b.y, 0), state.sourceCanvas.height - b.h) - b.y\n if (!dx && !dy) return\n if (L.type === 'stroke') {\n L.points = L.points.map((pt) => ({ x: pt.x + dx, y: pt.y + dy }))\n } else {\n L.x += dx\n L.y += dy\n }\n}\n\nexport function hitLayer(state, p) {\n const { layers } = state\n for (let i = layers.length - 1; i >= 0; i--) {\n const b = layerBounds(state, layers[i])\n const q = toLayerSpace(state, layers[i], p)\n if (\n q.x >= b.x - 6 &&\n q.x <= b.x + b.w + 6 &&\n q.y >= b.y - 6 &&\n q.y <= b.y + b.h + 6\n )\n return layers[i]\n }\n return null\n}\n\nexport function onDown(state, e) {\n if (!state.sourceCanvas.width) return\n if (state.dragMode) return\n state.overlayEl.setPointerCapture(e.pointerId)\n state.activePointerId = e.pointerId\n state.dragRect = state.overlayEl.getBoundingClientRect()\n const p = toSource(state, e)\n if (state.mode === 'select') {\n const sel =\n state.selectedId != null\n ? state.layers.find((l) => l.id === state.selectedId)\n : null\n if (sel && onRotateHandle(state, p, sel)) {\n const c = layerCenter(state, sel)\n state.dragMode = 'rotate'\n state.rotateStart = {\n center: c,\n angle: Math.atan2(p.y - c.y, p.x - c.x),\n rotation: sel.rotation || 0,\n }\n pushHistory(state)\n return\n }\n const corner = sel ? onResizeHandle(state, p, sel) : null\n if (corner) {\n state.dragMode = 'resize'\n state.resizeCorner = corner\n state.dragStart = p\n state.dragOrig = JSON.parse(JSON.stringify(sel))\n if (sel.type === 'shape' && DIRECTIONAL_SHAPES.includes(sel.shape)) {\n state.resizeAnchor =\n corner === 'start'\n ? { x: sel.x + sel.w, y: sel.y + sel.h }\n : { x: sel.x, y: sel.y }\n } else {\n const b = layerBounds(state, sel)\n const isLeft = corner === 'tl' || corner === 'bl'\n state.resizeAnchor = {\n x: isLeft ? b.x + b.w : b.x,\n // Text keeps its top edge: its height follows the wrapping.\n y:\n sel.type === 'text'\n ? b.y\n : corner === 'tl' || corner === 'tr'\n ? b.y + b.h\n : b.y,\n }\n }\n state.resizeCenter = layerCenter(state, sel)\n state.resizeAnchorWorld = rotatePoint(\n state.resizeAnchor,\n state.resizeCenter,\n sel.rotation || 0\n )\n pushHistory(state)\n return\n }\n const hit = hitLayer(state, p)\n if (hit) {\n selectLayer(state, hit.id)\n state.dragMode = 'move'\n state.dragStart = p\n state.dragOrig = JSON.parse(JSON.stringify(hit))\n pushHistory(state)\n } else selectLayer(state, null)\n } else if (state.mode === 'text') {\n pushHistory(state)\n const L = {\n id: state.nextId++,\n type: 'text',\n text: 'Text',\n x: p.x,\n y: p.y,\n size: state.textSize,\n font: state.textFont,\n color: state.textColor,\n rotation: 0,\n flipH: false,\n flipV: false,\n boxWidth: 10,\n }\n state.octx.font = `${L.size}px ${L.font}`\n const placeholderWidth = state.octx.measureText(L.text).width\n L.boxWidth = Math.round(Math.max(700, placeholderWidth + 40))\n clampBoxWidth(state, L)\n clampTextSize(state, L)\n state.layers.push(L)\n setMode(state, 'select')\n selectLayer(state, L.id)\n openTextEditor(state, L, true)\n } else if (state.mode === 'draw') {\n pushHistory(state)\n state.pendingStroke = {\n id: state.nextId++,\n type: 'stroke',\n color: state.drawColor,\n width: state.brushSize,\n style: state.brushStyle,\n points: [p],\n }\n state.dragMode = 'draw'\n } else if (state.mode === 'shape') {\n pushHistory(state)\n state.pendingShape = {\n id: state.nextId++,\n type: 'shape',\n shape: state.selectedShapeType,\n fill: state.shapeFill,\n width: state.shapeWidth,\n color: state.shapeColor,\n x: p.x,\n y: p.y,\n w: 0,\n h: 0,\n rotation: 0,\n flipH: false,\n flipV: false,\n }\n state.dragMode = 'newshape'\n state.dragStart = p\n } else if (state.mode === 'crop') {\n state.dragMode = 'crop'\n state.cropStart = p\n state.cropRect = { x: p.x, y: p.y, w: 0, h: 0 }\n }\n}\n\nexport function onMove(state, e) {\n if (\n state.dragMode &&\n state.activePointerId != null &&\n e.pointerId !== state.activePointerId\n ) {\n return\n }\n if (!state.dragMode) {\n if (state.mode === 'select') {\n const p = toSource(state, e),\n sel =\n state.selectedId != null\n ? state.layers.find((l) => l.id === state.selectedId)\n : null\n const corner = sel ? onResizeHandle(state, p, sel) : null\n if (sel && onRotateHandle(state, p, sel)) {\n state.overlayEl.style.cursor = 'grab'\n } else if (corner === 'start' || corner === 'end') {\n state.overlayEl.style.cursor =\n sel.w >= 0 === sel.h >= 0 ? 'nwse-resize' : 'nesw-resize'\n } else if (corner) {\n state.overlayEl.style.cursor =\n corner === 'tl' || corner === 'br' ? 'nwse-resize' : 'nesw-resize'\n } else if (sel && hitLayer(state, p) === sel) {\n state.overlayEl.style.cursor = 'move'\n } else if (hitLayer(state, p)) {\n state.overlayEl.style.cursor = 'pointer'\n } else {\n state.overlayEl.style.cursor = 'default'\n }\n }\n return\n }\n const p = toSource(state, e)\n if (state.dragMode === 'move') {\n const dx = p.x - state.dragStart.x,\n dy = p.y - state.dragStart.y,\n L = state.layers.find((l) => l.id === state.selectedId)\n if (L.type === 'text' || L.type === 'shape' || L.type === 'sticker') {\n L.x = state.dragOrig.x + dx\n L.y = state.dragOrig.y + dy\n } else if (L.type === 'stroke') {\n L.points = state.dragOrig.points.map((pt) => ({\n x: pt.x + dx,\n y: pt.y + dy,\n }))\n }\n clampLayerToCanvas(state, L)\n renderOverlay(state)\n } else if (state.dragMode === 'resize') {\n const L = state.layers.find((l) => l.id === state.selectedId)\n const rot = L.rotation || 0\n // Resize along the layer's own axes, so a tilted box grows the way it looks.\n const q = rot ? rotatePoint(p, state.resizeCenter, -rot) : p\n if (L.type === 'text') {\n const isLeft = state.resizeCorner === 'tl' || state.resizeCorner === 'bl'\n // Absolute from drag start, so the fix-up below cannot accumulate.\n L.y = state.dragOrig.y\n L.size = state.dragOrig.size\n if (isLeft) {\n const rightEdge = state.dragOrig.x + state.dragOrig.boxWidth\n L.boxWidth = Math.max(20, rightEdge - q.x)\n L.x = rightEdge - L.boxWidth\n } else {\n L.x = state.dragOrig.x\n L.boxWidth = Math.max(20, q.x - state.dragOrig.x)\n }\n clampBoxWidth(state, L)\n clampTextSize(state, L)\n state.notify()\n } else if (L.type === 'shape' && DIRECTIONAL_SHAPES.includes(L.shape)) {\n const anchor = state.resizeAnchor\n const MIN_LEN = 8\n let w = q.x - anchor.x\n let h = q.y - anchor.y\n if (Math.hypot(w, h) < MIN_LEN) {\n const ang = Math.atan2(h || 1, w || 1)\n w = MIN_LEN * Math.cos(ang)\n h = MIN_LEN * Math.sin(ang)\n }\n if (state.resizeCorner === 'start') {\n L.x = anchor.x + w\n L.y = anchor.y + h\n L.w = -w\n L.h = -h\n } else {\n L.x = anchor.x\n L.y = anchor.y\n L.w = w\n L.h = h\n }\n } else if (L.type === 'shape' || L.type === 'sticker') {\n const anchor = state.resizeAnchor\n const MIN_SIZE = 8\n let w = q.x - anchor.x\n let h = q.y - anchor.y\n if (Math.abs(w) < MIN_SIZE) {\n w =\n anchor.x + MIN_SIZE <= state.sourceCanvas.width ? MIN_SIZE : -MIN_SIZE\n }\n if (Math.abs(h) < MIN_SIZE) {\n h =\n anchor.y + MIN_SIZE <= state.sourceCanvas.height\n ? MIN_SIZE\n : -MIN_SIZE\n }\n L.x = Math.min(anchor.x, anchor.x + w)\n L.y = Math.min(anchor.y, anchor.y + h)\n L.w = Math.abs(w)\n L.h = Math.abs(h)\n }\n // Resizing moves the centre it spins about; pin the anchor back down.\n if (rot) {\n const moved = rotatePoint(state.resizeAnchor, layerCenter(state, L), rot)\n L.x += state.resizeAnchorWorld.x - moved.x\n L.y += state.resizeAnchorWorld.y - moved.y\n }\n renderOverlay(state)\n } else if (state.dragMode === 'rotate') {\n const L = state.layers.find((l) => l.id === state.selectedId)\n const { center, angle, rotation } = state.rotateStart\n const swept = Math.atan2(p.y - center.y, p.x - center.x) - angle\n const deg = rotation + (swept * 180) / Math.PI\n L.rotation = ((deg % 360) + 360) % 360\n renderOverlay(state)\n } else if (state.dragMode === 'draw') {\n state.pendingStroke.points.push(p)\n state.octx.clearRect(0, 0, state.overlayEl.width, state.overlayEl.height)\n state.layers.forEach((L) => paintLayer(state, state.octx, L))\n paintLayer(state, state.octx, state.pendingStroke)\n } else if (state.dragMode === 'newshape') {\n state.pendingShape.w = p.x - state.dragStart.x\n state.pendingShape.h = p.y - state.dragStart.y\n renderOverlay(state)\n } else if (state.dragMode === 'crop') {\n let w = p.x - state.cropStart.x,\n h = p.y - state.cropStart.y\n if (state.cropRatio !== 'free') {\n const rr = parseFloat(state.cropRatio)\n h = (Math.sign(h || 1) * Math.abs(w)) / rr\n const maxH =\n h >= 0\n ? state.sourceCanvas.height - state.cropStart.y\n : state.cropStart.y\n if (Math.abs(h) > maxH) {\n h = Math.sign(h) * maxH\n w = Math.sign(w || 1) * Math.abs(h) * rr\n }\n }\n state.cropRect = { x: state.cropStart.x, y: state.cropStart.y, w, h }\n renderOverlay(state)\n }\n}\n\nexport function onUp(state, e) {\n if (\n e &&\n state.dragMode &&\n state.activePointerId != null &&\n e.pointerId !== state.activePointerId\n ) {\n return\n }\n if (state.dragMode === 'draw' && state.pendingStroke) {\n if (state.pendingStroke.points.length >= 1) {\n state.layers.push(state.pendingStroke)\n selectLayer(state, state.pendingStroke.id)\n }\n state.pendingStroke = null\n render(state)\n state.statusText = 'Stroke added'\n emitChange(state)\n } else if (state.dragMode === 'newshape' && state.pendingShape) {\n if (\n Math.abs(state.pendingShape.w) > 3 ||\n Math.abs(state.pendingShape.h) > 3\n ) {\n state.layers.push(state.pendingShape)\n const id = state.pendingShape.id\n state.pendingShape = null\n setMode(state, 'select')\n selectLayer(state, id)\n state.statusText = 'Shape added'\n emitChange(state)\n } else {\n state.pendingShape = null\n renderOverlay(state)\n state.notify()\n }\n } else if (state.dragMode === 'crop') {\n if (state.cropRect) state.cropRect = normRect(state.cropRect)\n renderOverlay(state)\n state.notify()\n } else if (\n state.dragMode === 'move' ||\n state.dragMode === 'resize' ||\n state.dragMode === 'rotate'\n ) {\n if (state.dragMode === 'rotate') {\n const L = state.layers.find((l) => l.id === state.selectedId)\n if (L) state.statusText = `Rotated to ${Math.round(L.rotation)}°`\n }\n render(state)\n state.notify()\n }\n if (state.activePointerId != null) {\n if (state.overlayEl.hasPointerCapture(state.activePointerId)) {\n state.overlayEl.releasePointerCapture(state.activePointerId)\n }\n state.activePointerId = null\n }\n state.dragMode = null\n state.dragStart = null\n state.dragOrig = null\n state.dragRect = null\n state.resizeAnchor = null\n state.resizeCenter = null\n state.resizeAnchorWorld = null\n state.rotateStart = null\n}\n\nexport function onDbl(state, e) {\n if (state.mode !== 'select') return\n const p = toSource(state, e),\n hit = hitLayer(state, p)\n if (hit && hit.type === 'text') {\n selectLayer(state, hit.id)\n openTextEditor(state, hit, false)\n }\n}\n"],"names":["toSource","state","e","r","x","y","rotatedAABB","b","rotationDeg","rad","cos","sin","w","h","cx","cy","strokeMargin","L","DIRECTIONAL_SHAPES","clampLayerToCanvas","rotated","layerBounds","margin","dx","dy","pt","hitLayer","p","layers","i","q","toLayerSpace","onDown","sel","l","onRotateHandle","c","layerCenter","pushHistory","corner","onResizeHandle","isLeft","rotatePoint","hit","selectLayer","placeholderWidth","clampBoxWidth","clampTextSize","setMode","openTextEditor","onMove","renderOverlay","rot","rightEdge","anchor","MIN_LEN","ang","MIN_SIZE","moved","center","angle","rotation","swept","deg","paintLayer","rr","maxH","onUp","render","emitChange","id","normRect","onDbl"],"mappings":"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"}
1
+ {"version":3,"file":"index.es163.js","sources":["../src/lib/constants.ts"],"sourcesContent":["export const FONT_FAMILY = 'Plus Jakarta Sans'\n"],"names":["FONT_FAMILY"],"mappings":"AAAO,MAAMA,IAAc;"}