react-native-image-editor-skia 0.1.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 (299) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +202 -0
  3. package/lib/commonjs/ImageEditor.js +141 -0
  4. package/lib/commonjs/ImageEditor.js.map +1 -0
  5. package/lib/commonjs/annotations/AnnotationView.js +42 -0
  6. package/lib/commonjs/annotations/AnnotationView.js.map +1 -0
  7. package/lib/commonjs/annotations/ArrowAnnotation.js +29 -0
  8. package/lib/commonjs/annotations/ArrowAnnotation.js.map +1 -0
  9. package/lib/commonjs/annotations/CircleAnnotation.js +31 -0
  10. package/lib/commonjs/annotations/CircleAnnotation.js.map +1 -0
  11. package/lib/commonjs/annotations/FreehandAnnotation.js +29 -0
  12. package/lib/commonjs/annotations/FreehandAnnotation.js.map +1 -0
  13. package/lib/commonjs/annotations/MarkerAnnotation.js +27 -0
  14. package/lib/commonjs/annotations/MarkerAnnotation.js.map +1 -0
  15. package/lib/commonjs/annotations/RotatedGroup.js +34 -0
  16. package/lib/commonjs/annotations/RotatedGroup.js.map +1 -0
  17. package/lib/commonjs/annotations/TextAnnotation.js +40 -0
  18. package/lib/commonjs/annotations/TextAnnotation.js.map +1 -0
  19. package/lib/commonjs/annotations/geometry.js +73 -0
  20. package/lib/commonjs/annotations/geometry.js.map +1 -0
  21. package/lib/commonjs/annotations/geometryPure.js +104 -0
  22. package/lib/commonjs/annotations/geometryPure.js.map +1 -0
  23. package/lib/commonjs/canvas/AnnotationLayer.js +58 -0
  24. package/lib/commonjs/canvas/AnnotationLayer.js.map +1 -0
  25. package/lib/commonjs/canvas/BaseImageLayer.js +27 -0
  26. package/lib/commonjs/canvas/BaseImageLayer.js.map +1 -0
  27. package/lib/commonjs/canvas/CropOverlay.js +135 -0
  28. package/lib/commonjs/canvas/CropOverlay.js.map +1 -0
  29. package/lib/commonjs/canvas/EditorCanvas.js +91 -0
  30. package/lib/commonjs/canvas/EditorCanvas.js.map +1 -0
  31. package/lib/commonjs/canvas/InFlightLayer.js +152 -0
  32. package/lib/commonjs/canvas/InFlightLayer.js.map +1 -0
  33. package/lib/commonjs/canvas/SelectionOverlay.js +90 -0
  34. package/lib/commonjs/canvas/SelectionOverlay.js.map +1 -0
  35. package/lib/commonjs/constants.js +56 -0
  36. package/lib/commonjs/constants.js.map +1 -0
  37. package/lib/commonjs/context/EditorContext.js +132 -0
  38. package/lib/commonjs/context/EditorContext.js.map +1 -0
  39. package/lib/commonjs/export/drawScene.js +97 -0
  40. package/lib/commonjs/export/drawScene.js.map +1 -0
  41. package/lib/commonjs/export/exportImage.js +92 -0
  42. package/lib/commonjs/export/exportImage.js.map +1 -0
  43. package/lib/commonjs/gestures/applyTransform.js +79 -0
  44. package/lib/commonjs/gestures/applyTransform.js.map +1 -0
  45. package/lib/commonjs/gestures/createAnnotation.js +73 -0
  46. package/lib/commonjs/gestures/createAnnotation.js.map +1 -0
  47. package/lib/commonjs/gestures/handles.js +53 -0
  48. package/lib/commonjs/gestures/handles.js.map +1 -0
  49. package/lib/commonjs/gestures/hitTest.js +72 -0
  50. package/lib/commonjs/gestures/hitTest.js.map +1 -0
  51. package/lib/commonjs/gestures/useCropGesture.js +149 -0
  52. package/lib/commonjs/gestures/useCropGesture.js.map +1 -0
  53. package/lib/commonjs/gestures/useEditorGestures.js +289 -0
  54. package/lib/commonjs/gestures/useEditorGestures.js.map +1 -0
  55. package/lib/commonjs/image/disposeRegistry.js +63 -0
  56. package/lib/commonjs/image/disposeRegistry.js.map +1 -0
  57. package/lib/commonjs/image/useLoadedImage.js +121 -0
  58. package/lib/commonjs/image/useLoadedImage.js.map +1 -0
  59. package/lib/commonjs/index.js +52 -0
  60. package/lib/commonjs/index.js.map +1 -0
  61. package/lib/commonjs/package.json +1 -0
  62. package/lib/commonjs/state/history.js +85 -0
  63. package/lib/commonjs/state/history.js.map +1 -0
  64. package/lib/commonjs/state/selectors.js +19 -0
  65. package/lib/commonjs/state/selectors.js.map +1 -0
  66. package/lib/commonjs/state/useEditorReducer.js +83 -0
  67. package/lib/commonjs/state/useEditorReducer.js.map +1 -0
  68. package/lib/commonjs/toolbar/ColorPicker.js +84 -0
  69. package/lib/commonjs/toolbar/ColorPicker.js.map +1 -0
  70. package/lib/commonjs/toolbar/CropControls.js +65 -0
  71. package/lib/commonjs/toolbar/CropControls.js.map +1 -0
  72. package/lib/commonjs/toolbar/RotationSlider.js +73 -0
  73. package/lib/commonjs/toolbar/RotationSlider.js.map +1 -0
  74. package/lib/commonjs/toolbar/TextInputOverlay.js +108 -0
  75. package/lib/commonjs/toolbar/TextInputOverlay.js.map +1 -0
  76. package/lib/commonjs/toolbar/ToolButton.js +56 -0
  77. package/lib/commonjs/toolbar/ToolButton.js.map +1 -0
  78. package/lib/commonjs/toolbar/Toolbar.js +137 -0
  79. package/lib/commonjs/toolbar/Toolbar.js.map +1 -0
  80. package/lib/commonjs/types.js +47 -0
  81. package/lib/commonjs/types.js.map +1 -0
  82. package/lib/commonjs/utils/color.js +37 -0
  83. package/lib/commonjs/utils/color.js.map +1 -0
  84. package/lib/commonjs/utils/id.js +14 -0
  85. package/lib/commonjs/utils/id.js.map +1 -0
  86. package/lib/commonjs/utils/math.js +277 -0
  87. package/lib/commonjs/utils/math.js.map +1 -0
  88. package/lib/module/ImageEditor.js +138 -0
  89. package/lib/module/ImageEditor.js.map +1 -0
  90. package/lib/module/annotations/AnnotationView.js +39 -0
  91. package/lib/module/annotations/AnnotationView.js.map +1 -0
  92. package/lib/module/annotations/ArrowAnnotation.js +26 -0
  93. package/lib/module/annotations/ArrowAnnotation.js.map +1 -0
  94. package/lib/module/annotations/CircleAnnotation.js +27 -0
  95. package/lib/module/annotations/CircleAnnotation.js.map +1 -0
  96. package/lib/module/annotations/FreehandAnnotation.js +25 -0
  97. package/lib/module/annotations/FreehandAnnotation.js.map +1 -0
  98. package/lib/module/annotations/MarkerAnnotation.js +23 -0
  99. package/lib/module/annotations/MarkerAnnotation.js.map +1 -0
  100. package/lib/module/annotations/RotatedGroup.js +29 -0
  101. package/lib/module/annotations/RotatedGroup.js.map +1 -0
  102. package/lib/module/annotations/TextAnnotation.js +37 -0
  103. package/lib/module/annotations/TextAnnotation.js.map +1 -0
  104. package/lib/module/annotations/geometry.js +56 -0
  105. package/lib/module/annotations/geometry.js.map +1 -0
  106. package/lib/module/annotations/geometryPure.js +100 -0
  107. package/lib/module/annotations/geometryPure.js.map +1 -0
  108. package/lib/module/canvas/AnnotationLayer.js +55 -0
  109. package/lib/module/canvas/AnnotationLayer.js.map +1 -0
  110. package/lib/module/canvas/BaseImageLayer.js +23 -0
  111. package/lib/module/canvas/BaseImageLayer.js.map +1 -0
  112. package/lib/module/canvas/CropOverlay.js +131 -0
  113. package/lib/module/canvas/CropOverlay.js.map +1 -0
  114. package/lib/module/canvas/EditorCanvas.js +88 -0
  115. package/lib/module/canvas/EditorCanvas.js.map +1 -0
  116. package/lib/module/canvas/InFlightLayer.js +149 -0
  117. package/lib/module/canvas/InFlightLayer.js.map +1 -0
  118. package/lib/module/canvas/SelectionOverlay.js +85 -0
  119. package/lib/module/canvas/SelectionOverlay.js.map +1 -0
  120. package/lib/module/constants.js +52 -0
  121. package/lib/module/constants.js.map +1 -0
  122. package/lib/module/context/EditorContext.js +126 -0
  123. package/lib/module/context/EditorContext.js.map +1 -0
  124. package/lib/module/export/drawScene.js +93 -0
  125. package/lib/module/export/drawScene.js.map +1 -0
  126. package/lib/module/export/exportImage.js +88 -0
  127. package/lib/module/export/exportImage.js.map +1 -0
  128. package/lib/module/gestures/applyTransform.js +75 -0
  129. package/lib/module/gestures/applyTransform.js.map +1 -0
  130. package/lib/module/gestures/createAnnotation.js +65 -0
  131. package/lib/module/gestures/createAnnotation.js.map +1 -0
  132. package/lib/module/gestures/handles.js +49 -0
  133. package/lib/module/gestures/handles.js.map +1 -0
  134. package/lib/module/gestures/hitTest.js +69 -0
  135. package/lib/module/gestures/hitTest.js.map +1 -0
  136. package/lib/module/gestures/useCropGesture.js +145 -0
  137. package/lib/module/gestures/useCropGesture.js.map +1 -0
  138. package/lib/module/gestures/useEditorGestures.js +285 -0
  139. package/lib/module/gestures/useEditorGestures.js.map +1 -0
  140. package/lib/module/image/disposeRegistry.js +57 -0
  141. package/lib/module/image/disposeRegistry.js.map +1 -0
  142. package/lib/module/image/useLoadedImage.js +117 -0
  143. package/lib/module/image/useLoadedImage.js.map +1 -0
  144. package/lib/module/index.js +8 -0
  145. package/lib/module/index.js.map +1 -0
  146. package/lib/module/package.json +1 -0
  147. package/lib/module/state/history.js +76 -0
  148. package/lib/module/state/history.js.map +1 -0
  149. package/lib/module/state/selectors.js +14 -0
  150. package/lib/module/state/selectors.js.map +1 -0
  151. package/lib/module/state/useEditorReducer.js +79 -0
  152. package/lib/module/state/useEditorReducer.js.map +1 -0
  153. package/lib/module/toolbar/ColorPicker.js +80 -0
  154. package/lib/module/toolbar/ColorPicker.js.map +1 -0
  155. package/lib/module/toolbar/CropControls.js +62 -0
  156. package/lib/module/toolbar/CropControls.js.map +1 -0
  157. package/lib/module/toolbar/RotationSlider.js +69 -0
  158. package/lib/module/toolbar/RotationSlider.js.map +1 -0
  159. package/lib/module/toolbar/TextInputOverlay.js +105 -0
  160. package/lib/module/toolbar/TextInputOverlay.js.map +1 -0
  161. package/lib/module/toolbar/ToolButton.js +52 -0
  162. package/lib/module/toolbar/ToolButton.js.map +1 -0
  163. package/lib/module/toolbar/Toolbar.js +133 -0
  164. package/lib/module/toolbar/Toolbar.js.map +1 -0
  165. package/lib/module/types.js +43 -0
  166. package/lib/module/types.js.map +1 -0
  167. package/lib/module/utils/color.js +33 -0
  168. package/lib/module/utils/color.js.map +1 -0
  169. package/lib/module/utils/id.js +10 -0
  170. package/lib/module/utils/id.js.map +1 -0
  171. package/lib/module/utils/math.js +258 -0
  172. package/lib/module/utils/math.js.map +1 -0
  173. package/lib/typescript/src/ImageEditor.d.ts +9 -0
  174. package/lib/typescript/src/ImageEditor.d.ts.map +1 -0
  175. package/lib/typescript/src/annotations/AnnotationView.d.ts +6 -0
  176. package/lib/typescript/src/annotations/AnnotationView.d.ts.map +1 -0
  177. package/lib/typescript/src/annotations/ArrowAnnotation.d.ts +5 -0
  178. package/lib/typescript/src/annotations/ArrowAnnotation.d.ts.map +1 -0
  179. package/lib/typescript/src/annotations/CircleAnnotation.d.ts +5 -0
  180. package/lib/typescript/src/annotations/CircleAnnotation.d.ts.map +1 -0
  181. package/lib/typescript/src/annotations/FreehandAnnotation.d.ts +5 -0
  182. package/lib/typescript/src/annotations/FreehandAnnotation.d.ts.map +1 -0
  183. package/lib/typescript/src/annotations/MarkerAnnotation.d.ts +5 -0
  184. package/lib/typescript/src/annotations/MarkerAnnotation.d.ts.map +1 -0
  185. package/lib/typescript/src/annotations/RotatedGroup.d.ts +13 -0
  186. package/lib/typescript/src/annotations/RotatedGroup.d.ts.map +1 -0
  187. package/lib/typescript/src/annotations/TextAnnotation.d.ts +10 -0
  188. package/lib/typescript/src/annotations/TextAnnotation.d.ts.map +1 -0
  189. package/lib/typescript/src/annotations/geometry.d.ts +11 -0
  190. package/lib/typescript/src/annotations/geometry.d.ts.map +1 -0
  191. package/lib/typescript/src/annotations/geometryPure.d.ts +14 -0
  192. package/lib/typescript/src/annotations/geometryPure.d.ts.map +1 -0
  193. package/lib/typescript/src/canvas/AnnotationLayer.d.ts +11 -0
  194. package/lib/typescript/src/canvas/AnnotationLayer.d.ts.map +1 -0
  195. package/lib/typescript/src/canvas/BaseImageLayer.d.ts +12 -0
  196. package/lib/typescript/src/canvas/BaseImageLayer.d.ts.map +1 -0
  197. package/lib/typescript/src/canvas/CropOverlay.d.ts +10 -0
  198. package/lib/typescript/src/canvas/CropOverlay.d.ts.map +1 -0
  199. package/lib/typescript/src/canvas/EditorCanvas.d.ts +18 -0
  200. package/lib/typescript/src/canvas/EditorCanvas.d.ts.map +1 -0
  201. package/lib/typescript/src/canvas/InFlightLayer.d.ts +12 -0
  202. package/lib/typescript/src/canvas/InFlightLayer.d.ts.map +1 -0
  203. package/lib/typescript/src/canvas/SelectionOverlay.d.ts +11 -0
  204. package/lib/typescript/src/canvas/SelectionOverlay.d.ts.map +1 -0
  205. package/lib/typescript/src/constants.d.ts +25 -0
  206. package/lib/typescript/src/constants.d.ts.map +1 -0
  207. package/lib/typescript/src/context/EditorContext.d.ts +66 -0
  208. package/lib/typescript/src/context/EditorContext.d.ts.map +1 -0
  209. package/lib/typescript/src/export/drawScene.d.ts +10 -0
  210. package/lib/typescript/src/export/drawScene.d.ts.map +1 -0
  211. package/lib/typescript/src/export/exportImage.d.ts +23 -0
  212. package/lib/typescript/src/export/exportImage.d.ts.map +1 -0
  213. package/lib/typescript/src/gestures/applyTransform.d.ts +17 -0
  214. package/lib/typescript/src/gestures/applyTransform.d.ts.map +1 -0
  215. package/lib/typescript/src/gestures/createAnnotation.d.ts +11 -0
  216. package/lib/typescript/src/gestures/createAnnotation.d.ts.map +1 -0
  217. package/lib/typescript/src/gestures/handles.d.ts +17 -0
  218. package/lib/typescript/src/gestures/handles.d.ts.map +1 -0
  219. package/lib/typescript/src/gestures/hitTest.d.ts +9 -0
  220. package/lib/typescript/src/gestures/hitTest.d.ts.map +1 -0
  221. package/lib/typescript/src/gestures/useCropGesture.d.ts +7 -0
  222. package/lib/typescript/src/gestures/useCropGesture.d.ts.map +1 -0
  223. package/lib/typescript/src/gestures/useEditorGestures.d.ts +8 -0
  224. package/lib/typescript/src/gestures/useEditorGestures.d.ts.map +1 -0
  225. package/lib/typescript/src/image/disposeRegistry.d.ts +25 -0
  226. package/lib/typescript/src/image/disposeRegistry.d.ts.map +1 -0
  227. package/lib/typescript/src/image/useLoadedImage.d.ts +23 -0
  228. package/lib/typescript/src/image/useLoadedImage.d.ts.map +1 -0
  229. package/lib/typescript/src/index.d.ts +6 -0
  230. package/lib/typescript/src/index.d.ts.map +1 -0
  231. package/lib/typescript/src/state/history.d.ts +23 -0
  232. package/lib/typescript/src/state/history.d.ts.map +1 -0
  233. package/lib/typescript/src/state/selectors.d.ts +5 -0
  234. package/lib/typescript/src/state/selectors.d.ts.map +1 -0
  235. package/lib/typescript/src/state/useEditorReducer.d.ts +32 -0
  236. package/lib/typescript/src/state/useEditorReducer.d.ts.map +1 -0
  237. package/lib/typescript/src/toolbar/ColorPicker.d.ts +7 -0
  238. package/lib/typescript/src/toolbar/ColorPicker.d.ts.map +1 -0
  239. package/lib/typescript/src/toolbar/CropControls.d.ts +3 -0
  240. package/lib/typescript/src/toolbar/CropControls.d.ts.map +1 -0
  241. package/lib/typescript/src/toolbar/RotationSlider.d.ts +8 -0
  242. package/lib/typescript/src/toolbar/RotationSlider.d.ts.map +1 -0
  243. package/lib/typescript/src/toolbar/TextInputOverlay.d.ts +9 -0
  244. package/lib/typescript/src/toolbar/TextInputOverlay.d.ts.map +1 -0
  245. package/lib/typescript/src/toolbar/ToolButton.d.ts +7 -0
  246. package/lib/typescript/src/toolbar/ToolButton.d.ts.map +1 -0
  247. package/lib/typescript/src/toolbar/Toolbar.d.ts +4 -0
  248. package/lib/typescript/src/toolbar/Toolbar.d.ts.map +1 -0
  249. package/lib/typescript/src/types.d.ts +170 -0
  250. package/lib/typescript/src/types.d.ts.map +1 -0
  251. package/lib/typescript/src/utils/color.d.ts +8 -0
  252. package/lib/typescript/src/utils/color.d.ts.map +1 -0
  253. package/lib/typescript/src/utils/id.d.ts +3 -0
  254. package/lib/typescript/src/utils/id.d.ts.map +1 -0
  255. package/lib/typescript/src/utils/math.d.ts +68 -0
  256. package/lib/typescript/src/utils/math.d.ts.map +1 -0
  257. package/package.json +90 -0
  258. package/src/ImageEditor.tsx +133 -0
  259. package/src/annotations/AnnotationView.tsx +24 -0
  260. package/src/annotations/ArrowAnnotation.tsx +26 -0
  261. package/src/annotations/CircleAnnotation.tsx +22 -0
  262. package/src/annotations/FreehandAnnotation.tsx +22 -0
  263. package/src/annotations/MarkerAnnotation.tsx +20 -0
  264. package/src/annotations/RotatedGroup.tsx +28 -0
  265. package/src/annotations/TextAnnotation.tsx +42 -0
  266. package/src/annotations/geometry.ts +62 -0
  267. package/src/annotations/geometryPure.ts +73 -0
  268. package/src/canvas/AnnotationLayer.tsx +43 -0
  269. package/src/canvas/BaseImageLayer.tsx +28 -0
  270. package/src/canvas/CropOverlay.tsx +92 -0
  271. package/src/canvas/EditorCanvas.tsx +70 -0
  272. package/src/canvas/InFlightLayer.tsx +140 -0
  273. package/src/canvas/SelectionOverlay.tsx +92 -0
  274. package/src/constants.ts +46 -0
  275. package/src/context/EditorContext.tsx +229 -0
  276. package/src/export/drawScene.ts +120 -0
  277. package/src/export/exportImage.ts +111 -0
  278. package/src/gestures/applyTransform.ts +76 -0
  279. package/src/gestures/createAnnotation.ts +92 -0
  280. package/src/gestures/handles.ts +50 -0
  281. package/src/gestures/hitTest.ts +79 -0
  282. package/src/gestures/useCropGesture.ts +123 -0
  283. package/src/gestures/useEditorGestures.ts +308 -0
  284. package/src/image/disposeRegistry.ts +59 -0
  285. package/src/image/useLoadedImage.ts +131 -0
  286. package/src/index.ts +32 -0
  287. package/src/state/history.ts +71 -0
  288. package/src/state/selectors.ts +16 -0
  289. package/src/state/useEditorReducer.ts +93 -0
  290. package/src/toolbar/ColorPicker.tsx +72 -0
  291. package/src/toolbar/CropControls.tsx +46 -0
  292. package/src/toolbar/RotationSlider.tsx +56 -0
  293. package/src/toolbar/TextInputOverlay.tsx +104 -0
  294. package/src/toolbar/ToolButton.tsx +46 -0
  295. package/src/toolbar/Toolbar.tsx +110 -0
  296. package/src/types.ts +203 -0
  297. package/src/utils/color.ts +34 -0
  298. package/src/utils/id.ts +7 -0
  299. package/src/utils/math.ts +222 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getAnnotationById","annotations","id","undefined","find","a","sortedByZ","sort","b","z"],"sourceRoot":"..\\..\\..\\src","sources":["state/selectors.ts"],"mappings":";;;;;;;AAEO,SAASA,iBAAiBA,CAC/BC,WAAyB,EACzBC,EAAiB,EACO;EACxB,IAAI,CAACA,EAAE,EAAE;IACP,OAAOC,SAAS;EAClB;EACA,OAAOF,WAAW,CAACG,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACH,EAAE,KAAKA,EAAE,CAAC;AAC7C;;AAEA;AACO,SAASI,SAASA,CAACL,WAAyB,EAAgB;EACjE,OAAO,CAAC,GAAGA,WAAW,CAAC,CAACM,IAAI,CAAC,CAACF,CAAC,EAAEG,CAAC,KAAKH,CAAC,CAACI,CAAC,GAAGD,CAAC,CAACC,CAAC,CAAC;AACnD","ignoreList":[]}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useEditorReducer = useEditorReducer;
