@oh-just-another/state 0.62.0 → 0.63.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 (259) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/actions/registry.js +1 -1
  4. package/dist/actions/registry.js.map +1 -1
  5. package/dist/constants.d.ts +162 -8
  6. package/dist/constants.d.ts.map +1 -1
  7. package/dist/constants.js +132 -8
  8. package/dist/constants.js.map +1 -1
  9. package/dist/editor/animation-scene.d.ts.map +1 -1
  10. package/dist/editor/animation-scene.js +27 -39
  11. package/dist/editor/animation-scene.js.map +1 -1
  12. package/dist/editor/animation.js +1 -1
  13. package/dist/editor/animation.js.map +1 -1
  14. package/dist/editor/applies/arrange-units.d.ts +24 -0
  15. package/dist/editor/applies/arrange-units.d.ts.map +1 -0
  16. package/dist/editor/applies/arrange-units.js +56 -0
  17. package/dist/editor/applies/arrange-units.js.map +1 -0
  18. package/dist/editor/applies/arrange.d.ts +16 -15
  19. package/dist/editor/applies/arrange.d.ts.map +1 -1
  20. package/dist/editor/applies/arrange.js +33 -48
  21. package/dist/editor/applies/arrange.js.map +1 -1
  22. package/dist/editor/applies/create.d.ts +16 -10
  23. package/dist/editor/applies/create.d.ts.map +1 -1
  24. package/dist/editor/applies/create.js +32 -12
  25. package/dist/editor/applies/create.js.map +1 -1
  26. package/dist/editor/applies/edge.d.ts +1 -1
  27. package/dist/editor/applies/edge.d.ts.map +1 -1
  28. package/dist/editor/applies/object-snap.d.ts +87 -0
  29. package/dist/editor/applies/object-snap.d.ts.map +1 -0
  30. package/dist/editor/applies/object-snap.js +198 -0
  31. package/dist/editor/applies/object-snap.js.map +1 -0
  32. package/dist/editor/applies/resize.d.ts +1 -1
  33. package/dist/editor/applies/resize.d.ts.map +1 -1
  34. package/dist/editor/applies/resize.js +6 -4
  35. package/dist/editor/applies/resize.js.map +1 -1
  36. package/dist/editor/applies/selection.d.ts +5 -5
  37. package/dist/editor/applies/selection.d.ts.map +1 -1
  38. package/dist/editor/applies/selection.js +15 -7
  39. package/dist/editor/applies/selection.js.map +1 -1
  40. package/dist/editor/applies/snap-grid.d.ts +1 -1
  41. package/dist/editor/applies/snap-grid.d.ts.map +1 -1
  42. package/dist/editor/container-ops.d.ts +1 -1
  43. package/dist/editor/container-ops.d.ts.map +1 -1
  44. package/dist/{editor-events.d.ts → editor/editor-events.d.ts} +2 -2
  45. package/dist/editor/editor-events.d.ts.map +1 -0
  46. package/dist/{editor-events.js.map → editor/editor-events.js.map} +1 -1
  47. package/dist/editor/event-fanout.d.ts +3 -3
  48. package/dist/editor/event-fanout.d.ts.map +1 -1
  49. package/dist/editor/gesture-tx.d.ts +1 -1
  50. package/dist/editor/gesture-tx.d.ts.map +1 -1
  51. package/dist/editor/hit-test.d.ts +5 -3
  52. package/dist/editor/hit-test.d.ts.map +1 -1
  53. package/dist/editor/hit-test.js +18 -10
  54. package/dist/editor/hit-test.js.map +1 -1
  55. package/dist/editor/interaction-state.d.ts +29 -2
  56. package/dist/editor/interaction-state.d.ts.map +1 -1
  57. package/dist/editor/interaction-state.js +34 -0
  58. package/dist/editor/interaction-state.js.map +1 -1
  59. package/dist/editor/link-handle-drag.d.ts +1 -1
  60. package/dist/editor/link-handle-drag.d.ts.map +1 -1
  61. package/dist/editor/link-handle-drag.js +1 -1
  62. package/dist/editor/link-handle-drag.js.map +1 -1
  63. package/dist/editor/pointer-binding.d.ts.map +1 -1
  64. package/dist/editor/pointer-binding.js +86 -24
  65. package/dist/editor/pointer-binding.js.map +1 -1
  66. package/dist/editor/public/arrange-group.d.ts +6 -5
  67. package/dist/editor/public/arrange-group.d.ts.map +1 -1
  68. package/dist/editor/public/arrange-group.js +39 -23
  69. package/dist/editor/public/arrange-group.js.map +1 -1
  70. package/dist/editor/public/clipboard.d.ts +1 -1
  71. package/dist/editor/public/clipboard.d.ts.map +1 -1
  72. package/dist/editor/public/clipboard.js +2 -2
  73. package/dist/editor/public/clipboard.js.map +1 -1
  74. package/dist/editor/public/cursor.js +1 -1
  75. package/dist/editor/public/cursor.js.map +1 -1
  76. package/dist/editor/public/eraser.js +1 -1
  77. package/dist/editor/public/eraser.js.map +1 -1
  78. package/dist/editor/public/image-insert.d.ts.map +1 -1
  79. package/dist/editor/public/image-insert.js +4 -1
  80. package/dist/editor/public/image-insert.js.map +1 -1
  81. package/dist/editor/public/label-seed.d.ts +12 -0
  82. package/dist/editor/public/label-seed.d.ts.map +1 -0
  83. package/dist/editor/public/label-seed.js +20 -0
  84. package/dist/editor/public/label-seed.js.map +1 -0
  85. package/dist/editor/public/layers.d.ts +1 -1
  86. package/dist/editor/public/layers.d.ts.map +1 -1
  87. package/dist/editor/public/placement.d.ts +6 -1
  88. package/dist/editor/public/placement.d.ts.map +1 -1
  89. package/dist/editor/public/placement.js +47 -17
  90. package/dist/editor/public/placement.js.map +1 -1
  91. package/dist/editor/public/selection-ops.d.ts +1 -1
  92. package/dist/editor/public/selection-ops.d.ts.map +1 -1
  93. package/dist/editor/public/selection-ops.js +31 -2
  94. package/dist/editor/public/selection-ops.js.map +1 -1
  95. package/dist/editor/public/stroke-eraser-coverage.js +1 -1
  96. package/dist/editor/public/stroke-eraser-coverage.js.map +1 -1
  97. package/dist/editor/public/stroke-eraser.js +1 -1
  98. package/dist/editor/public/stroke-eraser.js.map +1 -1
  99. package/dist/editor/public/text-edit.d.ts +4 -2
  100. package/dist/editor/public/text-edit.d.ts.map +1 -1
  101. package/dist/editor/public/text-edit.js +8 -4
  102. package/dist/editor/public/text-edit.js.map +1 -1
  103. package/dist/editor/public/tool-ops.d.ts +10 -7
  104. package/dist/editor/public/tool-ops.d.ts.map +1 -1
  105. package/dist/editor/public/tool-ops.js +141 -14
  106. package/dist/editor/public/tool-ops.js.map +1 -1
  107. package/dist/editor/public/zoom-pan.d.ts +10 -1
  108. package/dist/editor/public/zoom-pan.d.ts.map +1 -1
  109. package/dist/editor/public/zoom-pan.js +49 -0
  110. package/dist/editor/public/zoom-pan.js.map +1 -1
  111. package/dist/editor/render-orchestrator.d.ts +17 -11
  112. package/dist/editor/render-orchestrator.d.ts.map +1 -1
  113. package/dist/editor/render-orchestrator.js +45 -31
  114. package/dist/editor/render-orchestrator.js.map +1 -1
  115. package/dist/editor/resize-helpers.d.ts +1 -1
  116. package/dist/editor/resize-helpers.d.ts.map +1 -1
  117. package/dist/editor/shape-traits.d.ts +1 -1
  118. package/dist/editor/shape-traits.d.ts.map +1 -1
  119. package/dist/editor/shape-traits.js +1 -1
  120. package/dist/editor/shape-traits.js.map +1 -1
  121. package/dist/editor/text-edit.d.ts +24 -11
  122. package/dist/editor/text-edit.d.ts.map +1 -1
  123. package/dist/editor/text-edit.js +225 -45
  124. package/dist/editor/text-edit.js.map +1 -1
  125. package/dist/editor.d.ts +306 -18
  126. package/dist/editor.d.ts.map +1 -1
  127. package/dist/editor.js +1233 -67
  128. package/dist/editor.js.map +1 -1
  129. package/dist/features/built-in-handlers.d.ts.map +1 -0
  130. package/dist/{built-in-handlers.js → features/built-in-handlers.js} +7 -1
  131. package/dist/features/built-in-handlers.js.map +1 -0
  132. package/dist/{clipboard.d.ts → features/clipboard.d.ts} +14 -0
  133. package/dist/features/clipboard.d.ts.map +1 -0
  134. package/dist/{clipboard.js → features/clipboard.js} +1 -1
  135. package/dist/features/clipboard.js.map +1 -0
  136. package/dist/{file-drop.d.ts → features/file-drop.d.ts} +20 -1
  137. package/dist/features/file-drop.d.ts.map +1 -0
  138. package/dist/{file-drop.js → features/file-drop.js} +47 -19
  139. package/dist/features/file-drop.js.map +1 -0
  140. package/dist/features/insert-scene.d.ts +19 -0
  141. package/dist/features/insert-scene.d.ts.map +1 -0
  142. package/dist/features/insert-scene.js +145 -0
  143. package/dist/features/insert-scene.js.map +1 -0
  144. package/dist/features/search.d.ts.map +1 -0
  145. package/dist/features/search.js.map +1 -0
  146. package/dist/helpers/auto-compact.d.ts.map +1 -0
  147. package/dist/{auto-compact.js → helpers/auto-compact.js} +1 -1
  148. package/dist/helpers/auto-compact.js.map +1 -0
  149. package/dist/helpers/auto-layout-scheduler.d.ts.map +1 -0
  150. package/dist/helpers/auto-layout-scheduler.js.map +1 -0
  151. package/dist/helpers/frame-helpers.d.ts.map +1 -0
  152. package/dist/helpers/frame-helpers.js.map +1 -0
  153. package/dist/helpers/group-helpers.d.ts.map +1 -0
  154. package/dist/helpers/group-helpers.js.map +1 -0
  155. package/dist/helpers/util.d.ts.map +1 -0
  156. package/dist/helpers/util.js.map +1 -0
  157. package/dist/index.d.ts +23 -21
  158. package/dist/index.d.ts.map +1 -1
  159. package/dist/index.js +12 -12
  160. package/dist/index.js.map +1 -1
  161. package/dist/input/dom-events.d.ts.map +1 -0
  162. package/dist/input/dom-events.js.map +1 -0
  163. package/dist/{hotkeys-binding.d.ts → input/hotkeys-binding.d.ts} +2 -2
  164. package/dist/input/hotkeys-binding.d.ts.map +1 -0
  165. package/dist/{hotkeys-binding.js → input/hotkeys-binding.js} +1 -1
  166. package/dist/input/hotkeys-binding.js.map +1 -0
  167. package/dist/input/platform.d.ts.map +1 -0
  168. package/dist/input/platform.js.map +1 -0
  169. package/dist/{handle.d.ts → interaction/handle.d.ts} +1 -1
  170. package/dist/interaction/handle.d.ts.map +1 -0
  171. package/dist/{handle.js → interaction/handle.js} +1 -1
  172. package/dist/interaction/handle.js.map +1 -0
  173. package/dist/interaction/interactive.d.ts.map +1 -0
  174. package/dist/interaction/interactive.js.map +1 -0
  175. package/dist/interaction/machine.d.ts.map +1 -0
  176. package/dist/interaction/machine.js.map +1 -0
  177. package/dist/interaction/modes.d.ts.map +1 -0
  178. package/dist/interaction/modes.js.map +1 -0
  179. package/dist/render/animation-tick.d.ts.map +1 -0
  180. package/dist/render/animation-tick.js.map +1 -0
  181. package/dist/{overlay.d.ts → render/overlay.d.ts} +42 -38
  182. package/dist/render/overlay.d.ts.map +1 -0
  183. package/dist/{overlay.js → render/overlay.js} +174 -59
  184. package/dist/render/overlay.js.map +1 -0
  185. package/dist/selection/link-selection.d.ts.map +1 -0
  186. package/dist/{link-selection.js → selection/link-selection.js} +1 -1
  187. package/dist/selection/link-selection.js.map +1 -0
  188. package/dist/selection/selection.d.ts.map +1 -0
  189. package/dist/{selection.js → selection/selection.js} +1 -1
  190. package/dist/selection/selection.js.map +1 -0
  191. package/package.json +5 -5
  192. package/dist/animation-tick.d.ts.map +0 -1
  193. package/dist/animation-tick.js.map +0 -1
  194. package/dist/auto-compact.d.ts.map +0 -1
  195. package/dist/auto-compact.js.map +0 -1
  196. package/dist/auto-layout-scheduler.d.ts.map +0 -1
  197. package/dist/auto-layout-scheduler.js.map +0 -1
  198. package/dist/built-in-handlers.d.ts.map +0 -1
  199. package/dist/built-in-handlers.js.map +0 -1
  200. package/dist/clipboard.d.ts.map +0 -1
  201. package/dist/clipboard.js.map +0 -1
  202. package/dist/dom-events.d.ts.map +0 -1
  203. package/dist/dom-events.js.map +0 -1
  204. package/dist/editor-events.d.ts.map +0 -1
  205. package/dist/file-drop.d.ts.map +0 -1
  206. package/dist/file-drop.js.map +0 -1
  207. package/dist/frame-helpers.d.ts.map +0 -1
  208. package/dist/frame-helpers.js.map +0 -1
  209. package/dist/group-helpers.d.ts.map +0 -1
  210. package/dist/group-helpers.js.map +0 -1
  211. package/dist/handle.d.ts.map +0 -1
  212. package/dist/handle.js.map +0 -1
  213. package/dist/hotkeys-binding.d.ts.map +0 -1
  214. package/dist/hotkeys-binding.js.map +0 -1
  215. package/dist/interactive.d.ts.map +0 -1
  216. package/dist/interactive.js.map +0 -1
  217. package/dist/link-selection.d.ts.map +0 -1
  218. package/dist/link-selection.js.map +0 -1
  219. package/dist/machine.d.ts.map +0 -1
  220. package/dist/machine.js.map +0 -1
  221. package/dist/modes.d.ts.map +0 -1
  222. package/dist/modes.js.map +0 -1
  223. package/dist/overlay.d.ts.map +0 -1
  224. package/dist/overlay.js.map +0 -1
  225. package/dist/platform.d.ts.map +0 -1
  226. package/dist/platform.js.map +0 -1
  227. package/dist/search.d.ts.map +0 -1
  228. package/dist/search.js.map +0 -1
  229. package/dist/selection.d.ts.map +0 -1
  230. package/dist/selection.js.map +0 -1
  231. package/dist/util.d.ts.map +0 -1
  232. package/dist/util.js.map +0 -1
  233. /package/dist/{editor-events.js → editor/editor-events.js} +0 -0
  234. /package/dist/{built-in-handlers.d.ts → features/built-in-handlers.d.ts} +0 -0
  235. /package/dist/{search.d.ts → features/search.d.ts} +0 -0
  236. /package/dist/{search.js → features/search.js} +0 -0
  237. /package/dist/{auto-compact.d.ts → helpers/auto-compact.d.ts} +0 -0
  238. /package/dist/{auto-layout-scheduler.d.ts → helpers/auto-layout-scheduler.d.ts} +0 -0
  239. /package/dist/{auto-layout-scheduler.js → helpers/auto-layout-scheduler.js} +0 -0
  240. /package/dist/{frame-helpers.d.ts → helpers/frame-helpers.d.ts} +0 -0
  241. /package/dist/{frame-helpers.js → helpers/frame-helpers.js} +0 -0
  242. /package/dist/{group-helpers.d.ts → helpers/group-helpers.d.ts} +0 -0
  243. /package/dist/{group-helpers.js → helpers/group-helpers.js} +0 -0
  244. /package/dist/{util.d.ts → helpers/util.d.ts} +0 -0
  245. /package/dist/{util.js → helpers/util.js} +0 -0
  246. /package/dist/{dom-events.d.ts → input/dom-events.d.ts} +0 -0
  247. /package/dist/{dom-events.js → input/dom-events.js} +0 -0
  248. /package/dist/{platform.d.ts → input/platform.d.ts} +0 -0
  249. /package/dist/{platform.js → input/platform.js} +0 -0
  250. /package/dist/{interactive.d.ts → interaction/interactive.d.ts} +0 -0
  251. /package/dist/{interactive.js → interaction/interactive.js} +0 -0
  252. /package/dist/{machine.d.ts → interaction/machine.d.ts} +0 -0
  253. /package/dist/{machine.js → interaction/machine.js} +0 -0
  254. /package/dist/{modes.d.ts → interaction/modes.d.ts} +0 -0
  255. /package/dist/{modes.js → interaction/modes.js} +0 -0
  256. /package/dist/{animation-tick.d.ts → render/animation-tick.d.ts} +0 -0
  257. /package/dist/{animation-tick.js → render/animation-tick.js} +0 -0
  258. /package/dist/{link-selection.d.ts → selection/link-selection.d.ts} +0 -0
  259. /package/dist/{selection.d.ts → selection/selection.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"built-in-handlers.d.ts","sourceRoot":"","sources":["../../src/features/built-in-handlers.ts"],"names":[],"mappings":"AAMA,OAAO,EAA+C,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAsBnG;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,EAAE,eAiHlC,CAAC;AAiCF;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,GAAI,KAAK,MAAM,KAAG,gBActD,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,EAAE,eA8ClC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { DEFAULT_IMAGE_MAX_EDGE_PX, VIDEO_FALLBACK_WIDTH_PX, VIDEO_FALLBACK_HEIGHT_PX, } from "./constants.js";
1
+ import { DEFAULT_IMAGE_MAX_EDGE_PX, VIDEO_FALLBACK_WIDTH_PX, VIDEO_FALLBACK_HEIGHT_PX, } from "../constants.js";
2
2
  import { isImageFile, isVideoFile, readFileAsDataURL } from "./file-drop.js";
3
3
  /**
4
4
  * Read an image data URL and return its natural pixel dimensions
@@ -30,6 +30,9 @@ const measureImage = (dataUrl) => new Promise((resolve, reject) => {
30
30
  */
31
31
  export const imageFileDropHandler = {
32
32
  id: "image",
33
+ label: "Images",
34
+ kind: "image",
35
+ formats: ["PNG", "JPG", "SVG", "GIF", "WebP", "BMP", "ICO", "AVIF"],
33
36
  accept: (file) => isImageFile(file),
34
37
  handle: async (file, { editor, worldPoint }) => {
35
38
  // Register the blob in Scene.files first, then create an object-URL
@@ -202,6 +205,9 @@ export const createHiddenLoopingVideo = (src) => {
202
205
  */
203
206
  export const videoFileDropHandler = {
204
207
  id: "video",
208
+ label: "Video",
209
+ kind: "video",
210
+ formats: ["MP4", "WebM", "OGG", "MOV"],
205
211
  accept: (file) => isVideoFile(file),
206
212
  handle: async (file, { editor, worldPoint }) => {
207
213
  if (typeof document === "undefined")
@@ -0,0 +1 @@
1
+ {"version":3,"file":"built-in-handlers.js","sourceRoot":"","sources":["../../src/features/built-in-handlers.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAwB,MAAM,gBAAgB,CAAC;AAEnG;;;GAGG;AACH,MAAM,YAAY,GAAG,CAAC,OAAe,EAA8C,EAAE,CACnF,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;IACxB,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE;QAChB,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC;IACF,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE;QACjB,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC;IACF,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC;AACpB,CAAC,CAAC,CAAC;AAEL;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAoB;IACnD,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;IACnE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;IACnC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;QAC7C,oEAAoE;QACpE,iEAAiE;QACjE,qEAAqE;QACrE,qCAAqC;QACrC,EAAE;QACF,qEAAqE;QACrE,qEAAqE;QACrE,oEAAoE;QACpE,wDAAwD;QACxD,MAAM,YAAY,GAAG,OAAO,GAAG,KAAK,WAAW,IAAI,OAAO,GAAG,CAAC,eAAe,KAAK,UAAU,CAAC;QAC7F,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAErF,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,yBAAyB,CAAC;QACtC,MAAM,KAAK,GACT,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG;YAC3C,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;YAC/C,CAAC,CAAC,CAAC,CAAC;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;QAClD,6CAA6C;QAC7C,MAAM,OAAO,GAAS;YACpB,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;YAC3B,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC;SAC7B,CAAC;QACF,iEAAiE;QACjE,mEAAmE;QACnE,sEAAsE;QACtE,SAAS;QACT,EAAE;QACF,sEAAsE;QACtE,oEAAoE;QACpE,uEAAuE;QACvE,yCAAyC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,GAAG,GAA4B,IAAI,CAAC;QACxC,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;YACjC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;YAClB,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;YACd,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;gBACpC,MAAM,IAAI,GAAG,uBAAuB,EAAE,CAAC;gBACvC,kEAAkE;gBAClE,gEAAgE;gBAChE,8DAA8D;gBAC9D,4DAA4D;gBAC5D,4DAA4D;gBAC5D,+DAA+D;gBAC/D,6DAA6D;gBAC7D,6BAA6B;gBAC7B,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;gBAC7B,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;gBACrB,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;gBACpB,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;gBACxB,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;gBACzB,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;gBAC3B,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;gBACxB,GAAG,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;gBACjC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;YACD,qEAAqE;YACrE,qEAAqE;YACrE,4BAA4B;YAC5B,MAAM,EAAE,GAAG,GAAG,CAAC;YACf,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;gBACjB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAClC,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE;wBACf,OAAO,EAAE,CAAC;oBACZ,CAAC,CAAC;oBACF,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE;wBAChB,OAAO,EAAE,CAAC;oBACZ,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,oEAAoE;QACpE,sEAAsE;QACtE,kEAAkE;QAClE,sEAAsE;QACtE,uEAAuE;QACvE,yDAAyD;QACzD,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACpE,0EAA0E;QAC1E,wEAAwE;QACxE,uEAAuE;QACvE,mCAAmC;QACnC,IAAI,WAAW,GAA+C,GAAG,IAAI,SAAS,CAAC;QAC/E,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,iBAAiB,KAAK,UAAU,EAAE,CAAC;YAC7D,IAAI,CAAC;gBACH,WAAW,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACP,qDAAqD;YACvD,CAAC;QACH,CAAC;QACD,MAAM,CAAC,WAAW,CAAC;YACjB,GAAG;YACH,MAAM;YACN,KAAK;YACL,MAAM;YACN,QAAQ,EAAE,OAAO;YACjB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,QAAQ,EAAE,KAAK;YACf,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,OAAO,GAAG,qCAAqC,CAAC;AAEtD,MAAM,uBAAuB,GAAG,GAAgB,EAAE;IAChD,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC;IACjB,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACxC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC7B,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;IACrB,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;IACpB,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;IACtB,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;IACvB,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC/B,GAAG,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;IACjC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAW,EAAoB,EAAE;IACxE,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IACnB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;IAClC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;IAC9B,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,UAAU,CAAC;IAC7B,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IAC1B,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;IAC3B,uBAAuB,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAoB;IACnD,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;IACtC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;IACnC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;QAC7C,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO;QAC5C,uEAAuE;QACvE,oEAAoE;QACpE,iDAAiD;QACjD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,MAAM,IAAI,GAAG,GAAS,EAAE;gBACtB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;YACF,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC9B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,IAAI,uBAAuB,CAAC;QACvD,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,IAAI,wBAAwB,CAAC;QACzD,MAAM,GAAG,GAAG,yBAAyB,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;QACtC,MAAM,OAAO,GAAS;YACpB,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;YAC3B,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC;SAC7B,CAAC;QACF,yDAAyD;QACzD,6CAA6C;QAC7C,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;YAC3B,+EAA+E;QACjF,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC;YACjB,GAAG,EAAE,GAAG;YACR,KAAK;YACL,MAAM;YACN,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,KAAoC;YAC3C,QAAQ,EAAE,IAAI;YACd,MAAM;SACP,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -16,6 +16,20 @@ export interface PasteResult {
16
16
  readonly scene: Scene;
17
17
  readonly newIds: readonly ElementId[];
18
18
  }
19
+ /**
20
+ * Clone a shape for the clipboard buffer / paste output. Deep-clones the
21
+ * plain data (so later edits don't bleed into the buffer) but carries
22
+ * live runtime handles by reference instead of cloning them:
23
+ *
24
+ * - `metadata.image` — a decoded `HTMLImageElement`; `structuredClone`
25
+ * throws `DataCloneError` on DOM nodes.
26
+ * - `animationData` — the raw GIF/video buffer; large and re-derivable
27
+ * from `fileId`, so sharing the reference avoids copying megabytes.
28
+ *
29
+ * The live `<img>` / buffer is shared, so the pasted shape draws
30
+ * immediately (same as the original) and still references its `fileId`.
31
+ */
32
+ export declare const cloneElementForClipboard: (shape: Element) => Element;
19
33
  /**
20
34
  * Snapshot every selected shape into a fresh array. Uses
21
35
  * {@link cloneElementForClipboard} so live runtime handles (decoded
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/features/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAML,KAAK,KAAK,EACV,KAAK,OAAO,EACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;CACvC;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB,GAAI,OAAO,OAAO,KAAG,OAsBzD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,KAAK,EAAE,WAAW,QAAQ,CAAC,SAAS,CAAC,KAAG,OAAO,EAOlF,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,GACxB,OAAO,KAAK,EACZ,SAAS,eAAe,EACxB,WAAW,SAAS,OAAO,EAAE,EAC7B,QAAQ,IAAI,GAAG,IAAI,EACnB,OAAO,MAAM,SAAS,KACrB,WA0CF,CAAC"}
@@ -12,7 +12,7 @@ import { addElement, batch, getElement, orderForTop, } from "@oh-just-another/sc
12
12
  * The live `<img>` / buffer is shared, so the pasted shape draws
13
13
  * immediately (same as the original) and still references its `fileId`.
14
14
  */
15
- const cloneElementForClipboard = (shape) => {
15
+ export const cloneElementForClipboard = (shape) => {
16
16
  const meta = shape.metadata;
17
17
  const liveImage = meta && "image" in meta ? meta.image : undefined;
18
18
  const liveAnim = shape.animationData;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/features/clipboard.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { Vec2 } from "@oh-just-another/types";
2
- import type { Editor } from "./editor.js";
2
+ import type { Editor } from "../editor.js";
3
3
  /**
4
4
  * File-drop handler registry — host extension point for "user dropped a file
5
5
  * on the canvas". The kernel ships a couple of built-ins (image, scene JSON);
@@ -11,6 +11,8 @@ export interface FileDropContext {
11
11
  /** World-space coords where the file landed. */
12
12
  readonly worldPoint: Vec2;
13
13
  }
14
+ /** Coarse file category — picks the glyph the drop overlay shows for a handler. */
15
+ export type FileDropKind = "image" | "video" | "scene" | "text" | "data" | "file";
14
16
  export interface FileDropHandler {
15
17
  /**
16
18
  * Stable identifier — used for `unregister`. Avoid collisions in the global
@@ -18,6 +20,15 @@ export interface FileDropHandler {
18
20
  * "host.custom").
19
21
  */
20
22
  readonly id: string;
23
+ /**
24
+ * Presentation for the drop overlay (the "what can I drop here" hint shown
25
+ * while a file is dragged over the canvas). `label` names the payload
26
+ * ("Images"), `formats` lists what it takes ("PNG", "SVG", …), `kind`
27
+ * picks the glyph. Handlers without a `label` stay out of the hint.
28
+ */
29
+ readonly label?: string;
30
+ readonly kind?: FileDropKind;
31
+ readonly formats?: readonly string[];
21
32
  /**
22
33
  * Sync predicate — does this handler want the file? Receives the raw `File`
23
34
  * so it can sniff MIME or extension. Should be cheap; heavy work goes inside
@@ -56,6 +67,14 @@ export declare const IMAGE_MIME_TYPES: readonly string[];
56
67
  * wrappers and let the browser refuse on decode.
57
68
  */
58
69
  export declare const VIDEO_MIME_TYPES: readonly string[];
70
+ /**
71
+ * Best-effort MIME for persisting a dropped blob. A declared non-generic
72
+ * type wins; an empty / `application/octet-stream` type falls back to the
73
+ * filename extension. Without this, a `.mp4` dropped with an empty
74
+ * `File.type` is stored as octet-stream and rehydration can't route it
75
+ * to the video decoder — the shape reloads blank.
76
+ */
77
+ export declare const inferFileMime: (declaredType: string | undefined, name: string | undefined) => string;
59
78
  /** True when the file MIME (or extension) indicates a video. */
60
79
  export declare const isVideoFile: (file: File) => boolean;
61
80
  /** True if the file's declared MIME (or extension fallback) is in IMAGE_MIME_TYPES. */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-drop.d.ts","sourceRoot":"","sources":["../../src/features/file-drop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;CAC3B;AAED,mFAAmF;AACnF,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAElF,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;IAC5B;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAChE;AAED;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IAEjD,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAUxC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAK5B,MAAM,IAAI,SAAS,eAAe,EAAE;IAIpC;;;;OAIG;IACG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;CAQnE;AAED,iCAAiC;AACjC,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAU7C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAK7C,CAAC;AA8BF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GACxB,cAAc,MAAM,GAAG,SAAS,EAChC,MAAM,MAAM,GAAG,SAAS,KACvB,MAGF,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,WAAW,GAAI,MAAM,IAAI,KAAG,OAGxC,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,WAAW,GAAI,MAAM,IAAI,KAAG,OAIxC,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,eAAe,GAAI,MAAM,IAAI,KAAG,OAG5C,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,GAAI,MAAM,IAAI,KAAG,OAAO,CAAC,MAAM,CAYzD,CAAC;AAEL,iCAAiC;AACjC,eAAO,MAAM,cAAc,GAAI,MAAM,IAAI,KAAG,OAAO,CAAC,MAAM,CAYtD,CAAC;AAEL;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,kEAAkE;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC3D;AA8BD,eAAO,MAAM,gBAAgB,GAC3B,IAAI,YAAY,EAChB,UAAS,WAAgB,KACxB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CA4BjC,CAAC"}
@@ -60,34 +60,56 @@ export const VIDEO_MIME_TYPES = [
60
60
  "video/ogg",
61
61
  "video/quicktime",
62
62
  ];
63
+ /**
64
+ * Extension → MIME table shared by the accept predicates and
65
+ * {@link inferFileMime}. Browsers sometimes hand over a `File` with an
66
+ * empty `type` (downloads without metadata, some drag sources); routing
67
+ * and persistence then fall back to the filename extension.
68
+ */
69
+ const MIME_BY_EXTENSION = {
70
+ png: "image/png",
71
+ jpg: "image/jpeg",
72
+ jpeg: "image/jpeg",
73
+ jfif: "image/jfif",
74
+ svg: "image/svg+xml",
75
+ gif: "image/gif",
76
+ webp: "image/webp",
77
+ bmp: "image/bmp",
78
+ ico: "image/x-icon",
79
+ avif: "image/avif",
80
+ mp4: "video/mp4",
81
+ webm: "video/webm",
82
+ ogv: "video/ogg",
83
+ mov: "video/quicktime",
84
+ };
85
+ const mimeByFileName = (name) => {
86
+ const ext = name?.toLowerCase().split(".").pop();
87
+ return ext ? MIME_BY_EXTENSION[ext] : undefined;
88
+ };
89
+ /**
90
+ * Best-effort MIME for persisting a dropped blob. A declared non-generic
91
+ * type wins; an empty / `application/octet-stream` type falls back to the
92
+ * filename extension. Without this, a `.mp4` dropped with an empty
93
+ * `File.type` is stored as octet-stream and rehydration can't route it
94
+ * to the video decoder — the shape reloads blank.
95
+ */
96
+ export const inferFileMime = (declaredType, name) => {
97
+ if (declaredType && declaredType !== "application/octet-stream")
98
+ return declaredType;
99
+ return mimeByFileName(name) ?? "application/octet-stream";
100
+ };
63
101
  /** True when the file MIME (or extension) indicates a video. */
64
102
  export const isVideoFile = (file) => {
65
103
  if (file.type.startsWith("video/"))
66
104
  return true;
67
- const ext = file.name.toLowerCase().split(".").pop();
68
- return ext === "mp4" || ext === "webm" || ext === "ogv" || ext === "mov";
105
+ return mimeByFileName(file.name)?.startsWith("video/") ?? false;
69
106
  };
70
107
  /** True if the file's declared MIME (or extension fallback) is in IMAGE_MIME_TYPES. */
71
108
  export const isImageFile = (file) => {
72
109
  if (file.type && IMAGE_MIME_TYPES.includes(file.type))
73
110
  return true;
74
111
  // Some browsers omit `file.type`; fall back to extension sniffing.
75
- const ext = file.name.toLowerCase().split(".").pop();
76
- if (!ext)
77
- return false;
78
- const byExt = {
79
- png: "image/png",
80
- jpg: "image/jpeg",
81
- jpeg: "image/jpeg",
82
- jfif: "image/jfif",
83
- svg: "image/svg+xml",
84
- gif: "image/gif",
85
- webp: "image/webp",
86
- bmp: "image/bmp",
87
- ico: "image/x-icon",
88
- avif: "image/avif",
89
- };
90
- return byExt[ext] !== undefined;
112
+ return mimeByFileName(file.name)?.startsWith("image/") ?? false;
91
113
  };
92
114
  /** True if the file is a scene-document JSON (best-effort via extension). */
93
115
  export const isSceneJsonFile = (file) => {
@@ -148,8 +170,14 @@ export const walkDataTransfer = async function* (dt, options = {}) {
148
170
  if (item.kind !== "file")
149
171
  continue;
150
172
  const entry = item.webkitGetAsEntry?.();
151
- if (!entry)
173
+ if (!entry) {
174
+ // No filesystem entry (some drag sources, synthetic `DataTransfer`s):
175
+ // fall back to the plain file the item carries.
176
+ const file = item.getAsFile?.();
177
+ if (file)
178
+ yield file;
152
179
  continue;
180
+ }
153
181
  yield* walkEntry(entry, "", 0, skip, maxDepth, options.onError);
154
182
  }
155
183
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-drop.js","sourceRoot":"","sources":["../../src/features/file-drop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ElementId, FileId, LayerId, LinkId, Vec2 } from "@oh-just-another/types";
2
+ import { type Scene } from "@oh-just-another/scene";
3
+ import type { HistoryProvider } from "@oh-just-another/history";
4
+ export interface InsertSceneResult {
5
+ readonly scene: Scene;
6
+ /** Ids of the inserted top-level + nested elements (fragment order). */
7
+ readonly newIds: readonly ElementId[];
8
+ }
9
+ /**
10
+ * Merge a whole scene fragment (an imported diagram: elements, their
11
+ * links, their binary files) into `scene` as ONE history record, with the
12
+ * fragment's centre landing at `target` (or its original position when
13
+ * `target` is null). Every element and link gets a fresh id; `parentId`
14
+ * and link endpoints are remapped, free link points are offset with the
15
+ * fragment; everything lands on `layerId`. Links whose endpoint element is
16
+ * missing from the fragment are dropped.
17
+ */
18
+ export declare const insertSceneFragment: (scene: Scene, history: HistoryProvider, fragment: Scene, target: Vec2 | null, layerId: LayerId, genElementId: () => ElementId, genLinkId: () => LinkId, genFileId: () => FileId) => InsertSceneResult;
19
+ //# sourceMappingURL=insert-scene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert-scene.d.ts","sourceRoot":"","sources":["../../src/features/insert-scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEvF,OAAO,EAYL,KAAK,KAAK,EACX,MAAM,wBAAwB,CAAC;AAmBhC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGhE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,wEAAwE;IACxE,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;CACvC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,KAAK,EACZ,SAAS,eAAe,EACxB,UAAU,KAAK,EACf,QAAQ,IAAI,GAAG,IAAI,EACnB,SAAS,OAAO,EAChB,cAAc,MAAM,SAAS,EAC7B,WAAW,MAAM,MAAM,EACvB,WAAW,MAAM,MAAM,KACtB,iBAgHF,CAAC"}
@@ -0,0 +1,145 @@
1
+ import { bounds as B } from "@oh-just-another/math";
2
+ import { addElement, addLink, batch, createBinaryFile, getElementWorldBounds, isImage, orderForTop, } from "@oh-just-another/scene";
3
+ /**
4
+ * Decode a `data:<mime>;base64,…` URL into bytes. `null` for anything else
5
+ * (blob: / http: URLs stay as they are).
6
+ */
7
+ const dataUrlToBytes = (url) => {
8
+ const m = /^data:([^;,]+);base64,(.*)$/s.exec(url);
9
+ if (!m)
10
+ return null;
11
+ const [, mime = "application/octet-stream", b64 = ""] = m;
12
+ try {
13
+ const bin = atob(b64);
14
+ const bytes = new Uint8Array(bin.length);
15
+ for (let i = 0; i < bin.length; i++)
16
+ bytes[i] = bin.charCodeAt(i);
17
+ return { mime, data: bytes.buffer };
18
+ }
19
+ catch {
20
+ return null;
21
+ }
22
+ };
23
+ import { cloneElementForClipboard } from "./clipboard.js";
24
+ /**
25
+ * Merge a whole scene fragment (an imported diagram: elements, their
26
+ * links, their binary files) into `scene` as ONE history record, with the
27
+ * fragment's centre landing at `target` (or its original position when
28
+ * `target` is null). Every element and link gets a fresh id; `parentId`
29
+ * and link endpoints are remapped, free link points are offset with the
30
+ * fragment; everything lands on `layerId`. Links whose endpoint element is
31
+ * missing from the fragment are dropped.
32
+ */
33
+ export const insertSceneFragment = (scene, history, fragment, target, layerId, genElementId, genLinkId, genFileId) => {
34
+ const elements = [...fragment.elements.values()];
35
+ if (elements.length === 0)
36
+ return { scene, newIds: [] };
37
+ // Offset: fragment bounds (top-level elements) centred on `target`.
38
+ let box = null;
39
+ for (const el of elements) {
40
+ if (el.parentId !== undefined)
41
+ continue;
42
+ const b = getElementWorldBounds(el);
43
+ box = box ? B.union(box, b) : b;
44
+ }
45
+ const delta = target && box
46
+ ? { x: target.x - (box.x + box.width / 2), y: target.y - (box.y + box.height / 2) }
47
+ : { x: 0, y: 0 };
48
+ const idMap = new Map();
49
+ for (const el of elements)
50
+ idMap.set(el.id, genElementId());
51
+ const patches = [];
52
+ const newIds = [];
53
+ let next = scene;
54
+ // Parents before children: `addElement` needs the parent to exist.
55
+ const pending = new Set(elements);
56
+ while (pending.size > 0) {
57
+ let progressed = false;
58
+ for (const el of pending) {
59
+ const parent = el.parentId;
60
+ const parentEl = parent !== undefined ? fragment.elements.get(parent) : undefined;
61
+ if (parentEl !== undefined && pending.has(parentEl))
62
+ continue; // parent still pending
63
+ pending.delete(el);
64
+ progressed = true;
65
+ const newId = idMap.get(el.id);
66
+ if (newId === undefined)
67
+ continue;
68
+ const remappedParent = parent !== undefined ? idMap.get(parent) : undefined;
69
+ const { parentId: _p, ...rest } = cloneElementForClipboard(el);
70
+ // Importers hand images over as inline data URLs; persist the bytes as
71
+ // a `BinaryFile` (same as a dropped image) so the shape survives a
72
+ // reload and the static-image rehydration can decode a live handle.
73
+ let fileId;
74
+ if (isImage(el) && el.fileId === undefined) {
75
+ const bytes = dataUrlToBytes(el.src);
76
+ if (bytes) {
77
+ fileId = genFileId();
78
+ const file = createBinaryFile(fileId, bytes.data, { mime: bytes.mime });
79
+ const files = new Map(next.files);
80
+ files.set(fileId, file);
81
+ next = { ...next, files };
82
+ patches.push({ kind: "file", id: fileId, before: null, after: file });
83
+ }
84
+ }
85
+ const clone = {
86
+ ...rest,
87
+ id: newId,
88
+ layerId,
89
+ ...(fileId !== undefined ? { fileId } : {}),
90
+ ...(remappedParent !== undefined ? { parentId: remappedParent } : {}),
91
+ // Children are positioned in their parent's local space — only the
92
+ // top level moves with the fragment.
93
+ position: remappedParent === undefined
94
+ ? { x: el.position.x + delta.x, y: el.position.y + delta.y }
95
+ : el.position,
96
+ order: orderForTop([...next.elements.values()].filter((s) => s.layerId === layerId).map((s) => s.order)),
97
+ };
98
+ const r = addElement(next, clone);
99
+ next = r.scene;
100
+ patches.push(r.patch);
101
+ newIds.push(newId);
102
+ }
103
+ if (!progressed)
104
+ break; // orphaned children (parent outside the fragment)
105
+ }
106
+ const remapEndpoint = (ep) => {
107
+ if (ep.kind === "point") {
108
+ return { ...ep, position: { x: ep.position.x + delta.x, y: ep.position.y + delta.y } };
109
+ }
110
+ const mapped = idMap.get(ep.elementId);
111
+ return mapped === undefined ? null : { ...ep, elementId: mapped };
112
+ };
113
+ for (const link of fragment.links.values()) {
114
+ const from = remapEndpoint(link.from);
115
+ const to = remapEndpoint(link.to);
116
+ if (!from || !to)
117
+ continue;
118
+ const clone = {
119
+ ...structuredClone(link),
120
+ id: genLinkId(),
121
+ layerId,
122
+ from,
123
+ to,
124
+ ...(link.waypoints
125
+ ? { waypoints: link.waypoints.map((p) => ({ x: p.x + delta.x, y: p.y + delta.y })) }
126
+ : {}),
127
+ };
128
+ const r = addLink(next, clone);
129
+ next = r.scene;
130
+ patches.push(r.patch);
131
+ }
132
+ for (const [fileId, file] of fragment.files) {
133
+ if (next.files.has(fileId))
134
+ continue;
135
+ const files = new Map(next.files);
136
+ files.set(fileId, file);
137
+ next = { ...next, files };
138
+ patches.push({ kind: "file", id: fileId, before: null, after: file });
139
+ }
140
+ const first = patches[0];
141
+ if (first !== undefined)
142
+ history.push(patches.length === 1 ? first : batch(patches));
143
+ return { scene: next, newIds };
144
+ };
145
+ //# sourceMappingURL=insert-scene.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert-scene.js","sourceRoot":"","sources":["../../src/features/insert-scene.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EACL,UAAU,EACV,OAAO,EACP,KAAK,EACL,gBAAgB,EAChB,qBAAqB,EACrB,OAAO,EACP,WAAW,GAMZ,MAAM,wBAAwB,CAAC;AAEhC;;;GAGG;AACH,MAAM,cAAc,GAAG,CAAC,GAAW,EAA8C,EAAE;IACjF,MAAM,CAAC,GAAG,8BAA8B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,IAAI,GAAG,0BAA0B,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAClE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAQ1D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,KAAY,EACZ,OAAwB,EACxB,QAAe,EACf,MAAmB,EACnB,OAAgB,EAChB,YAA6B,EAC7B,SAAuB,EACvB,SAAuB,EACJ,EAAE;IACrB,MAAM,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAExD,oEAAoE;IACpE,IAAI,GAAG,GAAG,IAAuD,CAAC;IAClE,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS;YAAE,SAAS;QACxC,MAAM,CAAC,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC;QACpC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,KAAK,GACT,MAAM,IAAI,GAAG;QACX,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;QACnF,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAErB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC9C,KAAK,MAAM,EAAE,IAAI,QAAQ;QAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;IAE5D,MAAM,OAAO,GAAY,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,mEAAmE;IACnE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClC,OAAO,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACxB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAClF,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,SAAS,CAAC,uBAAuB;YACtF,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACnB,UAAU,GAAG,IAAI,CAAC;YAClB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YAClC,MAAM,cAAc,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5E,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,wBAAwB,CAAC,EAAE,CAAC,CAAC;YAC/D,uEAAuE;YACvE,mEAAmE;YACnE,oEAAoE;YACpE,IAAI,MAA0B,CAAC;YAC/B,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC3C,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBACrC,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,GAAG,SAAS,EAAE,CAAC;oBACrB,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;oBACxE,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAClC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBACxB,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC;oBAC1B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;YACD,MAAM,KAAK,GAAG;gBACZ,GAAG,IAAI;gBACP,EAAE,EAAE,KAAK;gBACT,OAAO;gBACP,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrE,mEAAmE;gBACnE,qCAAqC;gBACrC,QAAQ,EACN,cAAc,KAAK,SAAS;oBAC1B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE;oBAC5D,CAAC,CAAC,EAAE,CAAC,QAAQ;gBACjB,KAAK,EAAE,WAAW,CAChB,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CACrF;aACS,CAAC;YACb,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAClC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,UAAU;YAAE,MAAM,CAAC,kDAAkD;IAC5E,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,EAAgB,EAAuB,EAAE;QAC9D,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACxB,OAAO,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACzF,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpE,CAAC,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;YAAE,SAAS;QAC3B,MAAM,KAAK,GAAS;YAClB,GAAG,eAAe,CAAC,IAAI,CAAC;YACxB,EAAE,EAAE,SAAS,EAAE;YACf,OAAO;YACP,IAAI;YACJ,EAAE;YACF,GAAG,CAAC,IAAI,CAAC,SAAS;gBAChB,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;gBACpF,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;QACF,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/B,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS;QACrC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACxB,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACrF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACjC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/features/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,MAAM,CAAC;AAEjD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,SAAS,OAAO,KAAG,MAAM,GAAG,IAO7D,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,KAAK,EAAE,OAAO,MAAM,KAAG,gBAAgB,EAiBzE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/features/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAA4B,MAAM,wBAAwB,CAAC;AAsBnF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAgB,EAAiB,EAAE;IACnE,IAAI,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAY,EAAE,KAAa,EAAsB,EAAE;IAC7E,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,IAAI,MAAM,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;QAC9B,IAAI,IAAI,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-compact.d.ts","sourceRoot":"","sources":["../../src/helpers/auto-compact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAGpD;;;;;;;;;GASG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;gBAEzC,IAAI,EAAE;QAChB,QAAQ,CAAC,QAAQ,EAAE,MAAM,KAAK,CAAC;QAC/B,+GAA+G;QAC/G,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;KAC9C;IAKD,8DAA8D;IAC9D,QAAQ,IAAI,IAAI;IAShB,iEAAiE;IACjE,QAAQ,IAAI,IAAI;CAWjB"}
@@ -1,4 +1,4 @@
1
- import { AUTO_COMPACT_THRESHOLD } from "./constants.js";
1
+ import { AUTO_COMPACT_THRESHOLD } from "../constants.js";
2
2
  /**
3
3
  * Microtask-scheduled rebalancer for fractional `order` keys. When any
4
4
  * shape or edge's order string grows past AUTO_COMPACT_THRESHOLD, a
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-compact.js","sourceRoot":"","sources":["../../src/helpers/auto-compact.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;;;;;;;;GASG;AACH,MAAM,OAAO,oBAAoB;IACvB,OAAO,GAAG,KAAK,CAAC;IACP,QAAQ,CAAc;IACtB,OAAO,CAA6B;IAErD,YAAY,IAIX;QACC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,8DAA8D;IAC9D,QAAQ;QACN,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,cAAc,CAAC,GAAG,EAAE;YAClB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iEAAiE;IACjE,QAAQ;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,eAAe,GAAG,IAAI,GAAG,EAAW,CAAC;QAC3C,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,sBAAsB;gBAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9E,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,sBAAsB;gBAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9E,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,eAAe;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-layout-scheduler.d.ts","sourceRoot":"","sources":["../../src/helpers/auto-layout-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAML,KAAK,KAAK,EACV,KAAK,KAAK,EACX,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;GAUG;AACH,qBAAa,mBAAmB;IAIlB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;gBAE9B,IAAI,EAAE,0BAA0B;IAE7D,8DAA8D;IAC9D,QAAQ,IAAI,IAAI;IAShB;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI;IAIzC,kEAAkE;IAClE,QAAQ,IAAI,IAAI;IAuBhB,OAAO,CAAC,YAAY;CA0BrB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,KAAK,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC5C,iEAAiE;IACjE,QAAQ,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;IAC1E;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC;CAChC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-layout-scheduler.js","sourceRoot":"","sources":["../../src/helpers/auto-layout-scheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame-helpers.d.ts","sourceRoot":"","sources":["../../src/helpers/frame-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAiD,KAAK,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACnG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAWhE;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,KAAK,KAAG,MAQ5C,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,KAAK,EACZ,SAAS,eAAe,EACxB,SAAS,SAAS,EAClB,aAAa,MAAM,KAClB,KAmBF,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GAAI,OAAO,KAAK,EAAE,SAAS,eAAe,KAAG,KAkCjF,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame-helpers.js","sourceRoot":"","sources":["../../src/helpers/frame-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-helpers.d.ts","sourceRoot":"","sources":["../../src/helpers/group-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAuB,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAUvF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,KAAK,EAAE,OAAO,OAAO,KAAG,OAAO,GAAG,IAYzE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,KAAK,EACZ,WAAW,SAAS,EACpB,SAAS,SAAS,KACjB,OAUF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,KAAK,EACZ,OAAO,OAAO,EACd,cAAc,SAAS,GAAG,IAAI,KAC7B,OAYF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,KAAK,EACZ,WAAW,QAAQ,CAAC,SAAS,CAAC,EAC9B,gBAAgB,SAAS,KACxB,WAAW,CAAC,SAAS,CAUvB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAC1B,OAAO,KAAK,EACZ,KAAK,OAAO,EACZ,KAAK,OAAO,GAAG,IAAI,EACnB,cAAc,SAAS,GAAG,IAAI,KAC7B,OAAO,GAAG,IAeZ,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-helpers.js","sourceRoot":"","sources":["../../src/helpers/group-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/helpers/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAE7C;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,KAAG,OAKnE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/helpers/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAE7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAI,CAAiB,EAAE,CAAiB,EAAW,EAAE;IAC5E,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACpC,KAAK,MAAM,EAAE,IAAI,CAAC;QAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;IACjD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,32 +1,34 @@
1
- export type { ActiveTool, Mode } from "./modes.js";
2
- export { DEFAULT_MODE } from "./modes.js";
3
- export type { Selection } from "./selection.js";
4
- export * as selection from "./selection.js";
5
- export type { HandleId } from "./handle.js";
6
- export { ALL_HANDLES, HANDLE_SIZE, handlePosition, hitHandle, resizeBounds, registerRotateAnchor, getRotateAnchor, } from "./handle.js";
7
- export type { InteractionContext, InteractionEvent, InteractionEmit, PressTarget, PointerDownEvent, PointerMoveEvent, PointerUpEvent, PointerCancelEvent, SetModeEvent, } from "./machine.js";
8
- export { interactionMachine, interpretPressEnd, DRAG_THRESHOLD, boundsFromPoints, } from "./machine.js";
9
- export type { OverlayStyle, PeerCursor, PeerSelection } from "./overlay.js";
10
- export { renderOverlay, DEFAULT_OVERLAY_STYLE } from "./overlay.js";
11
- export { PEER_CURSOR_BROADCAST_INTERVAL_MS } from "./constants.js";
12
- export { fromPointerEvent, fromKeyboardEvent, fromWheelEvent, isEditableTarget, } from "./dom-events.js";
13
- export { bindEditorHotkeys, type HotkeyBindingOptions } from "./hotkeys-binding.js";
14
- export { searchScene, elementSearchText, type SceneSearchMatch, type SceneSearchKind, } from "./search.js";
15
- export type { InteractiveHitTester } from "./interactive.js";
16
- export { registerInteractiveHitTester, getInteractiveHitTester } from "./interactive.js";
1
+ export type { ActiveTool, Mode } from "./interaction/modes.js";
2
+ export { DEFAULT_MODE } from "./interaction/modes.js";
3
+ export type { Selection } from "./selection/selection.js";
4
+ export * as selection from "./selection/selection.js";
5
+ export type { HandleId } from "./interaction/handle.js";
6
+ export { ALL_HANDLES, HANDLE_SIZE, handlePosition, hitHandle, resizeBounds, registerRotateAnchor, getRotateAnchor, } from "./interaction/handle.js";
7
+ export type { InteractionContext, InteractionEvent, InteractionEmit, PressTarget, PointerDownEvent, PointerMoveEvent, PointerUpEvent, PointerCancelEvent, SetModeEvent, } from "./interaction/machine.js";
8
+ export { interactionMachine, interpretPressEnd, DRAG_THRESHOLD, boundsFromPoints, } from "./interaction/machine.js";
9
+ export type { SnapGuide } from "./editor/applies/object-snap.js";
10
+ export type { EditingTextOverlay, SizeReadout, OverlayStyle, PeerCursor, PeerSelection, } from "./render/overlay.js";
11
+ export { renderOverlay, DEFAULT_OVERLAY_STYLE } from "./render/overlay.js";
12
+ export { PEER_CURSOR_BROADCAST_INTERVAL_MS, FRAME_SIZE_PRESETS, STICKY_SIZE_PRESETS, LABEL_DEFAULT_FONT_SIZE, TEXT_DEFAULT_FONT_FAMILY, IMAGE_ASPECT_PRESETS, type ImageAspectPreset, LINK_DRAW_PRESETS, type DrawShapeKind, type LinkDrawPreset, DEFAULT_EDITOR_PREFERENCES, type EditorPreferences, type WheelMode, } from "./constants.js";
13
+ export type { FrameSizePreset } from "./constants.js";
14
+ export { fromPointerEvent, fromKeyboardEvent, fromWheelEvent, isEditableTarget, } from "./input/dom-events.js";
15
+ export { bindEditorHotkeys, type HotkeyBindingOptions } from "./input/hotkeys-binding.js";
16
+ export { searchScene, elementSearchText, type SceneSearchMatch, type SceneSearchKind, } from "./features/search.js";
17
+ export type { InteractiveHitTester } from "./interaction/interactive.js";
18
+ export { registerInteractiveHitTester, getInteractiveHitTester, } from "./interaction/interactive.js";
17
19
  export type { EditorOptions, LoadSceneOptions, CursorRole, CursorSpec } from "./editor.js";
18
20
  export { Editor } from "./editor.js";
19
- export type { EditorEvents } from "./editor-events.js";
21
+ export type { EditorEvents } from "./editor/editor-events.js";
20
22
  export { normalizeHref, safeHref } from "./editor/public/link.js";
21
23
  export { DEFAULT_BRUSH_SETTINGS } from "./editor/public/brush.js";
22
24
  export type { BrushSettings } from "./editor/public/brush.js";
23
25
  export { clampCrop, computeConvertType, computeSetImageCrop, computeCommitImageCrop, computeSpawnConnectedNode, cropFullImageLocalRect, cropHandleWorldPoints, computeCropHandleDrag, computeCropBodyPan, CROP_HANDLES, FULL_CROP, pickColorAt, } from "./editor/public/tool-ops.js";
24
26
  export type { ConvertTarget, CropDragResult, CropHandle, SpawnDirection, } from "./editor/public/tool-ops.js";
25
- export type { FileDropHandler, FileDropContext, WalkOptions } from "./file-drop.js";
26
- export { FileDropRegistry, IMAGE_MIME_TYPES, VIDEO_MIME_TYPES, isImageFile, isVideoFile, isSceneJsonFile, readFileAsDataURL, readFileAsText, walkDataTransfer, } from "./file-drop.js";
27
+ export type { FileDropHandler, FileDropContext, FileDropKind, WalkOptions, } from "./features/file-drop.js";
28
+ export { FileDropRegistry, IMAGE_MIME_TYPES, VIDEO_MIME_TYPES, isImageFile, isVideoFile, isSceneJsonFile, readFileAsDataURL, readFileAsText, walkDataTransfer, } from "./features/file-drop.js";
27
29
  export type { Action, ActionCategory, ActionContext, HotkeyMatcher } from "./actions/index.js";
28
30
  export { ActionRegistry, defaultActionRegistry, registerBuiltinActions, hasSelection, hasSelectionOrLink, actionUndo, actionRedo, historyActions, actionSelectAll, actionDeleteSelection, actionDuplicateSelection, actionToggleLock, actionEnterContainer, actionExitContainer, selectionActions, actionCopy, actionCut, actionPaste, actionCopyStyle, actionPasteStyle, clipboardActions, actionBringToFront, actionSendToBack, actionBringForward, actionSendBackward, zOrderActions, actionGroupSelection, actionUngroupSelection, groupingActions, actionZoomIn, actionZoomOut, actionZoomReset, actionZoomToFit, actionZoomToSelection, zoomActions, actionToggleGrid, actionToggleReadOnly, viewActions, actionFlipHorizontal, actionFlipVertical, actionAlignLeft, actionAlignHCenter, actionAlignRight, actionAlignTop, actionAlignVCenter, actionAlignBottom, actionDistributeHorizontal, actionDistributeVertical, arrangeActions, actionIncreaseFontSize, actionDecreaseFontSize, textActions, actionModeSelect, actionModeHand, actionModeRect, actionModeEllipse, actionModeText, actionModeLink, actionModeBrush, actionModeErase, actionModeLaser, actionModeFrame, actionToggleToolLock, actionCancel, modeActions, } from "./actions/index.js";
29
- export type { PrettyHotkeyDesc } from "./platform.js";
30
- export { isMac, isWindows, isAndroid, isIOS, isLinux, isFirefox, isSafari, CTRL_OR_CMD_KEY, getDevicePixelRatio, formatHotkey, formatHotkeyParts, } from "./platform.js";
31
+ export type { PrettyHotkeyDesc } from "./input/platform.js";
32
+ export { isMac, isWindows, isAndroid, isIOS, isLinux, isFirefox, isSafari, CTRL_OR_CMD_KEY, getDevicePixelRatio, formatHotkey, formatHotkeyParts, } from "./input/platform.js";
31
33
  export type { Annotation, Comment } from "@oh-just-another/scene";
32
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}