@operato/process 1.1.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 (197) hide show
  1. package/.storybook/main.js +3 -0
  2. package/.storybook/server.mjs +8 -0
  3. package/CHANGELOG.md +1824 -0
  4. package/LICENSE +21 -0
  5. package/README.md +95 -0
  6. package/demo/index-modeller.html +101 -0
  7. package/demo/index-viewer.html +101 -0
  8. package/demo/index.html +101 -0
  9. package/dist/src/data-storage/data-storage.d.ts +8 -0
  10. package/dist/src/data-storage/data-storage.js +28 -0
  11. package/dist/src/data-storage/data-storage.js.map +1 -0
  12. package/dist/src/graphql/data-subscription.d.ts +5 -0
  13. package/dist/src/graphql/data-subscription.js +24 -0
  14. package/dist/src/graphql/data-subscription.js.map +1 -0
  15. package/dist/src/graphql/favorite-process.d.ts +1 -0
  16. package/dist/src/graphql/favorite-process.js +23 -0
  17. package/dist/src/graphql/favorite-process.js.map +1 -0
  18. package/dist/src/graphql/index.d.ts +3 -0
  19. package/dist/src/graphql/index.js +4 -0
  20. package/dist/src/graphql/index.js.map +1 -0
  21. package/dist/src/graphql/process-group.d.ts +7 -0
  22. package/dist/src/graphql/process-group.js +125 -0
  23. package/dist/src/graphql/process-group.js.map +1 -0
  24. package/dist/src/graphql/process.d.ts +6 -0
  25. package/dist/src/graphql/process.js +130 -0
  26. package/dist/src/graphql/process.js.map +1 -0
  27. package/dist/src/graphql/scenario.d.ts +6 -0
  28. package/dist/src/graphql/scenario.js +69 -0
  29. package/dist/src/graphql/scenario.js.map +1 -0
  30. package/dist/src/index.d.ts +5 -0
  31. package/dist/src/index.js +6 -0
  32. package/dist/src/index.js.map +1 -0
  33. package/dist/src/modeller/component-toolbar/component-detail.d.ts +12 -0
  34. package/dist/src/modeller/component-toolbar/component-detail.js +58 -0
  35. package/dist/src/modeller/component-toolbar/component-detail.js.map +1 -0
  36. package/dist/src/modeller/component-toolbar/component-menu.d.ts +24 -0
  37. package/dist/src/modeller/component-toolbar/component-menu.js +190 -0
  38. package/dist/src/modeller/component-toolbar/component-menu.js.map +1 -0
  39. package/dist/src/modeller/component-toolbar/component-toolbar.d.ts +28 -0
  40. package/dist/src/modeller/component-toolbar/component-toolbar.js +168 -0
  41. package/dist/src/modeller/component-toolbar/component-toolbar.js.map +1 -0
  42. package/dist/src/modeller/component-toolbar/mode-icons.d.ts +2 -0
  43. package/dist/src/modeller/component-toolbar/mode-icons.js +86 -0
  44. package/dist/src/modeller/component-toolbar/mode-icons.js.map +1 -0
  45. package/dist/src/modeller/edit-toolbar-style.d.ts +4 -0
  46. package/dist/src/modeller/edit-toolbar-style.js +227 -0
  47. package/dist/src/modeller/edit-toolbar-style.js.map +1 -0
  48. package/dist/src/modeller/edit-toolbar.d.ts +61 -0
  49. package/dist/src/modeller/edit-toolbar.js +641 -0
  50. package/dist/src/modeller/edit-toolbar.js.map +1 -0
  51. package/dist/src/modeller/property-sidebar/abstract-property.d.ts +10 -0
  52. package/dist/src/modeller/property-sidebar/abstract-property.js +55 -0
  53. package/dist/src/modeller/property-sidebar/abstract-property.js.map +1 -0
  54. package/dist/src/modeller/property-sidebar/effects/effects-shared-style.d.ts +4 -0
  55. package/dist/src/modeller/property-sidebar/effects/effects-shared-style.js +61 -0
  56. package/dist/src/modeller/property-sidebar/effects/effects-shared-style.js.map +1 -0
  57. package/dist/src/modeller/property-sidebar/effects/effects.d.ts +20 -0
  58. package/dist/src/modeller/property-sidebar/effects/effects.js +42 -0
  59. package/dist/src/modeller/property-sidebar/effects/effects.js.map +1 -0
  60. package/dist/src/modeller/property-sidebar/effects/property-shadow.d.ts +23 -0
  61. package/dist/src/modeller/property-sidebar/effects/property-shadow.js +103 -0
  62. package/dist/src/modeller/property-sidebar/effects/property-shadow.js.map +1 -0
  63. package/dist/src/modeller/property-sidebar/effects/value-converter.d.ts +1 -0
  64. package/dist/src/modeller/property-sidebar/effects/value-converter.js +21 -0
  65. package/dist/src/modeller/property-sidebar/effects/value-converter.js.map +1 -0
  66. package/dist/src/modeller/property-sidebar/inspector/inspector.d.ts +29 -0
  67. package/dist/src/modeller/property-sidebar/inspector/inspector.js +318 -0
  68. package/dist/src/modeller/property-sidebar/inspector/inspector.js.map +1 -0
  69. package/dist/src/modeller/property-sidebar/property-shared-style.d.ts +4 -0
  70. package/dist/src/modeller/property-sidebar/property-shared-style.js +135 -0
  71. package/dist/src/modeller/property-sidebar/property-shared-style.js.map +1 -0
  72. package/dist/src/modeller/property-sidebar/property-sidebar.d.ts +43 -0
  73. package/dist/src/modeller/property-sidebar/property-sidebar.js +309 -0
  74. package/dist/src/modeller/property-sidebar/property-sidebar.js.map +1 -0
  75. package/dist/src/modeller/property-sidebar/shapes/box-padding-editor-styles.d.ts +1 -0
  76. package/dist/src/modeller/property-sidebar/shapes/box-padding-editor-styles.js +94 -0
  77. package/dist/src/modeller/property-sidebar/shapes/box-padding-editor-styles.js.map +1 -0
  78. package/dist/src/modeller/property-sidebar/shapes/shapes.d.ts +28 -0
  79. package/dist/src/modeller/property-sidebar/shapes/shapes.js +321 -0
  80. package/dist/src/modeller/property-sidebar/shapes/shapes.js.map +1 -0
  81. package/dist/src/modeller/property-sidebar/specifics/specific-properties-builder.d.ts +16 -0
  82. package/dist/src/modeller/property-sidebar/specifics/specific-properties-builder.js +132 -0
  83. package/dist/src/modeller/property-sidebar/specifics/specific-properties-builder.js.map +1 -0
  84. package/dist/src/modeller/property-sidebar/specifics/specifics.d.ts +25 -0
  85. package/dist/src/modeller/property-sidebar/specifics/specifics.js +81 -0
  86. package/dist/src/modeller/property-sidebar/specifics/specifics.js.map +1 -0
  87. package/dist/src/modeller/property-sidebar/styles/styles.d.ts +21 -0
  88. package/dist/src/modeller/property-sidebar/styles/styles.js +559 -0
  89. package/dist/src/modeller/property-sidebar/styles/styles.js.map +1 -0
  90. package/dist/src/modeller/scene-viewer/scene-handler.d.ts +11 -0
  91. package/dist/src/modeller/scene-viewer/scene-handler.js +32 -0
  92. package/dist/src/modeller/scene-viewer/scene-handler.js.map +1 -0
  93. package/dist/src/modeller/scene-viewer/scene-layer.d.ts +10 -0
  94. package/dist/src/modeller/scene-viewer/scene-layer.js +38 -0
  95. package/dist/src/modeller/scene-viewer/scene-layer.js.map +1 -0
  96. package/dist/src/modeller/scene-viewer/scene-property.d.ts +6 -0
  97. package/dist/src/modeller/scene-viewer/scene-property.js +15 -0
  98. package/dist/src/modeller/scene-viewer/scene-property.js.map +1 -0
  99. package/dist/src/modeller/scene-viewer/scene-viewer.d.ts +38 -0
  100. package/dist/src/modeller/scene-viewer/scene-viewer.js +243 -0
  101. package/dist/src/modeller/scene-viewer/scene-viewer.js.map +1 -0
  102. package/dist/src/ox-process-list.d.ts +2 -0
  103. package/dist/src/ox-process-list.js +427 -0
  104. package/dist/src/ox-process-list.js.map +1 -0
  105. package/dist/src/ox-process-modeller.d.ts +58 -0
  106. package/dist/src/ox-process-modeller.js +396 -0
  107. package/dist/src/ox-process-modeller.js.map +1 -0
  108. package/dist/src/ox-process-viewer.d.ts +51 -0
  109. package/dist/src/ox-process-viewer.js +512 -0
  110. package/dist/src/ox-process-viewer.js.map +1 -0
  111. package/dist/src/types.d.ts +37 -0
  112. package/dist/src/types.js +2 -0
  113. package/dist/src/types.js.map +1 -0
  114. package/dist/stories/index.stories.d.ts +33 -0
  115. package/dist/stories/index.stories.js +33 -0
  116. package/dist/stories/index.stories.js.map +1 -0
  117. package/dist/tsconfig.tsbuildinfo +1 -0
  118. package/icons/components/audio.png +0 -0
  119. package/icons/components/both-arrow.png +0 -0
  120. package/icons/components/color-image.png +0 -0
  121. package/icons/components/container.png +0 -0
  122. package/icons/components/dash.png +0 -0
  123. package/icons/components/donut.png +0 -0
  124. package/icons/components/ellipse.png +0 -0
  125. package/icons/components/forklift.png +0 -0
  126. package/icons/components/gif-image.png +0 -0
  127. package/icons/components/global-reference.png +0 -0
  128. package/icons/components/gray-image.png +0 -0
  129. package/icons/components/humidity-sensor.png +0 -0
  130. package/icons/components/info-window.png +0 -0
  131. package/icons/components/line.png +0 -0
  132. package/icons/components/local-reference.png +0 -0
  133. package/icons/components/no-image.png +0 -0
  134. package/icons/components/ortholine.png +0 -0
  135. package/icons/components/person.png +0 -0
  136. package/icons/components/polygon.png +0 -0
  137. package/icons/components/polyline.png +0 -0
  138. package/icons/components/popup.png +0 -0
  139. package/icons/components/rect.png +0 -0
  140. package/icons/components/single-arrow.png +0 -0
  141. package/icons/components/star.png +0 -0
  142. package/icons/components/streamline.png +0 -0
  143. package/icons/components/text.png +0 -0
  144. package/icons/components/triangle.png +0 -0
  145. package/icons/icon-collapse-active.png +0 -0
  146. package/icons/icon-collapse.png +0 -0
  147. package/icons/icon-fullscreen.png +0 -0
  148. package/icons/icon-htoolbar.png +0 -0
  149. package/icons/icon-properties-arrow-type.png +0 -0
  150. package/icons/icon-properties-gradient-direction.png +0 -0
  151. package/icons/icon-properties-label.png +0 -0
  152. package/icons/icon-properties-line-type.png +0 -0
  153. package/icons/icon-properties-padding.png +0 -0
  154. package/icons/icon-properties-ratio.png +0 -0
  155. package/icons/icon-properties-table.png +0 -0
  156. package/icons/icon-properties.png +0 -0
  157. package/icons/icon-shell-inspector.png +0 -0
  158. package/package.json +115 -0
  159. package/src/data-storage/data-storage.ts +47 -0
  160. package/src/graphql/data-subscription.ts +30 -0
  161. package/src/graphql/favorite-process.ts +25 -0
  162. package/src/graphql/index.ts +3 -0
  163. package/src/graphql/process-group.ts +138 -0
  164. package/src/graphql/process.ts +144 -0
  165. package/src/graphql/scenario.ts +79 -0
  166. package/src/index.ts +7 -0
  167. package/src/modeller/component-toolbar/component-detail.ts +58 -0
  168. package/src/modeller/component-toolbar/component-menu.ts +187 -0
  169. package/src/modeller/component-toolbar/component-toolbar.ts +173 -0
  170. package/src/modeller/component-toolbar/mode-icons.ts +86 -0
  171. package/src/modeller/edit-toolbar-style.ts +228 -0
  172. package/src/modeller/edit-toolbar.ts +641 -0
  173. package/src/modeller/property-sidebar/abstract-property.ts +69 -0
  174. package/src/modeller/property-sidebar/effects/effects-shared-style.ts +62 -0
  175. package/src/modeller/property-sidebar/effects/effects.ts +47 -0
  176. package/src/modeller/property-sidebar/effects/property-shadow.ts +114 -0
  177. package/src/modeller/property-sidebar/effects/value-converter.ts +23 -0
  178. package/src/modeller/property-sidebar/inspector/inspector.ts +361 -0
  179. package/src/modeller/property-sidebar/property-shared-style.ts +136 -0
  180. package/src/modeller/property-sidebar/property-sidebar.ts +308 -0
  181. package/src/modeller/property-sidebar/shapes/box-padding-editor-styles.ts +94 -0
  182. package/src/modeller/property-sidebar/shapes/shapes.ts +326 -0
  183. package/src/modeller/property-sidebar/specifics/specific-properties-builder.ts +144 -0
  184. package/src/modeller/property-sidebar/specifics/specifics.ts +77 -0
  185. package/src/modeller/property-sidebar/styles/styles.ts +577 -0
  186. package/src/modeller/scene-viewer/scene-handler.ts +39 -0
  187. package/src/modeller/scene-viewer/scene-layer.ts +41 -0
  188. package/src/modeller/scene-viewer/scene-property.ts +9 -0
  189. package/src/modeller/scene-viewer/scene-viewer.ts +249 -0
  190. package/src/ox-process-list.ts +459 -0
  191. package/src/ox-process-modeller.ts +396 -0
  192. package/src/ox-process-viewer.ts +555 -0
  193. package/src/types.ts +68 -0
  194. package/stories/index.stories.ts +52 -0
  195. package/tsconfig.json +23 -0
  196. package/web-dev-server.config.mjs +30 -0
  197. package/web-test-runner.config.mjs +29 -0
