@openlettermarketing/olc-react-sdk 2.1.4 → 2.1.5-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/.eslintignore +1 -0
  2. package/.eslintrc.cjs +18 -0
  3. package/.eslintrc.yml +47 -0
  4. package/.github/workflows/publish-beta.yml +154 -0
  5. package/.github/workflows/publish-production.yml +143 -0
  6. package/.prettierignore +3 -0
  7. package/.prettierrc.yml +5 -0
  8. package/CHANGELOG.md +4 -0
  9. package/babel.config.json +10 -0
  10. package/build/index.js +82 -82
  11. package/build/index.js.map +1 -1
  12. package/build/types/version.d.ts +1 -1
  13. package/examples/.eslintrc.yml +4 -0
  14. package/index.html +18 -0
  15. package/package.json +1 -1
  16. package/public/vite.svg +1 -0
  17. package/src/App.tsx +209 -0
  18. package/src/assets/Fonts/Lexi-Regular.ttf +0 -0
  19. package/src/assets/images/create-template/prebuilt.svg +13 -0
  20. package/src/assets/images/create-template/scratch.svg +4 -0
  21. package/src/assets/images/input/cancel.tsx +20 -0
  22. package/src/assets/images/input/search.tsx +20 -0
  23. package/src/assets/images/input/select-cancel.tsx +17 -0
  24. package/src/assets/images/modal-icons/add.tsx +36 -0
  25. package/src/assets/images/modal-icons/cancel-file.tsx +12 -0
  26. package/src/assets/images/modal-icons/cancel-input.tsx +13 -0
  27. package/src/assets/images/modal-icons/cancel.tsx +35 -0
  28. package/src/assets/images/modal-icons/close-new.svg +3 -0
  29. package/src/assets/images/modal-icons/confirm-close-icon.tsx +14 -0
  30. package/src/assets/images/modal-icons/confirm-new.tsx +22 -0
  31. package/src/assets/images/modal-icons/confirm.svg +12 -0
  32. package/src/assets/images/modal-icons/cross.tsx +23 -0
  33. package/src/assets/images/modal-icons/del.tsx +19 -0
  34. package/src/assets/images/modal-icons/design-icon.tsx +22 -0
  35. package/src/assets/images/modal-icons/doc.tsx +43 -0
  36. package/src/assets/images/modal-icons/docx.tsx +43 -0
  37. package/src/assets/images/modal-icons/envelope-icon.tsx +26 -0
  38. package/src/assets/images/modal-icons/info.tsx +19 -0
  39. package/src/assets/images/modal-icons/jpeg.tsx +43 -0
  40. package/src/assets/images/modal-icons/jpg.tsx +43 -0
  41. package/src/assets/images/modal-icons/modal-cros.svg +4 -0
  42. package/src/assets/images/modal-icons/modal-cross.tsx +37 -0
  43. package/src/assets/images/modal-icons/new-cancel.tsx +11 -0
  44. package/src/assets/images/modal-icons/order-download.tsx +42 -0
  45. package/src/assets/images/modal-icons/pdf.tsx +51 -0
  46. package/src/assets/images/modal-icons/png.tsx +43 -0
  47. package/src/assets/images/modal-icons/save.tsx +23 -0
  48. package/src/assets/images/modal-icons/template-copy.tsx +25 -0
  49. package/src/assets/images/modal-icons/tool-cancel.tsx +25 -0
  50. package/src/assets/images/products/bi-new.svg +23 -0
  51. package/src/assets/images/products/left-arrow.svg +17 -0
  52. package/src/assets/images/products/personal-new.tsx +31 -0
  53. package/src/assets/images/products/postcard-new.tsx +27 -0
  54. package/src/assets/images/products/professional-new.tsx +24 -0
  55. package/src/assets/images/products/real-new.tsx +30 -0
  56. package/src/assets/images/products/right-arrow.svg +17 -0
  57. package/src/assets/images/products/snap-new.svg +31 -0
  58. package/src/assets/images/templates/actions.svg +3 -0
  59. package/src/assets/images/templates/address-block-icon.tsx +62 -0
  60. package/src/assets/images/templates/archive.svg +3 -0
  61. package/src/assets/images/templates/arrow-down.tsx +27 -0
  62. package/src/assets/images/templates/back-arrow.tsx +19 -0
  63. package/src/assets/images/templates/bi-fold-self-mailers.tsx +28 -0
  64. package/src/assets/images/templates/check.svg +3 -0
  65. package/src/assets/images/templates/code.svg +10 -0
  66. package/src/assets/images/templates/content-copy-icon.tsx +24 -0
  67. package/src/assets/images/templates/custom-add-on-icon.tsx +18 -0
  68. package/src/assets/images/templates/custom-qr-section-icon.tsx +9 -0
  69. package/src/assets/images/templates/custom-template.tsx +23 -0
  70. package/src/assets/images/templates/designer.tsx +43 -0
  71. package/src/assets/images/templates/dot.tsx +22 -0
  72. package/src/assets/images/templates/download-v2.svg +4 -0
  73. package/src/assets/images/templates/download.svg +4 -0
  74. package/src/assets/images/templates/dummy-template.tsx +76 -0
  75. package/src/assets/images/templates/dynamic-field.tsx +119 -0
  76. package/src/assets/images/templates/edit-pencil-icon.tsx +21 -0
  77. package/src/assets/images/templates/edit.svg +3 -0
  78. package/src/assets/images/templates/epo-icon.tsx +16 -0
  79. package/src/assets/images/templates/field.tsx +29 -0
  80. package/src/assets/images/templates/gsv-icon.tsx +31 -0
  81. package/src/assets/images/templates/info-icon.tsx +37 -0
  82. package/src/assets/images/templates/left-arrow.svg +17 -0
  83. package/src/assets/images/templates/pencil.svg +3 -0
  84. package/src/assets/images/templates/personal-letter.tsx +53 -0
  85. package/src/assets/images/templates/postcard.tsx +32 -0
  86. package/src/assets/images/templates/professional-letter.tsx +53 -0
  87. package/src/assets/images/templates/qr-code.tsx +13 -0
  88. package/src/assets/images/templates/real-penned-letters.tsx +57 -0
  89. package/src/assets/images/templates/right-arrow.svg +17 -0
  90. package/src/assets/images/templates/size-image-lg.tsx +20 -0
  91. package/src/assets/images/templates/size-image-mid.tsx +20 -0
  92. package/src/assets/images/templates/size-image-xl.tsx +20 -0
  93. package/src/assets/images/templates/size-image.tsx +20 -0
  94. package/src/assets/images/templates/snap-pack.tsx +67 -0
  95. package/src/assets/images/templates/template-default-design.tsx +21 -0
  96. package/src/assets/images/templates/trash-upload.svg +3 -0
  97. package/src/assets/images/templates/trash.svg +3 -0
  98. package/src/assets/images/templates/tri-fold-self-mailers.tsx +93 -0
  99. package/src/assets/images/templates/upload-image.svg +10 -0
  100. package/src/assets/images/templates/x.svg +3 -0
  101. package/src/assets/images/thumbnails/one.svg +9 -0
  102. package/src/assets/images/tooltip/tool-arrow.tsx +25 -0
  103. package/src/components/CreateTemplate/V2/index.tsx +525 -0
  104. package/src/components/CreateTemplate/V2/styles.scss +372 -0
  105. package/src/components/CreateTemplate/index.tsx +508 -0
  106. package/src/components/CreateTemplate/styles.scss +404 -0
  107. package/src/components/GenericUIBlocks/Button/index.tsx +54 -0
  108. package/src/components/GenericUIBlocks/Button/styles.scss +43 -0
  109. package/src/components/GenericUIBlocks/CircularProgress/index.tsx +18 -0
  110. package/src/components/GenericUIBlocks/CircularProgress/styles.scss +93 -0
  111. package/src/components/GenericUIBlocks/CustomTooltip/index.tsx +88 -0
  112. package/src/components/GenericUIBlocks/CustomTooltip/styles.scss +19 -0
  113. package/src/components/GenericUIBlocks/Dialog/V2/index.tsx +227 -0
  114. package/src/components/GenericUIBlocks/Dialog/V2/styles.scss +289 -0
  115. package/src/components/GenericUIBlocks/Dialog/index.tsx +185 -0
  116. package/src/components/GenericUIBlocks/Dialog/styles.scss +227 -0
  117. package/src/components/GenericUIBlocks/Divider/index.tsx +12 -0
  118. package/src/components/GenericUIBlocks/Divider/styles.scss +7 -0
  119. package/src/components/GenericUIBlocks/GeneralSelect/index.tsx +114 -0
  120. package/src/components/GenericUIBlocks/GeneralSelect/styles.scss +406 -0
  121. package/src/components/GenericUIBlocks/GeneralTooltip/index.tsx +25 -0
  122. package/src/components/GenericUIBlocks/GeneralTooltip/styles.scss +20 -0
  123. package/src/components/GenericUIBlocks/GenericSnackbar/Toast/index.tsx +91 -0
  124. package/src/components/GenericUIBlocks/GenericSnackbar/Toast/styles.scss +92 -0
  125. package/src/components/GenericUIBlocks/Grid/index.tsx +82 -0
  126. package/src/components/GenericUIBlocks/Input/index.tsx +269 -0
  127. package/src/components/GenericUIBlocks/Input/styles.scss +332 -0
  128. package/src/components/GenericUIBlocks/Tabs/index.tsx +71 -0
  129. package/src/components/GenericUIBlocks/Tabs/styles.scss +42 -0
  130. package/src/components/GenericUIBlocks/Typography/index.tsx +18 -0
  131. package/src/components/GenericUIBlocks/Typography/styles.scss +27 -0
  132. package/src/components/SidePanel/CustomAddOns/index.tsx +342 -0
  133. package/src/components/SidePanel/CustomAddOns/styles.scss +86 -0
  134. package/src/components/SidePanel/CustomBlockColors/index.tsx +211 -0
  135. package/src/components/SidePanel/CustomBlockColors/styles.scss +80 -0
  136. package/src/components/SidePanel/CustomFields/customFieldSection.tsx +547 -0
  137. package/src/components/SidePanel/CustomFields/styles.scss +64 -0
  138. package/src/components/SidePanel/CustomQRCode/V2/QRCodeModal/index.tsx +172 -0
  139. package/src/components/SidePanel/CustomQRCode/V2/QRCodeModal/styles.scss +46 -0
  140. package/src/components/SidePanel/CustomQRCode/index.tsx +1070 -0
  141. package/src/components/SidePanel/CustomQRCode/styles.scss +149 -0
  142. package/src/components/SidePanel/CustomUploads/V2/index.tsx +542 -0
  143. package/src/components/SidePanel/CustomUploads/V2/styles.scss +267 -0
  144. package/src/components/SidePanel/CustomUploads/index.tsx +301 -0
  145. package/src/components/SidePanel/Templates/ModalGallery/HireDesigner/index.tsx +424 -0
  146. package/src/components/SidePanel/Templates/ModalGallery/HireDesigner/styles.scss +180 -0
  147. package/src/components/SidePanel/Templates/ModalGallery/V2/index.tsx +235 -0
  148. package/src/components/SidePanel/Templates/ModalGallery/V2/styles.scss +244 -0
  149. package/src/components/SidePanel/Templates/ModalGallery/index.tsx +231 -0
  150. package/src/components/SidePanel/Templates/SideBarGallery/index.tsx +233 -0
  151. package/src/components/SidePanel/Templates/SideBarGallery/styles.scss +152 -0
  152. package/src/components/SidePanel/Templates/TemplatesCard/V2/index.tsx +149 -0
  153. package/src/components/SidePanel/Templates/TemplatesCard/V2/styles.scss +156 -0
  154. package/src/components/SidePanel/Templates/TemplatesCard/index.tsx +160 -0
  155. package/src/components/SidePanel/Templates/TemplatesCard/styles.scss +98 -0
  156. package/src/components/SidePanel/Templates/customTemplateSection.tsx +793 -0
  157. package/src/components/SidePanel/Templates/styles.scss +244 -0
  158. package/src/components/SidePanel/index.tsx +160 -0
  159. package/src/components/TemplateBuilder/index.tsx +585 -0
  160. package/src/components/TemplateBuilder/styles.scss +100 -0
  161. package/src/components/TemplateTypes/index.tsx +96 -0
  162. package/src/components/TemplateTypes/styles.scss +91 -0
  163. package/src/components/TopNavigation/ConfirmNavigateDialog/index.tsx +81 -0
  164. package/src/components/TopNavigation/ConfirmNavigateDialog/styles.scss +123 -0
  165. package/src/components/TopNavigation/DuplicateTemplateModal.tsx +103 -0
  166. package/src/components/TopNavigation/EditTemplateNameModel/index.tsx +71 -0
  167. package/src/components/TopNavigation/EditTemplateNameModel/styles.scss +88 -0
  168. package/src/components/TopNavigation/SaveTemplateModel/index.tsx +201 -0
  169. package/src/components/TopNavigation/SaveTemplateModel/styles.scss +128 -0
  170. package/src/components/TopNavigation/index.tsx +938 -0
  171. package/src/components/TopNavigation/styles.scss +303 -0
  172. package/src/importMeta.d.ts +31 -0
  173. package/src/index.scss +131 -0
  174. package/src/index.tsx +238 -0
  175. package/src/libs/test.ts +7 -0
  176. package/src/redux/actions/action-types.ts +52 -0
  177. package/src/redux/actions/customQRCodeActions.ts +54 -0
  178. package/src/redux/actions/snackbarActions.ts +16 -0
  179. package/src/redux/actions/templateActions.ts +236 -0
  180. package/src/redux/reducers/customFieldReducer.ts +99 -0
  181. package/src/redux/reducers/customQRCodeReducer.ts +58 -0
  182. package/src/redux/reducers/index.ts +15 -0
  183. package/src/redux/reducers/snackbarReducer.ts +40 -0
  184. package/src/redux/reducers/templateReducer.ts +485 -0
  185. package/src/redux/store.ts +18 -0
  186. package/src/styles/colors.scss +61 -0
  187. package/src/test/mocks.js +89 -0
  188. package/src/test/setupJest.js +1 -0
  189. package/src/utils/api.ts +36 -0
  190. package/src/utils/constants.ts +182 -0
  191. package/src/utils/customStyles.ts +45 -0
  192. package/src/utils/fetchWrapper.ts +73 -0
  193. package/src/utils/fonts.json +1597 -0
  194. package/src/utils/helper.ts +205 -0
  195. package/src/utils/local-storage.ts +15 -0
  196. package/src/utils/message.ts +162 -0
  197. package/src/utils/products.ts +186 -0
  198. package/src/utils/template-builder.ts +328 -0
  199. package/src/utils/templateIdentifierArea/biFold.ts +107 -0
  200. package/src/utils/templateIdentifierArea/index.ts +35 -0
  201. package/src/utils/templateIdentifierArea/personal.ts +107 -0
  202. package/src/utils/templateIdentifierArea/postCards.ts +163 -0
  203. package/src/utils/templateIdentifierArea/professional.ts +125 -0
  204. package/src/utils/templateIdentifierArea/snapPack.ts +107 -0
  205. package/src/utils/templateIdentifierArea/triFold.ts +107 -0
  206. package/src/utils/templateRestrictedArea/biFold.ts +329 -0
  207. package/src/utils/templateRestrictedArea/nonWindowProfessional.ts +90 -0
  208. package/src/utils/templateRestrictedArea/personal.ts +90 -0
  209. package/src/utils/templateRestrictedArea/postCard.ts +334 -0
  210. package/src/utils/templateRestrictedArea/postCardJumbo.tsx +408 -0
  211. package/src/utils/templateRestrictedArea/professional.ts +318 -0
  212. package/src/utils/templateRestrictedArea/realPenned.ts +233 -0
  213. package/src/utils/templateRestrictedArea/snapPack.ts +1009 -0
  214. package/src/utils/templateRestrictedArea/triFold.ts +330 -0
  215. package/src/utils/templateSafetyBorders/biFold.ts +91 -0
  216. package/src/utils/templateSafetyBorders/index.ts +43 -0
  217. package/src/utils/templateSafetyBorders/personal.ts +41 -0
  218. package/src/utils/templateSafetyBorders/postCards.ts +259 -0
  219. package/src/utils/templateSafetyBorders/professional.ts +78 -0
  220. package/src/utils/templateSafetyBorders/snapPack.ts +165 -0
  221. package/src/utils/templateSafetyBorders/triFold.ts +114 -0
  222. package/src/utils/templateSafetyBorders/types.d.ts +68 -0
  223. package/src/utils/types.ts +12 -0
  224. package/src/v2Theme.scss +142 -0
  225. package/tsconfig.json +29 -0
  226. package/tsconfig.node.json +12 -0
  227. package/update-version.js +23 -0
  228. package/version.js +1 -0
  229. package/vite.config.ts +8 -0
  230. package/webpack.config.js +80 -0
