@oh-just-another/react-ui 0.61.0 → 0.62.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 (365) hide show
  1. package/CHANGELOG.md +121 -0
  2. package/README.md +3 -3
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/color/color-palette.d.ts.map +1 -0
  5. package/dist/color/color-palette.js.map +1 -0
  6. package/dist/color/color-swatch-picker.d.ts.map +1 -0
  7. package/dist/{color-swatch-picker.js → color/color-swatch-picker.js} +4 -3
  8. package/dist/color/color-swatch-picker.js.map +1 -0
  9. package/dist/{constants.d.ts → core/constants.d.ts} +66 -14
  10. package/dist/core/constants.d.ts.map +1 -0
  11. package/dist/{constants.js → core/constants.js} +99 -14
  12. package/dist/core/constants.js.map +1 -0
  13. package/dist/core/context.d.ts.map +1 -0
  14. package/dist/core/context.js.map +1 -0
  15. package/dist/core/hooks.d.ts.map +1 -0
  16. package/dist/core/hooks.js.map +1 -0
  17. package/dist/core/portal-container.d.ts.map +1 -0
  18. package/dist/core/portal-container.js.map +1 -0
  19. package/dist/core/use-fullscreen.d.ts +14 -0
  20. package/dist/core/use-fullscreen.d.ts.map +1 -0
  21. package/dist/core/use-fullscreen.js +38 -0
  22. package/dist/core/use-fullscreen.js.map +1 -0
  23. package/dist/core/use-quiet-gesture.d.ts +11 -0
  24. package/dist/core/use-quiet-gesture.d.ts.map +1 -0
  25. package/dist/core/use-quiet-gesture.js +61 -0
  26. package/dist/core/use-quiet-gesture.js.map +1 -0
  27. package/dist/core/use-quiet-viewport.d.ts +10 -0
  28. package/dist/core/use-quiet-viewport.d.ts.map +1 -0
  29. package/dist/core/use-quiet-viewport.js +40 -0
  30. package/dist/core/use-quiet-viewport.js.map +1 -0
  31. package/dist/index.d.ts +55 -50
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +55 -50
  34. package/dist/index.js.map +1 -1
  35. package/dist/layout/diagram-bars.d.ts.map +1 -0
  36. package/dist/layout/diagram-bars.js.map +1 -0
  37. package/dist/layout/diagram-canvas.d.ts.map +1 -0
  38. package/dist/layout/diagram-canvas.js.map +1 -0
  39. package/dist/layout/diagram-root.d.ts.map +1 -0
  40. package/dist/{diagram-root.js → layout/diagram-root.js} +2 -2
  41. package/dist/layout/diagram-root.js.map +1 -0
  42. package/dist/{sidebar.d.ts → layout/sidebar.d.ts} +1 -0
  43. package/dist/layout/sidebar.d.ts.map +1 -0
  44. package/dist/layout/sidebar.js +38 -0
  45. package/dist/layout/sidebar.js.map +1 -0
  46. package/dist/layout/ui-layer.d.ts.map +1 -0
  47. package/dist/layout/ui-layer.js.map +1 -0
  48. package/dist/menus/command-palette.d.ts.map +1 -0
  49. package/dist/{command-palette.js → menus/command-palette.js} +2 -2
  50. package/dist/menus/command-palette.js.map +1 -0
  51. package/dist/menus/context-menu-controller.d.ts.map +1 -0
  52. package/dist/menus/context-menu-controller.js.map +1 -0
  53. package/dist/{context-menu.d.ts → menus/context-menu.d.ts} +12 -0
  54. package/dist/menus/context-menu.d.ts.map +1 -0
  55. package/dist/menus/context-menu.js +617 -0
  56. package/dist/menus/context-menu.js.map +1 -0
  57. package/dist/menus/link-drop-shape-menu.d.ts.map +1 -0
  58. package/dist/{link-drop-shape-menu.js → menus/link-drop-shape-menu.js} +4 -4
  59. package/dist/menus/link-drop-shape-menu.js.map +1 -0
  60. package/dist/{main-menu.d.ts → menus/main-menu.d.ts} +45 -2
  61. package/dist/menus/main-menu.d.ts.map +1 -0
  62. package/dist/menus/main-menu.js +260 -0
  63. package/dist/menus/main-menu.js.map +1 -0
  64. package/dist/overlays/file-drop-overlay.d.ts +15 -0
  65. package/dist/overlays/file-drop-overlay.d.ts.map +1 -0
  66. package/dist/overlays/file-drop-overlay.js +27 -0
  67. package/dist/overlays/file-drop-overlay.js.map +1 -0
  68. package/dist/overlays/frame-name-editor-overlay.d.ts.map +1 -0
  69. package/dist/{frame-name-editor-overlay.js → overlays/frame-name-editor-overlay.js} +1 -1
  70. package/dist/overlays/frame-name-editor-overlay.js.map +1 -0
  71. package/dist/overlays/help-button.d.ts.map +1 -0
  72. package/dist/{help-button.js → overlays/help-button.js} +3 -4
  73. package/dist/overlays/help-button.js.map +1 -0
  74. package/dist/overlays/help-dialog.d.ts.map +1 -0
  75. package/dist/{help-dialog.js → overlays/help-dialog.js} +4 -24
  76. package/dist/overlays/help-dialog.js.map +1 -0
  77. package/dist/overlays/link-badges.d.ts +14 -0
  78. package/dist/overlays/link-badges.d.ts.map +1 -0
  79. package/dist/overlays/link-badges.js +60 -0
  80. package/dist/overlays/link-badges.js.map +1 -0
  81. package/dist/overlays/link-caption-editor.d.ts.map +1 -0
  82. package/dist/{link-caption-editor.js → overlays/link-caption-editor.js} +3 -3
  83. package/dist/overlays/link-caption-editor.js.map +1 -0
  84. package/dist/overlays/link-hover-popup.d.ts.map +1 -0
  85. package/dist/{link-hover-popup.js → overlays/link-hover-popup.js} +5 -4
  86. package/dist/overlays/link-hover-popup.js.map +1 -0
  87. package/dist/overlays/merge-dialog.d.ts.map +1 -0
  88. package/dist/overlays/merge-dialog.js +39 -0
  89. package/dist/overlays/merge-dialog.js.map +1 -0
  90. package/dist/overlays/search-overlay.d.ts.map +1 -0
  91. package/dist/{search-overlay.js → overlays/search-overlay.js} +2 -2
  92. package/dist/overlays/search-overlay.js.map +1 -0
  93. package/dist/overlays/sticky-reactions.d.ts +2 -0
  94. package/dist/overlays/sticky-reactions.d.ts.map +1 -0
  95. package/dist/overlays/sticky-reactions.js +94 -0
  96. package/dist/overlays/sticky-reactions.js.map +1 -0
  97. package/dist/overlays/text-editor-overlay.d.ts.map +1 -0
  98. package/dist/{text-editor-overlay.js → overlays/text-editor-overlay.js} +37 -5
  99. package/dist/overlays/text-editor-overlay.js.map +1 -0
  100. package/dist/{comments-panel.d.ts → panels/comments-panel.d.ts} +4 -1
  101. package/dist/panels/comments-panel.d.ts.map +1 -0
  102. package/dist/panels/comments-panel.js +51 -0
  103. package/dist/panels/comments-panel.js.map +1 -0
  104. package/dist/panels/diff-panel.d.ts.map +1 -0
  105. package/dist/panels/diff-panel.js.map +1 -0
  106. package/dist/panels/drawing-panel.d.ts.map +1 -0
  107. package/dist/{drawing-panel.js → panels/drawing-panel.js} +3 -3
  108. package/dist/panels/drawing-panel.js.map +1 -0
  109. package/dist/panels/edge-style-panel.d.ts.map +1 -0
  110. package/dist/{edge-style-panel.js → panels/edge-style-panel.js} +1 -1
  111. package/dist/panels/edge-style-panel.js.map +1 -0
  112. package/dist/panels/frame-panel.d.ts.map +1 -0
  113. package/dist/{frame-panel.js → panels/frame-panel.js} +1 -1
  114. package/dist/panels/frame-panel.js.map +1 -0
  115. package/dist/{layer-panel.d.ts → panels/layer-panel.d.ts} +5 -1
  116. package/dist/panels/layer-panel.d.ts.map +1 -0
  117. package/dist/panels/layer-panel.js +52 -0
  118. package/dist/panels/layer-panel.js.map +1 -0
  119. package/dist/panels/library-panel.d.ts.map +1 -0
  120. package/dist/{library-panel.js → panels/library-panel.js} +4 -5
  121. package/dist/panels/library-panel.js.map +1 -0
  122. package/dist/panels/property-panel.d.ts.map +1 -0
  123. package/dist/panels/property-panel.js +1397 -0
  124. package/dist/panels/property-panel.js.map +1 -0
  125. package/dist/panels/selection-floating-panel.d.ts.map +1 -0
  126. package/dist/{selection-floating-panel.js → panels/selection-floating-panel.js} +24 -13
  127. package/dist/panels/selection-floating-panel.js.map +1 -0
  128. package/dist/panels/stats-panel.d.ts.map +1 -0
  129. package/dist/{stats-panel.js → panels/stats-panel.js} +1 -1
  130. package/dist/panels/stats-panel.js.map +1 -0
  131. package/dist/primitives/bottom-sheet.d.ts.map +1 -0
  132. package/dist/{bottom-sheet.js → primitives/bottom-sheet.js} +9 -22
  133. package/dist/primitives/bottom-sheet.js.map +1 -0
  134. package/dist/primitives/button-group.d.ts.map +1 -0
  135. package/dist/primitives/button-group.js.map +1 -0
  136. package/dist/primitives/css-var.d.ts +8 -0
  137. package/dist/primitives/css-var.d.ts.map +1 -0
  138. package/dist/primitives/css-var.js +11 -0
  139. package/dist/primitives/css-var.js.map +1 -0
  140. package/dist/primitives/float-panel.d.ts +35 -0
  141. package/dist/primitives/float-panel.d.ts.map +1 -0
  142. package/dist/primitives/float-panel.js +42 -0
  143. package/dist/primitives/float-panel.js.map +1 -0
  144. package/dist/primitives/icon-button.d.ts.map +1 -0
  145. package/dist/primitives/icon-button.js.map +1 -0
  146. package/dist/primitives/markdown.d.ts.map +1 -0
  147. package/dist/primitives/markdown.js.map +1 -0
  148. package/dist/primitives/modal.d.ts.map +1 -0
  149. package/dist/{modal.js → primitives/modal.js} +11 -9
  150. package/dist/primitives/modal.js.map +1 -0
  151. package/dist/{popover.d.ts → primitives/popover.d.ts} +1 -1
  152. package/dist/primitives/popover.d.ts.map +1 -0
  153. package/dist/{popover.js → primitives/popover.js} +7 -18
  154. package/dist/primitives/popover.js.map +1 -0
  155. package/dist/primitives/segmented-control.d.ts.map +1 -0
  156. package/dist/primitives/segmented-control.js.map +1 -0
  157. package/dist/primitives/slider.d.ts.map +1 -0
  158. package/dist/primitives/slider.js.map +1 -0
  159. package/dist/primitives/switch.d.ts +24 -0
  160. package/dist/primitives/switch.d.ts.map +1 -0
  161. package/dist/primitives/switch.js +17 -0
  162. package/dist/primitives/switch.js.map +1 -0
  163. package/dist/primitives/toast.d.ts.map +1 -0
  164. package/dist/{toast.js → primitives/toast.js} +12 -33
  165. package/dist/primitives/toast.js.map +1 -0
  166. package/dist/primitives/tooltip.d.ts.map +1 -0
  167. package/dist/{tooltip.js → primitives/tooltip.js} +3 -3
  168. package/dist/primitives/tooltip.js.map +1 -0
  169. package/dist/{palette.d.ts → toolbar/palette.d.ts} +6 -1
  170. package/dist/toolbar/palette.d.ts.map +1 -0
  171. package/dist/{palette.js → toolbar/palette.js} +39 -5
  172. package/dist/toolbar/palette.js.map +1 -0
  173. package/dist/{toolbar.d.ts → toolbar/toolbar.d.ts} +9 -0
  174. package/dist/toolbar/toolbar.d.ts.map +1 -0
  175. package/dist/{toolbar.js → toolbar/toolbar.js} +132 -62
  176. package/dist/toolbar/toolbar.js.map +1 -0
  177. package/dist/utils/format-time.d.ts.map +1 -0
  178. package/dist/utils/format-time.js.map +1 -0
  179. package/dist/utils/use-dismiss-timer.d.ts.map +1 -0
  180. package/dist/utils/use-dismiss-timer.js.map +1 -0
  181. package/dist/widgets/minimap.d.ts.map +1 -0
  182. package/dist/{minimap.js → widgets/minimap.js} +50 -36
  183. package/dist/widgets/minimap.js.map +1 -0
  184. package/dist/widgets/reset-to-content-button.d.ts +11 -0
  185. package/dist/widgets/reset-to-content-button.d.ts.map +1 -0
  186. package/dist/{reset-to-content-button.js → widgets/reset-to-content-button.js} +8 -9
  187. package/dist/widgets/reset-to-content-button.js.map +1 -0
  188. package/dist/widgets/versioning.d.ts.map +1 -0
  189. package/dist/{versioning.js → widgets/versioning.js} +3 -3
  190. package/dist/widgets/versioning.js.map +1 -0
  191. package/dist/widgets/zen-mode.d.ts.map +1 -0
  192. package/dist/widgets/zen-mode.js.map +1 -0
  193. package/package.json +9 -9
  194. package/src/styles.css +1590 -258
  195. package/dist/bottom-sheet.d.ts.map +0 -1
  196. package/dist/bottom-sheet.js.map +0 -1
  197. package/dist/button-group.d.ts.map +0 -1
  198. package/dist/button-group.js.map +0 -1
  199. package/dist/color-palette.d.ts.map +0 -1
  200. package/dist/color-palette.js.map +0 -1
  201. package/dist/color-swatch-picker.d.ts.map +0 -1
  202. package/dist/color-swatch-picker.js.map +0 -1
  203. package/dist/command-palette.d.ts.map +0 -1
  204. package/dist/command-palette.js.map +0 -1
  205. package/dist/comments-panel.d.ts.map +0 -1
  206. package/dist/comments-panel.js +0 -142
  207. package/dist/comments-panel.js.map +0 -1
  208. package/dist/constants.d.ts.map +0 -1
  209. package/dist/constants.js.map +0 -1
  210. package/dist/context-menu-controller.d.ts.map +0 -1
  211. package/dist/context-menu-controller.js.map +0 -1
  212. package/dist/context-menu.d.ts.map +0 -1
  213. package/dist/context-menu.js +0 -368
  214. package/dist/context-menu.js.map +0 -1
  215. package/dist/context.d.ts.map +0 -1
  216. package/dist/context.js.map +0 -1
  217. package/dist/diagram-bars.d.ts.map +0 -1
  218. package/dist/diagram-bars.js.map +0 -1
  219. package/dist/diagram-canvas.d.ts.map +0 -1
  220. package/dist/diagram-canvas.js.map +0 -1
  221. package/dist/diagram-root.d.ts.map +0 -1
  222. package/dist/diagram-root.js.map +0 -1
  223. package/dist/diff-panel.d.ts.map +0 -1
  224. package/dist/diff-panel.js.map +0 -1
  225. package/dist/drawing-panel.d.ts.map +0 -1
  226. package/dist/drawing-panel.js.map +0 -1
  227. package/dist/edge-style-panel.d.ts.map +0 -1
  228. package/dist/edge-style-panel.js.map +0 -1
  229. package/dist/format-time.d.ts.map +0 -1
  230. package/dist/format-time.js.map +0 -1
  231. package/dist/frame-name-editor-overlay.d.ts.map +0 -1
  232. package/dist/frame-name-editor-overlay.js.map +0 -1
  233. package/dist/frame-panel.d.ts.map +0 -1
  234. package/dist/frame-panel.js.map +0 -1
  235. package/dist/help-button.d.ts.map +0 -1
  236. package/dist/help-button.js.map +0 -1
  237. package/dist/help-dialog.d.ts.map +0 -1
  238. package/dist/help-dialog.js.map +0 -1
  239. package/dist/hooks.d.ts.map +0 -1
  240. package/dist/hooks.js.map +0 -1
  241. package/dist/icon-button.d.ts.map +0 -1
  242. package/dist/icon-button.js.map +0 -1
  243. package/dist/layer-panel.d.ts.map +0 -1
  244. package/dist/layer-panel.js +0 -117
  245. package/dist/layer-panel.js.map +0 -1
  246. package/dist/library-panel.d.ts.map +0 -1
  247. package/dist/library-panel.js.map +0 -1
  248. package/dist/link-caption-editor.d.ts.map +0 -1
  249. package/dist/link-caption-editor.js.map +0 -1
  250. package/dist/link-drop-shape-menu.d.ts.map +0 -1
  251. package/dist/link-drop-shape-menu.js.map +0 -1
  252. package/dist/link-hover-popup.d.ts.map +0 -1
  253. package/dist/link-hover-popup.js.map +0 -1
  254. package/dist/main-menu.d.ts.map +0 -1
  255. package/dist/main-menu.js +0 -249
  256. package/dist/main-menu.js.map +0 -1
  257. package/dist/markdown.d.ts.map +0 -1
  258. package/dist/markdown.js.map +0 -1
  259. package/dist/merge-dialog.d.ts.map +0 -1
  260. package/dist/merge-dialog.js +0 -50
  261. package/dist/merge-dialog.js.map +0 -1
  262. package/dist/minimap.d.ts.map +0 -1
  263. package/dist/minimap.js.map +0 -1
  264. package/dist/modal.d.ts.map +0 -1
  265. package/dist/modal.js.map +0 -1
  266. package/dist/palette.d.ts.map +0 -1
  267. package/dist/palette.js.map +0 -1
  268. package/dist/popover.d.ts.map +0 -1
  269. package/dist/popover.js.map +0 -1
  270. package/dist/portal-container.d.ts.map +0 -1
  271. package/dist/portal-container.js.map +0 -1
  272. package/dist/property-panel.d.ts.map +0 -1
  273. package/dist/property-panel.js +0 -917
  274. package/dist/property-panel.js.map +0 -1
  275. package/dist/reset-to-content-button.d.ts +0 -10
  276. package/dist/reset-to-content-button.d.ts.map +0 -1
  277. package/dist/reset-to-content-button.js.map +0 -1
  278. package/dist/search-overlay.d.ts.map +0 -1
  279. package/dist/search-overlay.js.map +0 -1
  280. package/dist/segmented-control.d.ts.map +0 -1
  281. package/dist/segmented-control.js.map +0 -1
  282. package/dist/selection-floating-panel.d.ts.map +0 -1
  283. package/dist/selection-floating-panel.js.map +0 -1
  284. package/dist/sidebar.d.ts.map +0 -1
  285. package/dist/sidebar.js +0 -68
  286. package/dist/sidebar.js.map +0 -1
  287. package/dist/slider.d.ts.map +0 -1
  288. package/dist/slider.js.map +0 -1
  289. package/dist/stats-panel.d.ts.map +0 -1
  290. package/dist/stats-panel.js.map +0 -1
  291. package/dist/text-editor-overlay.d.ts.map +0 -1
  292. package/dist/text-editor-overlay.js.map +0 -1
  293. package/dist/toast.d.ts.map +0 -1
  294. package/dist/toast.js.map +0 -1
  295. package/dist/toolbar.d.ts.map +0 -1
  296. package/dist/toolbar.js.map +0 -1
  297. package/dist/tooltip.d.ts.map +0 -1
  298. package/dist/tooltip.js.map +0 -1
  299. package/dist/ui-layer.d.ts.map +0 -1
  300. package/dist/ui-layer.js.map +0 -1
  301. package/dist/use-dismiss-timer.d.ts.map +0 -1
  302. package/dist/use-dismiss-timer.js.map +0 -1
  303. package/dist/versioning.d.ts.map +0 -1
  304. package/dist/versioning.js.map +0 -1
  305. package/dist/zen-mode.d.ts.map +0 -1
  306. package/dist/zen-mode.js.map +0 -1
  307. /package/dist/{color-palette.d.ts → color/color-palette.d.ts} +0 -0
  308. /package/dist/{color-palette.js → color/color-palette.js} +0 -0
  309. /package/dist/{color-swatch-picker.d.ts → color/color-swatch-picker.d.ts} +0 -0
  310. /package/dist/{context.d.ts → core/context.d.ts} +0 -0
  311. /package/dist/{context.js → core/context.js} +0 -0
  312. /package/dist/{hooks.d.ts → core/hooks.d.ts} +0 -0
  313. /package/dist/{hooks.js → core/hooks.js} +0 -0
  314. /package/dist/{portal-container.d.ts → core/portal-container.d.ts} +0 -0
  315. /package/dist/{portal-container.js → core/portal-container.js} +0 -0
  316. /package/dist/{diagram-bars.d.ts → layout/diagram-bars.d.ts} +0 -0
  317. /package/dist/{diagram-bars.js → layout/diagram-bars.js} +0 -0
  318. /package/dist/{diagram-canvas.d.ts → layout/diagram-canvas.d.ts} +0 -0
  319. /package/dist/{diagram-canvas.js → layout/diagram-canvas.js} +0 -0
  320. /package/dist/{diagram-root.d.ts → layout/diagram-root.d.ts} +0 -0
  321. /package/dist/{ui-layer.d.ts → layout/ui-layer.d.ts} +0 -0
  322. /package/dist/{ui-layer.js → layout/ui-layer.js} +0 -0
  323. /package/dist/{command-palette.d.ts → menus/command-palette.d.ts} +0 -0
  324. /package/dist/{context-menu-controller.d.ts → menus/context-menu-controller.d.ts} +0 -0
  325. /package/dist/{context-menu-controller.js → menus/context-menu-controller.js} +0 -0
  326. /package/dist/{link-drop-shape-menu.d.ts → menus/link-drop-shape-menu.d.ts} +0 -0
  327. /package/dist/{frame-name-editor-overlay.d.ts → overlays/frame-name-editor-overlay.d.ts} +0 -0
  328. /package/dist/{help-button.d.ts → overlays/help-button.d.ts} +0 -0
  329. /package/dist/{help-dialog.d.ts → overlays/help-dialog.d.ts} +0 -0
  330. /package/dist/{link-caption-editor.d.ts → overlays/link-caption-editor.d.ts} +0 -0
  331. /package/dist/{link-hover-popup.d.ts → overlays/link-hover-popup.d.ts} +0 -0
  332. /package/dist/{merge-dialog.d.ts → overlays/merge-dialog.d.ts} +0 -0
  333. /package/dist/{search-overlay.d.ts → overlays/search-overlay.d.ts} +0 -0
  334. /package/dist/{text-editor-overlay.d.ts → overlays/text-editor-overlay.d.ts} +0 -0
  335. /package/dist/{diff-panel.d.ts → panels/diff-panel.d.ts} +0 -0
  336. /package/dist/{diff-panel.js → panels/diff-panel.js} +0 -0
  337. /package/dist/{drawing-panel.d.ts → panels/drawing-panel.d.ts} +0 -0
  338. /package/dist/{edge-style-panel.d.ts → panels/edge-style-panel.d.ts} +0 -0
  339. /package/dist/{frame-panel.d.ts → panels/frame-panel.d.ts} +0 -0
  340. /package/dist/{library-panel.d.ts → panels/library-panel.d.ts} +0 -0
  341. /package/dist/{property-panel.d.ts → panels/property-panel.d.ts} +0 -0
  342. /package/dist/{selection-floating-panel.d.ts → panels/selection-floating-panel.d.ts} +0 -0
  343. /package/dist/{stats-panel.d.ts → panels/stats-panel.d.ts} +0 -0
  344. /package/dist/{bottom-sheet.d.ts → primitives/bottom-sheet.d.ts} +0 -0
  345. /package/dist/{button-group.d.ts → primitives/button-group.d.ts} +0 -0
  346. /package/dist/{button-group.js → primitives/button-group.js} +0 -0
  347. /package/dist/{icon-button.d.ts → primitives/icon-button.d.ts} +0 -0
  348. /package/dist/{icon-button.js → primitives/icon-button.js} +0 -0
  349. /package/dist/{markdown.d.ts → primitives/markdown.d.ts} +0 -0
  350. /package/dist/{markdown.js → primitives/markdown.js} +0 -0
  351. /package/dist/{modal.d.ts → primitives/modal.d.ts} +0 -0
  352. /package/dist/{segmented-control.d.ts → primitives/segmented-control.d.ts} +0 -0
  353. /package/dist/{segmented-control.js → primitives/segmented-control.js} +0 -0
  354. /package/dist/{slider.d.ts → primitives/slider.d.ts} +0 -0
  355. /package/dist/{slider.js → primitives/slider.js} +0 -0
  356. /package/dist/{toast.d.ts → primitives/toast.d.ts} +0 -0
  357. /package/dist/{tooltip.d.ts → primitives/tooltip.d.ts} +0 -0
  358. /package/dist/{format-time.d.ts → utils/format-time.d.ts} +0 -0
  359. /package/dist/{format-time.js → utils/format-time.js} +0 -0
  360. /package/dist/{use-dismiss-timer.d.ts → utils/use-dismiss-timer.d.ts} +0 -0
  361. /package/dist/{use-dismiss-timer.js → utils/use-dismiss-timer.js} +0 -0
  362. /package/dist/{minimap.d.ts → widgets/minimap.d.ts} +0 -0
  363. /package/dist/{versioning.d.ts → widgets/versioning.d.ts} +0 -0
  364. /package/dist/{zen-mode.d.ts → widgets/zen-mode.d.ts} +0 -0
  365. /package/dist/{zen-mode.js → widgets/zen-mode.js} +0 -0
