js-draw 1.24.2 → 1.26.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +15 -15
  3. package/dist/Editor.css +1 -1935
  4. package/dist/bundle.js +473 -4
  5. package/dist/bundledStyles.js +1 -1
  6. package/dist/cjs/Editor.d.ts +12 -0
  7. package/dist/cjs/Editor.js +2 -1
  8. package/dist/cjs/bundle/bundled.js +2 -1
  9. package/dist/cjs/commands/invertCommand.test.d.ts +1 -0
  10. package/dist/cjs/image/EditorImage.d.ts +2 -1
  11. package/dist/cjs/image/EditorImage.js +21 -6
  12. package/dist/cjs/testing/fillHtmlInput.d.ts +6 -0
  13. package/dist/cjs/testing/fillHtmlInput.js +22 -0
  14. package/dist/cjs/testing/sendKeyPressRelease.d.ts +2 -2
  15. package/dist/cjs/testing/sendKeyPressRelease.js +15 -3
  16. package/dist/cjs/toolbar/AbstractToolbar.js +9 -2
  17. package/dist/cjs/toolbar/widgets/BaseWidget.js +6 -1
  18. package/dist/cjs/toolbar/widgets/HandToolWidget.js +3 -3
  19. package/dist/cjs/tools/PasteHandler.d.ts +1 -1
  20. package/dist/cjs/tools/PasteHandler.js +12 -4
  21. package/dist/cjs/tools/PasteHandler.test.d.ts +1 -0
  22. package/dist/cjs/tools/SelectionTool/Selection.js +11 -6
  23. package/dist/cjs/tools/SelectionTool/SelectionMenuShortcut.d.ts +3 -1
  24. package/dist/cjs/tools/SelectionTool/SelectionMenuShortcut.js +13 -4
  25. package/dist/cjs/tools/TextTool.js +9 -2
  26. package/dist/cjs/util/ClipboardHandler.js +23 -1
  27. package/dist/cjs/util/assertions.d.ts +7 -6
  28. package/dist/cjs/util/assertions.js +35 -29
  29. package/dist/cjs/version.js +1 -1
  30. package/dist/mjs/Editor.d.ts +12 -0
  31. package/dist/mjs/Editor.mjs +2 -1
  32. package/dist/mjs/bundle/bundled.mjs +2 -1
  33. package/dist/mjs/commands/invertCommand.test.d.ts +1 -0
  34. package/dist/mjs/image/EditorImage.d.ts +2 -1
  35. package/dist/mjs/image/EditorImage.mjs +21 -6
  36. package/dist/mjs/testing/fillHtmlInput.d.ts +6 -0
  37. package/dist/mjs/testing/fillHtmlInput.mjs +17 -0
  38. package/dist/mjs/testing/sendKeyPressRelease.d.ts +2 -2
  39. package/dist/mjs/testing/sendKeyPressRelease.mjs +12 -3
  40. package/dist/mjs/toolbar/AbstractToolbar.mjs +9 -2
  41. package/dist/mjs/toolbar/widgets/BaseWidget.mjs +6 -1
  42. package/dist/mjs/toolbar/widgets/HandToolWidget.mjs +3 -3
  43. package/dist/mjs/tools/PasteHandler.d.ts +1 -1
  44. package/dist/mjs/tools/PasteHandler.mjs +12 -4
  45. package/dist/mjs/tools/PasteHandler.test.d.ts +1 -0
  46. package/dist/mjs/tools/SelectionTool/Selection.mjs +11 -6
  47. package/dist/mjs/tools/SelectionTool/SelectionMenuShortcut.d.ts +3 -1
  48. package/dist/mjs/tools/SelectionTool/SelectionMenuShortcut.mjs +13 -4
  49. package/dist/mjs/tools/TextTool.mjs +9 -2
  50. package/dist/mjs/util/ClipboardHandler.mjs +23 -1
  51. package/dist/mjs/util/assertions.d.ts +7 -6
  52. package/dist/mjs/util/assertions.mjs +28 -24
  53. package/dist/mjs/version.mjs +1 -1
  54. package/package.json +4 -4
  55. package/src/tools/SelectionTool/SelectionTool.scss +11 -1
  56. package/src/tools/util/createMenuOverlay.scss +2 -1
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2023-2024 Henry Heino
3
+ Copyright (c) 2023-2025 Henry Heino
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  <h1 align="center">js-draw</h1>
6
6
  <div align="center">
7
7
 
