Browse Source

Cleanup

symbols-api
Artur Arseniev 2 years ago
parent
commit
c6cf14028a
  1. 29
      src/dom_components/index.ts
  2. 54
      src/dom_components/model/Component.ts
  3. 6
      src/dom_components/types.ts
  4. 6
      test/specs/dom_components/model/Symbols.ts

29
src/dom_components/index.ts

@ -59,7 +59,7 @@ import { AddOptions, ObjectAny } from '../common';
import EditorModel from '../editor/model/Editor';
import { isComponent } from '../utils/mixins';
import defaults, { DomComponentsConfig } from './config/config';
import Component, { IComponent, keySymbolOvrd, keyUpdate, keyUpdateInside } from './model/Component';
import Component, { IComponent, keyUpdate, keyUpdateInside } from './model/Component';
import ComponentComment from './model/ComponentComment';
import ComponentFrame from './model/ComponentFrame';
import ComponentImage from './model/ComponentImage';
@ -705,9 +705,12 @@ export default class ComponentManager extends ItemManagerModule<DomComponentsCon
}
/**
* Get info from a symbol.
* Get info about the symbol.
* @param {[Component]} cmp Component symbol from which to get the info.
* @returns
* @returns {Object} Object containing symbol info.
* @example
* cmp.getSymbolInfo(editor.getSelected());
* // > { isSymbol: true, isMain: false, isInstance: true, ... }
*/
getSymbolInfo(cmp: Component, opts: { withChanges?: string } = {}): SymbolInfo {
const isMain = isSymbolMain(cmp);
@ -727,26 +730,6 @@ export default class ComponentManager extends ItemManagerModule<DomComponentsCon
};
}
/**
* Update symbol override.
* By setting override to true, none of its properties will be propagated to its relative symbols.
* By setting override to specific properties, changes to those properties will be skipped from propagation.
* @param {[Component]} symbol
* @param {Boolean|String|Array<String>} value
*/
setSymbolOverride(symbol: Component, value: boolean | string | string[]) {
symbol.set(keySymbolOvrd, isString(value) ? [value] : value);
}
/**
* Get symbol override value.
* @param {[Component]} symbol
* @returns {Boolean|Array<String>}
*/
getSymbolOverride(symbol: Component): boolean | string[] | undefined {
return symbol.get(keySymbolOvrd);
}
/**
* Check if a component can be moved inside another one.
* @param {[Component]} target The target component is the one that is supposed to receive the source one.

54
src/dom_components/model/Component.ts

@ -379,6 +379,23 @@ export default class Component extends StyleableModel<ComponentProperties> {
this.emitUpdate('toolbar');
}
__getAllById() {
const { em } = this;
return em ? em.Components.allById() : {};
}
__upSymbProps(m: any, opts: SymbolToUpOptions = {}) {
updateSymbolProps(this, opts);
}
__upSymbCls(m: any, c: any, opts = {}) {
updateSymbolCls(this, opts);
}
__upSymbComps(m: Component, c: Components, o: any) {
updateSymbolComps(this, m, c, o);
}
/**
* Check component's type
* @param {string} type Component type
@ -426,6 +443,26 @@ export default class Component extends StyleableModel<ComponentProperties> {
return this.get('dmode') || '';
}
/**
* Set symbol override.
* By setting override to `true`, none of its property changes will be propagated to relative symbols.
* By setting override to specific properties, changes of those properties will be skipped from propagation.
* @param {Boolean|String|Array<String>} value
* @example
* component.setSymbolOverride(['children', 'classes']);
*/
setSymbolOverride(value?: boolean | string | string[]) {
this.set(keySymbolOvrd, (isString(value) ? [value] : value) ?? 0);
}
/**
* Get symbol override value.
* @returns {Boolean|Array<String>}
*/
getSymbolOverride(): boolean | string[] | undefined {
return this.get(keySymbolOvrd);
}
/**
* Find inner components by query string.
* **ATTENTION**: this method works only with already rendered component
@ -796,23 +833,6 @@ export default class Component extends StyleableModel<ComponentProperties> {
return classStr ? classStr.split(' ') : [];
}
__getAllById() {
const { em } = this;
return em ? em.Components.allById() : {};
}
__upSymbProps(m: any, opts: SymbolToUpOptions = {}) {
updateSymbolProps(this, opts);
}
__upSymbCls(m: any, c: any, opts = {}) {
updateSymbolCls(this, opts);
}
__upSymbComps(m: Component, c: Components, o: any) {
updateSymbolComps(this, m, c, o);
}
initClasses(m?: any, c?: any, opts: any = {}) {
const event = 'change:classes';
const { class: attrCls, ...restAttr } = this.get('attributes') || {};

6
src/dom_components/types.ts

@ -16,7 +16,13 @@ export interface SymbolInfo {
}
export enum ComponentsCommands {
/**
* Add a new symbol from a component.
*/
symbolAdd = 'core:symbol-add',
/**
* Detach symbol instance from the main one.
*/
symbolDetach = 'core:symbol-detach',
}

6
test/specs/dom_components/model/Symbols.ts

@ -18,9 +18,9 @@ describe('Symbols', () => {
const getSymbolInfo = ((comp, opts) => cmps.getSymbolInfo(comp, opts)) as Editor['Components']['getSymbolInfo'];
const setSymbolOverride = ((comp, value) => {
return cmps.setSymbolOverride(comp, value);
}) as Editor['Components']['setSymbolOverride'];
const setSymbolOverride = (comp: Component, value: Parameters<Component['setSymbolOverride']>[0]) => {
comp.setSymbolOverride(value);
};
const duplicate = (comp: Component): Component => {
const cloned = comp.clone({});

Loading…
Cancel
Save