@operato/board 0.2.44 → 0.2.48

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