@@ -0,0 +1,641 @@
1
+ /**
2
+ * @license Copyright © HatioLab Inc. All rights reserved.
3
+ */
4
+ import { __decorate } from "tslib";
5
+ import { html, LitElement } from 'lit';
6
+ import { property, query, queryAll } from 'lit/decorators.js';
7
+ import { copyToClipboard, isMacOS } from '@operato/utils';
8
+ import { style } from './edit-toolbar-style';
9
+ const MACOS = isMacOS();
10
+ export class EditToolbar extends LitElement {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.selected = [];
14
+ this.hideProperty = false;
15
+ }
16
+ firstUpdated() {
17
+ this.addEventListener('mousewheel', this.onWheelEvent.bind(this), false);
18
+ window.addEventListener('paste', (e) => {
19
+ var _a;
20
+ this.cliped = (_a = e.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text/plain');
21
+ });
22
+ this.aligners.forEach(aligner => aligner.addEventListener('tap', this.onTapAlign.bind(this)));
23
+ this.zorders.forEach(zorder => zorder.addEventListener('tap', this.onTapZorder.bind(this)));
24
+ this.distributes.forEach(distribute => distribute.addEventListener('tap', this.onTapDistribute.bind(this)));
25
+ this.undo.addEventListener('tap', this.onTapUndo.bind(this));
26
+ this.redo.addEventListener('tap', this.onTapRedo.bind(this));
27
+ this.fullscreen.addEventListener('tap', this.onTapFullscreen.bind(this));
28
+ this.cut.addEventListener('tap', this.onTapCut.bind(this));
29
+ this.copy.addEventListener('tap', this.onTapCopy.bind(this));
30
+ this.paste.addEventListener('tap', this.onTapPaste.bind(this));
31
+ this.delete.addEventListener('tap', this.onTapDelete.bind(this));
32
+ this.renderRoot
33
+ .querySelector('#font-increase')
34
+ .addEventListener('tap', this.onTapFontIncrease.bind(this));
35
+ this.renderRoot
36
+ .querySelector('#font-decrease')
37
+ .addEventListener('tap', this.onTapFontDecrease.bind(this));
38
+ this.renderRoot.querySelector('#group').addEventListener('tap', this.onTapGroup.bind(this));
39
+ this.renderRoot.querySelector('#ungroup').addEventListener('tap', this.onTapUngroup.bind(this));
40
+ this.renderRoot
41
+ .querySelector('#symmetry-x')
42
+ .addEventListener('tap', this.onTapSymmetryX.bind(this));
43
+ this.renderRoot
44
+ .querySelector('#symmetry-y')
45
+ .addEventListener('tap', this.onTapSymmetryY.bind(this));
46
+ this.renderRoot.querySelector('#rotate-cw').addEventListener('tap', this.onTapRotateCW.bind(this));
47
+ this.renderRoot
48
+ .querySelector('#rotate-ccw')
49
+ .addEventListener('tap', this.onTapRotateCCW.bind(this));
50
+ this.renderRoot
51
+ .querySelector('#toggle-property')
52
+ .addEventListener('tap', this.onTapToggle.bind(this));
53
+ this.renderRoot.querySelector('#fit-scene').addEventListener('tap', this.onTapFitScene.bind(this));
54
+ this.renderRoot.querySelector('#preview').addEventListener('tap', this.onTapPreview.bind(this));
55
+ }
56
+ updated(changes) {
57
+ changes.has('scene') && this.onSceneChanged(this.scene, changes.get('scene'));
58
+ changes.has('selected') && this.onSelectedChanged(this.selected, changes.get('selected'));
59
+ }
60
+ render() {
61
+ return html `
62
+ <div tools>
63
+ <span><slot></slot></span>
64
+
65
+ <span button id="undo" title="undo (${this.getShortcutString('cmd', 'z')})"> </span>
66
+ <span button id="redo" title="redo (${this.getShortcutString('cmd', 'shift', 'z')})"> </span>
67
+
68
+ <span class="vline"></span>
69
+
70
+ <span button id="cut" title="cut (${this.getShortcutString('cmd', 'x')})"> </span>
71
+ <span button id="copy" title="copy (${this.getShortcutString('cmd', 'c')})"> </span>
72
+ <span button id="paste" title="paste (${this.getShortcutString('cmd', 'v')})"> </span>
73
+ <span
74
+ button
75
+ id="delete"
76
+ title="delete (${this.getShortcutString('backspace')}, ${this.getShortcutString('delete')})"
77
+ >
78
+ </span>
79
+
80
+ <span class="vline"></span>
81
+
82
+ <!-- TODO Implement style-copy
83
+ <span button id="style-copy" title="format painter"></span>
84
+ <span class="vline"></span>
85
+ -->
86
+
87
+ <span
88
+ button
89
+ data-align="left"
90
+ id="align-left"
91
+ title="align left (${this.getShortcutString('alt', 'shift', 'l')})"
92
+ >
93
+ </span>
94
+ <span
95
+ button
96
+ data-align="center"
97
+ id="align-center"
98
+ title="align center (${this.getShortcutString('alt', 'shift', 'c')})"
99
+ >
100
+ </span>
101
+ <span
102
+ button
103
+ data-align="right"
104
+ id="align-right"
105
+ title="align right (${this.getShortcutString('alt', 'shift', 'r')})"
106
+ >
107
+ </span>
108
+
109
+ <span button data-align="top" id="align-top" title="align top (${this.getShortcutString('alt', 'shift', 't')})">
110
+ </span>
111
+ <span
112
+ button
113
+ data-align="middle"
114
+ id="align-middle"
115
+ title="align middle (${this.getShortcutString('alt', 'shift', 'm')})"
116
+ >
117
+ </span>
118
+ <span
119
+ button
120
+ data-align="bottom"
121
+ id="align-bottom"
122
+ title="align bottom (${this.getShortcutString('alt', 'shift', 'b')})"
123
+ >
124
+ </span>
125
+
126
+ <span
127
+ button
128
+ data-distribute="HORIZONTAL"
129
+ id="distribute-horizontal"
130
+ title="distribute horizontally (${this.getShortcutString('alt', 'shift', 'h')})"
131
+ >
132
+ </span>
133
+
134
+ <span
135
+ button
136
+ data-distribute="VERTICAL"
137
+ id="distribute-vertical"
138
+ title="distribute vertically (${this.getShortcutString('alt', 'shift', 'v')})"
139
+ >
140
+ </span>
141
+
142
+ <span class="vline"></span>
143
+
144
+ <span
145
+ button
146
+ id="front"
147
+ data-zorder="front"
148
+ title="bring to front (${this.getShortcutString('cmd', 'shift', 'f')})"
149
+ >
150
+ </span>
151
+ <span button id="back" data-zorder="back" title="send to back (${this.getShortcutString('cmd', 'shift', 'b')})">
152
+ </span>
153
+ <span button id="forward" data-zorder="forward" title="bring forward (${this.getShortcutString('cmd', 'f')})">
154
+ </span>
155
+ <span button id="backward" data-zorder="backward" title="send backward (${this.getShortcutString('cmd', 'b')})">
156
+ </span>
157
+
158
+ <span class="vline"></span>
159
+
160
+ <span button id="symmetry-x" title="symmetry-x (${this.getShortcutString('alt', 'shift', 'x')})"> </span>
161
+ <span button id="symmetry-y" title="symmetry-y (${this.getShortcutString('alt', 'shift', 'y')})"> </span>
162
+ <span button id="rotate-cw" title="rotate clockwise (${this.getShortcutString('alt', 'shift', 'e')})"> </span>
163
+ <span button id="rotate-ccw" title="rotate counter clockwise (${this.getShortcutString('alt', 'shift', 'w')})">
164
+ </span>
165
+
166
+ <span class="vline"></span>
167
+
168
+ <span button id="group" title="group (${this.getShortcutString('cmd', 'g')})"> </span>
169
+ <span button id="ungroup" title="ungroup (${this.getShortcutString('cmd', 'shift', 'g')})"> </span>
170
+
171
+ <span class="vline"></span>
172
+
173
+ <span button id="font-increase" title="increase font size"></span>
174
+ <span button id="font-decrease" title="decrease font size"></span>
175
+
176
+ <span class="vline"></span>
177
+ <span padding></span>
178
+
179
+ <span button id="fit-scene" title="fit scene (${this.getShortcutString('cmd', 'd')})"> </span>
180
+
181
+ <span class="vline"></span>
182
+
183
+ <span button id="preview" title="preview (${this.getShortcutString('ctrl', 'p')})"> </span>
184
+
185
+ <span button id="fullscreen" title="fullscreen (${this.getShortcutString('f11')})"> </span>
186
+
187
+ <span
188
+ button
189
+ id="toggle-property"
190
+ title="toggle property panel (${this.getShortcutString('cmd', 'h')})"
191
+ toggles="true"
192
+ >
193
+ </span>
194
+ </div>
195
+ `;
196
+ }
197
+ onWheelEvent(e) {
198
+ var delta = Math.max(-1, Math.min(1, e.deltaY || -e.detail));
199
+ this.scrollLeft -= delta * 40;
200
+ e.preventDefault();
201
+ }
202
+ getSymbol(key) {
203
+ var symbol;
204
+ switch (key) {
205
+ case 'cmd':
206
+ case 'ctrl':
207
+ symbol = MACOS ? '⌘' : 'Ctrl';
208
+ break;
209
+ case 'shift':
210
+ symbol = MACOS ? '⇧' : 'Shift';
211
+ break;
212
+ case 'alt':
213
+ case 'option':
214
+ symbol = MACOS ? '⌥' : 'Alt';
215
+ break;
216
+ case 'backspace':
217
+ symbol = MACOS ? '⌫' : 'BackSpace';
218
+ break;
219
+ case 'delete':
220
+ symbol = MACOS ? '⌦' : 'Del';
221
+ break;
222
+ default:
223
+ symbol = key.toUpperCase();
224
+ break;
225
+ }
226
+ return symbol;
227
+ }
228
+ getShortcutString(...keys) {
229
+ var symbols = [];
230
+ for (var i = 0; i < arguments.length; i++) {
231
+ symbols.push(this.getSymbol(arguments[i]));
232
+ }
233
+ return symbols.join(MACOS ? '' : '+');
234
+ }
235
+ onShortcut(e) {
236
+ var _a, _b, _c, _d;
237
+ if (MACOS)
238
+ var ctrlKey = e.metaKey;
239
+ else
240
+ var ctrlKey = e.ctrlKey;
241
+ var altKey = e.altKey;
242
+ var shiftKey = e.shiftKey;
243
+ var defaultPrevent = ctrlKey || altKey;
244
+ switch (e.code) {
245
+ case 'KeyZ':
246
+ if (ctrlKey && !shiftKey)
247
+ this.onTapUndo();
248
+ else if (ctrlKey && shiftKey)
249
+ this.onTapRedo();
250
+ break;
251
+ case 'KeyY':
252
+ if (ctrlKey && !shiftKey)
253
+ this.onTapRedo();
254
+ else if (altKey && shiftKey)
255
+ this.onTapSymmetryY();
256
+ break;
257
+ case 'KeyC':
258
+ if (ctrlKey && !shiftKey)
259
+ this.onTapCopy();
260
+ else if (altKey && shiftKey)
261
+ this.onTapAlign('center');
262
+ break;
263
+ case 'KeyX':
264
+ if (ctrlKey && !shiftKey)
265
+ this.onTapCut();
266
+ else if (altKey && shiftKey)
267
+ this.onTapSymmetryX();
268
+ break;
269
+ case 'KeyV':
270
+ if (ctrlKey && !shiftKey) {
271
+ this.onTapPaste();
272
+ defaultPrevent = false;
273
+ }
274
+ else if (altKey && shiftKey)
275
+ this.onTapDistribute('VERTICAL');
276
+ break;
277
+ case 'Delete':
278
+ case 'Backspace':
279
+ this.onTapDelete();
280
+ defaultPrevent = true;
281
+ break;
282
+ case 'KeyG':
283
+ if (ctrlKey && !shiftKey)
284
+ this.onTapGroup();
285
+ else if (ctrlKey && shiftKey)
286
+ this.onTapUngroup();
287
+ break;
288
+ case 'KeyF':
289
+ if (ctrlKey && !shiftKey)
290
+ (_a = this.scene) === null || _a === void 0 ? void 0 : _a.zorder('forward');
291
+ else if (ctrlKey && shiftKey)
292
+ (_b = this.scene) === null || _b === void 0 ? void 0 : _b.zorder('front');
293
+ break;
294
+ case 'KeyB':
295
+ if (ctrlKey && !shiftKey)
296
+ (_c = this.scene) === null || _c === void 0 ? void 0 : _c.zorder('backward');
297
+ else if (ctrlKey && shiftKey)
298
+ (_d = this.scene) === null || _d === void 0 ? void 0 : _d.zorder('back');
299
+ else if (altKey && shiftKey)
300
+ this.onTapAlign('bottom');
301
+ break;
302
+ // case 'Equal':
303
+ // if (ctrlKey) this.onTapZoom(zoomin)
304
+ // break
305
+ // case 'Minus':
306
+ // if (ctrlKey) this.onTapZoom(zoomout)
307
+ // break
308
+ case 'KeyH':
309
+ if (ctrlKey && !shiftKey)
310
+ this.onTapToggle();
311
+ else if (altKey && shiftKey)
312
+ this.onTapDistribute('HORIZONTAL');
313
+ break;
314
+ case 'F11':
315
+ this.onTapFullscreen();
316
+ defaultPrevent = true;
317
+ break;
318
+ case 'KeyP':
319
+ if (ctrlKey) {
320
+ this.onTapPreview();
321
+ defaultPrevent = true;
322
+ }
323
+ break;
324
+ case 'KeyA':
325
+ if (ctrlKey)
326
+ this.onTapSelectAll();
327
+ break;
328
+ case 'KeyL':
329
+ if (altKey && shiftKey)
330
+ this.onTapAlign('left');
331
+ break;
332
+ case 'KeyR':
333
+ if (altKey && shiftKey)
334
+ this.onTapAlign('right');
335
+ break;
336
+ case 'KeyM':
337
+ if (altKey && shiftKey)
338
+ this.onTapAlign('middle');
339
+ break;
340
+ case 'KeyT':
341
+ if (altKey && shiftKey)
342
+ this.onTapAlign('top');
343
+ break;
344
+ case 'KeyY':
345
+ if (altKey && shiftKey)
346
+ this.onTapSymmetryY();
347
+ break;
348
+ case 'KeyD':
349
+ if (ctrlKey) {
350
+ this.onTapFitScene();
351
+ defaultPrevent = true;
352
+ }
353
+ break;
354
+ case 'KeyE':
355
+ if (altKey && shiftKey)
356
+ this.onTapRotateCW();
357
+ else if (ctrlKey && shiftKey)
358
+ this.onTapDownloadModel();
359
+ break;
360
+ case 'KeyW':
361
+ if (altKey && shiftKey)
362
+ this.onTapRotateCCW();
363
+ break;
364
+ case 'Digit1':
365
+ if (ctrlKey) {
366
+ console.log('MODEL', this.scene && this.scene.model);
367
+ defaultPrevent = true;
368
+ }
369
+ break;
370
+ case 'Digit2':
371
+ if (ctrlKey) {
372
+ console.log('SELECTED', this.scene && this.scene.selected);
373
+ defaultPrevent = true;
374
+ }
375
+ break;
376
+ default:
377
+ return false;
378
+ }
379
+ if (defaultPrevent)
380
+ e.preventDefault();
381
+ return true;
382
+ }
383
+ onExecute(command, undoable, redoable) {
384
+ !undoable ? this.undo.setAttribute('disabled', '') : this.undo.removeAttribute('disabled');
385
+ !redoable ? this.redo.setAttribute('disabled', '') : this.redo.removeAttribute('disabled');
386
+ }
387
+ onUndo(undoable, redoable) {
388
+ !undoable ? this.undo.setAttribute('disabled', '') : this.undo.removeAttribute('disabled');
389
+ !redoable ? this.redo.setAttribute('disabled', '') : this.redo.removeAttribute('disabled');
390
+ }
391
+ onRedo(undoable, redoable) {
392
+ !undoable ? this.undo.setAttribute('disabled', '') : this.undo.removeAttribute('disabled');
393
+ !redoable ? this.redo.setAttribute('disabled', '') : this.redo.removeAttribute('disabled');
394
+ }
395
+ onSceneChanged(after, before) {
396
+ if (before) {
397
+ before.off('execute', this.onExecute, this);
398
+ before.off('undo', this.onUndo, this);
399
+ before.off('redo', this.onRedo, this);
400
+ }
401
+ if (after) {
402
+ after.on('execute', this.onExecute, this);
403
+ after.on('undo', this.onUndo, this);
404
+ after.on('redo', this.onRedo, this);
405
+ }
406
+ }
407
+ // @query('#align-left') private alignLeft!: HTMLElement
408
+ // @query('#align-center') private alignCenter!: HTMLElement
409
+ // @query('#align-right') private alignRight!: HTMLElement
410
+ // @query('#align-top') private alignTop!: HTMLElement
411
+ // @query('#align-middle') private alignMiddle!: HTMLElement
412
+ // @query('#align-bottom') private alignBottom!: HTMLElement
413
+ onSelectedChanged(after, before) {
414
+ var alignable = after.length > 1;
415
+ this.aligners.forEach(aligner => alignable ? aligner.removeAttribute('disabled') : aligner.setAttribute('disabled', ''));
416
+ var movable = after.length === 1;
417
+ /* forward, backward 이동은 한 컴포넌트만 가능하다. */
418
+ !movable ? this.forward.setAttribute('disabled', '') : this.forward.removeAttribute('disabled');
419
+ !movable ? this.backward.setAttribute('disabled', '') : this.backward.removeAttribute('disabled');
420
+ /* 여러 컴포넌트는 front, back 이동이 가능하다. */
421
+ !(alignable || movable) ? this.front.setAttribute('disabled', '') : this.front.removeAttribute('disabled');
422
+ !(alignable || movable) ? this.back.setAttribute('disabled', '') : this.back.removeAttribute('disabled');
423
+ }
424
+ onTapUndo() {
425
+ var _a;
426
+ (_a = this.scene) === null || _a === void 0 ? void 0 : _a.undo();
427
+ }
428
+ onTapRedo() {
429
+ var _a;
430
+ (_a = this.scene) === null || _a === void 0 ? void 0 : _a.redo();
431
+ }
432
+ onTapCut() {
433
+ var _a;
434
+ (_a = this.scene) === null || _a === void 0 ? void 0 : _a.cut();
435
+ }
436
+ async onTapCopy() {
437
+ var _a;
438
+ var copied = (_a = this.scene) === null || _a === void 0 ? void 0 : _a.copy();
439
+ if (!copied)
440
+ return;
441
+ await copyToClipboard(copied);
442
+ this.cliped = copied;
443
+ }
444
+ onTapPaste() {
445
+ setTimeout(() => {
446
+ var _a;
447
+ this.cliped && ((_a = this.scene) === null || _a === void 0 ? void 0 : _a.paste(this.cliped));
448
+ }, 100);
449
+ }
450
+ onTapDelete() {
451
+ var _a;
452
+ (_a = this.scene) === null || _a === void 0 ? void 0 : _a.remove();
453
+ }
454
+ onTapSelectAll() {
455
+ var _a;
456
+ (_a = this.scene) === null || _a === void 0 ? void 0 : _a.select('(child)');
457
+ }
458
+ onTapFontIncrease(e) {
459
+ var _a, _b;
460
+ var selected = (_a = this.scene) === null || _a === void 0 ? void 0 : _a.selected;
461
+ if (!selected || !selected.length) {
462
+ return;
463
+ }
464
+ (_b = this.scene) === null || _b === void 0 ? void 0 : _b.undoableChange(function () {
465
+ selected.forEach(function (component) {
466
+ var fontSize = component.get('fontSize');
467
+ if (!fontSize)
468
+ fontSize = '15';
469
+ if (fontSize) {
470
+ var size = parseInt(fontSize);
471
+ component.set('fontSize', size + 1);
472
+ }
473
+ });
474
+ });
475
+ }
476
+ onTapFontDecrease(e) {
477
+ var _a, _b;
478
+ var selected = (_a = this.scene) === null || _a === void 0 ? void 0 : _a.selected;
479
+ if (!selected || !selected.length) {
480
+ return;
481
+ }
482
+ (_b = this.scene) === null || _b === void 0 ? void 0 : _b.undoableChange(function () {
483
+ selected.forEach(function (component) {
484
+ var fontSize = component.get('fontSize');
485
+ if (!fontSize)
486
+ fontSize = '15';
487
+ if (fontSize) {
488
+ var size = parseInt(fontSize);
489
+ if (size > 1)
490
+ component.set('fontSize', size - 1);
491
+ }
492
+ });
493
+ });
494
+ }
495
+ onTapAlign(e) {
496
+ if (!this.scene)
497
+ return;
498
+ var selected = this.scene.selected;
499
+ if (selected.length <= 1)
500
+ return;
501
+ var align = typeof e === 'string' ? e : e.target.getAttribute('data-align');
502
+ align && this.scene.align(align);
503
+ }
504
+ onTapZorder(e) {
505
+ if (!this.scene)
506
+ return;
507
+ var selected = this.scene.selected;
508
+ if (selected.length < 1)
509
+ return;
510
+ var zorder = typeof e === 'string' ? e : e.target.getAttribute('data-zorder');
511
+ zorder && this.scene.zorder(zorder);
512
+ }
513
+ onTapSymmetryX() {
514
+ this.scene && this.scene.symmetryX();
515
+ }
516
+ onTapSymmetryY() {
517
+ this.scene && this.scene.symmetryY();
518
+ }
519
+ onTapRotateCW() {
520
+ if (!this.scene)
521
+ return;
522
+ var selected = this.scene.selected;
523
+ if (selected.length && selected[0].isRootModel())
524
+ return;
525
+ this.scene.undoableChange(function () {
526
+ selected.forEach(function (component) {
527
+ var rotation = component.get('rotation');
528
+ if (!rotation)
529
+ rotation = 0;
530
+ component.set('rotation', (rotation + Math.PI / 2) % (Math.PI * 2));
531
+ });
532
+ });
533
+ }
534
+ onTapRotateCCW() {
535
+ if (!this.scene)
536
+ return;
537
+ var selected = this.scene.selected;
538
+ if (selected.length && selected[0].isRootModel())
539
+ return;
540
+ this.scene.undoableChange(function () {
541
+ selected.forEach(function (component) {
542
+ var rotation = component.get('rotation');
543
+ if (!rotation)
544
+ rotation = 0;
545
+ component.set('rotation', (rotation - Math.PI / 2) % (Math.PI * 2));
546
+ });
547
+ });
548
+ }
549
+ onTapGroup() {
550
+ this.scene && this.scene.group();
551
+ }
552
+ onTapUngroup() {
553
+ this.scene && this.scene.ungroup();
554
+ }
555
+ onTapFullscreen() {
556
+ this.dispatchEvent(new CustomEvent('modeller-fullscreen'));
557
+ }
558
+ onTapToggle() {
559
+ this.hideProperty = !this.hideProperty;
560
+ this.dispatchEvent(new CustomEvent('hide-property-changed', {
561
+ bubbles: true,
562
+ composed: true,
563
+ detail: { value: this.hideProperty }
564
+ }));
565
+ }
566
+ onTapFitScene() {
567
+ if (this.scene) {
568
+ this.scene.resize();
569
+ this.scene.fit('ratio');
570
+ }
571
+ }
572
+ onTapPreview() {
573
+ this.dispatchEvent(new CustomEvent('open-preview'));
574
+ }
575
+ onTapDownloadModel() {
576
+ this.dispatchEvent(new CustomEvent('download-model'));
577
+ }
578
+ onTapDistribute(e) {
579
+ if (!this.scene)
580
+ return;
581
+ var selected = this.scene.selected;
582
+ if (selected.length <= 1) {
583
+ return;
584
+ }
585
+ var distribute = typeof e === 'string' ? e : e.target.getAttribute('data-distribute');
586
+ distribute && this.scene.distribute(distribute);
587
+ }
588
+ }
589
+ EditToolbar.styles = [style];
590
+ __decorate([
591
+ property({ type: Object })
592
+ ], EditToolbar.prototype, "scene", void 0);
593
+ __decorate([
594
+ property({ type: Array })
595
+ ], EditToolbar.prototype, "selected", void 0);
596
+ __decorate([
597
+ property({ type: Boolean })
598
+ ], EditToolbar.prototype, "hideProperty", void 0);
599
+ __decorate([
600
+ query('#redo')
601
+ ], EditToolbar.prototype, "redo", void 0);
602
+ __decorate([
603
+ query('#undo')
604
+ ], EditToolbar.prototype, "undo", void 0);
605
+ __decorate([
606
+ query('#fullscreen')
607
+ ], EditToolbar.prototype, "fullscreen", void 0);
608
+ __decorate([
609
+ query('#cut')
610
+ ], EditToolbar.prototype, "cut", void 0);
611
+ __decorate([
612
+ query('#copy')
613
+ ], EditToolbar.prototype, "copy", void 0);
614
+ __decorate([
615
+ query('#paste')
616
+ ], EditToolbar.prototype, "paste", void 0);
617
+ __decorate([
618
+ query('#delete')
619
+ ], EditToolbar.prototype, "delete", void 0);
620
+ __decorate([
621
+ query('#forward')
622
+ ], EditToolbar.prototype, "forward", void 0);
623
+ __decorate([
624
+ query('#backward')
625
+ ], EditToolbar.prototype, "backward", void 0);
626
+ __decorate([
627
+ query('#front')
628
+ ], EditToolbar.prototype, "front", void 0);
629
+ __decorate([
630
+ query('#back')
631
+ ], EditToolbar.prototype, "back", void 0);
632
+ __decorate([
633
+ queryAll('[data-align]')
634
+ ], EditToolbar.prototype, "aligners", void 0);
635
+ __decorate([
636
+ queryAll('[data-zorder]')
637
+ ], EditToolbar.prototype, "zorders", void 0);
638
+ __decorate([
639
+ queryAll('[data-distribute]')
640
+ ], EditToolbar.prototype, "distributes", void 0);
641
+ //# sourceMappingURL=edit-toolbar.js.map