js-draw 1.21.2 → 1.21.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (183) hide show
  1. package/dist/bundle.js +1 -1
  2. package/dist/cjs/tools/BaseTool.d.ts +61 -0
  3. package/dist/cjs/tools/BaseTool.js +179 -0
  4. package/dist/cjs/tools/Eraser.d.ts +60 -0
  5. package/dist/cjs/tools/Eraser.js +299 -0
  6. package/dist/cjs/tools/Eraser.test.d.ts +1 -0
  7. package/dist/cjs/tools/FindTool.d.ts +21 -0
  8. package/dist/cjs/tools/FindTool.js +137 -0
  9. package/dist/cjs/tools/FindTool.test.d.ts +1 -0
  10. package/dist/cjs/tools/InputFilter/ContextMenuRecognizer.d.ts +17 -0
  11. package/dist/cjs/tools/InputFilter/ContextMenuRecognizer.js +105 -0
  12. package/dist/cjs/tools/InputFilter/ContextMenuRecognizer.test.d.ts +1 -0
  13. package/dist/cjs/tools/InputFilter/FunctionMapper.d.ts +12 -0
  14. package/dist/cjs/tools/InputFilter/FunctionMapper.js +21 -0
  15. package/dist/cjs/tools/InputFilter/InputMapper.d.ts +23 -0
  16. package/dist/cjs/tools/InputFilter/InputMapper.js +38 -0
  17. package/dist/cjs/tools/InputFilter/InputPipeline.d.ts +15 -0
  18. package/dist/cjs/tools/InputFilter/InputPipeline.js +54 -0
  19. package/dist/cjs/tools/InputFilter/InputPipeline.test.d.ts +1 -0
  20. package/dist/cjs/tools/InputFilter/InputStabilizer.d.ts +29 -0
  21. package/dist/cjs/tools/InputFilter/InputStabilizer.js +181 -0
  22. package/dist/cjs/tools/InputFilter/StrokeKeyboardControl.d.ts +21 -0
  23. package/dist/cjs/tools/InputFilter/StrokeKeyboardControl.js +84 -0
  24. package/dist/cjs/tools/PanZoom.d.ts +125 -0
  25. package/dist/cjs/tools/PanZoom.js +517 -0
  26. package/dist/cjs/tools/PanZoom.test.d.ts +1 -0
  27. package/dist/cjs/tools/PasteHandler.d.ts +23 -0
  28. package/dist/cjs/tools/PasteHandler.js +109 -0
  29. package/dist/cjs/tools/Pen.d.ts +54 -0
  30. package/dist/cjs/tools/Pen.js +335 -0
  31. package/dist/cjs/tools/Pen.test.d.ts +1 -0
  32. package/dist/cjs/tools/PipetteTool.d.ts +28 -0
  33. package/dist/cjs/tools/PipetteTool.js +69 -0
  34. package/dist/cjs/tools/ScrollbarTool.d.ts +18 -0
  35. package/dist/cjs/tools/ScrollbarTool.js +85 -0
  36. package/dist/cjs/tools/SelectionTool/SelectAllShortcutHandler.d.ts +9 -0
  37. package/dist/cjs/tools/SelectionTool/SelectAllShortcutHandler.js +32 -0
  38. package/dist/cjs/tools/SelectionTool/Selection.d.ts +72 -0
  39. package/dist/cjs/tools/SelectionTool/Selection.js +634 -0
  40. package/dist/cjs/tools/SelectionTool/SelectionHandle.d.ts +62 -0
  41. package/dist/cjs/tools/SelectionTool/SelectionHandle.js +141 -0
  42. package/dist/cjs/tools/SelectionTool/SelectionMenuShortcut.d.ts +32 -0
  43. package/dist/cjs/tools/SelectionTool/SelectionMenuShortcut.js +86 -0
  44. package/dist/cjs/tools/SelectionTool/SelectionTool.d.ts +42 -0
  45. package/dist/cjs/tools/SelectionTool/SelectionTool.js +500 -0
  46. package/dist/cjs/tools/SelectionTool/SelectionTool.selecting.test.d.ts +1 -0
  47. package/dist/cjs/tools/SelectionTool/SelectionTool.test.d.ts +1 -0
  48. package/dist/cjs/tools/SelectionTool/ToPointerAutoscroller.d.ts +23 -0
  49. package/dist/cjs/tools/SelectionTool/ToPointerAutoscroller.js +83 -0
  50. package/dist/cjs/tools/SelectionTool/TransformMode.d.ts +42 -0
  51. package/dist/cjs/tools/SelectionTool/TransformMode.js +155 -0
  52. package/dist/cjs/tools/SelectionTool/keybindings.d.ts +15 -0
  53. package/dist/cjs/tools/SelectionTool/keybindings.js +38 -0
  54. package/dist/cjs/tools/SelectionTool/types.d.ts +35 -0
  55. package/dist/cjs/tools/SelectionTool/types.js +14 -0
  56. package/dist/cjs/tools/SelectionTool/util/makeClipboardErrorHandlers.d.ts +6 -0
  57. package/dist/cjs/tools/SelectionTool/util/makeClipboardErrorHandlers.js +50 -0
  58. package/dist/cjs/tools/SelectionTool/util/showSelectionContextMenu.d.ts +5 -0
  59. package/dist/cjs/tools/SelectionTool/util/showSelectionContextMenu.js +43 -0
  60. package/dist/cjs/tools/SoundUITool.d.ts +26 -0
  61. package/dist/cjs/tools/SoundUITool.js +171 -0
  62. package/dist/cjs/tools/TextTool.d.ts +36 -0
  63. package/dist/cjs/tools/TextTool.js +285 -0
  64. package/dist/cjs/tools/TextTool.test.d.ts +1 -0
  65. package/dist/cjs/tools/ToolController.d.ts +73 -0
  66. package/dist/cjs/tools/ToolController.js +304 -0
  67. package/dist/cjs/tools/ToolController.test.d.ts +1 -0
  68. package/dist/cjs/tools/ToolEnabledGroup.d.ts +6 -0
  69. package/dist/cjs/tools/ToolEnabledGroup.js +13 -0
  70. package/dist/cjs/tools/ToolSwitcherShortcut.d.ts +16 -0
  71. package/dist/cjs/tools/ToolSwitcherShortcut.js +40 -0
  72. package/dist/cjs/tools/ToolbarShortcutHandler.d.ts +12 -0
  73. package/dist/cjs/tools/ToolbarShortcutHandler.js +34 -0
  74. package/dist/cjs/tools/UndoRedoShortcut.d.ts +8 -0
  75. package/dist/cjs/tools/UndoRedoShortcut.js +27 -0
  76. package/dist/cjs/tools/UndoRedoShortcut.test.d.ts +1 -0
  77. package/dist/cjs/tools/keybindings.d.ts +16 -0
  78. package/dist/cjs/tools/keybindings.js +58 -0
  79. package/dist/cjs/tools/lib.d.ts +14 -0
  80. package/dist/cjs/tools/lib.js +36 -0
  81. package/dist/cjs/tools/localization.d.ts +43 -0
  82. package/dist/cjs/tools/localization.js +45 -0
  83. package/dist/cjs/tools/util/StationaryPenDetector.d.ts +25 -0
  84. package/dist/cjs/tools/util/StationaryPenDetector.js +107 -0
  85. package/dist/cjs/tools/util/createMenuOverlay.d.ts +10 -0
  86. package/dist/cjs/tools/util/createMenuOverlay.js +126 -0
  87. package/dist/cjs/tools/util/createMenuOverlay.test.d.ts +1 -0
  88. package/dist/cjs/version.js +1 -1
  89. package/dist/mjs/tools/BaseTool.d.ts +61 -0
  90. package/dist/mjs/tools/BaseTool.mjs +177 -0
  91. package/dist/mjs/tools/Eraser.d.ts +60 -0
  92. package/dist/mjs/tools/Eraser.mjs +292 -0
  93. package/dist/mjs/tools/Eraser.test.d.ts +1 -0
  94. package/dist/mjs/tools/FindTool.d.ts +21 -0
  95. package/dist/mjs/tools/FindTool.mjs +131 -0
  96. package/dist/mjs/tools/FindTool.test.d.ts +1 -0
  97. package/dist/mjs/tools/InputFilter/ContextMenuRecognizer.d.ts +17 -0
  98. package/dist/mjs/tools/InputFilter/ContextMenuRecognizer.mjs +76 -0
  99. package/dist/mjs/tools/InputFilter/ContextMenuRecognizer.test.d.ts +1 -0
  100. package/dist/mjs/tools/InputFilter/FunctionMapper.d.ts +12 -0
  101. package/dist/mjs/tools/InputFilter/FunctionMapper.mjs +15 -0
  102. package/dist/mjs/tools/InputFilter/InputMapper.d.ts +23 -0
  103. package/dist/mjs/tools/InputFilter/InputMapper.mjs +36 -0
  104. package/dist/mjs/tools/InputFilter/InputPipeline.d.ts +15 -0
  105. package/dist/mjs/tools/InputFilter/InputPipeline.mjs +49 -0
  106. package/dist/mjs/tools/InputFilter/InputPipeline.test.d.ts +1 -0
  107. package/dist/mjs/tools/InputFilter/InputStabilizer.d.ts +29 -0
  108. package/dist/mjs/tools/InputFilter/InputStabilizer.mjs +175 -0
  109. package/dist/mjs/tools/InputFilter/StrokeKeyboardControl.d.ts +21 -0
  110. package/dist/mjs/tools/InputFilter/StrokeKeyboardControl.mjs +78 -0
  111. package/dist/mjs/tools/PanZoom.d.ts +125 -0
  112. package/dist/mjs/tools/PanZoom.mjs +510 -0
  113. package/dist/mjs/tools/PanZoom.test.d.ts +1 -0
  114. package/dist/mjs/tools/PasteHandler.d.ts +23 -0
  115. package/dist/mjs/tools/PasteHandler.mjs +103 -0
  116. package/dist/mjs/tools/Pen.d.ts +54 -0
  117. package/dist/mjs/tools/Pen.mjs +306 -0
  118. package/dist/mjs/tools/Pen.test.d.ts +1 -0
  119. package/dist/mjs/tools/PipetteTool.d.ts +28 -0
  120. package/dist/mjs/tools/PipetteTool.mjs +63 -0
  121. package/dist/mjs/tools/ScrollbarTool.d.ts +18 -0
  122. package/dist/mjs/tools/ScrollbarTool.mjs +79 -0
  123. package/dist/mjs/tools/SelectionTool/SelectAllShortcutHandler.d.ts +9 -0
  124. package/dist/mjs/tools/SelectionTool/SelectAllShortcutHandler.mjs +26 -0
  125. package/dist/mjs/tools/SelectionTool/Selection.d.ts +72 -0
  126. package/dist/mjs/tools/SelectionTool/Selection.mjs +606 -0
  127. package/dist/mjs/tools/SelectionTool/SelectionHandle.d.ts +62 -0
  128. package/dist/mjs/tools/SelectionTool/SelectionHandle.mjs +137 -0
  129. package/dist/mjs/tools/SelectionTool/SelectionMenuShortcut.d.ts +32 -0
  130. package/dist/mjs/tools/SelectionTool/SelectionMenuShortcut.mjs +83 -0
  131. package/dist/mjs/tools/SelectionTool/SelectionTool.d.ts +42 -0
  132. package/dist/mjs/tools/SelectionTool/SelectionTool.mjs +493 -0
  133. package/dist/mjs/tools/SelectionTool/SelectionTool.selecting.test.d.ts +1 -0
  134. package/dist/mjs/tools/SelectionTool/SelectionTool.test.d.ts +1 -0
  135. package/dist/mjs/tools/SelectionTool/ToPointerAutoscroller.d.ts +23 -0
  136. package/dist/mjs/tools/SelectionTool/ToPointerAutoscroller.mjs +77 -0
  137. package/dist/mjs/tools/SelectionTool/TransformMode.d.ts +42 -0
  138. package/dist/mjs/tools/SelectionTool/TransformMode.mjs +146 -0
  139. package/dist/mjs/tools/SelectionTool/keybindings.d.ts +15 -0
  140. package/dist/mjs/tools/SelectionTool/keybindings.mjs +32 -0
  141. package/dist/mjs/tools/SelectionTool/types.d.ts +35 -0
  142. package/dist/mjs/tools/SelectionTool/types.mjs +11 -0
  143. package/dist/mjs/tools/SelectionTool/util/makeClipboardErrorHandlers.d.ts +6 -0
  144. package/dist/mjs/tools/SelectionTool/util/makeClipboardErrorHandlers.mjs +45 -0
  145. package/dist/mjs/tools/SelectionTool/util/showSelectionContextMenu.d.ts +5 -0
  146. package/dist/mjs/tools/SelectionTool/util/showSelectionContextMenu.mjs +38 -0
  147. package/dist/mjs/tools/SoundUITool.d.ts +26 -0
  148. package/dist/mjs/tools/SoundUITool.mjs +165 -0
  149. package/dist/mjs/tools/TextTool.d.ts +36 -0
  150. package/dist/mjs/tools/TextTool.mjs +279 -0
  151. package/dist/mjs/tools/TextTool.test.d.ts +1 -0
  152. package/dist/mjs/tools/ToolController.d.ts +73 -0
  153. package/dist/mjs/tools/ToolController.mjs +275 -0
  154. package/dist/mjs/tools/ToolController.test.d.ts +1 -0
  155. package/dist/mjs/tools/ToolEnabledGroup.d.ts +6 -0
  156. package/dist/mjs/tools/ToolEnabledGroup.mjs +10 -0
  157. package/dist/mjs/tools/ToolSwitcherShortcut.d.ts +16 -0
  158. package/dist/mjs/tools/ToolSwitcherShortcut.mjs +34 -0
  159. package/dist/mjs/tools/ToolbarShortcutHandler.d.ts +12 -0
  160. package/dist/mjs/tools/ToolbarShortcutHandler.mjs +28 -0
  161. package/dist/mjs/tools/UndoRedoShortcut.d.ts +8 -0
  162. package/dist/mjs/tools/UndoRedoShortcut.mjs +21 -0
  163. package/dist/mjs/tools/UndoRedoShortcut.test.d.ts +1 -0
  164. package/dist/mjs/tools/keybindings.d.ts +16 -0
  165. package/dist/mjs/tools/keybindings.mjs +38 -0
  166. package/dist/mjs/tools/lib.d.ts +14 -0
  167. package/dist/mjs/tools/lib.mjs +14 -0
  168. package/dist/mjs/tools/localization.d.ts +43 -0
  169. package/dist/mjs/tools/localization.mjs +42 -0
  170. package/dist/mjs/tools/util/StationaryPenDetector.d.ts +25 -0
  171. package/dist/mjs/tools/util/StationaryPenDetector.mjs +103 -0
  172. package/dist/mjs/tools/util/createMenuOverlay.d.ts +10 -0
  173. package/dist/mjs/tools/util/createMenuOverlay.mjs +121 -0
  174. package/dist/mjs/tools/util/createMenuOverlay.test.d.ts +1 -0
  175. package/dist/mjs/version.mjs +1 -1
  176. package/package.json +4 -4
  177. package/src/tools/FindTool.css +7 -0
  178. package/src/tools/ScrollbarTool.scss +57 -0
  179. package/src/tools/SelectionTool/SelectionTool.scss +165 -0
  180. package/src/tools/SelectionTool/util/makeClipboardErrorHandlers.scss +15 -0
  181. package/src/tools/SoundUITool.scss +22 -0
  182. package/src/tools/tools.scss +6 -0
  183. package/src/tools/util/createMenuOverlay.scss +67 -0
