@hatiolab/things-scene 9.0.0-beta.35 → 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
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = format;
|
|
7
|
+
/*
|
|
8
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/*
|
|
12
|
+
* Source Code from https://github.com/Mottie/javascript-number-formatter
|
|
13
|
+
* 소스코드 출처 : https://github.com/Mottie/javascript-number-formatter
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
function format(mask, value) {
|
|
17
|
+
if (!mask || isNaN(+value)) {
|
|
18
|
+
return value; // return as it is.
|
|
19
|
+
}
|
|
20
|
+
var isNegative,
|
|
21
|
+
result,
|
|
22
|
+
decimal,
|
|
23
|
+
group,
|
|
24
|
+
posLeadZero,
|
|
25
|
+
posTrailZero,
|
|
26
|
+
posSeparator,
|
|
27
|
+
part,
|
|
28
|
+
szSep,
|
|
29
|
+
integer,
|
|
30
|
+
// find prefix/suffix
|
|
31
|
+
len = mask.length,
|
|
32
|
+
start = mask.search(/[0-9\-\+#]/),
|
|
33
|
+
prefix = start > 0 ? mask.substring(0, start) : '',
|
|
34
|
+
// reverse string: not an ideal method if there are surrogate pairs
|
|
35
|
+
str = mask.split('').reverse().join(''),
|
|
36
|
+
end = str.search(/[0-9\-\+#]/),
|
|
37
|
+
offset = len - end,
|
|
38
|
+
substr = mask.substring(offset, offset + 1),
|
|
39
|
+
indx = offset + (substr === '.' || substr === ',' ? 1 : 0),
|
|
40
|
+
suffix = end > 0 ? mask.substring(indx, len) : '';
|
|
41
|
+
|
|
42
|
+
// mask with prefix & suffix removed
|
|
43
|
+
mask = mask.substring(start, indx);
|
|
44
|
+
|
|
45
|
+
// convert any string to number according to formation sign.
|
|
46
|
+
value = mask.charAt(0) === '-' ? -value : +value;
|
|
47
|
+
isNegative = value < 0 ? value = -value : 0; // process only abs(), and turn on flag.
|
|
48
|
+
|
|
49
|
+
// search for separator for grp & decimal, anything not digit, not +/- sign, not #.
|
|
50
|
+
result = mask.match(/[^\d\-\+#]/g);
|
|
51
|
+
decimal = '.'; // ( result && result[ result.length - 1 ] ) || '.'; // ','는 소수점이 되지 않게 함
|
|
52
|
+
group = result && result[1] && result[0] || ','; // treat the left most symbol as group separator
|
|
53
|
+
|
|
54
|
+
// split the decimal for the format string if any.
|
|
55
|
+
mask = mask.split(decimal);
|
|
56
|
+
// Fix the decimal first, toFixed will auto fill trailing zero.
|
|
57
|
+
value = value.toFixed(mask[1] && mask[1].length);
|
|
58
|
+
value = +value + ''; // convert number to string to trim off *all* trailing decimal zero(es)
|
|
59
|
+
|
|
60
|
+
// fill back any trailing zero according to format
|
|
61
|
+
posTrailZero = mask[1] && mask[1].lastIndexOf('0'); // look for last zero in format
|
|
62
|
+
part = value.split('.');
|
|
63
|
+
// integer will get !part[1]
|
|
64
|
+
if (!part[1] || part[1] && part[1].length <= posTrailZero) {
|
|
65
|
+
value = (+value).toFixed(posTrailZero + 1);
|
|
66
|
+
}
|
|
67
|
+
szSep = mask[0].split(group); // look for separator
|
|
68
|
+
mask[0] = szSep.join(''); // join back without separator for counting the pos of any leading 0.
|
|
69
|
+
|
|
70
|
+
posLeadZero = mask[0] && mask[0].indexOf('0');
|
|
71
|
+
if (posLeadZero > -1) {
|
|
72
|
+
while (part[0].length < mask[0].length - posLeadZero) {
|
|
73
|
+
part[0] = '0' + part[0];
|
|
74
|
+
}
|
|
75
|
+
} else if (+part[0] === 0) {
|
|
76
|
+
part[0] = '';
|
|
77
|
+
}
|
|
78
|
+
value = value.split('.');
|
|
79
|
+
value[0] = part[0];
|
|
80
|
+
|
|
81
|
+
// process the first group separator from decimal (.) only, the rest ignore.
|
|
82
|
+
// get the length of the last slice of split result.
|
|
83
|
+
posSeparator = szSep[1] && szSep[szSep.length - 1].length;
|
|
84
|
+
if (posSeparator) {
|
|
85
|
+
integer = value[0];
|
|
86
|
+
str = '';
|
|
87
|
+
offset = integer.length % posSeparator;
|
|
88
|
+
len = integer.length;
|
|
89
|
+
for (indx = 0; indx < len; indx++) {
|
|
90
|
+
str += integer.charAt(indx); // ie6 only support charAt for sz.
|
|
91
|
+
// -posSeparator so that won't trail separator on full length
|
|
92
|
+
/*jshint -W018 */
|
|
93
|
+
if (!((indx - offset + 1) % posSeparator) && indx < len - posSeparator) {
|
|
94
|
+
str += group;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
value[0] = str;
|
|
98
|
+
}
|
|
99
|
+
value[1] = mask[1] && value[1] ? decimal + value[1] : '';
|
|
100
|
+
|
|
101
|
+
// remove negative sign if result is zero
|
|
102
|
+
result = value.join('');
|
|
103
|
+
if (result === '0' || result === '') {
|
|
104
|
+
// remove negative sign if result is zero
|
|
105
|
+
isNegative = false;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// 앞에 +가 붙는다면 양수일 경우에도 +를 표기해줌
|
|
109
|
+
var fixedPlusSign;
|
|
110
|
+
if (mask[0].substring(0, 1) == '+') fixedPlusSign = isNegative ? '-' : '+';else fixedPlusSign = isNegative ? '-' : '';
|
|
111
|
+
|
|
112
|
+
// put back any negation, combine integer and fraction, and add back prefix & suffix
|
|
113
|
+
return prefix + (fixedPlusSign + result) + suffix;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","names":["format","mask","value","isNaN","isNegative","result","decimal","group","posLeadZero","posTrailZero","posSeparator","part","szSep","integer","len","length","start","search","prefix","substring","str","split","reverse","join","end","offset","substr","indx","suffix","charAt","match","toFixed","lastIndexOf","indexOf","fixedPlusSign"],"sources":["../../../src/components/drawer/format.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\n/*\n * Source Code from https://github.com/Mottie/javascript-number-formatter\n * 소스코드 출처 : https://github.com/Mottie/javascript-number-formatter\n */\n\nexport default function format(mask, value) {\n if (!mask || isNaN(+value)) {\n return value // return as it is.\n }\n\n var isNegative,\n result,\n decimal,\n group,\n posLeadZero,\n posTrailZero,\n posSeparator,\n part,\n szSep,\n integer,\n // find prefix/suffix\n len = mask.length,\n start = mask.search(/[0-9\\-\\+#]/),\n prefix = start > 0 ? mask.substring(0, start) : '',\n // reverse string: not an ideal method if there are surrogate pairs\n str = mask\n .split('')\n .reverse()\n .join(''),\n end = str.search(/[0-9\\-\\+#]/),\n offset = len - end,\n substr = mask.substring(offset, offset + 1),\n indx = offset + (substr === '.' || substr === ',' ? 1 : 0),\n suffix = end > 0 ? mask.substring(indx, len) : ''\n\n // mask with prefix & suffix removed\n mask = mask.substring(start, indx)\n\n // convert any string to number according to formation sign.\n value = mask.charAt(0) === '-' ? -value : +value\n isNegative = value < 0 ? (value = -value) : 0 // process only abs(), and turn on flag.\n\n // search for separator for grp & decimal, anything not digit, not +/- sign, not #.\n result = mask.match(/[^\\d\\-\\+#]/g)\n decimal = '.' // ( result && result[ result.length - 1 ] ) || '.'; // ','는 소수점이 되지 않게 함\n group = (result && result[1] && result[0]) || ',' // treat the left most symbol as group separator\n\n // split the decimal for the format string if any.\n mask = mask.split(decimal)\n // Fix the decimal first, toFixed will auto fill trailing zero.\n value = value.toFixed(mask[1] && mask[1].length)\n value = +value + '' // convert number to string to trim off *all* trailing decimal zero(es)\n\n // fill back any trailing zero according to format\n posTrailZero = mask[1] && mask[1].lastIndexOf('0') // look for last zero in format\n part = value.split('.')\n // integer will get !part[1]\n if (!part[1] || (part[1] && part[1].length <= posTrailZero)) {\n value = (+value).toFixed(posTrailZero + 1)\n }\n szSep = mask[0].split(group) // look for separator\n mask[0] = szSep.join('') // join back without separator for counting the pos of any leading 0.\n\n posLeadZero = mask[0] && mask[0].indexOf('0')\n if (posLeadZero > -1) {\n while (part[0].length < mask[0].length - posLeadZero) {\n part[0] = '0' + part[0]\n }\n } else if (+part[0] === 0) {\n part[0] = ''\n }\n\n value = value.split('.')\n value[0] = part[0]\n\n // process the first group separator from decimal (.) only, the rest ignore.\n // get the length of the last slice of split result.\n posSeparator = szSep[1] && szSep[szSep.length - 1].length\n if (posSeparator) {\n integer = value[0]\n str = ''\n offset = integer.length % posSeparator\n len = integer.length\n for (indx = 0; indx < len; indx++) {\n str += integer.charAt(indx) // ie6 only support charAt for sz.\n // -posSeparator so that won't trail separator on full length\n /*jshint -W018 */\n if (!((indx - offset + 1) % posSeparator) && indx < len - posSeparator) {\n str += group\n }\n }\n value[0] = str\n }\n value[1] = mask[1] && value[1] ? decimal + value[1] : ''\n\n // remove negative sign if result is zero\n result = value.join('')\n if (result === '0' || result === '') {\n // remove negative sign if result is zero\n isNegative = false\n }\n\n // 앞에 +가 붙는다면 양수일 경우에도 +를 표기해줌\n var fixedPlusSign\n\n if (mask[0].substring(0, 1) == '+') fixedPlusSign = isNegative ? '-' : '+'\n else fixedPlusSign = isNegative ? '-' : ''\n\n // put back any negation, combine integer and fraction, and add back prefix & suffix\n return prefix + (fixedPlusSign + result) + suffix\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.containedInPath = containedInPath;
|
|
7
|
+
exports.drawEndTips = drawEndTips;
|
|
8
|
+
exports.getTipNeckPos = getTipNeckPos;
|
|
9
|
+
/*
|
|
10
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
const EPSILON = 5;
|
|
14
|
+
const WING_FACTOR = Math.sqrt(3);
|
|
15
|
+
const LINEWIDTH = 2;
|
|
16
|
+
function containedInLine(x, y, p1, p2, lineWidth) {
|
|
17
|
+
var epsilon = EPSILON + lineWidth;
|
|
18
|
+
var x1 = p1.x,
|
|
19
|
+
y1 = p1.y,
|
|
20
|
+
x2 = p2.x,
|
|
21
|
+
y2 = p2.y;
|
|
22
|
+
if (Math.abs(x1 - x2) > epsilon && Math.abs(y1 - y2) > epsilon) {
|
|
23
|
+
var m = (y2 - y1) / (x2 - x1);
|
|
24
|
+
var b = y1 - m * x1;
|
|
25
|
+
if (Math.abs(y - (m * x + b)) > epsilon) return false;
|
|
26
|
+
}
|
|
27
|
+
var minx, maxx, miny, maxy;
|
|
28
|
+
if (x1 > x2) {
|
|
29
|
+
maxx = x1;
|
|
30
|
+
minx = x2;
|
|
31
|
+
} else {
|
|
32
|
+
maxx = x2;
|
|
33
|
+
minx = x1;
|
|
34
|
+
}
|
|
35
|
+
if (y1 > y2) {
|
|
36
|
+
maxy = y1;
|
|
37
|
+
miny = y2;
|
|
38
|
+
} else {
|
|
39
|
+
maxy = y2;
|
|
40
|
+
miny = y1;
|
|
41
|
+
}
|
|
42
|
+
if (maxx + EPSILON < x) return false;
|
|
43
|
+
if (minx - EPSILON > x) return false;
|
|
44
|
+
if (maxy + EPSILON < y) return false;
|
|
45
|
+
if (miny - EPSILON > y) return false;
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
function containedInPath(x, y, path, lineWidth = 2) {
|
|
49
|
+
for (let idx = 0; idx < path.length - 1; idx++) {
|
|
50
|
+
if (containedInLine(x, y, path[idx], path[idx + 1], lineWidth)) return true;
|
|
51
|
+
}
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
function getTipNeckPos(tipType, lineWidth, p1, p2) {
|
|
55
|
+
if (tipType.slice(-5) != 'arrow') return p1;
|
|
56
|
+
var {
|
|
57
|
+
x,
|
|
58
|
+
y
|
|
59
|
+
} = p1;
|
|
60
|
+
var theta = Math.atan2(p2.y - p1.y, p2.x - p1.x);
|
|
61
|
+
var diff = lineWidth * 1.5;
|
|
62
|
+
return {
|
|
63
|
+
x: p1.x + Math.cos(theta) * diff,
|
|
64
|
+
y: p1.y + Math.sin(theta) * diff
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function drawEndTips(ctx, path, style) {
|
|
68
|
+
var {
|
|
69
|
+
lineWidth = LINEWIDTH,
|
|
70
|
+
strokeStyle = '#000000',
|
|
71
|
+
lineCap = false,
|
|
72
|
+
alpha = 1,
|
|
73
|
+
begin = 'none',
|
|
74
|
+
end = 'none',
|
|
75
|
+
beginSize = 'size5',
|
|
76
|
+
endSize = 'size5'
|
|
77
|
+
} = style;
|
|
78
|
+
|
|
79
|
+
// 양 끝 라인 그리기.
|
|
80
|
+
if (begin != 'none' || end != 'none') {
|
|
81
|
+
lineWidth = Number(lineWidth) || LINEWIDTH;
|
|
82
|
+
ctx.lineCap = lineCap;
|
|
83
|
+
ctx.lineWidth = lineWidth;
|
|
84
|
+
ctx.strokeStyle = strokeStyle;
|
|
85
|
+
ctx.fillStyle = strokeStyle;
|
|
86
|
+
ctx.globalAlpha *= alpha;
|
|
87
|
+
|
|
88
|
+
// 선 그리기.
|
|
89
|
+
if (begin != 'none') drawTip(ctx, path[0], path[1], lineWidth, begin, tipSize(beginSize, lineWidth));
|
|
90
|
+
if (end != 'none') {
|
|
91
|
+
let length = path.length;
|
|
92
|
+
drawTip(ctx, path[length - 1], path[length - 2], lineWidth, end, tipSize(endSize, lineWidth));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function drawTip(ctx, p1, p2, lineWidth, type, size) {
|
|
97
|
+
var {
|
|
98
|
+
x,
|
|
99
|
+
y
|
|
100
|
+
} = p1;
|
|
101
|
+
var theta = Math.atan2(p2.y - y, p2.x - x);
|
|
102
|
+
ctx.beginPath();
|
|
103
|
+
ctx.translate(x, y);
|
|
104
|
+
ctx.rotate(theta);
|
|
105
|
+
switch (type) {
|
|
106
|
+
case 'oval':
|
|
107
|
+
ctx.ellipse(0, 0, size.X, size.Y, 0, 0, 2 * Math.PI);
|
|
108
|
+
ctx.fill();
|
|
109
|
+
// ctx.scale(1, 1 / arc_scale_y)
|
|
110
|
+
break;
|
|
111
|
+
case 'diamond':
|
|
112
|
+
ctx.moveTo(-size.X, 0);
|
|
113
|
+
ctx.lineTo(0, -size.Y);
|
|
114
|
+
ctx.lineTo(size.X, 0);
|
|
115
|
+
ctx.lineTo(0, size.Y);
|
|
116
|
+
ctx.fill();
|
|
117
|
+
break;
|
|
118
|
+
case 'arrow':
|
|
119
|
+
ctx.moveTo(0, 0);
|
|
120
|
+
ctx.lineTo(WING_FACTOR * size.X, -size.Y);
|
|
121
|
+
ctx.lineTo(WING_FACTOR * size.X, size.Y);
|
|
122
|
+
ctx.fill();
|
|
123
|
+
break;
|
|
124
|
+
case 'sharp-arrow':
|
|
125
|
+
ctx.moveTo(0, 0);
|
|
126
|
+
ctx.lineTo(WING_FACTOR * size.X, -size.Y);
|
|
127
|
+
ctx.lineTo(-size.X / 1.5 + WING_FACTOR * size.X, 0);
|
|
128
|
+
ctx.lineTo(WING_FACTOR * size.X, size.Y);
|
|
129
|
+
ctx.fill();
|
|
130
|
+
break;
|
|
131
|
+
case 'open-arrow':
|
|
132
|
+
ctx.moveTo(WING_FACTOR * size.X + lineWidth, -size.Y);
|
|
133
|
+
ctx.lineTo(lineWidth, 0);
|
|
134
|
+
ctx.lineTo(WING_FACTOR * size.X + lineWidth, size.Y);
|
|
135
|
+
ctx.stroke();
|
|
136
|
+
break;
|
|
137
|
+
default:
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
ctx.rotate(-theta);
|
|
141
|
+
ctx.translate(-x, -y);
|
|
142
|
+
ctx.closePath();
|
|
143
|
+
}
|
|
144
|
+
function tipSize(size, lineWidth) {
|
|
145
|
+
let length = {};
|
|
146
|
+
lineWidth = lineWidth * 1.2;
|
|
147
|
+
switch (size) {
|
|
148
|
+
case 'size1':
|
|
149
|
+
length.X = lineWidth;
|
|
150
|
+
length.Y = lineWidth;
|
|
151
|
+
break;
|
|
152
|
+
case 'size2':
|
|
153
|
+
length.X = lineWidth * 1.5;
|
|
154
|
+
length.Y = lineWidth;
|
|
155
|
+
break;
|
|
156
|
+
case 'size3':
|
|
157
|
+
length.X = lineWidth * 2;
|
|
158
|
+
length.Y = lineWidth;
|
|
159
|
+
break;
|
|
160
|
+
case 'size4':
|
|
161
|
+
length.X = lineWidth;
|
|
162
|
+
length.Y = lineWidth * 1.5;
|
|
163
|
+
break;
|
|
164
|
+
case 'size5':
|
|
165
|
+
length.X = lineWidth * 1.5;
|
|
166
|
+
length.Y = lineWidth * 1.5;
|
|
167
|
+
break;
|
|
168
|
+
case 'size6':
|
|
169
|
+
length.X = lineWidth * 2;
|
|
170
|
+
length.Y = lineWidth * 1.5;
|
|
171
|
+
break;
|
|
172
|
+
case 'size7':
|
|
173
|
+
length.X = lineWidth;
|
|
174
|
+
length.Y = lineWidth * 2;
|
|
175
|
+
break;
|
|
176
|
+
case 'size8':
|
|
177
|
+
length.X = lineWidth * 1.5;
|
|
178
|
+
length.Y = lineWidth * 2;
|
|
179
|
+
break;
|
|
180
|
+
case 'size9':
|
|
181
|
+
length.X = lineWidth * 2;
|
|
182
|
+
length.Y = lineWidth * 2;
|
|
183
|
+
break;
|
|
184
|
+
default:
|
|
185
|
+
length.X = lineWidth * 1.5;
|
|
186
|
+
length.Y = lineWidth * 1.5;
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
return length;
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=line.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line.js","names":["EPSILON","WING_FACTOR","Math","sqrt","LINEWIDTH","containedInLine","x","y","p1","p2","lineWidth","epsilon","x1","y1","x2","y2","abs","m","b","minx","maxx","miny","maxy","containedInPath","path","idx","length","getTipNeckPos","tipType","slice","theta","atan2","diff","cos","sin","drawEndTips","ctx","style","strokeStyle","lineCap","alpha","begin","end","beginSize","endSize","Number","fillStyle","globalAlpha","drawTip","tipSize","type","size","beginPath","translate","rotate","ellipse","X","Y","PI","fill","moveTo","lineTo","stroke","closePath"],"sources":["../../../src/components/drawer/line.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nconst EPSILON = 5\nconst WING_FACTOR = Math.sqrt(3)\nconst LINEWIDTH = 2\n\nfunction containedInLine(x, y, p1, p2, lineWidth) {\n var epsilon = EPSILON + lineWidth\n var x1 = p1.x,\n y1 = p1.y,\n x2 = p2.x,\n y2 = p2.y\n\n if (Math.abs(x1 - x2) > epsilon && Math.abs(y1 - y2) > epsilon) {\n var m = (y2 - y1) / (x2 - x1)\n var b = y1 - m * x1\n\n if (Math.abs(y - (m * x + b)) > epsilon) return false\n }\n\n var minx, maxx, miny, maxy\n\n if (x1 > x2) {\n maxx = x1\n minx = x2\n } else {\n maxx = x2\n minx = x1\n }\n\n if (y1 > y2) {\n maxy = y1\n miny = y2\n } else {\n maxy = y2\n miny = y1\n }\n\n if (maxx + EPSILON < x) return false\n if (minx - EPSILON > x) return false\n\n if (maxy + EPSILON < y) return false\n if (miny - EPSILON > y) return false\n\n return true\n}\n\nexport function containedInPath(x, y, path, lineWidth = 2) {\n for (let idx = 0; idx < path.length - 1; idx++) {\n if (containedInLine(x, y, path[idx], path[idx + 1], lineWidth)) return true\n }\n\n return false\n}\n\nexport function getTipNeckPos(tipType, lineWidth, p1, p2) {\n if (tipType.slice(-5) != 'arrow') return p1\n\n var { x, y } = p1\n var theta = Math.atan2(p2.y - p1.y, p2.x - p1.x)\n var diff = lineWidth * 1.5\n\n return {\n x: p1.x + Math.cos(theta) * diff,\n y: p1.y + Math.sin(theta) * diff\n }\n}\n\nexport function drawEndTips(ctx, path, style) {\n var {\n lineWidth = LINEWIDTH,\n strokeStyle = '#000000',\n lineCap = false,\n alpha = 1,\n begin = 'none',\n end = 'none',\n beginSize = 'size5',\n endSize = 'size5'\n } = style\n\n // 양 끝 라인 그리기.\n if (begin != 'none' || end != 'none') {\n lineWidth = Number(lineWidth) || LINEWIDTH\n\n ctx.lineCap = lineCap\n ctx.lineWidth = lineWidth\n ctx.strokeStyle = strokeStyle\n ctx.fillStyle = strokeStyle\n ctx.globalAlpha *= alpha\n\n // 선 그리기.\n if (begin != 'none') drawTip(ctx, path[0], path[1], lineWidth, begin, tipSize(beginSize, lineWidth))\n if (end != 'none') {\n let length = path.length\n drawTip(ctx, path[length - 1], path[length - 2], lineWidth, end, tipSize(endSize, lineWidth))\n }\n }\n}\n\nfunction drawTip(ctx, p1, p2, lineWidth, type, size) {\n var { x, y } = p1\n var theta = Math.atan2(p2.y - y, p2.x - x)\n\n ctx.beginPath()\n\n ctx.translate(x, y)\n ctx.rotate(theta)\n\n switch (type) {\n case 'oval':\n ctx.ellipse(0, 0, size.X, size.Y, 0, 0, 2 * Math.PI)\n ctx.fill()\n // ctx.scale(1, 1 / arc_scale_y)\n break\n case 'diamond':\n ctx.moveTo(-size.X, 0)\n ctx.lineTo(0, -size.Y)\n ctx.lineTo(size.X, 0)\n ctx.lineTo(0, size.Y)\n ctx.fill()\n break\n case 'arrow':\n ctx.moveTo(0, 0)\n ctx.lineTo(WING_FACTOR * size.X, -size.Y)\n ctx.lineTo(WING_FACTOR * size.X, size.Y)\n ctx.fill()\n break\n case 'sharp-arrow':\n ctx.moveTo(0, 0)\n ctx.lineTo(WING_FACTOR * size.X, -size.Y)\n ctx.lineTo(-size.X / 1.5 + WING_FACTOR * size.X, 0)\n ctx.lineTo(WING_FACTOR * size.X, size.Y)\n ctx.fill()\n break\n case 'open-arrow':\n ctx.moveTo(WING_FACTOR * size.X + lineWidth, -size.Y)\n ctx.lineTo(lineWidth, 0)\n ctx.lineTo(WING_FACTOR * size.X + lineWidth, size.Y)\n ctx.stroke()\n break\n default:\n break\n }\n\n ctx.rotate(-theta)\n ctx.translate(-x, -y)\n\n ctx.closePath()\n}\n\nfunction tipSize(size, lineWidth) {\n let length = {}\n lineWidth = lineWidth * 1.2\n\n switch (size) {\n case 'size1':\n length.X = lineWidth\n length.Y = lineWidth\n break\n case 'size2':\n length.X = lineWidth * 1.5\n length.Y = lineWidth\n break\n case 'size3':\n length.X = lineWidth * 2\n length.Y = lineWidth\n break\n case 'size4':\n length.X = lineWidth\n length.Y = lineWidth * 1.5\n break\n case 'size5':\n length.X = lineWidth * 1.5\n length.Y = lineWidth * 1.5\n break\n case 'size6':\n length.X = lineWidth * 2\n length.Y = lineWidth * 1.5\n break\n case 'size7':\n length.X = lineWidth\n length.Y = lineWidth * 2\n break\n case 'size8':\n length.X = lineWidth * 1.5\n length.Y = lineWidth * 2\n break\n case 'size9':\n length.X = lineWidth * 2\n length.Y = lineWidth * 2\n break\n default:\n length.X = lineWidth * 1.5\n length.Y = lineWidth * 1.5\n break\n }\n return length\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.default = stroke;
|
|
7
|
+
/*
|
|
8
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
function stroke(context, style, hostComponent) {
|
|
12
|
+
var {
|
|
13
|
+
strokeStyle,
|
|
14
|
+
lineDash,
|
|
15
|
+
lineWidth,
|
|
16
|
+
lineCap,
|
|
17
|
+
lineJoin,
|
|
18
|
+
alpha
|
|
19
|
+
} = style;
|
|
20
|
+
// var strokeStyle = hostComponent.strokeStyle;
|
|
21
|
+
|
|
22
|
+
if (!strokeStyle || lineWidth == 0)
|
|
23
|
+
// 라인색이나 굵기가 없을시 무조건 그리지 않음
|
|
24
|
+
return;
|
|
25
|
+
if (lineCap) context.lineCap = lineCap;
|
|
26
|
+
if (lineDash) {
|
|
27
|
+
var isRound = lineCap == 'round';
|
|
28
|
+
switch (lineDash) {
|
|
29
|
+
case 'solid':
|
|
30
|
+
lineDash = [0, 0];
|
|
31
|
+
break;
|
|
32
|
+
case 'round-dot':
|
|
33
|
+
if (isRound) lineDash = [0, lineWidth * 2];else lineDash = [lineWidth, lineWidth];
|
|
34
|
+
break;
|
|
35
|
+
case 'square-dot':
|
|
36
|
+
if (isRound) lineDash = [lineWidth, lineWidth * 2];else lineDash = [lineWidth * 2, lineWidth];
|
|
37
|
+
break;
|
|
38
|
+
case 'dash':
|
|
39
|
+
if (isRound) lineDash = [lineWidth * 3, lineWidth * 2.5];else lineDash = [lineWidth * 4, lineWidth * 1.5];
|
|
40
|
+
break;
|
|
41
|
+
case 'dash-dot':
|
|
42
|
+
if (isRound) lineDash = [lineWidth * 3, lineWidth * 3, 0, lineWidth * 3];else lineDash = [lineWidth * 4, lineWidth * 2, lineWidth, lineWidth * 2];
|
|
43
|
+
break;
|
|
44
|
+
case 'long-dash':
|
|
45
|
+
if (isRound) lineDash = [lineWidth * 5, lineWidth * 4];else lineDash = [lineWidth * 6, lineWidth * 3];
|
|
46
|
+
break;
|
|
47
|
+
case 'long-dash-dot':
|
|
48
|
+
if (isRound) lineDash = [lineWidth * 5, lineWidth * 3, 0, lineWidth * 3];else lineDash = [lineWidth * 6, lineWidth * 2, lineWidth, lineWidth * 2];
|
|
49
|
+
break;
|
|
50
|
+
case 'long-dash-dot-dot':
|
|
51
|
+
if (isRound) lineDash = [lineWidth * 5, lineWidth * 2, 0, lineWidth * 2, 0, lineWidth * 2];else lineDash = [lineWidth * 6, lineWidth, lineWidth, lineWidth, lineWidth, lineWidth];
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
context.setLineDash(lineDash);
|
|
55
|
+
}
|
|
56
|
+
context.globalAlpha *= alpha;
|
|
57
|
+
context.strokeStyle = strokeStyle;
|
|
58
|
+
context.lineWidth = lineWidth;
|
|
59
|
+
context.lineJoin = lineJoin;
|
|
60
|
+
context.stroke();
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=stroke.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stroke.js","names":["stroke","context","style","hostComponent","strokeStyle","lineDash","lineWidth","lineCap","lineJoin","alpha","isRound","setLineDash","globalAlpha"],"sources":["../../../src/components/drawer/stroke.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nexport default function stroke(context, style, hostComponent) {\n var { strokeStyle, lineDash, lineWidth, lineCap, lineJoin, alpha } = style\n // var strokeStyle = hostComponent.strokeStyle;\n\n if (!strokeStyle || lineWidth == 0)\n // 라인색이나 굵기가 없을시 무조건 그리지 않음\n return\n\n if (lineCap) context.lineCap = lineCap\n\n if (lineDash) {\n var isRound = lineCap == 'round'\n\n switch (lineDash) {\n case 'solid':\n lineDash = [0, 0]\n break\n case 'round-dot':\n if (isRound) lineDash = [0, lineWidth * 2]\n else lineDash = [lineWidth, lineWidth]\n break\n case 'square-dot':\n if (isRound) lineDash = [lineWidth, lineWidth * 2]\n else lineDash = [lineWidth * 2, lineWidth]\n break\n case 'dash':\n if (isRound) lineDash = [lineWidth * 3, lineWidth * 2.5]\n else lineDash = [lineWidth * 4, lineWidth * 1.5]\n break\n case 'dash-dot':\n if (isRound) lineDash = [lineWidth * 3, lineWidth * 3, 0, lineWidth * 3]\n else lineDash = [lineWidth * 4, lineWidth * 2, lineWidth, lineWidth * 2]\n break\n case 'long-dash':\n if (isRound) lineDash = [lineWidth * 5, lineWidth * 4]\n else lineDash = [lineWidth * 6, lineWidth * 3]\n break\n case 'long-dash-dot':\n if (isRound) lineDash = [lineWidth * 5, lineWidth * 3, 0, lineWidth * 3]\n else lineDash = [lineWidth * 6, lineWidth * 2, lineWidth, lineWidth * 2]\n break\n case 'long-dash-dot-dot':\n if (isRound) lineDash = [lineWidth * 5, lineWidth * 2, 0, lineWidth * 2, 0, lineWidth * 2]\n else lineDash = [lineWidth * 6, lineWidth, lineWidth, lineWidth, lineWidth, lineWidth]\n break\n }\n context.setLineDash(lineDash)\n }\n\n context.globalAlpha *= alpha\n context.strokeStyle = strokeStyle\n context.lineWidth = lineWidth\n context.lineJoin = lineJoin\n\n context.stroke()\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;;AAEe,SAASA,MAAMA,CAACC,OAAO,EAAEC,KAAK,EAAEC,aAAa,EAAE;EAC5D,IAAI;IAAEC,WAAW;IAAEC,QAAQ;IAAEC,SAAS;IAAEC,OAAO;IAAEC,QAAQ;IAAEC;EAAM,CAAC,GAAGP,KAAK;EAC1E;;EAEA,IAAI,CAACE,WAAW,IAAIE,SAAS,IAAI,CAAC;IAChC;IACA;EAEF,IAAIC,OAAO,EAAEN,OAAO,CAACM,OAAO,GAAGA,OAAO;EAEtC,IAAIF,QAAQ,EAAE;IACZ,IAAIK,OAAO,GAAGH,OAAO,IAAI,OAAO;IAEhC,QAAQF,QAAQ;MACd,KAAK,OAAO;QACVA,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACjB;MACF,KAAK,WAAW;QACd,IAAIK,OAAO,EAAEL,QAAQ,GAAG,CAAC,CAAC,EAAEC,SAAS,GAAG,CAAC,CAAC,MACrCD,QAAQ,GAAG,CAACC,SAAS,EAAEA,SAAS,CAAC;QACtC;MACF,KAAK,YAAY;QACf,IAAII,OAAO,EAAEL,QAAQ,GAAG,CAACC,SAAS,EAAEA,SAAS,GAAG,CAAC,CAAC,MAC7CD,QAAQ,GAAG,CAACC,SAAS,GAAG,CAAC,EAAEA,SAAS,CAAC;QAC1C;MACF,KAAK,MAAM;QACT,IAAII,OAAO,EAAEL,QAAQ,GAAG,CAACC,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAG,GAAG,CAAC,MACnDD,QAAQ,GAAG,CAACC,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAG,GAAG,CAAC;QAChD;MACF,KAAK,UAAU;QACb,IAAII,OAAO,EAAEL,QAAQ,GAAG,CAACC,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAG,CAAC,EAAE,CAAC,EAAEA,SAAS,GAAG,CAAC,CAAC,MACnED,QAAQ,GAAG,CAACC,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAG,CAAC,EAAEA,SAAS,EAAEA,SAAS,GAAG,CAAC,CAAC;QACxE;MACF,KAAK,WAAW;QACd,IAAII,OAAO,EAAEL,QAAQ,GAAG,CAACC,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAG,CAAC,CAAC,MACjDD,QAAQ,GAAG,CAACC,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAG,CAAC,CAAC;QAC9C;MACF,KAAK,eAAe;QAClB,IAAII,OAAO,EAAEL,QAAQ,GAAG,CAACC,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAG,CAAC,EAAE,CAAC,EAAEA,SAAS,GAAG,CAAC,CAAC,MACnED,QAAQ,GAAG,CAACC,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAG,CAAC,EAAEA,SAAS,EAAEA,SAAS,GAAG,CAAC,CAAC;QACxE;MACF,KAAK,mBAAmB;QACtB,IAAII,OAAO,EAAEL,QAAQ,GAAG,CAACC,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAG,CAAC,EAAE,CAAC,EAAEA,SAAS,GAAG,CAAC,EAAE,CAAC,EAAEA,SAAS,GAAG,CAAC,CAAC,MACrFD,QAAQ,GAAG,CAACC,SAAS,GAAG,CAAC,EAAEA,SAAS,EAAEA,SAAS,EAAEA,SAAS,EAAEA,SAAS,EAAEA,SAAS,CAAC;QACtF;IACJ;IACAL,OAAO,CAACU,WAAW,CAACN,QAAQ,CAAC;EAC/B;EAEAJ,OAAO,CAACW,WAAW,IAAIH,KAAK;EAC5BR,OAAO,CAACG,WAAW,GAAGA,WAAW;EACjCH,OAAO,CAACK,SAAS,GAAGA,SAAS;EAC7BL,OAAO,CAACO,QAAQ,GAAGA,QAAQ;EAE3BP,OAAO,CAACD,MAAM,CAAC,CAAC;AAClB","ignoreList":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = splitTextToLines;
|
|
7
|
+
function wrapWord(context, word, width, letterSpacing = 0) {
|
|
8
|
+
if (word.length < 2) return word;
|
|
9
|
+
let index = 2;
|
|
10
|
+
for (; index < word.length; index++) {
|
|
11
|
+
const substring = word.substring(0, index);
|
|
12
|
+
const textWidth = context.measureText(substring).width + (substring.length - 1) * letterSpacing;
|
|
13
|
+
if (textWidth < width) continue;
|
|
14
|
+
break;
|
|
15
|
+
}
|
|
16
|
+
return word.substring(0, index - 1);
|
|
17
|
+
}
|
|
18
|
+
function wrapLine(context, line, width, letterSpacing = 0) {
|
|
19
|
+
const words = line.split(' '); // 공백으로 단어를 분리함.
|
|
20
|
+
const lines = [];
|
|
21
|
+
let begin, end;
|
|
22
|
+
let slice = [];
|
|
23
|
+
for (begin = 0, end = 1; end <= words.length; end++) {
|
|
24
|
+
slice = words.slice(begin, end); // 단어를 하나씩 추가하면서 계산을 시작함.
|
|
25
|
+
|
|
26
|
+
const sliceWidth = context.measureText(slice.join(' ')).width + (slice.join('').length - 1) * letterSpacing;
|
|
27
|
+
if (sliceWidth > width) {
|
|
28
|
+
if (end - begin == 1) {
|
|
29
|
+
const line = wrapWord(context, slice[0], width, letterSpacing);
|
|
30
|
+
lines.push([line]);
|
|
31
|
+
words.splice(begin, 1, line, slice[0].substring(line.length));
|
|
32
|
+
} else {
|
|
33
|
+
while (words[end - 1] == '') end++;
|
|
34
|
+
lines.push(words.slice(begin, --end));
|
|
35
|
+
}
|
|
36
|
+
begin = end;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (end - begin > 1) lines.push(slice);
|
|
40
|
+
if (lines.length == 0) lines.push(['']);
|
|
41
|
+
return lines;
|
|
42
|
+
}
|
|
43
|
+
function splitTextToLines(context, text, width, wrap, letterSpacing = 0) {
|
|
44
|
+
const lines = String(text).split('\n');
|
|
45
|
+
if (wrap) {
|
|
46
|
+
return [].concat.apply([], lines.map(line => wrapLine(context, line, width, letterSpacing)));
|
|
47
|
+
} else {
|
|
48
|
+
return lines.map(line => line.split(' '));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=text-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-wrapper.js","names":["wrapWord","context","word","width","letterSpacing","length","index","substring","textWidth","measureText","wrapLine","line","words","split","lines","begin","end","slice","sliceWidth","join","push","splice","splitTextToLines","text","wrap","String","concat","apply","map"],"sources":["../../../src/components/drawer/text-wrapper.js"],"sourcesContent":["function wrapWord(context, word, width, letterSpacing = 0) {\n if (word.length < 2) return word\n\n let index = 2\n for (; index < word.length; index++) {\n const substring = word.substring(0, index)\n const textWidth = context.measureText(substring).width + (substring.length - 1) * letterSpacing\n if (textWidth < width) continue\n\n break\n }\n\n return word.substring(0, index - 1)\n}\n\nfunction wrapLine(context, line, width, letterSpacing = 0) {\n const words = line.split(' ') // 공백으로 단어를 분리함.\n const lines = []\n let begin, end\n let slice = []\n\n for (begin = 0, end = 1; end <= words.length; end++) {\n slice = words.slice(begin, end) // 단어를 하나씩 추가하면서 계산을 시작함.\n\n const sliceWidth = context.measureText(slice.join(' ')).width + (slice.join('').length - 1) * letterSpacing\n if (sliceWidth > width) {\n if (end - begin == 1) {\n const line = wrapWord(context, slice[0], width, letterSpacing)\n lines.push([line])\n words.splice(begin, 1, line, slice[0].substring(line.length))\n } else {\n while (words[end - 1] == '') end++\n lines.push(words.slice(begin, --end))\n }\n begin = end\n }\n }\n\n if (end - begin > 1) lines.push(slice)\n if (lines.length == 0) lines.push([''])\n\n return lines\n}\n\nexport default function splitTextToLines(context, text, width, wrap, letterSpacing = 0) {\n const lines = String(text).split('\\n')\n if (wrap) {\n return [].concat.apply(\n [],\n lines.map(line => wrapLine(context, line, width, letterSpacing))\n )\n } else {\n return lines.map(line => line.split(' '))\n }\n}\n"],"mappings":"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","ignoreList":[]}
|