@fmsim/board 0.0.49
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.
- package/.storybook/main.js +3 -0
- package/.storybook/server.mjs +8 -0
- package/custom-elements.json +6500 -0
- package/demo/index-modeller.html +102 -0
- package/demo/index-player.html +101 -0
- package/demo/index-viewer.html +101 -0
- package/demo/index.html +101 -0
- package/dist/src/component/etc.d.ts +2 -0
- package/dist/src/component/etc.js +104 -0
- package/dist/src/component/etc.js.map +1 -0
- package/dist/src/component/index.d.ts +1 -0
- package/dist/src/component/index.js +2 -0
- package/dist/src/component/index.js.map +1 -0
- package/dist/src/component/register-default-groups.d.ts +1 -0
- package/dist/src/component/register-default-groups.js +6 -0
- package/dist/src/component/register-default-groups.js.map +1 -0
- package/dist/src/data-storage/data-storage.d.ts +8 -0
- package/dist/src/data-storage/data-storage.js +28 -0
- package/dist/src/data-storage/data-storage.js.map +1 -0
- package/dist/src/graphql/board.d.ts +6 -0
- package/dist/src/graphql/board.js +139 -0
- package/dist/src/graphql/board.js.map +1 -0
- package/dist/src/graphql/data-subscription.d.ts +5 -0
- package/dist/src/graphql/data-subscription.js +24 -0
- package/dist/src/graphql/data-subscription.js.map +1 -0
- package/dist/src/graphql/favorite-board.d.ts +1 -0
- package/dist/src/graphql/favorite-board.js +23 -0
- package/dist/src/graphql/favorite-board.js.map +1 -0
- package/dist/src/graphql/group.d.ts +7 -0
- package/dist/src/graphql/group.js +125 -0
- package/dist/src/graphql/group.js.map +1 -0
- package/dist/src/graphql/index.d.ts +4 -0
- package/dist/src/graphql/index.js +5 -0
- package/dist/src/graphql/index.js.map +1 -0
- package/dist/src/graphql/play-group.d.ts +8 -0
- package/dist/src/graphql/play-group.js +173 -0
- package/dist/src/graphql/play-group.js.map +1 -0
- package/dist/src/graphql/scenario.d.ts +6 -0
- package/dist/src/graphql/scenario.js +69 -0
- package/dist/src/graphql/scenario.js.map +1 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.js +7 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/layers/bouncing-arrow-decorator.d.ts +1 -0
- package/dist/src/layers/bouncing-arrow-decorator.js +40 -0
- package/dist/src/layers/bouncing-arrow-decorator.js.map +1 -0
- package/dist/src/layers/event-handlers.d.ts +1 -0
- package/dist/src/layers/event-handlers.js +70 -0
- package/dist/src/layers/event-handlers.js.map +1 -0
- package/dist/src/layers/mcs-event-handlers.d.ts +1 -0
- package/dist/src/layers/mcs-event-handlers.js +73 -0
- package/dist/src/layers/mcs-event-handlers.js.map +1 -0
- package/dist/src/layers/movement-layer.d.ts +27 -0
- package/dist/src/layers/movement-layer.js +109 -0
- package/dist/src/layers/movement-layer.js.map +1 -0
- package/dist/src/layers/ox-mini-map.d.ts +1 -0
- package/dist/src/layers/ox-mini-map.js +189 -0
- package/dist/src/layers/ox-mini-map.js.map +1 -0
- package/dist/src/layers/scroll-layer.d.ts +24 -0
- package/dist/src/layers/scroll-layer.js +125 -0
- package/dist/src/layers/scroll-layer.js.map +1 -0
- package/dist/src/layers/shift-handler.d.ts +1 -0
- package/dist/src/layers/shift-handler.js +38 -0
- package/dist/src/layers/shift-handler.js.map +1 -0
- package/dist/src/layers/zoom-handler.d.ts +1 -0
- package/dist/src/layers/zoom-handler.js +36 -0
- package/dist/src/layers/zoom-handler.js.map +1 -0
- package/dist/src/modeller/component-toolbar/component-detail.d.ts +12 -0
- package/dist/src/modeller/component-toolbar/component-detail.js +53 -0
- package/dist/src/modeller/component-toolbar/component-detail.js.map +1 -0
- package/dist/src/modeller/component-toolbar/component-menu.d.ts +27 -0
- package/dist/src/modeller/component-toolbar/component-menu.js +192 -0
- package/dist/src/modeller/component-toolbar/component-menu.js.map +1 -0
- package/dist/src/modeller/component-toolbar/component-toolbar.d.ts +30 -0
- package/dist/src/modeller/component-toolbar/component-toolbar.js +188 -0
- package/dist/src/modeller/component-toolbar/component-toolbar.js.map +1 -0
- package/dist/src/modeller/component-toolbar/mode-icons.d.ts +2 -0
- package/dist/src/modeller/component-toolbar/mode-icons.js +86 -0
- package/dist/src/modeller/component-toolbar/mode-icons.js.map +1 -0
- package/dist/src/modeller/edit-toolbar-style.d.ts +4 -0
- package/dist/src/modeller/edit-toolbar-style.js +227 -0
- package/dist/src/modeller/edit-toolbar-style.js.map +1 -0
- package/dist/src/modeller/edit-toolbar.d.ts +61 -0
- package/dist/src/modeller/edit-toolbar.js +646 -0
- package/dist/src/modeller/edit-toolbar.js.map +1 -0
- package/dist/src/modeller/property-sidebar/abstract-property.d.ts +10 -0
- package/dist/src/modeller/property-sidebar/abstract-property.js +55 -0
- package/dist/src/modeller/property-sidebar/abstract-property.js.map +1 -0
- package/dist/src/modeller/property-sidebar/data-binding/data-binding-mapper.d.ts +54 -0
- package/dist/src/modeller/property-sidebar/data-binding/data-binding-mapper.js +392 -0
- package/dist/src/modeller/property-sidebar/data-binding/data-binding-mapper.js.map +1 -0
- package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-map.d.ts +6 -0
- package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-map.js +19 -0
- package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-map.js.map +1 -0
- package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-range.d.ts +6 -0
- package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-range.js +19 -0
- package/dist/src/modeller/property-sidebar/data-binding/data-binding-value-range.js.map +1 -0
- package/dist/src/modeller/property-sidebar/data-binding/data-binding.d.ts +43 -0
- package/dist/src/modeller/property-sidebar/data-binding/data-binding.js +416 -0
- package/dist/src/modeller/property-sidebar/data-binding/data-binding.js.map +1 -0
- package/dist/src/modeller/property-sidebar/effects/effects-shared-style.d.ts +4 -0
- package/dist/src/modeller/property-sidebar/effects/effects-shared-style.js +61 -0
- package/dist/src/modeller/property-sidebar/effects/effects-shared-style.js.map +1 -0
- package/dist/src/modeller/property-sidebar/effects/effects.d.ts +22 -0
- package/dist/src/modeller/property-sidebar/effects/effects.js +46 -0
- package/dist/src/modeller/property-sidebar/effects/effects.js.map +1 -0
- package/dist/src/modeller/property-sidebar/effects/property-event-hover.d.ts +20 -0
- package/dist/src/modeller/property-sidebar/effects/property-event-hover.js +128 -0
- package/dist/src/modeller/property-sidebar/effects/property-event-hover.js.map +1 -0
- package/dist/src/modeller/property-sidebar/effects/property-event-tap.d.ts +28 -0
- package/dist/src/modeller/property-sidebar/effects/property-event-tap.js +190 -0
- package/dist/src/modeller/property-sidebar/effects/property-event-tap.js.map +1 -0
- package/dist/src/modeller/property-sidebar/effects/property-event.d.ts +22 -0
- package/dist/src/modeller/property-sidebar/effects/property-event.js +55 -0
- package/dist/src/modeller/property-sidebar/effects/property-event.js.map +1 -0
- package/dist/src/modeller/property-sidebar/effects/property-shadow.d.ts +23 -0
- package/dist/src/modeller/property-sidebar/effects/property-shadow.js +103 -0
- package/dist/src/modeller/property-sidebar/effects/property-shadow.js.map +1 -0
- package/dist/src/modeller/property-sidebar/effects/value-converter.d.ts +1 -0
- package/dist/src/modeller/property-sidebar/effects/value-converter.js +21 -0
- package/dist/src/modeller/property-sidebar/effects/value-converter.js.map +1 -0
- package/dist/src/modeller/property-sidebar/inspector/inspector.d.ts +29 -0
- package/dist/src/modeller/property-sidebar/inspector/inspector.js +334 -0
- package/dist/src/modeller/property-sidebar/inspector/inspector.js.map +1 -0
- package/dist/src/modeller/property-sidebar/property-shared-style.d.ts +4 -0
- package/dist/src/modeller/property-sidebar/property-shared-style.js +135 -0
- package/dist/src/modeller/property-sidebar/property-shared-style.js.map +1 -0
- package/dist/src/modeller/property-sidebar/property-sidebar.d.ts +47 -0
- package/dist/src/modeller/property-sidebar/property-sidebar.js +324 -0
- package/dist/src/modeller/property-sidebar/property-sidebar.js.map +1 -0
- package/dist/src/modeller/property-sidebar/shapes/box-padding-editor-styles.d.ts +1 -0
- package/dist/src/modeller/property-sidebar/shapes/box-padding-editor-styles.js +94 -0
- package/dist/src/modeller/property-sidebar/shapes/box-padding-editor-styles.js.map +1 -0
- package/dist/src/modeller/property-sidebar/shapes/shapes.d.ts +25 -0
- package/dist/src/modeller/property-sidebar/shapes/shapes.js +354 -0
- package/dist/src/modeller/property-sidebar/shapes/shapes.js.map +1 -0
- package/dist/src/modeller/property-sidebar/specifics/specific-properties-builder.d.ts +16 -0
- package/dist/src/modeller/property-sidebar/specifics/specific-properties-builder.js +132 -0
- package/dist/src/modeller/property-sidebar/specifics/specific-properties-builder.js.map +1 -0
- package/dist/src/modeller/property-sidebar/specifics/specifics.d.ts +28 -0
- package/dist/src/modeller/property-sidebar/specifics/specifics.js +129 -0
- package/dist/src/modeller/property-sidebar/specifics/specifics.js.map +1 -0
- package/dist/src/modeller/property-sidebar/styles/styles.d.ts +21 -0
- package/dist/src/modeller/property-sidebar/styles/styles.js +559 -0
- package/dist/src/modeller/property-sidebar/styles/styles.js.map +1 -0
- package/dist/src/modeller/scene-viewer/confidential-overlay.d.ts +4 -0
- package/dist/src/modeller/scene-viewer/confidential-overlay.js +14 -0
- package/dist/src/modeller/scene-viewer/confidential-overlay.js.map +1 -0
- package/dist/src/modeller/scene-viewer/ox-scene-handler.d.ts +11 -0
- package/dist/src/modeller/scene-viewer/ox-scene-handler.js +36 -0
- package/dist/src/modeller/scene-viewer/ox-scene-handler.js.map +1 -0
- package/dist/src/modeller/scene-viewer/ox-scene-layer.d.ts +10 -0
- package/dist/src/modeller/scene-viewer/ox-scene-layer.js +42 -0
- package/dist/src/modeller/scene-viewer/ox-scene-layer.js.map +1 -0
- package/dist/src/modeller/scene-viewer/ox-scene-property.d.ts +6 -0
- package/dist/src/modeller/scene-viewer/ox-scene-property.js +19 -0
- package/dist/src/modeller/scene-viewer/ox-scene-property.js.map +1 -0
- package/dist/src/modeller/scene-viewer/ox-scene-viewer.d.ts +40 -0
- package/dist/src/modeller/scene-viewer/ox-scene-viewer.js +253 -0
- package/dist/src/modeller/scene-viewer/ox-scene-viewer.js.map +1 -0
- package/dist/src/ox-board-list.d.ts +2 -0
- package/dist/src/ox-board-list.js +425 -0
- package/dist/src/ox-board-list.js.map +1 -0
- package/dist/src/ox-board-modeller.d.ts +57 -0
- package/dist/src/ox-board-modeller.js +401 -0
- package/dist/src/ox-board-modeller.js.map +1 -0
- package/dist/src/ox-board-viewer-backup.d.ts +64 -0
- package/dist/src/ox-board-viewer-backup.js +529 -0
- package/dist/src/ox-board-viewer-backup.js.map +1 -0
- package/dist/src/ox-board-viewer-other.d.ts +19 -0
- package/dist/src/ox-board-viewer-other.js +82 -0
- package/dist/src/ox-board-viewer-other.js.map +1 -0
- package/dist/src/ox-board-viewer.d.ts +60 -0
- package/dist/src/ox-board-viewer.js +503 -0
- package/dist/src/ox-board-viewer.js.map +1 -0
- package/dist/src/ox-editor-board-selector.d.ts +15 -0
- package/dist/src/ox-editor-board-selector.js +85 -0
- package/dist/src/ox-editor-board-selector.js.map +1 -0
- package/dist/src/ox-property-editor-board-selector.d.ts +4 -0
- package/dist/src/ox-property-editor-board-selector.js +22 -0
- package/dist/src/ox-property-editor-board-selector.js.map +1 -0
- package/dist/src/ox-property-editor-theme.d.ts +19 -0
- package/dist/src/ox-property-editor-theme.js +111 -0
- package/dist/src/ox-property-editor-theme.js.map +1 -0
- package/dist/src/selector/board-creation-popup.d.ts +19 -0
- package/dist/src/selector/board-creation-popup.js +100 -0
- package/dist/src/selector/board-creation-popup.js.map +1 -0
- package/dist/src/selector/board-thumbnail-card.d.ts +15 -0
- package/dist/src/selector/board-thumbnail-card.js +168 -0
- package/dist/src/selector/board-thumbnail-card.js.map +1 -0
- package/dist/src/selector/ox-board-creation-card.d.ts +14 -0
- package/dist/src/selector/ox-board-creation-card.js +84 -0
- package/dist/src/selector/ox-board-creation-card.js.map +1 -0
- package/dist/src/selector/ox-board-selector.d.ts +45 -0
- package/dist/src/selector/ox-board-selector.js +273 -0
- package/dist/src/selector/ox-board-selector.js.map +1 -0
- package/dist/src/types.d.ts +37 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/dist/stories/index.stories.d.ts +33 -0
- package/dist/stories/index.stories.js +33 -0
- package/dist/stories/index.stories.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/icons/components/dash.png +0 -0
- package/icons/components/ellipse.png +0 -0
- package/icons/components/line.png +0 -0
- package/icons/components/no-image.png +0 -0
- package/icons/components/popup.png +0 -0
- package/icons/components/rect.png +0 -0
- package/icons/icon-collapse-active.png +0 -0
- package/icons/icon-collapse.png +0 -0
- package/icons/icon-fullscreen.png +0 -0
- package/icons/icon-htoolbar.png +0 -0
- package/icons/icon-properties-arrow-type.png +0 -0
- package/icons/icon-properties-gradient-direction.png +0 -0
- package/icons/icon-properties-label.png +0 -0
- package/icons/icon-properties-line-type.png +0 -0
- package/icons/icon-properties-padding.png +0 -0
- package/icons/icon-properties-ratio.png +0 -0
- package/icons/icon-properties-table.png +0 -0
- package/icons/icon-properties.png +0 -0
- package/icons/icon-shell-inspector.png +0 -0
- package/package.json +149 -0
- package/stories/index.stories.ts +52 -0
- package/web-dev-server.config.mjs +30 -0
- package/web-test-runner.config.mjs +29 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import './ox-scene-property';
|
|
3
|
+
import { LitElement, html } from 'lit';
|
|
4
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
5
|
+
let OxSceneHandler = class OxSceneHandler extends LitElement {
|
|
6
|
+
render() {
|
|
7
|
+
return html ` <slot select="ox-scene-property"></slot> `;
|
|
8
|
+
}
|
|
9
|
+
connectedCallback() {
|
|
10
|
+
super.connectedCallback();
|
|
11
|
+
let model = {
|
|
12
|
+
type: this.type
|
|
13
|
+
};
|
|
14
|
+
model = Array.from(this.querySelectorAll('ox-scene-property')).reduce((model, property) => {
|
|
15
|
+
const name = property.getAttribute('name');
|
|
16
|
+
const value = property.getAttribute('value');
|
|
17
|
+
if (name) {
|
|
18
|
+
model[name] = value;
|
|
19
|
+
}
|
|
20
|
+
return model;
|
|
21
|
+
}, model);
|
|
22
|
+
model.__host__ = this;
|
|
23
|
+
this.model = model;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
__decorate([
|
|
27
|
+
property({ type: String })
|
|
28
|
+
], OxSceneHandler.prototype, "type", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
property({ type: Object })
|
|
31
|
+
], OxSceneHandler.prototype, "model", void 0);
|
|
32
|
+
OxSceneHandler = __decorate([
|
|
33
|
+
customElement('ox-scene-handler')
|
|
34
|
+
], OxSceneHandler);
|
|
35
|
+
export default OxSceneHandler;
|
|
36
|
+
//# sourceMappingURL=ox-scene-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ox-scene-handler.js","sourceRoot":"","sources":["../../../../src/modeller/scene-viewer/ox-scene-handler.ts"],"names":[],"mappings":";AAAA,OAAO,qBAAqB,CAAA;AAE5B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG5C,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,UAAU;IAOpD,MAAM;QACJ,OAAO,IAAI,CAAA,4CAA4C,CAAA;IACzD,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAA;QAEzB,IAAI,KAAK,GAAQ;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAA;QAED,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAU,EAAE,QAAa,EAAE,EAAE;YAClG,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;YAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;YAE5C,IAAI,IAAI,EAAE;gBACR,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;aACpB;YAED,OAAO,KAAK,CAAA;QACd,CAAC,EAAE,KAAK,CAAC,CAAA;QAET,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAA;QAErB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;CACF,CAAA;AAhC6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CAAc;AACb;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAG1B;AALkB,cAAc;IADlC,aAAa,CAAC,kBAAkB,CAAC;GACb,cAAc,CAiClC;eAjCoB,cAAc","sourcesContent":["import './ox-scene-property'\n\nimport { LitElement, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n@customElement('ox-scene-handler')\nexport default class OxSceneHandler extends LitElement {\n @property({ type: String }) type!: string\n @property({ type: Object }) model!: {\n type: Object\n notify: true\n }\n\n render() {\n return html` <slot select=\"ox-scene-property\"></slot> `\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n let model: any = {\n type: this.type\n }\n\n model = Array.from(this.querySelectorAll('ox-scene-property')).reduce((model: any, property: any) => {\n const name = property.getAttribute('name')\n const value = property.getAttribute('value')\n\n if (name) {\n model[name] = value\n }\n\n return model\n }, model)\n\n model.__host__ = this\n\n this.model = model\n }\n}\n"]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import './ox-scene-property';
|
|
3
|
+
import { LitElement, html } from 'lit';
|
|
4
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
5
|
+
let OxSceneLayer = class OxSceneLayer extends LitElement {
|
|
6
|
+
render() {
|
|
7
|
+
return html ` <slot select="ox-scene-property"></slot> `;
|
|
8
|
+
}
|
|
9
|
+
getModel() {
|
|
10
|
+
let model = {
|
|
11
|
+
type: this.type
|
|
12
|
+
};
|
|
13
|
+
model = Array.from(this.querySelectorAll('ox-scene-property')).reduce((model, property) => {
|
|
14
|
+
let value = property.value;
|
|
15
|
+
if (property.name) {
|
|
16
|
+
switch (property.type) {
|
|
17
|
+
case 'number':
|
|
18
|
+
value = Number(value);
|
|
19
|
+
break;
|
|
20
|
+
case 'boolean':
|
|
21
|
+
value = Boolean(value);
|
|
22
|
+
break;
|
|
23
|
+
default:
|
|
24
|
+
}
|
|
25
|
+
model[property.name] = value;
|
|
26
|
+
}
|
|
27
|
+
return model;
|
|
28
|
+
}, model);
|
|
29
|
+
return model;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
__decorate([
|
|
33
|
+
property({ type: String })
|
|
34
|
+
], OxSceneLayer.prototype, "type", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
property({ type: String })
|
|
37
|
+
], OxSceneLayer.prototype, "text", void 0);
|
|
38
|
+
OxSceneLayer = __decorate([
|
|
39
|
+
customElement('ox-scene-layer')
|
|
40
|
+
], OxSceneLayer);
|
|
41
|
+
export default OxSceneLayer;
|
|
42
|
+
//# sourceMappingURL=ox-scene-layer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ox-scene-layer.js","sourceRoot":"","sources":["../../../../src/modeller/scene-viewer/ox-scene-layer.ts"],"names":[],"mappings":";AAAA,OAAO,qBAAqB,CAAA;AAE5B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG5C,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,UAAU;IAIlD,MAAM;QACJ,OAAO,IAAI,CAAA,4CAA4C,CAAA;IACzD,CAAC;IAED,QAAQ;QACN,IAAI,KAAK,GAAG;YACV,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAA;QAED,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAU,EAAE,QAAa,EAAE,EAAE;YAClG,IAAI,KAAK,GAAQ,QAAQ,CAAC,KAAK,CAAA;YAE/B,IAAI,QAAQ,CAAC,IAAI,EAAE;gBACjB,QAAQ,QAAQ,CAAC,IAAI,EAAE;oBACrB,KAAK,QAAQ;wBACX,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;wBACrB,MAAK;oBACP,KAAK,SAAS;wBACZ,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;wBACtB,MAAK;oBACP,QAAQ;iBACT;gBAED,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;aAC7B;YAED,OAAO,KAAK,CAAA;QACd,CAAC,EAAE,KAAK,CAAC,CAAA;QAET,OAAO,KAAK,CAAA;IACd,CAAC;CACF,CAAA;AAlC6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAAc;AACb;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAAc;AAFtB,YAAY;IADhC,aAAa,CAAC,gBAAgB,CAAC;GACX,YAAY,CAmChC;eAnCoB,YAAY","sourcesContent":["import './ox-scene-property'\n\nimport { LitElement, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n@customElement('ox-scene-layer')\nexport default class OxSceneLayer extends LitElement {\n @property({ type: String }) type?: String\n @property({ type: String }) text?: String\n\n render() {\n return html` <slot select=\"ox-scene-property\"></slot> `\n }\n\n getModel() {\n let model = {\n type: this.type\n }\n\n model = Array.from(this.querySelectorAll('ox-scene-property')).reduce((model: any, property: any) => {\n let value: any = property.value\n\n if (property.name) {\n switch (property.type) {\n case 'number':\n value = Number(value)\n break\n case 'boolean':\n value = Boolean(value)\n break\n default:\n }\n\n model[property.name] = value\n }\n\n return model\n }, model)\n\n return model\n }\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
3
|
+
import { LitElement } from 'lit';
|
|
4
|
+
let OxSceneProperty = class OxSceneProperty extends LitElement {
|
|
5
|
+
};
|
|
6
|
+
__decorate([
|
|
7
|
+
property({ type: String })
|
|
8
|
+
], OxSceneProperty.prototype, "name", void 0);
|
|
9
|
+
__decorate([
|
|
10
|
+
property({ type: String })
|
|
11
|
+
], OxSceneProperty.prototype, "value", void 0);
|
|
12
|
+
__decorate([
|
|
13
|
+
property({ type: String })
|
|
14
|
+
], OxSceneProperty.prototype, "type", void 0);
|
|
15
|
+
OxSceneProperty = __decorate([
|
|
16
|
+
customElement('ox-scene-property')
|
|
17
|
+
], OxSceneProperty);
|
|
18
|
+
export default OxSceneProperty;
|
|
19
|
+
//# sourceMappingURL=ox-scene-property.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ox-scene-property.js","sourceRoot":"","sources":["../../../../src/modeller/scene-viewer/ox-scene-property.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAGjB,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,UAAU;CAItD,CAAA;AAH6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAAc;AACb;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CAAe;AACd;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAAc;AAHtB,eAAe;IADnC,aAAa,CAAC,mBAAmB,CAAC;GACd,eAAe,CAInC;eAJoB,eAAe","sourcesContent":["import { customElement, property } from 'lit/decorators.js'\n\nimport { LitElement } from 'lit'\n\n@customElement('ox-scene-property')\nexport default class OxSceneProperty extends LitElement {\n @property({ type: String }) name!: string\n @property({ type: String }) value!: string\n @property({ type: String }) type!: string\n}\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import './confidential-overlay';
|
|
2
|
+
import './ox-scene-layer';
|
|
3
|
+
import './ox-scene-handler';
|
|
4
|
+
import { LitElement, PropertyValues } from 'lit';
|
|
5
|
+
import { Component, FITMODE, Model, Properties, Scene, SCENE_MODE } from '@hatiolab/things-scene';
|
|
6
|
+
export default class OxSceneViewer extends LitElement {
|
|
7
|
+
static styles: import("lit").CSSResult;
|
|
8
|
+
scene: Scene | null;
|
|
9
|
+
model?: Model;
|
|
10
|
+
mode: SCENE_MODE;
|
|
11
|
+
screenSize: number;
|
|
12
|
+
variables: Properties;
|
|
13
|
+
data: any;
|
|
14
|
+
themes?: any;
|
|
15
|
+
fit: FITMODE;
|
|
16
|
+
selected: Component[];
|
|
17
|
+
disposeWhenDetached: boolean;
|
|
18
|
+
baseUrl: string;
|
|
19
|
+
provider: any;
|
|
20
|
+
name: string;
|
|
21
|
+
enableInspector: boolean;
|
|
22
|
+
showInspector: boolean;
|
|
23
|
+
private lastOffsetWidth?;
|
|
24
|
+
disconnectedCallback(): void;
|
|
25
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
26
|
+
updated(change: PropertyValues<this>): void;
|
|
27
|
+
_setScene(scene: Scene | null): void;
|
|
28
|
+
_setMode(mode: SCENE_MODE): void;
|
|
29
|
+
_setVariables(variables: Properties): void;
|
|
30
|
+
_setSelected(selected: Component[]): void;
|
|
31
|
+
_disposeScene(): void;
|
|
32
|
+
resize(force: boolean): void;
|
|
33
|
+
_onModelChanged(model?: Model): void;
|
|
34
|
+
_onDisplayChanged(screenSize: string | number): void;
|
|
35
|
+
_onModeChanged(mode: SCENE_MODE): void;
|
|
36
|
+
_onDataChanged(data: any): void;
|
|
37
|
+
_onSelectedChanged(after: Component[]): void;
|
|
38
|
+
_onSceneModeChanged(after: SCENE_MODE): void;
|
|
39
|
+
_onBaseUrlChanged(after: string): void;
|
|
40
|
+
}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import './confidential-overlay';
|
|
3
|
+
import './ox-scene-layer';
|
|
4
|
+
import './ox-scene-handler';
|
|
5
|
+
import { css, html, LitElement } from 'lit';
|
|
6
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
7
|
+
import { create as createScene, SCENE_MODE } from '@hatiolab/things-scene';
|
|
8
|
+
let OxSceneViewer = class OxSceneViewer extends LitElement {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this.scene = null;
|
|
12
|
+
/* Scene Mode - mode 0 : view mode, mode 1 : edit mode, mode 2 : shift mode */
|
|
13
|
+
this.mode = SCENE_MODE.VIEW;
|
|
14
|
+
this.screenSize = 13.3;
|
|
15
|
+
this.variables = {};
|
|
16
|
+
/*
|
|
17
|
+
* 캔바스에 모델을 어떻게 적절하게 보여줄 것인지를 설정한다.
|
|
18
|
+
*
|
|
19
|
+
* @none 가로, 세로 스케일을 1로 고정하고, {0, 0}좌표로 translate시킨다.
|
|
20
|
+
* @both 캔바스에 모델을 꼭 채우도록 가로, 세로 스케일을 조정하고, {0, 0}좌표로 translate시킨다.
|
|
21
|
+
* @width 캔바스의 폭에 모델의 폭을 일치하도록 가로, 세로 스케일을 동일하게 조정하고, {0, 0}좌표로 translate시킨다.
|
|
22
|
+
* @height 캔바스의 높이에 모델의 높이를 일치하도록 가로, 세로 스케일을 동일하게 조정하고, {0, 0}좌표로 translate시킨다.
|
|
23
|
+
* @center 가로, 세로 스케일을 1로 고정하고 모델이 화면의 중앙에 위치하도록 translate시킨다.
|
|
24
|
+
* @ratio 모델의 모든 부분이 캔바스에 최대 크기로 표현될 수 있도록 가로, 세로 동일한 스케일로 조정하고, {0, 0}좌표로 translate시킨다.
|
|
25
|
+
*/
|
|
26
|
+
this.fit = 'none';
|
|
27
|
+
this.selected = [];
|
|
28
|
+
this.disposeWhenDetached = false;
|
|
29
|
+
this.baseUrl = '';
|
|
30
|
+
this.name = 'noname';
|
|
31
|
+
this.enableInspector = true;
|
|
32
|
+
this.showInspector = false;
|
|
33
|
+
}
|
|
34
|
+
disconnectedCallback() {
|
|
35
|
+
super.disconnectedCallback();
|
|
36
|
+
if (this.scene && this.disposeWhenDetached) {
|
|
37
|
+
this._disposeScene();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
render() {
|
|
41
|
+
return html ` <slot></slot> `;
|
|
42
|
+
}
|
|
43
|
+
updated(change) {
|
|
44
|
+
change.has('model') && this._onModelChanged(this.model);
|
|
45
|
+
change.has('mode') && this._onModeChanged(this.mode);
|
|
46
|
+
change.has('screenSize') && this._onDisplayChanged(this.screenSize);
|
|
47
|
+
change.has('data') && this._onDataChanged(this.data);
|
|
48
|
+
change.has('baseUrl') && this._onBaseUrlChanged(this.baseUrl);
|
|
49
|
+
}
|
|
50
|
+
_setScene(scene) {
|
|
51
|
+
this.scene = scene;
|
|
52
|
+
this.dispatchEvent(new CustomEvent('scene-changed', {
|
|
53
|
+
bubbles: true,
|
|
54
|
+
composed: true,
|
|
55
|
+
detail: { value: scene }
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
_setMode(mode) {
|
|
59
|
+
this.mode = mode;
|
|
60
|
+
this.dispatchEvent(new CustomEvent('mode-changed', {
|
|
61
|
+
bubbles: true,
|
|
62
|
+
composed: true,
|
|
63
|
+
detail: { value: mode }
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
_setVariables(variables) {
|
|
67
|
+
this.variables = variables;
|
|
68
|
+
this.dispatchEvent(new CustomEvent('variables-changed', {
|
|
69
|
+
bubbles: true,
|
|
70
|
+
composed: true,
|
|
71
|
+
detail: { value: variables }
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
_setSelected(selected) {
|
|
75
|
+
this.selected = selected;
|
|
76
|
+
this.dispatchEvent(new CustomEvent('selected-changed', {
|
|
77
|
+
bubbles: true,
|
|
78
|
+
composed: true,
|
|
79
|
+
detail: { value: selected }
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
_disposeScene() {
|
|
83
|
+
if (this.scene) {
|
|
84
|
+
this.scene.off('selected', this._onSelectedChanged, this);
|
|
85
|
+
this.scene.off('mode', this._onSceneModeChanged, this);
|
|
86
|
+
if (this.provider) {
|
|
87
|
+
this.scene.release && this.scene.release();
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
this.scene.dispose();
|
|
91
|
+
}
|
|
92
|
+
this._setScene(null);
|
|
93
|
+
this._setSelected([]);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
resize(force) {
|
|
97
|
+
if (typeof this.scene == 'object') {
|
|
98
|
+
if (force || this.fit === 'both' || Math.abs(this.offsetWidth - (this.lastOffsetWidth || 0)) >= 1) {
|
|
99
|
+
requestAnimationFrame(() => {
|
|
100
|
+
if (this.scene) {
|
|
101
|
+
this.scene.resize();
|
|
102
|
+
this.scene.fit(this.fit);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
this.lastOffsetWidth = this.offsetWidth;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
_onModelChanged(model) {
|
|
110
|
+
this._disposeScene();
|
|
111
|
+
if (!model) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const layers = Array.from(this.querySelectorAll('ox-scene-layer')).map(layer => layer.getModel());
|
|
115
|
+
const handlers = Array.from(this.querySelectorAll('ox-scene-handler')).map(handler => handler.getAttribute('type'));
|
|
116
|
+
this._setScene(createScene({
|
|
117
|
+
target: this,
|
|
118
|
+
model: JSON.parse(JSON.stringify(model)),
|
|
119
|
+
style: this.themes,
|
|
120
|
+
layers,
|
|
121
|
+
handlers,
|
|
122
|
+
mode: this.mode,
|
|
123
|
+
refProvider: this.provider
|
|
124
|
+
}));
|
|
125
|
+
if (this.provider) {
|
|
126
|
+
this.provider.add(this.name, this.scene);
|
|
127
|
+
}
|
|
128
|
+
this.scene.screen = this.screenSize;
|
|
129
|
+
/* 이 컴포넌트의 폭이 값을 가지고 있으면 - 화면상에 자리를 잡고 보여지고 있음을 의미한다.
|
|
130
|
+
* 이 때는 정상적으로 그려주고,
|
|
131
|
+
* 그렇지 않으면, 다음 Resize Handling시에 처리하도록 한다.
|
|
132
|
+
*/
|
|
133
|
+
this.resize(true);
|
|
134
|
+
this._setVariables(model.variables || this.scene.variables);
|
|
135
|
+
this.scene.on('selected', this._onSelectedChanged, this);
|
|
136
|
+
this.scene.on('mode', this._onSceneModeChanged, this);
|
|
137
|
+
this._onModeChanged(this.mode);
|
|
138
|
+
this._onDisplayChanged(this.screenSize);
|
|
139
|
+
this._onBaseUrlChanged(this.baseUrl);
|
|
140
|
+
this.focus();
|
|
141
|
+
}
|
|
142
|
+
_onDisplayChanged(screenSize) {
|
|
143
|
+
if (!this.scene) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (screenSize) {
|
|
147
|
+
this.scene.screen = parseFloat(String(screenSize));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
_onModeChanged(mode) {
|
|
151
|
+
if (!this.scene) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
this.scene.mode = Number(mode);
|
|
155
|
+
}
|
|
156
|
+
_onDataChanged(data) {
|
|
157
|
+
if (!this.scene || !data) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
this.scene.data = data;
|
|
161
|
+
}
|
|
162
|
+
_onSelectedChanged(after) {
|
|
163
|
+
/*
|
|
164
|
+
scene 컴포넌트의 속성을 속성 에디터(input box등)에서 변경하다가,
|
|
165
|
+
scene의 다른 컴포넌트를 클릭해서 포커스(선택) 컴포넌트를 변경하게되면,
|
|
166
|
+
속성 에디터(input box등)의 value change 이벤트의 처리와 충돌(레이스)하게된다.
|
|
167
|
+
|
|
168
|
+
기대하는 순서는 먼저 속성 에디터의 value change 이벤트를 처리한 후에,
|
|
169
|
+
selected 이벤트를 처리할 수 있도록 requestAnimationFrame으로 한 프레임을 지연하도록 하였다.
|
|
170
|
+
*/
|
|
171
|
+
requestAnimationFrame(() => {
|
|
172
|
+
this._setSelected(after);
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
_onSceneModeChanged(after) {
|
|
176
|
+
if (!this.scene) {
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
if (this.mode !== after) {
|
|
180
|
+
this._setMode(after);
|
|
181
|
+
}
|
|
182
|
+
if (after === 2) {
|
|
183
|
+
this.style.cursor = 'all-scroll';
|
|
184
|
+
}
|
|
185
|
+
else if (after === 3) {
|
|
186
|
+
this.style.cursor = 'crosshair';
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
this.style.cursor = 'default';
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
_onBaseUrlChanged(after) {
|
|
193
|
+
if (!this.scene) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
this.scene.baseUrl = after;
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
OxSceneViewer.styles = css `
|
|
200
|
+
:host {
|
|
201
|
+
outline: none;
|
|
202
|
+
}
|
|
203
|
+
`;
|
|
204
|
+
__decorate([
|
|
205
|
+
property({ type: Object })
|
|
206
|
+
], OxSceneViewer.prototype, "scene", void 0);
|
|
207
|
+
__decorate([
|
|
208
|
+
property({ type: Object })
|
|
209
|
+
], OxSceneViewer.prototype, "model", void 0);
|
|
210
|
+
__decorate([
|
|
211
|
+
property({ type: Number })
|
|
212
|
+
], OxSceneViewer.prototype, "mode", void 0);
|
|
213
|
+
__decorate([
|
|
214
|
+
property({ type: Number })
|
|
215
|
+
], OxSceneViewer.prototype, "screenSize", void 0);
|
|
216
|
+
__decorate([
|
|
217
|
+
property({ type: Object })
|
|
218
|
+
], OxSceneViewer.prototype, "variables", void 0);
|
|
219
|
+
__decorate([
|
|
220
|
+
property({ type: Object })
|
|
221
|
+
], OxSceneViewer.prototype, "data", void 0);
|
|
222
|
+
__decorate([
|
|
223
|
+
property({ type: Object })
|
|
224
|
+
], OxSceneViewer.prototype, "themes", void 0);
|
|
225
|
+
__decorate([
|
|
226
|
+
property({ type: String })
|
|
227
|
+
], OxSceneViewer.prototype, "fit", void 0);
|
|
228
|
+
__decorate([
|
|
229
|
+
property({ type: Array })
|
|
230
|
+
], OxSceneViewer.prototype, "selected", void 0);
|
|
231
|
+
__decorate([
|
|
232
|
+
property({ type: Boolean })
|
|
233
|
+
], OxSceneViewer.prototype, "disposeWhenDetached", void 0);
|
|
234
|
+
__decorate([
|
|
235
|
+
property({ type: String })
|
|
236
|
+
], OxSceneViewer.prototype, "baseUrl", void 0);
|
|
237
|
+
__decorate([
|
|
238
|
+
property({ type: Object })
|
|
239
|
+
], OxSceneViewer.prototype, "provider", void 0);
|
|
240
|
+
__decorate([
|
|
241
|
+
property({ type: String })
|
|
242
|
+
], OxSceneViewer.prototype, "name", void 0);
|
|
243
|
+
__decorate([
|
|
244
|
+
property({ type: Boolean })
|
|
245
|
+
], OxSceneViewer.prototype, "enableInspector", void 0);
|
|
246
|
+
__decorate([
|
|
247
|
+
property({ type: Boolean })
|
|
248
|
+
], OxSceneViewer.prototype, "showInspector", void 0);
|
|
249
|
+
OxSceneViewer = __decorate([
|
|
250
|
+
customElement('ox-scene-viewer')
|
|
251
|
+
], OxSceneViewer);
|
|
252
|
+
export default OxSceneViewer;
|
|
253
|
+
//# sourceMappingURL=ox-scene-viewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ox-scene-viewer.js","sourceRoot":"","sources":["../../../../src/modeller/scene-viewer/ox-scene-viewer.ts"],"names":[],"mappings":"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","sourcesContent":["import './confidential-overlay'\nimport './ox-scene-layer'\nimport './ox-scene-handler'\n\nimport { css, html, LitElement, PropertyValues } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { Component, create as createScene, FITMODE, Model, Properties, Scene, SCENE_MODE } from '@hatiolab/things-scene'\n\nimport OxSceneLayer from './ox-scene-layer'\n\n@customElement('ox-scene-viewer')\nexport default class OxSceneViewer extends LitElement {\n static styles = css`\n :host {\n outline: none;\n }\n `\n\n @property({ type: Object }) scene: Scene | null = null\n @property({ type: Object }) model?: Model\n /* Scene Mode - mode 0 : view mode, mode 1 : edit mode, mode 2 : shift mode */\n @property({ type: Number }) mode: SCENE_MODE = SCENE_MODE.VIEW\n @property({ type: Number }) screenSize: number = 13.3\n @property({ type: Object }) variables: Properties = {}\n @property({ type: Object }) data: any\n @property({ type: Object }) themes?: any\n /*\n * 캔바스에 모델을 어떻게 적절하게 보여줄 것인지를 설정한다.\n *\n * @none 가로, 세로 스케일을 1로 고정하고, {0, 0}좌표로 translate시킨다.\n * @both 캔바스에 모델을 꼭 채우도록 가로, 세로 스케일을 조정하고, {0, 0}좌표로 translate시킨다.\n * @width 캔바스의 폭에 모델의 폭을 일치하도록 가로, 세로 스케일을 동일하게 조정하고, {0, 0}좌표로 translate시킨다.\n * @height 캔바스의 높이에 모델의 높이를 일치하도록 가로, 세로 스케일을 동일하게 조정하고, {0, 0}좌표로 translate시킨다.\n * @center 가로, 세로 스케일을 1로 고정하고 모델이 화면의 중앙에 위치하도록 translate시킨다.\n * @ratio 모델의 모든 부분이 캔바스에 최대 크기로 표현될 수 있도록 가로, 세로 동일한 스케일로 조정하고, {0, 0}좌표로 translate시킨다.\n */\n @property({ type: String }) fit: FITMODE = 'none'\n @property({ type: Array }) selected: Component[] = []\n @property({ type: Boolean }) disposeWhenDetached: boolean = false\n @property({ type: String }) baseUrl: string = ''\n @property({ type: Object }) provider: any\n @property({ type: String }) name: string = 'noname'\n @property({ type: Boolean }) enableInspector: boolean = true\n @property({ type: Boolean }) showInspector: boolean = false\n\n private lastOffsetWidth?: number\n\n disconnectedCallback() {\n super.disconnectedCallback()\n\n if (this.scene && this.disposeWhenDetached) {\n this._disposeScene()\n }\n }\n\n render() {\n return html` <slot></slot> `\n }\n\n updated(change: PropertyValues<this>) {\n change.has('model') && this._onModelChanged(this.model)\n change.has('mode') && this._onModeChanged(this.mode)\n change.has('screenSize') && this._onDisplayChanged(this.screenSize)\n change.has('data') && this._onDataChanged(this.data)\n change.has('baseUrl') && this._onBaseUrlChanged(this.baseUrl)\n }\n\n _setScene(scene: Scene | null) {\n this.scene = scene\n this.dispatchEvent(\n new CustomEvent('scene-changed', {\n bubbles: true,\n composed: true,\n detail: { value: scene }\n })\n )\n }\n\n _setMode(mode: SCENE_MODE) {\n this.mode = mode\n this.dispatchEvent(\n new CustomEvent('mode-changed', {\n bubbles: true,\n composed: true,\n detail: { value: mode }\n })\n )\n }\n\n _setVariables(variables: Properties) {\n this.variables = variables\n this.dispatchEvent(\n new CustomEvent('variables-changed', {\n bubbles: true,\n composed: true,\n detail: { value: variables }\n })\n )\n }\n\n _setSelected(selected: Component[]) {\n this.selected = selected\n this.dispatchEvent(\n new CustomEvent('selected-changed', {\n bubbles: true,\n composed: true,\n detail: { value: selected }\n })\n )\n }\n\n _disposeScene() {\n if (this.scene) {\n this.scene.off('selected', this._onSelectedChanged, this)\n this.scene.off('mode', this._onSceneModeChanged, this)\n\n if (this.provider) {\n this.scene.release && this.scene.release()\n } else {\n this.scene.dispose()\n }\n\n this._setScene(null)\n this._setSelected([])\n }\n }\n\n resize(force: boolean) {\n if (typeof this.scene == 'object') {\n if (force || this.fit === 'both' || Math.abs(this.offsetWidth - (this.lastOffsetWidth || 0)) >= 1) {\n requestAnimationFrame(() => {\n if (this.scene) {\n this.scene.resize()\n this.scene.fit(this.fit)\n }\n })\n }\n\n this.lastOffsetWidth = this.offsetWidth\n }\n }\n\n _onModelChanged(model?: Model) {\n this._disposeScene()\n\n if (!model) {\n return\n }\n\n const layers = Array.from(this.querySelectorAll('ox-scene-layer')).map(layer => (layer as OxSceneLayer).getModel())\n\n const handlers = Array.from(this.querySelectorAll('ox-scene-handler')).map(handler => handler.getAttribute('type'))\n\n this._setScene(\n createScene({\n target: this,\n model: JSON.parse(JSON.stringify(model)),\n style: this.themes,\n layers,\n handlers,\n mode: this.mode,\n refProvider: this.provider\n })\n )\n\n if (this.provider) {\n this.provider.add(this.name, this.scene)\n }\n\n this.scene!.screen = this.screenSize\n\n /* 이 컴포넌트의 폭이 값을 가지고 있으면 - 화면상에 자리를 잡고 보여지고 있음을 의미한다.\n * 이 때는 정상적으로 그려주고,\n * 그렇지 않으면, 다음 Resize Handling시에 처리하도록 한다.\n */\n this.resize(true)\n\n this._setVariables(model.variables || this.scene!.variables)\n\n this.scene!.on('selected', this._onSelectedChanged, this)\n this.scene!.on('mode', this._onSceneModeChanged, this)\n\n this._onModeChanged(this.mode)\n this._onDisplayChanged(this.screenSize)\n this._onBaseUrlChanged(this.baseUrl)\n\n this.focus()\n }\n\n _onDisplayChanged(screenSize: string | number) {\n if (!this.scene) {\n return\n }\n\n if (screenSize) {\n this.scene.screen = parseFloat(String(screenSize))\n }\n }\n\n _onModeChanged(mode: SCENE_MODE) {\n if (!this.scene) {\n return\n }\n this.scene.mode = Number(mode)\n }\n\n _onDataChanged(data: any) {\n if (!this.scene || !data) {\n return\n }\n\n this.scene.data = data\n }\n\n _onSelectedChanged(after: Component[]) {\n /*\n scene 컴포넌트의 속성을 속성 에디터(input box등)에서 변경하다가,\n scene의 다른 컴포넌트를 클릭해서 포커스(선택) 컴포넌트를 변경하게되면,\n 속성 에디터(input box등)의 value change 이벤트의 처리와 충돌(레이스)하게된다.\n \n 기대하는 순서는 먼저 속성 에디터의 value change 이벤트를 처리한 후에,\n selected 이벤트를 처리할 수 있도록 requestAnimationFrame으로 한 프레임을 지연하도록 하였다.\n */\n requestAnimationFrame(() => {\n this._setSelected(after)\n })\n }\n\n _onSceneModeChanged(after: SCENE_MODE) {\n if (!this.scene) {\n return\n }\n\n if (this.mode !== after) {\n this._setMode(after)\n }\n\n if (after === 2) {\n this.style.cursor = 'all-scroll'\n } else if (after === 3) {\n this.style.cursor = 'crosshair'\n } else {\n this.style.cursor = 'default'\n }\n }\n\n _onBaseUrlChanged(after: string) {\n if (!this.scene) {\n return\n }\n\n this.scene.baseUrl = after\n }\n}\n"]}
|