@operato/board 9.0.0-beta.6 → 9.0.0-beta.61

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 (94) hide show
  1. package/CHANGELOG.md +367 -0
  2. package/dist/src/modeller/component-toolbar/component-menu.d.ts +1 -1
  3. package/dist/src/modeller/component-toolbar/component-toolbar.d.ts +1 -1
  4. package/dist/src/modeller/edit-toolbar.js +21 -19
  5. package/dist/src/modeller/edit-toolbar.js.map +1 -1
  6. package/dist/src/modeller/{property-sidebar/property-sidebar.d.ts → property-sidebar.d.ts} +18 -17
  7. package/dist/src/modeller/{property-sidebar/property-sidebar.js → property-sidebar.js} +45 -30
  8. package/dist/src/modeller/property-sidebar.js.map +1 -0
  9. package/dist/src/ox-board-component-info.js +1 -1
  10. package/dist/src/ox-board-component-info.js.map +1 -1
  11. package/dist/src/ox-board-modeller.d.ts +2 -2
  12. package/dist/src/ox-board-modeller.js +2 -14
  13. package/dist/src/ox-board-modeller.js.map +1 -1
  14. package/dist/src/ox-board-viewer.js +18 -5
  15. package/dist/src/ox-board-viewer.js.map +1 -1
  16. package/dist/src/player/ox-board-wrapper.js +3 -1
  17. package/dist/src/player/ox-board-wrapper.js.map +1 -1
  18. package/dist/tsconfig.tsbuildinfo +1 -1
  19. package/package.json +15 -16
  20. package/dist/src/modeller/property-sidebar/abstract-property.d.ts +0 -10
  21. package/dist/src/modeller/property-sidebar/abstract-property.js +0 -55
  22. package/dist/src/modeller/property-sidebar/abstract-property.js.map +0 -1
  23. package/dist/src/modeller/property-sidebar/data-binding/data-binding-mapper.d.ts +0 -58
  24. package/dist/src/modeller/property-sidebar/data-binding/data-binding-mapper.js +0 -443
  25. package/dist/src/modeller/property-sidebar/data-binding/data-binding-mapper.js.map +0 -1
  26. package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-map.d.ts +0 -6
  27. package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-map.js +0 -20
  28. package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-map.js.map +0 -1
  29. package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-range.d.ts +0 -6
  30. package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-range.js +0 -20
  31. package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-range.js.map +0 -1
  32. package/dist/src/modeller/property-sidebar/data-binding/data-binding.d.ts +0 -44
  33. package/dist/src/modeller/property-sidebar/data-binding/data-binding.js +0 -458
  34. package/dist/src/modeller/property-sidebar/data-binding/data-binding.js.map +0 -1
  35. package/dist/src/modeller/property-sidebar/effects/effects-shared-style.d.ts +0 -4
  36. package/dist/src/modeller/property-sidebar/effects/effects-shared-style.js +0 -61
  37. package/dist/src/modeller/property-sidebar/effects/effects-shared-style.js.map +0 -1
  38. package/dist/src/modeller/property-sidebar/effects/effects.d.ts +0 -24
  39. package/dist/src/modeller/property-sidebar/effects/effects.js +0 -64
  40. package/dist/src/modeller/property-sidebar/effects/effects.js.map +0 -1
  41. package/dist/src/modeller/property-sidebar/effects/property-animation.d.ts +0 -23
  42. package/dist/src/modeller/property-sidebar/effects/property-animation.js +0 -138
  43. package/dist/src/modeller/property-sidebar/effects/property-animation.js.map +0 -1
  44. package/dist/src/modeller/property-sidebar/effects/property-animations.d.ts +0 -22
  45. package/dist/src/modeller/property-sidebar/effects/property-animations.js +0 -89
  46. package/dist/src/modeller/property-sidebar/effects/property-animations.js.map +0 -1
  47. package/dist/src/modeller/property-sidebar/effects/property-event-hover.d.ts +0 -21
  48. package/dist/src/modeller/property-sidebar/effects/property-event-hover.js +0 -182
  49. package/dist/src/modeller/property-sidebar/effects/property-event-hover.js.map +0 -1
  50. package/dist/src/modeller/property-sidebar/effects/property-event-tap.d.ts +0 -36
  51. package/dist/src/modeller/property-sidebar/effects/property-event-tap.js +0 -244
  52. package/dist/src/modeller/property-sidebar/effects/property-event-tap.js.map +0 -1
  53. package/dist/src/modeller/property-sidebar/effects/property-event.d.ts +0 -22
  54. package/dist/src/modeller/property-sidebar/effects/property-event.js +0 -64
  55. package/dist/src/modeller/property-sidebar/effects/property-event.js.map +0 -1
  56. package/dist/src/modeller/property-sidebar/effects/property-shadow.d.ts +0 -23
  57. package/dist/src/modeller/property-sidebar/effects/property-shadow.js +0 -103
  58. package/dist/src/modeller/property-sidebar/effects/property-shadow.js.map +0 -1
  59. package/dist/src/modeller/property-sidebar/effects/value-converter.d.ts +0 -1
  60. package/dist/src/modeller/property-sidebar/effects/value-converter.js +0 -21
  61. package/dist/src/modeller/property-sidebar/effects/value-converter.js.map +0 -1
  62. package/dist/src/modeller/property-sidebar/inspector/inspector.d.ts +0 -27
  63. package/dist/src/modeller/property-sidebar/inspector/inspector.js +0 -355
  64. package/dist/src/modeller/property-sidebar/inspector/inspector.js.map +0 -1
  65. package/dist/src/modeller/property-sidebar/property-shared-style.d.ts +0 -4
  66. package/dist/src/modeller/property-sidebar/property-shared-style.js +0 -135
  67. package/dist/src/modeller/property-sidebar/property-shared-style.js.map +0 -1
  68. package/dist/src/modeller/property-sidebar/property-sidebar.js.map +0 -1
  69. package/dist/src/modeller/property-sidebar/shapes/box-padding-editor-styles.d.ts +0 -1
  70. package/dist/src/modeller/property-sidebar/shapes/box-padding-editor-styles.js +0 -94
  71. package/dist/src/modeller/property-sidebar/shapes/box-padding-editor-styles.js.map +0 -1
  72. package/dist/src/modeller/property-sidebar/shapes/shapes.d.ts +0 -26
  73. package/dist/src/modeller/property-sidebar/shapes/shapes.js +0 -430
  74. package/dist/src/modeller/property-sidebar/shapes/shapes.js.map +0 -1
  75. package/dist/src/modeller/property-sidebar/specifics/specific-properties-builder.d.ts +0 -16
  76. package/dist/src/modeller/property-sidebar/specifics/specific-properties-builder.js +0 -138
  77. package/dist/src/modeller/property-sidebar/specifics/specific-properties-builder.js.map +0 -1
  78. package/dist/src/modeller/property-sidebar/specifics/specifics.d.ts +0 -25
  79. package/dist/src/modeller/property-sidebar/specifics/specifics.js +0 -84
  80. package/dist/src/modeller/property-sidebar/specifics/specifics.js.map +0 -1
  81. package/dist/src/modeller/property-sidebar/styles/styles.d.ts +0 -21
  82. package/dist/src/modeller/property-sidebar/styles/styles.js +0 -559
  83. package/dist/src/modeller/property-sidebar/styles/styles.js.map +0 -1
  84. package/dist/stories/property-data-binding.stories.d.ts +0 -20
  85. package/dist/stories/property-data-binding.stories.js +0 -19
  86. package/dist/stories/property-data-binding.stories.js.map +0 -1
  87. package/icons/icon-properties-arrow-type.png +0 -0
  88. package/icons/icon-properties-gradient-direction.png +0 -0
  89. package/icons/icon-properties-label.png +0 -0
  90. package/icons/icon-properties-line-type.png +0 -0
  91. package/icons/icon-properties-padding.png +0 -0
  92. package/icons/icon-properties-ratio.png +0 -0
  93. package/icons/icon-properties-table.png +0 -0
  94. package/icons/icon-shell-inspector.png +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@operato/board",
