@operato/scene-basic 8.0.0-beta.0 → 8.0.0-beta.2

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": "8.0.0-beta.0",
5
+ "version": "8.0.0-beta.2",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
8
8
  "license": "MIT",
@@ -32,8 +32,8 @@
32
32
  },
33
33
  "devDependencies": {
34
34
  "@hatiolab/prettier-config": "^1.0.0",
35
- "@things-factory/builder": "^8.0.0-alpha",
36
- "@things-factory/operato-board": "^8.0.0-alpha",
35
+ "@things-factory/builder": "^8.0.0-beta",
36
+ "@things-factory/operato-board": "^8.0.0-beta",
37
37
  "@typescript-eslint/eslint-plugin": "^4.33.0",
38
38
  "@typescript-eslint/parser": "^4.33.0",
39
39
  "@web/dev-server": "^0.1.28",
@@ -58,5 +58,5 @@
58
58
  "prettier --write"
59
59
  ]
60
60
  },
61
- "gitHead": "b3cf6db1fbdcb9f4feac35560517fec3bb42c493"
61
+ "gitHead": "d6329b4f15ae63c2a99ec5b58ee1d527e88a4c36"
62
62
  }
package/CHANGELOG.md DELETED
@@ -1,250 +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
- ## [8.0.0-beta.0](https://github.com/things-scene/operato-scene/compare/v8.0.0-alpha.12...v8.0.0-beta.0) (2025-01-07)
7
-
8
-
9
- ### :bug: Bug Fix
10
-
11
- * @hatiolab/things-scene@^8.0.0-beta ([c32f4c0](https://github.com/things-scene/operato-scene/commit/c32f4c00decf244ca82ae17a41e33f269e1882e7))
12
-
13
-
14
-
15
- ## [8.0.0-alpha.1](https://github.com/things-scene/operato-scene/compare/v8.0.0-alpha.0...v8.0.0-alpha.1) (2024-09-09)
16
-
17
-
18
- ### :bug: Bug Fix
19
-
20
- * update [@things-factory](https://github.com/things-factory)@^8.0.0-alpha ([1dc3163](https://github.com/things-scene/operato-scene/commit/1dc31638ed9d3fd0ecb2ac55be0ce541e5599ab8))
21
-
22
-
23
-
24
- ## [8.0.0-alpha.0](https://github.com/things-scene/operato-scene/compare/v7.3.7...v8.0.0-alpha.0) (2024-09-01)
25
-
26
- **Note:** Version bump only for package @operato/scene-basic
27
-
28
-
29
-
30
-
31
-
32
- ## [7.0.1](https://github.com/things-scene/operato-scene/compare/v7.0.0...v7.0.1) (2024-06-30)
33
-
34
-
35
- ### :bug: Bug Fix
36
-
37
- * things-factory@7.0.0 ([f4cfe44](https://github.com/things-scene/operato-scene/commit/f4cfe44cb565e7b8fdc0df210a722b6526871848))
38
-
39
-
40
-
41
- ## [7.0.0](https://github.com/things-scene/operato-scene/compare/v7.0.0-rc.4...v7.0.0) (2024-06-30)
42
-
43
- **Note:** Version bump only for package @operato/scene-basic
44
-
45
-
46
-
47
-
48
-
49
- ## [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)
50
-
51
-
52
- ### :bug: Bug Fix
53
-
54
- * apply v7-rc dependencies ([eee5612](https://github.com/things-scene/operato-scene/commit/eee5612e1d569387c284a7c6c49d64ef44b6d701))
55
-
56
-
57
-
58
- ## [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)
59
-
60
- **Note:** Version bump only for package @operato/scene-basic
61
-
62
-
63
-
64
-
65
-
66
- ## [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)
67
-
68
-
69
- ### :rocket: New Features
70
-
71
- * 2.0.0-beta.0 ([a2e2869](https://github.com/things-scene/operato-scene/commit/a2e28694eedf5bab0c54bcab5432d54ec59edd7f))
72
-
73
-
74
- ### :bug: Bug Fix
75
-
76
- * allowJs in tsconfig option ([fa77174](https://github.com/things-scene/operato-scene/commit/fa771742188f21f177f0a85281570f59f0c478cf))
77
-
78
-
79
-
80
- ## [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)
81
-
82
-
83
- ### :bug: Bug Fix
84
-
85
- * ignore 'cache' folder for git and npm ([d70f811](https://github.com/things-scene/operato-scene/commit/d70f8118ff3e9248f80aa9435d6e6cbb8aacfcaf))
86
-
87
-
88
-
89
- ## [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)
90
-
91
-
92
- ### :bug: Bug Fix
93
-
94
- * things-factory@7.0.1 ([a9f4c18](https://github.com/things-scene/operato-scene/commit/a9f4c1873b80c540e4c2e16649e127ccffcf9a4c))
95
-
96
-
97
-
98
- ## [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)
99
-
100
-
101
- ### :bug: Bug Fix
102
-
103
- * translation ([266d423](https://github.com/things-scene/operato-scene/commit/266d423d9d6992464f45a437acc90ccf8ed33bf6))
104
-
105
-
106
-
107
- ## [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)
108
-
109
-
110
- ### :bug: Bug Fix
111
-
112
- * 컴포넌트 명 다국어 ([3616a52](https://github.com/things-scene/operato-scene/commit/3616a52e2f0268c83c976c6b4deeffc016f91e46))
113
-
114
-
115
-
116
- ## [2.0.0-alpha.0](https://github.com/things-scene/operato-scene/compare/v1.3.9...v2.0.0-alpha.0) (2024-01-14)
117
-
118
-
119
- ### :bug: Bug Fix
120
-
121
- * 2.0.0-alpha.0 ([93274e3](https://github.com/things-scene/operato-scene/commit/93274e36c5d184f339f83899654dd48b4786ac2b))
122
-
123
-
124
-
125
- ## [1.2.90](https://github.com/things-scene/operato-scene/compare/v1.2.89...v1.2.90) (2023-11-22)
126
-
127
- **Note:** Version bump only for package @operato/scene-basic
128
-
129
-
130
-
131
-
132
-
133
- ## [1.2.87](https://github.com/things-scene/operato-scene/compare/v1.2.86...v1.2.87) (2023-11-10)
134
-
135
- **Note:** Version bump only for package @operato/scene-basic
136
-
137
-
138
-
139
-
140
-
141
- ## [1.2.76](https://github.com/things-scene/operato-scene/compare/v1.2.75...v1.2.76) (2023-10-28)
142
-
143
-
144
- ### :bug: Bug Fix
145
-
146
- * scene-tab ([ad62f96](https://github.com/things-scene/operato-scene/commit/ad62f967b149eb5adf8f2e0714d79e8a9dc7186c))
147
-
148
-
149
-
150
- ## [1.2.71](https://github.com/things-scene/operato-scene/compare/v1.2.70...v1.2.71) (2023-10-11)
151
-
152
-
153
- ### :bug: Bug Fix
154
-
155
- * add bluetooth module ([4bba13c](https://github.com/things-scene/operato-scene/commit/4bba13c7ac29508d37f5751ea5abdded60fa314d))
156
-
157
-
158
-
159
- ## [1.2.66](https://github.com/things-scene/operato-scene/compare/v1.2.65...v1.2.66) (2023-09-14)
160
-
161
- **Note:** Version bump only for package @operato/scene-basic
162
-
163
-
164
-
165
-
166
-
167
- ## [1.2.65](https://github.com/things-scene/operato-scene/compare/v1.2.64...v1.2.65) (2023-09-14)
168
-
169
- **Note:** Version bump only for package @operato/scene-basic
170
-
171
-
172
-
173
-
174
-
175
- ## [1.2.62](https://github.com/things-scene/operato-scene/compare/v1.2.61...v1.2.62) (2023-09-11)
176
-
177
- **Note:** Version bump only for package @operato/scene-basic
178
-
179
-
180
-
181
-
182
-
183
- ## [1.2.49](https://github.com/things-scene/operato-scene/compare/v1.2.48...v1.2.49) (2023-06-26)
184
-
185
-
186
- ### :bug: Bug Fix
187
-
188
- * missing .npmignore ([61ba4f2](https://github.com/things-scene/operato-scene/commit/61ba4f2ae22a865d700a971d62eb01f950c34d0e))
189
-
190
-
191
-
192
- ## [1.2.46](https://github.com/things-scene/operato-scene/compare/v1.2.45...v1.2.46) (2023-06-10)
193
-
194
-
195
- ### :bug: Bug Fix
196
-
197
- * typescript build options ([3eb0d7f](https://github.com/things-scene/operato-scene/commit/3eb0d7fd80e2c3cea698501aa1d9d54903423a7b))
198
-
199
-
200
-
201
- ## [1.2.45](https://github.com/things-scene/operato-scene/compare/v1.2.44...v1.2.45) (2023-06-09)
202
-
203
-
204
- ### :bug: Bug Fix
205
-
206
- * set => setState, get => getState for whole scene component ([c205db4](https://github.com/things-scene/operato-scene/commit/c205db4c7bfa5c6dd7d34ea82af283d83b551bad))
207
-
208
-
209
-
210
- ## [1.2.36](https://github.com/things-scene/operato-scene/compare/v1.2.35...v1.2.36) (2023-05-13)
211
-
212
-
213
- ### :bug: Bug Fix
214
-
215
- * license ([d37d485](https://github.com/things-scene/operato-scene/commit/d37d48597407dea1ad022e674f2899720e56d695))
216
-
217
-
218
-
219
- ## [1.2.29](https://github.com/things-scene/operato-scene/compare/v1.2.28...v1.2.29) (2023-04-30)
220
-
221
-
222
- ### :bug: Bug Fix
223
-
224
- * update module's version ([047d08b](https://github.com/things-scene/operato-scene/commit/047d08b5d912d12c04b2f6b63156d1e812588365))
225
-
226
-
227
-
228
- ### [1.2.27](https://github.com/things-scene/operato-scene/compare/v1.2.26...v1.2.27) (2023-04-22)
229
-
230
- **Note:** Version bump only for package @operato/scene-basic
231
-
232
-
233
-
234
-
235
-
236
- ### [1.2.13](https://github.com/things-scene/operato-scene/compare/v1.2.12...v1.2.13) (2023-03-05)
237
-
238
-
239
- ### :bug: Bug Fix
240
-
241
- * lighten data binding for 3d objects ([09db97e](https://github.com/things-scene/operato-scene/commit/09db97e1fe70563a734113e70538bdf6d18c6bc7))
242
-
243
-
244
-
245
- ### [1.2.5](https://github.com/things-scene/operato-scene/compare/v1.2.4...v1.2.5) (2023-02-20)
246
-
247
-
248
- ### :bug: Bug Fix
249
-
250
- * 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,iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAMAAAC3Ycb+AAAAP1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACzJYIvAAAAFHRSTlMA8BAwgNBgQKB/wCBwUJDg37CvXyUlBK8AABFYSURBVHja7NsBkqIwFIThTiAQgyBq3/+sm6p1tnamZkaTMhJJf1f4S/JeEIiIiIiIiIiIiIiIiEhD7Hg4BH84TpAKjJ4f3NFCtjVd+InXz2RTs+FXlxGylYHfcVfIJmb+YFWSLUyGVJKKBJJKUo+Rd6w63l/qzLuCkryO5fe0l2xk5mMWbe+v0fNBRqf7S3je6CipQ2ACr+dWcYEpzBFS1plpguatsnomMgdIQSOTuQ5SjmE6/UgK8szgdJIUM/FG41YlFmYJ2kkKsY5ZzAwBurHDk3WGeRY0bvYrGa1+rqNI22f7dS32ZnUK1GMr0eSK3mEc9dhKMxp+ZTo8kT2emOXS5LQ1kCxbJBocSd2k5PaIjMVzjWcdJPk9ooBnmzx1t5XbIxqBKpJ4NGTgzwKiGpK4do72gb+ZUMIYtCPm9WCPMsYTE5k2hq2ZvzujlCE1iRmwf3dvmRyKsT0T7b9I7HEPCpqCiqT2IIqaT1pI0noQZdlFC8l/PbYPAnRORT56VBEE6FXkb49agmByKhJ71BME6FsvEntUFQTdqekisUdlQWCXhovEHtUFAWbTapHYo8YgmFybO3vsUWcQYGmxSOxRbRAMprkisUfFQVKmrX18sxt7VB0ENjT1xir2qDxIwkFi3v89e+xRfxAMzfzzIfZ4hyAYDR9zwVuLPd4jCDrTwoLYGb5LEFi3/+E3rweR6urX20c/Fvls2Pvwm9mDSGIPhv8YPyGf3/eo9Ye7O8B2FIShAAooakEttex/rbODad5/yTHIAjqn505IQPv+Xz06dz+4VXORHEZcgAcB8updM8F6e25jBzwIkE07l+x8amMnPDp6nsNJ+BoZ7Q6F8egqAda9VEuRNlZjBzwYkMskdXR73okd8GBAJiKYjBcZKKqG9OiKDbgdfxJ5VhsBPDiQZhaouD3p4hfw4EAmwxisz3MSHwAPEmQ1TB1N+SmXWoAHC7JbZsWl/IxLLcCDBplNo3lrfMLsmwAPGmShAxX5/1vOEzjEz3iyfQ/hI36W4TctsUesOAifPdrQg8M++KYl95iCBkjI1r8634betBAPHZDTPFAmD3zLiHgogVTziMsahz0eIh5aIGHGRSJ2mFtHPR4iHhQIP2UvWGMf8wk74qEIEib7rLjPiBfxiAcCwp8V+Nae3uMdRhAPDIR/J5f/Q2DTcC+hIB7qIGEq3Ti9bx+sryMeAAgS70OK8G2kBD8L8QBAoLWU3g3vUVIc6D0txAMAsY+4jBWowXHO64gHBGKfYJ2T5qY1BxcL98BB+PQ+XiS9xxh9EQ8ChA6C5UXWIUoE9MBB8LVHQoS7ib8/dRn3sAcJ6bQRSdH96RDxIEH4QEX+AHF4LxHEAwUh12xyr1V8lwjiQYDYF8kuf1jluUQQDwrEvkhW8Wc6LhHUgwfhi4QPlHm7LRHawx4kpE191Dq8lgjhAYDQa1cftYrPEiE8OJDb40uqyzdQCA8WhAzL4G/PT4c3WrgHD2IfllGl53V37zsgHg5ApPNvVvq4Fn4spx4oiH1W3CwtEV+PDhEPJyBSkVX4aa7emkM83ICEKWpGM7wdvYCCeDgCEYpcwhLxczhEPFyBCEUWnRL5T6X59SBASBF+9l28TL5F7uEORCZyCUvEx+S7yT0cgoRVb9JaXLR1qUdfgksQ0fTbgmhFB20d8HAKEha14+F8f1sHPNyCiL6EqK+n20/rgIdjkFC0Ho1s6Gndvcc9ICkr/ey8/rHO6vp9KawL8DAFOV6l9Fyub7IbflsCag1qRfVsXWvxHjxIejU+BHZV6uvHD1XiEb++Bw8i+dNd+Wv0eCQmhcPhRPwUUt2DB5G1sfa1aeyzAuyJj9x2HjyIdKzIKw5SI14ieFtvo3kIQERj3lVhkUOnRD7AnjV5369QkAOJZeCH+Jh41xOLs73dQwAifY6dpxCCbjTDzLf1Bm1Y93tAIDOWXcLPvrHyr2hVoEAceEAgDQzB4jetk0/c2OXRHB48EJCpa4dgpYh2ETxtrshz7zx4ICCzfuTSDn8p/EOS9OTjwgMB+cABP3yWYuOPIofs33LigYCULlpZNXJppVU30Vf14kGAUCLijf1D71lN9FW9eFiA9KgZ8FPpPUsSnufGA+8hvAg2Kpz0nrX//qp+PIgpC3i6xJRITOye9fn1VT15ICCrVlQG5rywo0H8x965bVkNwmCYQ2kR6Gmb939WXV65dFnI/tPdjPBfO7XMN4EkTUJtqZp4sCJ1+8jwkhMu0KpMxFXFA8hlVfQSMxGH5mDK1VKV8QCyvTVtUiYyo7V358VStfGoAEFMhGYhEwloxZy9WKo2Hjwg5iSOvFDXeUYd33+PuVfHgwnEBWLocDJp+IIa2fyvperjwQRiXCKGosyXqoA+YfsIELuYu4HAt+msMknfDK4jfQJIzOZ2IPAQWJtFOhQKivR2IDZ6Awis7V0iLxqBI7uEZo19dakTogLSwKvf8yk8Jq6CGK0GKvWlatG7b7kkUU/Lo1gdXWn7/4E0j0qeJDpqN/ABqQcgJgdqURb4chjQktIugDS6wFFiz3JgaJj7AGJmholAe9YKhoZLJ0Ca6smjwJ4VwVN96gVIE5GM71kHaGKxGyAtRDaB2NBhLVmpHyANRKzDO28W7FS3HQFpaIWa8TrfCXQwegJSL5k+8M9UJ+pm9QTEnCIZrR0MDQeQ9ua0iCcYQaBTV0CqNXQW/yiyYG7W1heQanPaCkciBXuH1BkQJzHcDQxmpgGkPatl4WkbCXO/bW9AqlNg4H0PPMi6A1IxkQmOZ8D0ousNSMVEEuyreTAQ6Q7IRJeCX2YZQHhv6SrBOmpkM+YUzN0BqSRQCupmTeCP9wdkhiOREwtEzgGEsWcF9BhK9R8fQDiN7A8DiR0CKXQlj/q9IM8OgXjIzcKBlAHkD6FulgNzJwPIHwpo8mQAkX3LiPq9dKUMAQk9AqmcqmjuBAJCPQIpA4guIAsKJA0gnwNy3A4kDyBIHCEPxAwgf8gPILqA5AFEF5CxZX0lIHYc6rqADLf380BmFMgxgIzUyf8MJKLTRelKHgKy9wgkjfS7LiA0gKgC8vQn3HUA4RQ5LKPIAQciWbqIEg0YkLNDIHYUyqkCsmKN5vg3+W0AYTRATaPY+uu1IwS6UMGAlO6AFPjSCQMStaNh53cdcPG7Hx1Uupo+rx+Bltn1BuTAj5BptEV/bHAAwbnJMICwRmtUDOSEA8s4Rmtw3nITGD6TwUNoG0Ca7xi2YKSPj2eKXQFxQWKA2QbGMWEMMGseOb7C7T47uJS1JyAzVbTjqZdU3zbHzMXWS+qp4Fgn8Ahy/QCRGqQcwU1vGnN7fylboWn8Bzg//hyjxltvdcl45bwFfYKzFyBy11UU9BnjuoqfWizVlQXulpzBTNbaB5Aid+VRrkBFB630AMS9BC8FK2ggE7u/FGy1kvfcB9TKQufX5uUXNWl3EjvWCi4k/u9A3Ddq1CpTIQGe6VN1qd8ArcvDQNw3S41Kn6qQmOq5e7pRr+8fAYLiIJtFrrvYRMYL0q06vj8EZLXUriJzRY8H1xEagOCK7gkghRg6RQYO0I6aWPwIEAru80AiMWSdzAeuDXUKyr+WqpAID8hMHC1Ct8F4mUsQ6W8pJMICki0JHCBczAFdBl38G3VE6ErQhhWlih4LWrCSLpaqjggHiGe9mVjRY0YPoelyqcqIcIDEe97rqJFFH7FcLlUZEQ6Qg5plvZiBFNhtri1VFREGEC/Eg4nZoU5vqi1VFREGkIXDQ8xAIhzoT/WlKiLCAFIYPOQMxOPdjfWlKiLCADJRm3YGj+pDE2xktmmpaogwgMz8d8GrumZ4xzpbvinqISJ+hiTWm7wEqoJdI9JEV9JChAEkS3xCZzKecLcgN6YwlRBhAGmweTsblg6qKMM7Vmh321UQ4QAp1VfwhqVJIh+Wm03W0qV0EOEAybXtivkCmWrKeH2EZ/xBaSBCV2L9Re+LYSqJJIxDu1ew07U0EGEBcTtmHty4JuPtQhvLh1BAhK7Uvvq0GK484QZST0GvvFDqeSJ1IA0r2mfDljvqBoJ//rVsq7yZCA6kXgVkJ2f4ijIGMjOfMVsCBBORB2Jy+sM6ijNvaBUqmw/cStZ8EiKciHwp6Rp++88qmxXQeTUxDiJWJ9wSISvBicgXW+dypn1PqWTznlwgwdZdfiLHr5OELEAEASKvJFRE5JCPKbh8OxHdQKJU0crEzRXrJ/IEkFms6tGyrUw9kQeALFRXvK2iSzsRAAi6BLxM+60xdsqJAEBuXMAMxDLVp+gmAgC57/UT4qvVj3TVRCAgSAYL91aXtyNLzUQAIFhAiP8m0/NHOp+ILiBtPFKrs6bgSOcT0QTEB8nO3QR1yKslggKRf+m11UB0HOl8IlqAeCvauXuo8HnfIqIDyCw6G8XMcGiplMingMzCnbuHFp/3LSLPA4nUpqm5YkWNzwsQeQxIDsKjH5wVSU5qJPIJIIt4jjpqNBAekQeBfJOeHWS81FQoo4/I7UDcS3wUh0liTzLqiEgDqddx4ZHDrNZAACIAEMw88HPYWb0GAhABgEDmgf9Vb5oNBCByOxD3uqWYbCHVBgIQuRlIsbfwMEG5gQBE7gSyHMDsOayrxJvHBRC5B0hOxJH1nK4SlUE6QOR+IG6ju3iYQEqDdIDIzUDyZu/jMRHpS/OiRG4FkiPRfTw8kbrvIAJEACAIDpyHC1/GQHhEbgKSXwTyqIeEur6kixEBgABHOTr7YSX1MSFAhA0E307wUU76Y0KACAsI/tvCRzkF+iIuL0AEAYLbR2QOfvhKJ/obRESBxNt5rPSFXN4f7dyNdqMgEIbhAXWwJErT/e7/Wreb5HTT07QVgWSAeW5g7b4n8qOSUCRPEId4HP93SXp5dDNGRJFcQTxihSH+NW1Bb1cXKpIryJAwnG/zhl8ZcSP6jiKZghwRaaWLnP/AkcSKKJIniEcUs8QfjFLdEmRvkSxB4lfn0QN6DY+lshQpHiT96Dlr6r5hxRUpHST9ZEY71X7DOmOZQVZLsd5Q8wzrPxYYJDiKNqOBG1ZCkZKzrNXu6lHvkjChSFqQsdTPg45ApXtYaUXKr9TNuPcvqO2pVMkitFXAL2a79/qr3HQvVSTXUtofCl79RDXh5CDpw3pwu6+9kRlvtiI5VtPhmHLltT4EKVQkfb8pcOHrXqk6nBAksUjgpKtuYsskaxGKYT0+84uYgziE4YQgMdx0m8PRfis2MbL33PMXoVjD6PEunI4HSjDjStiJP08vQk9hZzQ7oH/geoLYCUBDW4rf4FqCDFt7THUO6B+4jiDn2XNTW7zf4hqCMND4BOsGyw+yAmh0x+QeFh7EeqD5Ce8nLDrI8NpbDyIWHIQNruo4GyAPlhrEzuixBxHLDDJMnfYgYolBricHNfjIdgMWF+Qyu+pkgX4HCwuymL57ELGkIHZG7z2IWE6Q5VV7vGMhQewbtMcZiwhyHj26ne9+xs8PcvDQHnFFqCD7Au0RW4TK+fOKqw4eoOcqYqgU53HR3/5uShFPCfKey9hFDyJO/vAi7RDZnp7X5igyUH72xSDW1E2Pn4tMRCQgR8vLwbgii4gcmLvqQcSPGtIPX3M08wn6I4qYQ94cM/Yw9Xxhmw+X/59wHrtMlX1AmIkzdyaaAnLg1Nnw8WGYSk40X/BOh4+El6LMSBnN2Cd0tPq4w/LJXGrMbCX06PZ2dcM65yzlNertShSHf3SzRAyPM332IcSAHUKPi8EHmXU0l8Uglmni0yipDoi16s+jJKejhywLooz68yiMEcHr2qM4h81CJ++VPJfTu5UwBpv4Pp9DJSi6MJx0bvUwiw4ewgT8zNR0LHUL+OccOpY/3ElzyGKD5pBlMJpDlsOkMythRoNbXh95PJsdA67MrMtAEYbjeDqNo+7oKqWUUkoppZRSSimllFJKFfMXp4vmSjB8n6sAAAAASUVORK5CYII='
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)