@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,269 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.drawText = drawText;
|
|
7
|
+
exports.font = font;
|
|
8
|
+
exports.textLines = textLines;
|
|
9
|
+
var _const = require("../../const.js");
|
|
10
|
+
var _roundRect = require("../../core/round-rect.js");
|
|
11
|
+
function parseMarkdown(text) {
|
|
12
|
+
const regex = /(\*\*|__)(.*?)\1|(\*|_)(.*?)\3|([^\*_]+)/g;
|
|
13
|
+
let result = [];
|
|
14
|
+
let match;
|
|
15
|
+
while ((match = regex.exec(text)) !== null) {
|
|
16
|
+
if (match[1]) {
|
|
17
|
+
result.push({
|
|
18
|
+
text: match[2],
|
|
19
|
+
bold: true,
|
|
20
|
+
italic: false
|
|
21
|
+
});
|
|
22
|
+
} else if (match[3]) {
|
|
23
|
+
result.push({
|
|
24
|
+
text: match[4],
|
|
25
|
+
bold: false,
|
|
26
|
+
italic: true
|
|
27
|
+
});
|
|
28
|
+
} else if (match[5]) {
|
|
29
|
+
result.push({
|
|
30
|
+
text: match[5],
|
|
31
|
+
bold: false,
|
|
32
|
+
italic: false
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
function wrapWord(context, word, width, letterSpacing = 0) {
|
|
39
|
+
if (word.text.length < 2) return word;
|
|
40
|
+
let index = 2;
|
|
41
|
+
for (; index < word.text.length; index++) {
|
|
42
|
+
const substring = word.text.substring(0, index);
|
|
43
|
+
const textWidth = context.measureText(substring).width + (index - 1) * letterSpacing;
|
|
44
|
+
if (textWidth < width) continue;
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
...word,
|
|
49
|
+
text: word.text.substring(0, index - 1)
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function wrapLine(context, lineParts, width, letterSpacing = 0) {
|
|
53
|
+
const lines = [];
|
|
54
|
+
let currentLine = [];
|
|
55
|
+
let currentWidth = 0;
|
|
56
|
+
lineParts.forEach(part => {
|
|
57
|
+
let partText = part.text;
|
|
58
|
+
while (partText.length > 0) {
|
|
59
|
+
const remainingWidth = width - currentWidth;
|
|
60
|
+
const partWidth = context.measureText(partText).width + (partText.length - 1) * letterSpacing;
|
|
61
|
+
if (partWidth <= remainingWidth) {
|
|
62
|
+
currentLine.push({
|
|
63
|
+
...part,
|
|
64
|
+
text: partText
|
|
65
|
+
});
|
|
66
|
+
currentWidth += partWidth;
|
|
67
|
+
partText = '';
|
|
68
|
+
} else {
|
|
69
|
+
const wrappedPart = wrapWord(context, {
|
|
70
|
+
...part,
|
|
71
|
+
text: partText
|
|
72
|
+
}, remainingWidth, letterSpacing);
|
|
73
|
+
currentLine.push(wrappedPart);
|
|
74
|
+
lines.push(currentLine);
|
|
75
|
+
currentLine = [];
|
|
76
|
+
currentWidth = 0;
|
|
77
|
+
partText = partText.substring(wrappedPart.text.length);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
if (currentLine.length > 0) {
|
|
82
|
+
lines.push(currentLine);
|
|
83
|
+
}
|
|
84
|
+
return lines;
|
|
85
|
+
}
|
|
86
|
+
function splitTextToLines(context, text, width, wrap, supportMarkdown, letterSpacing = 0) {
|
|
87
|
+
const lines = String(text).split('\n');
|
|
88
|
+
if (wrap) {
|
|
89
|
+
return [].concat.apply([], lines.map(line => wrapLine(context, supportMarkdown ? parseMarkdown(line) : [{
|
|
90
|
+
text: line,
|
|
91
|
+
bold: false,
|
|
92
|
+
italic: false
|
|
93
|
+
}], width, letterSpacing)));
|
|
94
|
+
} else {
|
|
95
|
+
return lines.map(line => supportMarkdown ? parseMarkdown(line) : [{
|
|
96
|
+
text: line,
|
|
97
|
+
bold: false,
|
|
98
|
+
italic: false
|
|
99
|
+
}]);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function textLines(context, width, font, text, wrap, supportMarkdown, letterSpacing = 0) {
|
|
103
|
+
if (!text) return [];
|
|
104
|
+
context.save();
|
|
105
|
+
context.font = font;
|
|
106
|
+
var lines = splitTextToLines(context, text, width, !!wrap, supportMarkdown, letterSpacing);
|
|
107
|
+
context.restore();
|
|
108
|
+
return lines;
|
|
109
|
+
}
|
|
110
|
+
function font(style) {
|
|
111
|
+
var {
|
|
112
|
+
fontFamily = _const.DEFAULT.FONT_FAMILY,
|
|
113
|
+
bold = _const.DEFAULT.BOLD,
|
|
114
|
+
italic = _const.DEFAULT.ITALIC,
|
|
115
|
+
fontSize = _const.DEFAULT.FONT_SIZE
|
|
116
|
+
} = style;
|
|
117
|
+
var fonts = [];
|
|
118
|
+
bold && fonts.push('bold');
|
|
119
|
+
italic && fonts.push('italic');
|
|
120
|
+
fonts.push(fontSize + 'px');
|
|
121
|
+
fonts.push(fontFamily);
|
|
122
|
+
return fonts.join(' ');
|
|
123
|
+
}
|
|
124
|
+
function getLineWidth(context, line, baseStyle, letterSpacing = 0) {
|
|
125
|
+
return line.reduce((width, part) => {
|
|
126
|
+
context.font = getStyleFont(baseStyle, part);
|
|
127
|
+
return width + context.measureText(part.text).width + letterSpacing * (part.text.length - 1);
|
|
128
|
+
}, 0);
|
|
129
|
+
}
|
|
130
|
+
function getStyleFont(baseStyle, part) {
|
|
131
|
+
let boldStyle = baseStyle.bold || part.bold;
|
|
132
|
+
let italicStyle = baseStyle.italic || part.italic;
|
|
133
|
+
let fonts = [];
|
|
134
|
+
boldStyle && fonts.push('bold');
|
|
135
|
+
italicStyle && fonts.push('italic');
|
|
136
|
+
fonts.push(baseStyle.fontSize + 'px');
|
|
137
|
+
fonts.push(baseStyle.fontFamily);
|
|
138
|
+
return fonts.join(' ');
|
|
139
|
+
}
|
|
140
|
+
function drawText(context, bounds, lines, style) {
|
|
141
|
+
var {
|
|
142
|
+
alpha,
|
|
143
|
+
fontColor = _const.DEFAULT.FONT_COLOR,
|
|
144
|
+
textAlign = _const.DEFAULT.TEXT_ALIGN,
|
|
145
|
+
textBaseline = _const.DEFAULT.TEXT_BASELINE,
|
|
146
|
+
textBackgroundStyle,
|
|
147
|
+
fontSize,
|
|
148
|
+
lineHeight,
|
|
149
|
+
textWrap,
|
|
150
|
+
textOverflow,
|
|
151
|
+
letterSpacing = 0
|
|
152
|
+
} = style;
|
|
153
|
+
alpha = alpha !== undefined ? alpha : 1;
|
|
154
|
+
fontSize ||= _const.DEFAULT.FONT_SIZE;
|
|
155
|
+
lineHeight ||= fontSize * 1.2;
|
|
156
|
+
context.save();
|
|
157
|
+
context.beginPath();
|
|
158
|
+
var {
|
|
159
|
+
left,
|
|
160
|
+
top,
|
|
161
|
+
width,
|
|
162
|
+
height
|
|
163
|
+
} = bounds;
|
|
164
|
+
context.font = font(style);
|
|
165
|
+
if (!textWrap && textOverflow) {
|
|
166
|
+
const clippedLines = fittingText(textOverflow, context, lines, width);
|
|
167
|
+
lines = clippedLines;
|
|
168
|
+
}
|
|
169
|
+
var textsHeight = lines.length * lineHeight;
|
|
170
|
+
var baseY;
|
|
171
|
+
switch (textBaseline) {
|
|
172
|
+
case 'top':
|
|
173
|
+
baseY = top;
|
|
174
|
+
context.textBaseline = 'top';
|
|
175
|
+
break;
|
|
176
|
+
case 'bottom':
|
|
177
|
+
baseY = top + height - textsHeight + lineHeight;
|
|
178
|
+
context.textBaseline = 'bottom';
|
|
179
|
+
break;
|
|
180
|
+
case 'middle':
|
|
181
|
+
default:
|
|
182
|
+
baseY = top + height / 2 - textsHeight / 2 + lineHeight / 2;
|
|
183
|
+
context.textBaseline = 'middle';
|
|
184
|
+
}
|
|
185
|
+
context.globalAlpha *= alpha;
|
|
186
|
+
context.fillStyle = fontColor;
|
|
187
|
+
lines.forEach((line, i) => {
|
|
188
|
+
let y = baseY + i * lineHeight;
|
|
189
|
+
let lineWidth = getLineWidth(context, line, style, letterSpacing);
|
|
190
|
+
let x = left;
|
|
191
|
+
switch (textAlign) {
|
|
192
|
+
case 'left':
|
|
193
|
+
x = left;
|
|
194
|
+
break;
|
|
195
|
+
case 'right':
|
|
196
|
+
x = left + width - lineWidth;
|
|
197
|
+
break;
|
|
198
|
+
case 'center':
|
|
199
|
+
x = left + (width - lineWidth) / 2;
|
|
200
|
+
break;
|
|
201
|
+
case 'justify':
|
|
202
|
+
x = left;
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
if (textBackgroundStyle) {
|
|
206
|
+
context.fillStyle = textBackgroundStyle;
|
|
207
|
+
(0, _roundRect.roundRect)(context, x - 4, y - fontSize / 2 - 4, lineWidth + 8, fontSize + 8, 4, true, false);
|
|
208
|
+
context.fillStyle = fontColor;
|
|
209
|
+
}
|
|
210
|
+
if (textAlign === 'justify' && i < lines.length - 1 && line.length > 1) {
|
|
211
|
+
let totalSpacing = width - lineWidth;
|
|
212
|
+
let spaceCount = line.length - 1;
|
|
213
|
+
let wordSpacing = totalSpacing / spaceCount;
|
|
214
|
+
line.forEach((part, index) => {
|
|
215
|
+
context.font = getStyleFont(style, part);
|
|
216
|
+
context.fillText(part.text, x, y);
|
|
217
|
+
x += context.measureText(part.text).width + (index < spaceCount ? wordSpacing : 0);
|
|
218
|
+
});
|
|
219
|
+
} else {
|
|
220
|
+
line.forEach(part => {
|
|
221
|
+
context.font = getStyleFont(style, part);
|
|
222
|
+
[...part.text].forEach(char => {
|
|
223
|
+
context.fillText(char, x, y);
|
|
224
|
+
x += context.measureText(char).width + letterSpacing;
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
context.restore();
|
|
230
|
+
}
|
|
231
|
+
function fittingText(textOverflow, context, lines, maxWidth) {
|
|
232
|
+
const ellipsis = textOverflow === 'ellipsis' ? '…' : '';
|
|
233
|
+
const ellipsisWidth = context.measureText(ellipsis).width;
|
|
234
|
+
let newLines = [];
|
|
235
|
+
let currentWidth = 0;
|
|
236
|
+
for (let line of lines) {
|
|
237
|
+
let newLine = [];
|
|
238
|
+
for (let part of line) {
|
|
239
|
+
let partWidth = context.measureText(part.text).width;
|
|
240
|
+
if (currentWidth + partWidth <= maxWidth - (textOverflow === 'ellipsis' ? ellipsisWidth : 0)) {
|
|
241
|
+
newLine.push(part);
|
|
242
|
+
currentWidth += partWidth;
|
|
243
|
+
} else {
|
|
244
|
+
let clippedPart = clipPart(context, part, maxWidth - currentWidth - (textOverflow === 'ellipsis' ? ellipsisWidth : 0), textOverflow);
|
|
245
|
+
newLine.push(clippedPart);
|
|
246
|
+
newLines.push(newLine);
|
|
247
|
+
return newLines;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
newLines.push(newLine);
|
|
251
|
+
currentWidth = 0;
|
|
252
|
+
}
|
|
253
|
+
return newLines;
|
|
254
|
+
}
|
|
255
|
+
function clipPart(context, part, maxWidth, textOverflow) {
|
|
256
|
+
let clippedText = '';
|
|
257
|
+
for (let i = 0; i < part.text.length; i++) {
|
|
258
|
+
let testText = clippedText + part.text[i];
|
|
259
|
+
if (context.measureText(testText).width > maxWidth) {
|
|
260
|
+
break;
|
|
261
|
+
}
|
|
262
|
+
clippedText = testText;
|
|
263
|
+
}
|
|
264
|
+
return {
|
|
265
|
+
...part,
|
|
266
|
+
text: clippedText + (textOverflow === 'ellipsis' ? '…' : '')
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","names":["_const","require","_roundRect","parseMarkdown","text","regex","result","match","exec","push","bold","italic","wrapWord","context","word","width","letterSpacing","length","index","substring","textWidth","measureText","wrapLine","lineParts","lines","currentLine","currentWidth","forEach","part","partText","remainingWidth","partWidth","wrappedPart","splitTextToLines","wrap","supportMarkdown","String","split","concat","apply","map","line","textLines","font","save","restore","style","fontFamily","DEFAULT","FONT_FAMILY","BOLD","ITALIC","fontSize","FONT_SIZE","fonts","join","getLineWidth","baseStyle","reduce","getStyleFont","boldStyle","italicStyle","drawText","bounds","alpha","fontColor","FONT_COLOR","textAlign","TEXT_ALIGN","textBaseline","TEXT_BASELINE","textBackgroundStyle","lineHeight","textWrap","textOverflow","undefined","beginPath","left","top","height","clippedLines","fittingText","textsHeight","baseY","globalAlpha","fillStyle","i","y","lineWidth","x","roundRect","totalSpacing","spaceCount","wordSpacing","fillText","char","maxWidth","ellipsis","ellipsisWidth","newLines","newLine","clippedPart","clipPart","clippedText","testText"],"sources":["../../../src/components/drawer/text.js"],"sourcesContent":["import { DEFAULT } from '../../const.js'\nimport { roundRect } from '../../core/round-rect.js'\n\nfunction parseMarkdown(text) {\n const regex = /(\\*\\*|__)(.*?)\\1|(\\*|_)(.*?)\\3|([^\\*_]+)/g\n let result = []\n let match\n while ((match = regex.exec(text)) !== null) {\n if (match[1]) {\n result.push({ text: match[2], bold: true, italic: false })\n } else if (match[3]) {\n result.push({ text: match[4], bold: false, italic: true })\n } else if (match[5]) {\n result.push({ text: match[5], bold: false, italic: false })\n }\n }\n return result\n}\n\nfunction wrapWord(context, word, width, letterSpacing = 0) {\n if (word.text.length < 2) return word\n\n let index = 2\n for (; index < word.text.length; index++) {\n const substring = word.text.substring(0, index)\n const textWidth = context.measureText(substring).width + (index - 1) * letterSpacing\n if (textWidth < width) continue\n\n break\n }\n\n return { ...word, text: word.text.substring(0, index - 1) }\n}\n\nfunction wrapLine(context, lineParts, width, letterSpacing = 0) {\n const lines = []\n let currentLine = []\n let currentWidth = 0\n\n lineParts.forEach(part => {\n let partText = part.text\n while (partText.length > 0) {\n const remainingWidth = width - currentWidth\n const partWidth = context.measureText(partText).width + (partText.length - 1) * letterSpacing\n\n if (partWidth <= remainingWidth) {\n currentLine.push({ ...part, text: partText })\n currentWidth += partWidth\n partText = ''\n } else {\n const wrappedPart = wrapWord(context, { ...part, text: partText }, remainingWidth, letterSpacing)\n currentLine.push(wrappedPart)\n lines.push(currentLine)\n currentLine = []\n currentWidth = 0\n partText = partText.substring(wrappedPart.text.length)\n }\n }\n })\n\n if (currentLine.length > 0) {\n lines.push(currentLine)\n }\n\n return lines\n}\n\nfunction splitTextToLines(context, text, width, wrap, supportMarkdown, letterSpacing = 0) {\n const lines = String(text).split('\\n')\n if (wrap) {\n return [].concat.apply(\n [],\n lines.map(line =>\n wrapLine(\n context,\n supportMarkdown ? parseMarkdown(line) : [{ text: line, bold: false, italic: false }],\n width,\n letterSpacing\n )\n )\n )\n } else {\n return lines.map(line => (supportMarkdown ? parseMarkdown(line) : [{ text: line, bold: false, italic: false }]))\n }\n}\n\nexport function textLines(context, width, font, text, wrap, supportMarkdown, letterSpacing = 0) {\n if (!text) return []\n\n context.save()\n context.font = font\n var lines = splitTextToLines(context, text, width, !!wrap, supportMarkdown, letterSpacing)\n context.restore()\n\n return lines\n}\n\nexport function font(style) {\n var {\n fontFamily = DEFAULT.FONT_FAMILY,\n bold = DEFAULT.BOLD,\n italic = DEFAULT.ITALIC,\n fontSize = DEFAULT.FONT_SIZE\n } = style\n\n var fonts = []\n\n bold && fonts.push('bold')\n italic && fonts.push('italic')\n fonts.push(fontSize + 'px')\n fonts.push(fontFamily)\n\n return fonts.join(' ')\n}\n\nfunction getLineWidth(context, line, baseStyle, letterSpacing = 0) {\n return line.reduce((width, part) => {\n context.font = getStyleFont(baseStyle, part)\n return width + context.measureText(part.text).width + letterSpacing * (part.text.length - 1)\n }, 0)\n}\n\nfunction getStyleFont(baseStyle, part) {\n let boldStyle = baseStyle.bold || part.bold\n let italicStyle = baseStyle.italic || part.italic\n let fonts = []\n\n boldStyle && fonts.push('bold')\n italicStyle && fonts.push('italic')\n fonts.push(baseStyle.fontSize + 'px')\n fonts.push(baseStyle.fontFamily)\n\n return fonts.join(' ')\n}\n\nexport function drawText(context, bounds, lines, style) {\n var {\n alpha,\n fontColor = DEFAULT.FONT_COLOR,\n textAlign = DEFAULT.TEXT_ALIGN,\n textBaseline = DEFAULT.TEXT_BASELINE,\n textBackgroundStyle,\n fontSize,\n lineHeight,\n textWrap,\n textOverflow,\n letterSpacing = 0\n } = style\n\n alpha = alpha !== undefined ? alpha : 1\n fontSize ||= DEFAULT.FONT_SIZE\n lineHeight ||= fontSize * 1.2\n\n context.save()\n context.beginPath()\n\n var { left, top, width, height } = bounds\n context.font = font(style)\n\n if (!textWrap && textOverflow) {\n const clippedLines = fittingText(textOverflow, context, lines, width)\n lines = clippedLines\n }\n\n var textsHeight = lines.length * lineHeight\n var baseY\n\n switch (textBaseline) {\n case 'top':\n baseY = top\n context.textBaseline = 'top'\n break\n case 'bottom':\n baseY = top + height - textsHeight + lineHeight\n context.textBaseline = 'bottom'\n break\n case 'middle':\n default:\n baseY = top + height / 2 - textsHeight / 2 + lineHeight / 2\n context.textBaseline = 'middle'\n }\n\n context.globalAlpha *= alpha\n context.fillStyle = fontColor\n\n lines.forEach((line, i) => {\n let y = baseY + i * lineHeight\n let lineWidth = getLineWidth(context, line, style, letterSpacing)\n let x = left\n\n switch (textAlign) {\n case 'left':\n x = left\n break\n case 'right':\n x = left + width - lineWidth\n break\n case 'center':\n x = left + (width - lineWidth) / 2\n break\n case 'justify':\n x = left\n break\n }\n\n if (textBackgroundStyle) {\n context.fillStyle = textBackgroundStyle\n roundRect(context, x - 4, y - fontSize / 2 - 4, lineWidth + 8, fontSize + 8, 4, true, false)\n context.fillStyle = fontColor\n }\n\n if (textAlign === 'justify' && i < lines.length - 1 && line.length > 1) {\n let totalSpacing = width - lineWidth\n let spaceCount = line.length - 1\n let wordSpacing = totalSpacing / spaceCount\n\n line.forEach((part, index) => {\n context.font = getStyleFont(style, part)\n context.fillText(part.text, x, y)\n x += context.measureText(part.text).width + (index < spaceCount ? wordSpacing : 0)\n })\n } else {\n line.forEach(part => {\n context.font = getStyleFont(style, part)\n ;[...part.text].forEach(char => {\n context.fillText(char, x, y)\n x += context.measureText(char).width + letterSpacing\n })\n })\n }\n })\n\n context.restore()\n}\n\nfunction fittingText(textOverflow, context, lines, maxWidth) {\n const ellipsis = textOverflow === 'ellipsis' ? '…' : ''\n const ellipsisWidth = context.measureText(ellipsis).width\n\n let newLines = []\n let currentWidth = 0\n\n for (let line of lines) {\n let newLine = []\n for (let part of line) {\n let partWidth = context.measureText(part.text).width\n if (currentWidth + partWidth <= maxWidth - (textOverflow === 'ellipsis' ? ellipsisWidth : 0)) {\n newLine.push(part)\n currentWidth += partWidth\n } else {\n let clippedPart = clipPart(\n context,\n part,\n maxWidth - currentWidth - (textOverflow === 'ellipsis' ? ellipsisWidth : 0),\n textOverflow\n )\n newLine.push(clippedPart)\n newLines.push(newLine)\n return newLines\n }\n }\n newLines.push(newLine)\n currentWidth = 0\n }\n return newLines\n}\n\nfunction clipPart(context, part, maxWidth, textOverflow) {\n let clippedText = ''\n for (let i = 0; i < part.text.length; i++) {\n let testText = clippedText + part.text[i]\n if (context.measureText(testText).width > maxWidth) {\n break\n }\n clippedText = testText\n }\n return { ...part, text: clippedText + (textOverflow === 'ellipsis' ? '…' : '') }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _ellipseAnchors = _interopRequireDefault(require("./anchor/ellipse-anchors.js"));
|
|
8
|
+
var _component = _interopRequireDefault(require("./component.js"));
|
|
9
|
+
var _connectable = _interopRequireDefault(require("./mixins/connectable.js"));
|
|
10
|
+
var _ellipseOutline = _interopRequireDefault(require("./outline/ellipse-outline.js"));
|
|
11
|
+
var _shape = _interopRequireDefault(require("./shape.js"));
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
/*
|
|
14
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const NATURE = {
|
|
18
|
+
mutable: false,
|
|
19
|
+
resizable: true,
|
|
20
|
+
rotatable: true,
|
|
21
|
+
properties: [{
|
|
22
|
+
type: 'angle',
|
|
23
|
+
label: 'start-angle',
|
|
24
|
+
name: 'startAngle',
|
|
25
|
+
property: 'startAngle'
|
|
26
|
+
}, {
|
|
27
|
+
type: 'angle',
|
|
28
|
+
label: 'end-angle',
|
|
29
|
+
name: 'endAngle',
|
|
30
|
+
property: 'endAngle'
|
|
31
|
+
}],
|
|
32
|
+
'value-property': 'text'
|
|
33
|
+
};
|
|
34
|
+
class Ellipse extends (0, _connectable.default)(_shape.default) {
|
|
35
|
+
is3dish() {
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
render(context) {
|
|
39
|
+
var {
|
|
40
|
+
cx,
|
|
41
|
+
cy,
|
|
42
|
+
rx,
|
|
43
|
+
ry,
|
|
44
|
+
startAngle,
|
|
45
|
+
endAngle,
|
|
46
|
+
anticlockwise
|
|
47
|
+
} = this.state;
|
|
48
|
+
context.beginPath();
|
|
49
|
+
context.ellipse(cx, cy, Math.abs(rx), Math.abs(ry), 0, startAngle || 0, endAngle || 2 * Math.PI, anticlockwise);
|
|
50
|
+
if (startAngle !== undefined && endAngle !== undefined) {
|
|
51
|
+
context.lineTo(cx, cy);
|
|
52
|
+
context.closePath();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
get path() {
|
|
56
|
+
var {
|
|
57
|
+
cx,
|
|
58
|
+
cy,
|
|
59
|
+
rx,
|
|
60
|
+
ry
|
|
61
|
+
} = this.state;
|
|
62
|
+
return [{
|
|
63
|
+
x: cx - rx,
|
|
64
|
+
y: cy - ry
|
|
65
|
+
}, {
|
|
66
|
+
x: cx + rx,
|
|
67
|
+
y: cy - ry
|
|
68
|
+
}, {
|
|
69
|
+
x: cx + rx,
|
|
70
|
+
y: cy + ry
|
|
71
|
+
}, {
|
|
72
|
+
x: cx - rx,
|
|
73
|
+
y: cy + ry
|
|
74
|
+
}];
|
|
75
|
+
}
|
|
76
|
+
set path(path) {
|
|
77
|
+
var left_top = path[0];
|
|
78
|
+
var right_bottom = path[2];
|
|
79
|
+
this.set({
|
|
80
|
+
cx: left_top.x + (right_bottom.x - left_top.x) / 2,
|
|
81
|
+
cy: left_top.y + (right_bottom.y - left_top.y) / 2,
|
|
82
|
+
rx: (right_bottom.x - left_top.x) / 2,
|
|
83
|
+
ry: (right_bottom.y - left_top.y) / 2
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
contains(x, y) {
|
|
87
|
+
var {
|
|
88
|
+
cx,
|
|
89
|
+
cy,
|
|
90
|
+
rx,
|
|
91
|
+
ry
|
|
92
|
+
} = this.state;
|
|
93
|
+
var normx = (x - cx) / (rx * 2 - 0.5);
|
|
94
|
+
var normy = (y - cy) / (ry * 2 - 0.5);
|
|
95
|
+
return normx * normx + normy * normy < 0.25;
|
|
96
|
+
}
|
|
97
|
+
outline(progress) {
|
|
98
|
+
return (0, _ellipseOutline.default)(this, progress);
|
|
99
|
+
}
|
|
100
|
+
get anchors() {
|
|
101
|
+
return (0, _ellipseAnchors.default)(this);
|
|
102
|
+
}
|
|
103
|
+
get nature() {
|
|
104
|
+
return NATURE;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.default = Ellipse;
|
|
108
|
+
_component.default.memoize(Ellipse.prototype, 'path', false);
|
|
109
|
+
_component.default.register('ellipse', Ellipse);
|
|
110
|
+
//# sourceMappingURL=ellipse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ellipse.js","names":["_ellipseAnchors","_interopRequireDefault","require","_component","_connectable","_ellipseOutline","_shape","e","__esModule","default","NATURE","mutable","resizable","rotatable","properties","type","label","name","property","Ellipse","Connectable","Shape","is3dish","render","context","cx","cy","rx","ry","startAngle","endAngle","anticlockwise","state","beginPath","ellipse","Math","abs","PI","undefined","lineTo","closePath","path","x","y","left_top","right_bottom","set","contains","normx","normy","outline","progress","ellipseOutline","anchors","ellipseAnchors","nature","exports","Component","memoize","prototype","register"],"sources":["../../src/components/ellipse.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport ellipseAnchors from './anchor/ellipse-anchors.js'\nimport Component from './component.js'\nimport Connectable from './mixins/connectable.js'\nimport ellipseOutline from './outline/ellipse-outline.js'\nimport Shape from './shape.js'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'angle',\n label: 'start-angle',\n name: 'startAngle',\n property: 'startAngle'\n },\n {\n type: 'angle',\n label: 'end-angle',\n name: 'endAngle',\n property: 'endAngle'\n }\n ],\n 'value-property': 'text'\n}\n\nexport default class Ellipse extends Connectable(Shape) {\n is3dish() {\n return true\n }\n\n render(context) {\n var { cx, cy, rx, ry, startAngle, endAngle, anticlockwise } = this.state\n\n context.beginPath()\n\n context.ellipse(cx, cy, Math.abs(rx), Math.abs(ry), 0, startAngle || 0, endAngle || 2 * Math.PI, anticlockwise)\n\n if (startAngle !== undefined && endAngle !== undefined) {\n context.lineTo(cx, cy)\n context.closePath()\n }\n }\n\n get path() {\n var { cx, cy, rx, ry } = this.state\n\n return [\n {\n x: cx - rx,\n y: cy - ry\n },\n {\n x: cx + rx,\n y: cy - ry\n },\n {\n x: cx + rx,\n y: cy + ry\n },\n {\n x: cx - rx,\n y: cy + ry\n }\n ]\n }\n\n set path(path) {\n var left_top = path[0]\n var right_bottom = path[2]\n\n this.set({\n cx: left_top.x + (right_bottom.x - left_top.x) / 2,\n cy: left_top.y + (right_bottom.y - left_top.y) / 2,\n rx: (right_bottom.x - left_top.x) / 2,\n ry: (right_bottom.y - left_top.y) / 2\n })\n }\n\n contains(x, y) {\n var { cx, cy, rx, ry } = this.state\n\n var normx = (x - cx) / (rx * 2 - 0.5)\n var normy = (y - cy) / (ry * 2 - 0.5)\n\n return normx * normx + normy * normy < 0.25\n }\n\n outline(progress) {\n return ellipseOutline(this, progress)\n }\n\n get anchors() {\n return ellipseAnchors(this)\n }\n\n get nature() {\n return NATURE\n }\n}\n\nComponent.memoize(Ellipse.prototype, 'path', false)\n\nComponent.register('ellipse', Ellipse)\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ondropfile = ondropfile;
|
|
7
|
+
function ondropfile(transfered, files) {
|
|
8
|
+
for (let i = 0; i < transfered.length; i++) {
|
|
9
|
+
if (transfered[i].type.startsWith('image/')) {
|
|
10
|
+
this.set('fillStyle', {
|
|
11
|
+
type: 'pattern',
|
|
12
|
+
image: files[i],
|
|
13
|
+
fitPattern: true
|
|
14
|
+
});
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=ondropfile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ondropfile.js","names":["ondropfile","transfered","files","i","length","type","startsWith","set","image","fitPattern"],"sources":["../../../src/components/file/ondropfile.js"],"sourcesContent":["export function ondropfile(transfered, files) {\n for (let i = 0; i < transfered.length; i++) {\n if (transfered[i].type.startsWith('image/')) {\n this.set('fillStyle', {\n type: 'pattern',\n image: files[i],\n fitPattern: true\n })\n\n return\n }\n }\n}\n"],"mappings":";;;;;;AAAO,SAASA,UAAUA,CAACC,UAAU,EAAEC,KAAK,EAAE;EAC5C,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,UAAU,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;IAC1C,IAAIF,UAAU,CAACE,CAAC,CAAC,CAACE,IAAI,CAACC,UAAU,CAAC,QAAQ,CAAC,EAAE;MAC3C,IAAI,CAACC,GAAG,CAAC,WAAW,EAAE;QACpBF,IAAI,EAAE,SAAS;QACfG,KAAK,EAAEN,KAAK,CAACC,CAAC,CAAC;QACfM,UAAU,EAAE;MACd,CAAC,CAAC;MAEF;IACF;EACF;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = fit;
|
|
7
|
+
/*
|
|
8
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
function _fitNone(container, model_layer, target_element) {
|
|
12
|
+
/* 설정된 단위에 맞춰서, 최초의 scene scale을 설정한다. */
|
|
13
|
+
var scale = container.unitScale;
|
|
14
|
+
model_layer.set('scale', {
|
|
15
|
+
x: scale,
|
|
16
|
+
y: scale
|
|
17
|
+
});
|
|
18
|
+
model_layer.set('translate', {
|
|
19
|
+
x: 0,
|
|
20
|
+
y: 0
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
function _fitBoth(container, model_layer, target_element) {
|
|
24
|
+
var {
|
|
25
|
+
width,
|
|
26
|
+
height
|
|
27
|
+
} = model_layer.model;
|
|
28
|
+
var vw = target_element.clientWidth,
|
|
29
|
+
vh = target_element.clientHeight;
|
|
30
|
+
model_layer.set('scale', {
|
|
31
|
+
x: vw / width,
|
|
32
|
+
y: vh / height
|
|
33
|
+
});
|
|
34
|
+
model_layer.set('translate', {
|
|
35
|
+
x: 0,
|
|
36
|
+
y: 0
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function _fitCenter(container, model_layer, target_element) {
|
|
40
|
+
/* 설정된 단위에 맞춰서, 최초의 scene scale을 설정한다. */
|
|
41
|
+
var scale = container.unitScale;
|
|
42
|
+
var {
|
|
43
|
+
width,
|
|
44
|
+
height
|
|
45
|
+
} = model_layer.model;
|
|
46
|
+
model_layer.set('scale', {
|
|
47
|
+
x: scale,
|
|
48
|
+
y: scale
|
|
49
|
+
});
|
|
50
|
+
model_layer.set('translate', {
|
|
51
|
+
x: Math.max((target_element.clientWidth - width * scale) / 2, 0),
|
|
52
|
+
y: Math.max((target_element.clientHeight - height * scale) / 2, 0)
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function _fitWidth(container, model_layer, target_element) {
|
|
56
|
+
var scale = target_element.clientWidth / model_layer.get('width');
|
|
57
|
+
model_layer.set('scale', {
|
|
58
|
+
x: scale,
|
|
59
|
+
y: scale
|
|
60
|
+
});
|
|
61
|
+
model_layer.set('translate', {
|
|
62
|
+
x: 0,
|
|
63
|
+
y: 0
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
function _fitHeight(container, model_layer, target_element) {
|
|
67
|
+
var scale = target_element.clientHeight / model_layer.get('height');
|
|
68
|
+
model_layer.set('scale', {
|
|
69
|
+
x: scale,
|
|
70
|
+
y: scale
|
|
71
|
+
});
|
|
72
|
+
model_layer.set('translate', {
|
|
73
|
+
x: 0,
|
|
74
|
+
y: 0
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
function _fitRatio(container, model_layer, target_element) {
|
|
78
|
+
var {
|
|
79
|
+
width,
|
|
80
|
+
height
|
|
81
|
+
} = model_layer.model;
|
|
82
|
+
var vw = target_element.clientWidth,
|
|
83
|
+
vh = target_element.clientHeight;
|
|
84
|
+
var scaleX = vw / width;
|
|
85
|
+
var scaleY = vh / height;
|
|
86
|
+
var scale = Math.min(scaleX, scaleY);
|
|
87
|
+
model_layer.set('scale', {
|
|
88
|
+
x: scale,
|
|
89
|
+
y: scale
|
|
90
|
+
});
|
|
91
|
+
model_layer.set('translate', {
|
|
92
|
+
x: (vw - width * scale) / 2,
|
|
93
|
+
y: (vh - height * scale) / 2
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* !this should be root-container
|
|
99
|
+
*
|
|
100
|
+
* @param {String} type assigns fitMode property of root container before fitting
|
|
101
|
+
*/
|
|
102
|
+
function fit(type) {
|
|
103
|
+
var {
|
|
104
|
+
width,
|
|
105
|
+
height,
|
|
106
|
+
fitMode
|
|
107
|
+
} = this.model_layer.model;
|
|
108
|
+
var target_element = this.target_element; // Scene을 둘러싸고 있는 DIV element
|
|
109
|
+
var model_layer = this.model_layer;
|
|
110
|
+
this.fitMode = type || this.fitMode || fitMode || 'ratio';
|
|
111
|
+
if (!width || !height || !target_element || !target_element.clientWidth || !target_element.clientHeight) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
switch (this.fitMode) {
|
|
115
|
+
case 'center':
|
|
116
|
+
_fitCenter(this, model_layer, target_element);
|
|
117
|
+
break;
|
|
118
|
+
case 'both':
|
|
119
|
+
_fitBoth(this, model_layer, target_element);
|
|
120
|
+
break;
|
|
121
|
+
case 'width':
|
|
122
|
+
_fitWidth(this, model_layer, target_element);
|
|
123
|
+
break;
|
|
124
|
+
case 'height':
|
|
125
|
+
_fitHeight(this, model_layer, target_element);
|
|
126
|
+
break;
|
|
127
|
+
case 'ratio':
|
|
128
|
+
_fitRatio(this, model_layer, target_element);
|
|
129
|
+
break;
|
|
130
|
+
case 'none':
|
|
131
|
+
default:
|
|
132
|
+
_fitNone(this, model_layer, target_element);
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
this.resize();
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=fit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fit.js","names":["_fitNone","container","model_layer","target_element","scale","unitScale","set","x","y","_fitBoth","width","height","model","vw","clientWidth","vh","clientHeight","_fitCenter","Math","max","_fitWidth","get","_fitHeight","_fitRatio","scaleX","scaleY","min","fit","type","fitMode","resize"],"sources":["../../../src/components/fit/fit.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nfunction _fitNone(container, model_layer, target_element) {\n /* 설정된 단위에 맞춰서, 최초의 scene scale을 설정한다. */\n var scale = container.unitScale\n\n model_layer.set('scale', {\n x: scale,\n y: scale\n })\n\n model_layer.set('translate', {\n x: 0,\n y: 0\n })\n}\n\nfunction _fitBoth(container, model_layer, target_element) {\n var { width, height } = model_layer.model\n var vw = target_element.clientWidth,\n vh = target_element.clientHeight\n\n model_layer.set('scale', {\n x: vw / width,\n y: vh / height\n })\n\n model_layer.set('translate', {\n x: 0,\n y: 0\n })\n}\n\nfunction _fitCenter(container, model_layer, target_element) {\n /* 설정된 단위에 맞춰서, 최초의 scene scale을 설정한다. */\n var scale = container.unitScale\n var { width, height } = model_layer.model\n\n model_layer.set('scale', {\n x: scale,\n y: scale\n })\n\n model_layer.set('translate', {\n x: Math.max((target_element.clientWidth - width * scale) / 2, 0),\n y: Math.max((target_element.clientHeight - height * scale) / 2, 0)\n })\n}\n\nfunction _fitWidth(container, model_layer, target_element) {\n var scale = target_element.clientWidth / model_layer.get('width')\n\n model_layer.set('scale', {\n x: scale,\n y: scale\n })\n\n model_layer.set('translate', {\n x: 0,\n y: 0\n })\n}\n\nfunction _fitHeight(container, model_layer, target_element) {\n var scale = target_element.clientHeight / model_layer.get('height')\n\n model_layer.set('scale', {\n x: scale,\n y: scale\n })\n\n model_layer.set('translate', {\n x: 0,\n y: 0\n })\n}\n\nfunction _fitRatio(container, model_layer, target_element) {\n var { width, height } = model_layer.model\n var vw = target_element.clientWidth,\n vh = target_element.clientHeight\n\n var scaleX = vw / width\n var scaleY = vh / height\n var scale = Math.min(scaleX, scaleY)\n\n model_layer.set('scale', {\n x: scale,\n y: scale\n })\n\n model_layer.set('translate', {\n x: (vw - width * scale) / 2,\n y: (vh - height * scale) / 2\n })\n}\n\n/**\n * !this should be root-container\n *\n * @param {String} type assigns fitMode property of root container before fitting\n */\nexport default function fit(type) {\n var { width, height, fitMode } = this.model_layer.model\n\n var target_element = this.target_element // Scene을 둘러싸고 있는 DIV element\n var model_layer = this.model_layer\n\n this.fitMode = type || this.fitMode || fitMode || 'ratio'\n\n if (!width || !height || !target_element || !target_element.clientWidth || !target_element.clientHeight) {\n return\n }\n\n switch (this.fitMode) {\n case 'center':\n _fitCenter(this, model_layer, target_element)\n break\n case 'both':\n _fitBoth(this, model_layer, target_element)\n break\n case 'width':\n _fitWidth(this, model_layer, target_element)\n break\n case 'height':\n _fitHeight(this, model_layer, target_element)\n break\n case 'ratio':\n _fitRatio(this, model_layer, target_element)\n break\n case 'none':\n default:\n _fitNone(this, model_layer, target_element)\n break\n }\n\n this.resize()\n}\n"],"mappings":"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","ignoreList":[]}
|