@servicetitan/dte-pdf-editor 1.4.0 → 1.6.0

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 (356) hide show
  1. package/README.md +286 -267
  2. package/dist/components/{field-config-panel-overlay.d.ts → field-config-panel/field-config-panel-overlay.d.ts} +1 -2
  3. package/dist/components/field-config-panel/field-config-panel-overlay.d.ts.map +1 -0
  4. package/dist/components/field-config-panel/field-config-panel-overlay.js.map +1 -0
  5. package/dist/components/{field-config-panel.d.ts → field-config-panel/field-config-panel.d.ts} +1 -2
  6. package/dist/components/field-config-panel/field-config-panel.d.ts.map +1 -0
  7. package/dist/components/{field-config-panel.js → field-config-panel/field-config-panel.js} +11 -8
  8. package/dist/components/field-config-panel/field-config-panel.js.map +1 -0
  9. package/dist/components/{data-model-field-type-list.d.ts → field-sidebar/data-model-field-type-list.d.ts} +1 -1
  10. package/dist/components/field-sidebar/data-model-field-type-list.d.ts.map +1 -0
  11. package/dist/components/{data-model-field-type-list.js → field-sidebar/data-model-field-type-list.js} +3 -3
  12. package/dist/components/field-sidebar/data-model-field-type-list.js.map +1 -0
  13. package/dist/components/{e-sign-field-type-list.d.ts → field-sidebar/e-sign-field-type-list.d.ts} +1 -1
  14. package/dist/components/field-sidebar/e-sign-field-type-list.d.ts.map +1 -0
  15. package/dist/components/{e-sign-field-type-list.js → field-sidebar/e-sign-field-type-list.js} +1 -1
  16. package/dist/components/field-sidebar/e-sign-field-type-list.js.map +1 -0
  17. package/dist/components/{field-sidebar.d.ts → field-sidebar/field-sidebar.d.ts} +1 -1
  18. package/dist/components/field-sidebar/field-sidebar.d.ts.map +1 -0
  19. package/dist/components/field-sidebar/field-sidebar.js +32 -0
  20. package/dist/components/field-sidebar/field-sidebar.js.map +1 -0
  21. package/dist/components/field-sidebar/field-type.d.ts.map +1 -0
  22. package/dist/components/{field-type.js → field-sidebar/field-type.js} +1 -1
  23. package/dist/components/field-sidebar/field-type.js.map +1 -0
  24. package/dist/components/{fillable-field-type-list.d.ts → field-sidebar/fillable-field-type-list.d.ts} +1 -1
  25. package/dist/components/field-sidebar/fillable-field-type-list.d.ts.map +1 -0
  26. package/dist/components/{fillable-field-type-list.js → field-sidebar/fillable-field-type-list.js} +1 -1
  27. package/dist/components/field-sidebar/fillable-field-type-list.js.map +1 -0
  28. package/dist/components/index.d.ts +3 -0
  29. package/dist/components/index.d.ts.map +1 -0
  30. package/dist/components/index.js +3 -0
  31. package/dist/components/index.js.map +1 -0
  32. package/dist/components/{pdf-canvas.d.ts → pdf-canvas/pdf-canvas.d.ts} +3 -2
  33. package/dist/components/pdf-canvas/pdf-canvas.d.ts.map +1 -0
  34. package/dist/components/pdf-canvas/pdf-canvas.js +14 -0
  35. package/dist/components/pdf-canvas/pdf-canvas.js.map +1 -0
  36. package/dist/components/pdf-canvas/pdf-document-renderer.d.ts.map +1 -0
  37. package/dist/components/{pdf-document-renderer.js → pdf-canvas/pdf-document-renderer.js} +2 -3
  38. package/dist/components/pdf-canvas/pdf-document-renderer.js.map +1 -0
  39. package/dist/components/{pdf-editor.d.ts → pdf-editor/pdf-editor.d.ts} +2 -7
  40. package/dist/components/pdf-editor/pdf-editor.d.ts.map +1 -0
  41. package/dist/components/pdf-editor/pdf-editor.js +27 -0
  42. package/dist/components/pdf-editor/pdf-editor.js.map +1 -0
  43. package/dist/components/pdf-fields-overlay/add-handle.d.ts +7 -0
  44. package/dist/components/pdf-fields-overlay/add-handle.d.ts.map +1 -0
  45. package/dist/components/pdf-fields-overlay/add-handle.js +5 -0
  46. package/dist/components/pdf-fields-overlay/add-handle.js.map +1 -0
  47. package/dist/components/pdf-fields-overlay/pdf-fields-overlay.d.ts +15 -0
  48. package/dist/components/pdf-fields-overlay/pdf-fields-overlay.d.ts.map +1 -0
  49. package/dist/components/pdf-fields-overlay/pdf-fields-overlay.js +6 -0
  50. package/dist/components/pdf-fields-overlay/pdf-fields-overlay.js.map +1 -0
  51. package/dist/components/pdf-fields-overlay/pdf-overlay-field-data-model.d.ts +8 -0
  52. package/dist/components/pdf-fields-overlay/pdf-overlay-field-data-model.d.ts.map +1 -0
  53. package/dist/components/pdf-fields-overlay/pdf-overlay-field-data-model.js +5 -0
  54. package/dist/components/pdf-fields-overlay/pdf-overlay-field-data-model.js.map +1 -0
  55. package/dist/components/pdf-fields-overlay/pdf-overlay-field-e-sign.d.ts +8 -0
  56. package/dist/components/pdf-fields-overlay/pdf-overlay-field-e-sign.d.ts.map +1 -0
  57. package/dist/components/pdf-fields-overlay/pdf-overlay-field-e-sign.js +5 -0
  58. package/dist/components/pdf-fields-overlay/pdf-overlay-field-e-sign.js.map +1 -0
  59. package/dist/components/pdf-fields-overlay/pdf-overlay-field-fillable.d.ts +9 -0
  60. package/dist/components/pdf-fields-overlay/pdf-overlay-field-fillable.d.ts.map +1 -0
  61. package/dist/components/pdf-fields-overlay/pdf-overlay-field-fillable.js +25 -0
  62. package/dist/components/pdf-fields-overlay/pdf-overlay-field-fillable.js.map +1 -0
  63. package/dist/components/pdf-fields-overlay/pdf-overlay-field.d.ts +16 -0
  64. package/dist/components/pdf-fields-overlay/pdf-overlay-field.d.ts.map +1 -0
  65. package/dist/components/pdf-fields-overlay/pdf-overlay-field.js +44 -0
  66. package/dist/components/pdf-fields-overlay/pdf-overlay-field.js.map +1 -0
  67. package/dist/components/pdf-fields-overlay/resize-handle.d.ts.map +1 -0
  68. package/dist/components/pdf-fields-overlay/resize-handle.js.map +1 -0
  69. package/dist/components/pdf-view/pdf-view-data-model.d.ts +9 -0
  70. package/dist/components/pdf-view/pdf-view-data-model.d.ts.map +1 -0
  71. package/dist/components/pdf-view/pdf-view-data-model.js +7 -0
  72. package/dist/components/pdf-view/pdf-view-data-model.js.map +1 -0
  73. package/dist/components/pdf-view/pdf-view-e-sign.d.ts +8 -0
  74. package/dist/components/pdf-view/pdf-view-e-sign.d.ts.map +1 -0
  75. package/dist/components/pdf-view/pdf-view-e-sign.js +5 -0
  76. package/dist/components/pdf-view/pdf-view-e-sign.js.map +1 -0
  77. package/dist/components/pdf-view/pdf-view-fillable.d.ts +13 -0
  78. package/dist/components/pdf-view/pdf-view-fillable.d.ts.map +1 -0
  79. package/dist/components/{pdf-view-fields.js → pdf-view/pdf-view-fillable.js} +14 -13
  80. package/dist/components/pdf-view/pdf-view-fillable.js.map +1 -0
  81. package/dist/components/{pdf-view.d.ts → pdf-view/pdf-view.d.ts} +1 -2
  82. package/dist/components/pdf-view/pdf-view.d.ts.map +1 -0
  83. package/dist/components/{pdf-view.js → pdf-view/pdf-view.js} +8 -6
  84. package/dist/components/pdf-view/pdf-view.js.map +1 -0
  85. package/dist/constants/field.constants.d.ts +3 -3
  86. package/dist/constants/field.constants.d.ts.map +1 -1
  87. package/dist/constants/field.constants.js +4 -3
  88. package/dist/constants/field.constants.js.map +1 -1
  89. package/dist/hooks/index.d.ts +4 -0
  90. package/dist/hooks/index.d.ts.map +1 -1
  91. package/dist/hooks/index.js +4 -0
  92. package/dist/hooks/index.js.map +1 -1
  93. package/dist/hooks/useFieldDrag.d.ts +1 -1
  94. package/dist/hooks/useFieldDrag.d.ts.map +1 -1
  95. package/dist/hooks/useFieldResize.d.ts +1 -1
  96. package/dist/hooks/useFieldResize.d.ts.map +1 -1
  97. package/dist/hooks/useInitializePdfJsWorker.d.ts +2 -0
  98. package/dist/hooks/useInitializePdfJsWorker.d.ts.map +1 -0
  99. package/dist/hooks/useInitializePdfJsWorker.js +8 -0
  100. package/dist/hooks/useInitializePdfJsWorker.js.map +1 -0
  101. package/dist/hooks/usePdfFieldDnD.d.ts +17 -0
  102. package/dist/hooks/usePdfFieldDnD.d.ts.map +1 -0
  103. package/dist/hooks/usePdfFieldDnD.js +78 -0
  104. package/dist/hooks/usePdfFieldDnD.js.map +1 -0
  105. package/dist/hooks/usePdfFieldSelection.d.ts +13 -0
  106. package/dist/hooks/usePdfFieldSelection.d.ts.map +1 -0
  107. package/dist/hooks/usePdfFieldSelection.js +40 -0
  108. package/dist/hooks/usePdfFieldSelection.js.map +1 -0
  109. package/dist/hooks/useToggle.d.ts +8 -0
  110. package/dist/hooks/useToggle.d.ts.map +1 -0
  111. package/dist/hooks/useToggle.js +15 -0
  112. package/dist/hooks/useToggle.js.map +1 -0
  113. package/dist/index.d.ts +2 -3
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +1 -2
  116. package/dist/index.js.map +1 -1
  117. package/dist/interface/{pdf-editor.d.ts → types.d.ts} +8 -2
  118. package/dist/interface/types.d.ts.map +1 -0
  119. package/dist/interface/{pdf-editor.js → types.js} +1 -1
  120. package/dist/interface/types.js.map +1 -0
  121. package/dist/utils/{extract-grouped-fields-from-data-model.utils.d.ts → data-model/extract-fields.utils.d.ts} +2 -2
  122. package/dist/utils/data-model/extract-fields.utils.d.ts.map +1 -0
  123. package/dist/utils/{extract-grouped-fields-from-data-model.utils.js → data-model/extract-fields.utils.js} +2 -2
  124. package/dist/utils/data-model/extract-fields.utils.js.map +1 -0
  125. package/dist/utils/data-model/index.d.ts +3 -0
  126. package/dist/utils/data-model/index.d.ts.map +1 -0
  127. package/dist/utils/data-model/index.js +3 -0
  128. package/dist/utils/data-model/index.js.map +1 -0
  129. package/dist/utils/{resolve-pdf-data-values.d.ts → data-model/resolve-values.utils.d.ts} +2 -2
  130. package/dist/utils/data-model/resolve-values.utils.d.ts.map +1 -0
  131. package/dist/utils/{resolve-pdf-data-values.js → data-model/resolve-values.utils.js} +1 -1
  132. package/dist/utils/data-model/resolve-values.utils.js.map +1 -0
  133. package/dist/utils/{is-drag-over-canvas.utils.d.ts → field/drag-over-canvas.utils.d.ts} +1 -1
  134. package/dist/utils/field/drag-over-canvas.utils.d.ts.map +1 -0
  135. package/dist/utils/{is-drag-over-canvas.utils.js → field/drag-over-canvas.utils.js} +1 -1
  136. package/dist/utils/field/drag-over-canvas.utils.js.map +1 -0
  137. package/dist/utils/{get-field-background-color.d.ts → field/field-background-color.utils.d.ts} +1 -1
  138. package/dist/utils/field/field-background-color.utils.d.ts.map +1 -0
  139. package/dist/utils/{get-field-background-color.js → field/field-background-color.utils.js} +1 -1
  140. package/dist/utils/field/field-background-color.utils.js.map +1 -0
  141. package/dist/utils/{calculate-drop-coordinates.utils.d.ts → field/field-coordinates.utils.d.ts} +1 -1
  142. package/dist/utils/field/field-coordinates.utils.d.ts.map +1 -0
  143. package/dist/utils/{calculate-drop-coordinates.utils.js → field/field-coordinates.utils.js} +2 -2
  144. package/dist/utils/field/field-coordinates.utils.js.map +1 -0
  145. package/dist/utils/{handle-field-drag.utils.d.ts → field/field-drag.utils.d.ts} +11 -2
  146. package/dist/utils/field/field-drag.utils.d.ts.map +1 -0
  147. package/dist/utils/field/field-drag.utils.js +73 -0
  148. package/dist/utils/field/field-drag.utils.js.map +1 -0
  149. package/dist/utils/field/field-placeholder-text.utils.d.ts +3 -0
  150. package/dist/utils/field/field-placeholder-text.utils.d.ts.map +1 -0
  151. package/dist/utils/{get-field-placeholder-text.js → field/field-placeholder-text.utils.js} +1 -1
  152. package/dist/utils/field/field-placeholder-text.utils.js.map +1 -0
  153. package/dist/utils/{handle-field-resize.utils.d.ts → field/field-resize.utils.d.ts} +2 -2
  154. package/dist/utils/field/field-resize.utils.d.ts.map +1 -0
  155. package/dist/utils/{handle-field-resize.utils.js → field/field-resize.utils.js} +3 -4
  156. package/dist/utils/field/field-resize.utils.js.map +1 -0
  157. package/dist/utils/field/index.d.ts +7 -0
  158. package/dist/utils/field/index.d.ts.map +1 -0
  159. package/dist/utils/field/index.js +7 -0
  160. package/dist/utils/field/index.js.map +1 -0
  161. package/dist/utils/index.d.ts +5 -17
  162. package/dist/utils/index.d.ts.map +1 -1
  163. package/dist/utils/index.js +5 -17
  164. package/dist/utils/index.js.map +1 -1
  165. package/dist/utils/path/generate-e-sign-path.d.ts +3 -0
  166. package/dist/utils/path/generate-e-sign-path.d.ts.map +1 -0
  167. package/dist/utils/path/generate-e-sign-path.js.map +1 -0
  168. package/dist/utils/path/generate-fillable-path.d.ts.map +1 -0
  169. package/dist/utils/path/generate-fillable-path.js.map +1 -0
  170. package/dist/utils/path/index.d.ts +4 -0
  171. package/dist/utils/path/index.d.ts.map +1 -0
  172. package/dist/utils/path/index.js +4 -0
  173. package/dist/utils/path/index.js.map +1 -0
  174. package/dist/utils/path/parse-fillable-path.d.ts.map +1 -0
  175. package/dist/utils/path/parse-fillable-path.js.map +1 -0
  176. package/dist/utils/pdf/index.d.ts +3 -0
  177. package/dist/utils/pdf/index.d.ts.map +1 -0
  178. package/dist/utils/pdf/index.js +3 -0
  179. package/dist/utils/pdf/index.js.map +1 -0
  180. package/dist/utils/pdf/pdf-rendering.utils.d.ts +29 -0
  181. package/dist/utils/pdf/pdf-rendering.utils.d.ts.map +1 -0
  182. package/dist/utils/pdf/pdf-rendering.utils.js +75 -0
  183. package/dist/utils/pdf/pdf-rendering.utils.js.map +1 -0
  184. package/dist/utils/{pdfjs-init.d.ts → pdf/pdfjs-init.d.ts} +1 -0
  185. package/dist/utils/pdf/pdfjs-init.d.ts.map +1 -0
  186. package/dist/utils/{pdfjs-init.js → pdf/pdfjs-init.js} +1 -1
  187. package/dist/utils/pdf/pdfjs-init.js.map +1 -0
  188. package/dist/utils/recipients/index.d.ts +2 -0
  189. package/dist/utils/recipients/index.d.ts.map +1 -0
  190. package/dist/utils/recipients/index.js +2 -0
  191. package/dist/utils/recipients/index.js.map +1 -0
  192. package/dist/utils/recipients/map-colors.d.ts +3 -0
  193. package/dist/utils/recipients/map-colors.d.ts.map +1 -0
  194. package/dist/utils/{map-colors-to-recipients.js → recipients/map-colors.js} +1 -1
  195. package/dist/utils/recipients/map-colors.js.map +1 -0
  196. package/package.json +1 -1
  197. package/src/components/{field-config-panel-overlay.tsx → field-config-panel/field-config-panel-overlay.tsx} +1 -2
  198. package/src/components/{field-config-panel.tsx → field-config-panel/field-config-panel.tsx} +18 -25
  199. package/src/components/{data-model-field-type-list.tsx → field-sidebar/data-model-field-type-list.tsx} +4 -4
  200. package/src/components/{e-sign-field-type-list.tsx → field-sidebar/e-sign-field-type-list.tsx} +2 -2
  201. package/src/components/field-sidebar/field-sidebar.tsx +119 -0
  202. package/src/components/{field-type.tsx → field-sidebar/field-type.tsx} +1 -1
  203. package/src/components/{fillable-field-type-list.tsx → field-sidebar/fillable-field-type-list.tsx} +2 -2
  204. package/src/components/index.ts +2 -0
  205. package/src/components/{pdf-canvas.tsx → pdf-canvas/pdf-canvas.tsx} +12 -9
  206. package/src/components/{pdf-document-renderer.tsx → pdf-canvas/pdf-document-renderer.tsx} +3 -4
  207. package/src/components/pdf-editor/pdf-editor.tsx +109 -0
  208. package/src/components/pdf-fields-overlay/add-handle.tsx +12 -0
  209. package/src/components/pdf-fields-overlay/pdf-fields-overlay.tsx +44 -0
  210. package/src/components/pdf-fields-overlay/pdf-overlay-field-data-model.tsx +15 -0
  211. package/src/components/pdf-fields-overlay/pdf-overlay-field-e-sign.tsx +15 -0
  212. package/src/components/pdf-fields-overlay/pdf-overlay-field-fillable.tsx +68 -0
  213. package/src/components/pdf-fields-overlay/pdf-overlay-field.tsx +87 -0
  214. package/src/components/pdf-view/pdf-view-data-model.tsx +13 -0
  215. package/src/components/pdf-view/pdf-view-e-sign.tsx +18 -0
  216. package/src/components/{pdf-view-fields.tsx → pdf-view/pdf-view-fillable.tsx} +31 -26
  217. package/src/components/{pdf-view.tsx → pdf-view/pdf-view.tsx} +10 -9
  218. package/src/constants/field.constants.ts +4 -3
  219. package/src/hooks/index.ts +4 -0
  220. package/src/hooks/useFieldDrag.ts +1 -1
  221. package/src/hooks/useFieldResize.ts +1 -1
  222. package/src/hooks/useInitializePdfJsWorker.ts +8 -0
  223. package/src/hooks/usePdfFieldDnD.ts +118 -0
  224. package/src/hooks/usePdfFieldSelection.ts +55 -0
  225. package/src/hooks/useToggle.ts +26 -0
  226. package/src/index.ts +2 -3
  227. package/src/interface/{pdf-editor.ts → types.ts} +8 -1
  228. package/src/styles/field-config-panel-overlay.css +3 -1
  229. package/src/styles/field-sidebar.css +36 -3
  230. package/src/styles/field-type-list.css +1 -1
  231. package/src/styles/field-type.css +7 -0
  232. package/src/styles/pdf-canvas.css +2 -0
  233. package/src/styles/pdf-editor.css +1 -0
  234. package/src/styles/pdf-field-overlay.css +23 -3
  235. package/src/styles/variables.css +11 -1
  236. package/src/utils/{extract-grouped-fields-from-data-model.utils.ts → data-model/extract-fields.utils.ts} +1 -1
  237. package/src/utils/data-model/index.ts +2 -0
  238. package/src/utils/{resolve-pdf-data-values.ts → data-model/resolve-values.utils.ts} +1 -1
  239. package/src/utils/{calculate-drop-coordinates.utils.ts → field/field-coordinates.utils.ts} +1 -1
  240. package/src/utils/field/field-drag.utils.ts +102 -0
  241. package/src/utils/{get-field-placeholder-text.ts → field/field-placeholder-text.utils.ts} +1 -1
  242. package/src/utils/{handle-field-resize.utils.ts → field/field-resize.utils.ts} +3 -4
  243. package/src/utils/field/index.ts +6 -0
  244. package/src/utils/index.ts +5 -17
  245. package/src/utils/{generate-e-sign-path.ts → path/generate-e-sign-path.ts} +1 -1
  246. package/src/utils/path/index.ts +3 -0
  247. package/src/utils/pdf/index.ts +2 -0
  248. package/src/utils/pdf/pdf-rendering.utils.ts +98 -0
  249. package/src/utils/{pdfjs-init.ts → pdf/pdfjs-init.ts} +1 -2
  250. package/src/utils/recipients/index.ts +1 -0
  251. package/src/utils/{map-colors-to-recipients.ts → recipients/map-colors.ts} +1 -1
  252. package/dist/components/data-model-field-type-list.d.ts.map +0 -1
  253. package/dist/components/data-model-field-type-list.js.map +0 -1
  254. package/dist/components/e-sign-field-type-list.d.ts.map +0 -1
  255. package/dist/components/e-sign-field-type-list.js.map +0 -1
  256. package/dist/components/field-config-panel-overlay.d.ts.map +0 -1
  257. package/dist/components/field-config-panel-overlay.js.map +0 -1
  258. package/dist/components/field-config-panel.d.ts.map +0 -1
  259. package/dist/components/field-config-panel.js.map +0 -1
  260. package/dist/components/field-sidebar.d.ts.map +0 -1
  261. package/dist/components/field-sidebar.js +0 -25
  262. package/dist/components/field-sidebar.js.map +0 -1
  263. package/dist/components/field-type.d.ts.map +0 -1
  264. package/dist/components/field-type.js.map +0 -1
  265. package/dist/components/fillable-field-type-list.d.ts.map +0 -1
  266. package/dist/components/fillable-field-type-list.js.map +0 -1
  267. package/dist/components/pdf-canvas.d.ts.map +0 -1
  268. package/dist/components/pdf-canvas.js +0 -14
  269. package/dist/components/pdf-canvas.js.map +0 -1
  270. package/dist/components/pdf-document-renderer.d.ts.map +0 -1
  271. package/dist/components/pdf-document-renderer.js.map +0 -1
  272. package/dist/components/pdf-editor.d.ts.map +0 -1
  273. package/dist/components/pdf-editor.js +0 -114
  274. package/dist/components/pdf-editor.js.map +0 -1
  275. package/dist/components/pdf-field-overlay.d.ts +0 -24
  276. package/dist/components/pdf-field-overlay.d.ts.map +0 -1
  277. package/dist/components/pdf-field-overlay.js +0 -60
  278. package/dist/components/pdf-field-overlay.js.map +0 -1
  279. package/dist/components/pdf-view-fields.d.ts +0 -17
  280. package/dist/components/pdf-view-fields.d.ts.map +0 -1
  281. package/dist/components/pdf-view-fields.js.map +0 -1
  282. package/dist/components/pdf-view.d.ts.map +0 -1
  283. package/dist/components/pdf-view.js.map +0 -1
  284. package/dist/components/resize-handle.d.ts.map +0 -1
  285. package/dist/components/resize-handle.js.map +0 -1
  286. package/dist/interface/pdf-editor.d.ts.map +0 -1
  287. package/dist/interface/pdf-editor.js.map +0 -1
  288. package/dist/utils/calculate-drop-coordinates.utils.d.ts.map +0 -1
  289. package/dist/utils/calculate-drop-coordinates.utils.js.map +0 -1
  290. package/dist/utils/extract-grouped-fields-from-data-model.utils.d.ts.map +0 -1
  291. package/dist/utils/extract-grouped-fields-from-data-model.utils.js.map +0 -1
  292. package/dist/utils/generate-e-sign-path.d.ts +0 -3
  293. package/dist/utils/generate-e-sign-path.d.ts.map +0 -1
  294. package/dist/utils/generate-e-sign-path.js.map +0 -1
  295. package/dist/utils/generate-fillable-path.d.ts.map +0 -1
  296. package/dist/utils/generate-fillable-path.js.map +0 -1
  297. package/dist/utils/get-field-background-color.d.ts.map +0 -1
  298. package/dist/utils/get-field-background-color.js.map +0 -1
  299. package/dist/utils/get-field-placeholder-text.d.ts +0 -3
  300. package/dist/utils/get-field-placeholder-text.d.ts.map +0 -1
  301. package/dist/utils/get-field-placeholder-text.js.map +0 -1
  302. package/dist/utils/get-page-dimensions.utils.d.ts +0 -12
  303. package/dist/utils/get-page-dimensions.utils.d.ts.map +0 -1
  304. package/dist/utils/get-page-dimensions.utils.js +0 -31
  305. package/dist/utils/get-page-dimensions.utils.js.map +0 -1
  306. package/dist/utils/get-page-number-from-client-y.utils.d.ts +0 -9
  307. package/dist/utils/get-page-number-from-client-y.utils.d.ts.map +0 -1
  308. package/dist/utils/get-page-number-from-client-y.utils.js +0 -24
  309. package/dist/utils/get-page-number-from-client-y.utils.js.map +0 -1
  310. package/dist/utils/get-page-position.utils.d.ts +0 -12
  311. package/dist/utils/get-page-position.utils.d.ts.map +0 -1
  312. package/dist/utils/get-page-position.utils.js +0 -22
  313. package/dist/utils/get-page-position.utils.js.map +0 -1
  314. package/dist/utils/handle-field-drag-start.utils.d.ts +0 -16
  315. package/dist/utils/handle-field-drag-start.utils.d.ts.map +0 -1
  316. package/dist/utils/handle-field-drag-start.utils.js +0 -41
  317. package/dist/utils/handle-field-drag-start.utils.js.map +0 -1
  318. package/dist/utils/handle-field-drag.utils.d.ts.map +0 -1
  319. package/dist/utils/handle-field-drag.utils.js +0 -36
  320. package/dist/utils/handle-field-drag.utils.js.map +0 -1
  321. package/dist/utils/handle-field-resize.utils.d.ts.map +0 -1
  322. package/dist/utils/handle-field-resize.utils.js.map +0 -1
  323. package/dist/utils/is-drag-over-canvas.utils.d.ts.map +0 -1
  324. package/dist/utils/is-drag-over-canvas.utils.js.map +0 -1
  325. package/dist/utils/map-colors-to-recipients.d.ts +0 -3
  326. package/dist/utils/map-colors-to-recipients.d.ts.map +0 -1
  327. package/dist/utils/map-colors-to-recipients.js.map +0 -1
  328. package/dist/utils/parse-fillable-path.d.ts.map +0 -1
  329. package/dist/utils/parse-fillable-path.js.map +0 -1
  330. package/dist/utils/pdfjs-init.d.ts.map +0 -1
  331. package/dist/utils/pdfjs-init.js.map +0 -1
  332. package/dist/utils/resolve-pdf-data-values.d.ts.map +0 -1
  333. package/dist/utils/resolve-pdf-data-values.js.map +0 -1
  334. package/src/components/field-sidebar.tsx +0 -93
  335. package/src/components/pdf-editor.tsx +0 -223
  336. package/src/components/pdf-field-overlay.tsx +0 -182
  337. package/src/utils/get-page-dimensions.utils.ts +0 -39
  338. package/src/utils/get-page-number-from-client-y.utils.ts +0 -31
  339. package/src/utils/get-page-position.utils.ts +0 -30
  340. package/src/utils/handle-field-drag-start.utils.ts +0 -52
  341. package/src/utils/handle-field-drag.utils.ts +0 -55
  342. /package/dist/components/{field-config-panel-overlay.js → field-config-panel/field-config-panel-overlay.js} +0 -0
  343. /package/dist/components/{field-type.d.ts → field-sidebar/field-type.d.ts} +0 -0
  344. /package/dist/components/{pdf-document-renderer.d.ts → pdf-canvas/pdf-document-renderer.d.ts} +0 -0
  345. /package/dist/components/{resize-handle.d.ts → pdf-fields-overlay/resize-handle.d.ts} +0 -0
  346. /package/dist/components/{resize-handle.js → pdf-fields-overlay/resize-handle.js} +0 -0
  347. /package/dist/utils/{generate-e-sign-path.js → path/generate-e-sign-path.js} +0 -0
  348. /package/dist/utils/{generate-fillable-path.d.ts → path/generate-fillable-path.d.ts} +0 -0
  349. /package/dist/utils/{generate-fillable-path.js → path/generate-fillable-path.js} +0 -0
  350. /package/dist/utils/{parse-fillable-path.d.ts → path/parse-fillable-path.d.ts} +0 -0
  351. /package/dist/utils/{parse-fillable-path.js → path/parse-fillable-path.js} +0 -0
  352. /package/src/components/{resize-handle.tsx → pdf-fields-overlay/resize-handle.tsx} +0 -0
  353. /package/src/utils/{is-drag-over-canvas.utils.ts → field/drag-over-canvas.utils.ts} +0 -0
  354. /package/src/utils/{get-field-background-color.ts → field/field-background-color.utils.ts} +0 -0
  355. /package/src/utils/{generate-fillable-path.ts → path/generate-fillable-path.ts} +0 -0
  356. /package/src/utils/{parse-fillable-path.ts → path/parse-fillable-path.ts} +0 -0