@@ -0,0 +1,617 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useLayoutEffect, useRef, useState, } from "react";
3
+ import { createPortal } from "react-dom";
4
+ import { Check } from "lucide-react";
5
+ import { MENU_VIEWPORT_PADDING_PX, MARK_ICON } from "../core/constants.js";
6
+ import { cssPx } from "../primitives/css-var.js";
7
+ import { floatPanel } from "../primitives/float-panel.js";
8
+ import { defaultActionRegistry, formatHotkey, } from "@oh-just-another/state";
9
+ import { useDiagramOptional } from "../core/hooks.js";
10
+ import { useContextMenuController } from "./context-menu-controller.js";
11
+ import { usePortalContainer } from "../core/portal-container.js";
12
+ export const ContextMenu = ({ items, style, className }) => {
13
+ const editor = useDiagramOptional();
14
+ const controller = useContextMenuController();
15
+ const portalContainer = usePortalContainer();
16
+ const [open, setOpen] = useState(null);
17
+ const menuRef = useRef(null);
18
+ // Every open panel (root + submenus, each in its own portal) — a press
19
+ // inside any of them is "inside the menu" for the dismiss listener.
20
+ const panelsRef = useRef(new Set());
21
+ // Register an imperative opener so UI outside the canvas (e.g. the
22
+ // "⋯" button in the selection floating panel) can open this same
23
+ // menu at a chosen point.
24
+ useEffect(() => {
25
+ if (!controller)
26
+ return undefined;
27
+ return controller.register(({ screenPoint, worldPoint }) => {
28
+ setOpen({ screenPoint, worldPoint });
29
+ });
30
+ }, [controller]);
31
+ // Open the menu from the editor's single gesture channel: `onLongPress`
32
+ // fires for a clean right-click (Editor.endPanGesture) AND for touch
33
+ // long-press, scoped to the editor host by the pointer-binding. We do NOT
34
+ // attach our own `contextmenu` DOM listener — a document/window-level one
35
+ // opens the menu (and preventDefault's the native one) for right-clicks
36
+ // anywhere on the page, which is wrong when the editor is embedded in a
37
+ // larger document. Coords arrive host-relative; convert to viewport for
38
+ // fixed-position placement.
39
+ useEffect(() => {
40
+ if (!editor)
41
+ return undefined;
42
+ return editor.onLongPress(({ screenPoint, worldPoint }) => {
43
+ const rect = editor.hostElement.getBoundingClientRect();
44
+ setOpen({
45
+ screenPoint: { x: screenPoint.x + rect.left, y: screenPoint.y + rect.top },
46
+ worldPoint,
47
+ });
48
+ });
49
+ }, [editor]);
50
+ // Dismiss on click outside / Escape.
51
+ useEffect(() => {
52
+ if (!open)
53
+ return undefined;
54
+ const onPointer = (ev) => {
55
+ const t = ev.target;
56
+ for (const panel of panelsRef.current)
57
+ if (panel.contains(t))
58
+ return;
59
+ setOpen(null);
60
+ };
61
+ const onKey = (ev) => {
62
+ if (ev.key === "Escape")
63
+ setOpen(null);
64
+ };
65
+ window.addEventListener("pointerdown", onPointer, true);
66
+ window.addEventListener("keydown", onKey);
67
+ return () => {
68
+ window.removeEventListener("pointerdown", onPointer, true);
69
+ window.removeEventListener("keydown", onKey);
70
+ };
71
+ }, [open]);
72
+ const close = useCallback(() => {
73
+ setOpen(null);
74
+ }, []);
75
+ // Anchor the panel at the press point but keep it inside the WINDOW:
76
+ // flip above the point when there is no room below, shift along the
77
+ // edges by `MENU_VIEWPORT_PADDING_PX`, and cap the height (scrolling)
78
+ // when the window is shorter than the menu. The viewport is the bound —
79
+ // an embedded canvas may be overhung, like the floating toolbars do.
80
+ useLayoutEffect(() => {
81
+ const panel = menuRef.current;
82
+ if (!open || !panel)
83
+ return undefined;
84
+ const { x, y } = open.screenPoint;
85
+ const anchor = {
86
+ getBoundingClientRect: () => ({
87
+ x,
88
+ y,
89
+ width: 0,
90
+ height: 0,
91
+ top: y,
92
+ left: x,
93
+ right: x,
94
+ bottom: y,
95
+ }),
96
+ };
97
+ panelsRef.current.add(panel);
98
+ const stop = floatPanel(anchor, panel, {
99
+ placement: "bottom-start",
100
+ padding: MENU_VIEWPORT_PADDING_PX,
101
+ strategy: "fixed",
102
+ clampHeight: true,
103
+ });
104
+ return () => {
105
+ stop();
106
+ panelsRef.current.delete(panel);
107
+ };
108
+ }, [open]);
109
+ if (!editor || !open)
110
+ return null;
111
+ const ctx = {
112
+ worldPoint: open.worldPoint,
113
+ screenPoint: open.screenPoint,
114
+ };
115
+ // Filter visibility once per open — items that compute `visible` against
116
+ // the editor still see a consistent snapshot.
117
+ const cleanedItems = resolveItems(items, editor, ctx);
118
+ if (cleanedItems.length === 0)
119
+ return null;
120
+ // Portal into the themed container so the menu inherits the app theme — when
121
+ // rendered inline it can escape the editor root and pick up the stylesheet's
122
+ // OS `prefers-color-scheme` fallback instead. Fallbacks forward to the `--du-*`
123
+ // theme chain (light-leaning) so it never defaults to a dark surface.
124
+ return createPortal(_jsx("div", { ref: menuRef, role: "menu", className: `du-menu-panel${className ? ` ${className}` : ""}`, style: {
125
+ // `transform` is set by `floatPanel`; the pre-position paint at
126
+ // (0,0) lasts one layout pass.
127
+ position: "fixed",
128
+ top: 0,
129
+ left: 0,
130
+ zIndex: "var(--du-z-context-menu, 1700)",
131
+ ...style,
132
+ }, children: _jsx(MenuRows, { items: cleanedItems, editor: editor, ctx: ctx, close: close, panels: panelsRef.current }) }), portalContainer);
133
+ };
134
+ /**
135
+ * Panel padding (`--du-menu-pad`, 6) + border (1): offset so a submenu's
136
+ * first row aligns with its parent row. Chrome itself comes from the
137
+ * shared `.du-menu-panel` / `.du-menu-row` classes (styles.css).
138
+ */
139
+ /**
140
+ * Submenu geometry read from the live panel so it follows the CSS tokens:
141
+ * `align` = padding + border (undone on the cross axis so the first child
142
+ * row lines up with its parent row), `gap` = the same clearance plus
143
+ * `--du-submenu-gap` on the main axis.
144
+ */
145
+ const submenuGeometry = (panel) => {
146
+ const cs = getComputedStyle(panel);
147
+ const align = parseFloat(cs.paddingTop) + parseFloat(cs.borderTopWidth);
148
+ return { align, gap: align + cssPx(panel, "--du-submenu-gap") };
149
+ };
150
+ /**
151
+ * Drop hidden items (recursively — a submenu with nothing visible goes too),
152
+ * then collapse adjacent / leading / trailing dividers.
153
+ */
154
+ const resolveItems = (items, editor, ctx) => {
155
+ const visible = [];
156
+ for (const item of items) {
157
+ if (item.kind === "divider") {
158
+ visible.push(item);
159
+ }
160
+ else if (item.kind === "submenu") {
161
+ if (item.visible?.(editor, ctx) === false)
162
+ continue;
163
+ const nested = resolveItems(item.items, editor, ctx);
164
+ if (nested.length > 0)
165
+ visible.push({ ...item, items: nested });
166
+ }
167
+ else if (item.visible?.(editor, ctx) !== false) {
168
+ visible.push(item);
169
+ }
170
+ }
171
+ return collapseDividers(visible);
172
+ };
173
+ /**
174
+ * One panel's rows. At most one submenu per level is open — hovering any
175
+ * row (action or submenu) makes it the active one, so moving the pointer
176
+ * to a sibling closes the previous child panel; moving into the child
177
+ * panel itself keeps it (it is not a sibling row).
178
+ */
179
+ const MenuRows = ({ items, editor, ctx, close, panels, }) => {
180
+ const [openId, setOpenId] = useState(null);
181
+ // Reserve the leading gutter only when this panel has check rows — a
182
+ // plain list keeps its labels flush with the panel edge.
183
+ const gutter = items.some((item) => item.kind === "action" && item.checked !== undefined);
184
+ return (_jsx(_Fragment, { children: items.map((item, i) => item.kind === "divider" ? (_jsx("hr", { className: "du-menu-sep" }, `d-${i}`)) : item.kind === "submenu" ? (_jsx(ContextSubmenuRow, { item: item, editor: editor, ctx: ctx, close: close, panels: panels, gutter: gutter, open: openId === item.id, onOpen: () => {
185
+ setOpenId(item.id);
186
+ }, onToggle: () => {
187
+ setOpenId((cur) => (cur === item.id ? null : item.id));
188
+ } }, item.id)) : (_jsx(ContextMenuRow, { item: item, editor: editor, ctx: ctx, gutter: gutter, onHover: () => {
189
+ setOpenId(null);
190
+ }, onActivate: () => {
191
+ close();
192
+ item.onClick(editor, ctx);
193
+ } }, item.id))) }));
194
+ };
195
+ /**
196
+ * Submenu row: hovering (or clicking) opens the child panel beside the row
197
+ * — to the right by default, to the left when the right side has no room,
198
+ * shifted / height-capped like the root panel. The child renders in its
199
+ * own portal (a scrolling parent would clip it) and registers itself with
200
+ * `panels` so outside-click dismissal treats it as part of the menu.
201
+ */
202
+ const ContextSubmenuRow = ({ item, editor, ctx, close, panels, gutter, open, onOpen, onToggle, }) => {
203
+ const portalContainer = usePortalContainer();
204
+ const rowRef = useRef(null);
205
+ const panelRef = useRef(null);
206
+ useLayoutEffect(() => {
207
+ const row = rowRef.current;
208
+ const panel = panelRef.current;
209
+ if (!open || !row || !panel)
210
+ return undefined;
211
+ panels.add(panel);
212
+ const { align, gap } = submenuGeometry(panel);
213
+ const stop = floatPanel(row, panel, {
214
+ placement: "right-start",
215
+ fallbackPlacements: ["left-start"],
216
+ gap,
217
+ crossAxis: -align,
218
+ padding: MENU_VIEWPORT_PADDING_PX,
219
+ strategy: "fixed",
220
+ clampHeight: true,
221
+ });
222
+ return () => {
223
+ stop();
224
+ panels.delete(panel);
225
+ };
226
+ }, [open, panels]);
227
+ return (_jsxs(_Fragment, { children: [_jsxs("button", { ref: rowRef, type: "button", role: "menuitem", "aria-haspopup": "menu", "aria-expanded": open, onMouseEnter: onOpen, onClick: (ev) => {
228
+ ev.stopPropagation();
229
+ onToggle();
230
+ }, className: `du-menu-row${open ? " is-open" : ""}`, children: [_jsxs("span", { className: "du-menu-row-main", children: [gutter ? _jsx("span", { "aria-hidden": true, className: "du-menu-gutter" }) : null, _jsx("span", { children: item.label })] }), _jsx("span", { "aria-hidden": true, className: "du-menu-shortcut", children: "\u203A" })] }), open
231
+ ? createPortal(_jsx("div", { ref: panelRef, role: "menu", "aria-label": typeof item.label === "string" ? item.label : undefined, className: "du-menu-panel", style: {
232
+ position: "fixed",
233
+ top: 0,
234
+ left: 0,
235
+ zIndex: "calc(var(--du-z-context-menu, 1700) + 1)",
236
+ }, children: _jsx(MenuRows, { items: item.items, editor: editor, ctx: ctx, close: close, panels: panels }) }), portalContainer)
237
+ : null] }));
238
+ };
239
+ const ContextMenuRow = ({ item, editor, ctx, gutter, onHover, onActivate, }) => {
240
+ const disabled = item.disabled?.(editor, ctx) ?? false;
241
+ const checked = item.checked?.(editor, ctx) ?? false;
242
+ const handle = (ev) => {
243
+ if (disabled) {
244
+ ev.preventDefault();
245
+ return;
246
+ }
247
+ ev.stopPropagation();
248
+ onActivate();
249
+ };
250
+ return (_jsxs("button", { type: "button", role: item.checked ? "menuitemcheckbox" : "menuitem", ...(item.checked ? { "aria-checked": checked } : {}), onClick: handle, disabled: disabled, className: "du-menu-row", onMouseEnter: onHover, children: [_jsxs("span", { className: "du-menu-row-main", children: [gutter ? (_jsx("span", { "aria-hidden": true, className: "du-menu-gutter is-accent", children: checked ? _jsx(Check, { ...MARK_ICON }) : "" })) : null, _jsx("span", { children: item.label })] }), item.shortcut ? _jsx("span", { className: "du-menu-shortcut", children: item.shortcut }) : null] }));
251
+ };
252
+ const collapseDividers = (items) => {
253
+ const out = [];
254
+ for (const item of items) {
255
+ if (item.kind === "divider") {
256
+ if (out.length === 0)
257
+ continue;
258
+ const last = out[out.length - 1];
259
+ if (last?.kind === "divider")
260
+ continue;
261
+ }
262
+ out.push(item);
263
+ }
264
+ while (out.length > 0) {
265
+ const last = out[out.length - 1];
266
+ if (last?.kind !== "divider")
267
+ break;
268
+ out.pop();
269
+ }
270
+ return out;
271
+ };
272
+ /**
273
+ * Build a context-menu row from a registered action: label, shortcut (from
274
+ * the action's hotkey, platform-correct), visibility (the action's
275
+ * `predicate`) and click (dispatch) all come from the registry. Position-/
276
+ * DOM-dependent menu items (annotations, add-comment, move-to-layer) can't be
277
+ * registry actions (the action context carries no world point) and stay
278
+ * inline below.
279
+ *
280
+ * `opts.label` / `opts.visible` override when the menu needs different
281
+ * text or visibility than the action's defaults (e.g. z-order entries
282
+ * shown only for a single selection).
283
+ */
284
+ /**
285
+ * Confirm-then-wipe the whole canvas. Destructive and not undoable (it clears
286
+ * history), so it always asks first. Shared by the right-click entry and the
287
+ * `clear-canvas` shortcut.
288
+ */
289
+ export const clearCanvasWithConfirm = (editor) => {
290
+ if (window.confirm("Clear the canvas? Every shape is removed and this can't be undone.")) {
291
+ editor.clear();
292
+ }
293
+ };
294
+ const actionMenuItem = (actionId, opts) => {
295
+ const action = defaultActionRegistry.get(actionId);
296
+ const pred = action?.predicate;
297
+ const matchers = !action?.hotkey
298
+ ? []
299
+ : Array.isArray(action.hotkey)
300
+ ? action.hotkey
301
+ : [action.hotkey];
302
+ const first = matchers[0];
303
+ const baseVisible = opts?.visible ?? (pred ? (editor) => pred({ editor }) : undefined);
304
+ // In read-only / view mode only `viewMode`-flagged actions (zoom / select /
305
+ // copy) stay in the menu — every mutating entry is hidden, mirroring the
306
+ // hotkey gate (`isReadOnlyBlocked`) so panel and keyboard agree.
307
+ const visible = (editor, ctx) => (!editor.readOnly || action?.viewMode === true) && (baseVisible?.(editor, ctx) ?? true);
308
+ return {
309
+ kind: "action",
310
+ id: actionId,
311
+ label: opts?.label ?? action?.label ?? actionId,
312
+ ...(first ? { shortcut: formatHotkey(first) } : {}),
313
+ visible,
314
+ ...(opts?.checked ? { checked: opts.checked } : {}),
315
+ onClick: (editor) => {
316
+ defaultActionRegistry.dispatch(actionId, { editor });
317
+ },
318
+ };
319
+ };
320
+ /**
321
+ * "Canvas" context: the right-click landed on empty canvas (the press
322
+ * routing has already cleared the selection) and not on an annotation pin.
323
+ * Canvas-only entries (add text / sticky, start view, grid & snap toggles,
324
+ * wheel mode, show all) are gated on this.
325
+ */
326
+ const onCanvas = (e, ctx) => e.selection.size === 0 && e.selectedLinks.size === 0 && e.hitAnnotation(ctx.worldPoint) === null;
327
+ const WHEEL_MODES = [
328
+ { mode: "auto", label: "Auto-detect" },
329
+ { mode: "mouse", label: "Mouse" },
330
+ { mode: "trackpad", label: "Trackpad" },
331
+ ];
332
+ /** Toggle row bound to one boolean editor preference. */
333
+ const preferenceToggle = (key, label) => ({
334
+ kind: "action",
335
+ id: key,
336
+ label,
337
+ visible: onCanvas,
338
+ checked: (e) => e.preferences[key],
339
+ onClick: (e) => {
340
+ e.setPreferences({ [key]: !e.preferences[key] });
341
+ },
342
+ });
343
+ export const DEFAULT_CONTEXT_MENU = [
344
+ // --- Clipboard / duplication ---
345
+ actionMenuItem("copy"),
346
+ actionMenuItem("cut"),
347
+ actionMenuItem("paste"),
348
+ actionMenuItem("duplicate-selection", { label: "Duplicate" }),
349
+ {
350
+ kind: "action",
351
+ id: "unlock-all",
352
+ label: "Unlock all",
353
+ visible: (e, ctx) => !e.readOnly &&
354
+ onCanvas(e, ctx) &&
355
+ [...e.scene.elements.values()].some((s) => s.locked === true),
356
+ onClick: (e) => {
357
+ e.unlockAll();
358
+ },
359
+ },
360
+ { kind: "divider" },
361
+ // Clipboard copies of the selection as an asset. The actions are
362
+ // registered by the host package (`@oh-just-another/editor`); the rows
363
+ // hide when the host didn't register them.
364
+ ...["copy-as-png", "copy-as-svg", "copy-as-text"].map((id) => actionMenuItem(id, {
365
+ label: id === "copy-as-png"
366
+ ? "Copy as PNG"
367
+ : id === "copy-as-svg"
368
+ ? "Copy as SVG"
369
+ : "Copy as text",
370
+ visible: (e) => e.selection.size > 0 && defaultActionRegistry.get(id) !== undefined,
371
+ })),
372
+ { kind: "divider" },
373
+ actionMenuItem("copy-style", { label: "Copy style" }),
374
+ actionMenuItem("paste-style", { label: "Paste style" }),
375
+ { kind: "divider" },
376
+ // --- Comments (annotation-pin ops win when the click hit a pin) ---
377
+ {
378
+ kind: "action",
379
+ id: "open-thread",
380
+ label: "Open thread",
381
+ visible: (e, ctx) => e.hitAnnotation(ctx.worldPoint) !== null,
382
+ onClick: (e, ctx) => {
383
+ const ann = e.hitAnnotation(ctx.worldPoint);
384
+ if (ann)
385
+ e.setSelectedAnnotation(ann);
386
+ },
387
+ },
388
+ {
389
+ kind: "action",
390
+ id: "resolve-annotation",
391
+ label: "Toggle resolved",
392
+ visible: (e, ctx) => e.hitAnnotation(ctx.worldPoint) !== null,
393
+ onClick: (e, ctx) => {
394
+ const ann = e.hitAnnotation(ctx.worldPoint);
395
+ if (ann)
396
+ e.toggleAnnotationResolved(ann);
397
+ },
398
+ },
399
+ {
400
+ kind: "action",
401
+ id: "remove-annotation",
402
+ label: "Delete annotation",
403
+ visible: (e, ctx) => e.hitAnnotation(ctx.worldPoint) !== null,
404
+ onClick: (e, ctx) => {
405
+ const ann = e.hitAnnotation(ctx.worldPoint);
406
+ if (ann)
407
+ e.removeAnnotation(ann);
408
+ },
409
+ },
410
+ {
411
+ kind: "action",
412
+ id: "add-text",
413
+ label: "Add text",
414
+ visible: (e, ctx) => !e.readOnly && onCanvas(e, ctx),
415
+ onClick: (e, ctx) => {
416
+ e.createTextAt(ctx.worldPoint);
417
+ },
418
+ },
419
+ {
420
+ kind: "action",
421
+ id: "add-sticky",
422
+ label: "Add sticky note",
423
+ visible: (e, ctx) => !e.readOnly && onCanvas(e, ctx),
424
+ onClick: (e, ctx) => {
425
+ e.createStickyAt(ctx.worldPoint);
426
+ },
427
+ },
428
+ {
429
+ kind: "action",
430
+ id: "add-comment",
431
+ label: "Add comment",
432
+ visible: (e, ctx) => e.hitAnnotation(ctx.worldPoint) === null,
433
+ onClick: (e, ctx) => {
434
+ const elementUnder = [...e.scene.elements.values()].reverse().find((s) => {
435
+ const pos = s.position;
436
+ const w = "width" in s && typeof s.width === "number" ? s.width : 0;
437
+ const h = "height" in s && typeof s.height === "number" ? s.height : 0;
438
+ return (ctx.worldPoint.x >= pos.x &&
439
+ ctx.worldPoint.y >= pos.y &&
440
+ ctx.worldPoint.x <= pos.x + w &&
441
+ ctx.worldPoint.y <= pos.y + h);
442
+ });
443
+ const position = elementUnder
444
+ ? {
445
+ x: ctx.worldPoint.x - elementUnder.position.x,
446
+ y: ctx.worldPoint.y - elementUnder.position.y,
447
+ }
448
+ : ctx.worldPoint;
449
+ e.addAnnotation({ position, elementId: elementUnder?.id ?? null });
450
+ },
451
+ },
452
+ { kind: "divider" },
453
+ // --- Canvas: start view ---
454
+ {
455
+ kind: "action",
456
+ id: "go-to-start-view",
457
+ label: "Set start view",
458
+ visible: (e, ctx) => onCanvas(e, ctx) && e.startView !== null,
459
+ onClick: (e) => {
460
+ e.goToStartView();
461
+ },
462
+ },
463
+ {
464
+ kind: "action",
465
+ id: "set-current-view-as-start",
466
+ label: "Set current view as start",
467
+ visible: (e, ctx) => !e.readOnly && onCanvas(e, ctx),
468
+ onClick: (e) => {
469
+ e.setCurrentViewAsStart();
470
+ },
471
+ },
472
+ { kind: "divider" },
473
+ // --- Canvas: grid, snapping and size assists (check rows) ---
474
+ actionMenuItem("toggle-grid", {
475
+ label: "Show grid",
476
+ visible: onCanvas,
477
+ checked: (e) => e.gridEnabled,
478
+ }),
479
+ {
480
+ kind: "action",
481
+ id: "snap-to-grid",
482
+ label: "Snap to grid",
483
+ visible: onCanvas,
484
+ checked: (e) => e.gridEnabled && e.snapToGridEnabled,
485
+ onClick: (e) => {
486
+ // Snapping needs a visible grid: enabling it also shows the grid.
487
+ const next = !(e.gridEnabled && e.snapToGridEnabled);
488
+ if (next && !e.gridEnabled)
489
+ e.setGridVisible(true);
490
+ e.setSnapToGrid(next);
491
+ },
492
+ },
493
+ preferenceToggle("snapObjects", "Snap objects"),
494
+ preferenceToggle("showObjectSize", "Show object size"),
495
+ preferenceToggle("suggestObjectSize", "Suggest object size"),
496
+ { kind: "divider" },
497
+ // --- Canvas: wheel routing (radio submenu) + show all ---
498
+ {
499
+ kind: "submenu",
500
+ id: "wheel-mode",
501
+ label: "Mouse or trackpad",
502
+ visible: onCanvas,
503
+ items: WHEEL_MODES.map(({ mode, label }) => ({
504
+ kind: "action",
505
+ id: `wheel-mode-${mode}`,
506
+ label,
507
+ checked: (e) => e.preferences.wheelMode === mode,
508
+ onClick: (e) => {
509
+ e.setPreferences({ wheelMode: mode });
510
+ },
511
+ })),
512
+ },
513
+ actionMenuItem("zoom-to-fit", {
514
+ label: "Show all",
515
+ visible: (e, ctx) => onCanvas(e, ctx) && e.scene.elements.size > 0,
516
+ }),
517
+ { kind: "divider" },
518
+ // --- Arrange / Align / Layout submenus + layers ---
519
+ // Arrange: stacking order and mirroring.
520
+ {
521
+ kind: "submenu",
522
+ id: "arrange",
523
+ label: "Arrange",
524
+ items: [
525
+ actionMenuItem("bring-to-front", { visible: (e) => e.selection.size === 1 }),
526
+ actionMenuItem("bring-forward", {
527
+ label: "Bring forward",
528
+ visible: (e) => e.selection.size === 1,
529
+ }),
530
+ actionMenuItem("send-backward", {
531
+ label: "Send backward",
532
+ visible: (e) => e.selection.size === 1,
533
+ }),
534
+ actionMenuItem("send-to-back", { visible: (e) => e.selection.size === 1 }),
535
+ { kind: "divider" },
536
+ actionMenuItem("flip-horizontal", { label: "Flip horizontal" }),
537
+ actionMenuItem("flip-vertical", { label: "Flip vertical" }),
538
+ ],
539
+ },
540
+ // Align: edge / centre alignment (2+), then even spacing (3+).
541
+ {
542
+ kind: "submenu",
543
+ id: "align",
544
+ label: "Align",
545
+ items: [
546
+ actionMenuItem("align-left", { label: "Align left" }),
547
+ actionMenuItem("align-h-center", { label: "Align horizontal centres" }),
548
+ actionMenuItem("align-right", { label: "Align right" }),
549
+ { kind: "divider" },
550
+ actionMenuItem("align-top", { label: "Align top" }),
551
+ actionMenuItem("align-v-center", { label: "Align vertical centres" }),
552
+ actionMenuItem("align-bottom", { label: "Align bottom" }),
553
+ { kind: "divider" },
554
+ actionMenuItem("distribute-horizontal", { label: "Distribute horizontally" }),
555
+ actionMenuItem("distribute-vertical", { label: "Distribute vertically" }),
556
+ ],
557
+ },
558
+ // Layout: re-place the selection as a whole (grid / stacks / container).
559
+ {
560
+ kind: "submenu",
561
+ id: "layout",
562
+ label: "Layout",
563
+ items: [
564
+ actionMenuItem("arrange-grid"),
565
+ actionMenuItem("arrange-stack-h"),
566
+ actionMenuItem("arrange-stack-v"),
567
+ { kind: "divider" },
568
+ actionMenuItem("auto-arrange"),
569
+ ],
570
+ },
571
+ {
572
+ kind: "action",
573
+ id: "move-to-layer",
574
+ label: "Move to layer…",
575
+ visible: (e) => !e.readOnly && e.selection.size > 0 && e.scene.layers.size > 1,
576
+ onClick: (e) => {
577
+ if (typeof window === "undefined")
578
+ return;
579
+ const layers = [...e.scene.layers.values()];
580
+ const names = layers.map((l, i) => `${i + 1}. ${l.name}`).join("\n");
581
+ const choice = window.prompt(`Move selection to layer (1-${layers.length}):\n${names}`);
582
+ if (!choice)
583
+ return;
584
+ const idx = parseInt(choice, 10) - 1;
585
+ const target = layers[idx];
586
+ if (target)
587
+ e.moveSelectionToLayer(target.id);
588
+ },
589
+ },
590
+ { kind: "divider" },
591
+ // --- Selection / grouping ---
592
+ actionMenuItem("select-all"),
593
+ actionMenuItem("group-selection", { label: "Group" }),
594
+ actionMenuItem("ungroup-selection", { label: "Ungroup" }),
595
+ { kind: "divider" },
596
+ // --- Lock ---
597
+ actionMenuItem("toggle-lock", { label: "Lock" }),
598
+ // Locked shapes are click-through, so the regular selection path can't
599
+ // reach them — Unlock resolves the shape under the right-click point via
600
+ // the dedicated locked-aware lookup instead.
601
+ {
602
+ kind: "action",
603
+ id: "unlock-element",
604
+ label: "Unlock",
605
+ visible: (e, ctx) => !e.readOnly && e.lockedElementAt(ctx.worldPoint) !== null,
606
+ onClick: (e, ctx) => {
607
+ const shape = e.lockedElementAt(ctx.worldPoint);
608
+ if (shape)
609
+ e.unlockElement(shape.id);
610
+ },
611
+ },
612
+ { kind: "divider" },
613
+ // --- Delete last. Viewport (zoom) and clear-canvas are NOT here: the
614
+ // static zoom bar / main menu already carry them. ---
615
+ actionMenuItem("delete-selection", { label: "Delete" }),
616
+ ];
617
+ //# sourceMappingURL=context-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-menu.js","sourceRoot":"","sources":["../../src/menus/context-menu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-drop-shape-menu.d.ts","sourceRoot":"","sources":["../../src/menus/link-drop-shape-menu.tsx"],"names":[],"mappings":"AAMA;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,0CA4E7B,CAAC"}