@operato/process 8.0.0-alpha.9 → 8.0.0-beta.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 (56) hide show
  1. package/CHANGELOG.md +251 -0
  2. package/dist/src/ox-process-template-viewer.d.ts +1 -1
  3. package/dist/src/ox-process-viewer.d.ts +1 -1
  4. package/dist/tsconfig.tsbuildinfo +1 -1
  5. package/package.json +23 -23
  6. package/.storybook/main.js +0 -3
  7. package/.storybook/preview.js +0 -52
  8. package/.storybook/server.mjs +0 -8
  9. package/src/data-storage/data-storage.ts +0 -47
  10. package/src/graphql/data-subscription.ts +0 -30
  11. package/src/graphql/favorite-process.ts +0 -25
  12. package/src/graphql/index.ts +0 -3
  13. package/src/graphql/process-group.ts +0 -138
  14. package/src/graphql/process.ts +0 -141
  15. package/src/graphql/scenario.ts +0 -79
  16. package/src/index.ts +0 -8
  17. package/src/modeller/component-toolbar/component-detail.ts +0 -58
  18. package/src/modeller/component-toolbar/component-menu.ts +0 -193
  19. package/src/modeller/component-toolbar/component-toolbar.ts +0 -196
  20. package/src/modeller/component-toolbar/mode-icons.ts +0 -88
  21. package/src/modeller/edit-toolbar-style.ts +0 -229
  22. package/src/modeller/edit-toolbar.ts +0 -576
  23. package/src/modeller/property-sidebar/abstract-property.ts +0 -69
  24. package/src/modeller/property-sidebar/data-binding/data-binding-mapper.ts +0 -475
  25. package/src/modeller/property-sidebar/data-binding/data-binding.ts +0 -479
  26. package/src/modeller/property-sidebar/effects/effects-shared-style.ts +0 -62
  27. package/src/modeller/property-sidebar/effects/effects.ts +0 -52
  28. package/src/modeller/property-sidebar/effects/property-event-hover.ts +0 -201
  29. package/src/modeller/property-sidebar/effects/property-event-tap.ts +0 -212
  30. package/src/modeller/property-sidebar/effects/property-event.ts +0 -76
  31. package/src/modeller/property-sidebar/effects/property-shadow.ts +0 -114
  32. package/src/modeller/property-sidebar/effects/value-converter.ts +0 -23
  33. package/src/modeller/property-sidebar/inspector/inspector.ts +0 -408
  34. package/src/modeller/property-sidebar/property-shared-style.ts +0 -136
  35. package/src/modeller/property-sidebar/property-sidebar.ts +0 -342
  36. package/src/modeller/property-sidebar/shapes/box-padding-editor-styles.ts +0 -94
  37. package/src/modeller/property-sidebar/shapes/shapes.ts +0 -410
  38. package/src/modeller/property-sidebar/specifics/specific-properties-builder.ts +0 -147
  39. package/src/modeller/property-sidebar/specifics/specifics.ts +0 -81
  40. package/src/modeller/property-sidebar/styles/styles.ts +0 -577
  41. package/src/ox-editor-process-selector.ts +0 -91
  42. package/src/ox-process-list.ts +0 -401
  43. package/src/ox-process-modeller.ts +0 -432
  44. package/src/ox-process-template-list.ts +0 -272
  45. package/src/ox-process-template-viewer.ts +0 -198
  46. package/src/ox-process-viewer.ts +0 -575
  47. package/src/ox-property-editor-process-selector.ts +0 -23
  48. package/src/selector/ox-process-creation-card.ts +0 -95
  49. package/src/selector/ox-process-selector.ts +0 -324
  50. package/src/selector/process-creation-popup.ts +0 -151
  51. package/src/selector/process-thumbnail-card.ts +0 -175
  52. package/src/types.ts +0 -57
  53. package/stories/index.stories.ts +0 -54
  54. package/tsconfig.json +0 -24
  55. package/web-dev-server.config.mjs +0 -30
  56. package/web-test-runner.config.mjs +0 -29