8
- [NPM package](https://www.npmjs.com/package/js-draw) | [GitHub](https://github.com/personalizedrefrigerator/js-draw) | [Documentation](https://personalizedrefrigerator.github.io/js-draw/typedoc/modules/js_draw.html) | [Try it!](https://personalizedrefrigerator.github.io/js-draw/example/example.html)
8
+ [NPM package](https://www.npmjs.com/package/js-draw) | [GitHub](https://github.com/personalizedrefrigerator/js-draw) | [Documentation](https://personalizedrefrigerator.github.io/js-draw/typedoc/modules/js-draw.html) | [Try it!](https://personalizedrefrigerator.github.io/js-draw/example/example.html)
9
9
 
10
10
  </div>
11
11
 
@@ -17,7 +17,7 @@ For example usage, see [one of the examples](https://github.com/personalizedrefr
17
17
 
18
18
  ## Very large zoom range
19
19
 
20
- A core feature of `js-draw` is its [large zoom range](https://personalizedrefrigerator.github.io/js-draw/typedoc/interfaces/js_draw.EditorSettings.html#maxZoom) (from roughly 10⁻¹⁰x to 10¹⁰x).
20
+ A core feature of `js-draw` is its [large zoom range](https://personalizedrefrigerator.github.io/js-draw/typedoc/interfaces/js-draw.EditorSettings.html#maxZoom) (from roughly 10⁻¹⁰x to 10¹⁰x).
21
21
 
22
22
  <details open><summary><strong>Demo</strong></summary>
23
23
 
@@ -25,7 +25,7 @@ A core feature of `js-draw` is its [large zoom range](https://personalizedrefrig
25
25
 
26
26
  </details>
27
27
 
28
- Applications using `js-draw` can adjust this zoom range with custom [EditorSettings](https://personalizedrefrigerator.github.io/js-draw/typedoc/interfaces/js_draw.EditorSettings.html).
28
+ Applications using `js-draw` can adjust this zoom range with custom [EditorSettings](https://personalizedrefrigerator.github.io/js-draw/typedoc/interfaces/js-draw.EditorSettings.html).
29
29
 
30
30
  ## Touchscreen and stylus support
31
31
 
@@ -37,7 +37,7 @@ Applications using `js-draw` can adjust this zoom range with custom [EditorSetti
37
37
 
38
38
  </details>
39
39
 
40
- It's also possible to disable touch drawing. This can be useful when drawing with a stylus and can be done with either [PanZoomTool.setMode](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js_draw.PanZoomTool.html#setMode) or, by a user, with the "hand" tool menu:
40
+ It's also possible to disable touch drawing. This can be useful when drawing with a stylus and can be done with either [PanZoomTool.setMode](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js-draw.PanZoomTool.html#setMode) or, by a user, with the "hand" tool menu:
41
41
 
42
42
  <img alt="screenshot: Hand tool menu at the bottom of the screen includes 'lock rotation' and 'touchscreen panning'. 'Touchscreen panning' is highlighted." src="https://github.com/personalizedrefrigerator/js-draw/assets/46334387/d96e2df5-6132-4122-954d-d25402754bc2" width="400"/>
43
43
 
@@ -68,7 +68,7 @@ It's possible for applications using `js-draw` to [add custom pen types](https:/
68
68
 
69
69
  ### With a bundler that supports importing `.css` files
70
70
 
71
- To create a new `Editor` and add it as a child of `document.body`, use the [Editor](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js_draw.Editor.html#constructor) constructor:
71
+ To create a new `Editor` and add it as a child of `document.body`, use the [Editor](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js-draw.Editor.html#constructor) constructor:
72
72
 
73
73
  ```ts
74
74
  import Editor from 'js-draw';
@@ -116,7 +116,7 @@ To create a toolbar with buttons for the default tools:
116
116
  const toolbar = editor.addToolbar();
117
117
  ```
118
118
 
119
- Save and exit buttons can be added with the [`.addSaveButton`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js_draw.AbstractToolbar.html#addSaveButton) and [`.addExitButton`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js_draw.AbstractToolbar.html#addExitButton) methods:
119
+ Save and exit buttons can be added with the [`.addSaveButton`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js-draw.AbstractToolbar.html#addSaveButton) and [`.addExitButton`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js-draw.AbstractToolbar.html#addExitButton) methods:
120
120
 
121
121
  ```ts
122
122
  toolbar.addSaveButton(() => {
@@ -195,7 +195,7 @@ which **does** contain the `<circle/>` element.
195
195
 
196
196
  ## Customizing the background
197
197
 
198
- The background color and style can be customized with [editor.setBackgroundStyle](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js_draw.Editor.html#setBackgroundStyle). For example,
198
+ The background color and style can be customized with [editor.setBackgroundStyle](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js-draw.Editor.html#setBackgroundStyle). For example,
199
199
 
200
200
  ```ts
201
201
  import { Editor, Color4, BackgroundComponentBackgroundType } from 'js-draw';
@@ -209,9 +209,9 @@ editor.dispatch(
209
209
  );
210
210
  ```
211
211
 
212
- Above, we use `editor.dispatch` because `setBackgroundStyle` returns a [`Command`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js_draw.Command.html), rather than changing the background style directly. `js-draw` uses `Command`s to track actions that can be undone and redone.
212
+ Above, we use `editor.dispatch` because `setBackgroundStyle` returns a [`Command`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js-draw.Command.html), rather than changing the background style directly. `js-draw` uses `Command`s to track actions that can be undone and redone.
213
213
 
214
- By default, `.dispatch` adds `Command`s to the undo stack. To avoid this, pass `false` for the second parameter to [`.dispatch`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js_draw.Editor.html#dispatch):
214
+ By default, `.dispatch` adds `Command`s to the undo stack. To avoid this, pass `false` for the second parameter to [`.dispatch`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js-draw.Editor.html#dispatch):
215
215
 
216
216
  ```ts
217
217
  const addToHistory = false;
@@ -226,7 +226,7 @@ editor.dispatch(
226
226
 
227
227
  ### Making the background fill the screen
228
228
 
229
- By default, the background has a fixed size and marks the region that will be saved by [`.toSVG`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js_draw.Editor.html#toSVG) or [`.toDataURL`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js_draw.Editor.html#toDataURL). It's possible to make the background auto-resize to the content of the image with [`editor.image.setAutoresizeEnabled(true)`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js_draw.EditorImage.html#setAutoresizeEnabled):
229
+ By default, the background has a fixed size and marks the region that will be saved by [`.toSVG`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js-draw.Editor.html#toSVG) or [`.toDataURL`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js-draw.Editor.html#toDataURL). It's possible to make the background auto-resize to the content of the image with [`editor.image.setAutoresizeEnabled(true)`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js-draw.EditorImage.html#setAutoresizeEnabled):
230
230
 
231
231
  ```ts
232
232
  const editor = new Editor(document.body);
@@ -240,11 +240,11 @@ editor.dispatch(editor.setBackgroundStyle({ autoresize: true }), addToHistory);
240
240
 
241
241
  ## Saving
242
242
 
243
- To save as an SVG, use [`editor.toSVG()`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js_draw.Editor.html#toSVG), which returns an `HTMLSVGElement`. Alternatively, if working with very large images that need to be saved in the background, consider using [`editor.toSVGAsync()`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js_draw.Editor.html#toSVG).
243
+ To save as an SVG, use [`editor.toSVG()`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js-draw.Editor.html#toSVG), which returns an `HTMLSVGElement`. Alternatively, if working with very large images that need to be saved in the background, consider using [`editor.toSVGAsync()`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js-draw.Editor.html#toSVG).
244
244
 
245
- It's also possible to render the editor to a PNG or JPEG data URL. This can be done with [`editor.toDataURL()`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js_draw.Editor.html#toDataURL).
245
+ It's also possible to render the editor to a PNG or JPEG data URL. This can be done with [`editor.toDataURL()`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js-draw.Editor.html#toDataURL).
246
246
 
247
- The region of the image that will be saved can be changed by calling [`editor.image.setImportExportRect`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js_draw.Editor.html#setImportExportRect) or
247
+ The region of the image that will be saved can be changed by calling [`editor.image.setImportExportRect`](https://personalizedrefrigerator.github.io/js-draw/typedoc/classes/js-draw.Editor.html#setImportExportRect) or
248
248
 
249
249
  ## Settings/configuration
250
250
 
@@ -407,11 +407,11 @@ body .imageEditorContainer {
407
407
 
408
408
  disables the dark theme and creates a theme that primarily uses yellow/green colors.
409
409
 
410
- See also [adjustEditorThemeForContrast](https://personalizedrefrigerator.github.io/js-draw/typedoc/functions/js_draw.adjustEditorThemeForContrast.html).
410
+ See also [adjustEditorThemeForContrast](https://personalizedrefrigerator.github.io/js-draw/typedoc/functions/js-draw.adjustEditorThemeForContrast.html).
411
411
 
412
412
  # Examples and resources
413
413
 
414
414
  - [Examples](https://github.com/personalizedrefrigerator/js-draw/blob/main/docs/examples.md)
415
415
  - [How to add a custom pen type](https://personalizedrefrigerator.github.io/js-draw/typedoc/modules/Additional_Documentation.CustomizingTools__.html#md:adding-a-new-pen-type)
416
- - [A material icon theme for js-draw](https://personalizedrefrigerator.github.io/js-draw/typedoc/modules/_js_draw_material_icons.html#md:js-drawmaterial-icons)
416
+ - [A material icon theme for js-draw](https://personalizedrefrigerator.github.io/js-draw/typedoc/modules/_js-draw_material-icons.html#md:js-drawmaterial-icons)
417
417
  - [More documentation](https://personalizedrefrigerator.github.io/js-draw/typedoc/modules/Guides.html)