@hatiolab/things-scene 3.4.39 → 3.4.41
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/db.sqlite +0 -0
- package/package.json +1 -1
- package/schema.graphql +3966 -0
- package/things-scene-ie.js +1 -1
- package/things-scene-min.js +1 -1
- package/things-scene.mjs +2 -2
- package/dist/animation/animate.d.ts +0 -4
- package/dist/animation/animations/animation.d.ts +0 -14
- package/dist/animation/animations/fade.d.ts +0 -4
- package/dist/animation/animations/heartbeat.d.ts +0 -4
- package/dist/animation/animations/moving.d.ts +0 -4
- package/dist/animation/animations/outline.d.ts +0 -10
- package/dist/animation/animations/rotation.d.ts +0 -4
- package/dist/animation/animations/vibration.d.ts +0 -4
- package/dist/animation/compile.d.ts +0 -1
- package/dist/animation/delta.d.ts +0 -19
- package/dist/animation/index.d.ts +0 -1
- package/dist/command/command-change.d.ts +0 -7
- package/dist/command/command-migrate.d.ts +0 -4
- package/dist/command/command-migrate.js +0 -85
- package/dist/command/command-migrate.js.map +0 -1
- package/dist/command/command.d.ts +0 -5
- package/dist/command/snapshot-commander.d.ts +0 -15
- package/dist/components/anchor/anchor.d.ts +0 -128
- package/dist/components/anchor/ellipse-anchors.d.ts +0 -2
- package/dist/components/anchor/ellipse-anchors.js +0 -38
- package/dist/components/anchor/ellipse-anchors.js.map +0 -1
- package/dist/components/anchor/rect-anchors.d.ts +0 -10
- package/dist/components/audio.d.ts +0 -25
- package/dist/components/audio.js +0 -141
- package/dist/components/audio.js.map +0 -1
- package/dist/components/cloud.d.ts +0 -13
- package/dist/components/cloud.js +0 -31
- package/dist/components/cloud.js.map +0 -1
- package/dist/components/component.d.ts +0 -227
- package/dist/components/component.js +0 -912
- package/dist/components/component.js.map +0 -1
- package/dist/components/container-abstract.d.ts +0 -51
- package/dist/components/container-abstract.js +0 -372
- package/dist/components/container-abstract.js.map +0 -1
- package/dist/components/container.d.ts +0 -38
- package/dist/components/container.js +0 -75
- package/dist/components/container.js.map +0 -1
- package/dist/components/data/data-mapping.d.ts +0 -16
- package/dist/components/data/data.d.ts +0 -8
- package/dist/components/data/evaluator.d.ts +0 -1
- package/dist/components/donut.d.ts +0 -15
- package/dist/components/donut.js +0 -74
- package/dist/components/donut.js.map +0 -1
- package/dist/components/drawer/draw-image-pendable.d.ts +0 -1
- package/dist/components/drawer/effect.d.ts +0 -1
- package/dist/components/drawer/fill.d.ts +0 -14
- package/dist/components/drawer/format.d.ts +0 -1
- package/dist/components/drawer/line.d.ts +0 -3
- package/dist/components/drawer/stroke.d.ts +0 -1
- package/dist/components/drawer/text-wrapper.d.ts +0 -10
- package/dist/components/drawer/text.d.ts +0 -3
- package/dist/components/ellipse.d.ts +0 -35
- package/dist/components/ellipse.js +0 -99
- package/dist/components/ellipse.js.map +0 -1
- package/dist/components/file/ondropfile.d.ts +0 -1
- package/dist/components/fit/fit.d.ts +0 -15
- package/dist/components/geometry/transcoord.d.ts +0 -41
- package/dist/components/geometry/union.d.ts +0 -6
- package/dist/components/gif-view.d.ts +0 -18
- package/dist/components/gif-view.js +0 -116
- package/dist/components/gif-view.js.map +0 -1
- package/dist/components/global-ref.d.ts +0 -36
- package/dist/components/global-ref.js +0 -128
- package/dist/components/global-ref.js.map +0 -1
- package/dist/components/group.d.ts +0 -15
- package/dist/components/group.js +0 -145
- package/dist/components/group.js.map +0 -1
- package/dist/components/html/elements.d.ts +0 -2
- package/dist/components/html/fill.d.ts +0 -1
- package/dist/components/html/reposition.d.ts +0 -1
- package/dist/components/html/shadow.d.ts +0 -1
- package/dist/components/html-overlay-container.d.ts +0 -27
- package/dist/components/html-overlay-container.js +0 -14
- package/dist/components/html-overlay-container.js.map +0 -1
- package/dist/components/html-overlay-element.d.ts +0 -25
- package/dist/components/html-overlay-element.js +0 -9
- package/dist/components/html-overlay-element.js.map +0 -1
- package/dist/components/image-view.d.ts +0 -19
- package/dist/components/image-view.js +0 -180
- package/dist/components/image-view.js.map +0 -1
- package/dist/components/index.d.ts +0 -32
- package/dist/components/index.js +0 -39
- package/dist/components/index.js.map +0 -1
- package/dist/components/info-window.d.ts +0 -41
- package/dist/components/info-window.js +0 -425
- package/dist/components/info-window.js.map +0 -1
- package/dist/components/line.d.ts +0 -91
- package/dist/components/line.js +0 -303
- package/dist/components/line.js.map +0 -1
- package/dist/components/local-ref.d.ts +0 -47
- package/dist/components/local-ref.js +0 -103
- package/dist/components/local-ref.js.map +0 -1
- package/dist/components/mixins/connectable.d.ts +0 -45
- package/dist/components/mixins/data-source.d.ts +0 -9
- package/dist/components/mixins/html-element.d.ts +0 -24
- package/dist/components/mixins/move-handle.d.ts +0 -11
- package/dist/components/mixins/rect-path.d.ts +0 -13
- package/dist/components/mixins/value-holder.d.ts +0 -18
- package/dist/components/mutater/bounds.d.ts +0 -10
- package/dist/components/mutater/path.d.ts +0 -5
- package/dist/components/ortholine.d.ts +0 -21
- package/dist/components/ortholine.js +0 -814
- package/dist/components/ortholine.js.map +0 -1
- package/dist/components/outline/ellipse-outline.d.ts +0 -4
- package/dist/components/outline/ellipse-outline.js +0 -11
- package/dist/components/outline/ellipse-outline.js.map +0 -1
- package/dist/components/outline/path-outline.d.ts +0 -1
- package/dist/components/path.d.ts +0 -5
- package/dist/components/path.js +0 -40
- package/dist/components/path.js.map +0 -1
- package/dist/components/polygon.d.ts +0 -40
- package/dist/components/polygon.js +0 -157
- package/dist/components/polygon.js.map +0 -1
- package/dist/components/polyline.d.ts +0 -18
- package/dist/components/polyline.js +0 -102
- package/dist/components/polyline.js.map +0 -1
- package/dist/components/popup.d.ts +0 -48
- package/dist/components/popup.js +0 -138
- package/dist/components/popup.js.map +0 -1
- package/dist/components/rect.d.ts +0 -26
- package/dist/components/rect.js +0 -91
- package/dist/components/rect.js.map +0 -1
- package/dist/components/retention/retention-manager.d.ts +0 -8
- package/dist/components/root-container.d.ts +0 -90
- package/dist/components/root-container.js +0 -478
- package/dist/components/root-container.js.map +0 -1
- package/dist/components/ruler.d.ts +0 -16
- package/dist/components/ruler.js +0 -77
- package/dist/components/ruler.js.map +0 -1
- package/dist/components/shape.d.ts +0 -25
- package/dist/components/shape.js +0 -80
- package/dist/components/shape.js.map +0 -1
- package/dist/components/star.d.ts +0 -13
- package/dist/components/star.js +0 -80
- package/dist/components/star.js.map +0 -1
- package/dist/components/text/substitutor.d.ts +0 -3
- package/dist/components/text.d.ts +0 -8
- package/dist/components/text.js +0 -15
- package/dist/components/text.js.map +0 -1
- package/dist/components/three-container.d.ts +0 -60
- package/dist/components/three-container.js +0 -515
- package/dist/components/three-container.js.map +0 -1
- package/dist/components/triangle.d.ts +0 -15
- package/dist/components/triangle.js +0 -76
- package/dist/components/triangle.js.map +0 -1
- package/dist/const.d.ts +0 -39
- package/dist/core/collection.d.ts +0 -8
- package/dist/core/debug.d.ts +0 -1
- package/dist/core/deep-equals.d.ts +0 -1
- package/dist/core/dom-to-image.d.ts +0 -127
- package/dist/core/event.d.ts +0 -92
- package/dist/core/index.d.ts +0 -2
- package/dist/core/list.d.ts +0 -32
- package/dist/core/logger.d.ts +0 -3
- package/dist/core/memoize.d.ts +0 -6
- package/dist/core/mixin.d.ts +0 -1
- package/dist/core/obj-accessor.d.ts +0 -1
- package/dist/core/reference-map.d.ts +0 -14
- package/dist/core/round-rect.d.ts +0 -19
- package/dist/core/script-loader.d.ts +0 -3
- package/dist/core/snapshot-taker.d.ts +0 -12
- package/dist/core/stack.d.ts +0 -2
- package/dist/core/timecapsule.d.ts +0 -18
- package/dist/core/utils.d.ts +0 -9
- package/dist/decorator/anchors-decorator.d.ts +0 -31
- package/dist/decorator/data-spread-decorator.d.ts +0 -1
- package/dist/decorator/decotag-decorator.d.ts +0 -1
- package/dist/decorator/index.d.ts +0 -2
- package/dist/decorator/link-decorator.d.ts +0 -1
- package/dist/effect/gradation.d.ts +0 -1
- package/dist/effect/index.d.ts +0 -1
- package/dist/effect/shadow.d.ts +0 -2
- package/dist/effect/turn.d.ts +0 -1
- package/dist/event/event-engine.d.ts +0 -12
- package/dist/event/event-pump.d.ts +0 -11
- package/dist/event/event-tracker.d.ts +0 -21
- package/dist/event/index.d.ts +0 -2
- package/dist/event/ua-event-handler.d.ts +0 -32
- package/dist/event-map/event-map.d.ts +0 -9
- package/dist/event-map/index.d.ts +0 -1
- package/dist/event-map/move-handler.d.ts +0 -1
- package/dist/event-map/text-editor-lite.d.ts +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +0 -1
- package/dist/layer/action/emphasize.d.ts +0 -2
- package/dist/layer/action/popup.d.ts +0 -5
- package/dist/layer/action/pressed.d.ts +0 -2
- package/dist/layer/add-layer.d.ts +0 -42
- package/dist/layer/add-layer.js +0 -142
- package/dist/layer/add-layer.js.map +0 -1
- package/dist/layer/decotag-layer.d.ts +0 -27
- package/dist/layer/decotag-layer.js +0 -105
- package/dist/layer/decotag-layer.js.map +0 -1
- package/dist/layer/guide-layer.d.ts +0 -44
- package/dist/layer/guide-layer.js +0 -261
- package/dist/layer/guide-layer.js.map +0 -1
- package/dist/layer/index.d.ts +0 -7
- package/dist/layer/index.js +0 -11
- package/dist/layer/index.js.map +0 -1
- package/dist/layer/layer.d.ts +0 -32
- package/dist/layer/layer.js +0 -155
- package/dist/layer/layer.js.map +0 -1
- package/dist/layer/model-layer.d.ts +0 -46
- package/dist/layer/model-layer.js +0 -402
- package/dist/layer/model-layer.js.map +0 -1
- package/dist/layer/modeler/anchor-handler.d.ts +0 -36
- package/dist/layer/modeler/control-handler.d.ts +0 -18
- package/dist/layer/modeler/focus-outline.d.ts +0 -5
- package/dist/layer/modeler/group-outline.d.ts +0 -5
- package/dist/layer/modeler/index.d.ts +0 -7
- package/dist/layer/modeler/path-handler.d.ts +0 -22
- package/dist/layer/modeler/resizer.d.ts +0 -13
- package/dist/layer/modeler/rotator.d.ts +0 -15
- package/dist/layer/modeler/rotator.js +0 -120
- package/dist/layer/modeler/rotator.js.map +0 -1
- package/dist/layer/modeling-layer.d.ts +0 -66
- package/dist/layer/modeling-layer.js +0 -451
- package/dist/layer/modeling-layer.js.map +0 -1
- package/dist/layer/selection/selected-finder.d.ts +0 -1
- package/dist/layer/selection-layer.d.ts +0 -42
- package/dist/layer/selection-layer.js +0 -307
- package/dist/layer/selection-layer.js.map +0 -1
- package/dist/layer/shift-layer.d.ts +0 -18
- package/dist/layer/shift-layer.js +0 -61
- package/dist/layer/shift-layer.js.map +0 -1
- package/dist/layout/absolute.d.ts +0 -8
- package/dist/layout/card.d.ts +0 -7
- package/dist/layout/html-absolute.d.ts +0 -8
- package/dist/layout/index.d.ts +0 -8
- package/dist/layout/index.js +0 -12
- package/dist/layout/index.js.map +0 -1
- package/dist/layout/layout.d.ts +0 -11
- package/dist/layout/linear-horizontal.d.ts +0 -7
- package/dist/layout/linear-vertical.d.ts +0 -7
- package/dist/layout/table.d.ts +0 -9
- package/dist/layout/three.d.ts +0 -8
- package/dist/layout/three.js +0 -20
- package/dist/layout/three.js.map +0 -1
- package/dist/license/license.d.ts +0 -18
- package/dist/model/compile.d.ts +0 -1
- package/dist/model/compile.js +0 -28
- package/dist/model/compile.js.map +0 -1
- package/dist/model/duplicate.d.ts +0 -1
- package/dist/model/index.d.ts +0 -3
- package/dist/model/selector.d.ts +0 -2
- package/dist/style/compile.d.ts +0 -1
- package/dist/style/index.d.ts +0 -1
- package/dist/things-scene/api/add-start.d.ts +0 -1
- package/dist/things-scene/api/add.d.ts +0 -5
- package/dist/things-scene/api/align.d.ts +0 -1
- package/dist/things-scene/api/change.d.ts +0 -2
- package/dist/things-scene/api/clipboard.d.ts +0 -3
- package/dist/things-scene/api/distribute.d.ts +0 -1
- package/dist/things-scene/api/duplicate.d.ts +0 -4
- package/dist/things-scene/api/fullscreen.d.ts +0 -1
- package/dist/things-scene/api/group.d.ts +0 -8
- package/dist/things-scene/api/group.js +0 -78
- package/dist/things-scene/api/group.js.map +0 -1
- package/dist/things-scene/api/ids.d.ts +0 -4
- package/dist/things-scene/api/index.d.ts +0 -15
- package/dist/things-scene/api/listener.d.ts +0 -3
- package/dist/things-scene/api/remove.d.ts +0 -4
- package/dist/things-scene/api/symmetry.d.ts +0 -2
- package/dist/things-scene/api/symmetry.js +0 -39
- package/dist/things-scene/api/symmetry.js.map +0 -1
- package/dist/things-scene/api/to-data-url.d.ts +0 -1
- package/dist/things-scene/api/to-data-url.js +0 -69
- package/dist/things-scene/api/to-data-url.js.map +0 -1
- package/dist/things-scene/api/zorder.d.ts +0 -2
- package/dist/things-scene/application-context.d.ts +0 -40
- package/dist/things-scene/config.d.ts +0 -4
- package/dist/things-scene/create.d.ts +0 -20
- package/dist/things-scene/fps.d.ts +0 -1
- package/dist/things-scene/index.d.ts +0 -17
- package/dist/things-scene/index.js +0 -23
- package/dist/things-scene/index.js.map +0 -1
- package/dist/things-scene/polyfill.d.ts +0 -2
- package/dist/things-scene/scene.d.ts +0 -155
- package/dist/things-scene/version.d.ts +0 -2
- package/dist/threed/common.d.ts +0 -22
- package/dist/threed/control/three-controls.d.ts +0 -11
- package/dist/threed/control/three-controls.js +0 -620
- package/dist/threed/control/three-controls.js.map +0 -1
- package/dist/threed/html/elements.d.ts +0 -2
- package/dist/threed/real-object-camera-meshed.d.ts +0 -12
- package/dist/threed/real-object-camera-meshed.js +0 -49
- package/dist/threed/real-object-camera-meshed.js.map +0 -1
- package/dist/threed/real-object-camera.d.ts +0 -9
- package/dist/threed/real-object-camera.js +0 -31
- package/dist/threed/real-object-camera.js.map +0 -1
- package/dist/threed/real-object-dom-element.d.ts +0 -20
- package/dist/threed/real-object-dom-element.js +0 -78
- package/dist/threed/real-object-dom-element.js.map +0 -1
- package/dist/threed/real-object-dummy.d.ts +0 -6
- package/dist/threed/real-object-dummy.js +0 -11
- package/dist/threed/real-object-dummy.js.map +0 -1
- package/dist/threed/real-object-extrude.d.ts +0 -19
- package/dist/threed/real-object-extrude.js +0 -171
- package/dist/threed/real-object-extrude.js.map +0 -1
- package/dist/threed/real-object-gltf.d.ts +0 -15
- package/dist/threed/real-object-gltf.js +0 -97
- package/dist/threed/real-object-gltf.js.map +0 -1
- package/dist/threed/real-object-group.d.ts +0 -5
- package/dist/threed/real-object-group.js +0 -11
- package/dist/threed/real-object-group.js.map +0 -1
- package/dist/threed/real-object-mesh.d.ts +0 -11
- package/dist/threed/real-object-mesh.js +0 -55
- package/dist/threed/real-object-mesh.js.map +0 -1
- package/dist/threed/real-object-plane.d.ts +0 -6
- package/dist/threed/real-object-plane.js +0 -23
- package/dist/threed/real-object-plane.js.map +0 -1
- package/dist/threed/real-object-scene.d.ts +0 -21
- package/dist/threed/real-object-scene.js +0 -89
- package/dist/threed/real-object-scene.js.map +0 -1
- package/dist/threed/real-object-sprite.d.ts +0 -12
- package/dist/threed/real-object-sprite.js +0 -35
- package/dist/threed/real-object-sprite.js.map +0 -1
- package/dist/threed/real-object-text.d.ts +0 -16
- package/dist/threed/real-object-text.js +0 -70
- package/dist/threed/real-object-text.js.map +0 -1
- package/dist/threed/real-object.d.ts +0 -48
- package/dist/threed/real-object.js +0 -199
- package/dist/threed/real-object.js.map +0 -1
- package/dist/threed/texture/text-texture.d.ts +0 -8
- package/dist/threed/three-dimensional-container.d.ts +0 -7
- package/dist/threed/three-dimensional-container.js +0 -2
- package/dist/threed/three-dimensional-container.js.map +0 -1
- package/dist/threed/utils/bound-uv-generator.d.ts +0 -16
- package/dist/types.d.ts +0 -53
- package/dist/types.js +0 -368
- package/dist/types.js.map +0 -1
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
import { HTMLAbsoluteLayout, Layout } from '../layout';
|
|
5
|
-
import Component from './component';
|
|
6
|
-
import ContainerAbstract from './container-abstract';
|
|
7
|
-
import MixinHTMLElement from './mixins/html-element';
|
|
8
|
-
const SCALE_DEFAULT = { x: 1, y: 1 };
|
|
9
|
-
const DEFAULT_STYLE = {
|
|
10
|
-
boxSizing: 'border-box',
|
|
11
|
-
margin: '0px',
|
|
12
|
-
position: 'absolute',
|
|
13
|
-
outline: 'none'
|
|
14
|
-
};
|
|
15
|
-
const NATURE = {
|
|
16
|
-
mutable: false,
|
|
17
|
-
resizable: true,
|
|
18
|
-
rotatable: true,
|
|
19
|
-
properties: [
|
|
20
|
-
{
|
|
21
|
-
type: 'layout',
|
|
22
|
-
label: 'layout',
|
|
23
|
-
name: 'layoutOption'
|
|
24
|
-
}
|
|
25
|
-
],
|
|
26
|
-
help: 'scene/component/container'
|
|
27
|
-
};
|
|
28
|
-
export default class Container extends MixinHTMLElement(ContainerAbstract) {
|
|
29
|
-
get tagName() {
|
|
30
|
-
return 'div';
|
|
31
|
-
}
|
|
32
|
-
get nature() {
|
|
33
|
-
return NATURE;
|
|
34
|
-
}
|
|
35
|
-
setElementProperties(element) { }
|
|
36
|
-
get layout() {
|
|
37
|
-
return Layout.get(this.get('layout')) || HTMLAbsoluteLayout;
|
|
38
|
-
}
|
|
39
|
-
reposition() {
|
|
40
|
-
if (!this.element)
|
|
41
|
-
return;
|
|
42
|
-
var component = this;
|
|
43
|
-
var { id, class: className, scale = SCALE_DEFAULT } = component.state;
|
|
44
|
-
var { rotation = 0, hidden } = component;
|
|
45
|
-
var { left, top, width, height } = component.bounds;
|
|
46
|
-
var cx = width / 2;
|
|
47
|
-
var cy = height / 2;
|
|
48
|
-
// element의 기본 속성을 설정한다.
|
|
49
|
-
var element = component.element;
|
|
50
|
-
element.hidden = hidden;
|
|
51
|
-
if (id)
|
|
52
|
-
element.id = id;
|
|
53
|
-
if (className)
|
|
54
|
-
element.className = className;
|
|
55
|
-
// element의 기본 style을 설정한다.
|
|
56
|
-
Object.assign(element.style, DEFAULT_STYLE, {
|
|
57
|
-
left: left + 'px',
|
|
58
|
-
top: top + 'px',
|
|
59
|
-
width: '0px',
|
|
60
|
-
height: '0px',
|
|
61
|
-
backgroundColor: 'transparent'
|
|
62
|
-
});
|
|
63
|
-
var delta = component.delta();
|
|
64
|
-
var sx = ((scale && scale.x) || 1) * delta.sx;
|
|
65
|
-
var sy = ((scale && scale.y) || 1) * delta.sy;
|
|
66
|
-
var theta = (rotation || 0) + delta.theta;
|
|
67
|
-
var tx = delta.tx || 0;
|
|
68
|
-
var ty = delta.ty || 0;
|
|
69
|
-
['-webkit-', '-moz-', '-ms-', '-o-', ''].forEach(prefix => {
|
|
70
|
-
element.style[prefix + 'transform'] = `translate(${tx + cx}px, ${ty + cy}px) rotate(${theta}rad) translate(${-cx}px, ${-cy}px) scale(${sx}, ${sy}) perspective(1px)`;
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
Component.register('container', Container);
|
|
75
|
-
//# sourceMappingURL=container.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/components/container.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEtD,OAAO,SAAS,MAAM,aAAa,CAAA;AACnC,OAAO,iBAAiB,MAAM,sBAAsB,CAAA;AACpD,OAAO,gBAAgB,MAAM,uBAAuB,CAAA;AAEpD,MAAM,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;AACpC,MAAM,aAAa,GAAG;IACpB,SAAS,EAAE,YAAY;IACvB,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,MAAM;CAChB,CAAA;AAED,MAAM,MAAM,GAAG;IACb,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE;QACV;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,cAAc;SACrB;KACF;IACD,IAAI,EAAE,2BAA2B;CAClC,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,gBAAgB,CAAC,iBAAiB,CAAC;IACxE,IAAI,OAAO;QACT,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,MAAM;QACR,OAAO,MAAM,CAAA;IACf,CAAC;IAED,oBAAoB,CAAC,OAAO,IAAG,CAAC;IAEhC,IAAI,MAAM;QACR,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,kBAAkB,CAAA;IAC7D,CAAC;IAED,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAM;QAEzB,IAAI,SAAS,GAAG,IAAI,CAAA;QAEpB,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,GAAG,aAAa,EAAE,GAAG,SAAS,CAAC,KAAK,CAAA;QAErE,IAAI,EAAE,QAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;QAExC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAA;QACnD,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC,CAAA;QAClB,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,CAAA;QAEnB,wBAAwB;QACxB,IAAI,OAAO,GAAG,SAAS,CAAC,OAAO,CAAA;QAE/B,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;QACvB,IAAI,EAAE;YAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;QACvB,IAAI,SAAS;YAAE,OAAO,CAAC,SAAS,GAAG,SAAS,CAAA;QAE5C,2BAA2B;QAE3B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE;YAC1C,IAAI,EAAE,IAAI,GAAG,IAAI;YACjB,GAAG,EAAE,GAAG,GAAG,IAAI;YACf,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,KAAK;YACb,eAAe,EAAE,aAAa;SAC/B,CAAC,CAAA;QAEF,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,CAAA;QAC7B,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAA;QAC7C,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAA;QAC7C,IAAI,KAAK,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAA;QACzC,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA;QACtB,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,CAGrB;QAAA,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACzD,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,aAAa,EAAE,GAAG,EAAE,OACxD,EAAE,GAAG,EACP,cAAc,KAAK,kBAAkB,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,oBAAoB,CAAA;QAC9F,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AAED,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { HTMLAbsoluteLayout, Layout } from '../layout'\n\nimport Component from './component'\nimport ContainerAbstract from './container-abstract'\nimport MixinHTMLElement from './mixins/html-element'\n\nconst SCALE_DEFAULT = { x: 1, y: 1 }\nconst DEFAULT_STYLE = {\n boxSizing: 'border-box',\n margin: '0px',\n position: 'absolute',\n outline: 'none'\n}\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'layout',\n label: 'layout',\n name: 'layoutOption'\n }\n ],\n help: 'scene/component/container'\n}\n\nexport default class Container extends MixinHTMLElement(ContainerAbstract) {\n get tagName() {\n return 'div'\n }\n\n get nature() {\n return NATURE\n }\n\n setElementProperties(element) {}\n\n get layout() {\n return Layout.get(this.get('layout')) || HTMLAbsoluteLayout\n }\n\n reposition() {\n if (!this.element) return\n\n var component = this\n\n var { id, class: className, scale = SCALE_DEFAULT } = component.state\n\n var { rotation = 0, hidden } = component\n\n var { left, top, width, height } = component.bounds\n var cx = width / 2\n var cy = height / 2\n\n // element의 기본 속성을 설정한다.\n var element = component.element\n\n element.hidden = hidden\n if (id) element.id = id\n if (className) element.className = className\n\n // element의 기본 style을 설정한다.\n\n Object.assign(element.style, DEFAULT_STYLE, {\n left: left + 'px',\n top: top + 'px',\n width: '0px',\n height: '0px',\n backgroundColor: 'transparent'\n })\n\n var delta = component.delta()\n var sx = ((scale && scale.x) || 1) * delta.sx\n var sy = ((scale && scale.y) || 1) * delta.sy\n var theta = (rotation || 0) + delta.theta\n var tx = delta.tx || 0\n var ty = delta.ty || 0\n\n /* CONFIRM-ME `transform: perspective(1px)` 스타일 설정은 scaling된 dom element를 좀 더 선명하게 보이도록 해준다. (Chrome 브라우저에서) */\n ;['-webkit-', '-moz-', '-ms-', '-o-', ''].forEach(prefix => {\n element.style[prefix + 'transform'] = `translate(${tx + cx}px, ${\n ty + cy\n }px) rotate(${theta}rad) translate(${-cx}px, ${-cy}px) scale(${sx}, ${sy}) perspective(1px)`\n })\n }\n}\n\nComponent.register('container', Container)\n"]}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export default class DataMapping {
|
|
2
|
-
constructor(model: any, owner: any);
|
|
3
|
-
owner: any;
|
|
4
|
-
set model(arg: any);
|
|
5
|
-
get model(): any;
|
|
6
|
-
dispose(): void;
|
|
7
|
-
_model: any;
|
|
8
|
-
evaluator: any;
|
|
9
|
-
accessor: ((o: any) => any) | undefined;
|
|
10
|
-
propAccessor: ((o: any) => any) | undefined;
|
|
11
|
-
partAccessor: ((o: any) => any) | undefined;
|
|
12
|
-
get target(): any;
|
|
13
|
-
get property(): any;
|
|
14
|
-
get param(): any;
|
|
15
|
-
get ndnsp(): boolean;
|
|
16
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export function executeMappings(force?: boolean): void;
|
|
2
|
-
export function onchangeData(after: any, before: any): void;
|
|
3
|
-
export function buildMappings(): void;
|
|
4
|
-
export class buildMappings {
|
|
5
|
-
_mappings: any;
|
|
6
|
-
}
|
|
7
|
-
export function disposeMappings(): void;
|
|
8
|
-
export function onchangeMappings(after: any, before: any): void;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function buildEvaluator(mapping: any, owner: any, rule: any, param: any, type: any): any;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Component, ComponentNature } from '@hatiolab/things-scene';
|
|
2
|
-
import Ellipse from './ellipse';
|
|
3
|
-
export default class Donut extends Ellipse {
|
|
4
|
-
is3dish(): boolean;
|
|
5
|
-
render(ctx: CanvasRenderingContext2D): void;
|
|
6
|
-
contains(x: number, y: number): boolean;
|
|
7
|
-
get controls(): {
|
|
8
|
-
x: any;
|
|
9
|
-
y: any;
|
|
10
|
-
handler: {
|
|
11
|
-
ondragmove: (point: import("@hatiolab/things-scene").DIMENSION, index: number, component: Component) => void;
|
|
12
|
-
};
|
|
13
|
-
}[];
|
|
14
|
-
get nature(): ComponentNature;
|
|
15
|
-
}
|
package/dist/components/donut.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
import { Component } from '@hatiolab/things-scene';
|
|
5
|
-
import Ellipse from './ellipse';
|
|
6
|
-
const NATURE = {
|
|
7
|
-
mutable: false,
|
|
8
|
-
resizable: true,
|
|
9
|
-
rotatable: true,
|
|
10
|
-
properties: [
|
|
11
|
-
{
|
|
12
|
-
type: 'number',
|
|
13
|
-
label: 'ratio',
|
|
14
|
-
name: 'ratio',
|
|
15
|
-
property: 'ratio'
|
|
16
|
-
}
|
|
17
|
-
],
|
|
18
|
-
help: 'scene/component/donut'
|
|
19
|
-
};
|
|
20
|
-
var controlHandler = {
|
|
21
|
-
ondragmove: function (point, index, component) {
|
|
22
|
-
var { cx, rx } = component.model;
|
|
23
|
-
rx = Math.abs(rx);
|
|
24
|
-
var transcoorded = component.transcoordP2S(point.x, point.y);
|
|
25
|
-
var ratio = ((transcoorded.x - cx) / rx) * 100;
|
|
26
|
-
ratio = ratio >= 100 || ratio <= -100 ? 100 : Math.abs(ratio);
|
|
27
|
-
component.set({ ratio });
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
export default class Donut extends Ellipse {
|
|
31
|
-
is3dish() {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
render(ctx) {
|
|
35
|
-
var { ratio = 50, cx, cy, rx, ry, startAngle, endAngle, anticlockwise } = this.state;
|
|
36
|
-
rx = Math.abs(rx);
|
|
37
|
-
ry = Math.abs(ry);
|
|
38
|
-
ctx.beginPath();
|
|
39
|
-
ctx.ellipse(cx, cy, rx, ry, 0, startAngle || 0, endAngle || 2 * Math.PI, anticlockwise);
|
|
40
|
-
ctx.moveTo(cx + (rx / 100) * ratio, cy);
|
|
41
|
-
// 맨 마지막 속성이 true면 원의 범위만큼 공백이 됨
|
|
42
|
-
ctx.ellipse(cx, cy, (rx / 100) * ratio, (ry / 100) * ratio, 0, startAngle || 0, endAngle || 2 * Math.PI, true);
|
|
43
|
-
}
|
|
44
|
-
contains(x, y) {
|
|
45
|
-
var { cx, cy, rx, ry, ratio } = this.state;
|
|
46
|
-
rx = Math.abs(rx);
|
|
47
|
-
ry = Math.abs(ry);
|
|
48
|
-
var normx = (x - cx) / (rx * 2 - 0.5);
|
|
49
|
-
var normy = (y - cy) / (ry * 2 - 0.5);
|
|
50
|
-
var ratiox = (x - cx) / ((rx / 100) * ratio * 2 - 0.5);
|
|
51
|
-
var ratioy = (y - cy) / ((ry / 100) * ratio * 2 - 0.5);
|
|
52
|
-
var result = false;
|
|
53
|
-
if (normx * normx + normy * normy < 0.25 && ratiox * ratiox + ratioy * ratioy > 0.25)
|
|
54
|
-
result = !result;
|
|
55
|
-
return result;
|
|
56
|
-
}
|
|
57
|
-
get controls() {
|
|
58
|
-
var { cx, cy, rx, ratio } = this.state;
|
|
59
|
-
rx = Math.abs(rx);
|
|
60
|
-
return [
|
|
61
|
-
{
|
|
62
|
-
x: cx + (rx / 100) * ratio,
|
|
63
|
-
y: cy,
|
|
64
|
-
handler: controlHandler
|
|
65
|
-
}
|
|
66
|
-
];
|
|
67
|
-
}
|
|
68
|
-
get nature() {
|
|
69
|
-
return NATURE;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
Component.memoize(Donut.prototype, 'controls', false);
|
|
73
|
-
Component.register('donut', Donut);
|
|
74
|
-
//# sourceMappingURL=donut.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"donut.js","sourceRoot":"","sources":["../../src/components/donut.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { Component, ComponentNature, POSITION } from '@hatiolab/things-scene'\nimport Ellipse from './ellipse'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'number',\n label: 'ratio',\n name: 'ratio',\n property: 'ratio'\n }\n ],\n help: 'scene/component/donut'\n}\n\nvar controlHandler = {\n ondragmove: function (point: POSITION, index: number, component: Component) {\n var { cx, rx } = component.model\n rx = Math.abs(rx)\n\n var transcoorded = component.transcoordP2S(point.x, point.y)\n\n var ratio = ((transcoorded.x - cx) / rx) * 100\n\n ratio = ratio >= 100 || ratio <= -100 ? 100 : Math.abs(ratio)\n\n component.set({ ratio })\n }\n}\n\nexport default class Donut extends Ellipse {\n is3dish() {\n return false\n }\n\n render(ctx: CanvasRenderingContext2D) {\n var { ratio = 50, cx, cy, rx, ry, startAngle, endAngle, anticlockwise } = this.state\n rx = Math.abs(rx)\n ry = Math.abs(ry)\n\n ctx.beginPath()\n ctx.ellipse(cx, cy, rx, ry, 0, startAngle || 0, endAngle || 2 * Math.PI, anticlockwise)\n\n ctx.moveTo(cx + (rx / 100) * ratio, cy)\n // 맨 마지막 속성이 true면 원의 범위만큼 공백이 됨\n ctx.ellipse(cx, cy, (rx / 100) * ratio, (ry / 100) * ratio, 0, startAngle || 0, endAngle || 2 * Math.PI, true)\n }\n\n contains(x: number, y: number) {\n var { cx, cy, rx, ry, ratio } = this.state\n rx = Math.abs(rx)\n ry = Math.abs(ry)\n\n var normx = (x - cx) / (rx * 2 - 0.5)\n var normy = (y - cy) / (ry * 2 - 0.5)\n var ratiox = (x - cx) / ((rx / 100) * ratio * 2 - 0.5)\n var ratioy = (y - cy) / ((ry / 100) * ratio * 2 - 0.5)\n var result = false\n\n if (normx * normx + normy * normy < 0.25 && ratiox * ratiox + ratioy * ratioy > 0.25) result = !result\n\n return result\n }\n\n get controls() {\n var { cx, cy, rx, ratio } = this.state\n rx = Math.abs(rx)\n\n return [\n {\n x: cx + (rx / 100) * ratio,\n y: cy,\n handler: controlHandler\n }\n ]\n }\n\n get nature() {\n return NATURE\n }\n}\n\nComponent.memoize(Donut.prototype, 'controls', false)\n\nComponent.register('donut', Donut)\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function drawImage(context: any, image: any, left: any, top: any, width: any, height: any): void;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function effect(context: any): void;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export function drawFill(context: any, bounds: any, center: any, style: any, host_component: any): void;
|
|
2
|
-
export function prepareFill(resolve: any, reject: any): void;
|
|
3
|
-
export class prepareFill {
|
|
4
|
-
constructor(resolve: any, reject: any);
|
|
5
|
-
_pattern_image_origin: any;
|
|
6
|
-
_pattern_image: any;
|
|
7
|
-
}
|
|
8
|
-
export function prepareFillIf(condition: any): void;
|
|
9
|
-
export function onchangeFill(after: any, before: any): void;
|
|
10
|
-
export class onchangeFill {
|
|
11
|
-
constructor(after: any, before: any);
|
|
12
|
-
_pattern_image: any;
|
|
13
|
-
_pattern_image_origin: any;
|
|
14
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function format(mask: any, value: any): any;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function stroke(context: any, style: any, hostComponent: any): void;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 주어진 텍스트를 주어진 폭(width)에 맞게 줄바꿈할 때, 각 라인별 word의 배열을 제공한다.
|
|
3
|
-
*
|
|
4
|
-
* @param context object 사용될 폰트가 설정된 Context2D 레퍼런스
|
|
5
|
-
* @param word string 줄바꿈 대상 문장
|
|
6
|
-
* @param width number 줄바꿈 기준 폭
|
|
7
|
-
* @param wrap boolean 자동 줄바꿈 여부
|
|
8
|
-
* @return array 각 라인별 word의 배열([[word1, word2, word3], [word4, word5]] 형식임)
|
|
9
|
-
*/
|
|
10
|
-
export default function splitTextToLines(context: any, text: any, width: any, wrap: any): string[][];
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/// <reference path="../../things-scene.d.ts" />
|
|
2
|
-
/// <reference path="../../src/component.d.ts" />
|
|
3
|
-
import * as THREE from 'three';
|
|
4
|
-
import { Anchor, Component, ComponentNature, Shape } from '@hatiolab/things-scene';
|
|
5
|
-
import RealObjectExtrude from '../threed/real-object-extrude';
|
|
6
|
-
import RealObject from '../threed/real-object';
|
|
7
|
-
export declare class EllipseExtrude extends RealObjectExtrude {
|
|
8
|
-
get cx(): number;
|
|
9
|
-
get cy(): number;
|
|
10
|
-
get shape(): THREE.Shape;
|
|
11
|
-
}
|
|
12
|
-
declare const Ellipse_base: (new (...args: any[]) => {
|
|
13
|
-
findOutletLines(anchorName: string): import("@hatiolab/things-scene").Line[];
|
|
14
|
-
findOutletEnds(anchorName: string): Component[];
|
|
15
|
-
findInletLines(anchorName: string): import("@hatiolab/things-scene").Line[];
|
|
16
|
-
findInletEnds(anchorName: string): Component[];
|
|
17
|
-
}) & typeof Shape;
|
|
18
|
-
export default class Ellipse extends Ellipse_base {
|
|
19
|
-
is3dish(): boolean;
|
|
20
|
-
render(context: CanvasRenderingContext2D): void;
|
|
21
|
-
get path(): {
|
|
22
|
-
x: any;
|
|
23
|
-
y: any;
|
|
24
|
-
}[];
|
|
25
|
-
set path(path: {
|
|
26
|
-
x: any;
|
|
27
|
-
y: any;
|
|
28
|
-
}[]);
|
|
29
|
-
contains(x: number, y: number): boolean;
|
|
30
|
-
outline(progress: number): import("@hatiolab/things-scene").DIMENSION;
|
|
31
|
-
buildRealObject(): RealObject | undefined;
|
|
32
|
-
get anchors(): Array<Anchor>;
|
|
33
|
-
get nature(): ComponentNature;
|
|
34
|
-
}
|
|
35
|
-
export {};
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
import * as THREE from 'three';
|
|
5
|
-
import { Component, Connectable, Shape } from '@hatiolab/things-scene';
|
|
6
|
-
import RealObjectExtrude from '../threed/real-object-extrude';
|
|
7
|
-
import ellipseAnchors from './anchor/ellipse-anchors';
|
|
8
|
-
import ellipseOutline from './outline/ellipse-outline';
|
|
9
|
-
const NATURE = {
|
|
10
|
-
mutable: false,
|
|
11
|
-
resizable: true,
|
|
12
|
-
rotatable: true,
|
|
13
|
-
properties: [],
|
|
14
|
-
'value-property': 'text'
|
|
15
|
-
};
|
|
16
|
-
export class EllipseExtrude extends RealObjectExtrude {
|
|
17
|
-
get cx() {
|
|
18
|
-
var { cx = 0 } = this.component.state;
|
|
19
|
-
var { width: parentWidth = 0 } = this.component.parent.bounds;
|
|
20
|
-
return cx - parentWidth / 2;
|
|
21
|
-
}
|
|
22
|
-
get cy() {
|
|
23
|
-
var { cy = 0 } = this.component.state;
|
|
24
|
-
var { height: parentHeight = 0 } = this.component.parent.bounds;
|
|
25
|
-
return cy - parentHeight / 2;
|
|
26
|
-
}
|
|
27
|
-
get shape() {
|
|
28
|
-
var { cx = 0, cy = 0, rx = 1, ry = 1, startAngle = 0, endAngle = 2 * Math.PI, anticlockwise = false } = this.component.state;
|
|
29
|
-
const curve = new THREE.EllipseCurve(cx, cy, // ax, aY
|
|
30
|
-
Math.abs(rx), Math.abs(ry), // xRadius, yRadius
|
|
31
|
-
startAngle, endAngle, // aStartAngle, aEndAngle
|
|
32
|
-
anticlockwise, // aClockwise
|
|
33
|
-
0 // aRotation
|
|
34
|
-
);
|
|
35
|
-
return new THREE.Shape(curve.getPoints(50));
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
export default class Ellipse extends Connectable(Shape) {
|
|
39
|
-
is3dish() {
|
|
40
|
-
return true;
|
|
41
|
-
}
|
|
42
|
-
render(context) {
|
|
43
|
-
var { cx, cy, rx, ry, startAngle, endAngle, anticlockwise } = this.state;
|
|
44
|
-
context.beginPath();
|
|
45
|
-
context.ellipse(cx, cy, Math.abs(rx), Math.abs(ry), 0, startAngle || 0, endAngle || 2 * Math.PI, anticlockwise);
|
|
46
|
-
}
|
|
47
|
-
get path() {
|
|
48
|
-
var { cx, cy, rx, ry } = this.state;
|
|
49
|
-
return [
|
|
50
|
-
{
|
|
51
|
-
x: cx - rx,
|
|
52
|
-
y: cy - ry
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
x: cx + rx,
|
|
56
|
-
y: cy - ry
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
x: cx + rx,
|
|
60
|
-
y: cy + ry
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
x: cx - rx,
|
|
64
|
-
y: cy + ry
|
|
65
|
-
}
|
|
66
|
-
];
|
|
67
|
-
}
|
|
68
|
-
set path(path) {
|
|
69
|
-
var left_top = path[0];
|
|
70
|
-
var right_bottom = path[2];
|
|
71
|
-
this.set({
|
|
72
|
-
cx: left_top.x + (right_bottom.x - left_top.x) / 2,
|
|
73
|
-
cy: left_top.y + (right_bottom.y - left_top.y) / 2,
|
|
74
|
-
rx: (right_bottom.x - left_top.x) / 2,
|
|
75
|
-
ry: (right_bottom.y - left_top.y) / 2
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
contains(x, y) {
|
|
79
|
-
var { cx, cy, rx, ry } = this.state;
|
|
80
|
-
var normx = (x - cx) / (rx * 2 - 0.5);
|
|
81
|
-
var normy = (y - cy) / (ry * 2 - 0.5);
|
|
82
|
-
return normx * normx + normy * normy < 0.25;
|
|
83
|
-
}
|
|
84
|
-
outline(progress) {
|
|
85
|
-
return ellipseOutline(this, progress);
|
|
86
|
-
}
|
|
87
|
-
buildRealObject() {
|
|
88
|
-
return new EllipseExtrude(this);
|
|
89
|
-
}
|
|
90
|
-
get anchors() {
|
|
91
|
-
return ellipseAnchors(this);
|
|
92
|
-
}
|
|
93
|
-
get nature() {
|
|
94
|
-
return NATURE;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
Component.memoize(Ellipse.prototype, 'path', false);
|
|
98
|
-
Component.register('ellipse', Ellipse);
|
|
99
|
-
//# sourceMappingURL=ellipse.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ellipse.js","sourceRoot":"","sources":["../../src/components/ellipse.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\nimport { Anchor, Component, ComponentNature, Connectable, Shape } from '@hatiolab/things-scene'\n\nimport RealObjectExtrude from '../threed/real-object-extrude'\nimport ellipseAnchors from './anchor/ellipse-anchors'\nimport ellipseOutline from './outline/ellipse-outline'\nimport RealObject from '../threed/real-object'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [],\n 'value-property': 'text'\n}\n\nexport class EllipseExtrude extends RealObjectExtrude {\n get cx() {\n var { cx = 0 } = this.component.state\n var { width: parentWidth = 0 } = this.component.parent.bounds\n\n return cx - parentWidth / 2\n }\n\n get cy() {\n var { cy = 0 } = this.component.state\n var { height: parentHeight = 0 } = this.component.parent.bounds\n\n return cy - parentHeight / 2\n }\n\n get shape() {\n var {\n cx = 0,\n cy = 0,\n rx = 1,\n ry = 1,\n startAngle = 0,\n endAngle = 2 * Math.PI,\n anticlockwise = false\n } = this.component.state\n\n const curve = new THREE.EllipseCurve(\n cx,\n cy, // ax, aY\n Math.abs(rx),\n Math.abs(ry), // xRadius, yRadius\n startAngle,\n endAngle, // aStartAngle, aEndAngle\n anticlockwise, // aClockwise\n 0 // aRotation\n )\n\n return new THREE.Shape(curve.getPoints(50))\n }\n}\n\nexport default class Ellipse extends Connectable(Shape) {\n is3dish() {\n return true\n }\n\n render(context: CanvasRenderingContext2D) {\n var { cx, cy, rx, ry, startAngle, endAngle, anticlockwise } = this.state\n\n context.beginPath()\n\n context.ellipse(cx, cy, Math.abs(rx), Math.abs(ry), 0, startAngle || 0, endAngle || 2 * Math.PI, anticlockwise)\n }\n\n get path() {\n var { cx, cy, rx, ry } = this.state\n\n return [\n {\n x: cx - rx,\n y: cy - ry\n },\n {\n x: cx + rx,\n y: cy - ry\n },\n {\n x: cx + rx,\n y: cy + ry\n },\n {\n x: cx - rx,\n y: cy + ry\n }\n ]\n }\n\n set path(path) {\n var left_top = path[0]\n var right_bottom = path[2]\n\n this.set({\n cx: left_top.x + (right_bottom.x - left_top.x) / 2,\n cy: left_top.y + (right_bottom.y - left_top.y) / 2,\n rx: (right_bottom.x - left_top.x) / 2,\n ry: (right_bottom.y - left_top.y) / 2\n })\n }\n\n contains(x: number, y: number) {\n var { cx, cy, rx, ry } = this.state\n\n var normx = (x - cx) / (rx * 2 - 0.5)\n var normy = (y - cy) / (ry * 2 - 0.5)\n\n return normx * normx + normy * normy < 0.25\n }\n\n outline(progress: number) {\n return ellipseOutline(this, progress)\n }\n\n buildRealObject(): RealObject | undefined {\n return new EllipseExtrude(this)\n }\n\n get anchors(): Array<Anchor> {\n return ellipseAnchors(this)\n }\n\n get nature() {\n return NATURE\n }\n}\n\nComponent.memoize(Ellipse.prototype, 'path', false)\n\nComponent.register('ellipse', Ellipse)\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export function ondropfile(transfered: any, files: any): void;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* !this should be root-container
|
|
3
|
-
*
|
|
4
|
-
* @param {String} type assigns fitMode property of root container before fitting
|
|
5
|
-
*/
|
|
6
|
-
export default function fit(type: string): void;
|
|
7
|
-
export default class fit {
|
|
8
|
-
/**
|
|
9
|
-
* !this should be root-container
|
|
10
|
-
*
|
|
11
|
-
* @param {String} type assigns fitMode property of root container before fitting
|
|
12
|
-
*/
|
|
13
|
-
constructor(type: string);
|
|
14
|
-
fitMode: any;
|
|
15
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
export function transcoordR(x: any, y: any, rotatePoint?: {
|
|
2
|
-
x: number;
|
|
3
|
-
y: number;
|
|
4
|
-
}, rotation?: number, scale?: {
|
|
5
|
-
x: number;
|
|
6
|
-
y: number;
|
|
7
|
-
}): {
|
|
8
|
-
x: number;
|
|
9
|
-
y: number;
|
|
10
|
-
};
|
|
11
|
-
export function transcoordRR(x: any, y: any, rotatePoint?: {
|
|
12
|
-
x: number;
|
|
13
|
-
y: number;
|
|
14
|
-
}, rotation?: number, scale?: {
|
|
15
|
-
x: number;
|
|
16
|
-
y: number;
|
|
17
|
-
}): {
|
|
18
|
-
x: number;
|
|
19
|
-
y: number;
|
|
20
|
-
};
|
|
21
|
-
export function transcoordP2S(x: any, y: any, rotatePoint: any): {
|
|
22
|
-
x: any;
|
|
23
|
-
y: any;
|
|
24
|
-
};
|
|
25
|
-
export function transcoordS2P(x: any, y: any, rotatePoint: any): {
|
|
26
|
-
x: any;
|
|
27
|
-
y: any;
|
|
28
|
-
};
|
|
29
|
-
export function transcoordS2TR(x: any, y: any, top: any): {
|
|
30
|
-
x: number;
|
|
31
|
-
y: number;
|
|
32
|
-
};
|
|
33
|
-
export function transcoordS2T(x: any, y: any, top: any): any;
|
|
34
|
-
export function transcoordT2P(x: any, y: any, top: any): {
|
|
35
|
-
x: any;
|
|
36
|
-
y: any;
|
|
37
|
-
};
|
|
38
|
-
export function transcoordT2S(x: any, y: any, top: any): any;
|
|
39
|
-
export function transcoordS2O(x: any, y: any, to: any): any;
|
|
40
|
-
export function transcoordC2S(x: any, y: any, top: any): any;
|
|
41
|
-
export function transcoordS2C(x: any, y: any, top: any): any;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { ComponentNature, HTMLOverlayElement, Properties } from '@hatiolab/things-scene';
|
|
2
|
-
import { SuperGif } from '@wizpanda/super-gif';
|
|
3
|
-
export default class GifView extends HTMLOverlayElement {
|
|
4
|
-
_superGif?: SuperGif;
|
|
5
|
-
oncreate_element(div: HTMLDivElement): Promise<void>;
|
|
6
|
-
buildImg(): HTMLImageElement;
|
|
7
|
-
onchange(after: Properties, before: Properties): void;
|
|
8
|
-
setElementProperties(div: HTMLDivElement): void;
|
|
9
|
-
onchangeplay(play: boolean): void;
|
|
10
|
-
onchangesrc(src: string): void;
|
|
11
|
-
ondropfile(transfered: DataTransferItemList, files: FileList): void;
|
|
12
|
-
get src(): any;
|
|
13
|
-
set src(src: any);
|
|
14
|
-
get play(): any;
|
|
15
|
-
set play(play: any);
|
|
16
|
-
get nature(): ComponentNature;
|
|
17
|
-
get tagName(): string;
|
|
18
|
-
}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
import { Component, HTMLOverlayElement } from '@hatiolab/things-scene';
|
|
5
|
-
import { SuperGif } from '@wizpanda/super-gif';
|
|
6
|
-
const NATURE = {
|
|
7
|
-
mutable: false,
|
|
8
|
-
resizable: true,
|
|
9
|
-
rotatable: true,
|
|
10
|
-
properties: [
|
|
11
|
-
{
|
|
12
|
-
type: 'string',
|
|
13
|
-
label: 'src',
|
|
14
|
-
name: 'src'
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
type: 'checkbox',
|
|
18
|
-
label: 'play',
|
|
19
|
-
name: 'play'
|
|
20
|
-
}
|
|
21
|
-
],
|
|
22
|
-
'value-property': 'src',
|
|
23
|
-
help: 'scene/component/gif-view'
|
|
24
|
-
};
|
|
25
|
-
const NOIMAGE_DATA_URI = 'data:image/gif;base64,R0lGODlhYABIAPcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4ODg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEhISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdHR0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpaWltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1tbW5ubm9vb3BwcHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CAgIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKio+Pj5iYmKCgoKampqurq66urrCwsLGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrOzs7S0tLa2tre3t7m5ubu7u7+/v8DAwMHBwcPDw8XFxcfHx8vLy8/Pz9LS0tXV1dfX193d3eTk5Onp6fj4+Pz8/P7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v///////////////////////////////////////////////////////////////////////////////yH5BAkAAPUAIf47R2VuZXJhdGVkIGJ5IGpzZ2lmIChodHRwczovL2dpdGh1Yi5jb20vYW50aW1hdHRlcjE1L2pzZ2lmLykALAAAAABgAEgAAAj+AGcJHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmR9VKqXMmypcuXMGPKnJkSIs2bOHPqZGlzp8+fQOv1DEq0KMyhRpMmRaq0KVCmTqPmhCq1qkyqLrFRSyYwGTVsVo1iZXmNa8Fk18ISHasSm1mDycCq/ck2JTWF1ObSfTjz7cFken3WFbow8M7BDA3rHOwXruKpfGXeTZg3qDVrUge7RRg3KLZjx+Q2HVyvLNy0QaMJjBaVdD2tZr2K/mmNIObRkR+n9AsYt0Pddg1WXppb8bWDx1CLLW74GcJnSl3TtDY8Zu2Et4tKl7n52eyWnxXvhl7+26jqrspbnlfIWjtz2gWPZV95neH8veU9NxZYfbfD3kFt99J6Bnmn0mQO9XfYezrVxxlmx0GUXIAM4hSeffsxBN1TFd5E4Ef3QZbfTg6CNJ5gHXJ3TEntLThiTh+KFCJNAqZU4kgAitjQTheepOBMNcZI0oQ6JpbTjSZtiNN2PZ400IxHpdiSc07G911M0iFZZYtAStnWilUeBGVLrlEZpmM0elmPlmfO8iOZXl4DZpsGEYmll2bSWWCXLwJXVY1+urhjoGEBSuiSah6K36CKtpZoo4s9CimielZq6aWYZqrpppx26umnoIZ6UkAAOw==';
|
|
26
|
-
export default class GifView extends HTMLOverlayElement {
|
|
27
|
-
async oncreate_element(div) {
|
|
28
|
-
var { src, play } = this.state;
|
|
29
|
-
this.onchangesrc(src);
|
|
30
|
-
this.onchangeplay(play);
|
|
31
|
-
}
|
|
32
|
-
buildImg() {
|
|
33
|
-
/* clear first */
|
|
34
|
-
var div = this.element;
|
|
35
|
-
div.innerHTML = '';
|
|
36
|
-
var gif = document.createElement('img');
|
|
37
|
-
gif.style.width = '100%';
|
|
38
|
-
gif.style.height = '100%';
|
|
39
|
-
div.appendChild(gif);
|
|
40
|
-
return gif;
|
|
41
|
-
}
|
|
42
|
-
onchange(after, before) {
|
|
43
|
-
super.onchange(after, before);
|
|
44
|
-
'src' in after && this.onchangesrc(after.src);
|
|
45
|
-
'play' in after && this.onchangeplay(after.play);
|
|
46
|
-
}
|
|
47
|
-
setElementProperties(div) { }
|
|
48
|
-
onchangeplay(play) {
|
|
49
|
-
var superGif = this._superGif;
|
|
50
|
-
if (!superGif || !superGif.isReady()) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
if (play) {
|
|
54
|
-
superGif.play();
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
superGif.pause();
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
onchangesrc(src) {
|
|
61
|
-
var gif = this.buildImg();
|
|
62
|
-
if (!src)
|
|
63
|
-
src = NOIMAGE_DATA_URI;
|
|
64
|
-
gif.src = src;
|
|
65
|
-
gif.setAttribute('rel:animated_src', src);
|
|
66
|
-
gif.setAttribute('rel:auto_play', '0');
|
|
67
|
-
this._superGif = new SuperGif(gif, {
|
|
68
|
-
autoPlay: false /* Without this setting, the first play's framerate is too fast. */
|
|
69
|
-
});
|
|
70
|
-
//@ts-ignore
|
|
71
|
-
this._superGif.init();
|
|
72
|
-
for (const child of this.element.children) {
|
|
73
|
-
child.style.width = '100%';
|
|
74
|
-
child.style.height = '100%';
|
|
75
|
-
}
|
|
76
|
-
var canvas = this._superGif.getCanvas();
|
|
77
|
-
canvas.style.width = '100%';
|
|
78
|
-
canvas.style.height = '100%';
|
|
79
|
-
this._superGif.load(() => {
|
|
80
|
-
this._superGif.moveTo(0);
|
|
81
|
-
/*
|
|
82
|
-
* FIXME. this.play 는 컴포넌트의 getState()를 통해서 가져오게 되는데, 체크박스의 경우 문제가 있는 것 같다.
|
|
83
|
-
* 문제 해결 후 this.get("play") => this.play로 수정할 것.
|
|
84
|
-
*/
|
|
85
|
-
this.play && this._superGif.play();
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
ondropfile(transfered, files) {
|
|
89
|
-
for (let i = 0; i < transfered.length; i++) {
|
|
90
|
-
if (/\.gif$/.test(transfered[i].name)) {
|
|
91
|
-
this.src = files[i];
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
get src() {
|
|
97
|
-
return this.getState('src');
|
|
98
|
-
}
|
|
99
|
-
set src(src) {
|
|
100
|
-
this.set('src', src);
|
|
101
|
-
}
|
|
102
|
-
get play() {
|
|
103
|
-
return this.getState('play');
|
|
104
|
-
}
|
|
105
|
-
set play(play) {
|
|
106
|
-
this.setState('play', play);
|
|
107
|
-
}
|
|
108
|
-
get nature() {
|
|
109
|
-
return NATURE;
|
|
110
|
-
}
|
|
111
|
-
get tagName() {
|
|
112
|
-
return 'div';
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
Component.register('gif-view', GifView);
|
|
116
|
-
//# sourceMappingURL=gif-view.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gif-view.js","sourceRoot":"","sources":["../../src/components/gif-view.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { Component, ComponentNature, HTMLOverlayElement, Properties, RectPath, Shape } from '@hatiolab/things-scene'\nimport { SuperGif } from '@wizpanda/super-gif'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'string',\n label: 'src',\n name: 'src'\n },\n {\n type: 'checkbox',\n label: 'play',\n name: 'play'\n }\n ],\n 'value-property': 'src',\n help: 'scene/component/gif-view'\n}\n\nconst NOIMAGE_DATA_URI =\n 'data:image/gif;base64,R0lGODlhYABIAPcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4ODg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEhISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdHR0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpaWltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1tbW5ubm9vb3BwcHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CAgIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKio+Pj5iYmKCgoKampqurq66urrCwsLGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrOzs7S0tLa2tre3t7m5ubu7u7+/v8DAwMHBwcPDw8XFxcfHx8vLy8/Pz9LS0tXV1dfX193d3eTk5Onp6fj4+Pz8/P7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v///////////////////////////////////////////////////////////////////////////////yH5BAkAAPUAIf47R2VuZXJhdGVkIGJ5IGpzZ2lmIChodHRwczovL2dpdGh1Yi5jb20vYW50aW1hdHRlcjE1L2pzZ2lmLykALAAAAABgAEgAAAj+AGcJHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmR9VKqXMmypcuXMGPKnJkSIs2bOHPqZGlzp8+fQOv1DEq0KMyhRpMmRaq0KVCmTqPmhCq1qkyqLrFRSyYwGTVsVo1iZXmNa8Fk18ISHasSm1mDycCq/ck2JTWF1ObSfTjz7cFken3WFbow8M7BDA3rHOwXruKpfGXeTZg3qDVrUge7RRg3KLZjx+Q2HVyvLNy0QaMJjBaVdD2tZr2K/mmNIObRkR+n9AsYt0Pddg1WXppb8bWDx1CLLW74GcJnSl3TtDY8Zu2Et4tKl7n52eyWnxXvhl7+26jqrspbnlfIWjtz2gWPZV95neH8veU9NxZYfbfD3kFt99J6Bnmn0mQO9XfYezrVxxlmx0GUXIAM4hSeffsxBN1TFd5E4Ef3QZbfTg6CNJ5gHXJ3TEntLThiTh+KFCJNAqZU4kgAitjQTheepOBMNcZI0oQ6JpbTjSZtiNN2PZ400IxHpdiSc07G911M0iFZZYtAStnWilUeBGVLrlEZpmM0elmPlmfO8iOZXl4DZpsGEYmll2bSWWCXLwJXVY1+urhjoGEBSuiSah6K36CKtpZoo4s9CimielZq6aWYZqrpppx26umnoIZ6UkAAOw=='\n\nexport default class GifView extends HTMLOverlayElement {\n _superGif?: SuperGif\n\n async oncreate_element(div: HTMLDivElement) {\n var { src, play } = this.state\n\n this.onchangesrc(src)\n this.onchangeplay(play)\n }\n\n buildImg() {\n /* clear first */\n var div = this.element\n div.innerHTML = ''\n\n var gif = document.createElement('img')\n gif.style.width = '100%'\n gif.style.height = '100%'\n\n div.appendChild(gif)\n\n return gif\n }\n\n onchange(after: Properties, before: Properties) {\n super.onchange(after, before)\n\n 'src' in after && this.onchangesrc(after.src)\n 'play' in after && this.onchangeplay(after.play)\n }\n\n setElementProperties(div: HTMLDivElement) {}\n\n onchangeplay(play: boolean) {\n var superGif = this._superGif\n\n if (!superGif || !superGif.isReady()) {\n return\n }\n\n if (play) {\n superGif.play()\n } else {\n superGif.pause()\n }\n }\n\n onchangesrc(src: string) {\n var gif = this.buildImg()\n\n if (!src) src = NOIMAGE_DATA_URI\n\n gif.src = src\n gif.setAttribute('rel:animated_src', src)\n gif.setAttribute('rel:auto_play', '0')\n\n this._superGif = new SuperGif(gif, {\n autoPlay: false /* Without this setting, the first play's framerate is too fast. */\n })\n //@ts-ignore\n this._superGif!.init()\n\n for (const child of this.element.children as any) {\n child.style.width = '100%'\n child.style.height = '100%'\n }\n\n var canvas = this._superGif!.getCanvas()\n canvas.style.width = '100%'\n canvas.style.height = '100%'\n\n this._superGif.load(() => {\n this._superGif!.moveTo(0)\n\n /*\n * FIXME. this.play 는 컴포넌트의 getState()를 통해서 가져오게 되는데, 체크박스의 경우 문제가 있는 것 같다.\n * 문제 해결 후 this.get(\"play\") => this.play로 수정할 것.\n */\n this.play && this._superGif!.play()\n })\n }\n\n ondropfile(transfered: DataTransferItemList, files: FileList) {\n for (let i = 0; i < transfered.length; i++) {\n if (/\\.gif$/.test((transfered[i] as any).name)) {\n this.src = files[i]\n return\n }\n }\n }\n\n get src() {\n return this.getState('src')\n }\n\n set src(src) {\n this.set('src', src)\n }\n\n get play() {\n return this.getState('play')\n }\n\n set play(play) {\n this.setState('play', play)\n }\n\n get nature() {\n return NATURE\n }\n\n get tagName() {\n return 'div'\n }\n}\n\nComponent.register('gif-view', GifView)\n"]}
|