Browse Source

Up SelectComponent

pull/5337/head
Artur Arseniev 3 years ago
parent
commit
2a9bb7b282
  1. 23
      src/commands/view/SelectComponent.ts
  2. 2
      src/utils/dom.ts
  3. 6
      src/utils/mixins.ts

23
src/commands/view/SelectComponent.ts

@ -4,7 +4,7 @@ import Component from '../../dom_components/model/Component';
import Toolbar from '../../dom_components/model/Toolbar';
import ToolbarView from '../../dom_components/view/ToolbarView';
import { isDoc, isTaggableNode, isVisible, off, on } from '../../utils/dom';
import { getComponentView, getUnitFromValue, getViewEl, hasWin } from '../../utils/mixins';
import { getComponentModel, getComponentView, getUnitFromValue, getViewEl, hasWin } from '../../utils/mixins';
import { CommandObject } from './CommandAbstract';
let showOffsets: boolean;
@ -110,25 +110,24 @@ export default {
* @param {Object} e
* @private
*/
onHover(e: any) {
e.stopPropagation();
onHover(ev: Event) {
ev.stopPropagation();
const { em } = this;
const trg = e.target;
const view = getComponentView(trg);
const el = ev.target as HTMLElement;
const view = getComponentView(el);
const frameView = view?.frameView;
const $el = $(trg);
let model = $el.data('model');
let model = view?.model;
// Get first valid model
if (!model) {
let parent = $el.parent();
while (!model && parent.length && !isDoc(parent[0])) {
model = parent.data('model');
parent = parent.parent();
let parentEl = el.parentNode;
while (!model && parentEl && !isDoc(parentEl)) {
model = getComponentModel(parentEl);
parentEl = parentEl.parentNode;
}
}
this.currentDoc = trg.ownerDocument;
this.currentDoc = el.ownerDocument;
em.setHovered(model, { useValid: true });
frameView && em.setCurrentFrame(frameView);
},

2
src/utils/dom.ts

@ -19,7 +19,7 @@ const KEY_CHILD = 'children';
export const motionsEv = 'transitionend oTransitionEnd transitionend webkitTransitionEnd';
export const isDoc = (el?: HTMLElement) => el && el.nodeType === 9;
export const isDoc = (el?: Node): el is Document => el?.nodeType === Node.DOCUMENT_NODE;
export const removeEl = (el?: HTMLElement) => {
const parent = el && el.parentNode;

6
src/utils/mixins.ts

@ -195,7 +195,11 @@ const isComponent = (obj: any) => obj && obj.toHTML;
const isRule = (obj: any) => obj && obj.toCSS;
const getViewEl = <T extends any>(el: any): T | undefined => el.__gjsv;
export const getComponentView = (el: HTMLElement) => getViewEl<ComponentView>(el);
export const getComponentView = (el: Node) => getViewEl<ComponentView>(el);
export const getComponentModel = (el: Node) => getComponentView(el)?.model;
const setViewEl = (el: any, view: any) => {
el.__gjsv = view;
};

Loading…
Cancel
Save