ice-entity-designer 0.0.40 → 0.2.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 +16 -9
- 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 +4 -4
- package/dist/types/bpmn/BpmnSimulator.d.ts +4 -4
- package/dist/types/bpmn/bpmn_shapes.d.mts +9 -9
- package/dist/types/bpmn/bpmn_shapes.d.ts +9 -9
- 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 +3 -3
- package/dist/types/er-component/Entity.d.ts +3 -3
- package/dist/types/er-component/Relation.d.mts +2 -2
- package/dist/types/er-component/Relation.d.ts +2 -2
- 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 +4 -4
- package/dist/types/flow/FlowNode.d.ts +4 -4
- package/dist/types/flow/flow_shapes.d.mts +3 -3
- package/dist/types/flow/flow_shapes.d.ts +3 -3
- package/dist/types/gantt/GanttDependency.d.mts +2 -2
- package/dist/types/gantt/GanttDependency.d.ts +2 -2
- 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 +3 -3
- package/dist/types/gantt/GanttRuler.d.ts +3 -3
- package/dist/types/gantt/GanttTask.d.mts +2 -2
- package/dist/types/gantt/GanttTask.d.ts +2 -2
- 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 +3 -3
- package/dist/types/power/PowerDesigner.d.ts +3 -3
- package/dist/types/power/power_shapes.d.mts +5 -5
- package/dist/types/power/power_shapes.d.ts +5 -5
- 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 +2 -2
- package/dist/types/secondary/SecondaryDesigner.d.ts +2 -2
- package/dist/types/secondary/secondary_shapes.d.mts +4 -4
- package/dist/types/secondary/secondary_shapes.d.ts +4 -4
- package/dist/types/statechart/StateNode.d.mts +3 -3
- package/dist/types/statechart/StateNode.d.ts +3 -3
- package/dist/types/statechart/StateTransition.d.mts +2 -2
- package/dist/types/statechart/StateTransition.d.ts +2 -2
- 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 +3 -3
- package/dist/types/uml/UmlClass.d.ts +3 -3
- 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 +5 -5
- package/dist/types/uml/UmlRelation.d.ts +5 -5
- package/dist/types/uml/uml_text.d.mts +1 -1
- package/dist/types/uml/uml_text.d.ts +1 -1
- package/dist/types/utils/component_type_util.d.mts +4 -0
- package/dist/types/utils/component_type_util.d.ts +4 -0
- 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/dist/types/utils/type-registry.d.mts +11 -0
- package/dist/types/utils/type-registry.d.ts +11 -0
- 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 -84
- package/dist/types/ice-render/renderer/ObjectCache.d.ts +0 -84
- 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,21 +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 Path2DRecorder from './Path2DRecorder.mjs';
|
|
9
|
-
/**
|
|
10
|
-
* @class PolyfillPath2D
|
|
11
|
-
*
|
|
12
|
-
* 「没有原生 Path2D」时的路径实现 —— 现在只是 `Path2DRecorder` 的别名:
|
|
13
|
-
* 记录器本身就是「无原生时退化为纯命令记录」的那个实现,两者再各写一份必然会漂移
|
|
14
|
-
* (历史上这里就少了 `arc`,导致小程序低版本 / Node 里画事件圆直接抛错)。
|
|
15
|
-
*
|
|
16
|
-
* 保留类名是为了不破坏既有 import 与测试里对它的引用。
|
|
17
|
-
*
|
|
18
|
-
* @deprecated 新代码请直接用 `Path2DRecorder`(或 `root.createPath2D()`)。
|
|
19
|
-
*/
|
|
20
|
-
export default class PolyfillPath2D extends Path2DRecorder {
|
|
21
|
-
}
|
|
@@ -1,21 +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 Path2DRecorder from './Path2DRecorder';
|
|
9
|
-
/**
|
|
10
|
-
* @class PolyfillPath2D
|
|
11
|
-
*
|
|
12
|
-
* 「没有原生 Path2D」时的路径实现 —— 现在只是 `Path2DRecorder` 的别名:
|
|
13
|
-
* 记录器本身就是「无原生时退化为纯命令记录」的那个实现,两者再各写一份必然会漂移
|
|
14
|
-
* (历史上这里就少了 `arc`,导致小程序低版本 / Node 里画事件圆直接抛错)。
|
|
15
|
-
*
|
|
16
|
-
* 保留类名是为了不破坏既有 import 与测试里对它的引用。
|
|
17
|
-
*
|
|
18
|
-
* @deprecated 新代码请直接用 `Path2DRecorder`(或 `root.createPath2D()`)。
|
|
19
|
-
*/
|
|
20
|
-
export default class PolyfillPath2D extends Path2DRecorder {
|
|
21
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import ICE from '../ICE.mjs';
|
|
2
|
-
/**
|
|
3
|
-
* @class DOMEventDispatcher
|
|
4
|
-
*
|
|
5
|
-
* - DOM 事件派发器,监听事件总线上的输入事件,派发给 canvas 内指定的组件。
|
|
6
|
-
* - 鼠标 / 指针 / 触摸 / 滚轮 / 键盘事件都通过此工具类派发。
|
|
7
|
-
*
|
|
8
|
-
* 输入归一化(本类的关键职责):
|
|
9
|
-
* - 底层无论 pointer / mouse / touch,都在这里统一成 canvas 内坐标
|
|
10
|
-
* (`clientX - canvasRect.left`)与屏幕位移 movement,然后写回事件对象。
|
|
11
|
-
* 这样组件、拖拽、变换手柄、对齐吸附、命中检测都无需区分输入源。
|
|
12
|
-
* - pointer / touch 会额外以「鼠标语义名」(mousedown/mousemove/mouseup)再派发一次,
|
|
13
|
-
* 保证既有 `on('mousedown', ...)` 代码零改动即可在触摸设备上工作。
|
|
14
|
-
* - 命中检测用的 canvas 矩形在非移动类事件上刷新,页面滚动 / 布局变化后仍正确。
|
|
15
|
-
*
|
|
16
|
-
* @see {DOMEventInterceptor}
|
|
17
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
18
|
-
*/
|
|
19
|
-
declare class DOMEventDispatcher {
|
|
20
|
-
private selectionCandidates;
|
|
21
|
-
private ice;
|
|
22
|
-
private _stopped;
|
|
23
|
-
/** 上一次归一化输入,用于在原生 movement 缺失(触摸)时补算位移。 */
|
|
24
|
-
private __lastInput;
|
|
25
|
-
/**
|
|
26
|
-
* 键盘事件的焦点组件(无障碍 / 键盘导航)。
|
|
27
|
-
* 由应用层通过 `ICE.setFocusedComponent()` 设置;为 null 时维持既有行为
|
|
28
|
-
* ——键盘事件派发给「上次点击命中的组件」。
|
|
29
|
-
*/
|
|
30
|
-
focusedComponent: any;
|
|
31
|
-
constructor(ice: ICE);
|
|
32
|
-
start(): this;
|
|
33
|
-
/**
|
|
34
|
-
* 指针捕获:`pointerdown` 时把指针捕获到画布,`pointerup` / `pointercancel` 时释放。
|
|
35
|
-
*
|
|
36
|
-
* 为什么需要:拖组件、拖变换手柄、拖连线钩子时,指针很容易移出画布范围。没有捕获就会出现
|
|
37
|
-
* 「拖着拖着不跟手」甚至「松开鼠标了还在拖」—— 因为后续 `pointermove` / `pointerup`
|
|
38
|
-
* 被派发到了画布之外的元素上。捕获后这些事件会被重定向回画布。
|
|
39
|
-
*
|
|
40
|
-
* 只处理 Pointer Events 通道:mouse/touch 旧通道的 move/up 会冒泡到 window,本来就不会丢。
|
|
41
|
-
*/
|
|
42
|
-
private __handlePointerCapture;
|
|
43
|
-
/**
|
|
44
|
-
* 把事件派发给命中的组件与事件总线。
|
|
45
|
-
* 组件先收到,总线后收到(与既有语义一致:总线始终会收到一次)。
|
|
46
|
-
*/
|
|
47
|
-
private __dispatch;
|
|
48
|
-
/**
|
|
49
|
-
* 取 canvas 矩形用于坐标换算。
|
|
50
|
-
*
|
|
51
|
-
* **移动类事件也必须刷新**(走 `refreshInputRect` 轻量路径:只重读一次
|
|
52
|
-
* `getBoundingClientRect`,尺寸没变就平移已缓存的内容盒、不读 computedStyle),
|
|
53
|
-
* 其余事件走完整 `updateCanvasBoundingRect`。
|
|
54
|
-
*
|
|
55
|
-
* 为什么不做「一帧一次」的节流:布局变化(页面滚动、画布上方插入内容)可能就发生在
|
|
56
|
-
* 两次事件之间,节流会让第二次事件继续用过期矩形 —— 命中检测整体偏移、悬停直接落空。
|
|
57
|
-
* 实测一次 `getBoundingClientRect()` 在布局干净时约 0.22µs、强制重排的最坏情况约 2.8µs,
|
|
58
|
-
* 相对每帧渲染可忽略(见 AGENTS「性能相关铁律」)。
|
|
59
|
-
*/
|
|
60
|
-
private __resolveCanvasRect;
|
|
61
|
-
set stopped(flag: boolean);
|
|
62
|
-
get stopped(): boolean;
|
|
63
|
-
/**
|
|
64
|
-
* @method findTargetComponent
|
|
65
|
-
*
|
|
66
|
-
* 找到被点击的对象,用代码触发 click 事件。
|
|
67
|
-
* 在点击状态下,每次只能点击一个对象,当前不支持 DOM 冒泡特性。
|
|
68
|
-
*
|
|
69
|
-
* 坐标约定:`evt.offsetX/offsetY` 已由输入归一化保证是「canvas 内坐标」。
|
|
70
|
-
*
|
|
71
|
-
* @returns
|
|
72
|
-
*/
|
|
73
|
-
private findTargetComponent;
|
|
74
|
-
}
|
|
75
|
-
export default DOMEventDispatcher;
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import ICE from '../ICE';
|
|
2
|
-
/**
|
|
3
|
-
* @class DOMEventDispatcher
|
|
4
|
-
*
|
|
5
|
-
* - DOM 事件派发器,监听事件总线上的输入事件,派发给 canvas 内指定的组件。
|
|
6
|
-
* - 鼠标 / 指针 / 触摸 / 滚轮 / 键盘事件都通过此工具类派发。
|
|
7
|
-
*
|
|
8
|
-
* 输入归一化(本类的关键职责):
|
|
9
|
-
* - 底层无论 pointer / mouse / touch,都在这里统一成 canvas 内坐标
|
|
10
|
-
* (`clientX - canvasRect.left`)与屏幕位移 movement,然后写回事件对象。
|
|
11
|
-
* 这样组件、拖拽、变换手柄、对齐吸附、命中检测都无需区分输入源。
|
|
12
|
-
* - pointer / touch 会额外以「鼠标语义名」(mousedown/mousemove/mouseup)再派发一次,
|
|
13
|
-
* 保证既有 `on('mousedown', ...)` 代码零改动即可在触摸设备上工作。
|
|
14
|
-
* - 命中检测用的 canvas 矩形在非移动类事件上刷新,页面滚动 / 布局变化后仍正确。
|
|
15
|
-
*
|
|
16
|
-
* @see {DOMEventInterceptor}
|
|
17
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
18
|
-
*/
|
|
19
|
-
declare class DOMEventDispatcher {
|
|
20
|
-
private selectionCandidates;
|
|
21
|
-
private ice;
|
|
22
|
-
private _stopped;
|
|
23
|
-
/** 上一次归一化输入,用于在原生 movement 缺失(触摸)时补算位移。 */
|
|
24
|
-
private __lastInput;
|
|
25
|
-
/**
|
|
26
|
-
* 键盘事件的焦点组件(无障碍 / 键盘导航)。
|
|
27
|
-
* 由应用层通过 `ICE.setFocusedComponent()` 设置;为 null 时维持既有行为
|
|
28
|
-
* ——键盘事件派发给「上次点击命中的组件」。
|
|
29
|
-
*/
|
|
30
|
-
focusedComponent: any;
|
|
31
|
-
constructor(ice: ICE);
|
|
32
|
-
start(): this;
|
|
33
|
-
/**
|
|
34
|
-
* 指针捕获:`pointerdown` 时把指针捕获到画布,`pointerup` / `pointercancel` 时释放。
|
|
35
|
-
*
|
|
36
|
-
* 为什么需要:拖组件、拖变换手柄、拖连线钩子时,指针很容易移出画布范围。没有捕获就会出现
|
|
37
|
-
* 「拖着拖着不跟手」甚至「松开鼠标了还在拖」—— 因为后续 `pointermove` / `pointerup`
|
|
38
|
-
* 被派发到了画布之外的元素上。捕获后这些事件会被重定向回画布。
|
|
39
|
-
*
|
|
40
|
-
* 只处理 Pointer Events 通道:mouse/touch 旧通道的 move/up 会冒泡到 window,本来就不会丢。
|
|
41
|
-
*/
|
|
42
|
-
private __handlePointerCapture;
|
|
43
|
-
/**
|
|
44
|
-
* 把事件派发给命中的组件与事件总线。
|
|
45
|
-
* 组件先收到,总线后收到(与既有语义一致:总线始终会收到一次)。
|
|
46
|
-
*/
|
|
47
|
-
private __dispatch;
|
|
48
|
-
/**
|
|
49
|
-
* 取 canvas 矩形用于坐标换算。
|
|
50
|
-
*
|
|
51
|
-
* **移动类事件也必须刷新**(走 `refreshInputRect` 轻量路径:只重读一次
|
|
52
|
-
* `getBoundingClientRect`,尺寸没变就平移已缓存的内容盒、不读 computedStyle),
|
|
53
|
-
* 其余事件走完整 `updateCanvasBoundingRect`。
|
|
54
|
-
*
|
|
55
|
-
* 为什么不做「一帧一次」的节流:布局变化(页面滚动、画布上方插入内容)可能就发生在
|
|
56
|
-
* 两次事件之间,节流会让第二次事件继续用过期矩形 —— 命中检测整体偏移、悬停直接落空。
|
|
57
|
-
* 实测一次 `getBoundingClientRect()` 在布局干净时约 0.22µs、强制重排的最坏情况约 2.8µs,
|
|
58
|
-
* 相对每帧渲染可忽略(见 AGENTS「性能相关铁律」)。
|
|
59
|
-
*/
|
|
60
|
-
private __resolveCanvasRect;
|
|
61
|
-
set stopped(flag: boolean);
|
|
62
|
-
get stopped(): boolean;
|
|
63
|
-
/**
|
|
64
|
-
* @method findTargetComponent
|
|
65
|
-
*
|
|
66
|
-
* 找到被点击的对象,用代码触发 click 事件。
|
|
67
|
-
* 在点击状态下,每次只能点击一个对象,当前不支持 DOM 冒泡特性。
|
|
68
|
-
*
|
|
69
|
-
* 坐标约定:`evt.offsetX/offsetY` 已由输入归一化保证是「canvas 内坐标」。
|
|
70
|
-
*
|
|
71
|
-
* @returns
|
|
72
|
-
*/
|
|
73
|
-
private findTargetComponent;
|
|
74
|
-
}
|
|
75
|
-
export default DOMEventDispatcher;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @class DOMEventInterceptor DOM 事件拦截器
|
|
3
|
-
*
|
|
4
|
-
* 拦截所有原生的输入事件(指针 / 鼠标 / 触摸 / 滚轮 / 键盘),转发到全局事件总线,
|
|
5
|
-
* ICE 内部的事件派发器再监听总线,把事件派发给 canvas 内特定的组件。
|
|
6
|
-
*
|
|
7
|
-
* - 输入通道按运行时能力选择:有 PointerEvent 则只监听 pointer*(统一鼠标/触控笔/触摸),
|
|
8
|
-
* 否则回退 mouse* + touch*;见 `buildDomEventList()`。
|
|
9
|
-
* - 全局只绑定一套 DOM 监听:事件到来时遍历当前所有事件总线转发。
|
|
10
|
-
* 这样重复 init / 多实例 / React StrictMode 双挂载都不会叠加监听,且 stop() 可以真正解绑。
|
|
11
|
-
* - wheel 以 passive:false 绑定,便于应用层阻止页面滚动;触摸的滚动抑制由 canvas 上的
|
|
12
|
-
* `touch-action: none` 声明式完成(见 ICE.init)。
|
|
13
|
-
*
|
|
14
|
-
* @see {DOMEventDispatcher}
|
|
15
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
16
|
-
*/
|
|
17
|
-
declare const DOMEventInterceptor: {
|
|
18
|
-
evtBuses: any[];
|
|
19
|
-
__handlers: null | Array<{
|
|
20
|
-
name: string;
|
|
21
|
-
handler: (evt: any) => void;
|
|
22
|
-
}>;
|
|
23
|
-
/** 当前运行时是否走 PointerEvent 通道(start 时探测并缓存,便于测试断言)。 */
|
|
24
|
-
__hasPointerEvent: boolean;
|
|
25
|
-
/**
|
|
26
|
-
* @method start 绑定全局 DOM 监听(幂等:重复调用不会重复绑定)
|
|
27
|
-
*/
|
|
28
|
-
start: () => void;
|
|
29
|
-
/**
|
|
30
|
-
* @method stop 解绑全局 DOM 监听
|
|
31
|
-
*/
|
|
32
|
-
stop: () => void;
|
|
33
|
-
registerEvtBus: (evtBus: any) => void;
|
|
34
|
-
delEvtBus: (evtBus: any) => void;
|
|
35
|
-
};
|
|
36
|
-
export default DOMEventInterceptor;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @class DOMEventInterceptor DOM 事件拦截器
|
|
3
|
-
*
|
|
4
|
-
* 拦截所有原生的输入事件(指针 / 鼠标 / 触摸 / 滚轮 / 键盘),转发到全局事件总线,
|
|
5
|
-
* ICE 内部的事件派发器再监听总线,把事件派发给 canvas 内特定的组件。
|
|
6
|
-
*
|
|
7
|
-
* - 输入通道按运行时能力选择:有 PointerEvent 则只监听 pointer*(统一鼠标/触控笔/触摸),
|
|
8
|
-
* 否则回退 mouse* + touch*;见 `buildDomEventList()`。
|
|
9
|
-
* - 全局只绑定一套 DOM 监听:事件到来时遍历当前所有事件总线转发。
|
|
10
|
-
* 这样重复 init / 多实例 / React StrictMode 双挂载都不会叠加监听,且 stop() 可以真正解绑。
|
|
11
|
-
* - wheel 以 passive:false 绑定,便于应用层阻止页面滚动;触摸的滚动抑制由 canvas 上的
|
|
12
|
-
* `touch-action: none` 声明式完成(见 ICE.init)。
|
|
13
|
-
*
|
|
14
|
-
* @see {DOMEventDispatcher}
|
|
15
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
16
|
-
*/
|
|
17
|
-
declare const DOMEventInterceptor: {
|
|
18
|
-
evtBuses: any[];
|
|
19
|
-
__handlers: null | Array<{
|
|
20
|
-
name: string;
|
|
21
|
-
handler: (evt: any) => void;
|
|
22
|
-
}>;
|
|
23
|
-
/** 当前运行时是否走 PointerEvent 通道(start 时探测并缓存,便于测试断言)。 */
|
|
24
|
-
__hasPointerEvent: boolean;
|
|
25
|
-
/**
|
|
26
|
-
* @method start 绑定全局 DOM 监听(幂等:重复调用不会重复绑定)
|
|
27
|
-
*/
|
|
28
|
-
start: () => void;
|
|
29
|
-
/**
|
|
30
|
-
* @method stop 解绑全局 DOM 监听
|
|
31
|
-
*/
|
|
32
|
-
stop: () => void;
|
|
33
|
-
registerEvtBus: (evtBus: any) => void;
|
|
34
|
-
delEvtBus: (evtBus: any) => void;
|
|
35
|
-
};
|
|
36
|
-
export default DOMEventInterceptor;
|
|
@@ -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
|
-
import ICEEventTarget from './ICEEventTarget.mjs';
|
|
9
|
-
/**
|
|
10
|
-
* @class EventBus
|
|
11
|
-
* @singleton
|
|
12
|
-
*
|
|
13
|
-
* EventBus 事件总线。
|
|
14
|
-
*
|
|
15
|
-
* - canvas 标签内部没有事件机制,ICE 借助于 EventBus 把原生 DOM 事件转发到 canvas 内部(mouse/keyboard/touch),在转发过程中可能会把原生 DOM 事件转换成 ICEEvent 。
|
|
16
|
-
* - EventBus 是 ICEEventTarget 的实现类。
|
|
17
|
-
* - EventBus 是全局单例,同一个 ICE 实例上只能有一个事件总线的实例。
|
|
18
|
-
* - ICE 内部几乎所有机制都依赖事件总线来实现。
|
|
19
|
-
* - requestAnimationFrame 会利用事件总线触发 FRAME 事件。
|
|
20
|
-
*
|
|
21
|
-
* @see ICEEventTaregt
|
|
22
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
23
|
-
*/
|
|
24
|
-
declare class EventBus extends ICEEventTarget {
|
|
25
|
-
constructor(props?: any);
|
|
26
|
-
}
|
|
27
|
-
export default EventBus;
|
|
@@ -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
|
-
import ICEEventTarget from './ICEEventTarget';
|
|
9
|
-
/**
|
|
10
|
-
* @class EventBus
|
|
11
|
-
* @singleton
|
|
12
|
-
*
|
|
13
|
-
* EventBus 事件总线。
|
|
14
|
-
*
|
|
15
|
-
* - canvas 标签内部没有事件机制,ICE 借助于 EventBus 把原生 DOM 事件转发到 canvas 内部(mouse/keyboard/touch),在转发过程中可能会把原生 DOM 事件转换成 ICEEvent 。
|
|
16
|
-
* - EventBus 是 ICEEventTarget 的实现类。
|
|
17
|
-
* - EventBus 是全局单例,同一个 ICE 实例上只能有一个事件总线的实例。
|
|
18
|
-
* - ICE 内部几乎所有机制都依赖事件总线来实现。
|
|
19
|
-
* - requestAnimationFrame 会利用事件总线触发 FRAME 事件。
|
|
20
|
-
*
|
|
21
|
-
* @see ICEEventTaregt
|
|
22
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
23
|
-
*/
|
|
24
|
-
declare class EventBus extends ICEEventTarget {
|
|
25
|
-
constructor(props?: any);
|
|
26
|
-
}
|
|
27
|
-
export default EventBus;
|
|
@@ -1,46 +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
|
-
* @class ICEEvent
|
|
10
|
-
*
|
|
11
|
-
* - 在 ICE 中,所有事件都会被转化成 ICEEvent 进行处理。
|
|
12
|
-
* - ICEEvent 用来模拟 W3C 定义的 Event 接口,ICE 自定义的事件也使用此实现,事件对象上能获取到的属性不同。
|
|
13
|
-
* - 从原始 DOM 事件转发出来的 ICEEvent 实例包含 Event 接口上所定义的所有属性,ICE 内部代码创建的 ICEEvent 实例上只包含很少的自定义属性。
|
|
14
|
-
* - 如果事件是从原始 DOM 事件包装而来,那么ICEEvent 实例的 originalEvent 属性是原始 DOM 事件对象,否则 originalEvent 属性为 null。
|
|
15
|
-
*
|
|
16
|
-
* @see https://developer.mozilla.org/en-US/docs/Web/API/Event
|
|
17
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
18
|
-
*/
|
|
19
|
-
declare class ICEEvent implements Event {
|
|
20
|
-
originalEvent: any;
|
|
21
|
-
param: any;
|
|
22
|
-
constructor(evt?: any, data?: any);
|
|
23
|
-
bubbles: boolean;
|
|
24
|
-
cancelBubble: boolean;
|
|
25
|
-
cancelable: boolean;
|
|
26
|
-
composed: boolean;
|
|
27
|
-
currentTarget: EventTarget;
|
|
28
|
-
defaultPrevented: boolean;
|
|
29
|
-
eventPhase: number;
|
|
30
|
-
isTrusted: boolean;
|
|
31
|
-
returnValue: boolean;
|
|
32
|
-
srcElement: EventTarget;
|
|
33
|
-
target: EventTarget;
|
|
34
|
-
timeStamp: number;
|
|
35
|
-
type: string;
|
|
36
|
-
composedPath(): EventTarget[];
|
|
37
|
-
initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void;
|
|
38
|
-
preventDefault(): void;
|
|
39
|
-
stopImmediatePropagation(): void;
|
|
40
|
-
stopPropagation(): void;
|
|
41
|
-
readonly AT_TARGET: 2;
|
|
42
|
-
readonly BUBBLING_PHASE: 3;
|
|
43
|
-
readonly CAPTURING_PHASE: 1;
|
|
44
|
-
readonly NONE: 0;
|
|
45
|
-
}
|
|
46
|
-
export default ICEEvent;
|
|
@@ -1,46 +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
|
-
* @class ICEEvent
|
|
10
|
-
*
|
|
11
|
-
* - 在 ICE 中,所有事件都会被转化成 ICEEvent 进行处理。
|
|
12
|
-
* - ICEEvent 用来模拟 W3C 定义的 Event 接口,ICE 自定义的事件也使用此实现,事件对象上能获取到的属性不同。
|
|
13
|
-
* - 从原始 DOM 事件转发出来的 ICEEvent 实例包含 Event 接口上所定义的所有属性,ICE 内部代码创建的 ICEEvent 实例上只包含很少的自定义属性。
|
|
14
|
-
* - 如果事件是从原始 DOM 事件包装而来,那么ICEEvent 实例的 originalEvent 属性是原始 DOM 事件对象,否则 originalEvent 属性为 null。
|
|
15
|
-
*
|
|
16
|
-
* @see https://developer.mozilla.org/en-US/docs/Web/API/Event
|
|
17
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
18
|
-
*/
|
|
19
|
-
declare class ICEEvent implements Event {
|
|
20
|
-
originalEvent: any;
|
|
21
|
-
param: any;
|
|
22
|
-
constructor(evt?: any, data?: any);
|
|
23
|
-
bubbles: boolean;
|
|
24
|
-
cancelBubble: boolean;
|
|
25
|
-
cancelable: boolean;
|
|
26
|
-
composed: boolean;
|
|
27
|
-
currentTarget: EventTarget;
|
|
28
|
-
defaultPrevented: boolean;
|
|
29
|
-
eventPhase: number;
|
|
30
|
-
isTrusted: boolean;
|
|
31
|
-
returnValue: boolean;
|
|
32
|
-
srcElement: EventTarget;
|
|
33
|
-
target: EventTarget;
|
|
34
|
-
timeStamp: number;
|
|
35
|
-
type: string;
|
|
36
|
-
composedPath(): EventTarget[];
|
|
37
|
-
initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void;
|
|
38
|
-
preventDefault(): void;
|
|
39
|
-
stopImmediatePropagation(): void;
|
|
40
|
-
stopPropagation(): void;
|
|
41
|
-
readonly AT_TARGET: 2;
|
|
42
|
-
readonly BUBBLING_PHASE: 3;
|
|
43
|
-
readonly CAPTURING_PHASE: 1;
|
|
44
|
-
readonly NONE: 0;
|
|
45
|
-
}
|
|
46
|
-
export default ICEEvent;
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @class ICEEventTarget
|
|
3
|
-
*
|
|
4
|
-
* - canvas 标签内部没有事件机制,模仿 W3C 定义的 EventTaregt 接口,为 Canvas 内部的组件添加事件机制。
|
|
5
|
-
* - ICE 内部的大部分组件都是 ICEEventTarget 的子类。
|
|
6
|
-
* - 部分 API 名称模仿 jQuery ,方便使用者调用。
|
|
7
|
-
*
|
|
8
|
-
* TODO:需要完整模拟 W3C 和 jQuery 提供的事件接口,在 API 名称和调用逻辑上保持完全一致。
|
|
9
|
-
*
|
|
10
|
-
* listeners 的结构:
|
|
11
|
-
* {
|
|
12
|
-
* "click":[
|
|
13
|
-
* {
|
|
14
|
-
* callback:fn1,
|
|
15
|
-
* scope:window
|
|
16
|
-
* },
|
|
17
|
-
* {
|
|
18
|
-
* callback:fn2,
|
|
19
|
-
* scope:component-1
|
|
20
|
-
* }
|
|
21
|
-
* ],
|
|
22
|
-
* "mousemove":[
|
|
23
|
-
* {
|
|
24
|
-
* callback:fn1,
|
|
25
|
-
* scope:window
|
|
26
|
-
* },
|
|
27
|
-
* {
|
|
28
|
-
* callback:fn2,
|
|
29
|
-
* scope:component-1
|
|
30
|
-
* }
|
|
31
|
-
* ]
|
|
32
|
-
* }
|
|
33
|
-
*
|
|
34
|
-
* @abstract
|
|
35
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
36
|
-
* @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget
|
|
37
|
-
*/
|
|
38
|
-
declare abstract class ICEEventTarget {
|
|
39
|
-
protected listeners: any;
|
|
40
|
-
protected suspendedEventNames: any;
|
|
41
|
-
constructor();
|
|
42
|
-
/**
|
|
43
|
-
* @method on
|
|
44
|
-
* 添加事件监听
|
|
45
|
-
* @param eventName
|
|
46
|
-
* @param fn
|
|
47
|
-
* @param scope
|
|
48
|
-
*/
|
|
49
|
-
on(eventName: string, fn: (...args: any[]) => any, scope?: any): void;
|
|
50
|
-
/**
|
|
51
|
-
* @method off
|
|
52
|
-
* 删除事件监听
|
|
53
|
-
* @param eventName
|
|
54
|
-
* @param fn
|
|
55
|
-
* @param scope
|
|
56
|
-
* @returns
|
|
57
|
-
*/
|
|
58
|
-
off(eventName: string, fn: (...args: any[]) => any, scope?: any): void;
|
|
59
|
-
/**
|
|
60
|
-
* @method dispatchEvent
|
|
61
|
-
*
|
|
62
|
-
* 触发事件。
|
|
63
|
-
*
|
|
64
|
-
* 所有事件都会被转换成 ICEEvent 实例。
|
|
65
|
-
*
|
|
66
|
-
* @param eventName
|
|
67
|
-
* @param originalEvent
|
|
68
|
-
* @param param
|
|
69
|
-
* @returns
|
|
70
|
-
*/
|
|
71
|
-
trigger(eventName: string, originalEvent?: any, param?: {}): boolean;
|
|
72
|
-
/**
|
|
73
|
-
* @method once
|
|
74
|
-
* 一次性事件,触发一次就自动删除自己。
|
|
75
|
-
* @param eventName
|
|
76
|
-
* @param fn
|
|
77
|
-
*/
|
|
78
|
-
once(eventName: string, fn: (...args: any[]) => any, scope?: any): void;
|
|
79
|
-
/**
|
|
80
|
-
* @method suspend
|
|
81
|
-
* 挂起事件。
|
|
82
|
-
* @param eventName
|
|
83
|
-
*/
|
|
84
|
-
suspend(eventName: string): void;
|
|
85
|
-
/**
|
|
86
|
-
* @method resume
|
|
87
|
-
* 恢复事件。
|
|
88
|
-
* @param eventName
|
|
89
|
-
*/
|
|
90
|
-
resume(eventName: string): void;
|
|
91
|
-
/**
|
|
92
|
-
* @method purgeEvents
|
|
93
|
-
* 清除所有事件。
|
|
94
|
-
*/
|
|
95
|
-
purgeEvents(): void;
|
|
96
|
-
/**
|
|
97
|
-
* @method hasListener
|
|
98
|
-
* 查询是否带有某个事件监听器。
|
|
99
|
-
* @param eventName
|
|
100
|
-
* @param fn
|
|
101
|
-
* @param scope
|
|
102
|
-
* @returns
|
|
103
|
-
*/
|
|
104
|
-
hasListener(eventName: string, fn: (...args: any[]) => any, scope?: any): boolean;
|
|
105
|
-
}
|
|
106
|
-
export default ICEEventTarget;
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @class ICEEventTarget
|
|
3
|
-
*
|
|
4
|
-
* - canvas 标签内部没有事件机制,模仿 W3C 定义的 EventTaregt 接口,为 Canvas 内部的组件添加事件机制。
|
|
5
|
-
* - ICE 内部的大部分组件都是 ICEEventTarget 的子类。
|
|
6
|
-
* - 部分 API 名称模仿 jQuery ,方便使用者调用。
|
|
7
|
-
*
|
|
8
|
-
* TODO:需要完整模拟 W3C 和 jQuery 提供的事件接口,在 API 名称和调用逻辑上保持完全一致。
|
|
9
|
-
*
|
|
10
|
-
* listeners 的结构:
|
|
11
|
-
* {
|
|
12
|
-
* "click":[
|
|
13
|
-
* {
|
|
14
|
-
* callback:fn1,
|
|
15
|
-
* scope:window
|
|
16
|
-
* },
|
|
17
|
-
* {
|
|
18
|
-
* callback:fn2,
|
|
19
|
-
* scope:component-1
|
|
20
|
-
* }
|
|
21
|
-
* ],
|
|
22
|
-
* "mousemove":[
|
|
23
|
-
* {
|
|
24
|
-
* callback:fn1,
|
|
25
|
-
* scope:window
|
|
26
|
-
* },
|
|
27
|
-
* {
|
|
28
|
-
* callback:fn2,
|
|
29
|
-
* scope:component-1
|
|
30
|
-
* }
|
|
31
|
-
* ]
|
|
32
|
-
* }
|
|
33
|
-
*
|
|
34
|
-
* @abstract
|
|
35
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
36
|
-
* @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget
|
|
37
|
-
*/
|
|
38
|
-
declare abstract class ICEEventTarget {
|
|
39
|
-
protected listeners: any;
|
|
40
|
-
protected suspendedEventNames: any;
|
|
41
|
-
constructor();
|
|
42
|
-
/**
|
|
43
|
-
* @method on
|
|
44
|
-
* 添加事件监听
|
|
45
|
-
* @param eventName
|
|
46
|
-
* @param fn
|
|
47
|
-
* @param scope
|
|
48
|
-
*/
|
|
49
|
-
on(eventName: string, fn: (...args: any[]) => any, scope?: any): void;
|
|
50
|
-
/**
|
|
51
|
-
* @method off
|
|
52
|
-
* 删除事件监听
|
|
53
|
-
* @param eventName
|
|
54
|
-
* @param fn
|
|
55
|
-
* @param scope
|
|
56
|
-
* @returns
|
|
57
|
-
*/
|
|
58
|
-
off(eventName: string, fn: (...args: any[]) => any, scope?: any): void;
|
|
59
|
-
/**
|
|
60
|
-
* @method dispatchEvent
|
|
61
|
-
*
|
|
62
|
-
* 触发事件。
|
|
63
|
-
*
|
|
64
|
-
* 所有事件都会被转换成 ICEEvent 实例。
|
|
65
|
-
*
|
|
66
|
-
* @param eventName
|
|
67
|
-
* @param originalEvent
|
|
68
|
-
* @param param
|
|
69
|
-
* @returns
|
|
70
|
-
*/
|
|
71
|
-
trigger(eventName: string, originalEvent?: any, param?: {}): boolean;
|
|
72
|
-
/**
|
|
73
|
-
* @method once
|
|
74
|
-
* 一次性事件,触发一次就自动删除自己。
|
|
75
|
-
* @param eventName
|
|
76
|
-
* @param fn
|
|
77
|
-
*/
|
|
78
|
-
once(eventName: string, fn: (...args: any[]) => any, scope?: any): void;
|
|
79
|
-
/**
|
|
80
|
-
* @method suspend
|
|
81
|
-
* 挂起事件。
|
|
82
|
-
* @param eventName
|
|
83
|
-
*/
|
|
84
|
-
suspend(eventName: string): void;
|
|
85
|
-
/**
|
|
86
|
-
* @method resume
|
|
87
|
-
* 恢复事件。
|
|
88
|
-
* @param eventName
|
|
89
|
-
*/
|
|
90
|
-
resume(eventName: string): void;
|
|
91
|
-
/**
|
|
92
|
-
* @method purgeEvents
|
|
93
|
-
* 清除所有事件。
|
|
94
|
-
*/
|
|
95
|
-
purgeEvents(): void;
|
|
96
|
-
/**
|
|
97
|
-
* @method hasListener
|
|
98
|
-
* 查询是否带有某个事件监听器。
|
|
99
|
-
* @param eventName
|
|
100
|
-
* @param fn
|
|
101
|
-
* @param scope
|
|
102
|
-
* @returns
|
|
103
|
-
*/
|
|
104
|
-
hasListener(eventName: string, fn: (...args: any[]) => any, scope?: any): boolean;
|
|
105
|
-
}
|
|
106
|
-
export default ICEEventTarget;
|