@operato/scene-basic 7.3.9 → 7.3.19

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/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@operato/scene-basic",
3
3
  "description": "basic component for things-scene",
4
4
  "author": "heartyoh",
5
- "version": "7.3.9",
5
+ "version": "7.3.19",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
8
8
  "license": "MIT",
@@ -58,5 +58,5 @@
58
58
  "prettier --write"
59
59
  ]
60
60
  },
61
- "gitHead": "32b46499c33be406e0fccc602746290a51e0f286"
61
+ "gitHead": "ff73072a62ee02520f9d986d0095f6d329de64f9"
62
62
  }
package/CHANGELOG.md DELETED
@@ -1,233 +0,0 @@
1
- # Change Log
2
-
3
- All notable changes to this project will be documented in this file.
4
- See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
-
6
- ## [7.3.9](https://github.com/things-scene/operato-scene/compare/v7.3.8...v7.3.9) (2024-09-11)
7
-
8
-
9
- ### :bug: Bug Fix
10
-
11
- * @hatiolab/things-scene version ([5260171](https://github.com/things-scene/operato-scene/commit/52601719115288709ca7e0eee0974cc4677f219e))
12
-
13
-
14
-
15
- ## [7.0.1](https://github.com/things-scene/operato-scene/compare/v7.0.0...v7.0.1) (2024-06-30)
16
-
17
-
18
- ### :bug: Bug Fix
19
-
20
- * things-factory@7.0.0 ([f4cfe44](https://github.com/things-scene/operato-scene/commit/f4cfe44cb565e7b8fdc0df210a722b6526871848))
21
-
22
-
23
-
24
- ## [7.0.0](https://github.com/things-scene/operato-scene/compare/v7.0.0-rc.4...v7.0.0) (2024-06-30)
25
-
26
- **Note:** Version bump only for package @operato/scene-basic
27
-
28
-
29
-
30
-
31
-
32
- ## [7.0.0-rc.1](https://github.com/things-scene/operato-scene/compare/v7.0.0-rc.0...v7.0.0-rc.1) (2024-06-21)
33
-
34
-
35
- ### :bug: Bug Fix
36
-
37
- * apply v7-rc dependencies ([eee5612](https://github.com/things-scene/operato-scene/commit/eee5612e1d569387c284a7c6c49d64ef44b6d701))
38
-
39
-
40
-
41
- ## [7.0.0-rc.0](https://github.com/things-scene/operato-scene/compare/v2.0.0-beta.8...v7.0.0-rc.0) (2024-06-21)
42
-
43
- **Note:** Version bump only for package @operato/scene-basic
44
-
45
-
46
-
47
-
48
-
49
- ## [2.0.0-beta.0](https://github.com/things-scene/operato-scene/compare/v2.0.0-alpha.12...v2.0.0-beta.0) (2024-06-01)
50
-
51
-
52
- ### :rocket: New Features
53
-
54
- * 2.0.0-beta.0 ([a2e2869](https://github.com/things-scene/operato-scene/commit/a2e28694eedf5bab0c54bcab5432d54ec59edd7f))
55
-
56
-
57
- ### :bug: Bug Fix
58
-
59
- * allowJs in tsconfig option ([fa77174](https://github.com/things-scene/operato-scene/commit/fa771742188f21f177f0a85281570f59f0c478cf))
60
-
61
-
62
-
63
- ## [2.0.0-alpha.12](https://github.com/things-scene/operato-scene/compare/v2.0.0-alpha.11...v2.0.0-alpha.12) (2024-05-11)
64
-
65
-
66
- ### :bug: Bug Fix
67
-
68
- * ignore 'cache' folder for git and npm ([d70f811](https://github.com/things-scene/operato-scene/commit/d70f8118ff3e9248f80aa9435d6e6cbb8aacfcaf))
69
-
70
-
71
-
72
- ## [2.0.0-alpha.9](https://github.com/things-scene/operato-scene/compare/v2.0.0-alpha.8...v2.0.0-alpha.9) (2024-04-11)
73
-
74
-
75
- ### :bug: Bug Fix
76
-
77
- * things-factory@7.0.1 ([a9f4c18](https://github.com/things-scene/operato-scene/commit/a9f4c1873b80c540e4c2e16649e127ccffcf9a4c))
78
-
79
-
80
-
81
- ## [2.0.0-alpha.6](https://github.com/things-scene/operato-scene/compare/v2.0.0-alpha.5...v2.0.0-alpha.6) (2024-03-24)
82
-
83
-
84
- ### :bug: Bug Fix
85
-
86
- * translation ([266d423](https://github.com/things-scene/operato-scene/commit/266d423d9d6992464f45a437acc90ccf8ed33bf6))
87
-
88
-
89
-
90
- ## [2.0.0-alpha.4](https://github.com/things-scene/operato-scene/compare/v2.0.0-alpha.3...v2.0.0-alpha.4) (2024-03-21)
91
-
92
-
93
- ### :bug: Bug Fix
94
-
95
- * 컴포넌트 명 다국어 ([3616a52](https://github.com/things-scene/operato-scene/commit/3616a52e2f0268c83c976c6b4deeffc016f91e46))
96
-
97
-
98
-
99
- ## [2.0.0-alpha.0](https://github.com/things-scene/operato-scene/compare/v1.3.9...v2.0.0-alpha.0) (2024-01-14)
100
-
101
-
102
- ### :bug: Bug Fix
103
-
104
- * 2.0.0-alpha.0 ([93274e3](https://github.com/things-scene/operato-scene/commit/93274e36c5d184f339f83899654dd48b4786ac2b))
105
-
106
-
107
-
108
- ## [1.2.90](https://github.com/things-scene/operato-scene/compare/v1.2.89...v1.2.90) (2023-11-22)
109
-
110
- **Note:** Version bump only for package @operato/scene-basic
111
-
112
-
113
-
114
-
115
-
116
- ## [1.2.87](https://github.com/things-scene/operato-scene/compare/v1.2.86...v1.2.87) (2023-11-10)
117
-
118
- **Note:** Version bump only for package @operato/scene-basic
119
-
120
-
121
-
122
-
123
-
124
- ## [1.2.76](https://github.com/things-scene/operato-scene/compare/v1.2.75...v1.2.76) (2023-10-28)
125
-
126
-
127
- ### :bug: Bug Fix
128
-
129
- * scene-tab ([ad62f96](https://github.com/things-scene/operato-scene/commit/ad62f967b149eb5adf8f2e0714d79e8a9dc7186c))
130
-
131
-
132
-
133
- ## [1.2.71](https://github.com/things-scene/operato-scene/compare/v1.2.70...v1.2.71) (2023-10-11)
134
-
135
-
136
- ### :bug: Bug Fix
137
-
138
- * add bluetooth module ([4bba13c](https://github.com/things-scene/operato-scene/commit/4bba13c7ac29508d37f5751ea5abdded60fa314d))
139
-
140
-
141
-
142
- ## [1.2.66](https://github.com/things-scene/operato-scene/compare/v1.2.65...v1.2.66) (2023-09-14)
143
-
144
- **Note:** Version bump only for package @operato/scene-basic
145
-
146
-
147
-
148
-
149
-
150
- ## [1.2.65](https://github.com/things-scene/operato-scene/compare/v1.2.64...v1.2.65) (2023-09-14)
151
-
152
- **Note:** Version bump only for package @operato/scene-basic
153
-
154
-
155
-
156
-
157
-
158
- ## [1.2.62](https://github.com/things-scene/operato-scene/compare/v1.2.61...v1.2.62) (2023-09-11)
159
-
160
- **Note:** Version bump only for package @operato/scene-basic
161
-
162
-
163
-
164
-
165
-
166
- ## [1.2.49](https://github.com/things-scene/operato-scene/compare/v1.2.48...v1.2.49) (2023-06-26)
167
-
168
-
169
- ### :bug: Bug Fix
170
-
171
- * missing .npmignore ([61ba4f2](https://github.com/things-scene/operato-scene/commit/61ba4f2ae22a865d700a971d62eb01f950c34d0e))
172
-
173
-
174
-
175
- ## [1.2.46](https://github.com/things-scene/operato-scene/compare/v1.2.45...v1.2.46) (2023-06-10)
176
-
177
-
178
- ### :bug: Bug Fix
179
-
180
- * typescript build options ([3eb0d7f](https://github.com/things-scene/operato-scene/commit/3eb0d7fd80e2c3cea698501aa1d9d54903423a7b))
181
-
182
-
183
-
184
- ## [1.2.45](https://github.com/things-scene/operato-scene/compare/v1.2.44...v1.2.45) (2023-06-09)
185
-
186
-
187
- ### :bug: Bug Fix
188
-
189
- * set => setState, get => getState for whole scene component ([c205db4](https://github.com/things-scene/operato-scene/commit/c205db4c7bfa5c6dd7d34ea82af283d83b551bad))
190
-
191
-
192
-
193
- ## [1.2.36](https://github.com/things-scene/operato-scene/compare/v1.2.35...v1.2.36) (2023-05-13)
194
-
195
-
196
- ### :bug: Bug Fix
197
-
198
- * license ([d37d485](https://github.com/things-scene/operato-scene/commit/d37d48597407dea1ad022e674f2899720e56d695))
199
-
200
-
201
-
202
- ## [1.2.29](https://github.com/things-scene/operato-scene/compare/v1.2.28...v1.2.29) (2023-04-30)
203
-
204
-
205
- ### :bug: Bug Fix
206
-
207
- * update module's version ([047d08b](https://github.com/things-scene/operato-scene/commit/047d08b5d912d12c04b2f6b63156d1e812588365))
208
-
209
-
210
-
211
- ### [1.2.27](https://github.com/things-scene/operato-scene/compare/v1.2.26...v1.2.27) (2023-04-22)
212
-
213
- **Note:** Version bump only for package @operato/scene-basic
214
-
215
-
216
-
217
-
218
-
219
- ### [1.2.13](https://github.com/things-scene/operato-scene/compare/v1.2.12...v1.2.13) (2023-03-05)
220
-
221
-
222
- ### :bug: Bug Fix
223
-
224
- * lighten data binding for 3d objects ([09db97e](https://github.com/things-scene/operato-scene/commit/09db97e1fe70563a734113e70538bdf6d18c6bc7))
225
-
226
-
227
-
228
- ### [1.2.5](https://github.com/things-scene/operato-scene/compare/v1.2.4...v1.2.5) (2023-02-20)
229
-
230
-
231
- ### :bug: Bug Fix
232
-
233
- * add scene-basic module ([b6f11ae](https://github.com/things-scene/operato-scene/commit/b6f11ae7d073dfd09201607fcb6cd7801da096e3))
package/demo/index.html DELETED
@@ -1,158 +0,0 @@
1
- <!DOCTYPE html>
2
- <!--
3
- @license
4
- Copyright © HatioLab Inc. All rights reserved.
5
- -->
6
- <html>
7
- <head>
8
- <meta charset="utf-8" />
9
- <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes" />
10
- <title>things-scene-basic Demo</title>
11
- <script src="../../webcomponentsjs/webcomponents-lite.min.js"></script>
12
-
13
- <link rel="import" href="../../things-scene-viewer/things-scene-viewer.html" />
14
- <link rel="import" href="../../things-scene-viewer/things-scene-layer.html" />
15
- <link rel="import" href="../../things-scene-viewer/things-scene-handler.html" />
16
-
17
- <link rel="import" href="../../things-designer-elements/things-editor-color.html" />
18
- <link rel="import" href="../../things-designer-elements/things-editor-color-stops.html" />
19
- <link rel="import" href="../../things-designer-elements/things-editor-properties.html" />
20
- <link rel="import" href="../../things-scene-modeler/things-scene-properties.html" />
21
-
22
- <link rel="import" href="./things-scene-basic.html" />
23
-
24
- <style is="custom-style">
25
- @font-face {
26
- font-family: 'Bitstream Vera Serif Bold';
27
- src: url('fonts/VeraSeBd.ttf');
28
- }
29
-
30
- things-scene-viewer {
31
- display: block;
32
- width: 900px;
33
- height: 600px;
34
- }
35
- </style>
36
- </head>
37
- <body unresolved>
38
- <template is="dom-bind" id="app">
39
- <p>An example of <code>&lt;things-scene-basic&gt;</code>:</p>
40
-
41
- <things-scene-viewer id="scene" scene="{{scene}}" selected="{{selected}}" model="[[model]]" mode="1">
42
- <things-scene-layer type="selection-layer"></things-scene-layer>
43
- <things-scene-layer type="modeling-layer"></things-scene-layer>
44
- <things-scene-handler type="text-editor"></things-scene-handler>
45
- <things-scene-handler type="move-handler"></things-scene-handler>
46
- </things-scene-viewer>
47
-
48
- <fieldset class="same-width">
49
- <legend>basic style</legend>
50
- <things-scene-properties scene="[[scene]]" selected="[[selected]]" model="{{target}}" bounds="{{bounds}}">
51
- <things-editor-properties id="properties" target="{{target}}" props="{{props}}"> </things-editor-properties>
52
- </things-scene-properties>
53
- </fieldset>
54
-
55
- <button id="change">Change Value</button>
56
- </template>
57
-
58
- <script>
59
- window.addEventListener('WebComponentsReady', function (e) {
60
- var app = document.querySelector('#app')
61
-
62
- app.$.change.addEventListener('click', function () {
63
- var viewer = app.$.scene
64
- viewer.findAll('basic-analog')[0].set('value', 0 + Math.round(Math.random() * 240))
65
- viewer.findAll('basic-analog')[0].set('colorStops', [
66
- { position: 40, color: '#00ff00' },
67
- { position: 70, color: '#ffff00' },
68
- { position: 170, color: '#ff0000' }
69
- ])
70
- })
71
-
72
- app.model = {
73
- width: 1500,
74
- height: 1500,
75
- components: [
76
- {
77
- type: 'basic-analog',
78
- cx: 300,
79
- cy: 300,
80
- rx: 100,
81
- ry: 100,
82
- hourWidth: 3,
83
- minuteWidth: 2,
84
- fillStyle: '',
85
- strokeStyle: '#FF0000',
86
- fontColor: '#0000FF',
87
- lineWidth: 5,
88
- innerCircleSize: 20,
89
- innerCircleColor: '#00FF00'
90
- // }, {
91
- // type: 'basic-text',
92
- // top: 300,
93
- // left: 800,
94
- // width: 100,
95
- // height: 50,
96
- // fillStyle: '#ff00ff',
97
- // fontColor: '#FF0000',
98
- // lineWidth: 5,
99
- // localTime: true,
100
- // utc : 10
101
- }
102
- ]
103
- }
104
-
105
- app.props = [
106
- {
107
- type: 'number',
108
- label: 'hourwidth',
109
- name: 'hourWidth',
110
- property: 'hourWidth'
111
- },
112
- {
113
- type: 'number',
114
- label: 'minute-width',
115
- name: 'minuteWidth',
116
- property: 'minuteWidth'
117
- },
118
- {
119
- type: 'number',
120
- label: 'second-width',
121
- name: 'secondWidth',
122
- property: 'secondWidth'
123
- },
124
- {
125
- type: 'checkbox',
126
- label: 'needle-round',
127
- name: 'needleRound',
128
- property: 'needleRound'
129
- },
130
- {
131
- type: 'checkbox',
132
- label: 'show-second',
133
- name: 'showSecond',
134
- property: 'showSecond'
135
- },
136
- {
137
- type: 'checkbox',
138
- label: 'show-number',
139
- name: 'showNumber',
140
- property: 'showNumber'
141
- },
142
- {
143
- type: 'number',
144
- label: 'inner-circle-size',
145
- name: 'innerCircleSize',
146
- property: 'innerCircleSize'
147
- },
148
- {
149
- type: 'color',
150
- label: 'inner-circle-color',
151
- name: 'innerCircleColor',
152
- property: 'innerCircleColor'
153
- }
154
- ]
155
- })
156
- </script>
157
- </body>
158
- </html>
@@ -1,6 +0,0 @@
1
- <!--
2
- @license
3
- Copyright © HatioLab Inc. All rights reserved.
4
- -->
5
- <script src="../../moment/moment.js"></script>
6
- <script src="../things-scene-basic.js"></script>
@@ -1,46 +0,0 @@
1
- import { Anchor, Component } from '@hatiolab/things-scene'
2
-
3
- /**
4
- * @function ellipseAnchors
5
- * @param {Component} component
6
- * @return {Anchor[]}
7
- */
8
- export default function ellipseAnchors(component: Component): Anchor[] {
9
- var { left, top, width, height } = component.bounds
10
-
11
- var centerx = left + width / 2
12
- var centery = top + height / 2
13
- var right = left + width
14
- var bottom = top + height
15
-
16
- return [
17
- {
18
- name: 'TOP',
19
- position: {
20
- x: centerx,
21
- y: top
22
- }
23
- },
24
- {
25
- name: 'RIGHT',
26
- position: {
27
- x: right,
28
- y: centery
29
- }
30
- },
31
- {
32
- name: 'BOTTOM',
33
- position: {
34
- x: centerx,
35
- y: bottom
36
- }
37
- },
38
- {
39
- name: 'LEFT',
40
- position: {
41
- x: left,
42
- y: centery
43
- }
44
- }
45
- ]
46
- }
package/src/audio.ts DELETED
@@ -1,173 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
-
5
- import { Component, ComponentNature, Properties, RectPath, Shape } from '@hatiolab/things-scene'
6
-
7
- const NATURE: ComponentNature = {
8
- mutable: false,
9
- resizable: true,
10
- rotatable: true,
11
- properties: [
12
- {
13
- type: 'string',
14
- label: 'src',
15
- name: 'src'
16
- },
17
- {
18
- type: 'checkbox',
19
- label: 'started',
20
- name: 'started'
21
- },
22
- {
23
- type: 'checkbox',
24
- label: 'loop',
25
- name: 'loop'
26
- }
27
- ],
28
- 'value-property': 'src',
29
- help: 'scene/component/audio'
30
- }
31
-
32
- const AUDIO_IMAGE =
33
- 'data:image/png;base64,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'
34
-
35
- export default class AudioPlayer extends RectPath(Shape) {
36
- static IMAGE: HTMLImageElement
37
-
38
- static get image() {
39
- if (!AudioPlayer.IMAGE) {
40
- AudioPlayer.IMAGE = new Image()
41
- AudioPlayer.IMAGE.src = AUDIO_IMAGE
42
- }
43
-
44
- return AudioPlayer.IMAGE
45
- }
46
-
47
- _audio: any
48
-
49
- dispose() {
50
- super.dispose()
51
-
52
- this.started = false
53
- delete this._audio
54
- }
55
-
56
- ready() {
57
- super.ready()
58
-
59
- this._audio = new Audio()
60
-
61
- this._audio.addEventListener('canplay', () => {
62
- this.started && this._audio.play()
63
- })
64
-
65
- var { src = '', loop = false, started = false } = this.state
66
-
67
- this.onchangeSrc(src)
68
- this.onchangeLoop(loop)
69
- this.onchangeStarted(started)
70
- }
71
-
72
- render(ctx: CanvasRenderingContext2D) {
73
- var { left, top, width, height, src } = this.state
74
-
75
- ctx.beginPath()
76
-
77
- this.drawImage(ctx, AudioPlayer.image, left, top, width, height)
78
- }
79
-
80
- get nature() {
81
- return NATURE
82
- }
83
-
84
- get hasTextProperty() {
85
- return false
86
- }
87
-
88
- get src() {
89
- return this.getState('src')
90
- }
91
-
92
- set src(src) {
93
- this.setState('src', src)
94
- }
95
-
96
- get started() {
97
- return !!this.getState('started')
98
- }
99
-
100
- set started(started) {
101
- this.setState('started', started)
102
- }
103
-
104
- start() {
105
- if (!this._audio) return
106
-
107
- this._audio.classList.add('active')
108
- this._audio.play()
109
- }
110
-
111
- pause() {
112
- if (!this._audio) return
113
-
114
- this._audio.classList.remove('active')
115
- this._audio.pause()
116
- }
117
-
118
- onchangeSrc(src: string) {
119
- try {
120
- // this._audio.crossOrigin = "anonymous";
121
- if (String(src).substring(0, 4) !== 'data') this._audio.crossOrigin = 'use-credentials'
122
- else this._audio.crossOrigin = null
123
-
124
- this._audio.src = typeof src === 'string' ? this.app.url(src) : src
125
- } catch (e) {
126
- console.error(e)
127
- return
128
- }
129
- }
130
-
131
- onchangeStarted(started: boolean) {
132
- const audio = this._audio
133
-
134
- if (started) {
135
- /*
136
- [ audio/video.readyState ]
137
- 0 = HAVE_NOTHING - no information whether or not the audio/video is ready
138
- 1 = HAVE_METADATA - metadata for the audio/video is ready
139
- 2 = HAVE_CURRENT_DATA - data for the current playback position is available, but not enough data to play next frame/millisecond
140
- 3 = HAVE_FUTURE_DATA - data for the current and at least the next frame is available
141
- 4 = HAVE_ENOUGH_DATA - enough data available to start playing
142
- */
143
- audio.readyState == 4 && audio.play()
144
- } else {
145
- audio.pause()
146
- }
147
- }
148
-
149
- onchangeLoop(loop: boolean) {
150
- this._audio.loop = loop
151
- }
152
-
153
- onchange(after: Properties, before: Properties) {
154
- 'src' in after && this.onchangeSrc(after.src)
155
- 'started' in after && this.onchangeStarted(after.started)
156
- 'loop' in after && this.onchangeLoop(after.loop)
157
- }
158
-
159
- ondblclick(e: MouseEvent) {
160
- this.started = !this.started
161
- }
162
-
163
- ondropfile(transfered: DataTransferItemList, files: FileList) {
164
- for (let i = 0; i < transfered.length; i++) {
165
- if (transfered[i].type.startsWith('audio/')) {
166
- this.src = files[i]
167
- return
168
- }
169
- }
170
- }
171
- }
172
-
173
- Component.register('audio', AudioPlayer)
package/src/cloud.ts DELETED
@@ -1,40 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
-
5
- import { Component } from '@hatiolab/things-scene'
6
-
7
- export default class Cloud extends Component {
8
- prerender(ctx: CanvasRenderingContext2D) {
9
- //TODO center()를 구현할 때까지, 아무 구현없이 오버라이드한다.
10
- }
11
-
12
- render(ctx: CanvasRenderingContext2D) {
13
- var { x, y } = this.state
14
-
15
- ctx.beginPath()
16
-
17
- ctx.moveTo(x, y)
18
-
19
- ctx.bezierCurveTo(x - 40, y + 20, x - 40, y + 70, x + 50, y + 70)
20
- ctx.bezierCurveTo(x + 80, y + 100, x + 150, y + 100, x + 170, y + 70)
21
- ctx.bezierCurveTo(x + 250, y + 70, x + 250, y + 40, x + 220, y + 30)
22
- ctx.bezierCurveTo(x + 260, y - 40, x + 200, y - 50, x + 170, y - 30)
23
- ctx.bezierCurveTo(x + 150, y - 75, x + 80, y - 60, x + 80, y - 30)
24
- ctx.bezierCurveTo(x + 30, y - 75, x - 20, y - 60, x, y)
25
-
26
- ctx.closePath()
27
- }
28
-
29
- get path() {
30
- var { x, y } = this.state
31
-
32
- return [{ x, y }]
33
- }
34
-
35
- set path(path) {
36
- /* do nothing */
37
- }
38
- }
39
-
40
- Component.register('cloud', Cloud)