3
- "version": "9.0.0-beta.6",
3
+ "version": "9.0.0-beta.61",
4
4
  "description": "Webcomponent for board following open-wc recommendations",
5
5
  "author": "heartyoh",
6
6
  "type": "module",
@@ -100,26 +100,25 @@
100
100
  "dependencies": {
101
101
  "@material/web": "^2.0.0",
102
102
  "@open-wc/scoped-elements": "^2.1.3",
103
- "@operato/app": "^9.0.0-beta.6",
104
- "@operato/data-grist": "^9.0.0-beta.6",
105
- "@operato/font": "^9.0.0-beta.6",
106
- "@operato/graphql": "^9.0.0-beta.6",
107
- "@operato/i18n": "^9.0.0-beta.5",
108
- "@operato/input": "^9.0.0-beta.6",
109
- "@operato/layout": "^9.0.0-beta.6",
110
- "@operato/markdown": "^9.0.0-beta.6",
111
- "@operato/popup": "^9.0.0-beta.6",
112
- "@operato/property-editor": "^9.0.0-beta.6",
113
- "@operato/styles": "^9.0.0-beta.6",
114
- "@operato/utils": "^9.0.0-beta.6",
115
- "@polymer/paper-dropdown-menu": "^3.2.0",
103
+ "@operato/app": "^9.0.0-beta.61",
104
+ "@operato/data-grist": "^9.0.0-beta.61",
105
+ "@operato/font": "^9.0.0-beta.61",
106
+ "@operato/graphql": "^9.0.0-beta.38",
107
+ "@operato/i18n": "^9.0.0-beta.37",
108
+ "@operato/input": "^9.0.0-beta.61",
109
+ "@operato/layout": "^9.0.0-beta.52",
110
+ "@operato/markdown": "^9.0.0-beta.47",
111
+ "@operato/popup": "^9.0.0-beta.52",
112
+ "@operato/property-editor": "^9.0.0-beta.61",
113
+ "@operato/property-panel": "^9.0.0-beta.61",
114
+ "@operato/styles": "^9.0.0-beta.47",
115
+ "@operato/utils": "^9.0.0-beta.38",
116
116
  "@types/file-saver": "^2.0.4",
117
117
  "@types/sortablejs": "^1.10.7",
118
118
  "dexie": "^3.2.2",
119
119
  "file-saver": "^2.0.5",
120
120
  "lit": "^3.1.2",
121
121
  "lodash-es": "^4.17.21",
122
- "sortablejs": "^1.15.2",
123
122
  "xlsx": "^0.18.5"
124
123
  },
125
124
  "devDependencies": {
@@ -160,5 +159,5 @@
160
159
  "prettier --write"
161
160
  ]
162
161
  },
163
- "gitHead": "7e4dd57049f0a3dd0cbd194f7998e81f3b2c7559"
162
+ "gitHead": "2469f2daf34c6a03152eaac0faa181c65090ca6f"
164
163
  }
