From 31ea637151a385383e8b800164de0d225dfe022e Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Tue, 28 Jun 2022 12:56:21 +0200 Subject: [PATCH] Check target in canMove --- src/dom_components/index.ts | 61 ++++++++----------------------------- 1 file changed, 13 insertions(+), 48 deletions(-) diff --git a/src/dom_components/index.ts b/src/dom_components/index.ts index 7320e4f09..4eddb335e 100644 --- a/src/dom_components/index.ts +++ b/src/dom_components/index.ts @@ -52,15 +52,7 @@ * * @module Components */ -import { - isEmpty, - isObject, - isArray, - isFunction, - isString, - result, - debounce, -} from 'underscore'; +import { isEmpty, isObject, isArray, isFunction, isString, result, debounce } from 'underscore'; import defaults from './config/config'; import Component, { keyUpdate, keyUpdateInside } from './model/Component'; import Components from './model/Components'; @@ -260,12 +252,8 @@ export default class ComponentManager extends ItemManagerModule { em.on('change:componentHovered', this.componentHovered, this); const selected = em.get('selected'); - em.listenTo(selected, 'add', (sel, c, opts) => - this.selectAdd(selected.getComponent(sel), opts) - ); - em.listenTo(selected, 'remove', (sel, c, opts) => - this.selectRemove(selected.getComponent(sel), opts) - ); + em.listenTo(selected, 'add', (sel, c, opts) => this.selectAdd(selected.getComponent(sel), opts)); + em.listenTo(selected, 'remove', (sel, c, opts) => this.selectRemove(selected.getComponent(sel), opts)); } return this; @@ -406,7 +394,7 @@ export default class ComponentManager extends ItemManagerModule { clear(opts = {}) { const components = this.getComponents(); //@ts-ignore - components?.filter(Boolean).forEach((i) => i.remove(opts)); + components?.filter(Boolean).forEach(i => i.remove(opts)); return this; } @@ -430,23 +418,11 @@ export default class ComponentManager extends ItemManagerModule { */ addType(type: string, methods: any) { const { em } = this; - const { - model = {}, - view = {}, - isComponent, - extend, - extendView, - extendFn = [], - extendFnView = [], - } = methods; + const { model = {}, view = {}, isComponent, extend, extendView, extendFn = [], extendFnView = [] } = methods; const compType = this.getType(type); const extendType = this.getType(extend); const extendViewType = this.getType(extendView); - const typeToExtend = extendType - ? extendType - : compType - ? compType - : this.getType('default'); + const typeToExtend = extendType ? extendType : compType ? compType : this.getType('default'); const modelToExt = typeToExtend.model; const viewToExt = extendViewType ? extendViewType.view : typeToExtend.view; @@ -476,10 +452,7 @@ export default class ComponentManager extends ItemManagerModule { }, }, { - isComponent: - compType && !extendType && !isComponent - ? modelToExt.isComponent - : isComponent || (() => 0), + isComponent: compType && !extendType && !isComponent ? modelToExt.isComponent : isComponent || (() => 0), } ); } @@ -552,9 +525,7 @@ export default class ComponentManager extends ItemManagerModule { component.set({ status: 'selected', }); - ['component:selected', 'component:toggled'].forEach((event) => - this.em.trigger(event, component, opts) - ); + ['component:selected', 'component:toggled'].forEach(event => this.em.trigger(event, component, opts)); } } @@ -565,9 +536,7 @@ export default class ComponentManager extends ItemManagerModule { status: '', state: '', }); - ['component:deselected', 'component:toggled'].forEach((event) => - this.em.trigger(event, component, opts) - ); + ['component:deselected', 'component:toggled'].forEach(event => this.em.trigger(event, component, opts)); } } @@ -634,7 +603,7 @@ export default class ComponentManager extends ItemManagerModule { source: null, }; - if (!source) return result; + if (!source || !target) return result; //@ts-ignore let srcModel = source.toHTML ? source : null; @@ -668,11 +637,7 @@ export default class ComponentManager extends ItemManagerModule { if (isFunction(droppable)) { droppable = !!droppable(srcModel, target, at); } else { - if ( - droppable === false && - target.isInstanceOf('text') && - srcModel.get('textable') - ) { + if (droppable === false && target.isInstanceOf('text') && srcModel.get('textable')) { droppable = true; } else { const el = srcModel.getEl(); @@ -696,8 +661,8 @@ export default class ComponentManager extends ItemManagerModule { destroy() { const all = this.allById(); - Object.keys(all).forEach((id) => all[id] && all[id].remove()); + Object.keys(all).forEach(id => all[id] && all[id].remove()); this.componentView?.remove(); - [this.em, this.componentsById, this.componentView].forEach((i) => (i = {})); + [this.em, this.componentsById, this.componentView].forEach(i => (i = {})); } }