@@ -1,41 +0,0 @@
1
- import { getPagePosition } from './get-page-position.utils';
2
- /**
3
- * Handles the drag start event for a PDF field
4
- * Calculates drag offset and sets up drag data transfer
5
- * @param e - The drag event
6
- * @param field - The field being dragged
7
- * @param pdfWrapperRef - Reference to the PDF wrapper element
8
- * @returns The drag offset object or null if wrapper is not available
9
- */
10
- export const handleFieldDragStart = (e, field, pdfWrapperRef) => {
11
- if (!pdfWrapperRef.current) {
12
- return null;
13
- }
14
- /*
15
- * Calculate drag offset in page-relative coordinates
16
- */
17
- const startPagePos = getPagePosition(field.page, pdfWrapperRef);
18
- const wrapperRect = pdfWrapperRef.current.getBoundingClientRect();
19
- const cursorXInPage = e.clientX - wrapperRect.left - startPagePos.left;
20
- const cursorYInPage = e.clientY - wrapperRect.top - startPagePos.top;
21
- const dragOffset = {
22
- x: cursorXInPage - field.x,
23
- y: cursorYInPage - field.y,
24
- page: field.page,
25
- };
26
- // Mark that we're dragging an existing field, not a new field type
27
- e.dataTransfer.effectAllowed = 'move';
28
- e.dataTransfer.setData('text/plain', 'existing-field');
29
- // Create a transparent drag image to hide the default browser drag image
30
- const dragImage = document.createElement('div');
31
- dragImage.style.position = 'absolute';
32
- dragImage.style.top = '-9999px';
33
- dragImage.style.width = '1px';
34
- dragImage.style.height = '1px';
35
- dragImage.style.opacity = '0';
36
- document.body.appendChild(dragImage);
37
- e.dataTransfer.setDragImage(dragImage, 0, 0);
38
- setTimeout(() => document.body.removeChild(dragImage), 0);
39
- return dragOffset;
40
- };
41
- //# sourceMappingURL=handle-field-drag-start.utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handle-field-drag-start.utils.js","sourceRoot":"","sources":["../../src/utils/handle-field-drag-start.utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAChC,CAA4B,EAC5B,KAAe,EACf,aAAwC,EACK,EAAE;IAC/C,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAClE,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;IACvE,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;IAErE,MAAM,UAAU,GAAG;QACf,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC,CAAC;QAC1B,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC,CAAC;QAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;KACnB,CAAC;IAEF,mEAAmE;IACnE,CAAC,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM,CAAC;IACtC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAEvD,yEAAyE;IACzE,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAChD,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;IACtC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9B,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;IAC/B,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAE1D,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"handle-field-drag.utils.d.ts","sourceRoot":"","sources":["../../src/utils/handle-field-drag.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAKnD,UAAU,UAAU;IAChB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GACxB,GAAG,SAAS,CAAC,cAAc,CAAC,EAC5B,OAAO,QAAQ,EACf,YAAY,UAAU,EACtB,eAAe,SAAS,CAAC,cAAc,CAAC,EACxC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,KACvF,IA2BF,CAAC"}
@@ -1,36 +0,0 @@
1
- import { getPageDimensions } from './get-page-dimensions.utils';
2
- import { getPageNumberFromClientY } from './get-page-number-from-client-y.utils';
3
- import { getPagePosition } from './get-page-position.utils';
4
- /**
5
- * Handles the drag event for a PDF field
6
- * Calculates new position and clamps it to page boundaries
7
- * @param e - The drag event
8
- * @param field - The field being dragged
9
- * @param dragOffset - The drag offset from drag start
10
- * @param pdfWrapperRef - Reference to the PDF wrapper element
11
- * @param onFieldMove - Callback to update field position
12
- */
13
- export const handleFieldDrag = (e, field, dragOffset, pdfWrapperRef, onFieldMove) => {
14
- if (!pdfWrapperRef.current || e.clientX === 0 || e.clientY === 0) {
15
- return;
16
- }
17
- const currentPage = getPageNumberFromClientY(e.clientY, pdfWrapperRef);
18
- const currentPagePos = getPagePosition(currentPage, pdfWrapperRef);
19
- const wrapperRect = pdfWrapperRef.current.getBoundingClientRect();
20
- const pageDimensions = getPageDimensions(currentPage, pdfWrapperRef);
21
- // Calculate position in page coordinates
22
- const x = e.clientX - wrapperRect.left - currentPagePos.left - dragOffset.x;
23
- const y = e.clientY - wrapperRect.top - currentPagePos.top - dragOffset.y;
24
- /*
25
- * Clamp x and y to stay within page boundaries.
26
- * Account for field width and height to prevent dragging outside.
27
- */
28
- const minX = 0;
29
- const minY = 0;
30
- const maxX = Math.max(0, pageDimensions.width - field.width);
31
- const maxY = Math.max(0, pageDimensions.height - field.height);
32
- const clampedX = Math.max(minX, Math.min(maxX, x));
33
- const clampedY = Math.max(minY, Math.min(maxY, y));
34
- onFieldMove(field.id, clampedX, clampedY, currentPage);
35
- };
36
- //# sourceMappingURL=handle-field-drag.utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handle-field-drag.utils.js","sourceRoot":"","sources":["../../src/utils/handle-field-drag.utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAQ5D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC3B,CAA4B,EAC5B,KAAe,EACf,UAAsB,EACtB,aAAwC,EACxC,WAAsF,EAClF,EAAE;IACN,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QAC/D,OAAO;IACX,CAAC;IAED,MAAM,WAAW,GAAG,wBAAwB,CAAC,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACvE,MAAM,cAAc,GAAG,eAAe,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAClE,MAAM,cAAc,GAAG,iBAAiB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAErE,yCAAyC;IACzC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC;IAC5E,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,GAAG,cAAc,CAAC,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC;IAE1E;;;OAGG;IACH,MAAM,IAAI,GAAG,CAAC,CAAC;IACf,MAAM,IAAI,GAAG,CAAC,CAAC;IACf,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAE/D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnD,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AAC3D,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"handle-field-resize.utils.d.ts","sourceRoot":"","sources":["../../src/utils/handle-field-resize.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAInD,UAAU,eAAe;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GAC/B,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACvC,OAAO,QAAQ,EACf,eAAe,SAAS,CAAC,cAAc,CAAC,KACzC,eAAe,GAAG,IAmBpB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,GAC1B,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACvC,OAAO,QAAQ,EACf,iBAAiB,eAAe,EAChC,eAAe,SAAS,CAAC,cAAc,CAAC,EACxC,eAAe,CACX,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,KACjB,IAAI,KACV,IAmCF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"handle-field-resize.utils.js","sourceRoot":"","sources":["../../src/utils/handle-field-resize.utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAU5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAClC,CAAuC,EACvC,KAAe,EACf,aAAwC,EAClB,EAAE;IACxB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAElE,gDAAgD;IAChD,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3D,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAEzD,OAAO;QACH,MAAM;QACN,MAAM;QACN,UAAU,EAAE,KAAK,CAAC,KAAK;QACvB,WAAW,EAAE,KAAK,CAAC,MAAM;QACzB,IAAI,EAAE,KAAK,CAAC,IAAI;KACnB,CAAC;AACN,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC7B,CAAuC,EACvC,KAAe,EACf,eAAgC,EAChC,aAAwC,EACxC,aAKS,EACL,EAAE;IACN,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO;IACX,CAAC;IAED,MAAM,cAAc,GAAG,iBAAiB,CAAC,eAAe,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,eAAe,CAAC,eAAe,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAElE,gDAAgD;IAChD,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3D,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAEzD,0CAA0C;IAC1C,MAAM,MAAM,GAAG,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;IAE/C;;;OAGG;IACH,IAAI,QAAQ,GAAG,eAAe,CAAC,UAAU,GAAG,MAAM,CAAC;IACnD,IAAI,SAAS,GAAG,eAAe,CAAC,WAAW,GAAG,MAAM,CAAC;IAErD,8BAA8B;IAC9B,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxD,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAE3D,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;IAClD,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAE3C,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;AACvE,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-drag-over-canvas.utils.d.ts","sourceRoot":"","sources":["../../src/utils/is-drag-over-canvas.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GACzB,GAAG,SAAS,CAAC,cAAc,CAAC,EAC5B,eAAe,SAAS,CAAC,cAAc,CAAC,KACzC,OAuBF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"is-drag-over-canvas.utils.js","sourceRoot":"","sources":["../../src/utils/is-drag-over-canvas.utils.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC5B,CAA4B,EAC5B,aAAwC,EACjC,EAAE;IACT,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;IAElF,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;YAClD,IACI,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,IAAI;gBAC5B,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,KAAK;gBAC7B,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,GAAG;gBAC3B,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,MAAM,EAChC,CAAC;gBACC,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import { RecipientInfo } from '../components/pdf-editor';
2
- export declare const mapColorsToRecipients: (recipients?: RecipientInfo[]) => Record<string, string>;
3
- //# sourceMappingURL=map-colors-to-recipients.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"map-colors-to-recipients.d.ts","sourceRoot":"","sources":["../../src/utils/map-colors-to-recipients.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AA4BzD,eAAO,MAAM,qBAAqB,GAAI,aAAa,aAAa,EAAE,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAQzF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"map-colors-to-recipients.js","sourceRoot":"","sources":["../../src/utils/map-colors-to-recipients.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,GAAG;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,UAA4B,EAA0B,EAAE;IAC1F,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;IACd,CAAC;IACD,OAAO,UAAU,CAAC,MAAM,CAAyB,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;QAC9D,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3B,OAAO,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-fillable-path.d.ts","sourceRoot":"","sources":["../../src/utils/parse-fillable-path.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,GAAI,MAAM,MAAM,GAAG,SAAS,KAAG,MAOhE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-fillable-path.js","sourceRoot":"","sources":["../../src/utils/parse-fillable-path.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAwB,EAAU,EAAE;IACtE,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,2CAA2C;IAC3C,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7C,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pdfjs-init.d.ts","sourceRoot":"","sources":["../../src/utils/pdfjs-init.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAO,IAWxC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pdfjs-init.js","sourceRoot":"","sources":["../../src/utils/pdfjs-init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,SAAS,MAAM,wCAAwC,CAAC;AAE/D,IAAI,aAAa,GAAG,KAAK,CAAC;AAE1B;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAS,EAAE;IAC5C,IAAI,aAAa,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QACjD,OAAO;IACX,CAAC;IAED,IAAI,CAAC;QACD,QAAQ,CAAC,mBAAmB,CAAC,SAAS,GAAG,SAAS,CAAC;QACnD,aAAa,GAAG,IAAI,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAI,KAAe,CAAC,OAAO,CAAC,CAAC;IACtF,CAAC;AACL,CAAC,CAAC;AAEF,qBAAqB,EAAE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-pdf-data-values.d.ts","sourceRoot":"","sources":["../../src/utils/resolve-pdf-data-values.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,eAAO,MAAM,oBAAoB,GAC7B,MAAM,eAAe,GAAG,SAAS,EACjC,MAAM,MAAM,GAAG,SAAS,KACzB,MA8BF,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-pdf-data-values.js","sourceRoot":"","sources":["../../src/utils/resolve-pdf-data-values.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAChC,IAAiC,EACjC,IAAwB,EAClB,EAAE;IACR,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,KAAK,GAAQ,IAAI,CAAC;IAEtB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrE,OAAO,EAAE,CAAC;QACd,CAAC;QACD,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,QAAQ,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;YAC3C,OAAO,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC/C,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC,CAAC"}
@@ -1,93 +0,0 @@
1
- import { Flex, Icon, SearchField, Text } from '@servicetitan/anvil2';
2
- import IconBorderColor from '@servicetitan/anvil2/assets/icons/material/round/border_color.svg';
3
- import IconPhotoSizeSelectSmall from '@servicetitan/anvil2/assets/icons/material/round/photo_size_select_small.svg';
4
- import IconEstimate from '@servicetitan/anvil2/assets/icons/st/estimate.svg';
5
-
6
- import { FC, useState } from 'react';
7
- import { DataModelFieldGroup, FieldTypeEnum, FieldTypeOption } from '../interface/pdf-editor';
8
- import { DataModelFieldTypeList } from './data-model-field-type-list';
9
- import { ESignFieldTypeList } from './e-sign-field-type-list';
10
- import { FillableFieldTypeList } from './fillable-field-type-list';
11
-
12
- interface FieldSidebarProps {
13
- dataModelGroups?: DataModelFieldGroup[];
14
- onDragEnd(): void;
15
- onDragStart(fieldOption: FieldTypeOption): void;
16
- }
17
-
18
- const menuGroups: { svgIcon: any; label: string; key: FieldTypeEnum }[] = [
19
- { svgIcon: IconEstimate, label: 'Merge Tags', key: FieldTypeEnum.dataModel },
20
- { svgIcon: IconBorderColor, label: 'E-Sign', key: FieldTypeEnum.eSign },
21
- {
22
- svgIcon: IconPhotoSizeSelectSmall,
23
- label: 'Fillable Fields',
24
- key: FieldTypeEnum.fillable,
25
- },
26
- ];
27
-
28
- export const FieldSidebar: FC<FieldSidebarProps> = ({
29
- dataModelGroups = [],
30
- onDragEnd,
31
- onDragStart,
32
- }) => {
33
- const [activeFieldType, setActiveFieldType] = useState<FieldTypeEnum>(FieldTypeEnum.dataModel);
34
- const [searchText, setSearchText] = useState('');
35
-
36
- return (
37
- <Flex className="dte-field-sidebar-container skeleton-item">
38
- <Flex className="dte-field-sidebar-menu" shrink={0} direction="column" gap="3">
39
- {menuGroups.map(({ key, label, svgIcon }) => (
40
- <Flex
41
- key={key}
42
- alignItems="center"
43
- justifyContent="center"
44
- direction="column"
45
- className="dte-field-sidebar-menu-item cursor-pointer"
46
- onClick={() => setActiveFieldType(key)}
47
- >
48
- <Icon svg={svgIcon} size="large" />
49
- <Text
50
- variant="body"
51
- size="small"
52
- className="dte-field-sidebar-menu-item-text"
53
- >
54
- {label}
55
- </Text>
56
- </Flex>
57
- ))}
58
- </Flex>
59
- <Flex className="dte-field-sidebar-content skeleton-item" shrink={0}>
60
- <Text variant="headline" el="h1" size="medium">
61
- Merge Tags
62
- </Text>
63
-
64
- {activeFieldType !== FieldTypeEnum.eSign && (
65
- <SearchField
66
- placeholder="Search"
67
- size="small"
68
- className="dte-field-sidebar-search"
69
- onChange={e => setSearchText(e.target.value ?? '')}
70
- />
71
- )}
72
- {activeFieldType === FieldTypeEnum.fillable && (
73
- <FillableFieldTypeList
74
- searchText={searchText}
75
- onDragStart={onDragStart}
76
- onDragEnd={onDragEnd}
77
- />
78
- )}
79
- {activeFieldType === FieldTypeEnum.eSign && (
80
- <ESignFieldTypeList onDragEnd={onDragEnd} onDragStart={onDragStart} />
81
- )}
82
- {activeFieldType === FieldTypeEnum.dataModel && (
83
- <DataModelFieldTypeList
84
- searchText={searchText}
85
- dataModelGroups={dataModelGroups}
86
- onDragStart={onDragStart}
87
- onDragEnd={onDragEnd}
88
- />
89
- )}
90
- </Flex>
91
- </Flex>
92
- );
93
- };
@@ -1,223 +0,0 @@
1
- import { Flex } from '@servicetitan/anvil2';
2
- import { DragEvent, FC, MouseEvent, ReactNode, useMemo, useRef, useState } from 'react';
3
- import { v4 as uuidv4 } from 'uuid';
4
- import { FIELD_CONSTANTS, FILLABLE_FIELD_DEFAULT_SIZES } from '../constants';
5
-
6
- import {
7
- ESignFieldType,
8
- FieldTypeEnum,
9
- FieldTypeOption,
10
- PdfField,
11
- SchemaObject,
12
- } from '../interface/pdf-editor';
13
- import '../styles/index.css';
14
- import {
15
- calculateDropCoordinates,
16
- extractGroupedFieldsFromDataModel,
17
- generateESignPath,
18
- generateFillablePath,
19
- initializePdfJsWorker,
20
- isDragOverCanvas,
21
- mapColorsToRecipients,
22
- } from '../utils';
23
- import { FieldConfigPanelOverlay } from './field-config-panel-overlay';
24
- import { FieldSidebar } from './field-sidebar';
25
- import { PdfCanvas } from './pdf-canvas';
26
-
27
- initializePdfJsWorker();
28
-
29
- export interface RecipientInfo {
30
- id: number;
31
- name: string;
32
- displayName: string;
33
- }
34
-
35
- interface PdfEditorProps {
36
- pdfUrl: string;
37
- loading?: boolean;
38
- loadingPlaceholder?: ReactNode;
39
- errorPlaceholder?: ReactNode;
40
- dataModel?: SchemaObject;
41
- recipients?: RecipientInfo[];
42
- fields?: PdfField[];
43
- onFieldsChange(fields: PdfField[]): void;
44
- }
45
-
46
- export const PdfEditor: FC<PdfEditorProps> = ({
47
- dataModel,
48
- errorPlaceholder,
49
- fields = [],
50
- loading = false,
51
- loadingPlaceholder,
52
- onFieldsChange,
53
- pdfUrl,
54
- recipients = [],
55
- }) => {
56
- const dataModelGroups = useMemo(() => {
57
- return dataModel ? extractGroupedFieldsFromDataModel(dataModel) : [];
58
- }, [dataModel]);
59
- const [draggedFieldOption, setDraggedFieldOption] = useState<FieldTypeOption | null>(null);
60
- const [selectedField, setSelectedField] = useState<string | null>(null);
61
- const pdfContainerRef = useRef<HTMLDivElement>(null);
62
- const pdfWrapperRef = useRef<HTMLDivElement>(null);
63
-
64
- const handleDragStart = (fieldOption: FieldTypeOption) => {
65
- setDraggedFieldOption(fieldOption);
66
- };
67
-
68
- const handleDragEnd = () => {
69
- setDraggedFieldOption(null);
70
- };
71
-
72
- const handleDrop = (e: DragEvent<HTMLDivElement>, pageNumber: number) => {
73
- e.preventDefault();
74
- e.stopPropagation();
75
-
76
- const isExistingField = e.dataTransfer.getData('text/plain') === 'existing-field';
77
- if (isExistingField || !draggedFieldOption) {
78
- return;
79
- }
80
-
81
- const coordinates = calculateDropCoordinates(e, pageNumber, pdfWrapperRef);
82
- if (!coordinates) {
83
- setDraggedFieldOption(null);
84
- return;
85
- }
86
-
87
- const newField: PdfField = {
88
- id: uuidv4(),
89
- type: draggedFieldOption.type,
90
- subType: draggedFieldOption.subType,
91
- x: coordinates.x,
92
- y: coordinates.y,
93
- page: pageNumber,
94
- label: draggedFieldOption.label,
95
- width: FIELD_CONSTANTS.defaultWidth,
96
- height: FIELD_CONSTANTS.defaultHeight,
97
- path: draggedFieldOption.path,
98
- };
99
-
100
- if (draggedFieldOption.type === FieldTypeEnum.eSign) {
101
- newField.recipient = recipients[0]?.name ?? '';
102
- newField.path = generateESignPath(
103
- recipients[0].name!,
104
- draggedFieldOption.subType as ESignFieldType,
105
- );
106
- }
107
- if (draggedFieldOption.type === FieldTypeEnum.fillable) {
108
- const defaultFieldSizes = FILLABLE_FIELD_DEFAULT_SIZES[newField.subType!];
109
- newField.recipient = recipients[0]?.name ?? '';
110
- newField.required = false;
111
- newField.path = generateFillablePath(recipients[0]?.name ?? '', uuidv4());
112
- if (defaultFieldSizes) {
113
- newField.width = defaultFieldSizes.width;
114
- newField.height = defaultFieldSizes.height;
115
- }
116
- }
117
-
118
- onFieldsChange([...fields, newField]);
119
- setSelectedField(newField.id);
120
- setDraggedFieldOption(null);
121
- };
122
-
123
- const handleDragOver = (e: DragEvent<HTMLDivElement>) => {
124
- if (!draggedFieldOption) {
125
- e.dataTransfer.dropEffect = 'none';
126
- return;
127
- }
128
-
129
- const isOverCanvas = isDragOverCanvas(e, pdfWrapperRef);
130
-
131
- // Only allow a drop if we're over the actual PDF canvas
132
- if (isOverCanvas) {
133
- e.preventDefault();
134
- e.stopPropagation();
135
- e.dataTransfer.dropEffect = 'copy';
136
- } else {
137
- e.dataTransfer.dropEffect = 'none';
138
- }
139
- };
140
-
141
- const handleFieldClick = (fieldId: string, e: MouseEvent) => {
142
- e.stopPropagation();
143
- setSelectedField(fieldId);
144
- };
145
-
146
- const handleFieldMove = (fieldId: string, newX: number, newY: number, pageNumber: number) => {
147
- onFieldsChange(
148
- fields.map(f => (f.id === fieldId ? { ...f, x: newX, y: newY, page: pageNumber } : f)),
149
- );
150
- };
151
-
152
- const handleFieldResize = (
153
- fieldId: string,
154
- newWidth: number,
155
- newHeight: number,
156
- pageNumber: number,
157
- ) => {
158
- onFieldsChange(
159
- fields.map(f =>
160
- f.id === fieldId
161
- ? { ...f, width: newWidth, height: newHeight, page: pageNumber }
162
- : f,
163
- ),
164
- );
165
- };
166
-
167
- const handleDeleteField = () => {
168
- if (selectedField) {
169
- onFieldsChange(fields.filter(f => f.id !== selectedField));
170
- setSelectedField(null);
171
- }
172
- };
173
-
174
- const handleFieldConfigChange = (updates: Partial<PdfField>) => {
175
- if (selectedField) {
176
- onFieldsChange(fields.map(f => (f.id === selectedField ? { ...f, ...updates } : f)));
177
- }
178
- };
179
-
180
- const selectedFieldData = fields.find(f => f.id === selectedField) ?? null;
181
-
182
- const recipientsColors = mapColorsToRecipients(recipients);
183
-
184
- return (
185
- <Flex flex={1} className={`dte-pdf-editor ${loading ? 'skeleton' : ''}`}>
186
- <Flex className="dte-pdf-editor-sidebar-container ">
187
- <FieldSidebar
188
- dataModelGroups={dataModelGroups}
189
- onDragEnd={handleDragEnd}
190
- onDragStart={handleDragStart}
191
- />
192
- {selectedFieldData && (
193
- <FieldConfigPanelOverlay
194
- selectedField={selectedFieldData}
195
- onFieldConfigChange={handleFieldConfigChange}
196
- onDeleteField={handleDeleteField}
197
- recipients={recipients}
198
- onDeselectField={() => setSelectedField(null)}
199
- />
200
- )}
201
- </Flex>
202
- <Flex gap={12} flex={1} className="dte-pdf-editor-content-container skeleton-item">
203
- <PdfCanvas
204
- pdfUrl={pdfUrl}
205
- fields={fields}
206
- loading={loading}
207
- recipientsColors={recipientsColors}
208
- selectedField={selectedField}
209
- pdfContainerRef={pdfContainerRef}
210
- pdfWrapperRef={pdfWrapperRef}
211
- errorPlaceholder={errorPlaceholder}
212
- loadingPlaceholder={loadingPlaceholder}
213
- onDrop={handleDrop}
214
- onDragOver={handleDragOver}
215
- onFieldClick={handleFieldClick}
216
- onFieldMove={handleFieldMove}
217
- onFieldResize={handleFieldResize}
218
- onDeselectField={() => setSelectedField(null)}
219
- />
220
- </Flex>
221
- </Flex>
222
- );
223
- };
@@ -1,182 +0,0 @@
1
- import { FC, Fragment, MouseEvent, RefObject, useMemo } from 'react';
2
- import { useFieldDrag, useFieldResize, UseFieldResizeReturn } from '../hooks';
3
- import { FieldTypeEnum, PdfField } from '../interface/pdf-editor';
4
- import { getFieldBackgroundColor, getFieldPlaceholderText, getPagePosition } from '../utils';
5
- import { ResizeHandle } from './resize-handle';
6
-
7
- interface PdfFieldOverlayProps {
8
- fields: PdfField[];
9
- selectedField: string | null;
10
- pdfWrapperRef: RefObject<HTMLDivElement>;
11
- recipientsColors: Record<string, string>;
12
- onFieldClick(fieldId: string, e: MouseEvent): void;
13
- onFieldMove(fieldId: string, newX: number, newY: number, pageNumber: number): void;
14
- onFieldResize(fieldId: string, newWidth: number, newHeight: number, pageNumber: number): void;
15
- }
16
-
17
- export const PdfFieldOverlay: FC<PdfFieldOverlayProps> = ({
18
- fields,
19
- onFieldClick,
20
- onFieldMove,
21
- onFieldResize,
22
- pdfWrapperRef,
23
- recipientsColors,
24
- selectedField,
25
- }) => {
26
- return (
27
- <div className="dte-pdf-field-overlay skeleton-item">
28
- {fields.map(field => (
29
- <PdfFieldOverlayField
30
- key={field.id}
31
- field={field}
32
- onFieldMove={onFieldMove}
33
- onFieldClick={onFieldClick}
34
- pdfWrapperRef={pdfWrapperRef}
35
- onFieldResize={onFieldResize}
36
- isSelected={selectedField === field.id}
37
- recipientsColors={recipientsColors}
38
- />
39
- ))}
40
- </div>
41
- );
42
- };
43
-
44
- interface PdfFieldOverlayFieldProps {
45
- field: PdfField;
46
- isSelected: boolean;
47
- recipientsColors: Record<string, string>;
48
- pdfWrapperRef: RefObject<HTMLDivElement>;
49
- onFieldClick(fieldId: string, e: MouseEvent): void;
50
- onFieldMove(fieldId: string, newX: number, newY: number, pageNumber: number): void;
51
- onFieldResize(fieldId: string, newWidth: number, newHeight: number, pageNumber: number): void;
52
- }
53
-
54
- export const PdfFieldOverlayField: FC<PdfFieldOverlayFieldProps> = ({
55
- field,
56
- isSelected,
57
- onFieldClick,
58
- onFieldMove,
59
- onFieldResize,
60
- pdfWrapperRef,
61
- recipientsColors,
62
- }) => {
63
- const { draggingFieldIdRef, handleDrag, handleDragEnd, handleDragStart } = useFieldDrag({
64
- pdfWrapperRef,
65
- onFieldMove,
66
- });
67
- const isDragging = draggingFieldIdRef.current === field.id;
68
-
69
- const { handleResizeStart } = useFieldResize({
70
- pdfWrapperRef,
71
- onFieldResize,
72
- });
73
-
74
- const pagePos = useMemo(() => {
75
- return getPagePosition(field.page, pdfWrapperRef);
76
- }, [field.page, pdfWrapperRef]);
77
-
78
- const style = useMemo(() => {
79
- const bgColor = getFieldBackgroundColor(field.recipient, recipientsColors);
80
- return {
81
- left: pagePos.left + field.x,
82
- top: pagePos.top + field.y,
83
- width: field.width,
84
- height: field.height,
85
- backgroundColor: bgColor,
86
- };
87
- }, [
88
- field.recipient,
89
- field.x,
90
- field.y,
91
- field.width,
92
- field.height,
93
- recipientsColors,
94
- pagePos.left,
95
- pagePos.top,
96
- ]);
97
-
98
- return (
99
- <div
100
- onClick={e => onFieldClick(field.id, e)}
101
- draggable
102
- onDragStart={e => handleDragStart(e, field)}
103
- onDrag={e => handleDrag(e, field)}
104
- onDragEnd={handleDragEnd}
105
- className={`dte-pdf-field ${isSelected ? 'dte-pdf-field-selected' : 'dte-pdf-field-unselected'} ${isDragging ? 'dte-pdf-field-dragging' : ''}`}
106
- style={style}
107
- >
108
- {field.type === FieldTypeEnum.eSign && <FieldEsign field={field} />}
109
- {field.type === FieldTypeEnum.dataModel && <FieldDataModel field={field} />}
110
- {field.type === FieldTypeEnum.fillable && (
111
- <FieldFillable
112
- field={field}
113
- handleResizeStart={handleResizeStart}
114
- isSelected={isSelected}
115
- />
116
- )}
117
- </div>
118
- );
119
- };
120
-
121
- interface FieldProps {
122
- field: PdfField;
123
- }
124
-
125
- const FieldEsign: FC<FieldProps> = ({ field }) => {
126
- return (
127
- <span>
128
- {field.label} {field.required ? '*' : ''}
129
- <div className="dte-pdf-field-value">{field.path}</div>
130
- </span>
131
- );
132
- };
133
-
134
- const FieldDataModel: FC<FieldProps> = ({ field }) => {
135
- return (
136
- <span>
137
- {field.label ? field.label : field.path}
138
- {field.required ? '*' : ''}
139
- </span>
140
- );
141
- };
142
-
143
- interface FieldFillableProps extends FieldProps {
144
- isSelected: boolean;
145
- handleResizeStart: UseFieldResizeReturn['handleResizeStart'];
146
- }
147
-
148
- const FieldFillable: FC<FieldFillableProps> = ({ field, handleResizeStart, isSelected }) => {
149
- const placeholderText = getFieldPlaceholderText(field);
150
-
151
- if (field.subType === 'checkbox' || field.subType === 'radio') {
152
- return <input type={field.subType} readOnly className="dte-pdf-field-fillable" />;
153
- }
154
-
155
- if (field.subType === 'date') {
156
- return (
157
- <Fragment>
158
- <input
159
- type="date"
160
- readOnly
161
- className="dte-pdf-field-fillable"
162
- placeholder={placeholderText}
163
- />
164
- {isSelected && (
165
- <ResizeHandle handleResizeStart={e => handleResizeStart(e, field)} />
166
- )}
167
- </Fragment>
168
- );
169
- }
170
-
171
- return (
172
- <Fragment>
173
- <input
174
- type="text"
175
- readOnly
176
- placeholder={placeholderText}
177
- className="dte-pdf-field-fillable"
178
- />
179
- {isSelected && <ResizeHandle handleResizeStart={e => handleResizeStart(e, field)} />}
180
- </Fragment>
181
- );
182
- };