@@ -1,10 +0,0 @@
1
- /**
2
- * @license Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- import { LitElement } from 'lit';
5
- export declare class AbstractProperty extends LitElement {
6
- firstUpdated(): void;
7
- _onValueChange(e: Event): void;
8
- _getValueFromEventTarget(element: HTMLElement): any;
9
- _onAfterValueChange(key: string, value: any): void;
10
- }
@@ -1,55 +0,0 @@
1
- /**
2
- * @license Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- import { LitElement } from 'lit';
5
- export class AbstractProperty extends LitElement {
6
- firstUpdated() {
7
- this.renderRoot.addEventListener('change', this._onValueChange.bind(this));
8
- }
9
- _onValueChange(e) {
10
- var element = e.target;
11
- var key = element.getAttribute('value-key');
12
- if (!key) {
13
- return;
14
- }
15
- var value = this._getValueFromEventTarget(element);
16
- this._onAfterValueChange(key, value);
17
- }
18
- _getValueFromEventTarget(element) {
19
- var value;
20
- switch (element.tagName) {
21
- case 'INPUT':
22
- switch (element.type) {
23
- case 'checkbox':
24
- value = element.checked;
25
- break;
26
- case 'number':
27
- value = Number(element.valueAsNumber);
28
- break;
29
- case 'text':
30
- value = String(element.value);
31
- }
32
- break;
33
- case 'PAPER-BUTTON':
34
- value = element.active;
35
- break;
36
- case 'PAPER-LISTBOX':
37
- value = element.selected;
38
- break;
39
- default:
40
- value = element.value;
41
- break;
42
- }
43
- return value;
44
- }
45
- _onAfterValueChange(key, value) {
46
- this.dispatchEvent(new CustomEvent('property-change', {
47
- bubbles: true,
48
- composed: true,
49
- detail: {
50
- [key]: value
51
- }
52
- }));
53
- }
54
- }
55
- //# sourceMappingURL=abstract-property.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"abstract-property.js","sourceRoot":"","sources":["../../../../src/modeller/property-sidebar/abstract-property.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAEhC,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAC9C,YAAY;QACV,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5E,CAAC;IAED,cAAc,CAAC,CAAQ;QACrB,IAAI,OAAO,GAAG,CAAC,CAAC,MAAqB,CAAA;QACrC,IAAI,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;QAE3C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAM;QACR,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAA;QAElD,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACtC,CAAC;IAED,wBAAwB,CAAC,OAAoB;QAC3C,IAAI,KAAK,CAAA;QAET,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,KAAK,OAAO;gBACV,QAAS,OAAe,CAAC,IAAI,EAAE,CAAC;oBAC9B,KAAK,UAAU;wBACb,KAAK,GAAI,OAAe,CAAC,OAAO,CAAA;wBAChC,MAAK;oBACP,KAAK,QAAQ;wBACX,KAAK,GAAG,MAAM,CAAE,OAAe,CAAC,aAAa,CAAC,CAAA;wBAC9C,MAAK;oBACP,KAAK,MAAM;wBACT,KAAK,GAAG,MAAM,CAAE,OAAe,CAAC,KAAK,CAAC,CAAA;gBAC1C,CAAC;gBACD,MAAK;YAEP,KAAK,cAAc;gBACjB,KAAK,GAAI,OAAe,CAAC,MAAM,CAAA;gBAC/B,MAAK;YAEP,KAAK,eAAe;gBAClB,KAAK,GAAI,OAAe,CAAC,QAAQ,CAAA;gBACjC,MAAK;YAEP;gBACE,KAAK,GAAI,OAAe,CAAC,KAAK,CAAA;gBAC9B,MAAK;QACT,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,mBAAmB,CAAC,GAAW,EAAE,KAAU;QACzC,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,iBAAiB,EAAE;YACjC,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACN,CAAC,GAAG,CAAC,EAAE,KAAK;aACb;SACF,CAAC,CACH,CAAA;IACH,CAAC;CACF","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { LitElement } from 'lit'\n\nexport class AbstractProperty extends LitElement {\n firstUpdated() {\n this.renderRoot.addEventListener('change', this._onValueChange.bind(this))\n }\n\n _onValueChange(e: Event) {\n var element = e.target as HTMLElement\n var key = element.getAttribute('value-key')\n\n if (!key) {\n return\n }\n\n var value = this._getValueFromEventTarget(element)\n\n this._onAfterValueChange(key, value)\n }\n\n _getValueFromEventTarget(element: HTMLElement) {\n var value\n\n switch (element.tagName) {\n case 'INPUT':\n switch ((element as any).type) {\n case 'checkbox':\n value = (element as any).checked\n break\n case 'number':\n value = Number((element as any).valueAsNumber)\n break\n case 'text':\n value = String((element as any).value)\n }\n break\n\n case 'PAPER-BUTTON':\n value = (element as any).active\n break\n\n case 'PAPER-LISTBOX':\n value = (element as any).selected\n break\n\n default:\n value = (element as any).value\n break\n }\n\n return value\n }\n\n _onAfterValueChange(key: string, value: any) {\n this.dispatchEvent(\n new CustomEvent('property-change', {\n bubbles: true,\n composed: true,\n detail: {\n [key]: value\n }\n })\n )\n }\n}\n"]}
@@ -1,58 +0,0 @@
1
- /**
2
- * @license Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- import '@operato/input/ox-buttons-radio.js';
5
- import '@operato/input/ox-input-code.js';
6
- import '@operato/i18n/ox-i18n.js';
7
- import '@operato/help/ox-help-icon.js';
8
- import './data-binding-value-map.js';
9
- import './data-binding-value-range.js';
10
- import { LitElement, PropertyValues } from 'lit';
11
- import { Properties, Scene } from '@hatiolab/things-scene';
12
- export type Rule = {
13
- map?: Properties;
14
- range?: Properties[];
15
- eval?: string;
16
- } | any;
17
- export type Mapping = {
18
- source?: string;
19
- rule: 'map' | 'range' | 'eval' | 'value';
20
- accessor?: string;
21
- target?: string;
22
- property?: string;
23
- param?: Rule;
24
- ndnsp?: boolean;
25
- partial?: boolean;
26
- };
27
- /**
28
- element for mapping data value editing
29
-
30
- Example:
31
-
32
- <data-binding-mapper mapping=${mapping}>
33
- </data-binding-mapper>
34
- */
35
- export declare class DataBindingMapper extends LitElement {
36
- static styles: import("lit").CSSResult[];
37
- mapping: Mapping;
38
- rule: Rule;
39
- properties: Properties[];
40
- scene?: Scene;
41
- _valueTypes: any;
42
- _componentIds: {
43
- value: string;
44
- description: string;
45
- }[];
46
- editor: HTMLInputElement;
47
- source: HTMLInputElement;
48
- target: HTMLInputElement;
49
- firstUpdated(): void;
50
- updated(changes: PropertyValues<this>): void;
51
- findComponentIds(): void;
52
- render(): import("lit-html").TemplateResult<1>;
53
- _valuetype(property: string): any;
54
- private _keep_saved_rule_params;
55
- _onChangedMapping(): Promise<void>;
56
- _onChangeRule(e: Event): void;
57
- _onChange(e: Event): void;
58
- }
@@ -1,443 +0,0 @@
1
- /**
2
- * @license Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- import { __decorate } from "tslib";
5
- import '@operato/input/ox-buttons-radio.js';
6
- import '@operato/input/ox-input-code.js';
7
- import '@operato/i18n/ox-i18n.js';
8
- import '@operato/help/ox-help-icon.js';
9
- import './data-binding-value-map.js';
10
- import './data-binding-value-range.js';
11
- import { css, html, LitElement } from 'lit';
12
- import { property, query, state } from 'lit/decorators.js';
13
- /**
14
- element for mapping data value editing
15
-
16
- Example:
17
-
18
- <data-binding-mapper mapping=${mapping}>
19
- </data-binding-mapper>
20
- */
21
- export class DataBindingMapper extends LitElement {
22
- constructor() {
23
- super(...arguments);
24
- this.mapping = {
25
- rule: 'value'
26
- };
27
- this.rule = {};
28
- this.properties = [];
29
- this._valueTypes = {
30
- play: 'boolean',
31
- hidden: 'boolean',
32
- started: 'boolean',
33
- rotation: 'number',
34
- value: 'number',
35
- fillStyle: 'color',
36
- strokeStyle: 'color',
37
- fontColor: 'color',
38
- data: 'object',
39
- source: 'attachment',
40
- location: 'object',
41
- dimension: 'object',
42
- text: 'string',
43
- ref: 'string'
44
- };
45
- this._componentIds = [];
46
- this._keep_saved_rule_params = false;
47
- }
48
- firstUpdated() {
49
- this.renderRoot.addEventListener('change', e => this._onChange(e));
50
- }
51
- updated(changes) {
52
- changes.has('mapping') && this._onChangedMapping();
53
- }
54
- findComponentIds() {
55
- this._componentIds =
56
- (this.scene &&
57
- this.scene.ids.map(i => {
58
- var _a;
59
- const id = i.key;
60
- return { value: `#${id}`, description: (_a = this.scene.findById(id)) === null || _a === void 0 ? void 0 : _a.get('type') };
61
- })) ||
62
- [];
63
- }
64
- render() {
65
- const mapping = this.mapping || {
66
- rule: 'value'
67
- };
68
- return html `
69
- <label for="source-input"> <ox-i18n msgid="label.source">source</ox-i18n> </label>
70
- <input
71
- id="source-input"
72
- type="text"
73
- value-key="source"
74
- list="source-list"
75
- .value=${mapping.source || ''}
76
- @focusin=${() => this.findComponentIds()}
77
- />
78
-
79
- <label for="accessor-input">
80
- <ox-i18n msgid="label.accessor">accessor</ox-i18n><ox-help-icon topic="board-modeller/accessor"></ox-help-icon>
81
- </label>
82
- <input
83
- id="accessor-input"
84
- value-key="accessor"
85
- type="text"
86
- data-mapping-accessor
87
- .value=${mapping.accessor || ''}
88
- />
89
-
90
- <label for="target-input"> <ox-i18n msgid="label.target">target</ox-i18n> </label>
91
- <input
92
- id="target-input"
93
- type="text"
94
- value-key="target"
95
- list="target-list"
96
- .value=${mapping.target || ''}
97
- @focusin=${() => this.findComponentIds()}
98
- />
99
-
100
- <datalist id="source-list">
101
- <option value="(self)"></option>
102
- ${this._componentIds.length
103
- ? html `
104
- ${this._componentIds.map(({ value, description }) => html ` <option value=${value}>${description}</option> `)}
105
- `
106
- : html ``}
107
- </datalist>
108
-
109
- <datalist id="target-list">
110
- <option value="(self)"></option>
111
- <option value="(children)"></option>
112
- <option value="(key)"></option>
113
- <option value="[propkey]"></option>
114
- ${this._componentIds.length
115
- ? html `
116
- ${this._componentIds.map(({ value, description }) => html ` <option value=${value}>${description}</option> `)}
117
- `
118
- : html ``}
119
- </datalist>
120
-
121
- <label for="property-input">
122
- <ox-i18n msgid="label.property">property</ox-i18n
123
- ><ox-help-icon topic="board-modeller/data-binding-property"></ox-help-icon
124
- ></label>
125
- <select id="property-input" value-key="property" .value=${mapping.property || ''}>
126
- ${this.properties.map(item => html ` <option .value=${item.name} ?selected=${item.name == mapping.property}>${item.label}</option> `)}
127
- </select>
128
-
129
- <label> <ox-i18n msgid="label.rule-type">rule type</ox-i18n> </label>
130
- <ox-buttons-radio .value=${mapping.rule} @change=${(e) => this._onChangeRule(e)}>
131
- <div data-value="value"><ox-i18n msgid="label.value"></ox-i18n></div>
132
- <div data-value="map"><ox-i18n msgid="label.map"></ox-i18n></div>
133
- <div data-value="range"><ox-i18n msgid="label.range"></ox-i18n></div>
134
- <div data-value="eval"><ox-i18n msgid="label.eval"></ox-i18n></div>
135
- </ox-buttons-radio>
136
-
137
- <div rule-editors ?hidden=${mapping.rule == 'value'}>
138
- <data-binding-value-map
139
- value-key="map"
140
- .value=${this.rule.map || {}}
141
- .valuetype=${this._valuetype(mapping.property)}
142
- ?active=${mapping.rule == 'map'}
143
- >
144
- </data-binding-value-map>
145
-
146
- <data-binding-value-range
147
- value-key="range"
148
- .value=${this.rule.range || []}
149
- .valuetype=${this._valuetype(mapping.property)}
150
- ?active=${mapping.rule == 'range'}
151
- >
152
- </data-binding-value-range>
153
-
154
- <ox-input-code
155
- value-key="eval"
156
- id="eval-editor"
157
- .value=${this.rule.eval || ''}
158
- ?active=${mapping.rule == 'eval'}
159
- language="javascript"
160
- >
161
- </ox-input-code>
162
- </div>
163
-
164
- <div class="checkbox-row">
165
- <input id="checkbox-partial" type="checkbox" value-key="partial" .checked=${mapping.partial === true} />
166
- <label for="checkbox-partial"> <ox-i18n msgid="label.partial-spreading">Partial Spreading</ox-i18n> </label>
167
- </div>
168
-
169
- <div class="checkbox-row">
170
- <input id="checkbox-ndnsp" type="checkbox" value-key="ndnsp" .checked=${mapping.ndnsp === true} />
171
- <label for="checkbox-ndnsp"> <ox-i18n msgid="label.ndnsp">No Data No Spreading</ox-i18n> </label>
172
- </div>
173
- `;
174
- }
175
- _valuetype(property) {
176
- return this._valueTypes[property] || 'string';
177
- }
178
- async _onChangedMapping() {
179
- if (this._keep_saved_rule_params) {
180
- this._keep_saved_rule_params = false;
181
- }
182
- else {
183
- await this.updateComplete;
184
- var rule = {};
185
- if (this.mapping) {
186
- switch (this.mapping.rule) {
187
- case 'map':
188
- rule.map = this.mapping.param || {};
189
- break;
190
- case 'range':
191
- rule.range = this.mapping.param || [];
192
- break;
193
- case 'eval':
194
- rule.eval = this.mapping.param || '';
195
- break;
196
- default:
197
- this.mapping.rule = 'value';
198
- break;
199
- }
200
- }
201
- this.rule = rule;
202
- this.requestUpdate();
203
- }
204
- }
205
- _onChangeRule(e) {
206
- var element = e.target;
207
- var value = element.value;
208
- let param;
209
- switch (value) {
210
- case 'map':
211
- param = this.rule.map;
212
- break;
213
- case 'range':
214
- param = this.rule.range;
215
- break;
216
- case 'eval':
217
- param = this.rule.eval || '';
218
- // rule.eval에 값이 없을 때, ace-editor 내용이 초기화되지 않는 문제때문에 처리함.
219
- if (!param) {
220
- this.editor.value = 'return';
221
- }
222
- break;
223
- default:
224
- }
225
- this.mapping = {
226
- ...this.mapping,
227
- rule: value,
228
- param
229
- };
230
- this._keep_saved_rule_params = true;
231
- this.dispatchEvent(new CustomEvent('value-change', { bubbles: true, composed: true }));
232
- }
233
- _onChange(e) {
234
- var element = e.target;
235
- var key = element.getAttribute('value-key');
236
- if (!key)
237
- return;
238
- var value = element.value;
239
- if (key === 'source') {
240
- if (value.length > 0) {
241
- value = value.trim();
242
- this.source.value = value;
243
- }
244
- this.mapping = {
245
- ...this.mapping,
246
- source: value
247
- };
248
- }
249
- else if (key === 'target') {
250
- if (value.length > 0 && !/^[.#(\[]/.test(value)) {
251
- value = '#' + value.trim();
252
- this.target.value = value;
253
- }
254
- this.mapping = {
255
- ...this.mapping,
256
- target: value
257
- };
258
- }
259
- else if (key === 'accessor') {
260
- this.mapping = {
261
- ...this.mapping,
262
- accessor: (value || '').trim()
263
- };
264
- }
265
- else if (key === 'property') {
266
- this.mapping = {
267
- ...this.mapping,
268
- property: (value || '').trim()
269
- };
270
- }
271
- else if (key === 'map' || key === 'range' || key === 'eval') {
272
- this.rule[key] = value;
273
- this.mapping = {
274
- ...this.mapping,
275
- param: value
276
- };
277
- }
278
- else if (key === 'ndnsp' /* no data no spreading */) {
279
- value = element.checked;
280
- this.mapping = {
281
- ...this.mapping,
282
- ndnsp: value
283
- };
284
- }
285
- else if (key === 'partial' /* partial spreading */) {
286
- value = element.checked;
287
- this.mapping = {
288
- ...this.mapping,
289
- partial: value
290
- };
291
- }
292
- if (!this.mapping.rule) {
293
- this.mapping.rule = 'value';
294
- }
295
- this._keep_saved_rule_params = true;
296
- this.dispatchEvent(new CustomEvent('value-change', {
297
- bubbles: true,
298
- composed: true,
299
- detail: {
300
- changed: {
301
- [key]: value
302
- }
303
- }
304
- }));
305
- }
306
- }
307
- DataBindingMapper.styles = [
308
- css `
309
- :host {
310
- background-color: var(--md-sys-color-surface);
311
- color: var(--md-sys-color-on-surface);
312
- overflow: hidden;
313
- padding: 7px 0 0 0;
314
- border: 1px solid rgba(0, 0, 0, 0.2);
315
- border-width: 0 1px 1px 1px;
316
- padding: 4px;
317
- line-height: 2;
318
-
319
- display: grid;
320
- grid-template-columns: repeat(10, 1fr);
321
- grid-gap: 4px;
322
- grid-auto-rows: minmax(24px, auto);
323
-
324
- align-items: center;
325
- }
326
-
327
- :host > * {
328
- align-self: stretch;
329
- }
330
-
331
- label {
332
- grid-column: span 3;
333
- text-align: right;
334
- text-transform: capitalize;
335
- }
336
-
337
- input,
338
- select,
339
- ox-buttons-radio,
340
- [mapping-rule] {
341
- grid-column: span 7;
342
- }
343
- input,
344
- select {
345
- border: var(--property-sidebar-fieldset-border);
346
- }
347
-
348
- ox-buttons-radio {
349
- display: flex;
350
- padding: 0 4px;
351
- }
352
-
353
- ox-buttons-radio > * {
354
- text-align: center;
355
- flex: 1;
356
- margin: 2px;
357
- border-bottom: 2px solid #fff;
358
- }
359
-
360
- ox-buttons-radio div[active] {
361
- border-color: #f2471c;
362
- }
363
-
364
- select {
365
- height: 22px;
366
- }
367
-
368
- [mapping-rule] {
369
- display: flex;
370
- }
371
-
372
- [mapping-rule] * {
373
- flex: auto;
374
- margin: 0;
375
- text-align: left;
376
- align-self: center;
377
- }
378
-
379
- [rule-editors] {
380
- grid-column: span 10;
381
-
382
- display: 'flex';
383
- align-content: auto;
384
- }
385
-
386
- [rule-editors] :not([active]) {
387
- display: none;
388
- }
389
-
390
- ox-input-code {
391
- height: 300px;
392
- overflow: auto;
393
- }
394
-
395
- /* checkbox-row */
396
- .checkbox-row {
397
- grid-column: span 10;
398
-
399
- display: grid;
400
- grid-template-columns: repeat(10, 1fr);
401
- grid-gap: 5px;
402
- grid-auto-rows: minmax(24px, auto);
403
- align-items: center;
404
- }
405
-
406
- .checkbox-row > input {
407
- grid-column: 4 / 5;
408
- }
409
-
410
- .checkbox-row > label {
411
- grid-column: span 6;
412
- text-align: left;
413
- }
414
- `
415
- ];
416
- __decorate([
417
- property({ type: Object })
418
- ], DataBindingMapper.prototype, "mapping", void 0);
419
- __decorate([
420
- property({ type: Object })
421
- ], DataBindingMapper.prototype, "rule", void 0);
422
- __decorate([
423
- property({ type: Array })
424
- ], DataBindingMapper.prototype, "properties", void 0);
425
- __decorate([
426
- property({ type: Object })
427
- ], DataBindingMapper.prototype, "scene", void 0);
428
- __decorate([
429
- state()
430
- ], DataBindingMapper.prototype, "_valueTypes", void 0);
431
- __decorate([
432
- state()
433
- ], DataBindingMapper.prototype, "_componentIds", void 0);
434
- __decorate([
435
- query('#eval-editor')
436
- ], DataBindingMapper.prototype, "editor", void 0);
437
- __decorate([
438
- query('#source-input')
439
- ], DataBindingMapper.prototype, "source", void 0);
440
- __decorate([
441
- query('#target-input')
442
- ], DataBindingMapper.prototype, "target", void 0);
443
- //# sourceMappingURL=data-binding-mapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-binding-mapper.js","sourceRoot":"","sources":["../../../../../src/modeller/property-sidebar/data-binding/data-binding-mapper.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport '@operato/input/ox-buttons-radio.js'\nimport '@operato/input/ox-input-code.js'\nimport '@operato/i18n/ox-i18n.js'\nimport '@operato/help/ox-help-icon.js'\nimport './data-binding-value-map.js'\nimport './data-binding-value-range.js'\n\nimport { css, html, LitElement, PropertyValues } from 'lit'\nimport { property, query, state } from 'lit/decorators.js'\n\nimport { Properties, Scene } from '@hatiolab/things-scene'\n\nexport type Rule =\n | {\n map?: Properties\n range?: Properties[]\n eval?: string\n }\n | any\n\nexport type Mapping = {\n source?: string\n rule: 'map' | 'range' | 'eval' | 'value'\n accessor?: string\n target?: string\n property?: string\n param?: Rule\n ndnsp?: boolean\n partial?: boolean\n}\n\n/**\nelement for mapping data value editing\n\nExample:\n\n <data-binding-mapper mapping=${mapping}>\n </data-binding-mapper>\n*/\n\nexport class DataBindingMapper extends LitElement {\n static styles = [\n css`\n :host {\n background-color: var(--md-sys-color-surface);\n color: var(--md-sys-color-on-surface);\n overflow: hidden;\n padding: 7px 0 0 0;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-width: 0 1px 1px 1px;\n padding: 4px;\n line-height: 2;\n\n display: grid;\n grid-template-columns: repeat(10, 1fr);\n grid-gap: 4px;\n grid-auto-rows: minmax(24px, auto);\n\n align-items: center;\n }\n\n :host > * {\n align-self: stretch;\n }\n\n label {\n grid-column: span 3;\n text-align: right;\n text-transform: capitalize;\n }\n\n input,\n select,\n ox-buttons-radio,\n [mapping-rule] {\n grid-column: span 7;\n }\n input,\n select {\n border: var(--property-sidebar-fieldset-border);\n }\n\n ox-buttons-radio {\n display: flex;\n padding: 0 4px;\n }\n\n ox-buttons-radio > * {\n text-align: center;\n flex: 1;\n margin: 2px;\n border-bottom: 2px solid #fff;\n }\n\n ox-buttons-radio div[active] {\n border-color: #f2471c;\n }\n\n select {\n height: 22px;\n }\n\n [mapping-rule] {\n display: flex;\n }\n\n [mapping-rule] * {\n flex: auto;\n margin: 0;\n text-align: left;\n align-self: center;\n }\n\n [rule-editors] {\n grid-column: span 10;\n\n display: 'flex';\n align-content: auto;\n }\n\n [rule-editors] :not([active]) {\n display: none;\n }\n\n ox-input-code {\n height: 300px;\n overflow: auto;\n }\n\n /* checkbox-row */\n .checkbox-row {\n grid-column: span 10;\n\n display: grid;\n grid-template-columns: repeat(10, 1fr);\n grid-gap: 5px;\n grid-auto-rows: minmax(24px, auto);\n align-items: center;\n }\n\n .checkbox-row > input {\n grid-column: 4 / 5;\n }\n\n .checkbox-row > label {\n grid-column: span 6;\n text-align: left;\n }\n `\n ]\n\n @property({ type: Object }) mapping: Mapping = {\n rule: 'value'\n }\n @property({ type: Object }) rule: Rule = {}\n @property({ type: Array }) properties: Properties[] = []\n @property({ type: Object }) scene?: Scene\n\n @state() _valueTypes: any = {\n play: 'boolean',\n hidden: 'boolean',\n started: 'boolean',\n\n rotation: 'number',\n value: 'number',\n\n fillStyle: 'color',\n strokeStyle: 'color',\n fontColor: 'color',\n\n data: 'object',\n source: 'attachment',\n location: 'object',\n dimension: 'object',\n\n text: 'string',\n ref: 'string'\n }\n @state() _componentIds: { value: string; description: string }[] = []\n\n @query('#eval-editor') editor!: HTMLInputElement\n @query('#source-input') source!: HTMLInputElement\n @query('#target-input') target!: HTMLInputElement\n\n firstUpdated() {\n this.renderRoot.addEventListener('change', e => this._onChange(e))\n }\n\n updated(changes: PropertyValues<this>) {\n changes.has('mapping') && this._onChangedMapping()\n }\n\n findComponentIds() {\n this._componentIds =\n (this.scene &&\n this.scene.ids.map(i => {\n const id = i.key\n return { value: `#${id}`, description: this.scene!.findById(id)?.get('type') }\n })) ||\n []\n }\n\n render() {\n const mapping = this.mapping || {\n rule: 'value'\n }\n\n return html`\n <label for=\"source-input\"> <ox-i18n msgid=\"label.source\">source</ox-i18n> </label>\n <input\n id=\"source-input\"\n type=\"text\"\n value-key=\"source\"\n list=\"source-list\"\n .value=${mapping.source || ''}\n @focusin=${() => this.findComponentIds()}\n />\n\n <label for=\"accessor-input\">\n <ox-i18n msgid=\"label.accessor\">accessor</ox-i18n><ox-help-icon topic=\"board-modeller/accessor\"></ox-help-icon>\n </label>\n <input\n id=\"accessor-input\"\n value-key=\"accessor\"\n type=\"text\"\n data-mapping-accessor\n .value=${mapping.accessor || ''}\n />\n\n <label for=\"target-input\"> <ox-i18n msgid=\"label.target\">target</ox-i18n> </label>\n <input\n id=\"target-input\"\n type=\"text\"\n value-key=\"target\"\n list=\"target-list\"\n .value=${mapping.target || ''}\n @focusin=${() => this.findComponentIds()}\n />\n\n <datalist id=\"source-list\">\n <option value=\"(self)\"></option>\n ${this._componentIds.length\n ? html`\n ${this._componentIds.map(\n ({ value, description }) => html` <option value=${value}>${description}</option> `\n )}\n `\n : html``}\n </datalist>\n\n <datalist id=\"target-list\">\n <option value=\"(self)\"></option>\n <option value=\"(children)\"></option>\n <option value=\"(key)\"></option>\n <option value=\"[propkey]\"></option>\n ${this._componentIds.length\n ? html`\n ${this._componentIds.map(\n ({ value, description }) => html` <option value=${value}>${description}</option> `\n )}\n `\n : html``}\n </datalist>\n\n <label for=\"property-input\">\n <ox-i18n msgid=\"label.property\">property</ox-i18n\n ><ox-help-icon topic=\"board-modeller/data-binding-property\"></ox-help-icon\n ></label>\n <select id=\"property-input\" value-key=\"property\" .value=${mapping.property || ''}>\n ${this.properties.map(\n item => html` <option .value=${item.name} ?selected=${item.name == mapping.property}>${item.label}</option> `\n )}\n </select>\n\n <label> <ox-i18n msgid=\"label.rule-type\">rule type</ox-i18n> </label>\n <ox-buttons-radio .value=${mapping.rule} @change=${(e: Event) => this._onChangeRule(e)}>\n <div data-value=\"value\"><ox-i18n msgid=\"label.value\"></ox-i18n></div>\n <div data-value=\"map\"><ox-i18n msgid=\"label.map\"></ox-i18n></div>\n <div data-value=\"range\"><ox-i18n msgid=\"label.range\"></ox-i18n></div>\n <div data-value=\"eval\"><ox-i18n msgid=\"label.eval\"></ox-i18n></div>\n </ox-buttons-radio>\n\n <div rule-editors ?hidden=${mapping.rule == 'value'}>\n <data-binding-value-map\n value-key=\"map\"\n .value=${this.rule.map || {}}\n .valuetype=${this._valuetype(mapping.property!)}\n ?active=${mapping.rule == 'map'}\n >\n </data-binding-value-map>\n\n <data-binding-value-range\n value-key=\"range\"\n .value=${this.rule.range || []}\n .valuetype=${this._valuetype(mapping.property!)}\n ?active=${mapping.rule == 'range'}\n >\n </data-binding-value-range>\n\n <ox-input-code\n value-key=\"eval\"\n id=\"eval-editor\"\n .value=${this.rule.eval || ''}\n ?active=${mapping.rule == 'eval'}\n language=\"javascript\"\n >\n </ox-input-code>\n </div>\n\n <div class=\"checkbox-row\">\n <input id=\"checkbox-partial\" type=\"checkbox\" value-key=\"partial\" .checked=${mapping.partial === true} />\n <label for=\"checkbox-partial\"> <ox-i18n msgid=\"label.partial-spreading\">Partial Spreading</ox-i18n> </label>\n </div>\n\n <div class=\"checkbox-row\">\n <input id=\"checkbox-ndnsp\" type=\"checkbox\" value-key=\"ndnsp\" .checked=${mapping.ndnsp === true} />\n <label for=\"checkbox-ndnsp\"> <ox-i18n msgid=\"label.ndnsp\">No Data No Spreading</ox-i18n> </label>\n </div>\n `\n }\n\n _valuetype(property: string) {\n return this._valueTypes[property] || 'string'\n }\n\n private _keep_saved_rule_params: boolean = false\n\n async _onChangedMapping() {\n if (this._keep_saved_rule_params) {\n this._keep_saved_rule_params = false\n } else {\n await this.updateComplete\n\n var rule: Rule = {}\n\n if (this.mapping) {\n switch (this.mapping.rule) {\n case 'map':\n rule.map = this.mapping.param || {}\n break\n case 'range':\n rule.range = this.mapping.param || []\n break\n case 'eval':\n rule.eval = this.mapping.param || ''\n break\n default:\n this.mapping.rule = 'value'\n break\n }\n }\n\n this.rule = rule\n this.requestUpdate()\n }\n }\n\n _onChangeRule(e: Event) {\n var element = e.target as HTMLInputElement\n var value = element.value\n\n let param\n\n switch (value) {\n case 'map':\n param = this.rule.map\n break\n case 'range':\n param = this.rule.range\n break\n case 'eval':\n param = this.rule.eval || ''\n\n // rule.eval에 값이 없을 때, ace-editor 내용이 초기화되지 않는 문제때문에 처리함.\n if (!param) {\n this.editor.value = 'return'\n }\n break\n default:\n }\n\n this.mapping = {\n ...this.mapping,\n rule: value as 'value' | 'map' | 'range' | 'eval',\n param\n }\n\n this._keep_saved_rule_params = true\n this.dispatchEvent(new CustomEvent('value-change', { bubbles: true, composed: true }))\n }\n\n _onChange(e: Event) {\n var element = e.target as HTMLInputElement\n var key = element.getAttribute('value-key')\n\n if (!key) return\n\n var value: string | boolean = element.value\n\n if (key === 'source') {\n if (value.length > 0) {\n value = value.trim()\n\n this.source.value = value\n }\n\n this.mapping = {\n ...this.mapping,\n source: value\n }\n } else if (key === 'target') {\n if (value.length > 0 && !/^[.#(\\[]/.test(value)) {\n value = '#' + value.trim()\n\n this.target.value = value\n }\n\n this.mapping = {\n ...this.mapping,\n target: value\n }\n } else if (key === 'accessor') {\n this.mapping = {\n ...this.mapping,\n accessor: (value || '').trim()\n }\n } else if (key === 'property') {\n this.mapping = {\n ...this.mapping,\n property: (value || '').trim()\n }\n } else if (key === 'map' || key === 'range' || key === 'eval') {\n this.rule[key] = value\n this.mapping = {\n ...this.mapping,\n param: value\n }\n } else if (key === 'ndnsp' /* no data no spreading */) {\n value = element.checked\n\n this.mapping = {\n ...this.mapping,\n ndnsp: value\n }\n } else if (key === 'partial' /* partial spreading */) {\n value = element.checked\n\n this.mapping = {\n ...this.mapping,\n partial: value\n }\n }\n\n if (!this.mapping.rule) {\n this.mapping.rule = 'value'\n }\n\n this._keep_saved_rule_params = true\n this.dispatchEvent(\n new CustomEvent('value-change', {\n bubbles: true,\n composed: true,\n detail: {\n changed: {\n [key]: value\n }\n }\n })\n )\n }\n}\n"]}