diff --git a/packages/core/examples/features/lib/main.js b/packages/core/examples/features/lib/main.js index 8386abd..b040549 100644 --- a/packages/core/examples/features/lib/main.js +++ b/packages/core/examples/features/lib/main.js @@ -39,7 +39,7 @@ const core = new Core(mount, { }); -// initEvent(); +initEvent(); core.setData(data); @@ -81,5 +81,8 @@ function initEvent() { core.on('screenChangeElement', (data) => { console.log('screenChangeElement: ', data); }); + core.on('screenDoubleClickElement', (p) => { + console.log('screenDoubleClickElement ===', p) + }) } \ No newline at end of file diff --git a/packages/core/examples/test/event.html b/packages/core/examples/test/event.html new file mode 100644 index 0000000..546cf0d --- /dev/null +++ b/packages/core/examples/test/event.html @@ -0,0 +1,125 @@ + + + + + + + + +
+
+
doubleClickElement
+
+
+ + + + + + + \ No newline at end of file diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index b189a7f..133be0e 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -18,7 +18,8 @@ import { TempData } from './lib/temp'; import { _board, _data, _opts, _config, _renderer, _element, _helper, _hasInited, _mode, _tempData, _prevPoint, _draw, - _selectedDotDirection, _coreEvent, _mapper, _initEvent, _handlePoint, _handleClick, + _selectedDotDirection, _coreEvent, _mapper, _initEvent, + _handlePoint, _handleClick, _handleDoubleClick, _handleMoveStart, _handleMove, _handleMoveEnd, _handleHover, _dragElements, _transfromElement, _emitChangeScreen, _emitChangeData, _onlyRender, _cursorStatus, } from './names'; @@ -257,8 +258,8 @@ class Core { } this[_board].on('hover', time.throttle(this[_handleHover].bind(this), 32)); - this[_board].on('point', time.throttle(this[_handleClick].bind(this), 16)); + this[_board].on('doubleClick', this[_handleDoubleClick].bind(this)); if (this[_onlyRender] === true) { return; } @@ -268,6 +269,17 @@ class Core { this[_board].on('moveEnd', this[_handleMoveEnd].bind(this)); } + private [_handleDoubleClick](point: TypePoint) { + const [index, uuid] = this[_element].isPointInElement(point, this[_data]); + if (index >= 0 && uuid) { + this[_coreEvent].trigger( + 'screenDoubleClickElement', + { index, uuid, element: deepClone(this[_data].elements?.[index])} + ); + } + this[_draw](); + } + private [_handleClick](point: TypePoint): void { const [index, uuid] = this[_element].isPointInElement(point, this[_data]); if (index >= 0 && uuid) { diff --git a/packages/core/src/lib/core-event.ts b/packages/core/src/lib/core-event.ts index e365a23..e6c8d4b 100644 --- a/packages/core/src/lib/core-event.ts +++ b/packages/core/src/lib/core-event.ts @@ -16,6 +16,7 @@ export type TypeCoreEventArgMap = { 'mouseOverElement': TypeCoreEventSelectBaseArg & { element: TypeElement } 'mouseLeaveElement': TypeCoreEventSelectBaseArg & { element: TypeElement } 'screenClickElement': TypeCoreEventSelectBaseArg & { element: TypeElement } + 'screenDoubleClickElement': TypeCoreEventSelectBaseArg & { element: TypeElement } 'screenSelectElement': TypeCoreEventSelectBaseArg & { element: TypeElement } 'screenMoveElementStart': TypeCoreEventSelectBaseArg & TypePoint, 'screenMoveElementEnd': TypeCoreEventSelectBaseArg & TypePoint, diff --git a/packages/core/src/names.ts b/packages/core/src/names.ts index ca75501..fbc7ed4 100644 --- a/packages/core/src/names.ts +++ b/packages/core/src/names.ts @@ -15,6 +15,7 @@ const _coreEvent = Symbol('_coreEvent'); const _mapper = Symbol('_mapper'); const _initEvent = Symbol('_initEvent'); const _handleClick = Symbol('_handleClick'); +const _handleDoubleClick = Symbol('_handleDoubleClick'); const _handlePoint = Symbol('_handlePoint'); const _handleMoveStart = Symbol('_handleMoveStart'); const _handleMove = Symbol('_handleMove'); @@ -30,7 +31,8 @@ const _cursorStatus = Symbol('_cursorStatus'); export { _board, _data, _opts, _config, _renderer, _element, _helper, _hasInited, _mode, _tempData, _prevPoint, _draw, - _selectedDotDirection, _coreEvent, _mapper, _initEvent, _handlePoint, _handleClick, + _selectedDotDirection, _coreEvent, _mapper, _initEvent, + _handlePoint, _handleClick, _handleDoubleClick, _handleMoveStart, _handleMove, _handleMoveEnd, _handleHover, _dragElements, _transfromElement, _emitChangeScreen, _emitChangeData, _onlyRender, _cursorStatus, }; \ No newline at end of file