ice-entity-designer 0.0.39 → 0.1.0
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/README.md +69 -14
- package/dist/index.cjs +1 -6
- package/dist/index.mjs +1 -6
- package/dist/index.umd.js +1 -6
- package/dist/react.cjs +1 -6
- package/dist/react.mjs +1 -6
- package/dist/types/bpmn/BpmnSimulator.d.mts +3 -3
- package/dist/types/bpmn/BpmnSimulator.d.ts +3 -3
- package/dist/types/bpmn/bpmn_shapes.d.mts +1 -1
- package/dist/types/bpmn/bpmn_shapes.d.ts +1 -1
- package/dist/types/bpmn/bpmn_validate.d.mts +1 -1
- package/dist/types/bpmn/bpmn_validate.d.ts +1 -1
- package/dist/types/bpmn/bpmn_xml.d.mts +1 -1
- package/dist/types/bpmn/bpmn_xml.d.ts +1 -1
- package/dist/types/designer/EntityDesigner.d.mts +3 -3
- package/dist/types/designer/EntityDesigner.d.ts +3 -3
- package/dist/types/er-component/Entity.d.mts +2 -2
- package/dist/types/er-component/Entity.d.ts +2 -2
- package/dist/types/er-component/Relation.d.mts +1 -1
- package/dist/types/er-component/Relation.d.ts +1 -1
- package/dist/types/flow/FlowDesigner.d.mts +4 -4
- package/dist/types/flow/FlowDesigner.d.ts +4 -4
- package/dist/types/flow/FlowEdge.d.mts +2 -2
- package/dist/types/flow/FlowEdge.d.ts +2 -2
- package/dist/types/flow/FlowNode.d.mts +3 -3
- package/dist/types/flow/FlowNode.d.ts +3 -3
- package/dist/types/flow/flow_shapes.d.mts +1 -1
- package/dist/types/flow/flow_shapes.d.ts +1 -1
- package/dist/types/gantt/GanttDependency.d.mts +1 -1
- package/dist/types/gantt/GanttDependency.d.ts +1 -1
- package/dist/types/gantt/GanttDesigner.d.mts +2 -2
- package/dist/types/gantt/GanttDesigner.d.ts +2 -2
- package/dist/types/gantt/GanttRuler.d.mts +2 -2
- package/dist/types/gantt/GanttRuler.d.ts +2 -2
- package/dist/types/gantt/GanttTask.d.mts +1 -1
- package/dist/types/gantt/GanttTask.d.ts +1 -1
- package/dist/types/gantt/gantt_text.d.mts +1 -1
- package/dist/types/gantt/gantt_text.d.ts +1 -1
- package/dist/types/index.d.mts +4 -13
- package/dist/types/index.d.ts +4 -13
- package/dist/types/power/PowerDesigner.d.mts +2 -2
- package/dist/types/power/PowerDesigner.d.ts +2 -2
- package/dist/types/power/power_shapes.d.mts +4 -4
- package/dist/types/power/power_shapes.d.ts +4 -4
- package/dist/types/power/power_voltage.d.mts +1 -1
- package/dist/types/power/power_voltage.d.ts +1 -1
- package/dist/types/react/context.d.mts +2 -2
- package/dist/types/react/context.d.ts +2 -2
- package/dist/types/react/index.d.mts +0 -1
- package/dist/types/react/index.d.ts +0 -1
- package/dist/types/react/session.d.mts +4 -4
- package/dist/types/react/session.d.ts +4 -4
- package/dist/types/react/types.d.mts +7 -7
- package/dist/types/react/types.d.ts +7 -7
- package/dist/types/secondary/SecondaryDesigner.d.mts +1 -1
- package/dist/types/secondary/SecondaryDesigner.d.ts +1 -1
- package/dist/types/secondary/secondary_shapes.d.mts +2 -2
- package/dist/types/secondary/secondary_shapes.d.ts +2 -2
- package/dist/types/statechart/StateNode.d.mts +2 -2
- package/dist/types/statechart/StateNode.d.ts +2 -2
- package/dist/types/statechart/StateTransition.d.mts +1 -1
- package/dist/types/statechart/StateTransition.d.ts +1 -1
- package/dist/types/statechart/StatechartDesigner.d.mts +1 -1
- package/dist/types/statechart/StatechartDesigner.d.ts +1 -1
- package/dist/types/statechart/statechart_text.d.mts +1 -1
- package/dist/types/statechart/statechart_text.d.ts +1 -1
- package/dist/types/uml/UmlClass.d.mts +2 -2
- package/dist/types/uml/UmlClass.d.ts +2 -2
- package/dist/types/uml/UmlDesigner.d.mts +1 -1
- package/dist/types/uml/UmlDesigner.d.ts +1 -1
- package/dist/types/uml/UmlRelation.d.mts +4 -4
- package/dist/types/uml/UmlRelation.d.ts +4 -4
- package/dist/types/uml/uml_text.d.mts +1 -1
- package/dist/types/uml/uml_text.d.ts +1 -1
- package/dist/types/utils/project_codec.d.mts +2 -2
- package/dist/types/utils/project_codec.d.ts +2 -2
- package/dist/types/utils/project_schema.d.mts +1 -1
- package/dist/types/utils/project_schema.d.ts +1 -1
- package/dist/types/utils/schema_validator.d.mts +1 -1
- package/dist/types/utils/schema_validator.d.ts +1 -1
- package/package.json +24 -20
- package/dist/types/gl-matrix.d.mts +0 -3273
- package/dist/types/gl-matrix.d.ts +0 -3273
- package/dist/types/ice-render/FrameManager.d.mts +0 -26
- package/dist/types/ice-render/FrameManager.d.ts +0 -26
- package/dist/types/ice-render/ICE.d.mts +0 -424
- package/dist/types/ice-render/ICE.d.ts +0 -424
- package/dist/types/ice-render/a11y/accessibility.d.mts +0 -46
- package/dist/types/ice-render/a11y/accessibility.d.ts +0 -46
- package/dist/types/ice-render/animation/AnimationManager.d.mts +0 -96
- package/dist/types/ice-render/animation/AnimationManager.d.ts +0 -96
- package/dist/types/ice-render/animation/Easing.d.mts +0 -33
- package/dist/types/ice-render/animation/Easing.d.ts +0 -33
- package/dist/types/ice-render/consts/BIG_ZINDEX_NUMBER.d.mts +0 -14
- package/dist/types/ice-render/consts/BIG_ZINDEX_NUMBER.d.ts +0 -14
- package/dist/types/ice-render/consts/COMPONENT_TYPE_MAPPING.d.mts +0 -45
- package/dist/types/ice-render/consts/COMPONENT_TYPE_MAPPING.d.ts +0 -45
- package/dist/types/ice-render/consts/DOM_EVENT_MAPPING_CONSTS.d.mts +0 -37
- package/dist/types/ice-render/consts/DOM_EVENT_MAPPING_CONSTS.d.ts +0 -37
- package/dist/types/ice-render/consts/ICE_EVENT_NAME_CONSTS.d.mts +0 -27
- package/dist/types/ice-render/consts/ICE_EVENT_NAME_CONSTS.d.ts +0 -27
- package/dist/types/ice-render/control-panel/AlignmentGuideManager.d.mts +0 -92
- package/dist/types/ice-render/control-panel/AlignmentGuideManager.d.ts +0 -92
- package/dist/types/ice-render/control-panel/ICEControlPanel.d.mts +0 -37
- package/dist/types/ice-render/control-panel/ICEControlPanel.d.ts +0 -37
- package/dist/types/ice-render/control-panel/ICEControlPanelManager.d.mts +0 -25
- package/dist/types/ice-render/control-panel/ICEControlPanelManager.d.ts +0 -25
- package/dist/types/ice-render/control-panel/link-controls/LineControlPanel.d.mts +0 -39
- package/dist/types/ice-render/control-panel/link-controls/LineControlPanel.d.ts +0 -39
- package/dist/types/ice-render/control-panel/transform-controls/ResizeControl.d.mts +0 -38
- package/dist/types/ice-render/control-panel/transform-controls/ResizeControl.d.ts +0 -38
- package/dist/types/ice-render/control-panel/transform-controls/RotateControl.d.mts +0 -12
- package/dist/types/ice-render/control-panel/transform-controls/RotateControl.d.ts +0 -12
- package/dist/types/ice-render/control-panel/transform-controls/TransformControlPanel.d.mts +0 -83
- package/dist/types/ice-render/control-panel/transform-controls/TransformControlPanel.d.ts +0 -83
- package/dist/types/ice-render/control-panel/transform-controls/constraints.d.mts +0 -24
- package/dist/types/ice-render/control-panel/transform-controls/constraints.d.ts +0 -24
- package/dist/types/ice-render/cross-platform/Path2DRecorder.d.mts +0 -76
- package/dist/types/ice-render/cross-platform/Path2DRecorder.d.ts +0 -76
- package/dist/types/ice-render/cross-platform/PolyfillPath2D.d.mts +0 -21
- package/dist/types/ice-render/cross-platform/PolyfillPath2D.d.ts +0 -21
- package/dist/types/ice-render/cross-platform/root.d.mts +0 -7
- package/dist/types/ice-render/cross-platform/root.d.ts +0 -7
- package/dist/types/ice-render/event/DOMEventDispatcher.d.mts +0 -75
- package/dist/types/ice-render/event/DOMEventDispatcher.d.ts +0 -75
- package/dist/types/ice-render/event/DOMEventInterceptor.d.mts +0 -36
- package/dist/types/ice-render/event/DOMEventInterceptor.d.ts +0 -36
- package/dist/types/ice-render/event/EventBus.d.mts +0 -27
- package/dist/types/ice-render/event/EventBus.d.ts +0 -27
- package/dist/types/ice-render/event/ICEEvent.d.mts +0 -46
- package/dist/types/ice-render/event/ICEEvent.d.ts +0 -46
- package/dist/types/ice-render/event/ICEEventTarget.d.mts +0 -106
- package/dist/types/ice-render/event/ICEEventTarget.d.ts +0 -106
- package/dist/types/ice-render/event/input-normalize.d.mts +0 -75
- package/dist/types/ice-render/event/input-normalize.d.ts +0 -75
- package/dist/types/ice-render/export/SvgExporter.d.mts +0 -54
- package/dist/types/ice-render/export/SvgExporter.d.ts +0 -54
- package/dist/types/ice-render/geometry/GeoLine.d.mts +0 -24
- package/dist/types/ice-render/geometry/GeoLine.d.ts +0 -24
- package/dist/types/ice-render/geometry/GeoPoint.d.mts +0 -53
- package/dist/types/ice-render/geometry/GeoPoint.d.ts +0 -53
- package/dist/types/ice-render/geometry/GeoUtil.d.mts +0 -73
- package/dist/types/ice-render/geometry/GeoUtil.d.ts +0 -73
- package/dist/types/ice-render/geometry/ICEBoundingBox.d.mts +0 -81
- package/dist/types/ice-render/geometry/ICEBoundingBox.d.ts +0 -81
- package/dist/types/ice-render/graphic/ICEComponent.d.mts +0 -535
- package/dist/types/ice-render/graphic/ICEComponent.d.ts +0 -535
- package/dist/types/ice-render/graphic/ICEDotPath.d.mts +0 -99
- package/dist/types/ice-render/graphic/ICEDotPath.d.ts +0 -99
- package/dist/types/ice-render/graphic/ICEImage.d.mts +0 -17
- package/dist/types/ice-render/graphic/ICEImage.d.ts +0 -17
- package/dist/types/ice-render/graphic/ICEPath.d.mts +0 -46
- package/dist/types/ice-render/graphic/ICEPath.d.ts +0 -46
- package/dist/types/ice-render/graphic/container/ICEGroup.d.mts +0 -111
- package/dist/types/ice-render/graphic/container/ICEGroup.d.ts +0 -111
- package/dist/types/ice-render/graphic/link/ICEBezier.d.mts +0 -23
- package/dist/types/ice-render/graphic/link/ICEBezier.d.ts +0 -23
- package/dist/types/ice-render/graphic/link/ICELinkHook.d.mts +0 -52
- package/dist/types/ice-render/graphic/link/ICELinkHook.d.ts +0 -52
- package/dist/types/ice-render/graphic/link/ICELinkSlot.d.mts +0 -54
- package/dist/types/ice-render/graphic/link/ICELinkSlot.d.ts +0 -54
- package/dist/types/ice-render/graphic/link/ICELinkSlotManager.d.mts +0 -28
- package/dist/types/ice-render/graphic/link/ICELinkSlotManager.d.ts +0 -28
- package/dist/types/ice-render/graphic/link/ICEPolyLine.d.mts +0 -316
- package/dist/types/ice-render/graphic/link/ICEPolyLine.d.ts +0 -316
- package/dist/types/ice-render/graphic/link/ICEVisioLink.d.mts +0 -163
- package/dist/types/ice-render/graphic/link/ICEVisioLink.d.ts +0 -163
- package/dist/types/ice-render/graphic/shape/ICECircle.d.mts +0 -19
- package/dist/types/ice-render/graphic/shape/ICECircle.d.ts +0 -19
- package/dist/types/ice-render/graphic/shape/ICEEllipse.d.mts +0 -29
- package/dist/types/ice-render/graphic/shape/ICEEllipse.d.ts +0 -29
- package/dist/types/ice-render/graphic/shape/ICEIsogon.d.mts +0 -52
- package/dist/types/ice-render/graphic/shape/ICEIsogon.d.ts +0 -52
- package/dist/types/ice-render/graphic/shape/ICERect.d.mts +0 -10
- package/dist/types/ice-render/graphic/shape/ICERect.d.ts +0 -10
- package/dist/types/ice-render/graphic/shape/ICERose.d.mts +0 -41
- package/dist/types/ice-render/graphic/shape/ICERose.d.ts +0 -41
- package/dist/types/ice-render/graphic/shape/ICEStar.d.mts +0 -45
- package/dist/types/ice-render/graphic/shape/ICEStar.d.ts +0 -45
- package/dist/types/ice-render/graphic/text/ICEText.d.mts +0 -158
- package/dist/types/ice-render/graphic/text/ICEText.d.ts +0 -158
- package/dist/types/ice-render/index.d.mts +0 -59
- package/dist/types/ice-render/index.d.ts +0 -59
- package/dist/types/ice-render/layout/ICEBorderLayout.d.mts +0 -34
- package/dist/types/ice-render/layout/ICEBorderLayout.d.ts +0 -34
- package/dist/types/ice-render/layout/ICEBoxLayout.d.mts +0 -30
- package/dist/types/ice-render/layout/ICEBoxLayout.d.ts +0 -30
- package/dist/types/ice-render/layout/ICECardLayout.d.mts +0 -36
- package/dist/types/ice-render/layout/ICECardLayout.d.ts +0 -36
- package/dist/types/ice-render/layout/ICEFlowLayout.d.mts +0 -31
- package/dist/types/ice-render/layout/ICEFlowLayout.d.ts +0 -31
- package/dist/types/ice-render/layout/ICEGridLayout.d.mts +0 -33
- package/dist/types/ice-render/layout/ICEGridLayout.d.ts +0 -33
- package/dist/types/ice-render/layout/ICELayeredLayout.d.mts +0 -49
- package/dist/types/ice-render/layout/ICELayeredLayout.d.ts +0 -49
- package/dist/types/ice-render/layout/ICELayoutManager.d.mts +0 -33
- package/dist/types/ice-render/layout/ICELayoutManager.d.ts +0 -33
- package/dist/types/ice-render/layout/ICEOverlayLayout.d.mts +0 -25
- package/dist/types/ice-render/layout/ICEOverlayLayout.d.ts +0 -25
- package/dist/types/ice-render/persistence/Deserializer.d.mts +0 -43
- package/dist/types/ice-render/persistence/Deserializer.d.ts +0 -43
- package/dist/types/ice-render/persistence/Serializer.d.mts +0 -35
- package/dist/types/ice-render/persistence/Serializer.d.ts +0 -35
- package/dist/types/ice-render/plugin/PluginHost.d.mts +0 -86
- package/dist/types/ice-render/plugin/PluginHost.d.ts +0 -86
- package/dist/types/ice-render/renderer/CanvasRenderer.d.mts +0 -150
- package/dist/types/ice-render/renderer/CanvasRenderer.d.ts +0 -150
- package/dist/types/ice-render/renderer/ObjectCache.d.mts +0 -79
- package/dist/types/ice-render/renderer/ObjectCache.d.ts +0 -79
- package/dist/types/ice-render/renderer/dirty-rect-util.d.mts +0 -86
- package/dist/types/ice-render/renderer/dirty-rect-util.d.ts +0 -86
- package/dist/types/ice-render/theme/ICETheme.d.mts +0 -382
- package/dist/types/ice-render/theme/ICETheme.d.ts +0 -382
- package/dist/types/ice-render/util/ImageCache.d.mts +0 -19
- package/dist/types/ice-render/util/ImageCache.d.ts +0 -19
- package/dist/types/ice-render/util/data-util.d.mts +0 -43
- package/dist/types/ice-render/util/data-util.d.ts +0 -43
- package/dist/types/ice-render/util/gl-matrix-skew.d.mts +0 -14
- package/dist/types/ice-render/util/gl-matrix-skew.d.ts +0 -14
- package/dist/types/ice-render/util/lang.d.mts +0 -28
- package/dist/types/ice-render/util/lang.d.ts +0 -28
- package/dist/types/ice-render/util/uuid.d.mts +0 -1
- package/dist/types/ice-render/util/uuid.d.ts +0 -1
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import ICEComponent from '../graphic/ICEComponent';
|
|
2
|
-
import ICE from '../ICE';
|
|
3
|
-
/**
|
|
4
|
-
* @class AnimationManager
|
|
5
|
-
*
|
|
6
|
-
* 动画管理器
|
|
7
|
-
*
|
|
8
|
-
* - 全局单例,一个 ICE 实例上只能有一个 AnimationManager 的实例。
|
|
9
|
-
*
|
|
10
|
-
* @singleton
|
|
11
|
-
* @see ICE
|
|
12
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
13
|
-
*/
|
|
14
|
-
declare class AnimationManager {
|
|
15
|
-
private animationMap;
|
|
16
|
-
private ice;
|
|
17
|
-
private paused;
|
|
18
|
-
private pausedAt;
|
|
19
|
-
private warned;
|
|
20
|
-
constructor(ice: ICE);
|
|
21
|
-
start(): this;
|
|
22
|
-
stop(): this;
|
|
23
|
-
private frameEventHandler;
|
|
24
|
-
/**
|
|
25
|
-
* 把值按点路径写入目标对象(支持 `transform.rotate` / `style.globalAlpha` 这类嵌套字段)。
|
|
26
|
-
*
|
|
27
|
-
* 旧实现直接 `newState[key] = value`,键里的点会被当成**字面量键名**,
|
|
28
|
-
* 于是 `animations: { 'transform.rotate': ... }` 静默失效(既不报错也不生效)。
|
|
29
|
-
* 多段路径共用同一父级时会逐段合并(`transform.rotate` 与 `transform.scale` 不互相覆盖)。
|
|
30
|
-
*/
|
|
31
|
-
private __writeValue;
|
|
32
|
-
/**
|
|
33
|
-
* 每一帧推进动画:计算各属性的取值。
|
|
34
|
-
*
|
|
35
|
-
* 支持三种配置形态(同一组件上可混用):
|
|
36
|
-
* 1. 单段补间:`{ from, to, duration }`
|
|
37
|
-
* 2. 关键帧时间轴:`{ keyframes: [{ offset, value, easing? }], duration }`
|
|
38
|
-
* - `offset` 为 0~1 的时间占比,缺省时按数组顺序均分,超出 [0,1] 会被夹紧;
|
|
39
|
-
* - `easing` 写在**段起始关键帧**上,作用于「该帧 → 下一帧」这一段;未写则用动画级 `easing`;
|
|
40
|
-
* - 时间轴之外的取值分别是首帧 / 末帧的值(保持,不外推)。
|
|
41
|
-
* 3. 缓动可用主题 motion token 语义名(`duration: 'normal'` / `easing: 'out'`)或 EasingProgress 方法名。
|
|
42
|
-
*
|
|
43
|
-
* 取值可以是**数值**,也可以是**等长的数字数组**(`transform.scale` / `transform.translate` /
|
|
44
|
-
* `transform.skew` 等逐元素补间)。
|
|
45
|
-
*
|
|
46
|
-
* 结束判定按**已流逝时间**而非「值是否越过 to」:弹簧类缓动中途会过冲(越过 to 再回落),
|
|
47
|
-
* 若按值判定,第一帧过冲就会被误判成结束、动画提前停在过冲点上。
|
|
48
|
-
*/
|
|
49
|
-
private tween;
|
|
50
|
-
/** 取进度 p 处的值:单段在 from→to 之间插值;关键帧按段插值(段内进度再经该段缓动)。 */
|
|
51
|
-
private __sampleValue;
|
|
52
|
-
/** 按进度 p 在 from/to 之间插值:数值直接线性,等长数字数组逐元素。 */
|
|
53
|
-
private __interpolate;
|
|
54
|
-
/** 补间取值是否合法:都是数字,或都是**等长**的数字数组。 */
|
|
55
|
-
private __isTweenable;
|
|
56
|
-
/** 取值种类:number | array(非空且全为数字) | null(不支持)。 */
|
|
57
|
-
private __valueKind;
|
|
58
|
-
/** 归一化关键帧到 animation.__frames(只做一次):夹紧 offset、排序、校验各帧取值同型。 */
|
|
59
|
-
private __normalizeKeyframes;
|
|
60
|
-
/** 解析缓动名 → 归一化进度函数;未知名称回退 linear 并只提示一次。 */
|
|
61
|
-
private __easingFn;
|
|
62
|
-
/** round: true 时对补间结果取整(数组逐元素)。 */
|
|
63
|
-
private __roundIfNeeded;
|
|
64
|
-
/** 供告警信息使用的取值描述。 */
|
|
65
|
-
private __describe;
|
|
66
|
-
/** 拒绝一个非法的动画配置:标记结束(不再每帧重试)并只提示一次。 */
|
|
67
|
-
private __reject;
|
|
68
|
-
/** 同一个动画配置只告警一次,避免非法配置每帧刷屏。 */
|
|
69
|
-
private __warnOnce;
|
|
70
|
-
/**
|
|
71
|
-
* 把动画配置里的 motion token 语义名解析成实际值(首次触发时执行,结果写回 animation 对象缓存):
|
|
72
|
-
* - duration: 'fast' | 'normal' | 'slow' | 'slower' → 主题 motion.duration 里的 ms。
|
|
73
|
-
* - easing: 'linear' | 'out' | 'inOut' | 'outQuart' | 'spring' | 'springSoft' | 'springSnappy'
|
|
74
|
-
* → 主题 motion.easing 里的缓动方法名。
|
|
75
|
-
* 若传的是数字/已存在的 Easing 方法名,则原样保留(向后兼容)。
|
|
76
|
-
*/
|
|
77
|
-
private __resolveMotion;
|
|
78
|
-
/**
|
|
79
|
-
* 判断动画到达终点后是否重复播放:
|
|
80
|
-
* - loop === true:无限循环;
|
|
81
|
-
* - iterationCount > 1:剩余次数递减,直到 1 次后结束。
|
|
82
|
-
*/
|
|
83
|
-
private shouldRepeat;
|
|
84
|
-
/**
|
|
85
|
-
* 暂停所有动画(冻结进度,恢复时从暂停处继续)。
|
|
86
|
-
*/
|
|
87
|
-
pause(): void;
|
|
88
|
-
/**
|
|
89
|
-
* 恢复所有动画:把每个动画的 startTime 往后移,抵消暂停期间的流逝。
|
|
90
|
-
*/
|
|
91
|
-
resume(): void;
|
|
92
|
-
isPaused(): boolean;
|
|
93
|
-
add(component: ICEComponent): void;
|
|
94
|
-
remove(el: any): void;
|
|
95
|
-
}
|
|
96
|
-
export default AnimationManager;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2022 大漠穷秋.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* 一组缓动工具函数
|
|
10
|
-
*
|
|
11
|
-
* 本文件有两层:
|
|
12
|
-
*
|
|
13
|
-
* ① `EasingProgress`:**归一化进度函数**,定义域 [0,1](时间占比),值域通常为 [0,1],
|
|
14
|
-
* 弹簧这类缓动会短暂越过 1(过冲)。纯函数、不读时钟 —— 关键帧的**段内缓动**
|
|
15
|
-
* 需要一个可按任意局部进度求值的函数,用它才能避免「合成 startTime」式的硬凑。
|
|
16
|
-
*
|
|
17
|
-
* ② `Easing`:对外保持历史上的**值**语义签名 `(from, to, duration, startTime)`,
|
|
18
|
-
* 内部自读 `Date.now()`。其中 9 个函数是与既有实现逐字一致的转写(刻意不改),
|
|
19
|
-
* `tests/animation/easing-progress.test.ts` 在网格上锁定它们与 `EasingProgress`
|
|
20
|
-
* 的等价关系(实测最大偏差 < 1e-12),防止两层实现漂移。
|
|
21
|
-
*
|
|
22
|
-
* 原始来源:https://github.com/AndrewRayCode/easing-utils/blob/master/src/easing.js
|
|
23
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
24
|
-
*/
|
|
25
|
-
/** 归一化进度函数:t 为时间占比(0 → 起点,1 → 终点),返回进度(弹簧类可 > 1 表示过冲)。 */
|
|
26
|
-
export type EasingProgress = (t: number) => number;
|
|
27
|
-
export declare const EasingProgress: {
|
|
28
|
-
[name: string]: EasingProgress;
|
|
29
|
-
};
|
|
30
|
-
declare const Easing: {
|
|
31
|
-
[name: string]: (from: number, to: number, duration: number, startTime: number) => number;
|
|
32
|
-
};
|
|
33
|
-
export default Easing;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2022 大漠穷秋.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* 一组缓动工具函数
|
|
10
|
-
*
|
|
11
|
-
* 本文件有两层:
|
|
12
|
-
*
|
|
13
|
-
* ① `EasingProgress`:**归一化进度函数**,定义域 [0,1](时间占比),值域通常为 [0,1],
|
|
14
|
-
* 弹簧这类缓动会短暂越过 1(过冲)。纯函数、不读时钟 —— 关键帧的**段内缓动**
|
|
15
|
-
* 需要一个可按任意局部进度求值的函数,用它才能避免「合成 startTime」式的硬凑。
|
|
16
|
-
*
|
|
17
|
-
* ② `Easing`:对外保持历史上的**值**语义签名 `(from, to, duration, startTime)`,
|
|
18
|
-
* 内部自读 `Date.now()`。其中 9 个函数是与既有实现逐字一致的转写(刻意不改),
|
|
19
|
-
* `tests/animation/easing-progress.test.ts` 在网格上锁定它们与 `EasingProgress`
|
|
20
|
-
* 的等价关系(实测最大偏差 < 1e-12),防止两层实现漂移。
|
|
21
|
-
*
|
|
22
|
-
* 原始来源:https://github.com/AndrewRayCode/easing-utils/blob/master/src/easing.js
|
|
23
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
24
|
-
*/
|
|
25
|
-
/** 归一化进度函数:t 为时间占比(0 → 起点,1 → 终点),返回进度(弹簧类可 > 1 表示过冲)。 */
|
|
26
|
-
export type EasingProgress = (t: number) => number;
|
|
27
|
-
export declare const EasingProgress: {
|
|
28
|
-
[name: string]: EasingProgress;
|
|
29
|
-
};
|
|
30
|
-
declare const Easing: {
|
|
31
|
-
[name: string]: (from: number, to: number, duration: number, startTime: number) => number;
|
|
32
|
-
};
|
|
33
|
-
export default Easing;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2022 大漠穷秋.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* zIndex 最大值,这里使用一千万是安全的,在一张画布上渲染一千万个图形的可能性很小
|
|
10
|
-
* zIndex 用来控制组件在画布中的堆叠次序
|
|
11
|
-
* @see ICEComponent.state.zIndex
|
|
12
|
-
*/
|
|
13
|
-
declare const bigZIndexNum: number;
|
|
14
|
-
export default bigZIndexNum;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2022 大漠穷秋.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* zIndex 最大值,这里使用一千万是安全的,在一张画布上渲染一千万个图形的可能性很小
|
|
10
|
-
* zIndex 用来控制组件在画布中的堆叠次序
|
|
11
|
-
* @see ICEComponent.state.zIndex
|
|
12
|
-
*/
|
|
13
|
-
declare const bigZIndexNum: number;
|
|
14
|
-
export default bigZIndexNum;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2022 大漠穷秋.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
import ICEGroup from '../graphic/container/ICEGroup.mjs';
|
|
9
|
-
import ICEImage from '../graphic/ICEImage.mjs';
|
|
10
|
-
import ICEBezier from '../graphic/link/ICEBezier.mjs';
|
|
11
|
-
import ICEPolyLine from '../graphic/link/ICEPolyLine.mjs';
|
|
12
|
-
import ICEVisioLink from '../graphic/link/ICEVisioLink.mjs';
|
|
13
|
-
import ICECircle from '../graphic/shape/ICECircle.mjs';
|
|
14
|
-
import ICEEllipse from '../graphic/shape/ICEEllipse.mjs';
|
|
15
|
-
import ICEIsogon from '../graphic/shape/ICEIsogon.mjs';
|
|
16
|
-
import ICERect from '../graphic/shape/ICERect.mjs';
|
|
17
|
-
import ICERose from '../graphic/shape/ICERose.mjs';
|
|
18
|
-
import ICEStar from '../graphic/shape/ICEStar.mjs';
|
|
19
|
-
import ICEText from '../graphic/text/ICEText.mjs';
|
|
20
|
-
/**
|
|
21
|
-
* 组件名称和构造函数引用之间的映射关系,把序列化之后的 JSON 字符串重新解析成图形时需要用到此映射关系。
|
|
22
|
-
*
|
|
23
|
-
* key 是**稳定的类型名(typeId)**,与类的 JS 名解耦:序列化时由构造函数反查这张表得到 typeId,
|
|
24
|
-
* 因此压缩/改名(terser mangle)不会破坏已存数据;只有**未注册**的类型才回退到 `constructor.name`。
|
|
25
|
-
* 表里的 key 同时充当反序列化的查找键,所以旧数据里写类名的历史格式仍然能加载。
|
|
26
|
-
*
|
|
27
|
-
* 注意:工具层组件(ICELinkSlot / ICELinkHook / 各类 ControlPanel)不进这张表,它们不被序列化。
|
|
28
|
-
*
|
|
29
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
30
|
-
*/
|
|
31
|
-
declare const componentTypeMap: {
|
|
32
|
-
ICERect: typeof ICERect;
|
|
33
|
-
ICECircle: typeof ICECircle;
|
|
34
|
-
ICEEllipse: typeof ICEEllipse;
|
|
35
|
-
ICEStar: typeof ICEStar;
|
|
36
|
-
ICEIsogon: typeof ICEIsogon;
|
|
37
|
-
ICERose: typeof ICERose;
|
|
38
|
-
ICEText: typeof ICEText;
|
|
39
|
-
ICEImage: typeof ICEImage;
|
|
40
|
-
ICEGroup: typeof ICEGroup;
|
|
41
|
-
ICEVisioLink: typeof ICEVisioLink;
|
|
42
|
-
ICEPolyLine: typeof ICEPolyLine;
|
|
43
|
-
ICEBezier: typeof ICEBezier;
|
|
44
|
-
};
|
|
45
|
-
export default componentTypeMap;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2022 大漠穷秋.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
import ICEGroup from '../graphic/container/ICEGroup';
|
|
9
|
-
import ICEImage from '../graphic/ICEImage';
|
|
10
|
-
import ICEBezier from '../graphic/link/ICEBezier';
|
|
11
|
-
import ICEPolyLine from '../graphic/link/ICEPolyLine';
|
|
12
|
-
import ICEVisioLink from '../graphic/link/ICEVisioLink';
|
|
13
|
-
import ICECircle from '../graphic/shape/ICECircle';
|
|
14
|
-
import ICEEllipse from '../graphic/shape/ICEEllipse';
|
|
15
|
-
import ICEIsogon from '../graphic/shape/ICEIsogon';
|
|
16
|
-
import ICERect from '../graphic/shape/ICERect';
|
|
17
|
-
import ICERose from '../graphic/shape/ICERose';
|
|
18
|
-
import ICEStar from '../graphic/shape/ICEStar';
|
|
19
|
-
import ICEText from '../graphic/text/ICEText';
|
|
20
|
-
/**
|
|
21
|
-
* 组件名称和构造函数引用之间的映射关系,把序列化之后的 JSON 字符串重新解析成图形时需要用到此映射关系。
|
|
22
|
-
*
|
|
23
|
-
* key 是**稳定的类型名(typeId)**,与类的 JS 名解耦:序列化时由构造函数反查这张表得到 typeId,
|
|
24
|
-
* 因此压缩/改名(terser mangle)不会破坏已存数据;只有**未注册**的类型才回退到 `constructor.name`。
|
|
25
|
-
* 表里的 key 同时充当反序列化的查找键,所以旧数据里写类名的历史格式仍然能加载。
|
|
26
|
-
*
|
|
27
|
-
* 注意:工具层组件(ICELinkSlot / ICELinkHook / 各类 ControlPanel)不进这张表,它们不被序列化。
|
|
28
|
-
*
|
|
29
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
30
|
-
*/
|
|
31
|
-
declare const componentTypeMap: {
|
|
32
|
-
ICERect: typeof ICERect;
|
|
33
|
-
ICECircle: typeof ICECircle;
|
|
34
|
-
ICEEllipse: typeof ICEEllipse;
|
|
35
|
-
ICEStar: typeof ICEStar;
|
|
36
|
-
ICEIsogon: typeof ICEIsogon;
|
|
37
|
-
ICERose: typeof ICERose;
|
|
38
|
-
ICEText: typeof ICEText;
|
|
39
|
-
ICEImage: typeof ICEImage;
|
|
40
|
-
ICEGroup: typeof ICEGroup;
|
|
41
|
-
ICEVisioLink: typeof ICEVisioLink;
|
|
42
|
-
ICEPolyLine: typeof ICEPolyLine;
|
|
43
|
-
ICEBezier: typeof ICEBezier;
|
|
44
|
-
};
|
|
45
|
-
export default componentTypeMap;
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 原生 DOM 事件与 ICE 内部转发事件之间的对应关系。
|
|
3
|
-
* 原生 DOM 事件的名称在 ICE 中不变,ICE 自定义事件名仅仅用来在事件总线中进行转发。
|
|
4
|
-
*
|
|
5
|
-
* 输入通道策略(见 docs/architecture/05-event-system.md):
|
|
6
|
-
* - 运行时支持 PointerEvent → 只监听 pointer*(统一覆盖鼠标 / 触控笔 / 触摸),
|
|
7
|
-
* 并额外监听没有 pointer 对应事件的 click / dblclick / contextmenu。
|
|
8
|
-
* - 否则(老浏览器 / 小程序)→ 监听 mouse* + touch*,touch 通道由派发器
|
|
9
|
-
* 归一化后以鼠标语义名转发,上层组件无需区分。
|
|
10
|
-
*
|
|
11
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
12
|
-
*/
|
|
13
|
-
/** 指针输入通道(鼠标 / 触控笔 / 触摸统一) */
|
|
14
|
-
export declare const pointerEvents: Array<[string, string]>;
|
|
15
|
-
/**
|
|
16
|
-
* 鼠标输入通道。在支持 PointerEvent 的运行时只保留「没有 pointer 对应事件」的那几个,
|
|
17
|
-
* 避免 pointer 与 mouse 兼容事件双重触发。
|
|
18
|
-
*/
|
|
19
|
-
export declare const mouseEvents: Array<[string, string]>;
|
|
20
|
-
/** PointerEvent 世界下仍需单独监听的鼠标事件(无 pointer 等价物)。 */
|
|
21
|
-
export declare const nonPointerMouseEvents: Array<[string, string]>;
|
|
22
|
-
/** 触摸输入通道(无 PointerEvent 的运行时使用,如小程序)。 */
|
|
23
|
-
export declare const touchEvents: Array<[string, string]>;
|
|
24
|
-
/** 滚轮通道(视口缩放等,由应用层消费)。 */
|
|
25
|
-
export declare const wheelEvents: Array<[string, string]>;
|
|
26
|
-
/**
|
|
27
|
-
* 原生 DOM 键盘事件与 ICE 内部转发事件之间的对应关系。
|
|
28
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
29
|
-
*/
|
|
30
|
-
export declare const keyboardEvents: Array<[string, string]>;
|
|
31
|
-
/** 高频「移动」类 ICE 事件名:派发器对其跳过命中检测(避免每次移动都全量扫描组件树)。 */
|
|
32
|
-
export declare const MOVE_ICE_EVENTS: string[];
|
|
33
|
-
/**
|
|
34
|
-
* 按运行时能力构建待监听的 DOM 事件表。
|
|
35
|
-
* @param hasPointerEvent 运行时是否存在 PointerEvent 构造器
|
|
36
|
-
*/
|
|
37
|
-
export declare function buildDomEventList(hasPointerEvent: boolean): Array<[string, string]>;
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 原生 DOM 事件与 ICE 内部转发事件之间的对应关系。
|
|
3
|
-
* 原生 DOM 事件的名称在 ICE 中不变,ICE 自定义事件名仅仅用来在事件总线中进行转发。
|
|
4
|
-
*
|
|
5
|
-
* 输入通道策略(见 docs/architecture/05-event-system.md):
|
|
6
|
-
* - 运行时支持 PointerEvent → 只监听 pointer*(统一覆盖鼠标 / 触控笔 / 触摸),
|
|
7
|
-
* 并额外监听没有 pointer 对应事件的 click / dblclick / contextmenu。
|
|
8
|
-
* - 否则(老浏览器 / 小程序)→ 监听 mouse* + touch*,touch 通道由派发器
|
|
9
|
-
* 归一化后以鼠标语义名转发,上层组件无需区分。
|
|
10
|
-
*
|
|
11
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
12
|
-
*/
|
|
13
|
-
/** 指针输入通道(鼠标 / 触控笔 / 触摸统一) */
|
|
14
|
-
export declare const pointerEvents: Array<[string, string]>;
|
|
15
|
-
/**
|
|
16
|
-
* 鼠标输入通道。在支持 PointerEvent 的运行时只保留「没有 pointer 对应事件」的那几个,
|
|
17
|
-
* 避免 pointer 与 mouse 兼容事件双重触发。
|
|
18
|
-
*/
|
|
19
|
-
export declare const mouseEvents: Array<[string, string]>;
|
|
20
|
-
/** PointerEvent 世界下仍需单独监听的鼠标事件(无 pointer 等价物)。 */
|
|
21
|
-
export declare const nonPointerMouseEvents: Array<[string, string]>;
|
|
22
|
-
/** 触摸输入通道(无 PointerEvent 的运行时使用,如小程序)。 */
|
|
23
|
-
export declare const touchEvents: Array<[string, string]>;
|
|
24
|
-
/** 滚轮通道(视口缩放等,由应用层消费)。 */
|
|
25
|
-
export declare const wheelEvents: Array<[string, string]>;
|
|
26
|
-
/**
|
|
27
|
-
* 原生 DOM 键盘事件与 ICE 内部转发事件之间的对应关系。
|
|
28
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
29
|
-
*/
|
|
30
|
-
export declare const keyboardEvents: Array<[string, string]>;
|
|
31
|
-
/** 高频「移动」类 ICE 事件名:派发器对其跳过命中检测(避免每次移动都全量扫描组件树)。 */
|
|
32
|
-
export declare const MOVE_ICE_EVENTS: string[];
|
|
33
|
-
/**
|
|
34
|
-
* 按运行时能力构建待监听的 DOM 事件表。
|
|
35
|
-
* @param hasPointerEvent 运行时是否存在 PointerEvent 构造器
|
|
36
|
-
*/
|
|
37
|
-
export declare function buildDomEventList(hasPointerEvent: boolean): Array<[string, string]>;
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2022 大漠穷秋.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
declare const ICE_EVENT_NAME_CONSTS: {
|
|
9
|
-
ICE_FRAME_EVENT: string;
|
|
10
|
-
BEFORE_RENDER: string;
|
|
11
|
-
AFTER_RENDER: string;
|
|
12
|
-
BEFORE_ADD: string;
|
|
13
|
-
AFTER_ADD: string;
|
|
14
|
-
BEFORE_REMOVE: string;
|
|
15
|
-
AFTER_REMOVE: string;
|
|
16
|
-
ROUND_FINISH: string;
|
|
17
|
-
HOOK_MOUSEDOWN: string;
|
|
18
|
-
HOOK_MOUSEMOVE: string;
|
|
19
|
-
HOOK_MOUSEUP: string;
|
|
20
|
-
BEFORE_RESIZE: string;
|
|
21
|
-
AFTER_RESIZE: string;
|
|
22
|
-
BEFORE_ROTATE: string;
|
|
23
|
-
AFTER_ROTATE: string;
|
|
24
|
-
BEFORE_MOVE: string;
|
|
25
|
-
AFTER_MOVE: string;
|
|
26
|
-
};
|
|
27
|
-
export default ICE_EVENT_NAME_CONSTS;
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2022 大漠穷秋.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
declare const ICE_EVENT_NAME_CONSTS: {
|
|
9
|
-
ICE_FRAME_EVENT: string;
|
|
10
|
-
BEFORE_RENDER: string;
|
|
11
|
-
AFTER_RENDER: string;
|
|
12
|
-
BEFORE_ADD: string;
|
|
13
|
-
AFTER_ADD: string;
|
|
14
|
-
BEFORE_REMOVE: string;
|
|
15
|
-
AFTER_REMOVE: string;
|
|
16
|
-
ROUND_FINISH: string;
|
|
17
|
-
HOOK_MOUSEDOWN: string;
|
|
18
|
-
HOOK_MOUSEMOVE: string;
|
|
19
|
-
HOOK_MOUSEUP: string;
|
|
20
|
-
BEFORE_RESIZE: string;
|
|
21
|
-
AFTER_RESIZE: string;
|
|
22
|
-
BEFORE_ROTATE: string;
|
|
23
|
-
AFTER_ROTATE: string;
|
|
24
|
-
BEFORE_MOVE: string;
|
|
25
|
-
AFTER_MOVE: string;
|
|
26
|
-
};
|
|
27
|
-
export default ICE_EVENT_NAME_CONSTS;
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 对齐吸附管理器(smart guides + snapping)。
|
|
3
|
-
*
|
|
4
|
-
* 拖拽组件时,把「被拖组件的关键坐标」与「其他组件的关键坐标」做最近匹配,
|
|
5
|
-
* 命中阈值内自动吸附,并在工具层显示提示线。默认禁用,应用层显式 enable 后才生效。
|
|
6
|
-
*
|
|
7
|
-
* 性能设计(保证拖拽顺滑):
|
|
8
|
-
* 1. mousedown 时缓存所有目标组件的世界盒,拖拽过程复用(目标组件不移动,不重复 compose);
|
|
9
|
-
* 2. 提示线是两根复用的隐藏 ICERect,只改坐标 + display,不 addTool/removeTool,不重建渲染队列;
|
|
10
|
-
* 3. 滞回(hysteresis):已吸附的轴用更大的脱离阈值,避免阈值边界来回抖。
|
|
11
|
-
*/
|
|
12
|
-
import ICE from '../ICE.mjs';
|
|
13
|
-
export interface SnapBox {
|
|
14
|
-
minX: number;
|
|
15
|
-
minY: number;
|
|
16
|
-
maxX: number;
|
|
17
|
-
maxY: number;
|
|
18
|
-
centerX: number;
|
|
19
|
-
centerY: number;
|
|
20
|
-
}
|
|
21
|
-
export interface SnapResult {
|
|
22
|
-
axis: 'x' | 'y';
|
|
23
|
-
type: 'edge' | 'center' | 'spacing';
|
|
24
|
-
/** 对齐目标坐标 - 源坐标,吸附时应加到 left/top。 */
|
|
25
|
-
delta: number;
|
|
26
|
-
/** 对齐线的世界坐标(X 对齐是 x 值,Y 对齐是 y 值)。 */
|
|
27
|
-
guideValue: number;
|
|
28
|
-
/** 提示线在另一轴上的起点/终点(世界坐标)。 */
|
|
29
|
-
guideStart: number;
|
|
30
|
-
guideEnd: number;
|
|
31
|
-
}
|
|
32
|
-
export interface SnapAxes {
|
|
33
|
-
x: SnapResult | null;
|
|
34
|
-
y: SnapResult | null;
|
|
35
|
-
}
|
|
36
|
-
export interface AlignmentGuideOptions {
|
|
37
|
-
/** 磁吸阈值(屏幕像素),默认 5。 */
|
|
38
|
-
threshold?: number;
|
|
39
|
-
/** 滞回余量(屏幕像素):已吸附轴脱离阈值 = threshold + hysteresis,默认 2。 */
|
|
40
|
-
hysteresis?: number;
|
|
41
|
-
/** 边缘对齐,默认 true。 */
|
|
42
|
-
edge?: boolean;
|
|
43
|
-
/** 中心对齐,默认 true。 */
|
|
44
|
-
center?: boolean;
|
|
45
|
-
/** 等间距对齐,默认 true。 */
|
|
46
|
-
spacing?: boolean;
|
|
47
|
-
/** 提示线完整样式(透传给 canvas ctx),默认 { fillStyle: '#EC4899' }。 */
|
|
48
|
-
guideStyle?: Record<string, any>;
|
|
49
|
-
/** 提示线 zIndex,默认在控制面板之上。 */
|
|
50
|
-
guideZIndex?: number;
|
|
51
|
-
/** 提示线宽(屏幕像素,按视口换算),默认 1。 */
|
|
52
|
-
guideWidth?: number;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* 纯几何吸附计算:X/Y 两轴各自返回 |delta| 最小的命中候选。
|
|
56
|
-
* thresholdX / thresholdY 分别是两轴的世界坐标阈值(调用方按视口与滞回换算)。
|
|
57
|
-
*/
|
|
58
|
-
export declare function computeSnap(source: SnapBox, targets: SnapBox[], thresholdX: number, thresholdY: number, options: Required<AlignmentGuideOptions>): SnapAxes;
|
|
59
|
-
declare class AlignmentGuideManager {
|
|
60
|
-
private ice;
|
|
61
|
-
private options;
|
|
62
|
-
private enabled;
|
|
63
|
-
private active;
|
|
64
|
-
private snapping;
|
|
65
|
-
private intentLeft;
|
|
66
|
-
private intentTop;
|
|
67
|
-
private cachedTargets;
|
|
68
|
-
private engagedX;
|
|
69
|
-
private engagedY;
|
|
70
|
-
private guideX;
|
|
71
|
-
private guideY;
|
|
72
|
-
constructor(ice: ICE);
|
|
73
|
-
enable(options?: AlignmentGuideOptions): this;
|
|
74
|
-
disable(): this;
|
|
75
|
-
isEnabled(): boolean;
|
|
76
|
-
setOptions(options: AlignmentGuideOptions): this;
|
|
77
|
-
private __onMouseDown;
|
|
78
|
-
private __onDrag;
|
|
79
|
-
private __onMouseUp;
|
|
80
|
-
private __detach;
|
|
81
|
-
private __boxOf;
|
|
82
|
-
private __computeTargets;
|
|
83
|
-
/**
|
|
84
|
-
* 判断组件是否可以参与对齐决策。
|
|
85
|
-
* 排除:连接线、控制面板、变换手柄、不可交互组件、不可拖动组件。
|
|
86
|
-
*/
|
|
87
|
-
private __isAlignmentParticipant;
|
|
88
|
-
private __ensureGuides;
|
|
89
|
-
private __updateGuides;
|
|
90
|
-
private __hideGuides;
|
|
91
|
-
}
|
|
92
|
-
export default AlignmentGuideManager;
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 对齐吸附管理器(smart guides + snapping)。
|
|
3
|
-
*
|
|
4
|
-
* 拖拽组件时,把「被拖组件的关键坐标」与「其他组件的关键坐标」做最近匹配,
|
|
5
|
-
* 命中阈值内自动吸附,并在工具层显示提示线。默认禁用,应用层显式 enable 后才生效。
|
|
6
|
-
*
|
|
7
|
-
* 性能设计(保证拖拽顺滑):
|
|
8
|
-
* 1. mousedown 时缓存所有目标组件的世界盒,拖拽过程复用(目标组件不移动,不重复 compose);
|
|
9
|
-
* 2. 提示线是两根复用的隐藏 ICERect,只改坐标 + display,不 addTool/removeTool,不重建渲染队列;
|
|
10
|
-
* 3. 滞回(hysteresis):已吸附的轴用更大的脱离阈值,避免阈值边界来回抖。
|
|
11
|
-
*/
|
|
12
|
-
import ICE from '../ICE';
|
|
13
|
-
export interface SnapBox {
|
|
14
|
-
minX: number;
|
|
15
|
-
minY: number;
|
|
16
|
-
maxX: number;
|
|
17
|
-
maxY: number;
|
|
18
|
-
centerX: number;
|
|
19
|
-
centerY: number;
|
|
20
|
-
}
|
|
21
|
-
export interface SnapResult {
|
|
22
|
-
axis: 'x' | 'y';
|
|
23
|
-
type: 'edge' | 'center' | 'spacing';
|
|
24
|
-
/** 对齐目标坐标 - 源坐标,吸附时应加到 left/top。 */
|
|
25
|
-
delta: number;
|
|
26
|
-
/** 对齐线的世界坐标(X 对齐是 x 值,Y 对齐是 y 值)。 */
|
|
27
|
-
guideValue: number;
|
|
28
|
-
/** 提示线在另一轴上的起点/终点(世界坐标)。 */
|
|
29
|
-
guideStart: number;
|
|
30
|
-
guideEnd: number;
|
|
31
|
-
}
|
|
32
|
-
export interface SnapAxes {
|
|
33
|
-
x: SnapResult | null;
|
|
34
|
-
y: SnapResult | null;
|
|
35
|
-
}
|
|
36
|
-
export interface AlignmentGuideOptions {
|
|
37
|
-
/** 磁吸阈值(屏幕像素),默认 5。 */
|
|
38
|
-
threshold?: number;
|
|
39
|
-
/** 滞回余量(屏幕像素):已吸附轴脱离阈值 = threshold + hysteresis,默认 2。 */
|
|
40
|
-
hysteresis?: number;
|
|
41
|
-
/** 边缘对齐,默认 true。 */
|
|
42
|
-
edge?: boolean;
|
|
43
|
-
/** 中心对齐,默认 true。 */
|
|
44
|
-
center?: boolean;
|
|
45
|
-
/** 等间距对齐,默认 true。 */
|
|
46
|
-
spacing?: boolean;
|
|
47
|
-
/** 提示线完整样式(透传给 canvas ctx),默认 { fillStyle: '#EC4899' }。 */
|
|
48
|
-
guideStyle?: Record<string, any>;
|
|
49
|
-
/** 提示线 zIndex,默认在控制面板之上。 */
|
|
50
|
-
guideZIndex?: number;
|
|
51
|
-
/** 提示线宽(屏幕像素,按视口换算),默认 1。 */
|
|
52
|
-
guideWidth?: number;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* 纯几何吸附计算:X/Y 两轴各自返回 |delta| 最小的命中候选。
|
|
56
|
-
* thresholdX / thresholdY 分别是两轴的世界坐标阈值(调用方按视口与滞回换算)。
|
|
57
|
-
*/
|
|
58
|
-
export declare function computeSnap(source: SnapBox, targets: SnapBox[], thresholdX: number, thresholdY: number, options: Required<AlignmentGuideOptions>): SnapAxes;
|
|
59
|
-
declare class AlignmentGuideManager {
|
|
60
|
-
private ice;
|
|
61
|
-
private options;
|
|
62
|
-
private enabled;
|
|
63
|
-
private active;
|
|
64
|
-
private snapping;
|
|
65
|
-
private intentLeft;
|
|
66
|
-
private intentTop;
|
|
67
|
-
private cachedTargets;
|
|
68
|
-
private engagedX;
|
|
69
|
-
private engagedY;
|
|
70
|
-
private guideX;
|
|
71
|
-
private guideY;
|
|
72
|
-
constructor(ice: ICE);
|
|
73
|
-
enable(options?: AlignmentGuideOptions): this;
|
|
74
|
-
disable(): this;
|
|
75
|
-
isEnabled(): boolean;
|
|
76
|
-
setOptions(options: AlignmentGuideOptions): this;
|
|
77
|
-
private __onMouseDown;
|
|
78
|
-
private __onDrag;
|
|
79
|
-
private __onMouseUp;
|
|
80
|
-
private __detach;
|
|
81
|
-
private __boxOf;
|
|
82
|
-
private __computeTargets;
|
|
83
|
-
/**
|
|
84
|
-
* 判断组件是否可以参与对齐决策。
|
|
85
|
-
* 排除:连接线、控制面板、变换手柄、不可交互组件、不可拖动组件。
|
|
86
|
-
*/
|
|
87
|
-
private __isAlignmentParticipant;
|
|
88
|
-
private __ensureGuides;
|
|
89
|
-
private __updateGuides;
|
|
90
|
-
private __hideGuides;
|
|
91
|
-
}
|
|
92
|
-
export default AlignmentGuideManager;
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2022 大漠穷秋.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
import ICEGroup from '../graphic/container/ICEGroup.mjs';
|
|
9
|
-
import ICEComponent from '../graphic/ICEComponent.mjs';
|
|
10
|
-
/**
|
|
11
|
-
* @class ICEControlPanel 控制面板
|
|
12
|
-
*
|
|
13
|
-
* - ICEControlPanel 用来辅助用户操作图形,控制面板可以控制图形的属性,比如组件的属性,线条的属性,文本的属性等等。
|
|
14
|
-
* - ICEControlPanel 本身总是直接画在 canvas 上,不是任何组件的孩子。
|
|
15
|
-
* - ICEControlPanel 本身不会被序列化。
|
|
16
|
-
* - ICEControlPanel 的 zIndex 总是大于其它组件,当 ICEControlPanel 显示时,总是会优先判定为被选中的组件,会导致对应的 _targetComponent 收不到鼠标和键盘事件,所以 ICEControlPanel 的实现类需要自己考虑是否需要进行事件转发。
|
|
17
|
-
* - 控制面板的所有实例都在 ICEControlPanelManager 中创建和管理。
|
|
18
|
-
*
|
|
19
|
-
* @see ICEControlPanelManager
|
|
20
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
21
|
-
*/
|
|
22
|
-
export default abstract class ICEControlPanel extends ICEGroup {
|
|
23
|
-
/**
|
|
24
|
-
* 类型标识
|
|
25
|
-
* 用来解决 TypeScript 的 instanceof 兼容性问题, https://github.com/microsoft/TypeScript/issues/22585
|
|
26
|
-
* 仅供内部使用,业务代码不可依赖此属性
|
|
27
|
-
*/
|
|
28
|
-
isControlPanel: boolean;
|
|
29
|
-
protected _targetComponent: ICEComponent;
|
|
30
|
-
constructor(props: any);
|
|
31
|
-
protected abstract initControls(): void;
|
|
32
|
-
protected abstract updateControlPositions(): void;
|
|
33
|
-
protected doRender(): void;
|
|
34
|
-
moveGlobalPosition(tx: number, ty: number, evt?: any): void;
|
|
35
|
-
abstract enable(): any;
|
|
36
|
-
abstract disable(): any;
|
|
37
|
-
}
|