@@ -1,408 +0,0 @@
1
- import '@operato/input/ox-input-search.js'
2
-
3
- import { css, html, LitElement, PropertyValues, TemplateResult } from 'lit'
4
- import { property, state } from 'lit/decorators.js'
5
-
6
- // TODO test Sortable
7
- // import Sortable from 'sortablejs'
8
- import { i18next } from '@operato/i18n'
9
-
10
- import { Component, Container, Scene } from '@hatiolab/things-scene'
11
-
12
- export class SceneInspector extends LitElement {
13
- static styles = [
14
- css`
15
- :host {
16
- display: flex;
17
- flex-direction: column;
18
-
19
- color: var(--scene-inspector-color);
20
- }
21
-
22
- ox-input-search {
23
- --input-search-padding: 3px;
24
- --input-search-focus-border-bottom: none;
25
- --input-search-font: normal 16px var(--theme-font);
26
-
27
- border-radius: 999px;
28
- box-sizing: border-box;
29
- border: 1px solid var(--md-sys-color-on-secondary-container);
30
- padding: 0 10px;
31
- margin: 5px;
32
- }
33
-
34
- div[result] {
35
- flex: 1;
36
-
37
- display: flex;
38
- flex-direction: column;
39
-
40
- overflow-y: auto;
41
- }
42
-
43
- .component {
44
- display: block;
45
- overflow: hidden;
46
- border-bottom: 1px solid rgba(0, 0, 0, 0.05);
47
- font-size: 14px;
48
- }
49
-
50
- .component[selected] {
51
- background-color: var(--scene-inspector-selected-background-color);
52
- border-top: var(--scene-inspector-selected-border);
53
- border-bottom: var(--scene-inspector-selected-border);
54
- }
55
- [selected] .type {
56
- font-weight: bold;
57
- }
58
-
59
- span,
60
- i {
61
- display: inline-block;
62
- }
63
-
64
- span.type {
65
- text-overflow: ellipses;
66
- }
67
-
68
- span.name {
69
- background-color: var(--scene-inspector-name-background-color);
70
- border-radius: var(--border-radius);
71
- padding: 0 4px;
72
- color: #fff;
73
- font-size: 0.8em;
74
- }
75
-
76
- .eye {
77
- margin: 0 0 0 5px;
78
- vertical-align: middle;
79
- opacity: 0.7;
80
- font-size: 1.1em;
81
- color: var(--scene-inspector-eye-icon-color);
82
- }
83
-
84
- .collapsed::before,
85
- .extended::before,
86
- .collapsespace::before {
87
- background: var(--url-icon-shell-inspector) no-repeat;
88
- width: 16px;
89
- height: 18px;
90
- display: inline-block;
91
- content: '';
92
- opacity: 0.6;
93
- }
94
-
95
- .collapsed::before {
96
- background-position: 100% -195px;
97
- }
98
-
99
- .extended::before {
100
- background-position: 100% -295px;
101
- }
102
-
103
- .collapsespace::before {
104
- background-position: 100% -395px;
105
- opacity: 0.9;
106
- width: 16px;
107
- }
108
- .collapsed,
109
- .extended,
110
- .collapsespace {
111
- border-left: 1px dotted rgba(0, 0, 0, 0.1);
112
- }
113
-
114
- pre {
115
- display: inline;
116
- }
117
- `
118
- ]
119
-
120
- @property({ type: Object }) scene?: Scene
121
-
122
- @state() private searchText: string = ''
123
-
124
- private _extendedMap: any
125
- private show: boolean = false
126
- private count: number = -1
127
-
128
- disconnectScene(scene?: Scene) {
129
- if (scene) {
130
- scene.off('selected', undefined, this)
131
- scene.off('execute', undefined, this)
132
- scene.off('undo', undefined, this)
133
- scene.off('redo', undefined, this)
134
- }
135
- }
136
-
137
- disconnectedCallback() {
138
- super.disconnectedCallback()
139
-
140
- this.disconnectScene(this.scene)
141
- delete this._extendedMap
142
- }
143
-
144
- render() {
145
- this.count = 0
146
-
147
- return html`
148
- <ox-input-search
149
- .placeholder=${i18next.t('text.search with type, id or tag')}
150
- autofocus
151
- @change=${(e: Event) => (this.searchText = ((e.target as HTMLInputElement).value || '').toLowerCase())}
152
- ></ox-input-search>
153
-
154
- <div result>${!this.scene ? html`` : this.renderComponent(this.scene.root, 0)}</div>
155
- `
156
- }
157
-
158
- firstUpdated() {
159
- dispatchEvent(new Event('resize'))
160
-
161
- this.renderRoot.addEventListener('click', this._onclick.bind(this) as EventListener)
162
- this.renderRoot.addEventListener('dblclick', this._ondblclick.bind(this) as EventListener)
163
- }
164
-
165
- refresh() {
166
- let selected = this.scene?.selected || []
167
-
168
- selected.forEach(component => {
169
- let parent = component.parent
170
- while (parent && !this.extendedMap.get(parent)) {
171
- this.extendedMap.set(parent, true)
172
- parent = parent.parent
173
- }
174
- })
175
-
176
- this.requestUpdate()
177
- }
178
-
179
- updated(change: PropertyValues<this>) {
180
- if (change.has('scene')) {
181
- let oldScene = change.get('scene') as Scene
182
-
183
- if (oldScene) {
184
- this.disconnectScene(oldScene)
185
- delete this._extendedMap
186
- }
187
-
188
- if (this.scene && this.scene.root) {
189
- this.scene.on('selected', this.refresh, this)
190
- this.scene.on('execute', this.refresh, this)
191
- this.scene.on('undo', this.refresh, this)
192
- this.scene.on('redo', this.refresh, this)
193
-
194
- this.refresh()
195
- }
196
- }
197
-
198
- // TODO test Sortable
199
- // this.updateComplete.then(() => {
200
- // this.renderRoot.querySelectorAll('[sortable]').forEach(sortable => {
201
- // new Sortable(sortable as HTMLElement, this.sortableConfig)
202
- // })
203
- // })
204
- }
205
-
206
- // TODO test Sortable
207
- // sortableConfig: Sortable.Options = {
208
- // group: 'inspector',
209
- // animation: 150,
210
- // draggable: '.component',
211
- // swapThreshold: 1,
212
- // onSort: this.onSort.bind(this)
213
- // }
214
-
215
- // TODO test Sortable
216
- // onSort(e: Sortable.SortableEvent) {
217
- // if (!this.scene) return
218
-
219
- // var component = (e.item as HTMLElement & { component: Component }).component
220
- // var to_container = (e.to as HTMLElement & { component: Component }).component as Container
221
- // var to_index = e.newIndex! - 1
222
-
223
- // this.scene.move(component, to_container, to_index)
224
-
225
- // this.show = false
226
- // this.updateComplete.then(() => {
227
- // this.show = true
228
- // })
229
- // }
230
-
231
- _onclick(e: MouseEvent) {
232
- e.stopPropagation()
233
-
234
- var targetElement = e.target as HTMLElement & { component: Component }
235
- var classList = targetElement.classList
236
- var component
237
-
238
- while (!component && targetElement) {
239
- component = targetElement.component
240
-
241
- if (component) break
242
-
243
- targetElement = targetElement.parentNode as HTMLElement & { component: Component }
244
-
245
- if (!targetElement || targetElement === this.renderRoot) break
246
- }
247
-
248
- if (component) {
249
- if (classList.contains('eye')) {
250
- this.toggleHidden(component)
251
- } else if (classList.contains('extended') || classList.contains('collapsed')) {
252
- this.toggleExtended(component)
253
- }
254
-
255
- this.selectComponent(component, e.shiftKey)
256
- } else {
257
- if (classList.contains('inspector')) {
258
- this.show = !this.show
259
- this.style.height = this.show ? '100%' : ''
260
- }
261
- }
262
-
263
- this.requestUpdate()
264
- }
265
-
266
- _ondblclick(e: MouseEvent) {
267
- e.stopPropagation()
268
-
269
- var targetElement = e.target as HTMLElement & { component: Component }
270
- var component
271
-
272
- while (!component && targetElement) {
273
- component = targetElement.component
274
-
275
- if (component) break
276
-
277
- targetElement = targetElement.parentNode as HTMLElement & { component: Component }
278
-
279
- if (!targetElement || targetElement === this.renderRoot) break
280
- }
281
-
282
- if (component && component.isContainer()) {
283
- this.toggleExtended(component)
284
- }
285
-
286
- this.requestUpdate()
287
- }
288
-
289
- get extendedMap() {
290
- if (!this._extendedMap) {
291
- this._extendedMap = new WeakMap()
292
- }
293
-
294
- return this._extendedMap
295
- }
296
-
297
- getNodeHandleClass(component: Component) {
298
- if (component.isContainer() && (component as Container).components.length > 0) {
299
- return !!this.extendedMap.get(component) ? 'extended' : 'collapsed'
300
- } else {
301
- return 'collapsespace'
302
- }
303
- }
304
-
305
- isExtended(component: Component) {
306
- return !!this.extendedMap.get(component)
307
- }
308
-
309
- toggleExtended(component: Component) {
310
- var extended = this.isExtended(component)
311
-
312
- if (extended) {
313
- this.extendedMap.delete(component)
314
- } else {
315
- this.extendedMap.set(component, !extended)
316
- }
317
-
318
- this.requestUpdate()
319
- }
320
-
321
- toggleHidden(component: Component) {
322
- component.set('hidden', !component.hidden)
323
-
324
- this.requestUpdate()
325
- }
326
-
327
- selectComponent(component: Component, append: boolean = false) {
328
- const selected = this.scene!.selected
329
-
330
- if (append) {
331
- const idx = selected.findIndex(s => s === component)
332
- if (idx != -1) {
333
- selected.splice(idx, 1)
334
- this.scene!.selected = [...selected]
335
- } else {
336
- this.scene!.selected = [...selected, component]
337
- }
338
- } else {
339
- this.scene!.selected = [component]
340
- }
341
-
342
- component.trigger('reactionreset')
343
- component.trigger('reaction')
344
-
345
- this.requestUpdate()
346
- }
347
-
348
- shouldBeShown(component: Component, counting: boolean = false): boolean {
349
- const { type, name, id, tag } = component.state
350
- const found =
351
- !this.searchText || `${type} ${name || ''} ${id || ''} ${tag || ''}`.toLowerCase().search(this.searchText) > -1
352
-
353
- if (counting && found) {
354
- this.count++
355
- }
356
-
357
- if (counting) {
358
- console.log(found)
359
- }
360
-
361
- const foundChildren = ((component as Container).components || []).filter((child: Component) =>
362
- this.shouldBeShown(child, counting)
363
- ).length
364
-
365
- return !!(found || foundChildren > 0)
366
- }
367
-
368
- renderComponent(component: Component, depth: number): TemplateResult {
369
- if (!component) {
370
- return html``
371
- }
372
-
373
- if (!this.shouldBeShown(component, depth == 0)) {
374
- return html``
375
- }
376
-
377
- const children = (component.isContainer() && (component as Container).components) || []
378
- const extended = this.isExtended(component) ? children.filter(child => this.shouldBeShown(child)) : []
379
- const { type, id, tag, class: clazz } = component.state
380
-
381
- const name = (id ? `#${id}` : '') + (tag ? `@${tag}` : '') + (clazz ? `.(${clazz})` : '')
382
-
383
- return html`
384
- <div
385
- class="component"
386
- ?selected=${(this.scene?.selected || []).indexOf(component) > -1}
387
- .component=${component}
388
- ?sortable=${component.isContainer()}
389
- >
390
- <span>
391
- ${depth > 0
392
- ? html`
393
- <md-icon class="eye">${component.get('hidden') ? 'visibility_off' : 'visibility'}</md-icon>
394
- <pre>${' '.repeat(depth)}</pre>
395
- `
396
- : html` <pre>${' '.repeat(depth + 2)}</pre> `}
397
-
398
- <span class=${this.getNodeHandleClass(component)}> </span>
399
-
400
- <span class="type">${depth == 0 ? html`ROOT(count: ${this.count})` : type}</span>
401
- ${name ? html` <span class="name">${name}</span> ` : html``}
402
- </span>
403
-
404
- ${extended.map(child => this.renderComponent(child, depth + 1))}
405
- </div>
406
- `
407
- }
408
- }
@@ -1,136 +0,0 @@
1
- /**
2
- * @license Copyright © HatioLab Inc. All rights reserved.
3
- */
4
-
5
- import { css } from 'lit'
6
-
7
- export const PropertySharedStyle = css`
8
- fieldset {
9
- border: none;
10
- margin: 4px;
11
- padding: 9px 4px 9px 4px;
12
- border-bottom: var(--property-sidebar-fieldset-border);
13
- color: var(--property-sidebar-fieldset-legend-color, var(--md-sys-color-on-secondary-container));
14
- font: var(--property-sidebar-fieldset-label);
15
- }
16
-
17
- fieldset legend {
18
- padding: 5px 0 0 5px;
19
- color: var(--property-sidebar-fieldset-legend-color, var(--md-sys-color-on-secondary-container));
20
- font: var(--property-sidebar-fieldset-legend);
21
- text-transform: capitalize;
22
- }
23
-
24
- select,
25
- input {
26
- border: var(--property-sidebar-fieldset-border);
27
- }
28
-
29
- ox-input-data {
30
- height: 300px;
31
- }
32
-
33
- /* property grid */
34
- .property-grid {
35
- display: grid;
36
- grid-template-columns: repeat(10, 1fr);
37
- grid-gap: 5px;
38
- grid-auto-rows: minmax(24px, auto);
39
- align-items: center;
40
- }
41
-
42
- .property-grid > * {
43
- width: 100%;
44
- box-sizing: border-box;
45
- }
46
-
47
- .property-grid > label {
48
- grid-column: span 3;
49
- text-align: right;
50
- text-transform: capitalize;
51
- line-height: 2;
52
- }
53
-
54
- .property-grid > input,
55
- .property-grid > table,
56
- .property-grid > select,
57
- .property-grid > ox-input-angle,
58
- .property-grid > ox-buttons-radio,
59
- .property-grid > ox-input-color,
60
- [custom-editor] {
61
- grid-column: span 7;
62
- align-self: stretch;
63
- }
64
-
65
- .property-grid > .checkbox-row {
66
- grid-column: span 10;
67
- }
68
-
69
- .property-grid > .property-full-label {
70
- grid-column: span 3;
71
- text-align: right;
72
- text-transform: capitalize;
73
- }
74
-
75
- .property-grid > .property-half-label {
76
- grid-column: span 1;
77
- }
78
-
79
- .property-grid > .property-full-input {
80
- grid-column: span 7;
81
- }
82
-
83
- .property-grid > .property-half-input {
84
- grid-column: span 4;
85
- }
86
-
87
- /* checkbox-row */
88
- .checkbox-row {
89
- display: grid;
90
- grid-template-columns: repeat(10, 1fr);
91
- grid-gap: 5px;
92
- grid-auto-rows: minmax(24px, auto);
93
- align-items: center;
94
- }
95
-
96
- .checkbox-row > input {
97
- grid-column: 4 / 5;
98
- }
99
-
100
- .checkbox-row > label {
101
- grid-column: span 6;
102
- text-align: left;
103
- }
104
-
105
- /* image resources */
106
- .icon-only-label {
107
- grid-column: span 1;
108
-
109
- background: var(--url-icon-properties-label) no-repeat;
110
- float: left;
111
- margin: 0;
112
- align-self: stretch;
113
- }
114
-
115
- .icon-only-label.color {
116
- background-position: 100% -500px;
117
- }
118
- .icon-only-label.font-size {
119
- background-position: 100% -594px;
120
- }
121
- .icon-only-label.leading {
122
- background-position: 100% -696px;
123
- }
124
- .icon-only-label.hscale {
125
- background-position: 100% -296px;
126
- }
127
- .icon-only-label.vscale {
128
- background-position: 100% -396px;
129
- }
130
- .icon-only-label.linewidth {
131
- background-position: 100% -894px;
132
- }
133
- .icon-only-label.lineHeight {
134
- background-position: 100% -995px;
135
- }
136
- `