@hatiolab/things-scene 9.0.0-beta.2 → 9.0.0-beta.21
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/dist/animation/animate.d.ts +4 -0
- package/dist/animation/animations/animation.d.ts +14 -0
- package/dist/animation/animations/fade.d.ts +4 -0
- package/dist/animation/animations/heartbeat.d.ts +4 -0
- package/dist/animation/animations/moving.d.ts +4 -0
- package/dist/animation/animations/outline.d.ts +10 -0
- package/dist/animation/animations/rotation.d.ts +4 -0
- package/dist/animation/animations/vibration.d.ts +4 -0
- package/dist/animation/compile.d.ts +1 -0
- package/dist/animation/delta.d.ts +19 -0
- package/dist/animation/index.d.ts +1 -0
- package/dist/command/command-change.d.ts +7 -0
- package/dist/command/command-migrate.d.ts +4 -0
- package/dist/command/command-migrate.js +85 -0
- package/dist/command/command-migrate.js.map +1 -0
- package/dist/command/command.d.ts +5 -0
- package/dist/command/snapshot-commander.d.ts +15 -0
- package/dist/components/anchor/anchor.d.ts +128 -0
- package/dist/components/anchor/ellipse-anchors.d.ts +2 -0
- package/dist/components/anchor/ellipse-anchors.js +38 -0
- package/dist/components/anchor/ellipse-anchors.js.map +1 -0
- package/dist/components/anchor/rect-anchors.d.ts +10 -0
- package/dist/components/audio.d.ts +25 -0
- package/dist/components/audio.js +141 -0
- package/dist/components/audio.js.map +1 -0
- package/dist/components/cloud.d.ts +13 -0
- package/dist/components/cloud.js +31 -0
- package/dist/components/cloud.js.map +1 -0
- package/dist/components/component.d.ts +227 -0
- package/dist/components/component.js +912 -0
- package/dist/components/component.js.map +1 -0
- package/dist/components/container-abstract.d.ts +51 -0
- package/dist/components/container-abstract.js +372 -0
- package/dist/components/container-abstract.js.map +1 -0
- package/dist/components/container.d.ts +38 -0
- package/dist/components/container.js +75 -0
- package/dist/components/container.js.map +1 -0
- package/dist/components/data/data-mapping.d.ts +16 -0
- package/dist/components/data/data.d.ts +8 -0
- package/dist/components/data/evaluator.d.ts +1 -0
- package/dist/components/donut.d.ts +15 -0
- package/dist/components/donut.js +74 -0
- package/dist/components/donut.js.map +1 -0
- package/dist/components/drawer/draw-image-pendable.d.ts +1 -0
- package/dist/components/drawer/effect.d.ts +1 -0
- package/dist/components/drawer/fill.d.ts +14 -0
- package/dist/components/drawer/format.d.ts +1 -0
- package/dist/components/drawer/line.d.ts +3 -0
- package/dist/components/drawer/stroke.d.ts +1 -0
- package/dist/components/drawer/text-wrapper.d.ts +10 -0
- package/dist/components/drawer/text.d.ts +3 -0
- package/dist/components/ellipse.d.ts +35 -0
- package/dist/components/ellipse.js +99 -0
- package/dist/components/ellipse.js.map +1 -0
- package/dist/components/file/ondropfile.d.ts +1 -0
- package/dist/components/fit/fit.d.ts +15 -0
- package/dist/components/geometry/transcoord.d.ts +41 -0
- package/dist/components/geometry/union.d.ts +6 -0
- package/dist/components/gif-view.d.ts +18 -0
- package/dist/components/gif-view.js +116 -0
- package/dist/components/gif-view.js.map +1 -0
- package/dist/components/global-ref.d.ts +36 -0
- package/dist/components/global-ref.js +128 -0
- package/dist/components/global-ref.js.map +1 -0
- package/dist/components/group.d.ts +15 -0
- package/dist/components/group.js +145 -0
- package/dist/components/group.js.map +1 -0
- package/dist/components/html/elements.d.ts +2 -0
- package/dist/components/html/fill.d.ts +1 -0
- package/dist/components/html/reposition.d.ts +1 -0
- package/dist/components/html/shadow.d.ts +1 -0
- package/dist/components/html-overlay-container.d.ts +27 -0
- package/dist/components/html-overlay-container.js +14 -0
- package/dist/components/html-overlay-container.js.map +1 -0
- package/dist/components/html-overlay-element.d.ts +25 -0
- package/dist/components/html-overlay-element.js +9 -0
- package/dist/components/html-overlay-element.js.map +1 -0
- package/dist/components/image-view.d.ts +19 -0
- package/dist/components/image-view.js +180 -0
- package/dist/components/image-view.js.map +1 -0
- package/dist/components/index.d.ts +32 -0
- package/dist/components/index.js +39 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/info-window.d.ts +41 -0
- package/dist/components/info-window.js +425 -0
- package/dist/components/info-window.js.map +1 -0
- package/dist/components/line.d.ts +91 -0
- package/dist/components/line.js +303 -0
- package/dist/components/line.js.map +1 -0
- package/dist/components/local-ref.d.ts +47 -0
- package/dist/components/local-ref.js +103 -0
- package/dist/components/local-ref.js.map +1 -0
- package/dist/components/mixins/connectable.d.ts +45 -0
- package/dist/components/mixins/data-source.d.ts +9 -0
- package/dist/components/mixins/html-element.d.ts +24 -0
- package/dist/components/mixins/move-handle.d.ts +11 -0
- package/dist/components/mixins/rect-path.d.ts +13 -0
- package/dist/components/mixins/value-holder.d.ts +18 -0
- package/dist/components/mutater/bounds.d.ts +10 -0
- package/dist/components/mutater/path.d.ts +5 -0
- package/dist/components/ortholine.d.ts +21 -0
- package/dist/components/ortholine.js +814 -0
- package/dist/components/ortholine.js.map +1 -0
- package/dist/components/outline/ellipse-outline.d.ts +4 -0
- package/dist/components/outline/ellipse-outline.js +11 -0
- package/dist/components/outline/ellipse-outline.js.map +1 -0
- package/dist/components/outline/path-outline.d.ts +1 -0
- package/dist/components/path.d.ts +5 -0
- package/dist/components/path.js +40 -0
- package/dist/components/path.js.map +1 -0
- package/dist/components/polygon.d.ts +40 -0
- package/dist/components/polygon.js +157 -0
- package/dist/components/polygon.js.map +1 -0
- package/dist/components/polyline.d.ts +18 -0
- package/dist/components/polyline.js +102 -0
- package/dist/components/polyline.js.map +1 -0
- package/dist/components/popup.d.ts +48 -0
- package/dist/components/popup.js +138 -0
- package/dist/components/popup.js.map +1 -0
- package/dist/components/rect.d.ts +26 -0
- package/dist/components/rect.js +91 -0
- package/dist/components/rect.js.map +1 -0
- package/dist/components/retention/retention-manager.d.ts +8 -0
- package/dist/components/root-container.d.ts +90 -0
- package/dist/components/root-container.js +478 -0
- package/dist/components/root-container.js.map +1 -0
- package/dist/components/ruler.d.ts +16 -0
- package/dist/components/ruler.js +77 -0
- package/dist/components/ruler.js.map +1 -0
- package/dist/components/shape.d.ts +25 -0
- package/dist/components/shape.js +80 -0
- package/dist/components/shape.js.map +1 -0
- package/dist/components/star.d.ts +13 -0
- package/dist/components/star.js +80 -0
- package/dist/components/star.js.map +1 -0
- package/dist/components/text/substitutor.d.ts +3 -0
- package/dist/components/text.d.ts +8 -0
- package/dist/components/text.js +15 -0
- package/dist/components/text.js.map +1 -0
- package/dist/components/three-container.d.ts +60 -0
- package/dist/components/three-container.js +515 -0
- package/dist/components/three-container.js.map +1 -0
- package/dist/components/triangle.d.ts +15 -0
- package/dist/components/triangle.js +76 -0
- package/dist/components/triangle.js.map +1 -0
- package/dist/const.d.ts +39 -0
- package/dist/core/collection.d.ts +8 -0
- package/dist/core/debug.d.ts +1 -0
- package/dist/core/deep-equals.d.ts +1 -0
- package/dist/core/dom-to-image.d.ts +127 -0
- package/dist/core/event.d.ts +92 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/list.d.ts +32 -0
- package/dist/core/logger.d.ts +3 -0
- package/dist/core/memoize.d.ts +6 -0
- package/dist/core/mixin.d.ts +1 -0
- package/dist/core/obj-accessor.d.ts +1 -0
- package/dist/core/reference-map.d.ts +14 -0
- package/dist/core/round-rect.d.ts +19 -0
- package/dist/core/script-loader.d.ts +3 -0
- package/dist/core/snapshot-taker.d.ts +12 -0
- package/dist/core/stack.d.ts +2 -0
- package/dist/core/timecapsule.d.ts +18 -0
- package/dist/core/utils.d.ts +9 -0
- package/dist/decorator/anchors-decorator.d.ts +31 -0
- package/dist/decorator/data-spread-decorator.d.ts +1 -0
- package/dist/decorator/decotag-decorator.d.ts +1 -0
- package/dist/decorator/index.d.ts +2 -0
- package/dist/decorator/link-decorator.d.ts +1 -0
- package/dist/effect/gradation.d.ts +1 -0
- package/dist/effect/index.d.ts +1 -0
- package/dist/effect/shadow.d.ts +2 -0
- package/dist/effect/turn.d.ts +1 -0
- package/dist/event/event-engine.d.ts +12 -0
- package/dist/event/event-pump.d.ts +11 -0
- package/dist/event/event-tracker.d.ts +21 -0
- package/dist/event/index.d.ts +2 -0
- package/dist/event/ua-event-handler.d.ts +32 -0
- package/dist/event-map/event-map.d.ts +9 -0
- package/dist/event-map/index.d.ts +1 -0
- package/dist/event-map/move-handler.d.ts +1 -0
- package/dist/event-map/text-editor-lite.d.ts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/layer/action/emphasize.d.ts +2 -0
- package/dist/layer/action/popup.d.ts +5 -0
- package/dist/layer/action/pressed.d.ts +2 -0
- package/dist/layer/add-layer.d.ts +42 -0
- package/dist/layer/add-layer.js +142 -0
- package/dist/layer/add-layer.js.map +1 -0
- package/dist/layer/decotag-layer.d.ts +27 -0
- package/dist/layer/decotag-layer.js +105 -0
- package/dist/layer/decotag-layer.js.map +1 -0
- package/dist/layer/guide-layer.d.ts +44 -0
- package/dist/layer/guide-layer.js +261 -0
- package/dist/layer/guide-layer.js.map +1 -0
- package/dist/layer/index.d.ts +7 -0
- package/dist/layer/index.js +11 -0
- package/dist/layer/index.js.map +1 -0
- package/dist/layer/layer.d.ts +32 -0
- package/dist/layer/layer.js +155 -0
- package/dist/layer/layer.js.map +1 -0
- package/dist/layer/model-layer.d.ts +46 -0
- package/dist/layer/model-layer.js +402 -0
- package/dist/layer/model-layer.js.map +1 -0
- package/dist/layer/modeler/anchor-handler.d.ts +36 -0
- package/dist/layer/modeler/control-handler.d.ts +18 -0
- package/dist/layer/modeler/focus-outline.d.ts +5 -0
- package/dist/layer/modeler/group-outline.d.ts +5 -0
- package/dist/layer/modeler/index.d.ts +7 -0
- package/dist/layer/modeler/path-handler.d.ts +22 -0
- package/dist/layer/modeler/resizer.d.ts +13 -0
- package/dist/layer/modeler/rotator.d.ts +15 -0
- package/dist/layer/modeler/rotator.js +120 -0
- package/dist/layer/modeler/rotator.js.map +1 -0
- package/dist/layer/modeling-layer.d.ts +66 -0
- package/dist/layer/modeling-layer.js +451 -0
- package/dist/layer/modeling-layer.js.map +1 -0
- package/dist/layer/selection/selected-finder.d.ts +1 -0
- package/dist/layer/selection-layer.d.ts +42 -0
- package/dist/layer/selection-layer.js +307 -0
- package/dist/layer/selection-layer.js.map +1 -0
- package/dist/layer/shift-layer.d.ts +18 -0
- package/dist/layer/shift-layer.js +61 -0
- package/dist/layer/shift-layer.js.map +1 -0
- package/dist/layout/absolute.d.ts +8 -0
- package/dist/layout/card.d.ts +7 -0
- package/dist/layout/html-absolute.d.ts +8 -0
- package/dist/layout/index.d.ts +8 -0
- package/dist/layout/index.js +12 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/layout/layout.d.ts +11 -0
- package/dist/layout/linear-horizontal.d.ts +7 -0
- package/dist/layout/linear-vertical.d.ts +7 -0
- package/dist/layout/table.d.ts +9 -0
- package/dist/layout/three.d.ts +8 -0
- package/dist/layout/three.js +20 -0
- package/dist/layout/three.js.map +1 -0
- package/dist/license/license.d.ts +18 -0
- package/dist/model/compile.d.ts +1 -0
- package/dist/model/compile.js +28 -0
- package/dist/model/compile.js.map +1 -0
- package/dist/model/duplicate.d.ts +1 -0
- package/dist/model/index.d.ts +3 -0
- package/dist/model/selector.d.ts +2 -0
- package/dist/style/compile.d.ts +1 -0
- package/dist/style/index.d.ts +1 -0
- package/dist/things-scene/api/add-start.d.ts +1 -0
- package/dist/things-scene/api/add.d.ts +5 -0
- package/dist/things-scene/api/align.d.ts +1 -0
- package/dist/things-scene/api/change.d.ts +2 -0
- package/dist/things-scene/api/clipboard.d.ts +3 -0
- package/dist/things-scene/api/distribute.d.ts +1 -0
- package/dist/things-scene/api/duplicate.d.ts +4 -0
- package/dist/things-scene/api/fullscreen.d.ts +1 -0
- package/dist/things-scene/api/group.d.ts +8 -0
- package/dist/things-scene/api/group.js +78 -0
- package/dist/things-scene/api/group.js.map +1 -0
- package/dist/things-scene/api/ids.d.ts +4 -0
- package/dist/things-scene/api/index.d.ts +15 -0
- package/dist/things-scene/api/listener.d.ts +3 -0
- package/dist/things-scene/api/remove.d.ts +4 -0
- package/dist/things-scene/api/symmetry.d.ts +2 -0
- package/dist/things-scene/api/symmetry.js +39 -0
- package/dist/things-scene/api/symmetry.js.map +1 -0
- package/dist/things-scene/api/to-data-url.d.ts +1 -0
- package/dist/things-scene/api/to-data-url.js +69 -0
- package/dist/things-scene/api/to-data-url.js.map +1 -0
- package/dist/things-scene/api/zorder.d.ts +2 -0
- package/dist/things-scene/application-context.d.ts +40 -0
- package/dist/things-scene/config.d.ts +4 -0
- package/dist/things-scene/create.d.ts +20 -0
- package/dist/things-scene/fps.d.ts +1 -0
- package/dist/things-scene/index.d.ts +17 -0
- package/dist/things-scene/index.js +23 -0
- package/dist/things-scene/index.js.map +1 -0
- package/dist/things-scene/polyfill.d.ts +2 -0
- package/dist/things-scene/scene.d.ts +155 -0
- package/dist/things-scene/version.d.ts +2 -0
- package/dist/threed/common.d.ts +22 -0
- package/dist/threed/control/three-controls.d.ts +11 -0
- package/dist/threed/control/three-controls.js +620 -0
- package/dist/threed/control/three-controls.js.map +1 -0
- package/dist/threed/html/elements.d.ts +2 -0
- package/dist/threed/real-object-camera-meshed.d.ts +12 -0
- package/dist/threed/real-object-camera-meshed.js +49 -0
- package/dist/threed/real-object-camera-meshed.js.map +1 -0
- package/dist/threed/real-object-camera.d.ts +9 -0
- package/dist/threed/real-object-camera.js +31 -0
- package/dist/threed/real-object-camera.js.map +1 -0
- package/dist/threed/real-object-dom-element.d.ts +20 -0
- package/dist/threed/real-object-dom-element.js +78 -0
- package/dist/threed/real-object-dom-element.js.map +1 -0
- package/dist/threed/real-object-dummy.d.ts +6 -0
- package/dist/threed/real-object-dummy.js +11 -0
- package/dist/threed/real-object-dummy.js.map +1 -0
- package/dist/threed/real-object-extrude.d.ts +19 -0
- package/dist/threed/real-object-extrude.js +171 -0
- package/dist/threed/real-object-extrude.js.map +1 -0
- package/dist/threed/real-object-gltf.d.ts +15 -0
- package/dist/threed/real-object-gltf.js +97 -0
- package/dist/threed/real-object-gltf.js.map +1 -0
- package/dist/threed/real-object-group.d.ts +5 -0
- package/dist/threed/real-object-group.js +11 -0
- package/dist/threed/real-object-group.js.map +1 -0
- package/dist/threed/real-object-mesh.d.ts +11 -0
- package/dist/threed/real-object-mesh.js +55 -0
- package/dist/threed/real-object-mesh.js.map +1 -0
- package/dist/threed/real-object-plane.d.ts +6 -0
- package/dist/threed/real-object-plane.js +23 -0
- package/dist/threed/real-object-plane.js.map +1 -0
- package/dist/threed/real-object-scene.d.ts +21 -0
- package/dist/threed/real-object-scene.js +89 -0
- package/dist/threed/real-object-scene.js.map +1 -0
- package/dist/threed/real-object-sprite.d.ts +12 -0
- package/dist/threed/real-object-sprite.js +35 -0
- package/dist/threed/real-object-sprite.js.map +1 -0
- package/dist/threed/real-object-text.d.ts +16 -0
- package/dist/threed/real-object-text.js +70 -0
- package/dist/threed/real-object-text.js.map +1 -0
- package/dist/threed/real-object.d.ts +48 -0
- package/dist/threed/real-object.js +199 -0
- package/dist/threed/real-object.js.map +1 -0
- package/dist/threed/texture/text-texture.d.ts +8 -0
- package/dist/threed/three-dimensional-container.d.ts +7 -0
- package/dist/threed/three-dimensional-container.js +2 -0
- package/dist/threed/three-dimensional-container.js.map +1 -0
- package/dist/threed/utils/bound-uv-generator.d.ts +16 -0
- package/dist/types.d.ts +53 -0
- package/dist/types.js +368 -0
- package/dist/types.js.map +1 -0
- package/package.json +5 -2
- package/schema.graphql +5 -0
- package/things-scene-ie.js +1 -1
- package/things-scene-ie.js.LICENSE.txt +22 -0
- package/things-scene-min.js +1 -1
- package/things-scene-min.js.LICENSE.txt +22 -0
- package/things-scene.d.ts +13 -1
- package/things-scene.mjs +34 -14
package/dist/types.js
ADDED
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
const MODE_VIEW = 0;
|
|
2
|
+
const MODE_EDIT = 1;
|
|
3
|
+
const MODE_SHIFT = 2;
|
|
4
|
+
const MODE_ADD = 3;
|
|
5
|
+
var SCENE_MODE;
|
|
6
|
+
(function (SCENE_MODE) {
|
|
7
|
+
SCENE_MODE[SCENE_MODE["VIEW"] = 0] = "VIEW";
|
|
8
|
+
SCENE_MODE[SCENE_MODE["EDIT"] = 1] = "EDIT";
|
|
9
|
+
SCENE_MODE[SCENE_MODE["SHIFT"] = 2] = "SHIFT";
|
|
10
|
+
SCENE_MODE[SCENE_MODE["ADD"] = 3] = "ADD";
|
|
11
|
+
})(SCENE_MODE || (SCENE_MODE = {}));
|
|
12
|
+
export {};
|
|
13
|
+
// interface Model {
|
|
14
|
+
// static compile(model: Model, context?: any): Component
|
|
15
|
+
// type?: string
|
|
16
|
+
// [key: string]: any
|
|
17
|
+
// }
|
|
18
|
+
// class ApplicationContext {
|
|
19
|
+
// readonly refProvider: ReferenceProvider
|
|
20
|
+
// readonly dataStorage: PersistentDataStorage
|
|
21
|
+
// readonly dataSubscriptionProvider: DataSubscriptionProvider
|
|
22
|
+
// readonly isViewMode: boolean
|
|
23
|
+
// readonly isEditMode: boolean
|
|
24
|
+
// mode: SCENE_MODE
|
|
25
|
+
// baseUrl: string
|
|
26
|
+
// url(x: string): string
|
|
27
|
+
// dispose(): void
|
|
28
|
+
// }
|
|
29
|
+
/* mixins */
|
|
30
|
+
// function RectPath<TBase extends Constructor>(Base: TBase): TBase
|
|
31
|
+
// function ValueHolder<TBase extends Constructor>(
|
|
32
|
+
// Base: TBase
|
|
33
|
+
// ): {
|
|
34
|
+
// new (...args: any[]): {
|
|
35
|
+
// value: number
|
|
36
|
+
// animValue: number
|
|
37
|
+
// animOnValueChange(value: number, animFromBase: boolean, base: number): void
|
|
38
|
+
// }
|
|
39
|
+
// } & TBase
|
|
40
|
+
// function DataSource<TBase extends Constructor>(
|
|
41
|
+
// Base: TBase
|
|
42
|
+
// ): {
|
|
43
|
+
// new (...args: any[]): {
|
|
44
|
+
// isDataSource(): boolean
|
|
45
|
+
// _convertDataFormat(data: any, format: 'json' | 'text' | 'jsonp' | string): any
|
|
46
|
+
// }
|
|
47
|
+
// } & TBase
|
|
48
|
+
// function MoveHandle<TBase extends Constructor>(Base: TBase): TBase
|
|
49
|
+
// function Connectable<TBase extends Constructor>(
|
|
50
|
+
// Base: TBase
|
|
51
|
+
// ): {
|
|
52
|
+
// new (...args: any[]): {
|
|
53
|
+
// findOutletLines(anchorName: string): Line[]
|
|
54
|
+
// findOutletEnds(anchorName: string): Component[]
|
|
55
|
+
// findInletLines(anchorName: string): Line[]
|
|
56
|
+
// findInletEnds(anchorName: string): Component[]
|
|
57
|
+
// }
|
|
58
|
+
// } & TBase
|
|
59
|
+
// function MixinHTMLElement<TBase extends Constructor>(
|
|
60
|
+
// Base: TBase
|
|
61
|
+
// ): {
|
|
62
|
+
// new (...args: any[]): {
|
|
63
|
+
// get tagName(): string
|
|
64
|
+
// element: HTMLElement
|
|
65
|
+
// createElement(): void
|
|
66
|
+
// userInputEventHandler(e: Event): void
|
|
67
|
+
// reposition(): void
|
|
68
|
+
// disposeElement(): void
|
|
69
|
+
// }
|
|
70
|
+
// } & TBase
|
|
71
|
+
// function MixinEvent<TBase extends Constructor>(
|
|
72
|
+
// Base: TBase
|
|
73
|
+
// ): {
|
|
74
|
+
// new (...args: any[]): {
|
|
75
|
+
// on(name: string, callback: Function, context?: any): void
|
|
76
|
+
// off(name: string, callback: Function, context?: any): void
|
|
77
|
+
// once(name: string, callback: Function, context?: any): void
|
|
78
|
+
// trigger(name: string, ...others: any[]): void
|
|
79
|
+
// }
|
|
80
|
+
// } & TBase
|
|
81
|
+
/* components */
|
|
82
|
+
// class Component extends MixinEvent(Object) {
|
|
83
|
+
// static register(type: string, Clazz?: typeof Component): void
|
|
84
|
+
// static memoize(base: any, property: string, needClone: boolean): void
|
|
85
|
+
// static drawStroke(context: CanvasRenderingContext2D, style: Style): void
|
|
86
|
+
// static buildSubstitutor(
|
|
87
|
+
// expression: string,
|
|
88
|
+
// component: Component,
|
|
89
|
+
// customObjToVal?: (obj: any) => any
|
|
90
|
+
// ): () => string | undefined
|
|
91
|
+
// static reposition(component: Component): void
|
|
92
|
+
// static registerDecorator(name: string, decorator: Decorator): void
|
|
93
|
+
// static createCanvas(width: number, height: number): HTMLCanvasElement
|
|
94
|
+
// state: Properties
|
|
95
|
+
// bounds: BOUNDS
|
|
96
|
+
// root: RootContainer
|
|
97
|
+
// rootModel: ModelLayer
|
|
98
|
+
// parent: Container
|
|
99
|
+
// app: ApplicationContext
|
|
100
|
+
// hidden: boolean
|
|
101
|
+
// get nature(): ComponentNature
|
|
102
|
+
// get model(): Model
|
|
103
|
+
// get hierarchy(): Model
|
|
104
|
+
// get font(): string
|
|
105
|
+
// get data(): any
|
|
106
|
+
// set data(data: any)
|
|
107
|
+
// get value(): any
|
|
108
|
+
// set value(value: any)
|
|
109
|
+
// get text(): string
|
|
110
|
+
// set text(text: string)
|
|
111
|
+
// get textBounds(): BOUNDS
|
|
112
|
+
// get textRotation(): number
|
|
113
|
+
// get path(): Array<DIMENSION>
|
|
114
|
+
// set path(path: Array<DIMENSION>)
|
|
115
|
+
// get center(): POINT
|
|
116
|
+
// set center(point: POINT)
|
|
117
|
+
// get anchors(): Array<Anchor>
|
|
118
|
+
// get controls(): Array<Control> | undefined
|
|
119
|
+
// get hasTextProperty(): boolean
|
|
120
|
+
// get textSubstitutor(): () => string
|
|
121
|
+
// get decorators(): Array<string | Decorator>
|
|
122
|
+
// isRootModel(): boolean
|
|
123
|
+
// isContainer(): boolean
|
|
124
|
+
// isLine(): boolean
|
|
125
|
+
// isLayer(): boolean
|
|
126
|
+
// is3dish(): boolean
|
|
127
|
+
// isHTMLElement(): boolean
|
|
128
|
+
// isConnectable(): boolean
|
|
129
|
+
// ready(): void
|
|
130
|
+
// dispose(): void
|
|
131
|
+
// getState(prop: string): any
|
|
132
|
+
// setState(props: Properties | any, value?: any): void
|
|
133
|
+
// get(prop: string): any
|
|
134
|
+
// contains(x: number, y: number): boolean
|
|
135
|
+
// set(props: Properties | string, value?: any): void
|
|
136
|
+
// reposition(): void
|
|
137
|
+
// clearCache(): void
|
|
138
|
+
// prepareIf(condition: boolean): void
|
|
139
|
+
// mutatePath(
|
|
140
|
+
// beforeLogic: ((path: Array<DIMENSION>) => void) | null,
|
|
141
|
+
// afterLogic: ((path: Array<DIMENSION>) => void) | null,
|
|
142
|
+
// context?: any
|
|
143
|
+
// ): void
|
|
144
|
+
// transcoordP2S(x: number, y: number): POSITION
|
|
145
|
+
// transcoordC2S(x: number, y: number, top?: RootContainer): POSITION
|
|
146
|
+
// transcoordS2T(x: number, y: number): POSITION
|
|
147
|
+
// prerender(context: CanvasRenderingContext2D): void
|
|
148
|
+
// render(context: CanvasRenderingContext2D): void
|
|
149
|
+
// postrender(context: CanvasRenderingContext2D): void
|
|
150
|
+
// executeMappings(force?: boolean): void
|
|
151
|
+
// invalidate(): void
|
|
152
|
+
// animate(config: AnimationConfig): {
|
|
153
|
+
// start: Function
|
|
154
|
+
// stop: Function
|
|
155
|
+
// }
|
|
156
|
+
// access(expression: string): any
|
|
157
|
+
// substitute(expression: string, customObjToVal?: (obj: any) => any): string
|
|
158
|
+
// onchange(after: Properties, before: Properties): void
|
|
159
|
+
// onchangeData(after: Properties, before: Properties): void
|
|
160
|
+
// onchangeMappings(after: Properties, before: Properties): void
|
|
161
|
+
// drawImage(
|
|
162
|
+
// context: CanvasRenderingContext2D,
|
|
163
|
+
// image: HTMLImageElement,
|
|
164
|
+
// left: number,
|
|
165
|
+
// top: number,
|
|
166
|
+
// width: number,
|
|
167
|
+
// height: number
|
|
168
|
+
// ): void
|
|
169
|
+
// drawStroke(context: CanvasRenderingContext2D, override?: { [prop: string]: any }): void
|
|
170
|
+
// drawFill(context: CanvasRenderingContext2D, override?: { [prop: string]: any }): void
|
|
171
|
+
// drawText(context: CanvasRenderingContext2D): void
|
|
172
|
+
// ondblclick(e: MouseEvent): void
|
|
173
|
+
// closeScene(data: any): void
|
|
174
|
+
// }
|
|
175
|
+
// class ContainerAbstract extends MoveHandle(RectPath(Component)) {
|
|
176
|
+
// indexOf(component: Component): number
|
|
177
|
+
// size(): number
|
|
178
|
+
// addComponent(target: Component, ghost?: boolean): void
|
|
179
|
+
// removeComponent(target: Component, ghost?: boolean): void
|
|
180
|
+
// insertComponentAt(target: Component, idx: number, ghost?: boolean): void
|
|
181
|
+
// findById(id: string): Component | undefined
|
|
182
|
+
// getAt(at: number): Component | undefined
|
|
183
|
+
// reflow(): void
|
|
184
|
+
// add(components: Component[] | Component, ghost?: boolean): Container
|
|
185
|
+
// remove(components: Component[] | Component, ghost?: boolean): Container
|
|
186
|
+
// components: Component[]
|
|
187
|
+
// }
|
|
188
|
+
// class Container extends MixinHTMLElement(ContainerAbstract) {}
|
|
189
|
+
// class RootContainer extends Container {
|
|
190
|
+
// get selected(): Component[]
|
|
191
|
+
// set selected(selected: Component[])
|
|
192
|
+
// }
|
|
193
|
+
// class Layer extends ContainerAbstract {
|
|
194
|
+
// target: HTMLElement | null
|
|
195
|
+
// canvas: HTMLCanvasElement | null
|
|
196
|
+
// getContext(): CanvasRenderingContext2D
|
|
197
|
+
// }
|
|
198
|
+
// class ModelLayer extends Layer {
|
|
199
|
+
// overlay: HTMLDivElement
|
|
200
|
+
// }
|
|
201
|
+
// class Text extends RectPath(Component) {}
|
|
202
|
+
// class Shape extends Component {}
|
|
203
|
+
// class Ellipse extends Shape {}
|
|
204
|
+
// class Polygon extends Shape {}
|
|
205
|
+
// class Line extends Component {
|
|
206
|
+
// get fromEnd(): LinkEnd | undefined
|
|
207
|
+
// get toEnd(): LinkEnd | undefined
|
|
208
|
+
// get from(): LinkEndConfig
|
|
209
|
+
// get to(): LinkEndConfig
|
|
210
|
+
// }
|
|
211
|
+
// class OrthoLine extends Line {}
|
|
212
|
+
// class Donut extends Ellipse {}
|
|
213
|
+
// class Rect extends RectPath(Shape) {}
|
|
214
|
+
// class HTMLOverlayElement extends MixinHTMLElement(RectPath(Component)) {}
|
|
215
|
+
// class HTMLOverlayContainer extends Container {
|
|
216
|
+
// readonly layout: any
|
|
217
|
+
// }
|
|
218
|
+
// /* Scene API */
|
|
219
|
+
// class Scene {
|
|
220
|
+
// static readonly residents: WeakSet<Scene>
|
|
221
|
+
// /**
|
|
222
|
+
// * scene에 컴포넌트를 추가한다.
|
|
223
|
+
// * @param models {object} - Component Model Object
|
|
224
|
+
// * @param boundsOrOffset {object} - x, y, cx, cy, ...
|
|
225
|
+
// * @param onto {string} - onto
|
|
226
|
+
// */
|
|
227
|
+
// add(
|
|
228
|
+
// models: Model,
|
|
229
|
+
// boundsOrOffset?: {
|
|
230
|
+
// left?: number
|
|
231
|
+
// top?: number
|
|
232
|
+
// width?: number
|
|
233
|
+
// height?: number
|
|
234
|
+
// x?: number
|
|
235
|
+
// y?: number
|
|
236
|
+
// cx?: number
|
|
237
|
+
// cy?: number
|
|
238
|
+
// },
|
|
239
|
+
// onto?: string
|
|
240
|
+
// ): Component
|
|
241
|
+
// /**
|
|
242
|
+
// * scene에 컴포넌트를 추가하는 모드를 시작한다.
|
|
243
|
+
// * @param models {object} - Component Model Object
|
|
244
|
+
// */
|
|
245
|
+
// startAddMode(models: Model): void
|
|
246
|
+
// /**
|
|
247
|
+
// * scene의 컴포넌트를 복제한다.
|
|
248
|
+
// * 현재 선택되어있는 컴포넌트가 복제되므로, 컴포넌트를 복제하기 위해서는
|
|
249
|
+
// * 먼저 복제하고자하는 컴포넌트를 선택된 상태로 만든 후에(참조. {@link select} 메쏘드) 이 메쏘드를 호출한다.
|
|
250
|
+
// */
|
|
251
|
+
// duplicate(): void
|
|
252
|
+
// /**
|
|
253
|
+
// * scene의 컴포넌트를 삭제한다.
|
|
254
|
+
// * 현재 선택되어있는 컴포넌트가 삭제되므로, 컴포넌트를 삭제하기 위해서는
|
|
255
|
+
// * 먼저 삭제하고자하는 컴포넌트를 선택된 상태로 만든 후에(참조. {@link select} 메쏘드) 이 메쏘드를 호출한다.
|
|
256
|
+
// */
|
|
257
|
+
// remove(): void
|
|
258
|
+
// animate(config: AnimationConfig): {
|
|
259
|
+
// start: Function /* start function */
|
|
260
|
+
// stop: Function /* stop function */
|
|
261
|
+
// }
|
|
262
|
+
// /**
|
|
263
|
+
// * scene이 그려지고 있는 컨테이너를 전체화면 모드에서 표시되도록 한다.
|
|
264
|
+
// */
|
|
265
|
+
// fullscreen(): void
|
|
266
|
+
// /**
|
|
267
|
+
// * 파라미터로 주어지는 id를 가진 컴포넌트의 data 값을 변경한다.
|
|
268
|
+
// * @param id {string} - component id
|
|
269
|
+
// * @param value {any} - data value
|
|
270
|
+
// */
|
|
271
|
+
// variable(id: string, value: any): any
|
|
272
|
+
// target: HTMLElement | null
|
|
273
|
+
// scale: SCALE
|
|
274
|
+
// translate: TRANSLATE
|
|
275
|
+
// readonly unit: string /* 'px' */
|
|
276
|
+
// readonly PPM: number
|
|
277
|
+
// readonly PPI: number
|
|
278
|
+
// readonly DPPX: number
|
|
279
|
+
// mode: SCENE_MODE
|
|
280
|
+
// /**
|
|
281
|
+
// * Scene 모델의 단위(unit)을 감안한 기본 Scale 값을 제공한다.
|
|
282
|
+
// * 통산 'mm', 'cm' 단위의 Scene은 각 값에 10배를 곱한 수치로 모델링된다.(값을 10으로 나눈값이 실제 단위와 일치한다.)
|
|
283
|
+
// * unitScale의 의미는 scene에 unitScale값으로 scale하면, 각 단위값이 화면과 일치한다는 의미이다.
|
|
284
|
+
// *
|
|
285
|
+
// * 모델링의 수치단위가 픽셀이 아니고, mm, cm, inch 등의 단위인 경우에,
|
|
286
|
+
// * 화면에서의 크기가 실물과 유사하게 보이는 수준의 기본 스케일을 제공하는 기능이다.
|
|
287
|
+
// * 이 값은 내부적으로는, Ruler에서 눈금을 실제 자의 눈금과 일치시키기 위해서 사용한다.
|
|
288
|
+
// */
|
|
289
|
+
// readonly unitScale: string
|
|
290
|
+
// /**
|
|
291
|
+
// * scene이 그려질 모니터 화면의 크기정보 (inch)
|
|
292
|
+
// * 예시) 17, 20, 24, 27, 30, ...
|
|
293
|
+
// * @type {number}
|
|
294
|
+
// */
|
|
295
|
+
// screen: number
|
|
296
|
+
// /**
|
|
297
|
+
// * 컨테이너의 크기에 맞게 크기를 조정한다.
|
|
298
|
+
// */
|
|
299
|
+
// resize(): void
|
|
300
|
+
// release(): void
|
|
301
|
+
// dispose(): void
|
|
302
|
+
// /* Selection Based API - Modeling APIs */
|
|
303
|
+
// /**
|
|
304
|
+
// * scene 내에서 선택된 컴포넌트의 리스트
|
|
305
|
+
// * @type {object-array}
|
|
306
|
+
// */
|
|
307
|
+
// selected: Array<Component>
|
|
308
|
+
// /**
|
|
309
|
+
// * scene이 그리고 있는 컴포넌트 모델정보
|
|
310
|
+
// * @type {object}
|
|
311
|
+
// */
|
|
312
|
+
// model: Component
|
|
313
|
+
// /*
|
|
314
|
+
// * root는 모델의 최상위 컨테이너인 모델레이어를 의미한다.
|
|
315
|
+
// */
|
|
316
|
+
// readonly root: Container
|
|
317
|
+
// /*
|
|
318
|
+
// * selector에 해당하는 모든 컴포넌트들을 찾는다.
|
|
319
|
+
// * @params selector {string}
|
|
320
|
+
// */
|
|
321
|
+
// findAll(selector: string, component?: Component): Array<Component>
|
|
322
|
+
// /*
|
|
323
|
+
// * selector에 해당하는 첫번째 컴포넌트를 찾는다.
|
|
324
|
+
// * @params selector {string}
|
|
325
|
+
// */
|
|
326
|
+
// findFirst(selector: string, ...others: any[]): Component
|
|
327
|
+
// /*
|
|
328
|
+
// * id를 갖는 컴포넌트를 찾는다.
|
|
329
|
+
// * @params id {string}
|
|
330
|
+
// */
|
|
331
|
+
// findById(id: string): Component
|
|
332
|
+
// /*
|
|
333
|
+
// * scene이 그리는 모델 오브젝트를 JSON 텍스트로 리턴한다.
|
|
334
|
+
// */
|
|
335
|
+
// serialize(): string
|
|
336
|
+
// on(event: string, listener: Function, context?: any): void
|
|
337
|
+
// once(event: string, listener: Function, context?: any): void
|
|
338
|
+
// off(event: string, listener?: Function, context?: any): void
|
|
339
|
+
// toDataURL(): string
|
|
340
|
+
// fit(type: FITMODE): void
|
|
341
|
+
// readonly fitMode: FITMODE
|
|
342
|
+
// readonly ids: { [id: string]: any }[]
|
|
343
|
+
// copy(): string
|
|
344
|
+
// cut(): string
|
|
345
|
+
// redo(): void
|
|
346
|
+
// undo(): void
|
|
347
|
+
// move(component: Component, to_container: Container, to_index: number): void
|
|
348
|
+
// select(selector: string | Function, ...others: (string | Function)[]): Component[]
|
|
349
|
+
// paste(clipboard: string): void
|
|
350
|
+
// align(type: 'left' | 'right' | 'center' | 'top' | 'bottom' | 'middle' | string): void
|
|
351
|
+
// distribute(type: string): void
|
|
352
|
+
// symmetryX(): void
|
|
353
|
+
// symmetryY(): void
|
|
354
|
+
// group(): void
|
|
355
|
+
// ungroup(): void
|
|
356
|
+
// change(f: ChangeFunction): void
|
|
357
|
+
// undoableChange(f: () => void): void
|
|
358
|
+
// zorder(type: 'forward' | 'backward' | 'front' | string): void
|
|
359
|
+
// data: object
|
|
360
|
+
// dataByRefid: object
|
|
361
|
+
// values: object
|
|
362
|
+
// valuesByRefid: object
|
|
363
|
+
// anchorStarterTemplate: object
|
|
364
|
+
// // @deprecated
|
|
365
|
+
// variables: object
|
|
366
|
+
// baseUrl: string
|
|
367
|
+
// }
|
|
368
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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","sourcesContent":["import Component from './components/component'\nimport Container from './components/container'\nimport { Scene } from './things-scene'\n\nexport type Properties = { [key: string]: any }\ntype State = Properties\ntype Style = Properties\n// type Decorator = (component: Component, context: CanvasRenderingContext2D) => boolean\ntype PopupOptions = {\n data: any\n location: 'center' | 'left-top' | 'right-top' | 'left-bottom' | 'right-bottom'\n modal: boolean\n closable: boolean\n output: boolean\n}\n\ntype ChangeFunction = (selector: string, value: any, self: any) => Component[]\n\nconst MODE_VIEW = 0\nconst MODE_EDIT = 1\nconst MODE_SHIFT = 2\nconst MODE_ADD = 3\n\nenum SCENE_MODE {\n VIEW = 0,\n EDIT = 1,\n SHIFT = 2,\n ADD = 3\n}\n\ntype FITMODE = 'both' | 'ratio' | 'width' | 'height' | 'center' | 'none'\ntype DIMENSION = { x: number; y: number }\ntype SCALE = DIMENSION\ntype TRANSLATE = DIMENSION\ntype POSITION = DIMENSION\ntype POINT = DIMENSION\ntype LOCATION = DIMENSION\ntype BOUNDS = { left: number; top: number; width: number; height: number }\n\nexport type ComponentNature = {\n mutable?: boolean\n resizable?: boolean\n rotatable?: boolean\n properties?: {\n type: string\n label: string\n name: string\n placeholder?: string\n observe?: (this: HTMLElement, value: any) => void\n property?:\n | {\n options?: any\n [key: string]: any\n }\n | string\n }[]\n 'value-property'?: string\n valueProperty?: string\n help?: string\n}\n\ntype ReferenceProvider = {\n get ids(): string[]\n add(id: string, target?: any): Promise<Scene & { release: () => void }>\n get(id: string, createIf?: boolean): Promise<Scene & { release: () => void }>\n}\n\ntype DataSubscriptionProvider = {\n subscribe(tag: string, component: Component): Promise<{ unsubscribe: () => void }>\n dispose(): void\n}\n\ninterface LAYOUT {\n reflow: (container: Container) => void\n capturables?: (container: Container) => Component[]\n drawables?: (container: Container) => Component[]\n isStuck?: (component: Container) => boolean\n keyNavigate?: (container: Container, component: Component, e: KeyboardEvent) => Component | undefined\n joinType?: boolean\n}\n\ninterface LayoutRegistry {\n register(name: string, layout: LAYOUT): void\n unregister(name: string): void\n get(name: string): LAYOUT\n list(): { [name: string]: LAYOUT }\n}\n\n// const Layout: LayoutRegistry\n\n// const AbsoluteLayout: LAYOUT & { ABSOLUTE: boolean }\n// const TableLayout: LAYOUT\n// const CardLayout: LAYOUT\n// const HTMLAbsoluteLayout: LAYOUT\n// const LinearHorizontalLayout: LAYOUT\n// const LinearVerticalLayout: LAYOUT\n\ninterface PersistentDataStorage {\n load(key: object): Promise<any>\n save(key: object, value: any): Promise<void>\n clear(key: object): Promise<void>\n}\n\ntype AnimationConfig = {\n duration?: number\n delay?: number\n step: Function\n delta: 'linear' | 'quad' | 'circ' | 'back' | 'bounce' | 'elastic' | Function\n ease: 'out' | 'inout'\n options?: object\n repeat?: boolean\n}\n\ntype ControlHandler = {\n ondragstart?(point: POSITION, index: number, component: Component): void\n ondragmove?(point: POSITION, index: number, component: Component): void\n ondragend?(point: POSITION, index: number, component: Component): void\n}\n\ninterface Control extends DIMENSION {\n handler: ControlHandler\n}\n\ntype create = ({\n target,\n model,\n style,\n layers,\n handlers,\n mode,\n refProvider,\n dataSubscriptionProvider,\n dataStorage,\n baseUrl,\n fitMode\n}: {\n target?: HTMLElement\n model: Object\n style?: any\n layers?: Array<any>\n handlers?: Array<any>\n mode?: SCENE_MODE\n refProvider?: ReferenceProvider\n dataSubscriptionProvider?: DataSubscriptionProvider\n dataStorage?: PersistentDataStorage\n baseUrl?: string | undefined\n fitMode?: FITMODE\n}) => Scene\n\n// function error(...args: any[]): void\n// function warn(...args: any[]): void\n// function debug(...args: any[]): void\n\n// function FPS(): number\n\n// class ReferenceMap {\n// constructor(\n// creator: (boardId: string, resolve: any, reject: any) => Promise<any>,\n// disposer: (id: string, ref: any) => Promise<void>\n// )\n// get(id: string, createIf?: boolean): Promise<any>\n// get ids(): string[]\n// add(id: string, target: any): Promise<any>\n// }\n\n// class ScriptLoader {\n// static load(scripts: string | Array<string>, styles?: string | Array<string>): Promise<void>\n// }\n// class ScenePopup {\n// static hideAll(root: Component): void\n// static hide(component: Component): void\n// static show(component: Component, ref: string, options: PopupOptions): void\n// }\n\nexport type Anchor = {\n name: string\n position: POSITION\n bounds?: BOUNDS\n inout?: 'in' | 'out' | 'inout'\n type?: string\n multiplicity?: number\n draw?: (this: Anchor, context: CanvasRenderingContext2D, component: Component) => void\n filter?: (this: Anchor, linkEnd?: LinkEnd) => boolean\n template?: any\n [prop: string]: any\n}\n\ntype LinkEndConfig = {\n component: string /** end component refid */\n anchor: string /** end anchor name of end component */\n position: POSITION /** position of the link end */\n}\n\ntype LinkEnd = {\n component: Component\n anchor: Anchor\n position: POSITION\n fromto: 'from' | 'to'\n}\n\n// interface Model {\n// static compile(model: Model, context?: any): Component\n\n// type?: string\n// [key: string]: any\n// }\n\n// class ApplicationContext {\n// readonly refProvider: ReferenceProvider\n// readonly dataStorage: PersistentDataStorage\n// readonly dataSubscriptionProvider: DataSubscriptionProvider\n// readonly isViewMode: boolean\n// readonly isEditMode: boolean\n\n// mode: SCENE_MODE\n// baseUrl: string\n\n// url(x: string): string\n// dispose(): void\n// }\n\n/* mixins */\n\n// function RectPath<TBase extends Constructor>(Base: TBase): TBase\n\n// function ValueHolder<TBase extends Constructor>(\n// Base: TBase\n// ): {\n// new (...args: any[]): {\n// value: number\n// animValue: number\n// animOnValueChange(value: number, animFromBase: boolean, base: number): void\n// }\n// } & TBase\n\n// function DataSource<TBase extends Constructor>(\n// Base: TBase\n// ): {\n// new (...args: any[]): {\n// isDataSource(): boolean\n// _convertDataFormat(data: any, format: 'json' | 'text' | 'jsonp' | string): any\n// }\n// } & TBase\n\n// function MoveHandle<TBase extends Constructor>(Base: TBase): TBase\n\n// function Connectable<TBase extends Constructor>(\n// Base: TBase\n// ): {\n// new (...args: any[]): {\n// findOutletLines(anchorName: string): Line[]\n// findOutletEnds(anchorName: string): Component[]\n// findInletLines(anchorName: string): Line[]\n// findInletEnds(anchorName: string): Component[]\n// }\n// } & TBase\n\n// function MixinHTMLElement<TBase extends Constructor>(\n// Base: TBase\n// ): {\n// new (...args: any[]): {\n// get tagName(): string\n// element: HTMLElement\n\n// createElement(): void\n// userInputEventHandler(e: Event): void\n// reposition(): void\n// disposeElement(): void\n// }\n// } & TBase\n\n// function MixinEvent<TBase extends Constructor>(\n// Base: TBase\n// ): {\n// new (...args: any[]): {\n// on(name: string, callback: Function, context?: any): void\n// off(name: string, callback: Function, context?: any): void\n// once(name: string, callback: Function, context?: any): void\n// trigger(name: string, ...others: any[]): void\n// }\n// } & TBase\n\n/* components */\n\n// class Component extends MixinEvent(Object) {\n// static register(type: string, Clazz?: typeof Component): void\n// static memoize(base: any, property: string, needClone: boolean): void\n// static drawStroke(context: CanvasRenderingContext2D, style: Style): void\n// static buildSubstitutor(\n// expression: string,\n// component: Component,\n// customObjToVal?: (obj: any) => any\n// ): () => string | undefined\n// static reposition(component: Component): void\n// static registerDecorator(name: string, decorator: Decorator): void\n// static createCanvas(width: number, height: number): HTMLCanvasElement\n\n// state: Properties\n// bounds: BOUNDS\n// root: RootContainer\n// rootModel: ModelLayer\n// parent: Container\n// app: ApplicationContext\n// hidden: boolean\n\n// get nature(): ComponentNature\n\n// get model(): Model\n// get hierarchy(): Model\n\n// get font(): string\n\n// get data(): any\n// set data(data: any)\n\n// get value(): any\n// set value(value: any)\n\n// get text(): string\n// set text(text: string)\n\n// get textBounds(): BOUNDS\n// get textRotation(): number\n\n// get path(): Array<DIMENSION>\n// set path(path: Array<DIMENSION>)\n\n// get center(): POINT\n// set center(point: POINT)\n\n// get anchors(): Array<Anchor>\n// get controls(): Array<Control> | undefined\n// get hasTextProperty(): boolean\n// get textSubstitutor(): () => string\n\n// get decorators(): Array<string | Decorator>\n\n// isRootModel(): boolean\n// isContainer(): boolean\n// isLine(): boolean\n// isLayer(): boolean\n// is3dish(): boolean\n// isHTMLElement(): boolean\n// isConnectable(): boolean\n\n// ready(): void\n// dispose(): void\n// getState(prop: string): any\n// setState(props: Properties | any, value?: any): void\n// get(prop: string): any\n// contains(x: number, y: number): boolean\n// set(props: Properties | string, value?: any): void\n// reposition(): void\n// clearCache(): void\n\n// prepareIf(condition: boolean): void\n// mutatePath(\n// beforeLogic: ((path: Array<DIMENSION>) => void) | null,\n// afterLogic: ((path: Array<DIMENSION>) => void) | null,\n// context?: any\n// ): void\n\n// transcoordP2S(x: number, y: number): POSITION\n// transcoordC2S(x: number, y: number, top?: RootContainer): POSITION\n// transcoordS2T(x: number, y: number): POSITION\n\n// prerender(context: CanvasRenderingContext2D): void\n// render(context: CanvasRenderingContext2D): void\n// postrender(context: CanvasRenderingContext2D): void\n\n// executeMappings(force?: boolean): void\n// invalidate(): void\n// animate(config: AnimationConfig): {\n// start: Function\n// stop: Function\n// }\n\n// access(expression: string): any\n// substitute(expression: string, customObjToVal?: (obj: any) => any): string\n\n// onchange(after: Properties, before: Properties): void\n// onchangeData(after: Properties, before: Properties): void\n// onchangeMappings(after: Properties, before: Properties): void\n\n// drawImage(\n// context: CanvasRenderingContext2D,\n// image: HTMLImageElement,\n// left: number,\n// top: number,\n// width: number,\n// height: number\n// ): void\n// drawStroke(context: CanvasRenderingContext2D, override?: { [prop: string]: any }): void\n// drawFill(context: CanvasRenderingContext2D, override?: { [prop: string]: any }): void\n// drawText(context: CanvasRenderingContext2D): void\n\n// ondblclick(e: MouseEvent): void\n\n// closeScene(data: any): void\n// }\n\n// class ContainerAbstract extends MoveHandle(RectPath(Component)) {\n// indexOf(component: Component): number\n// size(): number\n// addComponent(target: Component, ghost?: boolean): void\n// removeComponent(target: Component, ghost?: boolean): void\n// insertComponentAt(target: Component, idx: number, ghost?: boolean): void\n// findById(id: string): Component | undefined\n// getAt(at: number): Component | undefined\n\n// reflow(): void\n\n// add(components: Component[] | Component, ghost?: boolean): Container\n// remove(components: Component[] | Component, ghost?: boolean): Container\n\n// components: Component[]\n// }\n// class Container extends MixinHTMLElement(ContainerAbstract) {}\n// class RootContainer extends Container {\n// get selected(): Component[]\n// set selected(selected: Component[])\n// }\n\n// class Layer extends ContainerAbstract {\n// target: HTMLElement | null\n// canvas: HTMLCanvasElement | null\n\n// getContext(): CanvasRenderingContext2D\n// }\n\n// class ModelLayer extends Layer {\n// overlay: HTMLDivElement\n// }\n\n// class Text extends RectPath(Component) {}\n// class Shape extends Component {}\n// class Ellipse extends Shape {}\n// class Polygon extends Shape {}\n// class Line extends Component {\n// get fromEnd(): LinkEnd | undefined\n// get toEnd(): LinkEnd | undefined\n// get from(): LinkEndConfig\n// get to(): LinkEndConfig\n// }\n// class OrthoLine extends Line {}\n// class Donut extends Ellipse {}\n// class Rect extends RectPath(Shape) {}\n// class HTMLOverlayElement extends MixinHTMLElement(RectPath(Component)) {}\n\n// class HTMLOverlayContainer extends Container {\n// readonly layout: any\n// }\n\n// /* Scene API */\n\n// class Scene {\n// static readonly residents: WeakSet<Scene>\n\n// /**\n// * scene에 컴포넌트를 추가한다.\n// * @param models {object} - Component Model Object\n// * @param boundsOrOffset {object} - x, y, cx, cy, ...\n// * @param onto {string} - onto\n// */\n// add(\n// models: Model,\n// boundsOrOffset?: {\n// left?: number\n// top?: number\n// width?: number\n// height?: number\n// x?: number\n// y?: number\n// cx?: number\n// cy?: number\n// },\n// onto?: string\n// ): Component\n\n// /**\n// * scene에 컴포넌트를 추가하는 모드를 시작한다.\n// * @param models {object} - Component Model Object\n// */\n// startAddMode(models: Model): void\n\n// /**\n// * scene의 컴포넌트를 복제한다.\n// * 현재 선택되어있는 컴포넌트가 복제되므로, 컴포넌트를 복제하기 위해서는\n// * 먼저 복제하고자하는 컴포넌트를 선택된 상태로 만든 후에(참조. {@link select} 메쏘드) 이 메쏘드를 호출한다.\n// */\n// duplicate(): void\n\n// /**\n// * scene의 컴포넌트를 삭제한다.\n// * 현재 선택되어있는 컴포넌트가 삭제되므로, 컴포넌트를 삭제하기 위해서는\n// * 먼저 삭제하고자하는 컴포넌트를 선택된 상태로 만든 후에(참조. {@link select} 메쏘드) 이 메쏘드를 호출한다.\n// */\n// remove(): void\n\n// animate(config: AnimationConfig): {\n// start: Function /* start function */\n// stop: Function /* stop function */\n// }\n\n// /**\n// * scene이 그려지고 있는 컨테이너를 전체화면 모드에서 표시되도록 한다.\n// */\n// fullscreen(): void\n\n// /**\n// * 파라미터로 주어지는 id를 가진 컴포넌트의 data 값을 변경한다.\n// * @param id {string} - component id\n// * @param value {any} - data value\n// */\n// variable(id: string, value: any): any\n\n// target: HTMLElement | null\n// scale: SCALE\n// translate: TRANSLATE\n\n// readonly unit: string /* 'px' */\n// readonly PPM: number\n// readonly PPI: number\n// readonly DPPX: number\n\n// mode: SCENE_MODE\n\n// /**\n// * Scene 모델의 단위(unit)을 감안한 기본 Scale 값을 제공한다.\n// * 통산 'mm', 'cm' 단위의 Scene은 각 값에 10배를 곱한 수치로 모델링된다.(값을 10으로 나눈값이 실제 단위와 일치한다.)\n// * unitScale의 의미는 scene에 unitScale값으로 scale하면, 각 단위값이 화면과 일치한다는 의미이다.\n// *\n// * 모델링의 수치단위가 픽셀이 아니고, mm, cm, inch 등의 단위인 경우에,\n// * 화면에서의 크기가 실물과 유사하게 보이는 수준의 기본 스케일을 제공하는 기능이다.\n// * 이 값은 내부적으로는, Ruler에서 눈금을 실제 자의 눈금과 일치시키기 위해서 사용한다.\n// */\n// readonly unitScale: string\n\n// /**\n// * scene이 그려질 모니터 화면의 크기정보 (inch)\n// * 예시) 17, 20, 24, 27, 30, ...\n// * @type {number}\n// */\n// screen: number\n\n// /**\n// * 컨테이너의 크기에 맞게 크기를 조정한다.\n// */\n// resize(): void\n\n// release(): void\n// dispose(): void\n\n// /* Selection Based API - Modeling APIs */\n\n// /**\n// * scene 내에서 선택된 컴포넌트의 리스트\n// * @type {object-array}\n// */\n// selected: Array<Component>\n\n// /**\n// * scene이 그리고 있는 컴포넌트 모델정보\n// * @type {object}\n// */\n// model: Component\n\n// /*\n// * root는 모델의 최상위 컨테이너인 모델레이어를 의미한다.\n// */\n// readonly root: Container\n\n// /*\n// * selector에 해당하는 모든 컴포넌트들을 찾는다.\n// * @params selector {string}\n// */\n// findAll(selector: string, component?: Component): Array<Component>\n\n// /*\n// * selector에 해당하는 첫번째 컴포넌트를 찾는다.\n// * @params selector {string}\n// */\n// findFirst(selector: string, ...others: any[]): Component\n\n// /*\n// * id를 갖는 컴포넌트를 찾는다.\n// * @params id {string}\n// */\n// findById(id: string): Component\n\n// /*\n// * scene이 그리는 모델 오브젝트를 JSON 텍스트로 리턴한다.\n// */\n// serialize(): string\n\n// on(event: string, listener: Function, context?: any): void\n// once(event: string, listener: Function, context?: any): void\n// off(event: string, listener?: Function, context?: any): void\n\n// toDataURL(): string\n\n// fit(type: FITMODE): void\n\n// readonly fitMode: FITMODE\n// readonly ids: { [id: string]: any }[]\n\n// copy(): string\n// cut(): string\n// redo(): void\n// undo(): void\n// move(component: Component, to_container: Container, to_index: number): void\n\n// select(selector: string | Function, ...others: (string | Function)[]): Component[]\n// paste(clipboard: string): void\n// align(type: 'left' | 'right' | 'center' | 'top' | 'bottom' | 'middle' | string): void\n// distribute(type: string): void\n// symmetryX(): void\n// symmetryY(): void\n\n// group(): void\n// ungroup(): void\n\n// change(f: ChangeFunction): void\n// undoableChange(f: () => void): void\n// zorder(type: 'forward' | 'backward' | 'front' | string): void\n\n// data: object\n// dataByRefid: object\n\n// values: object\n// valuesByRefid: object\n\n// anchorStarterTemplate: object\n\n// // @deprecated\n// variables: object\n\n// baseUrl: string\n// }\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hatiolab/things-scene",
|
|
3
|
-
"version": "9.0.0-beta.
|
|
3
|
+
"version": "9.0.0-beta.21",
|
|
4
4
|
"description": "2D graphic library",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"module": "things-scene.mjs",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"serve:dev": "things-factory-dev",
|
|
29
29
|
"serve:simple-http-server": "webpack-dev-server --config webpack.config.dev.js --hot --inline --host 0.0.0.0",
|
|
30
30
|
"build": "webpack && rollup -c",
|
|
31
|
+
"build:clean": "rm yarn.lock || echo 'yarn.lock not found.' && yarn install && yarn build",
|
|
31
32
|
"build:client": "npm run clean:client && webpack --config node_modules/@things-factory/shell/webpack.config.js",
|
|
32
33
|
"clean:client": "rm -rf dist-client",
|
|
33
34
|
"prepublish": "webpack && rollup -c",
|
|
@@ -80,11 +81,13 @@
|
|
|
80
81
|
},
|
|
81
82
|
"homepage": "https://github.com/hatiolab/things-scene#readme",
|
|
82
83
|
"dependencies": {
|
|
84
|
+
"@material/web": "^2.2.0",
|
|
83
85
|
"@wizpanda/super-gif": "^0.0.6",
|
|
84
86
|
"canvas-roundrect-polyfill": "^0.0.1",
|
|
85
87
|
"core-js": "^3.26.0",
|
|
86
88
|
"jsonata": "^1.8.6",
|
|
87
|
-
"lodash-es": "^4.17.20"
|
|
89
|
+
"lodash-es": "^4.17.20",
|
|
90
|
+
"pdfjs-dist": "^4.10.38"
|
|
88
91
|
},
|
|
89
92
|
"resolutions": {
|
|
90
93
|
"@azure/storage-blob": "12.18.0",
|
package/schema.graphql
CHANGED
|
@@ -712,6 +712,7 @@ input DomainGeneratorInput {
|
|
|
712
712
|
|
|
713
713
|
input DomainInput {
|
|
714
714
|
description: String
|
|
715
|
+
extType: String
|
|
715
716
|
name: String!
|
|
716
717
|
}
|
|
717
718
|
|
|
@@ -726,6 +727,7 @@ input DomainPatch {
|
|
|
726
727
|
brandName: String
|
|
727
728
|
contentImage: String
|
|
728
729
|
description: String
|
|
730
|
+
extType: String
|
|
729
731
|
id: String
|
|
730
732
|
name: String
|
|
731
733
|
owner: String
|
|
@@ -3646,6 +3648,9 @@ type Query {
|
|
|
3646
3648
|
"""To fetch domain"""
|
|
3647
3649
|
domain(id: String!): Domain!
|
|
3648
3650
|
|
|
3651
|
+
"""To fetch domain"""
|
|
3652
|
+
domainTypes: [String!]!
|
|
3653
|
+
|
|
3649
3654
|
"""To fetch all domains (Only superuser is granted this privilege.)"""
|
|
3650
3655
|
domains(filters: [Filter!], inherited: InheritedValueType, pagination: Pagination, sortings: [Sorting!]): DomainList!
|
|
3651
3656
|
|