js-draw 1.3.1 → 1.4.1

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 (170) hide show
  1. package/README.md +2 -2
  2. package/dist/Editor.css +55 -13
  3. package/dist/bundle.js +2 -2
  4. package/dist/bundledStyles.js +1 -1
  5. package/dist/cjs/Editor.d.ts +36 -3
  6. package/dist/cjs/Editor.js +63 -26
  7. package/dist/cjs/commands/Erase.js +1 -1
  8. package/dist/cjs/commands/UnresolvedCommand.d.ts +1 -1
  9. package/dist/cjs/components/AbstractComponent.d.ts +1 -1
  10. package/dist/cjs/components/AbstractComponent.js +1 -1
  11. package/dist/cjs/components/BackgroundComponent.d.ts +1 -1
  12. package/dist/cjs/components/BackgroundComponent.js +13 -7
  13. package/dist/cjs/components/SVGGlobalAttributesObject.d.ts +2 -2
  14. package/dist/cjs/components/SVGGlobalAttributesObject.js +10 -14
  15. package/dist/cjs/{EditorImage.d.ts → image/EditorImage.d.ts} +30 -8
  16. package/dist/cjs/{EditorImage.js → image/EditorImage.js} +51 -7
  17. package/dist/cjs/image/export/adjustExportedSVGSize.d.ts +6 -0
  18. package/dist/cjs/image/export/adjustExportedSVGSize.js +22 -0
  19. package/dist/cjs/image/export/editorImageToSVG.d.ts +8 -0
  20. package/dist/cjs/image/export/editorImageToSVG.js +63 -0
  21. package/dist/cjs/image/lib.d.ts +1 -0
  22. package/dist/cjs/image/lib.js +8 -0
  23. package/dist/cjs/lib.d.ts +1 -1
  24. package/dist/cjs/lib.js +2 -3
  25. package/dist/cjs/localizations/comments.d.ts +6 -0
  26. package/dist/cjs/localizations/comments.js +10 -0
  27. package/dist/cjs/localizations/es.js +68 -48
  28. package/dist/cjs/rendering/caching/RenderingCache.d.ts +1 -1
  29. package/dist/cjs/rendering/caching/RenderingCacheNode.d.ts +1 -1
  30. package/dist/cjs/rendering/caching/RenderingCacheNode.js +4 -3
  31. package/dist/cjs/rendering/renderers/AbstractRenderer.d.ts +1 -0
  32. package/dist/cjs/rendering/renderers/AbstractRenderer.js +8 -0
  33. package/dist/cjs/rendering/renderers/SVGRenderer.d.ts +28 -1
  34. package/dist/cjs/rendering/renderers/SVGRenderer.js +58 -7
  35. package/dist/cjs/toolbar/AbstractToolbar.d.ts +11 -3
  36. package/dist/cjs/toolbar/AbstractToolbar.js +20 -6
  37. package/dist/cjs/toolbar/EdgeToolbar.js +5 -6
  38. package/dist/cjs/toolbar/IconProvider.d.ts +1 -0
  39. package/dist/cjs/toolbar/IconProvider.js +43 -0
  40. package/dist/cjs/toolbar/widgets/ActionButtonWidget.d.ts +3 -1
  41. package/dist/cjs/toolbar/widgets/ActionButtonWidget.js +19 -1
  42. package/dist/cjs/toolbar/widgets/BaseToolWidget.d.ts +1 -0
  43. package/dist/cjs/toolbar/widgets/BaseToolWidget.js +3 -0
  44. package/dist/cjs/toolbar/widgets/BaseWidget.d.ts +5 -0
  45. package/dist/cjs/toolbar/widgets/BaseWidget.js +30 -2
  46. package/dist/cjs/toolbar/widgets/DocumentPropertiesWidget.js +1 -1
  47. package/dist/cjs/toolbar/widgets/HandToolWidget.d.ts +1 -0
  48. package/dist/cjs/toolbar/widgets/HandToolWidget.js +6 -0
  49. package/dist/cjs/toolbar/widgets/InsertImageWidget.js +1 -1
  50. package/dist/cjs/toolbar/widgets/OverflowWidget.d.ts +1 -0
  51. package/dist/cjs/toolbar/widgets/OverflowWidget.js +3 -0
  52. package/dist/cjs/toolbar/widgets/SaveActionWidget.d.ts +1 -0
  53. package/dist/cjs/toolbar/widgets/SaveActionWidget.js +3 -0
  54. package/dist/cjs/tools/BaseTool.d.ts +3 -0
  55. package/dist/cjs/tools/BaseTool.js +13 -2
  56. package/dist/cjs/tools/FindTool.d.ts +1 -0
  57. package/dist/cjs/tools/FindTool.js +4 -1
  58. package/dist/cjs/tools/PanZoom.d.ts +1 -0
  59. package/dist/cjs/tools/PanZoom.js +4 -0
  60. package/dist/cjs/tools/Pen.d.ts +0 -1
  61. package/dist/cjs/tools/Pen.js +1 -4
  62. package/dist/cjs/tools/PipetteTool.d.ts +1 -0
  63. package/dist/cjs/tools/PipetteTool.js +3 -0
  64. package/dist/cjs/tools/SelectionTool/SelectAllShortcutHandler.d.ts +1 -0
  65. package/dist/cjs/tools/SelectionTool/SelectAllShortcutHandler.js +3 -0
  66. package/dist/cjs/tools/SelectionTool/Selection.d.ts +2 -0
  67. package/dist/cjs/tools/SelectionTool/Selection.js +44 -8
  68. package/dist/cjs/tools/SelectionTool/SelectionHandle.d.ts +14 -6
  69. package/dist/cjs/tools/SelectionTool/SelectionHandle.js +26 -8
  70. package/dist/cjs/tools/SelectionTool/SelectionTool.js +5 -0
  71. package/dist/cjs/tools/SoundUITool.d.ts +1 -0
  72. package/dist/cjs/tools/SoundUITool.js +4 -1
  73. package/dist/cjs/tools/TextTool.js +2 -2
  74. package/dist/cjs/tools/ToolController.d.ts +2 -0
  75. package/dist/cjs/tools/ToolController.js +13 -2
  76. package/dist/cjs/tools/ToolSwitcherShortcut.d.ts +1 -0
  77. package/dist/cjs/tools/ToolSwitcherShortcut.js +3 -0
  78. package/dist/cjs/types.d.ts +9 -4
  79. package/dist/cjs/types.js +4 -3
  80. package/dist/cjs/util/ReactiveValue.d.ts +1 -1
  81. package/dist/cjs/util/ReactiveValue.js +2 -2
  82. package/dist/cjs/version.js +1 -1
  83. package/dist/mjs/Editor.d.ts +36 -3
  84. package/dist/mjs/Editor.mjs +64 -27
  85. package/dist/mjs/Editor.toSVGAsync.test.d.ts +1 -0
  86. package/dist/mjs/commands/Erase.mjs +1 -1
  87. package/dist/mjs/commands/UnresolvedCommand.d.ts +1 -1
  88. package/dist/mjs/components/AbstractComponent.d.ts +1 -1
  89. package/dist/mjs/components/AbstractComponent.mjs +1 -1
  90. package/dist/mjs/components/BackgroundComponent.d.ts +1 -1
  91. package/dist/mjs/components/BackgroundComponent.mjs +13 -7
  92. package/dist/mjs/components/SVGGlobalAttributesObject.d.ts +2 -2
  93. package/dist/mjs/components/SVGGlobalAttributesObject.mjs +10 -14
  94. package/dist/mjs/{EditorImage.d.ts → image/EditorImage.d.ts} +30 -8
  95. package/dist/mjs/{EditorImage.mjs → image/EditorImage.mjs} +51 -7
  96. package/dist/mjs/image/EditorImage.test.d.ts +1 -0
  97. package/dist/mjs/image/export/adjustExportedSVGSize.d.ts +6 -0
  98. package/dist/mjs/image/export/adjustExportedSVGSize.mjs +20 -0
  99. package/dist/mjs/image/export/editorImageToSVG.d.ts +8 -0
  100. package/dist/mjs/image/export/editorImageToSVG.mjs +55 -0
  101. package/dist/mjs/image/lib.d.ts +1 -0
  102. package/dist/mjs/image/lib.mjs +1 -0
  103. package/dist/mjs/lib.d.ts +1 -1
  104. package/dist/mjs/lib.mjs +1 -1
  105. package/dist/mjs/localizations/comments.d.ts +6 -0
  106. package/dist/mjs/localizations/comments.mjs +8 -0
  107. package/dist/mjs/localizations/es.mjs +68 -48
  108. package/dist/mjs/rendering/caching/RenderingCache.d.ts +1 -1
  109. package/dist/mjs/rendering/caching/RenderingCacheNode.d.ts +1 -1
  110. package/dist/mjs/rendering/caching/RenderingCacheNode.mjs +4 -3
  111. package/dist/mjs/rendering/renderers/AbstractRenderer.d.ts +1 -0
  112. package/dist/mjs/rendering/renderers/AbstractRenderer.mjs +8 -0
  113. package/dist/mjs/rendering/renderers/SVGRenderer.d.ts +28 -1
  114. package/dist/mjs/rendering/renderers/SVGRenderer.mjs +58 -7
  115. package/dist/mjs/toolbar/AbstractToolbar.d.ts +11 -3
  116. package/dist/mjs/toolbar/AbstractToolbar.mjs +20 -6
  117. package/dist/mjs/toolbar/EdgeToolbar.mjs +5 -6
  118. package/dist/mjs/toolbar/IconProvider.d.ts +1 -0
  119. package/dist/mjs/toolbar/IconProvider.mjs +43 -0
  120. package/dist/mjs/toolbar/widgets/ActionButtonWidget.d.ts +3 -1
  121. package/dist/mjs/toolbar/widgets/ActionButtonWidget.mjs +21 -2
  122. package/dist/mjs/toolbar/widgets/BaseToolWidget.d.ts +1 -0
  123. package/dist/mjs/toolbar/widgets/BaseToolWidget.mjs +3 -0
  124. package/dist/mjs/toolbar/widgets/BaseWidget.d.ts +5 -0
  125. package/dist/mjs/toolbar/widgets/BaseWidget.mjs +30 -2
  126. package/dist/mjs/toolbar/widgets/DocumentPropertiesWidget.mjs +1 -1
  127. package/dist/mjs/toolbar/widgets/HandToolWidget.d.ts +1 -0
  128. package/dist/mjs/toolbar/widgets/HandToolWidget.mjs +6 -0
  129. package/dist/mjs/toolbar/widgets/InsertImageWidget.mjs +1 -1
  130. package/dist/mjs/toolbar/widgets/OverflowWidget.d.ts +1 -0
  131. package/dist/mjs/toolbar/widgets/OverflowWidget.mjs +3 -0
  132. package/dist/mjs/toolbar/widgets/SaveActionWidget.d.ts +1 -0
  133. package/dist/mjs/toolbar/widgets/SaveActionWidget.mjs +3 -0
  134. package/dist/mjs/tools/BaseTool.d.ts +3 -0
  135. package/dist/mjs/tools/BaseTool.mjs +13 -2
  136. package/dist/mjs/tools/FindTool.d.ts +1 -0
  137. package/dist/mjs/tools/FindTool.mjs +4 -1
  138. package/dist/mjs/tools/PanZoom.d.ts +1 -0
  139. package/dist/mjs/tools/PanZoom.mjs +4 -0
  140. package/dist/mjs/tools/Pen.d.ts +0 -1
  141. package/dist/mjs/tools/Pen.mjs +1 -4
  142. package/dist/mjs/tools/PipetteTool.d.ts +1 -0
  143. package/dist/mjs/tools/PipetteTool.mjs +3 -0
  144. package/dist/mjs/tools/SelectionTool/SelectAllShortcutHandler.d.ts +1 -0
  145. package/dist/mjs/tools/SelectionTool/SelectAllShortcutHandler.mjs +3 -0
  146. package/dist/mjs/tools/SelectionTool/Selection.d.ts +2 -0
  147. package/dist/mjs/tools/SelectionTool/Selection.mjs +45 -9
  148. package/dist/mjs/tools/SelectionTool/SelectionHandle.d.ts +14 -6
  149. package/dist/mjs/tools/SelectionTool/SelectionHandle.mjs +25 -7
  150. package/dist/mjs/tools/SelectionTool/SelectionTool.mjs +5 -0
  151. package/dist/mjs/tools/SoundUITool.d.ts +1 -0
  152. package/dist/mjs/tools/SoundUITool.mjs +4 -1
  153. package/dist/mjs/tools/TextTool.mjs +2 -2
  154. package/dist/mjs/tools/ToolController.d.ts +2 -0
  155. package/dist/mjs/tools/ToolController.mjs +13 -2
  156. package/dist/mjs/tools/ToolSwitcherShortcut.d.ts +1 -0
  157. package/dist/mjs/tools/ToolSwitcherShortcut.mjs +3 -0
  158. package/dist/mjs/types.d.ts +9 -4
  159. package/dist/mjs/types.mjs +4 -3
  160. package/dist/mjs/util/ReactiveValue.d.ts +1 -1
  161. package/dist/mjs/util/ReactiveValue.mjs +2 -2
  162. package/dist/mjs/version.mjs +1 -1
  163. package/package.json +5 -5
  164. package/src/Editor.scss +6 -0
  165. package/src/toolbar/EdgeToolbar.scss +19 -2
  166. package/src/tools/SelectionTool/SelectionTool.scss +74 -0
  167. package/src/tools/tools.scss +1 -1
  168. package/src/tools/SelectionTool/SelectionTool.css +0 -35
  169. /package/dist/cjs/{EditorImage.test.d.ts → Editor.toSVGAsync.test.d.ts} +0 -0
  170. /package/dist/{mjs → cjs/image}/EditorImage.test.d.ts +0 -0
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ![](docs/img/readme-images/js-draw.jpg)
6
6
 
