@hatiolab/things-scene 9.0.0-beta.34 → 9.0.0-beta.36
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/babel.config.js +4 -3
- package/db.sqlite +0 -0
- package/dist/animation/animate.js +63 -0
- package/dist/animation/animate.js.map +1 -0
- package/dist/animation/animations/animation.js +122 -0
- package/dist/animation/animations/animation.js.map +1 -0
- package/dist/animation/animations/fade.js +28 -0
- package/dist/animation/animations/fade.js.map +1 -0
- package/dist/animation/animations/heartbeat.js +28 -0
- package/dist/animation/animations/heartbeat.js.map +1 -0
- package/dist/animation/animations/moving.js +24 -0
- package/dist/animation/animations/moving.js.map +1 -0
- package/dist/animation/animations/outline.js +47 -0
- package/dist/animation/animations/outline.js.map +1 -0
- package/dist/animation/animations/rotation.js +22 -0
- package/dist/animation/animations/rotation.js.map +1 -0
- package/dist/animation/animations/vibration.js +31 -0
- package/dist/animation/animations/vibration.js.map +1 -0
- package/dist/animation/compile.js +31 -0
- package/dist/animation/compile.js.map +1 -0
- package/dist/animation/delta.js +51 -0
- package/dist/animation/delta.js.map +1 -0
- package/dist/animation/index.js +14 -0
- package/dist/animation/index.js.map +1 -0
- package/dist/command/command-change.js +33 -0
- package/dist/command/command-change.js.map +1 -0
- package/dist/command/command-migrate.js +103 -0
- package/dist/command/command-migrate.js.map +1 -0
- package/dist/command/command.js +18 -0
- package/dist/command/command.js.map +1 -0
- package/dist/command/snapshot-commander.js +84 -0
- package/dist/command/snapshot-commander.js.map +1 -0
- package/dist/components/anchor/anchor.js +105 -0
- package/dist/components/anchor/anchor.js.map +1 -0
- package/dist/components/anchor/ellipse-anchors.js +53 -0
- package/dist/components/anchor/ellipse-anchors.js.map +1 -0
- package/dist/components/anchor/rect-anchors.js +53 -0
- package/dist/components/anchor/rect-anchors.js.map +1 -0
- package/dist/components/audio.js +154 -0
- package/dist/components/audio.js.map +1 -0
- package/dist/components/cloud.js +44 -0
- package/dist/components/cloud.js.map +1 -0
- package/dist/components/component.js +1086 -0
- package/dist/components/component.js.map +1 -0
- package/dist/components/container-abstract.js +387 -0
- package/dist/components/container-abstract.js.map +1 -0
- package/dist/components/container.js +331 -0
- package/dist/components/container.js.map +1 -0
- package/dist/components/data/data-mapping.js +82 -0
- package/dist/components/data/data-mapping.js.map +1 -0
- package/dist/components/data/data.js +166 -0
- package/dist/components/data/data.js.map +1 -0
- package/dist/components/data/evaluator.js +103 -0
- package/dist/components/data/evaluator.js.map +1 -0
- package/dist/components/donut.js +104 -0
- package/dist/components/donut.js.map +1 -0
- package/dist/components/drawer/draw-image-pendable.js +20 -0
- package/dist/components/drawer/draw-image-pendable.js.map +1 -0
- package/dist/components/drawer/effect.js +19 -0
- package/dist/components/drawer/effect.js.map +1 -0
- package/dist/components/drawer/fill.js +228 -0
- package/dist/components/drawer/fill.js.map +1 -0
- package/dist/components/drawer/format.js +115 -0
- package/dist/components/drawer/format.js.map +1 -0
- package/dist/components/drawer/line.js +191 -0
- package/dist/components/drawer/line.js.map +1 -0
- package/dist/components/drawer/stroke.js +62 -0
- package/dist/components/drawer/stroke.js.map +1 -0
- package/dist/components/drawer/text-wrapper.js +51 -0
- package/dist/components/drawer/text-wrapper.js.map +1 -0
- package/dist/components/drawer/text.js +269 -0
- package/dist/components/drawer/text.js.map +1 -0
- package/dist/components/ellipse.js +110 -0
- package/dist/components/ellipse.js.map +1 -0
- package/dist/components/file/ondropfile.js +19 -0
- package/dist/components/file/ondropfile.js.map +1 -0
- package/dist/components/fit/fit.js +137 -0
- package/dist/components/fit/fit.js.map +1 -0
- package/dist/components/geometry/transcoord.js +339 -0
- package/dist/components/geometry/transcoord.js.map +1 -0
- package/dist/components/geometry/union.js +35 -0
- package/dist/components/geometry/union.js.map +1 -0
- package/dist/components/gif-view.js +128 -0
- package/dist/components/gif-view.js.map +1 -0
- package/dist/components/global-ref.js +154 -0
- package/dist/components/global-ref.js.map +1 -0
- package/dist/components/group.js +171 -0
- package/dist/components/group.js.map +1 -0
- package/dist/components/html/elements.js +24 -0
- package/dist/components/html/elements.js.map +1 -0
- package/dist/components/html/fill.js +126 -0
- package/dist/components/html/fill.js.map +1 -0
- package/dist/components/html/reposition.js +119 -0
- package/dist/components/html/reposition.js.map +1 -0
- package/dist/components/html/shadow.js +24 -0
- package/dist/components/html/shadow.js.map +1 -0
- package/dist/components/html-overlay-container.js +27 -0
- package/dist/components/html-overlay-container.js.map +1 -0
- package/dist/components/html-overlay-element.js +22 -0
- package/dist/components/html-overlay-element.js.map +1 -0
- package/dist/components/image-view.js +193 -0
- package/dist/components/image-view.js.map +1 -0
- package/dist/components/index.js +231 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/info-window.js +416 -0
- package/dist/components/info-window.js.map +1 -0
- package/dist/components/line.js +374 -0
- package/dist/components/line.js.map +1 -0
- package/dist/components/local-ref.js +114 -0
- package/dist/components/local-ref.js.map +1 -0
- package/dist/components/mixins/connectable.js +128 -0
- package/dist/components/mixins/connectable.js.map +1 -0
- package/dist/components/mixins/data-source.js +34 -0
- package/dist/components/mixins/data-source.js.map +1 -0
- package/dist/components/mixins/html-element.js +107 -0
- package/dist/components/mixins/html-element.js.map +1 -0
- package/dist/components/mixins/move-handle.js +73 -0
- package/dist/components/mixins/move-handle.js.map +1 -0
- package/dist/components/mixins/rect-path.js +113 -0
- package/dist/components/mixins/rect-path.js.map +1 -0
- package/dist/components/mixins/value-holder.js +81 -0
- package/dist/components/mixins/value-holder.js.map +1 -0
- package/dist/components/mutater/bounds.js +68 -0
- package/dist/components/mutater/bounds.js.map +1 -0
- package/dist/components/mutater/path.js +73 -0
- package/dist/components/mutater/path.js.map +1 -0
- package/dist/components/ortholine.js +763 -0
- package/dist/components/ortholine.js.map +1 -0
- package/dist/components/outline/ellipse-outline.js +23 -0
- package/dist/components/outline/ellipse-outline.js.map +1 -0
- package/dist/components/outline/path-outline.js +48 -0
- package/dist/components/outline/path-outline.js.map +1 -0
- package/dist/components/path.js +49 -0
- package/dist/components/path.js.map +1 -0
- package/dist/components/polygon.js +91 -0
- package/dist/components/polygon.js.map +1 -0
- package/dist/components/polyline.js +114 -0
- package/dist/components/polyline.js.map +1 -0
- package/dist/components/popup.js +160 -0
- package/dist/components/popup.js.map +1 -0
- package/dist/components/rect.js +72 -0
- package/dist/components/rect.js.map +1 -0
- package/dist/components/retention/retention-manager.js +81 -0
- package/dist/components/retention/retention-manager.js.map +1 -0
- package/dist/components/root-container.js +519 -0
- package/dist/components/root-container.js.map +1 -0
- package/dist/components/ruler.js +103 -0
- package/dist/components/ruler.js.map +1 -0
- package/dist/components/shape.js +97 -0
- package/dist/components/shape.js.map +1 -0
- package/dist/components/star.js +103 -0
- package/dist/components/star.js.map +1 -0
- package/dist/components/text/substitutor.js +92 -0
- package/dist/components/text/substitutor.js.map +1 -0
- package/dist/components/text.js +21 -0
- package/dist/components/text.js.map +1 -0
- package/dist/components/triangle.js +92 -0
- package/dist/components/triangle.js.map +1 -0
- package/dist/const.js +71 -0
- package/dist/const.js.map +1 -0
- package/dist/core/collection.js +28 -0
- package/dist/core/collection.js.map +1 -0
- package/dist/core/debug.js +12 -0
- package/dist/core/debug.js.map +1 -0
- package/dist/core/deep-equals.js +112 -0
- package/dist/core/deep-equals.js.map +1 -0
- package/dist/core/dom-to-image.js +617 -0
- package/dist/core/dom-to-image.js.map +1 -0
- package/dist/core/event.js +205 -0
- package/dist/core/event.js.map +1 -0
- package/dist/core/index.js +21 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/list.js +87 -0
- package/dist/core/list.js.map +1 -0
- package/dist/core/logger.js +29 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/memoize.js +40 -0
- package/dist/core/memoize.js.map +1 -0
- package/dist/core/mixin.js +26 -0
- package/dist/core/mixin.js.map +1 -0
- package/dist/core/obj-accessor.js +26 -0
- package/dist/core/obj-accessor.js.map +1 -0
- package/dist/core/reference-map.js +147 -0
- package/dist/core/reference-map.js.map +1 -0
- package/dist/core/round-rect.js +62 -0
- package/dist/core/round-rect.js.map +1 -0
- package/dist/core/safe-round.js +10 -0
- package/dist/core/safe-round.js.map +1 -0
- package/dist/core/script-loader.js +148 -0
- package/dist/core/script-loader.js.map +1 -0
- package/dist/core/snapshot-taker.js +59 -0
- package/dist/core/snapshot-taker.js.map +1 -0
- package/dist/core/stack.js +18 -0
- package/dist/core/stack.js.map +1 -0
- package/dist/core/timecapsule.js +88 -0
- package/dist/core/timecapsule.js.map +1 -0
- package/dist/core/utils.js +309 -0
- package/dist/core/utils.js.map +1 -0
- package/dist/decorator/anchors-decorator.js +53 -0
- package/dist/decorator/anchors-decorator.js.map +1 -0
- package/dist/decorator/bouncing-arrow-decorator.js +52 -0
- package/dist/decorator/bouncing-arrow-decorator.js.map +1 -0
- package/dist/decorator/data-spread-decorator.js +69 -0
- package/dist/decorator/data-spread-decorator.js.map +1 -0
- package/dist/decorator/decotag-decorator.js +33 -0
- package/dist/decorator/decotag-decorator.js.map +1 -0
- package/dist/decorator/index.js +31 -0
- package/dist/decorator/index.js.map +1 -0
- package/dist/decorator/link-decorator.js +66 -0
- package/dist/decorator/link-decorator.js.map +1 -0
- package/dist/effect/gradation.js +37 -0
- package/dist/effect/gradation.js.map +1 -0
- package/dist/effect/index.js +23 -0
- package/dist/effect/index.js.map +1 -0
- package/dist/effect/shadow.js +33 -0
- package/dist/effect/shadow.js.map +1 -0
- package/dist/effect/turn.js +25 -0
- package/dist/effect/turn.js.map +1 -0
- package/dist/event/event-engine.js +76 -0
- package/dist/event/event-engine.js.map +1 -0
- package/dist/event/event-pump.js +92 -0
- package/dist/event/event-pump.js.map +1 -0
- package/dist/event/event-tracker.js +97 -0
- package/dist/event/event-tracker.js.map +1 -0
- package/dist/event/index.js +21 -0
- package/dist/event/index.js.map +1 -0
- package/dist/event/ua-event-handler.js +453 -0
- package/dist/event/ua-event-handler.js.map +1 -0
- package/dist/event-map/animator-handler.js +225 -0
- package/dist/event-map/animator-handler.js.map +1 -0
- package/dist/event-map/animators/animated-icon.js +265 -0
- package/dist/event-map/animators/animated-icon.js.map +1 -0
- package/dist/event-map/animators/border-highlighting.js +476 -0
- package/dist/event-map/animators/border-highlighting.js.map +1 -0
- package/dist/event-map/animators/bouncing-arrow.js +226 -0
- package/dist/event-map/animators/bouncing-arrow.js.map +1 -0
- package/dist/event-map/event-map.js +36 -0
- package/dist/event-map/event-map.js.map +1 -0
- package/dist/event-map/index.js +20 -0
- package/dist/event-map/index.js.map +1 -0
- package/dist/event-map/move-handler.js +233 -0
- package/dist/event-map/move-handler.js.map +1 -0
- package/dist/event-map/paste-handler.js +176 -0
- package/dist/event-map/paste-handler.js.map +1 -0
- package/dist/event-map/shift-handler.js +55 -0
- package/dist/event-map/shift-handler.js.map +1 -0
- package/dist/event-map/text-editor-lite.js +276 -0
- package/dist/event-map/text-editor-lite.js.map +1 -0
- package/dist/event-map/zoom-handler.js +49 -0
- package/dist/event-map/zoom-handler.js.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/layer/action/emphasize.js +42 -0
- package/dist/layer/action/emphasize.js.map +1 -0
- package/dist/layer/action/popup.js +461 -0
- package/dist/layer/action/popup.js.map +1 -0
- package/dist/layer/action/pressed.js +31 -0
- package/dist/layer/action/pressed.js.map +1 -0
- package/dist/layer/add-layer.js +180 -0
- package/dist/layer/add-layer.js.map +1 -0
- package/dist/layer/decotag-layer.js +121 -0
- package/dist/layer/decotag-layer.js.map +1 -0
- package/dist/layer/guide-layer.js +292 -0
- package/dist/layer/guide-layer.js.map +1 -0
- package/dist/layer/index.js +70 -0
- package/dist/layer/index.js.map +1 -0
- package/dist/layer/layer.js +230 -0
- package/dist/layer/layer.js.map +1 -0
- package/dist/layer/minimap-layer.js +84 -0
- package/dist/layer/minimap-layer.js.map +1 -0
- package/dist/layer/model-layer.js +465 -0
- package/dist/layer/model-layer.js.map +1 -0
- package/dist/layer/modeler/anchor-handler.js +193 -0
- package/dist/layer/modeler/anchor-handler.js.map +1 -0
- package/dist/layer/modeler/control-handler.js +95 -0
- package/dist/layer/modeler/control-handler.js.map +1 -0
- package/dist/layer/modeler/focus-outline.js +41 -0
- package/dist/layer/modeler/focus-outline.js.map +1 -0
- package/dist/layer/modeler/group-outline.js +30 -0
- package/dist/layer/modeler/group-outline.js.map +1 -0
- package/dist/layer/modeler/index.js +56 -0
- package/dist/layer/modeler/index.js.map +1 -0
- package/dist/layer/modeler/path-handler.js +300 -0
- package/dist/layer/modeler/path-handler.js.map +1 -0
- package/dist/layer/modeler/resizer.js +333 -0
- package/dist/layer/modeler/resizer.js.map +1 -0
- package/dist/layer/modeler/rotator.js +134 -0
- package/dist/layer/modeler/rotator.js.map +1 -0
- package/dist/layer/modeling-layer.js +491 -0
- package/dist/layer/modeling-layer.js.map +1 -0
- package/dist/layer/reaction-layer.js +111 -0
- package/dist/layer/reaction-layer.js.map +1 -0
- package/dist/layer/scroll-layer.js +191 -0
- package/dist/layer/scroll-layer.js.map +1 -0
- package/dist/layer/selection/selected-finder.js +96 -0
- package/dist/layer/selection/selected-finder.js.map +1 -0
- package/dist/layer/selection-layer.js +373 -0
- package/dist/layer/selection-layer.js.map +1 -0
- package/dist/layer/shift-layer.js +83 -0
- package/dist/layer/shift-layer.js.map +1 -0
- package/dist/layout/absolute.js +30 -0
- package/dist/layout/absolute.js.map +1 -0
- package/dist/layout/card.js +52 -0
- package/dist/layout/card.js.map +1 -0
- package/dist/layout/html-absolute.js +32 -0
- package/dist/layout/html-absolute.js.map +1 -0
- package/dist/layout/index.js +56 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/layout/layout.js +36 -0
- package/dist/layout/layout.js.map +1 -0
- package/dist/layout/linear-horizontal.js +56 -0
- package/dist/layout/linear-horizontal.js.map +1 -0
- package/dist/layout/linear-vertical.js +56 -0
- package/dist/layout/linear-vertical.js.map +1 -0
- package/dist/layout/table.js +106 -0
- package/dist/layout/table.js.map +1 -0
- package/dist/license/license.js +170 -0
- package/dist/license/license.js.map +1 -0
- package/dist/model/compile.js +40 -0
- package/dist/model/compile.js.map +1 -0
- package/dist/model/duplicate.js +19 -0
- package/dist/model/duplicate.js.map +1 -0
- package/dist/model/index.js +34 -0
- package/dist/model/index.js.map +1 -0
- package/dist/model/selector.js +104 -0
- package/dist/model/selector.js.map +1 -0
- package/dist/style/compile.js +14 -0
- package/dist/style/compile.js.map +1 -0
- package/dist/style/index.js +14 -0
- package/dist/style/index.js.map +1 -0
- package/dist/things-scene/api/add-start.js +18 -0
- package/dist/things-scene/api/add-start.js.map +1 -0
- package/dist/things-scene/api/add.js +71 -0
- package/dist/things-scene/api/add.js.map +1 -0
- package/dist/things-scene/api/align.js +116 -0
- package/dist/things-scene/api/align.js.map +1 -0
- package/dist/things-scene/api/center-to.js +50 -0
- package/dist/things-scene/api/center-to.js.map +1 -0
- package/dist/things-scene/api/change.js +27 -0
- package/dist/things-scene/api/change.js.map +1 -0
- package/dist/things-scene/api/clipboard.js +45 -0
- package/dist/things-scene/api/clipboard.js.map +1 -0
- package/dist/things-scene/api/distribute.js +57 -0
- package/dist/things-scene/api/distribute.js.map +1 -0
- package/dist/things-scene/api/duplicate.js +47 -0
- package/dist/things-scene/api/duplicate.js.map +1 -0
- package/dist/things-scene/api/fullscreen.js +26 -0
- package/dist/things-scene/api/fullscreen.js.map +1 -0
- package/dist/things-scene/api/group.js +91 -0
- package/dist/things-scene/api/group.js.map +1 -0
- package/dist/things-scene/api/ids.js +28 -0
- package/dist/things-scene/api/ids.js.map +1 -0
- package/dist/things-scene/api/index.js +192 -0
- package/dist/things-scene/api/index.js.map +1 -0
- package/dist/things-scene/api/listener.js +69 -0
- package/dist/things-scene/api/listener.js.map +1 -0
- package/dist/things-scene/api/paste-start.js +27 -0
- package/dist/things-scene/api/paste-start.js.map +1 -0
- package/dist/things-scene/api/place.js +98 -0
- package/dist/things-scene/api/place.js.map +1 -0
- package/dist/things-scene/api/remove.js +57 -0
- package/dist/things-scene/api/remove.js.map +1 -0
- package/dist/things-scene/api/symmetry.js +47 -0
- package/dist/things-scene/api/symmetry.js.map +1 -0
- package/dist/things-scene/api/to-data-url.js +76 -0
- package/dist/things-scene/api/to-data-url.js.map +1 -0
- package/dist/things-scene/api/zorder.js +68 -0
- package/dist/things-scene/api/zorder.js.map +1 -0
- package/dist/things-scene/application-context.js +168 -0
- package/dist/things-scene/application-context.js.map +1 -0
- package/dist/things-scene/config.js +18 -0
- package/dist/things-scene/config.js.map +1 -0
- package/dist/things-scene/create.js +67 -0
- package/dist/things-scene/create.js.map +1 -0
- package/dist/things-scene/fps.js +26 -0
- package/dist/things-scene/fps.js.map +1 -0
- package/dist/things-scene/index.js +152 -0
- package/dist/things-scene/index.js.map +1 -0
- package/dist/things-scene/polyfill.js +111 -0
- package/dist/things-scene/polyfill.js.map +1 -0
- package/dist/things-scene/scene.js +442 -0
- package/dist/things-scene/scene.js.map +1 -0
- package/dist/things-scene/version.js +12 -0
- package/dist/things-scene/version.js.map +1 -0
- package/package.json +8 -6
- package/things-scene.d.ts +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"obj-accessor.js","names":["_jsonataEs","_interopRequireDefault","require","e","__esModule","default","SELF","o","buildAccessor","accessor","expression","jsonata","evaluate","err","console","error"],"sources":["../../src/core/obj-accessor.js"],"sourcesContent":["import jsonata from 'jsonata/jsonata-es5.js'\n\nconst SELF = function (o) {\n return o\n}\n\nexport default function buildAccessor(accessor) {\n if (!accessor) {\n return SELF\n }\n\n try {\n var expression = jsonata(accessor)\n\n return function (o) {\n return expression.evaluate(o)\n }\n } catch (err) {\n console.error(err)\n return SELF\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA4C,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE5C,MAAMG,IAAI,GAAG,SAAAA,CAAUC,CAAC,EAAE;EACxB,OAAOA,CAAC;AACV,CAAC;AAEc,SAASC,aAAaA,CAACC,QAAQ,EAAE;EAC9C,IAAI,CAACA,QAAQ,EAAE;IACb,OAAOH,IAAI;EACb;EAEA,IAAI;IACF,IAAII,UAAU,GAAG,IAAAC,kBAAO,EAACF,QAAQ,CAAC;IAElC,OAAO,UAAUF,CAAC,EAAE;MAClB,OAAOG,UAAU,CAACE,QAAQ,CAACL,CAAC,CAAC;IAC/B,CAAC;EACH,CAAC,CAAC,OAAOM,GAAG,EAAE;IACZC,OAAO,CAACC,KAAK,CAACF,GAAG,CAAC;IAClB,OAAOP,IAAI;EACb;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _logger = require("./logger.js");
|
|
8
|
+
/*
|
|
9
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
var reference_count = 0;
|
|
13
|
+
const finalizationRegistry = new FinalizationRegistry(() => {
|
|
14
|
+
reference_count--;
|
|
15
|
+
});
|
|
16
|
+
class ReferenceMap {
|
|
17
|
+
static get residents() {
|
|
18
|
+
return reference_count;
|
|
19
|
+
}
|
|
20
|
+
static get residentsCount() {
|
|
21
|
+
return reference_count;
|
|
22
|
+
}
|
|
23
|
+
constructor(creator, disposer) {
|
|
24
|
+
this.counters = {};
|
|
25
|
+
this.references = {};
|
|
26
|
+
this.creator = creator;
|
|
27
|
+
this.disposer = disposer;
|
|
28
|
+
reference_count++;
|
|
29
|
+
finalizationRegistry.register(this, reference_count);
|
|
30
|
+
}
|
|
31
|
+
dispose() {
|
|
32
|
+
if (this.disposer) {
|
|
33
|
+
for (let id in this.references) this.disposer.call(null, id, this.references[id]);
|
|
34
|
+
}
|
|
35
|
+
delete this.references;
|
|
36
|
+
delete this.counters;
|
|
37
|
+
}
|
|
38
|
+
get ids() {
|
|
39
|
+
return Object.keys(this.references);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* 제공된 생성자를 이용해서 Scene 생성하기만 한다. */
|
|
43
|
+
create(id) {
|
|
44
|
+
var self = this;
|
|
45
|
+
return new Promise(function (resolve, reject) {
|
|
46
|
+
function _resolve(target) {
|
|
47
|
+
target.release = function () {
|
|
48
|
+
this.disposer && this.disposer.call(null, id, target);
|
|
49
|
+
delete target.release;
|
|
50
|
+
(0, _logger.debug)('RELEASED', id);
|
|
51
|
+
};
|
|
52
|
+
resolve(target);
|
|
53
|
+
}
|
|
54
|
+
if (!self.creator) {
|
|
55
|
+
reject(Error('Reference id(' + id + ') could not be created. Reference creator should be defined.'));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
self.creator.call(null, id, function (target) {
|
|
59
|
+
_resolve(target);
|
|
60
|
+
}, function (error) {
|
|
61
|
+
reject(error);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
add(id, target) {
|
|
66
|
+
var self = this;
|
|
67
|
+
var promise = new Promise(function (resolve, reject) {
|
|
68
|
+
var ref = self.references[id];
|
|
69
|
+
if (ref) {
|
|
70
|
+
if (ref === target) reject(Error('Reference ID and target duplicate'));else if (target) reject(Error('Reference ID duplicate'));else resolve(ref);
|
|
71
|
+
} else {
|
|
72
|
+
function _resolve(target) {
|
|
73
|
+
target.release = function () {
|
|
74
|
+
self.release(this);
|
|
75
|
+
};
|
|
76
|
+
self.references[id] = target;
|
|
77
|
+
self.counters[id] = 1;
|
|
78
|
+
resolve(target);
|
|
79
|
+
}
|
|
80
|
+
if (target) {
|
|
81
|
+
_resolve(target);
|
|
82
|
+
} else {
|
|
83
|
+
if (!self.creator) {
|
|
84
|
+
reject(Error('Reference id(' + id + ') is not allowed. Reference creator should be defined.'));
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
self.creator.call(null, id, function (target) {
|
|
88
|
+
_resolve(target);
|
|
89
|
+
}, function (error) {
|
|
90
|
+
reject(error);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
if (!this.references[id]) {
|
|
96
|
+
this.references[id] = promise;
|
|
97
|
+
}
|
|
98
|
+
return promise;
|
|
99
|
+
}
|
|
100
|
+
async get(id, createIf) {
|
|
101
|
+
var ref = this.references[id];
|
|
102
|
+
if (ref) {
|
|
103
|
+
if (!(ref instanceof Promise)) {
|
|
104
|
+
if (!(id in this.counters)) {
|
|
105
|
+
throw new Error('No Reference Count');
|
|
106
|
+
}
|
|
107
|
+
this.counters[id]++;
|
|
108
|
+
return ref;
|
|
109
|
+
}
|
|
110
|
+
if (createIf) {
|
|
111
|
+
/* createIf 인 경우에만, ref가 아직 Promise이면, 기다린다. */
|
|
112
|
+
ref = await ref;
|
|
113
|
+
this.counters[id]++;
|
|
114
|
+
return ref;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (createIf) {
|
|
118
|
+
return await this.add(id);
|
|
119
|
+
}
|
|
120
|
+
throw new Error('No References for ' + id);
|
|
121
|
+
}
|
|
122
|
+
_id(target) {
|
|
123
|
+
for (let id in this.references) {
|
|
124
|
+
let ref = this.references[id];
|
|
125
|
+
if (ref === target) return id;
|
|
126
|
+
}
|
|
127
|
+
return -1;
|
|
128
|
+
}
|
|
129
|
+
release(target) {
|
|
130
|
+
var id = this._id(target);
|
|
131
|
+
var ref = this.references[id];
|
|
132
|
+
if (!ref) {
|
|
133
|
+
(0, _logger.error)('No Referenced ID');
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
this.counters[id]--;
|
|
137
|
+
if (this.counters[id] == 0) {
|
|
138
|
+
this.disposer && this.disposer.call(null, id, ref);
|
|
139
|
+
delete this.references[id];
|
|
140
|
+
delete this.counters[id];
|
|
141
|
+
delete target.release;
|
|
142
|
+
(0, _logger.debug)('RELEASED', id);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
exports.default = ReferenceMap;
|
|
147
|
+
//# sourceMappingURL=reference-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-map.js","names":["_logger","require","reference_count","finalizationRegistry","FinalizationRegistry","ReferenceMap","residents","residentsCount","constructor","creator","disposer","counters","references","register","dispose","id","call","ids","Object","keys","create","self","Promise","resolve","reject","_resolve","target","release","debug","Error","error","add","promise","ref","get","createIf","_id","exports","default"],"sources":["../../src/core/reference-map.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { debug, error } from './logger.js'\n\nvar reference_count = 0\nconst finalizationRegistry = new FinalizationRegistry(() => {\n reference_count--\n})\n\nexport default class ReferenceMap {\n static get residents() {\n return reference_count\n }\n\n static get residentsCount() {\n return reference_count\n }\n\n constructor(creator, disposer) {\n this.counters = {}\n this.references = {}\n this.creator = creator\n this.disposer = disposer\n\n reference_count++\n finalizationRegistry.register(this, reference_count)\n }\n\n dispose() {\n if (this.disposer) {\n for (let id in this.references) this.disposer.call(null, id, this.references[id])\n }\n\n delete this.references\n delete this.counters\n }\n\n get ids() {\n return Object.keys(this.references)\n }\n\n /* 제공된 생성자를 이용해서 Scene 생성하기만 한다. */\n create(id) {\n var self = this\n\n return new Promise(function (resolve, reject) {\n function _resolve(target) {\n target.release = function () {\n this.disposer && this.disposer.call(null, id, target)\n delete target.release\n debug('RELEASED', id)\n }\n\n resolve(target)\n }\n\n if (!self.creator) {\n reject(Error('Reference id(' + id + ') could not be created. Reference creator should be defined.'))\n return\n }\n\n self.creator.call(\n null,\n id,\n function (target) {\n _resolve(target)\n },\n function (error) {\n reject(error)\n }\n )\n })\n }\n\n add(id, target) {\n var self = this\n\n var promise = new Promise(function (resolve, reject) {\n var ref = self.references[id]\n\n if (ref) {\n if (ref === target) reject(Error('Reference ID and target duplicate'))\n else if (target) reject(Error('Reference ID duplicate'))\n else resolve(ref)\n } else {\n function _resolve(target) {\n target.release = function () {\n self.release(this)\n }\n\n self.references[id] = target\n self.counters[id] = 1\n\n resolve(target)\n }\n\n if (target) {\n _resolve(target)\n } else {\n if (!self.creator) {\n reject(Error('Reference id(' + id + ') is not allowed. Reference creator should be defined.'))\n return\n }\n\n self.creator.call(\n null,\n id,\n function (target) {\n _resolve(target)\n },\n function (error) {\n reject(error)\n }\n )\n }\n }\n })\n\n if (!this.references[id]) {\n this.references[id] = promise\n }\n\n return promise\n }\n\n async get(id, createIf) {\n var ref = this.references[id]\n\n if (ref) {\n if (!(ref instanceof Promise)) {\n if (!(id in this.counters)) {\n throw new Error('No Reference Count')\n }\n\n this.counters[id]++\n return ref\n }\n\n if (createIf) {\n /* createIf 인 경우에만, ref가 아직 Promise이면, 기다린다. */\n ref = await ref\n this.counters[id]++\n return ref\n }\n }\n\n if (createIf) {\n return await this.add(id)\n }\n\n throw new Error('No References for ' + id)\n }\n\n _id(target) {\n for (let id in this.references) {\n let ref = this.references[id]\n if (ref === target) return id\n }\n\n return -1\n }\n\n release(target) {\n var id = this._id(target)\n var ref = this.references[id]\n\n if (!ref) {\n error('No Referenced ID')\n return\n }\n\n this.counters[id]--\n\n if (this.counters[id] == 0) {\n this.disposer && this.disposer.call(null, id, ref)\n delete this.references[id]\n delete this.counters[id]\n delete target.release\n debug('RELEASED', id)\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.roundRect = roundRect;
|
|
7
|
+
/**
|
|
8
|
+
* Draws a rounded rectangle using the current state of the canvas.
|
|
9
|
+
* If you omit the last three params, it will draw a rectangle
|
|
10
|
+
* outline with a 5 pixel border radius
|
|
11
|
+
* @param {CanvasRenderingContext2D} context
|
|
12
|
+
* @param {Number} x The top left x coordinate
|
|
13
|
+
* @param {Number} y The top left y coordinate
|
|
14
|
+
* @param {Number} width The width of the rectangle
|
|
15
|
+
* @param {Number} height The height of the rectangle
|
|
16
|
+
* @param {Number|Array<Number>} [radius = 0] The corner radius; It can also be an object
|
|
17
|
+
* to specify different radii for corners
|
|
18
|
+
* @param {Number} [radius.tl = 0] Top left
|
|
19
|
+
* @param {Number} [radius.tr = 0] Top right
|
|
20
|
+
* @param {Number} [radius.br = 0] Bottom right
|
|
21
|
+
* @param {Number} [radius.bl = 0] Bottom left
|
|
22
|
+
* @param {Boolean} [fill = false] Whether to fill the rectangle.
|
|
23
|
+
* @param {Boolean} [stroke = true] Whether to stroke the rectangle.
|
|
24
|
+
*/
|
|
25
|
+
function roundRect(context, x, y, width, height, radius = 0, fill = false, stroke = true) {
|
|
26
|
+
if (typeof radius === 'number') {
|
|
27
|
+
radius = {
|
|
28
|
+
tl: radius,
|
|
29
|
+
tr: radius,
|
|
30
|
+
br: radius,
|
|
31
|
+
bl: radius
|
|
32
|
+
};
|
|
33
|
+
} else {
|
|
34
|
+
radius = {
|
|
35
|
+
...{
|
|
36
|
+
tl: 0,
|
|
37
|
+
tr: 0,
|
|
38
|
+
br: 0,
|
|
39
|
+
bl: 0
|
|
40
|
+
},
|
|
41
|
+
...radius
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
context.beginPath();
|
|
45
|
+
context.moveTo(x + radius.tl, y);
|
|
46
|
+
context.lineTo(x + width - radius.tr, y);
|
|
47
|
+
context.quadraticCurveTo(x + width, y, x + width, y + radius.tr);
|
|
48
|
+
context.lineTo(x + width, y + height - radius.br);
|
|
49
|
+
context.quadraticCurveTo(x + width, y + height, x + width - radius.br, y + height);
|
|
50
|
+
context.lineTo(x + radius.bl, y + height);
|
|
51
|
+
context.quadraticCurveTo(x, y + height, x, y + height - radius.bl);
|
|
52
|
+
context.lineTo(x, y + radius.tl);
|
|
53
|
+
context.quadraticCurveTo(x, y, x + radius.tl, y);
|
|
54
|
+
context.closePath();
|
|
55
|
+
if (fill) {
|
|
56
|
+
context.fill();
|
|
57
|
+
}
|
|
58
|
+
if (stroke) {
|
|
59
|
+
context.stroke();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=round-rect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"round-rect.js","names":["roundRect","context","x","y","width","height","radius","fill","stroke","tl","tr","br","bl","beginPath","moveTo","lineTo","quadraticCurveTo","closePath"],"sources":["../../src/core/round-rect.js"],"sourcesContent":["/**\n * Draws a rounded rectangle using the current state of the canvas.\n * If you omit the last three params, it will draw a rectangle\n * outline with a 5 pixel border radius\n * @param {CanvasRenderingContext2D} context\n * @param {Number} x The top left x coordinate\n * @param {Number} y The top left y coordinate\n * @param {Number} width The width of the rectangle\n * @param {Number} height The height of the rectangle\n * @param {Number|Array<Number>} [radius = 0] The corner radius; It can also be an object\n * to specify different radii for corners\n * @param {Number} [radius.tl = 0] Top left\n * @param {Number} [radius.tr = 0] Top right\n * @param {Number} [radius.br = 0] Bottom right\n * @param {Number} [radius.bl = 0] Bottom left\n * @param {Boolean} [fill = false] Whether to fill the rectangle.\n * @param {Boolean} [stroke = true] Whether to stroke the rectangle.\n */\nexport function roundRect(context, x, y, width, height, radius = 0, fill = false, stroke = true) {\n if (typeof radius === 'number') {\n radius = { tl: radius, tr: radius, br: radius, bl: radius }\n } else {\n radius = { ...{ tl: 0, tr: 0, br: 0, bl: 0 }, ...radius }\n }\n\n context.beginPath()\n context.moveTo(x + radius.tl, y)\n context.lineTo(x + width - radius.tr, y)\n context.quadraticCurveTo(x + width, y, x + width, y + radius.tr)\n context.lineTo(x + width, y + height - radius.br)\n context.quadraticCurveTo(x + width, y + height, x + width - radius.br, y + height)\n context.lineTo(x + radius.bl, y + height)\n context.quadraticCurveTo(x, y + height, x, y + height - radius.bl)\n context.lineTo(x, y + radius.tl)\n context.quadraticCurveTo(x, y, x + radius.tl, y)\n context.closePath()\n\n if (fill) {\n context.fill()\n }\n\n if (stroke) {\n context.stroke()\n }\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,SAASA,CAACC,OAAO,EAAEC,CAAC,EAAEC,CAAC,EAAEC,KAAK,EAAEC,MAAM,EAAEC,MAAM,GAAG,CAAC,EAAEC,IAAI,GAAG,KAAK,EAAEC,MAAM,GAAG,IAAI,EAAE;EAC/F,IAAI,OAAOF,MAAM,KAAK,QAAQ,EAAE;IAC9BA,MAAM,GAAG;MAAEG,EAAE,EAAEH,MAAM;MAAEI,EAAE,EAAEJ,MAAM;MAAEK,EAAE,EAAEL,MAAM;MAAEM,EAAE,EAAEN;IAAO,CAAC;EAC7D,CAAC,MAAM;IACLA,MAAM,GAAG;MAAE,GAAG;QAAEG,EAAE,EAAE,CAAC;QAAEC,EAAE,EAAE,CAAC;QAAEC,EAAE,EAAE,CAAC;QAAEC,EAAE,EAAE;MAAE,CAAC;MAAE,GAAGN;IAAO,CAAC;EAC3D;EAEAL,OAAO,CAACY,SAAS,CAAC,CAAC;EACnBZ,OAAO,CAACa,MAAM,CAACZ,CAAC,GAAGI,MAAM,CAACG,EAAE,EAAEN,CAAC,CAAC;EAChCF,OAAO,CAACc,MAAM,CAACb,CAAC,GAAGE,KAAK,GAAGE,MAAM,CAACI,EAAE,EAAEP,CAAC,CAAC;EACxCF,OAAO,CAACe,gBAAgB,CAACd,CAAC,GAAGE,KAAK,EAAED,CAAC,EAAED,CAAC,GAAGE,KAAK,EAAED,CAAC,GAAGG,MAAM,CAACI,EAAE,CAAC;EAChET,OAAO,CAACc,MAAM,CAACb,CAAC,GAAGE,KAAK,EAAED,CAAC,GAAGE,MAAM,GAAGC,MAAM,CAACK,EAAE,CAAC;EACjDV,OAAO,CAACe,gBAAgB,CAACd,CAAC,GAAGE,KAAK,EAAED,CAAC,GAAGE,MAAM,EAAEH,CAAC,GAAGE,KAAK,GAAGE,MAAM,CAACK,EAAE,EAAER,CAAC,GAAGE,MAAM,CAAC;EAClFJ,OAAO,CAACc,MAAM,CAACb,CAAC,GAAGI,MAAM,CAACM,EAAE,EAAET,CAAC,GAAGE,MAAM,CAAC;EACzCJ,OAAO,CAACe,gBAAgB,CAACd,CAAC,EAAEC,CAAC,GAAGE,MAAM,EAAEH,CAAC,EAAEC,CAAC,GAAGE,MAAM,GAAGC,MAAM,CAACM,EAAE,CAAC;EAClEX,OAAO,CAACc,MAAM,CAACb,CAAC,EAAEC,CAAC,GAAGG,MAAM,CAACG,EAAE,CAAC;EAChCR,OAAO,CAACe,gBAAgB,CAACd,CAAC,EAAEC,CAAC,EAAED,CAAC,GAAGI,MAAM,CAACG,EAAE,EAAEN,CAAC,CAAC;EAChDF,OAAO,CAACgB,SAAS,CAAC,CAAC;EAEnB,IAAIV,IAAI,EAAE;IACRN,OAAO,CAACM,IAAI,CAAC,CAAC;EAChB;EAEA,IAAIC,MAAM,EAAE;IACVP,OAAO,CAACO,MAAM,CAAC,CAAC;EAClB;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.safeRound = safeRound;
|
|
7
|
+
function safeRound(round, width, height) {
|
|
8
|
+
return Math.max(0, Math.min(round, Math.min(height, width) / 2));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=safe-round.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-round.js","names":["safeRound","round","width","height","Math","max","min"],"sources":["../../src/core/safe-round.js"],"sourcesContent":["export function safeRound(round, width, height) {\n return Math.max(0, Math.min(round, Math.min(height, width) / 2))\n}\n"],"mappings":";;;;;;AAAO,SAASA,SAASA,CAACC,KAAK,EAAEC,KAAK,EAAEC,MAAM,EAAE;EAC9C,OAAOC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAACL,KAAK,EAAEG,IAAI,CAACE,GAAG,CAACH,MAAM,EAAED,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE","ignoreList":[]}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
/*
|
|
8
|
+
* 1. SCRIPTS, STYLES 에는 각 소스별 상태를 관리한다.
|
|
9
|
+
* SCRIPTS, STYLES : {
|
|
10
|
+
* 'http://echarts.baidu.com/dist/echarts.min.js': true | false (true means loaded, false means not loaded yet)
|
|
11
|
+
* }
|
|
12
|
+
*
|
|
13
|
+
* 2. PROMISES : 각 소스군별 pending resolver, reject 을 관리한다.
|
|
14
|
+
* PROMISES: [{
|
|
15
|
+
* resolve,
|
|
16
|
+
* reject,
|
|
17
|
+
* srcs: ['src1', 'src2']
|
|
18
|
+
* }]
|
|
19
|
+
*
|
|
20
|
+
* [특징]
|
|
21
|
+
* 1. CORS 제약에서 자유롭다.
|
|
22
|
+
* 2. 같은 스크립트를 반복해서 로드하지 않는다.
|
|
23
|
+
* 3. 로드에 실패한 스크립트도 다시 반복해서 로드를 시도할 수 있다.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
// SystemJS를 활용하는 경우에는 다음과 같이 import 할 수 있다.
|
|
27
|
+
//
|
|
28
|
+
// import System from 'systemjs/dist/system-production'
|
|
29
|
+
|
|
30
|
+
var SCRIPTS = {};
|
|
31
|
+
var STYLES = {};
|
|
32
|
+
var PROMISES = [];
|
|
33
|
+
function onload(e) {
|
|
34
|
+
var types = e.target.tagName == 'SCRIPT' ? SCRIPTS : STYLES;
|
|
35
|
+
var src = e.target.src || e.target.href;
|
|
36
|
+
types[src] = true;
|
|
37
|
+
PROMISES.forEach((ready, index) => {
|
|
38
|
+
let {
|
|
39
|
+
resolve,
|
|
40
|
+
scripts,
|
|
41
|
+
styles
|
|
42
|
+
} = ready;
|
|
43
|
+
if (types == SCRIPTS) {
|
|
44
|
+
let idx = scripts.indexOf(src);
|
|
45
|
+
if (idx > -1 && idx < scripts.length - 1) request_script(scripts[idx + 1]);
|
|
46
|
+
}
|
|
47
|
+
for (let i = 0; i < scripts.length; i++) if (!SCRIPTS[scripts[i]]) return;
|
|
48
|
+
if (styles) {
|
|
49
|
+
for (let i = 0; i < styles.length; i++) if (!STYLES[styles[i]]) return;
|
|
50
|
+
}
|
|
51
|
+
resolve();
|
|
52
|
+
PROMISES[index] = null;
|
|
53
|
+
});
|
|
54
|
+
PROMISES = PROMISES.filter(Boolean);
|
|
55
|
+
}
|
|
56
|
+
function onerror(e) {
|
|
57
|
+
var src = e.target.src;
|
|
58
|
+
var types = e.target.tagName == 'SCRIPT' ? SCRIPTS : STYLES;
|
|
59
|
+
PROMISES.forEach((ready, index) => {
|
|
60
|
+
let {
|
|
61
|
+
reject,
|
|
62
|
+
scripts,
|
|
63
|
+
styles
|
|
64
|
+
} = ready;
|
|
65
|
+
let done = false;
|
|
66
|
+
if (types === SCRIPTS) {
|
|
67
|
+
for (let i = 0; i < scripts.length; i++) {
|
|
68
|
+
if (scripts[i] == src) {
|
|
69
|
+
done = true;
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
} else if (styles) {
|
|
74
|
+
for (let i = 0; i < styles.length; i++) {
|
|
75
|
+
if (styles[i] == src) {
|
|
76
|
+
done = true;
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (done) {
|
|
82
|
+
reject(e);
|
|
83
|
+
PROMISES[index] = null;
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
PROMISES = PROMISES.filter(Boolean);
|
|
87
|
+
delete types[src];
|
|
88
|
+
document.head.removeChild(e.target);
|
|
89
|
+
}
|
|
90
|
+
function request_script(src) {
|
|
91
|
+
SCRIPTS[src] = false;
|
|
92
|
+
var script = document.createElement('script');
|
|
93
|
+
script.onload = onload;
|
|
94
|
+
script.onerror = onerror;
|
|
95
|
+
script.type = 'text/javascript';
|
|
96
|
+
script.src = src;
|
|
97
|
+
document.head.appendChild(script);
|
|
98
|
+
}
|
|
99
|
+
function request_style(src) {
|
|
100
|
+
STYLES[src] = false;
|
|
101
|
+
var link = document.createElement('link');
|
|
102
|
+
link.onload = onload;
|
|
103
|
+
link.onerror = onerror;
|
|
104
|
+
link.type = 'text/css';
|
|
105
|
+
link.rel = 'stylesheet';
|
|
106
|
+
link.media = 'screen,print';
|
|
107
|
+
link.href = src;
|
|
108
|
+
document.head.appendChild(link);
|
|
109
|
+
}
|
|
110
|
+
class ScriptLoader {
|
|
111
|
+
static load(scripts, styles) {
|
|
112
|
+
if (typeof scripts == 'string') scripts = [scripts];
|
|
113
|
+
if (typeof styles == 'string') styles = [styles];
|
|
114
|
+
return new Promise(function (resolve, reject) {
|
|
115
|
+
if (scripts && !(scripts instanceof Array) || styles && !(styles instanceof Array)) {
|
|
116
|
+
reject('invalid sources for load');
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/* check state of each src */
|
|
121
|
+
var done = true;
|
|
122
|
+
|
|
123
|
+
// style first
|
|
124
|
+
styles && styles.forEach(src => {
|
|
125
|
+
if (!STYLES.hasOwnProperty(src)) request_style(src);
|
|
126
|
+
if (!STYLES[src]) done = false;
|
|
127
|
+
});
|
|
128
|
+
var first;
|
|
129
|
+
if (scripts && scripts.length > 0) {
|
|
130
|
+
scripts.forEach(src => {
|
|
131
|
+
if (!SCRIPTS.hasOwnProperty(src)) first = first || src;else if (!SCRIPTS[src]) done = false;
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
if (first) request_script(first);else if (done) {
|
|
135
|
+
resolve();
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
PROMISES.push({
|
|
139
|
+
resolve,
|
|
140
|
+
reject,
|
|
141
|
+
scripts,
|
|
142
|
+
styles
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
exports.default = ScriptLoader;
|
|
148
|
+
//# sourceMappingURL=script-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-loader.js","names":["SCRIPTS","STYLES","PROMISES","onload","e","types","target","tagName","src","href","forEach","ready","index","resolve","scripts","styles","idx","indexOf","length","request_script","i","filter","Boolean","onerror","reject","done","document","head","removeChild","script","createElement","type","appendChild","request_style","link","rel","media","ScriptLoader","load","Promise","Array","hasOwnProperty","first","push","exports","default"],"sources":["../../src/core/script-loader.js"],"sourcesContent":["/*\n * 1. SCRIPTS, STYLES 에는 각 소스별 상태를 관리한다.\n * SCRIPTS, STYLES : {\n * 'http://echarts.baidu.com/dist/echarts.min.js': true | false (true means loaded, false means not loaded yet)\n * }\n *\n * 2. PROMISES : 각 소스군별 pending resolver, reject 을 관리한다.\n * PROMISES: [{\n * resolve,\n * reject,\n * srcs: ['src1', 'src2']\n * }]\n *\n * [특징]\n * 1. CORS 제약에서 자유롭다.\n * 2. 같은 스크립트를 반복해서 로드하지 않는다.\n * 3. 로드에 실패한 스크립트도 다시 반복해서 로드를 시도할 수 있다.\n */\n\n// SystemJS를 활용하는 경우에는 다음과 같이 import 할 수 있다.\n//\n// import System from 'systemjs/dist/system-production'\n\nvar SCRIPTS = {}\nvar STYLES = {}\n\nvar PROMISES = []\n\nfunction onload(e) {\n var types = e.target.tagName == 'SCRIPT' ? SCRIPTS : STYLES\n var src = e.target.src || e.target.href\n\n types[src] = true\n\n PROMISES.forEach((ready, index) => {\n let { resolve, scripts, styles } = ready\n\n if (types == SCRIPTS) {\n let idx = scripts.indexOf(src)\n if (idx > -1 && idx < scripts.length - 1) request_script(scripts[idx + 1])\n }\n\n for (let i = 0; i < scripts.length; i++) if (!SCRIPTS[scripts[i]]) return\n\n if (styles) {\n for (let i = 0; i < styles.length; i++) if (!STYLES[styles[i]]) return\n }\n\n resolve()\n\n PROMISES[index] = null\n })\n\n PROMISES = PROMISES.filter(Boolean)\n}\n\nfunction onerror(e) {\n var src = e.target.src\n var types = e.target.tagName == 'SCRIPT' ? SCRIPTS : STYLES\n\n PROMISES.forEach((ready, index) => {\n let { reject, scripts, styles } = ready\n\n let done = false\n\n if (types === SCRIPTS) {\n for (let i = 0; i < scripts.length; i++) {\n if (scripts[i] == src) {\n done = true\n break\n }\n }\n } else if (styles) {\n for (let i = 0; i < styles.length; i++) {\n if (styles[i] == src) {\n done = true\n break\n }\n }\n }\n\n if (done) {\n reject(e)\n\n PROMISES[index] = null\n }\n })\n\n PROMISES = PROMISES.filter(Boolean)\n\n delete types[src]\n document.head.removeChild(e.target)\n}\n\nfunction request_script(src) {\n SCRIPTS[src] = false\n\n var script = document.createElement('script')\n script.onload = onload\n script.onerror = onerror\n\n script.type = 'text/javascript'\n script.src = src\n document.head.appendChild(script)\n}\n\nfunction request_style(src) {\n STYLES[src] = false\n\n var link = document.createElement('link')\n link.onload = onload\n link.onerror = onerror\n\n link.type = 'text/css'\n link.rel = 'stylesheet'\n link.media = 'screen,print'\n link.href = src\n\n document.head.appendChild(link)\n}\n\nexport default class ScriptLoader {\n static load(scripts, styles) {\n if (typeof scripts == 'string') scripts = [scripts]\n if (typeof styles == 'string') styles = [styles]\n\n return new Promise(function (resolve, reject) {\n if ((scripts && !(scripts instanceof Array)) || (styles && !(styles instanceof Array))) {\n reject('invalid sources for load')\n return\n }\n\n /* check state of each src */\n var done = true\n\n // style first\n styles &&\n styles.forEach(src => {\n if (!STYLES.hasOwnProperty(src)) request_style(src)\n\n if (!STYLES[src]) done = false\n })\n\n var first\n if (scripts && scripts.length > 0) {\n scripts.forEach(src => {\n if (!SCRIPTS.hasOwnProperty(src)) first = first || src\n else if (!SCRIPTS[src]) done = false\n })\n }\n\n if (first) request_script(first)\n else if (done) {\n resolve()\n return\n }\n\n PROMISES.push({ resolve, reject, scripts, styles })\n })\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _utils = require("./utils.js");
|
|
8
|
+
/*
|
|
9
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
var debouncer = (0, _utils.debounce)(taker => {
|
|
13
|
+
if (!taker.brake) {
|
|
14
|
+
taker.take();
|
|
15
|
+
}
|
|
16
|
+
}, 1000, {
|
|
17
|
+
leading: true,
|
|
18
|
+
trailing: false
|
|
19
|
+
});
|
|
20
|
+
function take_snapshot(taker) {
|
|
21
|
+
if (taker.brake || !taker.dirty) return;
|
|
22
|
+
debouncer(taker);
|
|
23
|
+
}
|
|
24
|
+
class SnapshotTaker {
|
|
25
|
+
constructor(state_holder, timecapsule) {
|
|
26
|
+
this.brake = false;
|
|
27
|
+
this.dirty = false;
|
|
28
|
+
this.state_holder = state_holder;
|
|
29
|
+
this.timecapsule = timecapsule;
|
|
30
|
+
this.timecapsule.snapshot_taker = this;
|
|
31
|
+
}
|
|
32
|
+
dispose() {
|
|
33
|
+
delete this.state_holder;
|
|
34
|
+
delete this.timecapsule;
|
|
35
|
+
}
|
|
36
|
+
touch() {
|
|
37
|
+
this.dirty = true;
|
|
38
|
+
take_snapshot(this);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* 모든 조건에 관계없이 현재 상태를 snapshot으로 취한다. */
|
|
42
|
+
take(force) {
|
|
43
|
+
if (this.dirty || force) {
|
|
44
|
+
this.timecapsule.snapshot(this.state_holder.state);
|
|
45
|
+
this.dirty = false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
get brake() {
|
|
49
|
+
return this._brake;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* 마우스를 드래깅하는 동안, 보통 brake 를 ON 시킨다. */
|
|
53
|
+
set brake(brake) {
|
|
54
|
+
this._brake = !!brake;
|
|
55
|
+
take_snapshot(this);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.default = SnapshotTaker;
|
|
59
|
+
//# sourceMappingURL=snapshot-taker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-taker.js","names":["_utils","require","debouncer","debounce","taker","brake","take","leading","trailing","take_snapshot","dirty","SnapshotTaker","constructor","state_holder","timecapsule","snapshot_taker","dispose","touch","force","snapshot","state","_brake","exports","default"],"sources":["../../src/core/snapshot-taker.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { debounce } from './utils.js'\n\nvar debouncer = debounce(\n taker => {\n if (!taker.brake) {\n taker.take()\n }\n },\n 1000,\n { leading: true, trailing: false }\n)\n\nfunction take_snapshot(taker) {\n if (taker.brake || !taker.dirty) return\n debouncer(taker)\n}\n\nexport default class SnapshotTaker {\n constructor(state_holder, timecapsule) {\n this.brake = false\n this.dirty = false\n this.state_holder = state_holder\n this.timecapsule = timecapsule\n this.timecapsule.snapshot_taker = this\n }\n\n dispose() {\n delete this.state_holder\n delete this.timecapsule\n }\n\n touch() {\n this.dirty = true\n take_snapshot(this)\n }\n\n /* 모든 조건에 관계없이 현재 상태를 snapshot으로 취한다. */\n take(force) {\n if (this.dirty || force) {\n this.timecapsule.snapshot(this.state_holder.state)\n this.dirty = false\n }\n }\n\n get brake() {\n return this._brake\n }\n\n /* 마우스를 드래깅하는 동안, 보통 brake 를 ON 시킨다. */\n set brake(brake) {\n this._brake = !!brake\n take_snapshot(this)\n }\n}\n"],"mappings":";;;;;;AAIA,IAAAA,MAAA,GAAAC,OAAA;AAJA;AACA;AACA;;AAIA,IAAIC,SAAS,GAAG,IAAAC,eAAQ,EACtBC,KAAK,IAAI;EACP,IAAI,CAACA,KAAK,CAACC,KAAK,EAAE;IAChBD,KAAK,CAACE,IAAI,CAAC,CAAC;EACd;AACF,CAAC,EACD,IAAI,EACJ;EAAEC,OAAO,EAAE,IAAI;EAAEC,QAAQ,EAAE;AAAM,CACnC,CAAC;AAED,SAASC,aAAaA,CAACL,KAAK,EAAE;EAC5B,IAAIA,KAAK,CAACC,KAAK,IAAI,CAACD,KAAK,CAACM,KAAK,EAAE;EACjCR,SAAS,CAACE,KAAK,CAAC;AAClB;AAEe,MAAMO,aAAa,CAAC;EACjCC,WAAWA,CAACC,YAAY,EAAEC,WAAW,EAAE;IACrC,IAAI,CAACT,KAAK,GAAG,KAAK;IAClB,IAAI,CAACK,KAAK,GAAG,KAAK;IAClB,IAAI,CAACG,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACA,WAAW,CAACC,cAAc,GAAG,IAAI;EACxC;EAEAC,OAAOA,CAAA,EAAG;IACR,OAAO,IAAI,CAACH,YAAY;IACxB,OAAO,IAAI,CAACC,WAAW;EACzB;EAEAG,KAAKA,CAAA,EAAG;IACN,IAAI,CAACP,KAAK,GAAG,IAAI;IACjBD,aAAa,CAAC,IAAI,CAAC;EACrB;;EAEA;EACAH,IAAIA,CAACY,KAAK,EAAE;IACV,IAAI,IAAI,CAACR,KAAK,IAAIQ,KAAK,EAAE;MACvB,IAAI,CAACJ,WAAW,CAACK,QAAQ,CAAC,IAAI,CAACN,YAAY,CAACO,KAAK,CAAC;MAClD,IAAI,CAACV,KAAK,GAAG,KAAK;IACpB;EACF;EAEA,IAAIL,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAACgB,MAAM;EACpB;;EAEA;EACA,IAAIhB,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAACgB,MAAM,GAAG,CAAC,CAAChB,KAAK;IACrBI,aAAa,CAAC,IAAI,CAAC;EACrB;AACF;AAACa,OAAA,CAAAC,OAAA,GAAAZ,aAAA","ignoreList":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.pop = pop;
|
|
7
|
+
exports.push = push;
|
|
8
|
+
/*
|
|
9
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
function push(item) {
|
|
13
|
+
throw new Error('Not Implemented Yet');
|
|
14
|
+
}
|
|
15
|
+
function pop(item) {
|
|
16
|
+
throw new Error('Not Implemented Yet');
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack.js","names":["push","item","Error","pop"],"sources":["../../src/core/stack.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nexport function push(item) {\n throw new Error('Not Implemented Yet')\n}\n\nexport function pop(item) {\n throw new Error('Not Implemented Yet')\n}\n"],"mappings":";;;;;;;AAAA;AACA;AACA;;AAEO,SAASA,IAAIA,CAACC,IAAI,EAAE;EACzB,MAAM,IAAIC,KAAK,CAAC,qBAAqB,CAAC;AACxC;AAEO,SAASC,GAAGA,CAACF,IAAI,EAAE;EACxB,MAAM,IAAIC,KAAK,CAAC,qBAAqB,CAAC;AACxC","ignoreList":[]}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _logger = require("./logger.js");
|
|
8
|
+
/*
|
|
9
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
class TimeCapsule {
|
|
13
|
+
constructor(maxsize, start_state) {
|
|
14
|
+
maxsize = Number(maxsize);
|
|
15
|
+
if (!maxsize || maxsize <= 0) {
|
|
16
|
+
(0, _logger.error)('TimeCapsule maxsize should be greater than 0.', maxsize);
|
|
17
|
+
this.maxsize = 10;
|
|
18
|
+
} else {
|
|
19
|
+
this.maxsize = maxsize;
|
|
20
|
+
}
|
|
21
|
+
this.reset();
|
|
22
|
+
if (start_state) {
|
|
23
|
+
this.snapshot(start_state);
|
|
24
|
+
this.preserve();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* 타임캡슐의 변경 상태를 저장하였음을 알린다.
|
|
30
|
+
*/
|
|
31
|
+
preserve() {
|
|
32
|
+
this.checkPoint = this.pos;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* 타임캡슐이 마지막 저장된 상태와 현재 상태가 같은 지 여부를 얻는다.
|
|
37
|
+
*/
|
|
38
|
+
hasUnpreservedChanges() {
|
|
39
|
+
return this.checkPoint != this.pos;
|
|
40
|
+
}
|
|
41
|
+
dispose() {
|
|
42
|
+
this.reset();
|
|
43
|
+
}
|
|
44
|
+
snapshot(state) {
|
|
45
|
+
this.q.splice(this.pos + 1, this.q.length - (this.pos + 1), state);
|
|
46
|
+
if (this.q.length > this.maxsize) {
|
|
47
|
+
const cutout = this.q.splice(0, this.q.length - this.maxsize);
|
|
48
|
+
this.checkPoint = Math.max(-1, this.checkPoint - cutout.length);
|
|
49
|
+
}
|
|
50
|
+
this.pos = this.q.length - 1;
|
|
51
|
+
}
|
|
52
|
+
forward() {
|
|
53
|
+
if (this.snapshot_taker) this.snapshot_taker.take();
|
|
54
|
+
if (this.forwardable) return this.q[++this.pos];
|
|
55
|
+
(0, _logger.warn)('Not forwardable.');
|
|
56
|
+
}
|
|
57
|
+
backward() {
|
|
58
|
+
if (this.snapshot_taker) this.snapshot_taker.take();
|
|
59
|
+
if (this.backwardable) return this.q[--this.pos];
|
|
60
|
+
(0, _logger.warn)('Not backwardable.');
|
|
61
|
+
}
|
|
62
|
+
get current() {
|
|
63
|
+
if (this.pos !== -1) return this.q[this.pos];
|
|
64
|
+
(0, _logger.warn)('Non state has been recorded.');
|
|
65
|
+
}
|
|
66
|
+
get length() {
|
|
67
|
+
return this.q.length;
|
|
68
|
+
}
|
|
69
|
+
get forwardable() {
|
|
70
|
+
return this.pos < this.q.length - 1;
|
|
71
|
+
}
|
|
72
|
+
get backwardable() {
|
|
73
|
+
return this.pos > 0;
|
|
74
|
+
}
|
|
75
|
+
get snapshot_taker() {
|
|
76
|
+
return this._snapshot_taker;
|
|
77
|
+
}
|
|
78
|
+
set snapshot_taker(snapshot_taker) {
|
|
79
|
+
this._snapshot_taker = snapshot_taker;
|
|
80
|
+
}
|
|
81
|
+
reset() {
|
|
82
|
+
this.q = [];
|
|
83
|
+
this.pos = -1;
|
|
84
|
+
this.checkPoint = -1;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.default = TimeCapsule;
|
|
88
|
+
//# sourceMappingURL=timecapsule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timecapsule.js","names":["_logger","require","TimeCapsule","constructor","maxsize","start_state","Number","error","reset","snapshot","preserve","checkPoint","pos","hasUnpreservedChanges","dispose","state","q","splice","length","cutout","Math","max","forward","snapshot_taker","take","forwardable","warn","backward","backwardable","current","_snapshot_taker","exports","default"],"sources":["../../src/core/timecapsule.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { error, warn } from './logger.js'\n\nexport default class TimeCapsule {\n constructor(maxsize, start_state) {\n maxsize = Number(maxsize)\n\n if (!maxsize || maxsize <= 0) {\n error('TimeCapsule maxsize should be greater than 0.', maxsize)\n this.maxsize = 10\n } else {\n this.maxsize = maxsize\n }\n\n this.reset()\n\n if (start_state) {\n this.snapshot(start_state)\n this.preserve()\n }\n }\n\n /**\n * 타임캡슐의 변경 상태를 저장하였음을 알린다.\n */\n preserve() {\n this.checkPoint = this.pos\n }\n\n /**\n * 타임캡슐이 마지막 저장된 상태와 현재 상태가 같은 지 여부를 얻는다.\n */\n hasUnpreservedChanges() {\n return this.checkPoint != this.pos\n }\n\n dispose() {\n this.reset()\n }\n\n snapshot(state) {\n this.q.splice(this.pos + 1, this.q.length - (this.pos + 1), state)\n\n if (this.q.length > this.maxsize) {\n const cutout = this.q.splice(0, this.q.length - this.maxsize)\n this.checkPoint = Math.max(-1, this.checkPoint - cutout.length)\n }\n\n this.pos = this.q.length - 1\n }\n\n forward() {\n if (this.snapshot_taker) this.snapshot_taker.take()\n\n if (this.forwardable) return this.q[++this.pos]\n warn('Not forwardable.')\n }\n\n backward() {\n if (this.snapshot_taker) this.snapshot_taker.take()\n\n if (this.backwardable) return this.q[--this.pos]\n warn('Not backwardable.')\n }\n\n get current() {\n if (this.pos !== -1) return this.q[this.pos]\n\n warn('Non state has been recorded.')\n }\n\n get length() {\n return this.q.length\n }\n\n get forwardable() {\n return this.pos < this.q.length - 1\n }\n\n get backwardable() {\n return this.pos > 0\n }\n\n get snapshot_taker() {\n return this._snapshot_taker\n }\n\n set snapshot_taker(snapshot_taker) {\n this._snapshot_taker = snapshot_taker\n }\n\n reset() {\n this.q = []\n this.pos = -1\n this.checkPoint = -1\n }\n}\n"],"mappings":"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","ignoreList":[]}
|