@@ -0,0 +1,165 @@
1
+ @use "./util/makeClipboardErrorHandlers.scss";
2
+
3
+ .selection-tool-selection-background {
4
+ background-color: var(--selection-background-color);
5
+ opacity: 0.5;
6
+ overflow: visible;
7
+ }
8
+
9
+ .selection-tool-handle {
10
+ position: absolute;
11
+ box-sizing: border-box;
12
+
13
+ // Center content
14
+ display: flex;
15
+ align-items: center;
16
+ justify-content: center;
17
+
18
+ // Maximum size of the visible region (make the handle slightly larger
19
+ // so that the resize cursor is visible everywhere in the actual selection
20
+ // box).
21
+ --max-size: 17px;
22
+
23
+ .selection-tool-content {
24
+ border: 1px solid var(--foreground-color-1);
25
+ background: var(--background-color-1);
26
+ box-sizing: border-box;
27
+
28
+ max-width: var(--max-size);
29
+ max-height: var(--max-size);
30
+ width: 100%;
31
+ height: 100%;
32
+
33
+ display: flex;
34
+ justify-content: center;
35
+ align-items: center;
36
+
37
+ padding: 3px;
38
+ .icon {
39
+ width: 100%;
40
+ height: 100%;
41
+ }
42
+ }
43
+
44
+ &.selection-tool-circle .selection-tool-content {
45
+ border-radius: 100%;
46
+ }
47
+
48
+ &.selection-tool-rotate {
49
+ // Shrink less if a rotation handle
50
+ --max-size: 28px;
51
+
52
+ cursor: grab;
53
+ }
54
+ }
55
+
56
+ .selection-tool-handle {
57
+ &.selection-tool-resize-x {
58
+ cursor: ew-resize;
59
+ }
60
+
61
+ &.selection-tool-resize-y {
62
+ cursor: ns-resize;
63
+ }
64
+
65
+ &.selection-tool-resize-xy {
66
+ cursor: nwse-resize;
67
+ }
68
+ }
69
+
70
+ .selection-tool-rotated-near-perpendicular .selection-tool-handle {
71
+ &.selection-tool-resize-x {
72
+ cursor: ns-resize;
73
+ }
74
+
75
+ &.selection-tool-resize-y {
76
+ cursor: ew-resize;
77
+ }
78
+
79
+ &.selection-tool-resize-xy {
80
+ cursor: nesw-resize;
81
+ }
82
+ }
83
+
84
+ .selection-tool-selection-menu {
85
+ > button {
86
+ max-height: var(--vertical-offset);
87
+ background-color: var(--background-color-1);
88
+ font-size: 14px;
89
+
90
+ color: var(--foreground-color-1);
91
+ border: 0.5px solid var(--foreground-color-1);
92
+ border-radius: 3px;
93
+ padding: 3px;
94
+ opacity: 0.8;
95
+
96
+ &:hover, &:focus-visible {
97
+ background-color: var(--background-color-2);
98
+ color: var(--foreground-color-2);
99
+ cursor: pointer;
100
+ opacity: 1;
101
+ }
102
+
103
+ transition: 0.2s ease opacity;
104
+ }
105
+ }
106
+
107
+ .overlay.handleOverlay {
108
+ touch-action: none;
109
+
110
+ // The selection tool makes some assumptions about margin-left, margin-top,
111
+ // and the initial (unmodified) position of the selection.
112
+ //
113
+ // For now, as we're not showing text in the selection box, force LTR.
114
+ direction: ltr;
115
+
116
+ // When expanding a selection with shift+click&drag, multiple selection boxes
117
+ // can be present in the same handleOverlay. As such, so that other overlayed
118
+ // selection boxes are in the correct place, the outer container needs to have
119
+ // zero height.
120
+ //
121
+ // This is in addition to the overlay container, which needs zero height to prevent
122
+ // other overlay containers from being affected by its size.
123
+ &, .selection-tool-selection-outer-container {
124
+ height: 0;
125
+ overflow: visible;
126
+ }
127
+
128
+ .selection-tool-selection-inner-container {
129
+ width: var(--editor-current-display-width-px);
130
+ height: var(--editor-current-display-height-px);
131
+ overflow: hidden;
132
+
133
+ // Disable pointer events: If the parent (or the container) has
134
+ // captured pointers and the container is removed, this prevents
135
+ // us from receiving the following events (e.g. in Firefox).
136
+ pointer-events: none;
137
+
138
+ & > * {
139
+ // We *do* want pointer events for handles and the background. This
140
+ // allows the mouse cursor to change shape when hovering over resize
141
+ // handles.
142
+ pointer-events: all;
143
+ }
144
+
145
+ &.-empty {
146
+ opacity: 0;
147
+ }
148
+
149
+ &.-hide-handles .selection-tool-handle {
150
+ display: none;
151
+ }
152
+ }
153
+ }
154
+
155
+ @keyframes selection-duplicated-animation {
156
+ 0% { scale: 1 1; }
157
+ 50% { scale: 1.02 1.02; }
158
+ 100% { scale: 1 1; }
159
+ }
160
+
161
+ /* Do not run the animation when the user has disabled motion animations. */
162
+ @media (prefers-reduced-motion: reduce) {
163
+ @keyframes selection-duplicated-animation {
164
+ }
165
+ }
@@ -0,0 +1,15 @@
1
+
2
+ .clipboard-error-dialog {
3
+ details > summary {
4
+ cursor: pointer;
5
+ }
6
+
7
+ details[open] {
8
+ margin-bottom: 12px;
9
+ }
10
+
11
+ textarea {
12
+ width: 100%;
13
+ box-sizing: border-box;
14
+ }
15
+ }
@@ -0,0 +1,22 @@
1
+
2
+ .js-draw-sound-ui-toggle {
3
+ width: 0px;
4
+ height: 0px;
5
+ overflow: hidden;
6
+
7
+ user-select: none;
8
+ -webkit-user-select: none;
9
+ }
10
+
11
+ .js-draw-sound-ui-toggle button {
12
+ margin-top: 1px;
13
+ }
14
+
15
+ .js-draw-sound-ui-toggle:focus-within, .js-draw-sound-ui-toggle.sound-ui-tool-enabled {
16
+ overflow: visible;
17
+ z-index: 5;
18
+ }
19
+
20
+ .js-draw-sound-ui-toggle:not(:focus-within):not(:hover).sound-ui-tool-enabled {
21
+ opacity: 0.5;
22
+ }
@@ -0,0 +1,6 @@
1
+
2
+ @use "./ScrollbarTool.scss";
3
+ @use "./SelectionTool/SelectionTool.scss";
4
+ @use "./FindTool.css";
5
+ @use "./SoundUITool.scss";
6
+ @use "./util/createMenuOverlay.scss";
@@ -0,0 +1,67 @@
1
+
2
+ @keyframes show-popup-menu-animation {
3
+ from { opacity: 0; }
4
+ to { opacity: 1; }
5
+ }
6
+
7
+ .editor-popup-menu {
8
+ width: 100%;
9
+ height: 100%;
10
+ background-color: transparent;
11
+ border: none;
12
+
13
+ animation: var(--hide-menu-animation-timeout) ease show-popup-menu-animation;
14
+ opacity: 1;
15
+ transition: var(--hide-menu-animation-timeout) ease opacity;
16
+ overflow: hidden;
17
+
18
+ &.-hide {
19
+ opacity: 0;
20
+ }
21
+
22
+ & > .content {
23
+ position: absolute;
24
+ left: var(--anchor-x);
25
+ top: var(--anchor-y);
26
+ display: flex;
27
+ flex-direction: column;
28
+
29
+ overflow: clip;
30
+ border-radius: 6px;
31
+ box-shadow: 0px 1px 2px var(--shadow-color);
32
+ }
33
+
34
+ &::backdrop {
35
+ background: transparent;
36
+ }
37
+ }
38
+
39
+ .editor-popup-menu-option {
40
+ display: flex;
41
+ justify-content: start;
42
+ cursor: pointer;
43
+ padding: 5px;
44
+
45
+ background-color: var(--background-color-1);
46
+ color: var(--foreground-color-1);
47
+ --icon-color: currentColor;
48
+
49
+ border: none;
50
+ font-size: 1em;
51
+
52
+ &:hover, &:focus-visible {
53
+ background-color: var(--background-color-2);
54
+ color: var(--foreground-color-2);
55
+ }
56
+
57
+ // icon
58
+ > :first-child {
59
+ width: 1em;
60
+ height: 1em;
61
+ flex-shrink: 0;
62
+
63
+ // RTL support:
64
+ margin-inline-start: 0em;
65
+ margin-inline-end: 0.25em;
66
+ }
67
+ }