7
- For example usage, see [one of the examples](https://github.com/personalizedrefrigerator/js-draw/blob/main/docs/examples.md) or read [the documentation](https://personalizedrefrigerator.github.io/js-draw/typedoc/modules/lib.html).
7
+ For example usage, see [one of the examples](https://github.com/personalizedrefrigerator/js-draw/blob/main/docs/examples.md) or read [the documentation](https://personalizedrefrigerator.github.io/js-draw/typedoc/).
8
8
 
9
9
  If you're coming from version 0.25, [read the migration guide!](https://js-draw.web.app/typedoc/modules/Additional_Documentation.MigratingToVersion1__.html)
10
10
 
@@ -41,7 +41,7 @@ const editor = new Editor(document.body);
41
41
 
42
42
  If you're not using a bundler, consider using the pre-bundled editor:
43
43
  ```html
44
- <!-- Replace 0.20.0 with the latest version of js-draw -->
44
+ <!-- Replace 1.0.0 with the latest version of js-draw -->
45
45
  <script src="https://cdn.jsdelivr.net/npm/js-draw@1.0.0/dist/bundle.js"></script>
46
46
  <script>
47
47
  const editor = new jsdraw.Editor(document.body);
package/dist/Editor.css CHANGED
@@ -527,19 +527,24 @@
527
527
  --button-label-hover-offset-y: var(--label-hover-offset-size);
528
528
  --button-label-hover-offset-x: 0;
529
529
  }
530
- @media screen and (min-width: 610px) {
530
+ @media screen and (min-width: 540px) {
531
531
  .toolbar-edge-toolbar {
532
532
  flex-wrap: nowrap;
533
533
  }
534
534
  .toolbar-edge-toolbar > .toolbar-action-row {
535
535
  max-width: 50vw;
536
+ flex-grow: 0;
537
+ flex-shrink: 0;
536
538
  }
537
539
  }
538
540
  @media screen and (max-width: 700px) {
539
541
  .toolbar-edge-toolbar.one-row > * > .toolbar-toolContainer.label-inline {
540
542
  font-size: 0.9em;
541
543
  }
542
- .toolbar-edge-toolbar.one-row > * > .toolbar-toolContainer.label-inline .toolbar-button label {
544
+ .toolbar-edge-toolbar.one-row > * > .toolbar-toolContainer.label-inline > .toolbar-button {
545
+ width: var(--toolbar-button-size);
546
+ }
547
+ .toolbar-edge-toolbar.one-row > * > .toolbar-toolContainer.label-inline > .toolbar-button label {
543
548
  opacity: 0;
544
549
  animation: 0.2s linear hide-initially;
545
550
  }
@@ -583,25 +588,25 @@
583
588
  }
584
589
  }
585
590
  @media screen and (max-width: 700px) and (hover: hover) {
586
- .toolbar-edge-toolbar.one-row > * > .toolbar-toolContainer.label-inline .toolbar-button:hover > label {
591
+ .toolbar-edge-toolbar.one-row > * > .toolbar-toolContainer.label-inline > .toolbar-button:hover > label {
587
592
  opacity: 0.8;
588
593
  animation: 1s ease show-label;
589
594
  }
590
595
  }
591
596
  @media screen and (max-width: 700px) {
592
- .toolbar-edge-toolbar.one-row > * > .toolbar-toolContainer.label-inline .toolbar-button:active > label {
597
+ .toolbar-edge-toolbar.one-row > * > .toolbar-toolContainer.label-inline > .toolbar-button:active > label {
593
598
  opacity: 0.8;
594
599
  animation: 0.5s ease show-label;
595
600
  }
596
- .toolbar-edge-toolbar.one-row > * > .toolbar-toolContainer.label-inline .toolbar-button:focus-visible > label {
601
+ .toolbar-edge-toolbar.one-row > * > .toolbar-toolContainer.label-inline > .toolbar-button:focus-visible > label {
597
602
  animation: 1.5s ease rehide-label;
598
603
  opacity: 0;
599
604
  }
600
- .toolbar-edge-toolbar.one-row > * > .toolbar-toolContainer.label-inline .toolbar-button:has(:focus-visible) > label {
605
+ .toolbar-edge-toolbar.one-row > * > .toolbar-toolContainer.label-inline > .toolbar-button:has(:focus-visible) > label {
601
606
  animation: 1.5s ease rehide-label;
602
607
  opacity: 0;
603
608
  }
604
- .toolbar-edge-toolbar.one-row > * > .toolbar-toolContainer.label-inline .toolbar-button > label {
609
+ .toolbar-edge-toolbar.one-row > * > .toolbar-toolContainer.label-inline > .toolbar-button > label {
605
610
  opacity: 0;
606
611
  position: absolute;
607
612
  margin-top: var(--button-label-hover-offset-y);
@@ -615,10 +620,16 @@
615
620
  }
616
621
  }
617
622
  @media screen and (max-width: 700px) and (prefers-reduced-motion: reduce) {
618
- .toolbar-edge-toolbar.one-row > * > .toolbar-toolContainer.label-inline .toolbar-button > label {
623
+ .toolbar-edge-toolbar.one-row > * > .toolbar-toolContainer.label-inline > .toolbar-button > label {
619
624
  transition: none;
620
625
  }
621
626
  }
627
+ @media screen and (max-width: 700px) {
628
+ .toolbar-edge-toolbar.one-row > * > .toolbar-toolContainer.label-inline > .toolbar-button > .toolbar-icon.toolbar-icon {
629
+ margin-left: 0;
630
+ margin-right: 0;
631
+ }
632
+ }
622
633
  .toolbar-edge-toolbar > div.toolbar-element {
623
634
  flex-direction: row;
624
635
  display: flex;
@@ -1081,12 +1092,39 @@
1081
1092
  border: 1px solid var(--foreground-color-1);
1082
1093
  background: var(--background-color-1);
1083
1094
  position: absolute;
1084
- cursor: grab;
1095
+ box-sizing: border-box;
1096
+ padding: 3px;
1097
+ }
1098
+ .selection-tool-handle .icon {
1099
+ width: 100%;
1100
+ height: 100%;
1085
1101
  }
1086
-
1087
1102
  .selection-tool-handle.selection-tool-circle {
1088
1103
  border-radius: 100%;
1089
1104
  }
1105
+ .selection-tool-handle.selection-tool-rotate {
1106
+ cursor: grab;
1107
+ }
1108
+
1109
+ .selection-tool-handle.selection-tool-resize-x {
1110
+ cursor: ew-resize;
1111
+ }
1112
+ .selection-tool-handle.selection-tool-resize-y {
1113
+ cursor: ns-resize;
1114
+ }
1115
+ .selection-tool-handle.selection-tool-resize-xy {
1116
+ cursor: nw-resize;
1117
+ }
1118
+
1119
+ .selection-tool-rotated-near-perpendicular .selection-tool-handle.selection-tool-resize-x {
1120
+ cursor: ns-resize;
1121
+ }
1122
+ .selection-tool-rotated-near-perpendicular .selection-tool-handle.selection-tool-resize-y {
1123
+ cursor: ew-resize;
1124
+ }
1125
+ .selection-tool-rotated-near-perpendicular .selection-tool-handle.selection-tool-resize-xy {
1126
+ cursor: sw-resize;
1127
+ }
1090
1128
 
1091
1129
  .overlay.handleOverlay {
1092
1130
  height: 0;
@@ -1095,13 +1133,13 @@
1095
1133
 
1096
1134
  @keyframes selection-duplicated-animation {
1097
1135
  0% {
1098
- transform: scale(1, 1);
1136
+ scale: 1 1;
1099
1137
  }
1100
1138
  50% {
1101
- transform: scale(1.02, 1.02);
1139
+ scale: 1.02 1.02;
1102
1140
  }
1103
1141
  100% {
1104
- transform: scale(1, 1);
1142
+ scale: 1 1;
1105
1143
  }
1106
1144
  }
1107
1145
  /* Do not run the animation when the user has disabled motion animations. */
@@ -1268,6 +1306,10 @@ visible.
1268
1306
  --primary-action-foreground-color: #7ae;
1269
1307
  }
1270
1308
  }
1309
+ .imageEditorContainer {
1310
+ --icon-color: var(--foreground-color-1);
1311
+ }
1312
+
1271
1313
  .imageEditorContainer {
1272
1314
  color: var(--foreground-color-1);
1273
1315
  font-family: system-ui, -apple-system, sans-serif;