@@ -0,0 +1,259 @@
1
+ import { createBorder, createSafetyTextElement } from "../helper";
2
+ import { Element, Store } from "./types"
3
+
4
+ export const addSafetyBordersTo4x6PostCard = (store: Store): void => {
5
+ const randomizedId = Math.random().toString(36).substring(2, 7);
6
+
7
+ const safetyBordersTextFirst = createSafetyTextElement(
8
+ `safety-text-1-${randomizedId}`,
9
+ -21,
10
+ 3.6,
11
+ 543,
12
+ "Keep important text/images inside the green line. Content beyond this line may be trimmed during production."
13
+ );
14
+
15
+ const firstPageBorders: Element = {
16
+ id: `safety-border-1-${randomizedId}`,
17
+ type: "group",
18
+ opacity: 1,
19
+ visible: true,
20
+ selectable: false,
21
+ removable: false,
22
+ alwaysOnTop: true,
23
+ showInExport: false,
24
+ children: [
25
+ createBorder(`top-1-${randomizedId}`, 18.19, 14.7, 539.61, 1.97, 0),
26
+ createBorder(`bottom-1-${randomizedId}`, 18.19, 367.32, 539.61, 1.97, 0),
27
+ createBorder(`left-1-${randomizedId}`, 17.21, 368.31, 352.62, 1.97, -90),
28
+ createBorder(`right-1-${randomizedId}`, 556.82, 368.31, 352.62, 1.97, -90),
29
+ ],
30
+ };
31
+
32
+
33
+ const safetyBordersTextSecond = createSafetyTextElement(
34
+ `safety-text-2-${randomizedId}`,
35
+ -21,
36
+ 3.6,
37
+ 543,
38
+ "Keep important text/images inside the green line. Content beyond this line may be trimmed during production."
39
+ );
40
+
41
+ const secondPageBorders: Element = {
42
+ id: `safety-border-2-${randomizedId}`,
43
+ type: "group",
44
+ opacity: 1,
45
+ visible: true,
46
+ selectable: false,
47
+ removable: false,
48
+ alwaysOnTop: true,
49
+ showInExport: false,
50
+ children: [
51
+ createBorder(`top-2-${randomizedId}`, 18.19, 14.7, 539.61, 1.97, 0),
52
+ createBorder(`bottom-2-${randomizedId}`, 18.19, 367.32, 539.61, 1.97, 0),
53
+ createBorder(`left-2-${randomizedId}`, 17.21, 368.31, 352.62, 1.97, -90),
54
+ createBorder(`right-2-${randomizedId}`, 556.82, 368.31, 352.62, 1.97, -90),
55
+ ],
56
+ };
57
+
58
+ // Add elements to the pages
59
+ store.pages[0]?.addElement(firstPageBorders);
60
+ store?.pages[0]?.addElement(safetyBordersTextFirst);
61
+
62
+ store.pages[1]?.addElement(secondPageBorders);
63
+ store.pages[1]?.addElement(safetyBordersTextSecond);
64
+
65
+ // Clear history
66
+ store.history.clear();
67
+ };
68
+
69
+ export const addSafetyBordersTo6x9PostCard = (store: Store): void => {
70
+ const randomizedId = Math.random().toString(36).substring(2, 7);
71
+
72
+ const safetyBordersTextFirst = createSafetyTextElement(
73
+ `safety-text-1-${randomizedId}`,
74
+ -8.29,
75
+ 5.8,
76
+ 543,
77
+ "Keep important text/images inside the green line. Content beyond this line may be trimmed during production."
78
+ );
79
+
80
+ const firstPageBorders: Element = {
81
+ id: `safety-border-1-${randomizedId}`,
82
+ type: "group",
83
+ opacity: 1,
84
+ visible: true,
85
+ selectable: false,
86
+ removable: false,
87
+ alwaysOnTop: true,
88
+ showInExport: false,
89
+ children: [
90
+ createBorder(`top-1-${randomizedId}`, 28, 22.5, 808, 2.94, 0),
91
+ createBorder(`bottom-1-${randomizedId}`, 28, 550, 808, 2.94, 0),
92
+ createBorder(`left-1-${randomizedId}`, 26.5, 552, 528, 2.94, -90),
93
+ createBorder(`right-1-${randomizedId}`, 834.5, 552, 528, 2.94, -90),
94
+ ],
95
+ };
96
+
97
+ const safetyBordersTextSecond = createSafetyTextElement(
98
+ `safety-text-2-${randomizedId}`,
99
+ -8.6,
100
+ 5.09,
101
+ 543,
102
+ "Keep important text/images inside the green line. Content beyond this line may be trimmed during production."
103
+ );
104
+
105
+ const secondPageBorders: Element = {
106
+ id: `safety-border-2-${randomizedId}`,
107
+ type: "group",
108
+ opacity: 1,
109
+ visible: true,
110
+ selectable: false,
111
+ removable: false,
112
+ alwaysOnTop: true,
113
+ showInExport: false,
114
+ children: [
115
+ createBorder(`top-2-${randomizedId}`, 28, 22.5, 808, 2.94, 0),
116
+ createBorder(`bottom-2-${randomizedId}`, 28, 550, 808, 2.94, 0),
117
+ createBorder(`left-2-${randomizedId}`, 26.5, 552, 528, 2.94, -90),
118
+ createBorder(`right-2-${randomizedId}`, 834.5, 552, 528, 2.94, -90),
119
+ ],
120
+ };
121
+
122
+ // Add elements to the pages
123
+ store.pages[0]?.addElement(firstPageBorders);
124
+ store?.pages[0]?.addElement(safetyBordersTextFirst);
125
+
126
+ store.pages[1]?.addElement(secondPageBorders);
127
+ store.pages[1]?.addElement(safetyBordersTextSecond);
128
+
129
+ // Clear history
130
+ store.history.clear();
131
+ };
132
+
133
+ export const addSafetyBordersTo6x11PostCard = (store: Store): void => {
134
+ const randomizedId = Math.random().toString(36).substring(2, 7);
135
+
136
+ const safetyBordersTextFirst = createSafetyTextElement(
137
+ `safety-text-1-${randomizedId}`,
138
+ -8.29,
139
+ 5.8,
140
+ 543,
141
+ "Keep important text/images inside the green line. Content beyond this line may be trimmed during production."
142
+ );
143
+
144
+ const firstPageBorders: Element = {
145
+ id: `safety-border-1-${randomizedId}`,
146
+ type: "group",
147
+ opacity: 1,
148
+ visible: true,
149
+ selectable: false,
150
+ removable: false,
151
+ alwaysOnTop: true,
152
+ showInExport: false,
153
+ children: [
154
+ createBorder(`top-1-${randomizedId}`, 25.5, 23.8, 1005, 2.94, 0),
155
+ createBorder(`bottom-1-${randomizedId}`, 25.5, 549, 1005, 2.94, 0),
156
+ createBorder(`left-1-${randomizedId}`, 24, 550, 525, 2.94, -90),
157
+ createBorder(`right-1-${randomizedId}`, 1028, 550, 525, 2.94, -90),
158
+ ],
159
+ };
160
+
161
+ const safetyBordersTextSecond = createSafetyTextElement(
162
+ `safety-text-2-${randomizedId}`,
163
+ -8.6,
164
+ 5.09,
165
+ 543,
166
+ "Keep important text/images inside the green line. Content beyond this line may be trimmed during production."
167
+ );
168
+
169
+ const secondPageBorders: Element = {
170
+ id: `safety-border-2-${randomizedId}`,
171
+ type: "group",
172
+ opacity: 1,
173
+ visible: true,
174
+ selectable: false,
175
+ removable: false,
176
+ alwaysOnTop: true,
177
+ showInExport: false,
178
+ children: [
179
+ createBorder(`top-2-${randomizedId}`, 25.5, 23.8, 1005, 2.94, 0),
180
+ createBorder(`bottom-2-${randomizedId}`, 25.5, 549, 1005, 2.94, 0),
181
+ createBorder(`left-2-${randomizedId}`, 24, 550, 525, 2.94, -90),
182
+ createBorder(`right-2-${randomizedId}`, 1028, 550, 525, 2.94, -90),
183
+ ],
184
+ };
185
+
186
+ // Add elements to the pages
187
+ store.pages[0]?.addElement(firstPageBorders);
188
+ store?.pages[0]?.addElement(safetyBordersTextFirst);
189
+
190
+ store.pages[1]?.addElement(secondPageBorders);
191
+ store.pages[1]?.addElement(safetyBordersTextSecond);
192
+
193
+ // Clear history
194
+ store.history.clear();
195
+ };
196
+
197
+ export const addSafetyBordersTo12x9PostCard = (store: Store): void => {
198
+ const randomizedId = Math.random().toString(36).substring(2, 7);
199
+
200
+ const safetyBordersTextFirst = createSafetyTextElement(
201
+ `safety-text-1-${randomizedId}`,
202
+ -8.29,
203
+ 5.81,
204
+ 543,
205
+ "Keep important text/images inside the green line. Content beyond this line may be trimmed during production."
206
+ );
207
+
208
+ const firstPageBorders: Element = {
209
+ id: `safety-border-1-${randomizedId}`,
210
+ type: "group",
211
+ opacity: 1,
212
+ visible: true,
213
+ selectable: false,
214
+ removable: false,
215
+ alwaysOnTop: true,
216
+ showInExport: false,
217
+ children: [
218
+ createBorder(`top-1-${randomizedId}`, 26, 23.5, 811, 4, 0),
219
+ createBorder(`bottom-1-${randomizedId}`, 26, 1123.6, 811, 4, 0),
220
+ createBorder(`left-1-${randomizedId}`, 24.16, 1125, 1100, 4, -90),
221
+ createBorder(`right-1-${randomizedId}`, 835, 1125, 1100, 4, -90),
222
+ ],
223
+ };
224
+
225
+ const safetyBordersTextSecond = createSafetyTextElement(
226
+ `safety-text-2-${randomizedId}`,
227
+ -8.29,
228
+ 5.81,
229
+ 543,
230
+ "Keep important text/images inside the green line. Content beyond this line may be trimmed during production."
231
+ );
232
+
233
+ const secondPageBorders: Element = {
234
+ id: `safety-border-2-${randomizedId}`,
235
+ type: "group",
236
+ opacity: 1,
237
+ visible: true,
238
+ selectable: false,
239
+ removable: false,
240
+ alwaysOnTop: true,
241
+ showInExport: false,
242
+ children: [
243
+ createBorder(`top-2-${randomizedId}`, 26, 23.5, 811, 4, 0),
244
+ createBorder(`bottom-2-${randomizedId}`, 26, 1123.6, 811, 4, 0),
245
+ createBorder(`left-2-${randomizedId}`, 24.16, 1125, 1100, 4, -90),
246
+ createBorder(`right-2-${randomizedId}`, 835, 1125, 1100, 4, -90),
247
+ ],
248
+ };
249
+
250
+ // Add elements to the pages
251
+ store.pages[0]?.addElement(firstPageBorders);
252
+ store?.pages[0]?.addElement(safetyBordersTextFirst);
253
+
254
+ store.pages[1]?.addElement(secondPageBorders);
255
+ store.pages[1]?.addElement(safetyBordersTextSecond);
256
+
257
+ // Clear history
258
+ store.history.clear();
259
+ }
@@ -0,0 +1,78 @@
1
+ import { createBorder, createSafetyTextElement } from "../helper";
2
+ import { Element, Store } from "./types"
3
+
4
+ export const addSafetyBordersToNonWindowProfessioanl = (store: Store, pageIndex: number = 0): void => {
5
+ const randomizedId = Math.random().toString(36).substring(2, 7);
6
+
7
+ const safetyBordersTextFirst = createSafetyTextElement(
8
+ `safety-text-1-${randomizedId}`,
9
+ -15,
10
+ 5.81,
11
+ 543,
12
+ "Keep important text/images inside the green line. Content beyond this line may be trimmed during production."
13
+ );
14
+
15
+ const firstPageBorders: Element = {
16
+ id: `safety-border-1-${randomizedId}`,
17
+ type: "group",
18
+ opacity: 1,
19
+ visible: true,
20
+ selectable: false,
21
+ removable: false,
22
+ alwaysOnTop: true,
23
+ showInExport: false,
24
+ children: [
25
+ createBorder(`top-1-${randomizedId}`, 24, 22, 768, 3.85, 0),
26
+ createBorder(`bottom-1-${randomizedId}`, 24, 1028, 768, 3.85, 0),
27
+ createBorder(`left-1-${randomizedId}`, 22, 1030, 1006, 3.85, -90),
28
+ createBorder(`right-1-${randomizedId}`, 790, 1030, 1006, 3.85, -90),
29
+ ],
30
+ };
31
+
32
+ // Add elements to the pages
33
+ store.pages[pageIndex]?.addElement(firstPageBorders);
34
+ store?.pages[pageIndex]?.addElement(safetyBordersTextFirst);
35
+
36
+
37
+ // Clear history
38
+ store.history.clear();
39
+ };
40
+
41
+
42
+ export const addSafetyBordersToWindowProfessioanl = (store: Store, pageIndex: number = 0): void => {
43
+ const randomizedId = Math.random().toString(36).substring(2, 7);
44
+
45
+
46
+ const safetyBordersTextFirst = createSafetyTextElement(
47
+ `safety-text-1-${randomizedId}`,
48
+ -15,
49
+ 5.81,
50
+ 543,
51
+ "Keep important text/images inside the green line. Content beyond this line may be trimmed during production."
52
+ );
53
+
54
+ const firstPageBorders: Element = {
55
+ id: `safety-border-1-${randomizedId}`,
56
+ type: "group",
57
+ opacity: 1,
58
+ visible: true,
59
+ selectable: false,
60
+ removable: false,
61
+ alwaysOnTop: true,
62
+ showInExport: false,
63
+ children: [
64
+ createBorder(`top-1-${randomizedId}`, 24, 23, 768, 3.85, 0),
65
+ createBorder(`bottom-1-${randomizedId}`, 24, 1030, 768, 3.85, 0),
66
+ createBorder(`left-1-${randomizedId}`, 22, 1030, 1006, 3.85, -90),
67
+ createBorder(`right-1-${randomizedId}`, 790, 1030, 1006, 3.85, -90),
68
+ ],
69
+ };
70
+
71
+ // Add elements to the pages
72
+ store.pages[pageIndex]?.addElement(firstPageBorders);
73
+ store?.pages[pageIndex]?.addElement(safetyBordersTextFirst);
74
+
75
+
76
+ // Clear history
77
+ store.history.clear();
78
+ };
@@ -0,0 +1,165 @@
1
+ import { createBorder, createSafetyTextElement } from "../helper";
2
+ import { Element, Store } from "./types";
3
+
4
+ export const addSafetyBordersToSnapPackMailer = (store: Store): void => {
5
+ const randomizedId = Math.random().toString(36).substring(2, 7);
6
+
7
+ const safetyBordersTextFirst = createSafetyTextElement(
8
+ `safety-text-1-${randomizedId}`,
9
+ -15,
10
+ 5.81,
11
+ 543,
12
+ "Keep important text/images inside the green line. Content beyond this line may be trimmed during production."
13
+ );
14
+
15
+ const safetyBordersInsidePanel = createSafetyTextElement(
16
+ `inside-panel-${randomizedId}`,
17
+ 817,
18
+ 663.72,
19
+ 410,
20
+ "Inside Panel",
21
+ 90,
22
+ 18
23
+ );
24
+
25
+ const safetyBordersOutsideFrontPanel = createSafetyTextElement(
26
+ `outside-front-panel-${randomizedId}`,
27
+ 817,
28
+ 321,
29
+ 410,
30
+ "Outside Front Panel",
31
+ 90,
32
+ 18
33
+ );
34
+
35
+ const safetyBordersOutsideBackPanel = createSafetyTextElement(
36
+ `outside-back-panel-${randomizedId}`,
37
+ 817,
38
+ 20.2,
39
+ 410,
40
+ "Outside Back Panel",
41
+ 90,
42
+ 18
43
+ );
44
+
45
+ const safetyLineTextFirst = createSafetyTextElement(
46
+ `safety-line-4-${randomizedId}`,
47
+ -25.2,
48
+ 334.9,
49
+ 866,
50
+ "Fold Line",
51
+ 0,
52
+ 14
53
+ );
54
+
55
+ const safetyLineTextSecond = createSafetyTextElement(
56
+ `safety-line-5-${randomizedId}`,
57
+ -25.2,
58
+ 685,
59
+ 866,
60
+ "Fold Line",
61
+ 0,
62
+ 14
63
+ );
64
+
65
+ const safetyLineTextThird = createSafetyTextElement(
66
+ `safety-line-6-${randomizedId}`,
67
+ -25.2,
68
+ 745,
69
+ 866,
70
+ "Perforated Fold Line (Detachable Section)",
71
+ 0,
72
+ 14
73
+ );
74
+
75
+ const safetyLineTextFourth = createSafetyTextElement(
76
+ `safety-line-1-${randomizedId}`,
77
+ 840,
78
+ 783,
79
+ 866,
80
+ "Perforated Fold Line (Detachable Section)",
81
+ 180,
82
+ 14
83
+ );
84
+
85
+ const safetyLineTextFifth = createSafetyTextElement(
86
+ `safety-line-2-${randomizedId}`,
87
+ 840,
88
+ 721,
89
+ 866,
90
+ "Fold Line",
91
+ 180,
92
+ 14
93
+ );
94
+
95
+ const safetyLineTextSixth = createSafetyTextElement(
96
+ `safety-line-3-${randomizedId}`,
97
+ 840,
98
+ 365,
99
+ 866,
100
+ "Fold Line",
101
+ 180,
102
+ 14
103
+ );
104
+
105
+ const firstPageBorders: Element = {
106
+ id: `safety-border-1-${randomizedId}`,
107
+ type: "group",
108
+ opacity: 1,
109
+ visible: true,
110
+ selectable: false,
111
+ removable: false,
112
+ alwaysOnTop: true,
113
+ showInExport: false,
114
+ children: [
115
+ createBorder(`top-1-${randomizedId}`, 24, 22, 768, 3.85, 0),
116
+ createBorder(`bottom-1-${randomizedId}`, 24, 1028, 768, 3.85, 0),
117
+ createBorder(`left-1-${randomizedId}`, 22, 1030, 1006, 3.85, -90),
118
+ createBorder(`right-1-${randomizedId}`, 790, 1030, 1006, 3.85, -90),
119
+ createBorder(`fold-line-1-${randomizedId}`, 840.8, 353.92, 866, 2, 180, 'rgba(208,2,27,1)'),
120
+ createBorder(`fold-line-2-${randomizedId}`, 840.8, 703, 866, 2, 180, 'rgba(208,2,27,1)'),
121
+ createBorder(`fold-line-3-${randomizedId}`, 840.8, 765.4, 866, 2, 180, 'rgba(208,2,27,1)'),
122
+ ],
123
+ };
124
+
125
+ const secondPageBorders: Element = {
126
+ id: `safety-border-2-${randomizedId}`,
127
+ type: "group",
128
+ opacity: 1,
129
+ visible: true,
130
+ selectable: false,
131
+ removable: false,
132
+ alwaysOnTop: true,
133
+ showInExport: false,
134
+ children: [
135
+ createBorder(`top-2-${randomizedId}`, 24, 22, 768, 3.85, 0),
136
+ createBorder(`bottom-2-${randomizedId}`, 24, 1028, 768, 3.85, 0),
137
+ createBorder(`left-2-${randomizedId}`, 22, 1030, 1006, 3.85, -90),
138
+ createBorder(`right-2-${randomizedId}`, 790, 1030, 1006, 3.85, -90),
139
+ createBorder(`fold-line-4-${randomizedId}`, -25, 765.4, 866, 2, 0, 'rgba(208,2,27,1)'),
140
+ createBorder(`fold-line-5-${randomizedId}`, -25, 703, 866, 2, 0, 'rgba(208,2,27,1)'),
141
+ createBorder(`fold-line-6-${randomizedId}`, -25, 347, 866, 2, 0, 'rgba(208,2,27,1)'),
142
+ ],
143
+ };
144
+
145
+ // Add elements to the pages
146
+
147
+ store.pages[0]?.addElement(firstPageBorders);
148
+ store?.pages[0]?.addElement(safetyBordersTextFirst);
149
+ store?.pages[0]?.addElement(safetyLineTextFirst);
150
+ store?.pages[0]?.addElement(safetyLineTextSecond);
151
+ store?.pages[0]?.addElement(safetyLineTextThird);
152
+
153
+
154
+ store.pages[1]?.addElement(secondPageBorders);
155
+ store?.pages[1]?.addElement(safetyBordersTextFirst);
156
+ store?.pages[1]?.addElement(safetyBordersInsidePanel);
157
+ store?.pages[1]?.addElement(safetyBordersOutsideFrontPanel);
158
+ store?.pages[1]?.addElement(safetyBordersOutsideBackPanel);
159
+ store?.pages[1]?.addElement(safetyLineTextFourth);
160
+ store?.pages[1]?.addElement(safetyLineTextFifth);
161
+ store?.pages[1]?.addElement(safetyLineTextSixth);
162
+
163
+ // Clear history
164
+ store.history.clear();
165
+ };
@@ -0,0 +1,114 @@
1
+ import { createBorder, createSafetyTextElement } from "../helper";
2
+ import { Element, Store } from "./types"
3
+
4
+ export const addSafetyBordersToTriFold = (store: Store): void => {
5
+ const randomizedId = Math.random().toString(36).substring(2, 7);
6
+
7
+ const safetyBordersTextFirst = createSafetyTextElement(
8
+ `safety-text-1-${randomizedId}`,
9
+ -8.29,
10
+ 5.81,
11
+ 543,
12
+ "Keep important text/images inside the green line. Content beyond this line may be trimmed during production."
13
+ );
14
+
15
+ const safetyLineTextFirst = createSafetyTextElement(
16
+ `safety-line-1-${randomizedId}`,
17
+ -2,
18
+ 366,
19
+ 866,
20
+ "Fold Line",
21
+ 0
22
+ );
23
+
24
+ const safetySecondLineTextFirst = createSafetyTextElement(
25
+ `safety-line-2-${randomizedId}`,
26
+ -2,
27
+ 744,
28
+ 866,
29
+ "Fold Line",
30
+ 0
31
+ );
32
+
33
+ const firstPageBorders: Element = {
34
+ id: `safety-border-1-${randomizedId}`,
35
+ type: "group",
36
+ opacity: 1,
37
+ visible: true,
38
+ selectable: false,
39
+ removable: false,
40
+ alwaysOnTop: true,
41
+ showInExport: false,
42
+ children: [
43
+ createBorder(`top-1-${randomizedId}`, 26, 23.5, 811, 4, 0),
44
+ createBorder(`bottom-1-${randomizedId}`, 26, 1123.6, 811, 4, 0),
45
+ createBorder(`left-1-${randomizedId}`, 24.16, 1125, 1100, 4, -90),
46
+ createBorder(`right-1-${randomizedId}`, 835, 1125, 1100, 4, -90),
47
+ createBorder(`fold-line-1-${randomizedId}`, 866, 384, 866, 2, 180, 'rgba(208,2,27,1)'),
48
+ createBorder(`fold-line-2-${randomizedId}`, 866, 763, 866, 2, 180, 'rgba(208,2,27,1)'),
49
+ ],
50
+ };
51
+
52
+ const safetyBordersTextSecond = createSafetyTextElement(
53
+ `safety-text-2-${randomizedId}`,
54
+ -8.29,
55
+ 5.81,
56
+ 543,
57
+ "Keep important text/images inside the green line. Content beyond this line may be trimmed during production."
58
+ );
59
+
60
+ const safetyLineTextSecond = createSafetyTextElement(
61
+ `safety-line-2-1-${randomizedId}`,
62
+ -2,
63
+ 366,
64
+ 866,
65
+ "Fold Line",
66
+ 0
67
+ );
68
+
69
+ const safetySecondLineTextSecond = createSafetyTextElement(
70
+ `safety-line-2-2-${randomizedId}`,
71
+ -2,
72
+ 744,
73
+ 866,
74
+ "Fold Line",
75
+ 0
76
+ );
77
+
78
+
79
+ const secondPageBorders: Element = {
80
+ id: `safety-border-2-${randomizedId}`,
81
+ type: "group",
82
+ opacity: 1,
83
+ visible: true,
84
+ selectable: false,
85
+ removable: false,
86
+ alwaysOnTop: true,
87
+ showInExport: false,
88
+ children: [
89
+ createBorder(`top-2-${randomizedId}`, 26, 23.5, 811, 4, 0),
90
+ createBorder(`bottom-2-${randomizedId}`, 26, 1123.6, 811, 4, 0),
91
+ createBorder(`left-2-${randomizedId}`, 24.16, 1125, 1100, 4, -90),
92
+ createBorder(`right-2-${randomizedId}`, 835, 1125, 1100, 4, -90),
93
+ createBorder(`fold-line-2-1-${randomizedId}`, 866, 384, 866, 2, 180, 'rgba(208,2,27,1)'),
94
+ createBorder(`fold-line-2-2-${randomizedId}`, 866, 763, 866, 2, 180, 'rgba(208,2,27,1)'),
95
+ ],
96
+ };
97
+
98
+ // Add elements to the pages
99
+ store.pages[0]?.addElement(firstPageBorders);
100
+ store?.pages[0]?.addElement(safetyBordersTextFirst);
101
+ store?.pages[0]?.addElement(safetyLineTextFirst);
102
+ store?.pages[0]?.addElement(safetySecondLineTextFirst);
103
+
104
+ store.pages[1]?.addElement(secondPageBorders);
105
+ store.pages[1]?.addElement(safetyBordersTextSecond);
106
+ store.pages[1]?.addElement(safetyLineTextSecond);
107
+ store.pages[1]?.addElement(safetySecondLineTextSecond);
108
+
109
+
110
+ // Clear history
111
+ store.history.clear();
112
+ };
113
+
114
+
@@ -0,0 +1,68 @@
1
+ export interface Element {
2
+ id: string;
3
+ type: string;
4
+ name?: string;
5
+ opacity: number;
6
+ visible: boolean;
7
+ selectable: boolean;
8
+ removable: boolean;
9
+ alwaysOnTop: boolean;
10
+ showInExport: boolean;
11
+ x?: number;
12
+ y?: number;
13
+ width?: number;
14
+ height?: number;
15
+ rotation?: number;
16
+ text?: string;
17
+ fontWeight?: string;
18
+ fill?: string;
19
+ align?: string;
20
+ verticalAlign?: string;
21
+ strokeWidth?: number;
22
+ stroke?: string;
23
+ lineHeight?: number;
24
+ letterSpacing?: number;
25
+ backgroundEnabled?: boolean;
26
+ backgroundColor?: string;
27
+ backgroundOpacity?: number;
28
+ backgroundCornerRadius?: number;
29
+ backgroundPadding?: number;
30
+ fontSize?: number;
31
+ fontFamily?: string;
32
+ fontStyle?: string;
33
+ animations?: any[];
34
+ blurEnabled?: boolean;
35
+ blurRadius?: number;
36
+ brightnessEnabled?: boolean;
37
+ brightness?: number;
38
+ sepiaEnabled?: boolean;
39
+ grayscaleEnabled?: boolean;
40
+ shadowEnabled?: boolean;
41
+ shadowBlur?: number;
42
+ shadowOffsetX?: number;
43
+ shadowOffsetY?: number;
44
+ shadowColor?: string;
45
+ shadowOpacity?: number;
46
+ draggable?: boolean;
47
+ resizable?: boolean;
48
+ contentEditable?: boolean;
49
+ styleEditable?: boolean;
50
+ color?: string;
51
+ dash?: number[];
52
+ startHead?: string;
53
+ endHead?: string;
54
+ children?: Element[];
55
+ }
56
+
57
+ export interface Page {
58
+ addElement: (element: Element) => void;
59
+ }
60
+
61
+ export interface Store {
62
+ width: number;
63
+ height: number;
64
+ pages: Page[];
65
+ history: {
66
+ clear: () => void;
67
+ };
68
+ }
@@ -0,0 +1,12 @@
1
+ // Define a union type for the allowed add-on values
2
+ export type AddOnValue = 'gsv' | 'property_offer' | 'custom_property_offer';
3
+ export type TemplateTypesValue = 'my_templates' | 'team_templates' | 'olc-templates';
4
+
5
+
6
+ export type AddOnTypes = {
7
+ [key in AddOnValue]?: string;
8
+ };
9
+
10
+ export type TemplateTypes = {
11
+ [key in TemplateTypesValue]?: string;
12
+ };