7
+ var _react = require("react");
8
+ var _types = require("../types");
9
+ var _history = require("./history");
10
+ const EMPTY_DOCUMENT = {
11
+ annotations: [],
12
+ scene: _types.IDENTITY_SCENE
13
+ };
14
+ function nextZ(annotations) {
15
+ return annotations.reduce((max, a) => Math.max(max, a.z), 0) + 1;
16
+ }
17
+ function reducer(state, action) {
18
+ const doc = state.present;
19
+ switch (action.type) {
20
+ case 'ADD_ANNOTATION':
21
+ {
22
+ const annotation = {
23
+ ...action.annotation,
24
+ z: nextZ(doc.annotations)
25
+ };
26
+ return (0, _history.commit)(state, {
27
+ ...doc,
28
+ annotations: [...doc.annotations, annotation]
29
+ });
30
+ }
31
+ case 'UPDATE_ANNOTATION':
32
+ {
33
+ const annotations = doc.annotations.map(a => a.id === action.id ? {
34
+ ...a,
35
+ ...action.changes
36
+ } : a);
37
+ const next = {
38
+ ...doc,
39
+ annotations
40
+ };
41
+ return action.transient ? (0, _history.replacePresent)(state, next) : (0, _history.commit)(state, next);
42
+ }
43
+ case 'DELETE_ANNOTATION':
44
+ {
45
+ return (0, _history.commit)(state, {
46
+ ...doc,
47
+ annotations: doc.annotations.filter(a => a.id !== action.id)
48
+ });
49
+ }
50
+ case 'SET_SCENE':
51
+ {
52
+ const next = {
53
+ ...doc,
54
+ scene: {
55
+ ...doc.scene,
56
+ ...action.changes
57
+ }
58
+ };
59
+ return action.transient ? (0, _history.replacePresent)(state, next) : (0, _history.commit)(state, next);
60
+ }
61
+ case 'REPLACE':
62
+ {
63
+ return (0, _history.commit)(state, action.document);
64
+ }
65
+ case 'RESET':
66
+ {
67
+ return (0, _history.commit)(state, EMPTY_DOCUMENT);
68
+ }
69
+ case 'UNDO':
70
+ return (0, _history.undo)(state);
71
+ case 'REDO':
72
+ return (0, _history.redo)(state);
73
+ default:
74
+ return state;
75
+ }
76
+ }
77
+ function useEditorReducer(initial) {
78
+ return (0, _react.useReducer)(reducer, (0, _history.initHistory)({
79
+ ...EMPTY_DOCUMENT,
80
+ ...initial
81
+ }));
82
+ }
83
+ //# sourceMappingURL=useEditorReducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_types","_history","EMPTY_DOCUMENT","annotations","scene","IDENTITY_SCENE","nextZ","reduce","max","a","Math","z","reducer","state","action","doc","present","type","annotation","commit","map","id","changes","next","transient","replacePresent","filter","document","undoHistory","redoHistory","useEditorReducer","initial","useReducer","initHistory"],"sourceRoot":"..\\..\\..\\src","sources":["state/useEditorReducer.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAgCA,MAAMG,cAA8B,GAAG;EACrCC,WAAW,EAAE,EAAE;EACfC,KAAK,EAAEC;AACT,CAAC;AAED,SAASC,KAAKA,CAACH,WAAyB,EAAU;EAChD,OAAOA,WAAW,CAACI,MAAM,CAAC,CAACC,GAAG,EAAEC,CAAC,KAAKC,IAAI,CAACF,GAAG,CAACA,GAAG,EAAEC,CAAC,CAACE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;AAClE;AAEA,SAASC,OAAOA,CAACC,KAAkB,EAAEC,MAAoB,EAAe;EACtE,MAAMC,GAAG,GAAGF,KAAK,CAACG,OAAO;EACzB,QAAQF,MAAM,CAACG,IAAI;IACjB,KAAK,gBAAgB;MAAE;QACrB,MAAMC,UAAU,GAAG;UAAE,GAAGJ,MAAM,CAACI,UAAU;UAAEP,CAAC,EAAEL,KAAK,CAACS,GAAG,CAACZ,WAAW;QAAE,CAAC;QACtE,OAAO,IAAAgB,eAAM,EAACN,KAAK,EAAE;UACnB,GAAGE,GAAG;UACNZ,WAAW,EAAE,CAAC,GAAGY,GAAG,CAACZ,WAAW,EAAEe,UAAU;QAC9C,CAAC,CAAC;MACJ;IACA,KAAK,mBAAmB;MAAE;QACxB,MAAMf,WAAW,GAAGY,GAAG,CAACZ,WAAW,CAACiB,GAAG,CAAEX,CAAC,IACxCA,CAAC,CAACY,EAAE,KAAKP,MAAM,CAACO,EAAE,GAAI;UAAE,GAAGZ,CAAC;UAAE,GAAGK,MAAM,CAACQ;QAAQ,CAAC,GAAkBb,CACrE,CAAC;QACD,MAAMc,IAAI,GAAG;UAAE,GAAGR,GAAG;UAAEZ;QAAY,CAAC;QACpC,OAAOW,MAAM,CAACU,SAAS,GAAG,IAAAC,uBAAc,EAACZ,KAAK,EAAEU,IAAI,CAAC,GAAG,IAAAJ,eAAM,EAACN,KAAK,EAAEU,IAAI,CAAC;MAC7E;IACA,KAAK,mBAAmB;MAAE;QACxB,OAAO,IAAAJ,eAAM,EAACN,KAAK,EAAE;UACnB,GAAGE,GAAG;UACNZ,WAAW,EAAEY,GAAG,CAACZ,WAAW,CAACuB,MAAM,CAAEjB,CAAC,IAAKA,CAAC,CAACY,EAAE,KAAKP,MAAM,CAACO,EAAE;QAC/D,CAAC,CAAC;MACJ;IACA,KAAK,WAAW;MAAE;QAChB,MAAME,IAAI,GAAG;UAAE,GAAGR,GAAG;UAAEX,KAAK,EAAE;YAAE,GAAGW,GAAG,CAACX,KAAK;YAAE,GAAGU,MAAM,CAACQ;UAAQ;QAAE,CAAC;QACnE,OAAOR,MAAM,CAACU,SAAS,GAAG,IAAAC,uBAAc,EAACZ,KAAK,EAAEU,IAAI,CAAC,GAAG,IAAAJ,eAAM,EAACN,KAAK,EAAEU,IAAI,CAAC;MAC7E;IACA,KAAK,SAAS;MAAE;QACd,OAAO,IAAAJ,eAAM,EAACN,KAAK,EAAEC,MAAM,CAACa,QAAQ,CAAC;MACvC;IACA,KAAK,OAAO;MAAE;QACZ,OAAO,IAAAR,eAAM,EAACN,KAAK,EAAEX,cAAc,CAAC;MACtC;IACA,KAAK,MAAM;MACT,OAAO,IAAA0B,aAAW,EAACf,KAAK,CAAC;IAC3B,KAAK,MAAM;MACT,OAAO,IAAAgB,aAAW,EAAChB,KAAK,CAAC;IAC3B;MACE,OAAOA,KAAK;EAChB;AACF;AAEO,SAASiB,gBAAgBA,CAACC,OAAiC,EAAE;EAClE,OAAO,IAAAC,iBAAU,EACfpB,OAAO,EACP,IAAAqB,oBAAW,EAAiB;IAAE,GAAG/B,cAAc;IAAE,GAAG6B;EAAQ,CAAC,CAC/D,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ColorPicker = ColorPicker;
7
+ var _reactNative = require("react-native");
8
+ var _EditorContext = require("../context/EditorContext");
9
+ var _selectors = require("../state/selectors");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ /**
12
+ * Horizontal swatch strip. Picking a color sets the "current" color used for new
13
+ * shapes and, if an annotation is selected, recolors it (the right field per
14
+ * type). While editing text, it also updates the live text color.
15
+ */
16
+ function ColorPicker() {
17
+ const {
18
+ palette,
19
+ strokeColor,
20
+ setStrokeColor,
21
+ setTextColor,
22
+ selectedId,
23
+ editingTextId,
24
+ annotations,
25
+ dispatch
26
+ } = (0, _EditorContext.useEditor)();
27
+ const onPick = color => {
28
+ setStrokeColor(color);
29
+ setTextColor(color);
30
+ const target = (0, _selectors.getAnnotationById)(annotations, editingTextId ?? selectedId);
31
+ if (target) {
32
+ if (target.type === 'text' || target.type === 'marker') {
33
+ dispatch({
34
+ type: 'UPDATE_ANNOTATION',
35
+ id: target.id,
36
+ changes: {
37
+ color
38
+ }
39
+ });
40
+ } else {
41
+ dispatch({
42
+ type: 'UPDATE_ANNOTATION',
43
+ id: target.id,
44
+ changes: {
45
+ strokeColor: color
46
+ }
47
+ });
48
+ }
49
+ }
50
+ };
51
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
52
+ horizontal: true,
53
+ showsHorizontalScrollIndicator: false,
54
+ contentContainerStyle: styles.row,
55
+ children: palette.map(color => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
56
+ onPress: () => onPick(color),
57
+ hitSlop: 4,
58
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
59
+ style: [styles.swatch, {
60
+ backgroundColor: color
61
+ }, color === strokeColor && styles.selected]
62
+ })
63
+ }, color))
64
+ });
65
+ }
66
+ const styles = _reactNative.StyleSheet.create({
67
+ row: {
68
+ alignItems: 'center',
69
+ paddingHorizontal: 8,
70
+ gap: 8
71
+ },
72
+ swatch: {
73
+ width: 28,
74
+ height: 28,
75
+ borderRadius: 14,
76
+ borderWidth: 2,
77
+ borderColor: 'rgba(255,255,255,0.5)'
78
+ },
79
+ selected: {
80
+ borderColor: '#FFFFFF',
81
+ borderWidth: 3
82
+ }
83
+ });
84
+ //# sourceMappingURL=ColorPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_EditorContext","_selectors","_jsxRuntime","ColorPicker","palette","strokeColor","setStrokeColor","setTextColor","selectedId","editingTextId","annotations","dispatch","useEditor","onPick","color","target","getAnnotationById","type","id","changes","jsx","ScrollView","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","styles","row","children","map","Pressable","onPress","hitSlop","View","style","swatch","backgroundColor","selected","StyleSheet","create","alignItems","paddingHorizontal","gap","width","height","borderRadius","borderWidth","borderColor"],"sourceRoot":"..\\..\\..\\src","sources":["toolbar/ColorPicker.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAAuD,IAAAG,WAAA,GAAAH,OAAA;AAGvD;AACA;AACA;AACA;AACA;AACO,SAASI,WAAWA,CAAA,EAAG;EAC5B,MAAM;IACJC,OAAO;IACPC,WAAW;IACXC,cAAc;IACdC,YAAY;IACZC,UAAU;IACVC,aAAa;IACbC,WAAW;IACXC;EACF,CAAC,GAAG,IAAAC,wBAAS,EAAC,CAAC;EAEf,MAAMC,MAAM,GAAIC,KAAkB,IAAK;IACrCR,cAAc,CAACQ,KAAK,CAAC;IACrBP,YAAY,CAACO,KAAK,CAAC;IACnB,MAAMC,MAAM,GAAG,IAAAC,4BAAiB,EAACN,WAAW,EAAED,aAAa,IAAID,UAAU,CAAC;IAC1E,IAAIO,MAAM,EAAE;MACV,IAAIA,MAAM,CAACE,IAAI,KAAK,MAAM,IAAIF,MAAM,CAACE,IAAI,KAAK,QAAQ,EAAE;QACtDN,QAAQ,CAAC;UAAEM,IAAI,EAAE,mBAAmB;UAAEC,EAAE,EAAEH,MAAM,CAACG,EAAE;UAAEC,OAAO,EAAE;YAAEL;UAAM;QAAE,CAAC,CAAC;MAC5E,CAAC,MAAM;QACLH,QAAQ,CAAC;UACPM,IAAI,EAAE,mBAAmB;UACzBC,EAAE,EAAEH,MAAM,CAACG,EAAE;UACbC,OAAO,EAAE;YAAEd,WAAW,EAAES;UAAM;QAChC,CAAC,CAAC;MACJ;IACF;EACF,CAAC;EAED,oBACE,IAAAZ,WAAA,CAAAkB,GAAA,EAACtB,YAAA,CAAAuB,UAAU;IACTC,UAAU;IACVC,8BAA8B,EAAE,KAAM;IACtCC,qBAAqB,EAAEC,MAAM,CAACC,GAAI;IAAAC,QAAA,EAEjCvB,OAAO,CAACwB,GAAG,CAAEd,KAAK,iBACjB,IAAAZ,WAAA,CAAAkB,GAAA,EAACtB,YAAA,CAAA+B,SAAS;MAAaC,OAAO,EAAEA,CAAA,KAAMjB,MAAM,CAACC,KAAK,CAAE;MAACiB,OAAO,EAAE,CAAE;MAAAJ,QAAA,eAC9D,IAAAzB,WAAA,CAAAkB,GAAA,EAACtB,YAAA,CAAAkC,IAAI;QACHC,KAAK,EAAE,CACLR,MAAM,CAACS,MAAM,EACb;UAAEC,eAAe,EAAErB;QAAM,CAAC,EAC1BA,KAAK,KAAKT,WAAW,IAAIoB,MAAM,CAACW,QAAQ;MACxC,CACH;IAAC,GAPYtB,KAQL,CACZ;EAAC,CACQ,CAAC;AAEjB;AAEA,MAAMW,MAAM,GAAGY,uBAAU,CAACC,MAAM,CAAC;EAC/BZ,GAAG,EAAE;IAAEa,UAAU,EAAE,QAAQ;IAAEC,iBAAiB,EAAE,CAAC;IAAEC,GAAG,EAAE;EAAE,CAAC;EAC3DP,MAAM,EAAE;IACNQ,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVC,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE;EACf,CAAC;EACDV,QAAQ,EAAE;IAAEU,WAAW,EAAE,SAAS;IAAED,WAAW,EAAE;EAAE;AACrD,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CropControls = CropControls;
7
+ var _reactNative = require("react-native");
8
+ var _EditorContext = require("../context/EditorContext");
9
+ var _ToolButton = require("./ToolButton");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ /** Apply / reset / cancel controls shown while the crop tool is active. */
12
+ function CropControls() {
13
+ const {
14
+ cropRectSV,
15
+ dispatch,
16
+ setTool,
17
+ imageSize
18
+ } = (0, _EditorContext.useEditor)();
19
+ const apply = () => {
20
+ const r = cropRectSV.value;
21
+ // Ignore a degenerate crop.
22
+ const isFull = r.x <= 0 && r.y <= 0 && r.width >= imageSize.width && r.height >= imageSize.height;
23
+ dispatch({
24
+ type: 'SET_SCENE',
25
+ changes: {
26
+ cropRect: isFull ? null : {
27
+ ...r
28
+ }
29
+ }
30
+ });
31
+ setTool('select');
32
+ };
33
+ const reset = () => {
34
+ dispatch({
35
+ type: 'SET_SCENE',
36
+ changes: {
37
+ cropRect: null
38
+ }
39
+ });
40
+ setTool('select');
41
+ };
42
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
43
+ style: styles.row,
44
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ToolButton.ToolButton, {
45
+ label: "\u2715 Cancel",
46
+ onPress: () => setTool('select')
47
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ToolButton.ToolButton, {
48
+ label: "\u21BA Reset",
49
+ onPress: reset
50
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ToolButton.ToolButton, {
51
+ label: "\u2713 Apply",
52
+ active: true,
53
+ onPress: apply
54
+ })]
55
+ });
56
+ }
57
+ const styles = _reactNative.StyleSheet.create({
58
+ row: {
59
+ flexDirection: 'row',
60
+ justifyContent: 'center',
61
+ alignItems: 'center',
62
+ paddingVertical: 6
63
+ }
64
+ });
65
+ //# sourceMappingURL=CropControls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_EditorContext","_ToolButton","_jsxRuntime","CropControls","cropRectSV","dispatch","setTool","imageSize","useEditor","apply","r","value","isFull","x","y","width","height","type","changes","cropRect","reset","jsxs","View","style","styles","row","children","jsx","ToolButton","label","onPress","active","StyleSheet","create","flexDirection","justifyContent","alignItems","paddingVertical"],"sourceRoot":"..\\..\\..\\src","sources":["toolbar/CropControls.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAA0C,IAAAG,WAAA,GAAAH,OAAA;AAE1C;AACO,SAASI,YAAYA,CAAA,EAAG;EAC7B,MAAM;IAAEC,UAAU;IAAEC,QAAQ;IAAEC,OAAO;IAAEC;EAAU,CAAC,GAAG,IAAAC,wBAAS,EAAC,CAAC;EAEhE,MAAMC,KAAK,GAAGA,CAAA,KAAM;IAClB,MAAMC,CAAC,GAAGN,UAAU,CAACO,KAAK;IAC1B;IACA,MAAMC,MAAM,GACVF,CAAC,CAACG,CAAC,IAAI,CAAC,IACRH,CAAC,CAACI,CAAC,IAAI,CAAC,IACRJ,CAAC,CAACK,KAAK,IAAIR,SAAS,CAACQ,KAAK,IAC1BL,CAAC,CAACM,MAAM,IAAIT,SAAS,CAACS,MAAM;IAC9BX,QAAQ,CAAC;MACPY,IAAI,EAAE,WAAW;MACjBC,OAAO,EAAE;QAAEC,QAAQ,EAAEP,MAAM,GAAG,IAAI,GAAG;UAAE,GAAGF;QAAE;MAAE;IAChD,CAAC,CAAC;IACFJ,OAAO,CAAC,QAAQ,CAAC;EACnB,CAAC;EAED,MAAMc,KAAK,GAAGA,CAAA,KAAM;IAClBf,QAAQ,CAAC;MAAEY,IAAI,EAAE,WAAW;MAAEC,OAAO,EAAE;QAAEC,QAAQ,EAAE;MAAK;IAAE,CAAC,CAAC;IAC5Db,OAAO,CAAC,QAAQ,CAAC;EACnB,CAAC;EAED,oBACE,IAAAJ,WAAA,CAAAmB,IAAA,EAACvB,YAAA,CAAAwB,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACC,GAAI;IAAAC,QAAA,gBACtB,IAAAxB,WAAA,CAAAyB,GAAA,EAAC1B,WAAA,CAAA2B,UAAU;MAACC,KAAK,EAAC,eAAU;MAACC,OAAO,EAAEA,CAAA,KAAMxB,OAAO,CAAC,QAAQ;IAAE,CAAE,CAAC,eACjE,IAAAJ,WAAA,CAAAyB,GAAA,EAAC1B,WAAA,CAAA2B,UAAU;MAACC,KAAK,EAAC,cAAS;MAACC,OAAO,EAAEV;IAAM,CAAE,CAAC,eAC9C,IAAAlB,WAAA,CAAAyB,GAAA,EAAC1B,WAAA,CAAA2B,UAAU;MAACC,KAAK,EAAC,cAAS;MAACE,MAAM;MAACD,OAAO,EAAErB;IAAM,CAAE,CAAC;EAAA,CACjD,CAAC;AAEX;AAEA,MAAMe,MAAM,GAAGQ,uBAAU,CAACC,MAAM,CAAC;EAC/BR,GAAG,EAAE;IACHS,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,eAAe,EAAE;EACnB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RotationSlider = RotationSlider;
7
+ var _reactNative = require("react-native");
8
+ var _reactNativeGestureHandler = require("react-native-gesture-handler");
9
+ var _reactNativeReanimated = require("react-native-reanimated");
10
+ var _EditorContext = require("../context/EditorContext");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ const SENSITIVITY = 0.006; // radians per pixel dragged
13
+
14
+ /**
15
+ * Drag left/right anywhere on the bar to rotate the whole image to ANY angle.
16
+ * Updates are transient during the drag (no history spam) and committed on
17
+ * release. Double-nothing here is fine — the scene re-renders, but rotation is
18
+ * an occasional interaction.
19
+ */
20
+ function RotationSlider() {
21
+ const {
22
+ doc,
23
+ dispatch
24
+ } = (0, _EditorContext.useEditor)();
25
+ const startRotation = (0, _reactNativeReanimated.useSharedValue)(0);
26
+ const rotationDeg = Math.round(doc.scene.rotation * 180 / Math.PI);
27
+ const setScene = (rotation, transient) => dispatch({
28
+ type: 'SET_SCENE',
29
+ changes: {
30
+ rotation
31
+ },
32
+ transient
33
+ });
34
+ const pan = _reactNativeGestureHandler.Gesture.Pan().onBegin(() => {
35
+ 'worklet';
36
+
37
+ startRotation.value = doc.scene.rotation;
38
+ }).onChange(e => {
39
+ 'worklet';
40
+
41
+ (0, _reactNativeReanimated.runOnJS)(setScene)(startRotation.value + e.translationX * SENSITIVITY, true);
42
+ }).onEnd(e => {
43
+ 'worklet';
44
+
45
+ (0, _reactNativeReanimated.runOnJS)(setScene)(startRotation.value + e.translationX * SENSITIVITY, false);
46
+ });
47
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector, {
48
+ gesture: pan,
49
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
50
+ style: styles.bar,
51
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
52
+ style: styles.label,
53
+ children: ["\u27F2 Rotate ", rotationDeg, "\xB0 \u27F3"]
54
+ })
55
+ })
56
+ });
57
+ }
58
+ const styles = _reactNative.StyleSheet.create({
59
+ bar: {
60
+ height: 36,
61
+ borderRadius: 8,
62
+ backgroundColor: 'rgba(255,255,255,0.12)',
63
+ alignItems: 'center',
64
+ justifyContent: 'center',
65
+ marginHorizontal: 8
66
+ },
67
+ label: {
68
+ color: '#FFFFFF',
69
+ fontSize: 14,
70
+ fontWeight: '600'
71
+ }
72
+ });
73
+ //# sourceMappingURL=RotationSlider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_reactNativeGestureHandler","_reactNativeReanimated","_EditorContext","_jsxRuntime","SENSITIVITY","RotationSlider","doc","dispatch","useEditor","startRotation","useSharedValue","rotationDeg","Math","round","scene","rotation","PI","setScene","transient","type","changes","pan","Gesture","Pan","onBegin","value","onChange","e","runOnJS","translationX","onEnd","jsx","GestureDetector","gesture","children","View","style","styles","bar","jsxs","Text","label","StyleSheet","create","height","borderRadius","backgroundColor","alignItems","justifyContent","marginHorizontal","color","fontSize","fontWeight"],"sourceRoot":"..\\..\\..\\src","sources":["toolbar/RotationSlider.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,0BAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AAEA,IAAAG,cAAA,GAAAH,OAAA;AAAqD,IAAAI,WAAA,GAAAJ,OAAA;AAErD,MAAMK,WAAW,GAAG,KAAK,CAAC,CAAC;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAAA,EAAG;EAC/B,MAAM;IAAEC,GAAG;IAAEC;EAAS,CAAC,GAAG,IAAAC,wBAAS,EAAC,CAAC;EACrC,MAAMC,aAAa,GAAG,IAAAC,qCAAc,EAAC,CAAC,CAAC;EACvC,MAAMC,WAAW,GAAGC,IAAI,CAACC,KAAK,CAAEP,GAAG,CAACQ,KAAK,CAACC,QAAQ,GAAG,GAAG,GAAIH,IAAI,CAACI,EAAE,CAAC;EAEpE,MAAMC,QAAQ,GAAGA,CAACF,QAAgB,EAAEG,SAAkB,KACpDX,QAAQ,CAAC;IAAEY,IAAI,EAAE,WAAW;IAAEC,OAAO,EAAE;MAAEL;IAAS,CAAC;IAAEG;EAAU,CAAC,CAAC;EAEnE,MAAMG,GAAG,GAAGC,kCAAO,CAACC,GAAG,CAAC,CAAC,CACtBC,OAAO,CAAC,MAAM;IACb,SAAS;;IACTf,aAAa,CAACgB,KAAK,GAAGnB,GAAG,CAACQ,KAAK,CAACC,QAAQ;EAC1C,CAAC,CAAC,CACDW,QAAQ,CAAEC,CAAC,IAAK;IACf,SAAS;;IACT,IAAAC,8BAAO,EAACX,QAAQ,CAAC,CAACR,aAAa,CAACgB,KAAK,GAAGE,CAAC,CAACE,YAAY,GAAGzB,WAAW,EAAE,IAAI,CAAC;EAC7E,CAAC,CAAC,CACD0B,KAAK,CAAEH,CAAC,IAAK;IACZ,SAAS;;IACT,IAAAC,8BAAO,EAACX,QAAQ,CAAC,CAACR,aAAa,CAACgB,KAAK,GAAGE,CAAC,CAACE,YAAY,GAAGzB,WAAW,EAAE,KAAK,CAAC;EAC9E,CAAC,CAAC;EAEJ,oBACE,IAAAD,WAAA,CAAA4B,GAAA,EAAC/B,0BAAA,CAAAgC,eAAe;IAACC,OAAO,EAAEZ,GAAI;IAAAa,QAAA,eAC5B,IAAA/B,WAAA,CAAA4B,GAAA,EAACjC,YAAA,CAAAqC,IAAI;MAACC,KAAK,EAAEC,MAAM,CAACC,GAAI;MAAAJ,QAAA,eACtB,IAAA/B,WAAA,CAAAoC,IAAA,EAACzC,YAAA,CAAA0C,IAAI;QAACJ,KAAK,EAAEC,MAAM,CAACI,KAAM;QAAAP,QAAA,GAAC,iBAAU,EAACvB,WAAW,EAAC,cAAI;MAAA,CAAM;IAAC,CACzD;EAAC,CACQ,CAAC;AAEtB;AAEA,MAAM0B,MAAM,GAAGK,uBAAU,CAACC,MAAM,CAAC;EAC/BL,GAAG,EAAE;IACHM,MAAM,EAAE,EAAE;IACVC,YAAY,EAAE,CAAC;IACfC,eAAe,EAAE,wBAAwB;IACzCC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,gBAAgB,EAAE;EACpB,CAAC;EACDR,KAAK,EAAE;IAAES,KAAK,EAAE,SAAS;IAAEC,QAAQ,EAAE,EAAE;IAAEC,UAAU,EAAE;EAAM;AAC7D,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TextInputOverlay = TextInputOverlay;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _EditorContext = require("../context/EditorContext");
10
+ var _selectors = require("../state/selectors");
11
+ var _math = require("../utils/math");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ /**
14
+ * Native TextInput overlaid on the text annotation being edited. Skia can't
15
+ * accept keyboard input, so we edit here and mirror the string back into the
16
+ * annotation (transient updates while typing; a committed update on blur). The
17
+ * Skia text for this annotation is hidden while editing (see AnnotationLayer).
18
+ * Positioning ignores rotation for simplicity.
19
+ */
20
+ function TextInputOverlay() {
21
+ const {
22
+ editingTextId,
23
+ setEditingTextId,
24
+ annotations,
25
+ dispatch,
26
+ matrix,
27
+ setSelectedId
28
+ } = (0, _EditorContext.useEditor)();
29
+ const target = (0, _selectors.getAnnotationById)(annotations, editingTextId);
30
+ const isText = target?.type === 'text' ? target : null;
31
+ const inputRef = (0, _react.useRef)(null);
32
+ const [value, setValue] = (0, _react.useState)('');
33
+ (0, _react.useEffect)(() => {
34
+ if (isText) {
35
+ setValue(isText.text);
36
+ const t = setTimeout(() => inputRef.current?.focus(), 50);
37
+ return () => clearTimeout(t);
38
+ }
39
+ return undefined;
40
+ // eslint-disable-next-line react-hooks/exhaustive-deps
41
+ }, [editingTextId]);
42
+ if (!isText) {
43
+ return null;
44
+ }
45
+ const scaleFactor = Math.hypot(matrix.a, matrix.b) || 1;
46
+ const screen = (0, _math.applyToPoint)(matrix, isText.origin);
47
+ const fontSize = isText.fontSize * scaleFactor;
48
+ const width = isText.width * scaleFactor;
49
+ const onChange = text => {
50
+ setValue(text);
51
+ dispatch({
52
+ type: 'UPDATE_ANNOTATION',
53
+ id: isText.id,
54
+ changes: {
55
+ text
56
+ },
57
+ transient: true
58
+ });
59
+ };
60
+ const onDone = () => {
61
+ const trimmed = value.trim();
62
+ if (trimmed.length === 0) {
63
+ dispatch({
64
+ type: 'DELETE_ANNOTATION',
65
+ id: isText.id
66
+ });
67
+ setSelectedId(null);
68
+ } else {
69
+ // Promote the accumulated transient edits into a single history entry.
70
+ dispatch({
71
+ type: 'UPDATE_ANNOTATION',
72
+ id: isText.id,
73
+ changes: {
74
+ text: value
75
+ }
76
+ });
77
+ }
78
+ setEditingTextId(null);
79
+ };
80
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
81
+ ref: inputRef,
82
+ value: value,
83
+ onChangeText: onChange,
84
+ onBlur: onDone,
85
+ onSubmitEditing: onDone,
86
+ multiline: true,
87
+ blurOnSubmit: true,
88
+ style: [styles.input, {
89
+ left: screen.x,
90
+ top: screen.y,
91
+ width: Math.max(width, 80),
92
+ fontSize,
93
+ color: isText.color,
94
+ lineHeight: fontSize * 1.2
95
+ }],
96
+ placeholder: "Text",
97
+ placeholderTextColor: "rgba(255,255,255,0.5)"
98
+ });
99
+ }
100
+ const styles = _reactNative.StyleSheet.create({
101
+ input: {
102
+ position: 'absolute',
103
+ padding: 0,
104
+ margin: 0,
105
+ textAlignVertical: 'top'
106
+ }
107
+ });
108
+ //# sourceMappingURL=TextInputOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_EditorContext","_selectors","_math","_jsxRuntime","TextInputOverlay","editingTextId","setEditingTextId","annotations","dispatch","matrix","setSelectedId","useEditor","target","getAnnotationById","isText","type","inputRef","useRef","value","setValue","useState","useEffect","text","t","setTimeout","current","focus","clearTimeout","undefined","scaleFactor","Math","hypot","a","b","screen","applyToPoint","origin","fontSize","width","onChange","id","changes","transient","onDone","trimmed","trim","length","jsx","TextInput","ref","onChangeText","onBlur","onSubmitEditing","multiline","blurOnSubmit","style","styles","input","left","x","top","y","max","color","lineHeight","placeholder","placeholderTextColor","StyleSheet","create","position","padding","margin","textAlignVertical"],"sourceRoot":"..\\..\\..\\src","sources":["toolbar/TextInputOverlay.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ToolButton = ToolButton;
7
+ var _reactNative = require("react-native");
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
+ function ToolButton({
10
+ label,
11
+ active,
12
+ disabled,
13
+ onPress
14
+ }) {
15
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
16
+ onPress: onPress,
17
+ disabled: disabled,
18
+ style: ({
19
+ pressed
20
+ }) => [styles.button, active && styles.active, disabled && styles.disabled, pressed && styles.pressed],
21
+ hitSlop: 6,
22
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
23
+ style: [styles.label, active && styles.activeLabel],
24
+ children: label
25
+ })
26
+ });
27
+ }
28
+ const styles = _reactNative.StyleSheet.create({
29
+ button: {
30
+ minWidth: 44,
31
+ height: 44,
32
+ paddingHorizontal: 8,
33
+ alignItems: 'center',
34
+ justifyContent: 'center',
35
+ borderRadius: 10,
36
+ marginHorizontal: 2
37
+ },
38
+ active: {
39
+ backgroundColor: '#1E90FF'
40
+ },
41
+ disabled: {
42
+ opacity: 0.35
43
+ },
44
+ pressed: {
45
+ opacity: 0.6
46
+ },
47
+ label: {
48
+ color: '#FFFFFF',
49
+ fontSize: 18
50
+ },
51
+ activeLabel: {
52
+ color: '#FFFFFF',
53
+ fontWeight: '700'
54
+ }
55
+ });
56
+ //# sourceMappingURL=ToolButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_jsxRuntime","ToolButton","label","active","disabled","onPress","jsx","Pressable","style","pressed","styles","button","hitSlop","children","Text","activeLabel","StyleSheet","create","minWidth","height","paddingHorizontal","alignItems","justifyContent","borderRadius","marginHorizontal","backgroundColor","opacity","color","fontSize","fontWeight"],"sourceRoot":"..\\..\\..\\src","sources":["toolbar/ToolButton.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAA2D,IAAAC,WAAA,GAAAD,OAAA;AAEpD,SAASE,UAAUA,CAAC;EACzBC,KAAK;EACLC,MAAM;EACNC,QAAQ;EACRC;AAMF,CAAC,EAAE;EACD,oBACE,IAAAL,WAAA,CAAAM,GAAA,EAACR,YAAA,CAAAS,SAAS;IACRF,OAAO,EAAEA,OAAQ;IACjBD,QAAQ,EAAEA,QAAS;IACnBI,KAAK,EAAEA,CAAC;MAAEC;IAAQ,CAAC,KAAK,CACtBC,MAAM,CAACC,MAAM,EACbR,MAAM,IAAIO,MAAM,CAACP,MAAM,EACvBC,QAAQ,IAAIM,MAAM,CAACN,QAAQ,EAC3BK,OAAO,IAAIC,MAAM,CAACD,OAAO,CACzB;IACFG,OAAO,EAAE,CAAE;IAAAC,QAAA,eAEX,IAAAb,WAAA,CAAAM,GAAA,EAACR,YAAA,CAAAgB,IAAI;MAACN,KAAK,EAAE,CAACE,MAAM,CAACR,KAAK,EAAEC,MAAM,IAAIO,MAAM,CAACK,WAAW,CAAE;MAAAF,QAAA,EAAEX;IAAK,CAAO;EAAC,CAChE,CAAC;AAEhB;AAEA,MAAMQ,MAAM,GAAGM,uBAAU,CAACC,MAAM,CAAC;EAC/BN,MAAM,EAAE;IACNO,QAAQ,EAAE,EAAE;IACZC,MAAM,EAAE,EAAE;IACVC,iBAAiB,EAAE,CAAC;IACpBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,YAAY,EAAE,EAAE;IAChBC,gBAAgB,EAAE;EACpB,CAAC;EACDrB,MAAM,EAAE;IAAEsB,eAAe,EAAE;EAAU,CAAC;EACtCrB,QAAQ,EAAE;IAAEsB,OAAO,EAAE;EAAK,CAAC;EAC3BjB,OAAO,EAAE;IAAEiB,OAAO,EAAE;EAAI,CAAC;EACzBxB,KAAK,EAAE;IAAEyB,KAAK,EAAE,SAAS;IAAEC,QAAQ,EAAE;EAAG,CAAC;EACzCb,WAAW,EAAE;IAAEY,KAAK,EAAE,SAAS;IAAEE,UAAU,EAAE;EAAM;AACrD,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Toolbar = Toolbar;
7
+ var _reactNative = require("react-native");
8
+ var _EditorContext = require("../context/EditorContext");
9
+ var _ToolButton = require("./ToolButton");
10
+ var _ColorPicker = require("./ColorPicker");
11
+ var _CropControls = require("./CropControls");
12
+ var _RotationSlider = require("./RotationSlider");
13
+ var _jsxRuntime = require("react/jsx-runtime");
14
+ const TOOLS = [{
15
+ tool: 'select',
16
+ label: '⇱'
17
+ }, {
18
+ tool: 'circle',
19
+ label: '◯'
20
+ }, {
21
+ tool: 'arrow',
22
+ label: '↗'
23
+ }, {
24
+ tool: 'marker',
25
+ label: '▬'
26
+ }, {
27
+ tool: 'freehand',
28
+ label: '✎'
29
+ }, {
30
+ tool: 'text',
31
+ label: 'T'
32
+ }, {
33
+ tool: 'crop',
34
+ label: '⛶'
35
+ }];
36
+ function Toolbar({
37
+ onDone
38
+ }) {
39
+ const {
40
+ tool,
41
+ setTool,
42
+ selectedId,
43
+ setSelectedId,
44
+ canUndo,
45
+ canRedo,
46
+ dispatch,
47
+ doc
48
+ } = (0, _EditorContext.useEditor)();
49
+ const cropping = tool === 'crop';
50
+ const deleteSelected = () => {
51
+ if (selectedId) {
52
+ dispatch({
53
+ type: 'DELETE_ANNOTATION',
54
+ id: selectedId
55
+ });
56
+ setSelectedId(null);
57
+ }
58
+ };
59
+ const bumpScale = delta => {
60
+ const next = Math.max(0.1, Math.min(4, doc.scene.scale + delta));
61
+ dispatch({
62
+ type: 'SET_SCENE',
63
+ changes: {
64
+ scale: next
65
+ }
66
+ });
67
+ };
68
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
69
+ style: styles.container,
70
+ children: cropping ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
71
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_RotationSlider.RotationSlider, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_CropControls.CropControls, {})]
72
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
73
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
74
+ style: styles.topRow,
75
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ToolButton.ToolButton, {
76
+ label: "\u21B6",
77
+ disabled: !canUndo,
78
+ onPress: () => dispatch({
79
+ type: 'UNDO'
80
+ })
81
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ToolButton.ToolButton, {
82
+ label: "\u21B7",
83
+ disabled: !canRedo,
84
+ onPress: () => dispatch({
85
+ type: 'REDO'
86
+ })
87
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ToolButton.ToolButton, {
88
+ label: "\u2212",
89
+ onPress: () => bumpScale(-0.1)
90
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ToolButton.ToolButton, {
91
+ label: "+",
92
+ onPress: () => bumpScale(0.1)
93
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ToolButton.ToolButton, {
94
+ label: "\uD83D\uDDD1",
95
+ disabled: !selectedId,
96
+ onPress: deleteSelected
97
+ }), onDone ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ToolButton.ToolButton, {
98
+ label: "Done",
99
+ active: true,
100
+ onPress: onDone
101
+ }) : null]
102
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_RotationSlider.RotationSlider, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ColorPicker.ColorPicker, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
103
+ style: styles.toolRow,
104
+ children: TOOLS.map(t => /*#__PURE__*/(0, _jsxRuntime.jsx)(_ToolButton.ToolButton, {
105
+ label: t.label,
106
+ active: tool === t.tool,
107
+ onPress: () => {
108
+ setTool(t.tool);
109
+ if (t.tool !== 'select') {
110
+ setSelectedId(null);
111
+ }
112
+ }
113
+ }, t.tool))
114
+ })]
115
+ })
116
+ });
117
+ }
118
+ const styles = _reactNative.StyleSheet.create({
119
+ container: {
120
+ backgroundColor: '#1C1C1E',
121
+ paddingVertical: 8,
122
+ gap: 8
123
+ },
124
+ topRow: {
125
+ flexDirection: 'row',
126
+ justifyContent: 'center',
127
+ alignItems: 'center',
128
+ flexWrap: 'wrap'
129
+ },
130
+ toolRow: {
131
+ flexDirection: 'row',
132
+ justifyContent: 'center',
133
+ alignItems: 'center',
134
+ flexWrap: 'wrap'
135
+ }
136
+ });
137
+ //# sourceMappingURL=Toolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_EditorContext","_ToolButton","_ColorPicker","_CropControls","_RotationSlider","_jsxRuntime","TOOLS","tool","label","Toolbar","onDone","setTool","selectedId","setSelectedId","canUndo","canRedo","dispatch","doc","useEditor","cropping","deleteSelected","type","id","bumpScale","delta","next","Math","max","min","scene","scale","changes","jsx","View","style","styles","container","children","jsxs","Fragment","RotationSlider","CropControls","topRow","ToolButton","disabled","onPress","active","ColorPicker","toolRow","map","t","StyleSheet","create","backgroundColor","paddingVertical","gap","flexDirection","justifyContent","alignItems","flexWrap"],"sourceRoot":"..\\..\\..\\src","sources":["toolbar/Toolbar.tsx"],"mappings":"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","ignoreList":[]}