@visactor/vgrammar-core 0.14.0-alpha.0 → 0.14.0-alpha.1
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/cjs/graph/animation/morph.d.ts +2 -12
- package/cjs/graph/animation/morph.js +76 -163
- package/cjs/graph/animation/morph.js.map +1 -1
- package/cjs/graph/element.d.ts +1 -0
- package/cjs/graph/element.js +12 -6
- package/cjs/graph/element.js.map +1 -1
- package/cjs/graph/glyph-element.js +1 -1
- package/cjs/graph/glyph-element.js.map +1 -1
- package/cjs/graph/view-diff.d.ts +8 -0
- package/cjs/graph/view-diff.js +93 -0
- package/cjs/graph/view-diff.js.map +1 -0
- package/cjs/index.d.ts +3 -1
- package/cjs/index.js +17 -2
- package/cjs/index.js.map +1 -1
- package/cjs/interactions/brush-base.js +1 -2
- package/cjs/interactions/brush-filter.js +2 -1
- package/cjs/interactions/fish-eye.js +1 -2
- package/cjs/interactions/index.js +2 -1
- package/cjs/interactions/tooltip.js +1 -1
- package/cjs/parse/util.js.map +1 -1
- package/cjs/types/morph.d.ts +1 -2
- package/cjs/types/morph.js.map +1 -1
- package/cjs/view/View.d.ts +1 -2
- package/cjs/view/View.js +32 -30
- package/cjs/view/View.js.map +1 -1
- package/cjs/view/animate.js +2 -1
- package/cjs/view/animate.js.map +1 -1
- package/cjs/view/mark-animate-mixin.d.ts +1 -0
- package/cjs/view/mark-animate-mixin.js +29 -0
- package/cjs/view/mark-animate-mixin.js.map +1 -0
- package/cjs/view/mark.js +18 -14
- package/cjs/view/mark.js.map +1 -1
- package/cjs/view/view-animate-mixin.d.ts +1 -0
- package/cjs/view/view-animate-mixin.js +26 -0
- package/cjs/view/view-animate-mixin.js.map +1 -0
- package/cjs/view/view-morph-mixin.d.ts +1 -0
- package/cjs/view/view-morph-mixin.js +32 -0
- package/cjs/view/view-morph-mixin.js.map +1 -0
- package/es/graph/animation/morph.d.ts +2 -12
- package/es/graph/animation/morph.js +72 -159
- package/es/graph/animation/morph.js.map +1 -1
- package/es/graph/element.d.ts +1 -0
- package/es/graph/element.js +12 -6
- package/es/graph/element.js.map +1 -1
- package/es/graph/glyph-element.js +1 -1
- package/es/graph/glyph-element.js.map +1 -1
- package/es/graph/view-diff.d.ts +8 -0
- package/es/graph/view-diff.js +89 -0
- package/es/graph/view-diff.js.map +1 -0
- package/es/index.d.ts +3 -1
- package/es/index.js +11 -1
- package/es/index.js.map +1 -1
- package/es/interactions/element-active.js +1 -2
- package/es/interactions/element-highlight-by-group.js +2 -1
- package/es/interactions/fish-eye.js +1 -1
- package/es/parse/option.js +1 -2
- package/es/parse/scale.js +2 -1
- package/es/parse/util.js.map +1 -1
- package/es/types/morph.d.ts +1 -2
- package/es/types/morph.js.map +1 -1
- package/es/view/View.d.ts +1 -2
- package/es/view/View.js +33 -32
- package/es/view/View.js.map +1 -1
- package/es/view/animate.js +2 -1
- package/es/view/animate.js.map +1 -1
- package/es/view/mark-animate-mixin.d.ts +1 -0
- package/es/view/mark-animate-mixin.js +25 -0
- package/es/view/mark-animate-mixin.js.map +1 -0
- package/es/view/mark.js +17 -15
- package/es/view/mark.js.map +1 -1
- package/es/view/view-animate-mixin.d.ts +1 -0
- package/es/view/view-animate-mixin.js +16 -0
- package/es/view/view-animate-mixin.js.map +1 -0
- package/es/view/view-morph-mixin.d.ts +1 -0
- package/es/view/view-morph-mixin.js +22 -0
- package/es/view/view-morph-mixin.js.map +1 -0
- package/package.json +5 -5
package/es/parse/scale.js
CHANGED
package/es/parse/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/parse/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAe7E,MAAM,UAAU,cAAc,CAAC,UAAiD,EAAE,IAAW;IAC3F,MAAM,YAAY,GAAuB,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3D,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,IAAoB,EAAE,GAA0B,EAAE,EAAE;QAC9E,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAiB,CAAC;QAEvF,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAChB;QACD,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAW;IACxC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAA0B,aAA1B,MAAM,uBAAN,MAAM,CAAsB,MAAM,CAAA,CAAC;AACtE,CAAC;AAED,SAAS,oBAAoB,CAC3B,MAAW;IAEX,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAsC,aAAtC,MAAM,uBAAN,MAAM,CAAkC,QAAQ,CAAA,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,IAA4C,EAC5C,IAAW;IAEX,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;QACf,OAAO,EAAE,CAAC;KACX;IACD,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;YACpB,OAAO,KAAK,CAAe,IAAI,CAAC,cAAc,CAAC,MAAgB,CAAiB,CAAC,CAAC;SACnF;aAAM,IAAI,CAAC,MAAuB,aAAvB,MAAM,uBAAN,MAAM,CAAmB,WAAW,MAAK,QAAQ,EAAE;YAC7D,OAAO,CAAC,MAAsB,CAAC,CAAC;SACjC;KACF;SAAM,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE;QACrC,OAAO,cAAc,CAAE,IAAoC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;KAC/E;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,IAAS;IAET,OAAO,UAAU,CAAC,IAAI,CAAC,KAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAA,IAAI,CAAC,CAAC,CAAC,IAAoC,aAApC,IAAI,uBAAJ,IAAI,CAAkC,QAAQ,CAAA,CAAC;AAC/F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAA4C,EAC5C,UAAe,EACf,sBAA2C,EAC3C,OAAwB;IAExB,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;QACf,OAAO,IAAS,CAAC;KAClB;IAED,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;QACpB,IAAI,OAAO,EAAE;YACX,OAAQ,IAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;SACnF;QACD,OAAQ,IAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,EAAE,UAAU,CAAC,CAAC;KAC1E;SAAM,IAAK,IAAwB,CAAC,MAAM,EAAE;QAC3C,MAAM,MAAM,GAAI,IAAwB,CAAC,MAAM,CAAC;QAChD,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;YACpB,OAAO,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,MAAgB,CAAC,CAAC;SACvC;QACD,OAAQ,MAAuB,CAAC,MAAM,EAAE,CAAC;KAC1C;SAAM,IAAK,IAAoC,CAAC,QAAQ,EAAE;QACzD,IAAI,OAAO,EAAE;YACX,OAAQ,IAAoC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;SAC/G;QACD,OAAQ,IAAoC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,EAAE,UAAU,CAAC,CAAC;KACtG;IACD,OAAO,IAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAI,IAA8B,EAAE,UAAe;IAC5F,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;QACf,OAAO,IAAS,CAAC;KAClB;IAED,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;KACpC;SAAM,IAAK,IAAwB,CAAC,MAAM,EAAE;QAC3C,MAAM,MAAM,GAAI,IAAwB,CAAC,MAAM,CAAC;QAChD,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;YACpB,OAAO,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,MAAgB,CAAC,CAAC;SACvC;QACD,OAAQ,MAAuB,CAAC,MAAM,EAAE,CAAC;KAC1C;SAAM,IAAK,IAAgD,CAAC,QAAQ,EAAE;QACrE,OAAQ,IAAgD,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;KAC1F;IACD,OAAO,IAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAA8B,EAAE,UAAe;IAC9E,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACrE,CAAC;AAKD,MAAM,UAAU,QAAQ,CAAC,GAAQ;IAC/B,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAO,EAAsB,EAAE;IACvD,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAI,KAAwD,EAAE,EAAE;IACxF,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;QACrB,OAAO,
|
|
1
|
+
{"version":3,"sources":["../src/parse/util.ts"],"names":[],"mappings":"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","file":"util.js","sourcesContent":["import { isString, isFunction, isNil, array, Color } from '@visactor/vutils';\nimport type { IElement } from '../types/element';\nimport type {\n FunctionCallback,\n SignalDependency,\n SignalReference,\n IView,\n GenericFunctionType,\n SignalFunction,\n ParameterFunctionType,\n ParameterCallback,\n Nil\n} from '../types';\nimport type { IGrammarBase } from '../types/grammar';\n\nexport function parseReference(dependency: SignalDependency | SignalDependency[], view: IView): IGrammarBase[] {\n const dependencies: SignalDependency[] = array(dependency);\n return dependencies.reduce((refs: IGrammarBase[], dep: string | IGrammarBase) => {\n const ref = (isString(dep) ? view.getGrammarById(dep as string) : dep) as IGrammarBase;\n\n if (ref) {\n refs.push(ref);\n }\n return refs;\n }, []);\n}\n\nfunction isSignalReferenceType(signal: any): signal is SignalReference {\n return !isFunction(signal) && !!(signal as SignalReference)?.signal;\n}\n\nfunction isSignalFunctionType<Callback extends FunctionCallback<T>, T>(\n signal: any\n): signal is SignalFunction<Callback, T> {\n return !isFunction(signal) && !!(signal as SignalFunction<Callback, T>)?.callback;\n}\n\nexport function parseFunctionType<Callback extends FunctionCallback<T>, T>(\n spec: GenericFunctionType<Callback, T> | Nil,\n view: IView\n): IGrammarBase[] {\n if (isNil(spec)) {\n return [];\n }\n if (isSignalReferenceType(spec)) {\n const signal = spec.signal;\n if (isString(signal)) {\n return array<IGrammarBase>(view.getGrammarById(signal as string) as IGrammarBase);\n } else if ((signal as IGrammarBase)?.grammarType === 'signal') {\n return [signal as IGrammarBase];\n }\n } else if (isSignalFunctionType(spec)) {\n return parseReference((spec as SignalFunction<Callback, T>).dependency, view);\n }\n return [];\n}\n\nexport function isFunctionType<Callback extends FunctionCallback<T>, T>(\n spec: any\n): spec is Callback | SignalReference | SignalFunction<Callback, T> {\n return isFunction(spec) || spec?.signal || !!(spec as SignalFunction<Callback, T>)?.callback;\n}\n\nexport function invokeFunctionType<Callback extends FunctionCallback<T>, T>(\n spec: GenericFunctionType<Callback, T> | Nil,\n parameters: any,\n datumOrGrammarInstance?: any | IGrammarBase,\n element?: IElement | any\n): T {\n if (isNil(spec)) {\n return spec as T;\n }\n\n if (isFunction(spec)) {\n if (element) {\n return (spec as Callback).call(null, datumOrGrammarInstance, element, parameters);\n }\n return (spec as Callback).call(null, datumOrGrammarInstance, parameters);\n } else if ((spec as SignalReference).signal) {\n const signal = (spec as SignalReference).signal;\n if (isString(signal)) {\n return parameters?.[signal as string];\n }\n return (signal as IGrammarBase).output();\n } else if ((spec as SignalFunction<Callback, T>).callback) {\n if (element) {\n return (spec as SignalFunction<Callback, T>).callback.call(null, datumOrGrammarInstance, element, parameters);\n }\n return (spec as SignalFunction<Callback, T>).callback.call(null, datumOrGrammarInstance, parameters);\n }\n return spec as T;\n}\n\nexport function invokeParameterFunctionType<T>(spec: ParameterFunctionType<T>, parameters: any): T {\n if (isNil(spec)) {\n return spec as T;\n }\n\n if (isFunction(spec)) {\n return spec.call(null, parameters);\n } else if ((spec as SignalReference).signal) {\n const signal = (spec as SignalReference).signal;\n if (isString(signal)) {\n return parameters?.[signal as string];\n }\n return (signal as IGrammarBase).output();\n } else if ((spec as SignalFunction<ParameterCallback<T>, T>).callback) {\n return (spec as SignalFunction<ParameterCallback<T>, T>).callback.call(null, parameters);\n }\n return spec as T;\n}\n\nexport function getGrammarOutput(grammar: IGrammarBase | string, parameters: any) {\n return isGrammar(grammar) ? grammar.output() : parameters[grammar];\n}\n\n/**\n * 判断是否是依赖signal\n */\nexport function isSignal(obj: any) {\n return obj && (obj.signal || obj.callback);\n}\n\nexport const isGrammar = (el: any): el is IGrammarBase => {\n return el && !isNil(el.grammarType);\n};\n\nexport const parseField = <T>(field: ((datum: T) => symbol | string) | string | symbol) => {\n if (isFunction(field)) {\n return field as (datum: T) => symbol | string;\n }\n return (datum: T) => datum[field as string | symbol];\n};\n\nexport const parseColor = (color: any): string | null => {\n if (isString(color) && Color.parseColorString(color)) {\n return color;\n }\n return null;\n};\n"]}
|
package/es/types/morph.d.ts
CHANGED
|
@@ -22,8 +22,7 @@ export interface IMorphAnimationConfig {
|
|
|
22
22
|
oneByOne?: MorphFunctionValueType<boolean | number>;
|
|
23
23
|
splitPath?: MorphFunctionValueType<'clone' | Nil>;
|
|
24
24
|
}
|
|
25
|
-
export interface
|
|
25
|
+
export interface IViewDiff {
|
|
26
26
|
diffGrammar: <U extends IGrammarBase>(prevGrammars: U[], nextGrammars: U[]) => DiffResult<U, U>;
|
|
27
27
|
diffMark: (prevMarks: IMark[], nextMarks: IMark[], runningConfig: IRunningConfig) => DiffResult<IMark[], IMark[]>;
|
|
28
|
-
morph: (prevMarks: IMark[], nextMarks: IMark[], runningConfig: IRunningConfig) => void;
|
|
29
28
|
}
|
package/es/types/morph.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/morph.ts"],"names":[],"mappings":"","file":"morph.js","sourcesContent":["import type { EasingType } from '@visactor/vrender-core';\nimport type { DiffResult, Nil } from './base';\nimport type { IElement } from './element';\nimport type { IGrammarBase, IMark } from './grammar';\nimport type { GenericFunctionType } from './signal';\nimport type { IRunningConfig } from './view';\n\nexport type MorphData = { prev: any[]; next: any[] };\nexport type MorphElements = { prev: IElement[]; next: IElement[] };\n\nexport type MorphFunctionCallback<T> = (datum: MorphData, element: MorphElements, parameters: any) => T;\n\nexport type MorphFunctionType<T> = GenericFunctionType<MorphFunctionCallback<T>, T>;\n\nexport type MorphFunctionValueType<T> = MorphFunctionType<T> | T;\n\nexport interface IMorphAnimationConfig {\n easing?: EasingType;\n delay?: MorphFunctionValueType<number>;\n duration?: MorphFunctionValueType<number>;\n oneByOne?: MorphFunctionValueType<boolean | number>;\n splitPath?: MorphFunctionValueType<'clone' | Nil>;\n}\n\nexport interface
|
|
1
|
+
{"version":3,"sources":["../src/types/morph.ts"],"names":[],"mappings":"","file":"morph.js","sourcesContent":["import type { EasingType } from '@visactor/vrender-core';\nimport type { DiffResult, Nil } from './base';\nimport type { IElement } from './element';\nimport type { IGrammarBase, IMark } from './grammar';\nimport type { GenericFunctionType } from './signal';\nimport type { IRunningConfig } from './view';\n\nexport type MorphData = { prev: any[]; next: any[] };\nexport type MorphElements = { prev: IElement[]; next: IElement[] };\n\nexport type MorphFunctionCallback<T> = (datum: MorphData, element: MorphElements, parameters: any) => T;\n\nexport type MorphFunctionType<T> = GenericFunctionType<MorphFunctionCallback<T>, T>;\n\nexport type MorphFunctionValueType<T> = MorphFunctionType<T> | T;\n\nexport interface IMorphAnimationConfig {\n easing?: EasingType;\n delay?: MorphFunctionValueType<number>;\n duration?: MorphFunctionValueType<number>;\n oneByOne?: MorphFunctionValueType<boolean | number>;\n splitPath?: MorphFunctionValueType<'clone' | Nil>;\n}\n\nexport interface IViewDiff {\n diffGrammar: <U extends IGrammarBase>(prevGrammars: U[], nextGrammars: U[]) => DiffResult<U, U>;\n diffMark: (prevMarks: IMark[], nextMarks: IMark[], runningConfig: IRunningConfig) => DiffResult<IMark[], IMark[]>;\n}\n"]}
|
package/es/view/View.d.ts
CHANGED
|
@@ -18,8 +18,7 @@ export default class View extends EventEmitter implements IView {
|
|
|
18
18
|
private _config;
|
|
19
19
|
private _options;
|
|
20
20
|
private _cachedGrammars;
|
|
21
|
-
private
|
|
22
|
-
private _morph;
|
|
21
|
+
private _differ;
|
|
23
22
|
private _eventConfig;
|
|
24
23
|
private _eventListeners;
|
|
25
24
|
private _theme;
|
package/es/view/View.js
CHANGED
|
@@ -28,12 +28,8 @@ import { GroupMark } from "./group";
|
|
|
28
28
|
|
|
29
29
|
import { Mark } from "./mark";
|
|
30
30
|
|
|
31
|
-
import { Morph } from "../graph/animation/morph";
|
|
32
|
-
|
|
33
31
|
import { RecordedGrammars, RecordedTreeGrammars } from "./grammar-record";
|
|
34
32
|
|
|
35
|
-
import { ViewAnimate } from "./animate";
|
|
36
|
-
|
|
37
33
|
import { ComponentEnum, HOOK_EVENT, LayoutState, GrammarMarkType } from "../graph/enums";
|
|
38
34
|
|
|
39
35
|
import { Text } from "../semantic-marks/text";
|
|
@@ -46,6 +42,8 @@ import { Component } from "./component";
|
|
|
46
42
|
|
|
47
43
|
import { isMarkType, removeGraphicItem } from "../graph/util/graphic";
|
|
48
44
|
|
|
45
|
+
import { ViewDiff } from "../graph/view-diff";
|
|
46
|
+
|
|
49
47
|
export default class View extends EventEmitter {
|
|
50
48
|
static useRegisters(comps) {
|
|
51
49
|
comps.forEach((fn => {
|
|
@@ -253,7 +251,7 @@ export default class View extends EventEmitter {
|
|
|
253
251
|
})), this;
|
|
254
252
|
}
|
|
255
253
|
parseSpec(spec) {
|
|
256
|
-
var _a, _b, _c, _d, _e, _f;
|
|
254
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
257
255
|
if (this.emit(HOOK_EVENT.BEFORE_PARSE_VIEW), this._spec = spec, normalizeMarkTree(spec),
|
|
258
256
|
spec.theme ? this.theme(spec.theme) : this.theme(ThemeManager.getDefaultTheme()),
|
|
259
257
|
spec.width && this.width(spec.width), spec.height && this.height(spec.height), this.padding(null !== (_b = null !== (_a = spec.padding) && void 0 !== _a ? _a : this._options.padding) && void 0 !== _b ? _b : this._theme.padding),
|
|
@@ -285,8 +283,9 @@ export default class View extends EventEmitter {
|
|
|
285
283
|
null === (_b = this.event) || void 0 === _b || _b.call(this, eventConfig);
|
|
286
284
|
})), spec.interactions && spec.interactions.length && spec.interactions.forEach((interaction => {
|
|
287
285
|
this.interaction(interaction.type, interaction);
|
|
288
|
-
})), !1 === spec.animation ? this.animate.disable() : this.animate
|
|
289
|
-
this._needBuildLayoutTree = !0, this._layoutState = LayoutState.before,
|
|
286
|
+
})), !1 === spec.animation ? null === (_g = this.animate) || void 0 === _g || _g.disable() : null === (_h = this.animate) || void 0 === _h || _h.enable(),
|
|
287
|
+
this.emit(HOOK_EVENT.AFTER_PARSE_VIEW), this._needBuildLayoutTree = !0, this._layoutState = LayoutState.before,
|
|
288
|
+
this;
|
|
290
289
|
}
|
|
291
290
|
updateSpec(spec) {
|
|
292
291
|
return this.removeAllInteractions(), this.removeAllGrammars(), this.parseSpec(spec);
|
|
@@ -429,11 +428,11 @@ export default class View extends EventEmitter {
|
|
|
429
428
|
return this.evaluate(runningConfig), this;
|
|
430
429
|
}
|
|
431
430
|
doRender(immediately) {
|
|
432
|
-
this.emit(HOOK_EVENT.BEFORE_DO_RENDER), this.renderer && (this._progressiveMarks
|
|
431
|
+
this.emit(HOOK_EVENT.BEFORE_DO_RENDER), this.renderer && (!this._progressiveMarks && this.animate && this.animate.animate(),
|
|
433
432
|
this.renderer.render(immediately), this.handleRenderEnd()), this.emit(HOOK_EVENT.AFTER_DO_RENDER);
|
|
434
433
|
}
|
|
435
434
|
evaluate(runningConfig) {
|
|
436
|
-
var _a,
|
|
435
|
+
var _a, _c;
|
|
437
436
|
const normalizedRunningConfig = normalizeRunningConfig(runningConfig), grammarWillDetach = this._cachedGrammars.size() > 0;
|
|
438
437
|
grammarWillDetach && (this.reuseCachedGrammars(normalizedRunningConfig), this.detachCachedGrammar());
|
|
439
438
|
const hasResize = this._resizeRenderer(), hasUpdate = this._dataflow.hasCommitted();
|
|
@@ -442,28 +441,28 @@ export default class View extends EventEmitter {
|
|
|
442
441
|
this._needBuildLayoutTree = !1), this._layoutState && (this._layoutState = LayoutState.layouting,
|
|
443
442
|
this.doLayout(), this._dataflow.hasCommitted() && (this._layoutState = LayoutState.reevaluate,
|
|
444
443
|
this._dataflow.evaluate()), this._layoutState = LayoutState.after, (null === (_a = this._layoutMarks) || void 0 === _a ? void 0 : _a.length) && this.handleLayoutEnd()),
|
|
445
|
-
this._layoutState = null, this.findProgressiveMarks(), this._resizeRenderer(), null === (
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
this.doRender(!0), this.doPreProgressive(), this) : this;
|
|
444
|
+
this._layoutState = null, this.findProgressiveMarks(), this._resizeRenderer(), null === (_c = this.morph) || void 0 === _c || _c.call(this, normalizedRunningConfig),
|
|
445
|
+
this.releaseCachedGrammars(normalizedRunningConfig), this.doRender(!0), this.doPreProgressive(),
|
|
446
|
+
this) : this;
|
|
449
447
|
}
|
|
450
448
|
reuseCachedGrammars(runningConfig) {
|
|
451
|
-
if (
|
|
449
|
+
if (runningConfig.reuse) {
|
|
452
450
|
const reuseDiffUpdate = diff => {
|
|
453
451
|
diff.next.reuse(diff.prev), diff.prev.detachAll(), diff.prev.clear(), this._cachedGrammars.unrecord(diff.prev);
|
|
454
452
|
};
|
|
455
|
-
this.
|
|
456
|
-
this.
|
|
457
|
-
this.
|
|
458
|
-
this.
|
|
453
|
+
this._differ.diffGrammar(this._cachedGrammars.getAllSignals(), this.grammars.getAllSignals().filter((signal => !BuiltInSignalID.includes(signal.id())))).update.forEach(reuseDiffUpdate);
|
|
454
|
+
this._differ.diffGrammar(this._cachedGrammars.getAllData(), this.grammars.getAllData()).update.forEach(reuseDiffUpdate);
|
|
455
|
+
this._differ.diffGrammar(this._cachedGrammars.getAllScales(), this.grammars.getAllScales()).update.forEach(reuseDiffUpdate);
|
|
456
|
+
this._differ.diffGrammar(this._cachedGrammars.getAllCoordinates(), this.grammars.getAllCoordinates()).update.forEach(reuseDiffUpdate);
|
|
459
457
|
}
|
|
460
|
-
this.
|
|
458
|
+
this._differ.diffMark(this._cachedGrammars.getAllMarks(), this.grammars.getAllMarks().filter((mark => "root" !== mark.id())), runningConfig).update.forEach((diff => {
|
|
459
|
+
var _b;
|
|
461
460
|
const matched = 1 === diff.prev.length && 1 === diff.next.length && diff.prev[0].markType === diff.next[0].markType, enableMarkMorphConfig = diff.prev.every((mark => mark.getMorphConfig().morph)) && diff.next.every((mark => mark.getMorphConfig().morph));
|
|
462
461
|
matched && runningConfig.reuse ? (diff.next[0].reuse(diff.prev[0]), diff.prev[0].detachAll(),
|
|
463
|
-
diff.prev[0].clear(), this._cachedGrammars.unrecord(diff.prev[0])) : (runningConfig.morph && enableMarkMorphConfig || runningConfig.morphAll) && this.
|
|
462
|
+
diff.prev[0].clear(), this._cachedGrammars.unrecord(diff.prev[0])) : (runningConfig.morph && enableMarkMorphConfig || runningConfig.morphAll) && (null === (_b = this.addMorphMarks) || void 0 === _b || _b.call(this, {
|
|
464
463
|
prev: diff.prev,
|
|
465
464
|
next: diff.next
|
|
466
|
-
});
|
|
465
|
+
}));
|
|
467
466
|
}));
|
|
468
467
|
}
|
|
469
468
|
detachCachedGrammar() {
|
|
@@ -481,10 +480,11 @@ export default class View extends EventEmitter {
|
|
|
481
480
|
}));
|
|
482
481
|
const markNodes = this._cachedGrammars.getAllMarkNodes();
|
|
483
482
|
markNodes.forEach((node => {
|
|
484
|
-
|
|
483
|
+
var _a;
|
|
484
|
+
null === (_a = node.mark.animate) || void 0 === _a || _a.stop(), runningConfig.enableExitAnimation && this.animate && this.animate.animateAddition(node.mark);
|
|
485
485
|
}));
|
|
486
486
|
const releaseUp = node => {
|
|
487
|
-
if (node.mark.view && 0 === node.mark.animate.getAnimatorCount() && (!node.children || 0 === node.children.length)) {
|
|
487
|
+
if (node.mark.view && (!node.mark.animate || 0 === node.mark.animate.getAnimatorCount()) && (!node.children || 0 === node.children.length)) {
|
|
488
488
|
node.mark.release();
|
|
489
489
|
const parent = node.parent;
|
|
490
490
|
parent && (node.parent.children = node.parent.children.filter((n => n !== node)),
|
|
@@ -493,8 +493,8 @@ export default class View extends EventEmitter {
|
|
|
493
493
|
};
|
|
494
494
|
markNodes.forEach((node => {
|
|
495
495
|
const mark = node.mark;
|
|
496
|
-
0 === mark.animate.getAnimatorCount() ? releaseUp(node) : mark.addEventListener("animationEnd", (() => {
|
|
497
|
-
0 === mark.animate.getAnimatorCount() && releaseUp(node);
|
|
496
|
+
mark.animate && 0 === mark.animate.getAnimatorCount() ? releaseUp(node) : mark.addEventListener("animationEnd", (() => {
|
|
497
|
+
mark.animate && 0 === mark.animate.getAnimatorCount() && releaseUp(node);
|
|
498
498
|
}));
|
|
499
499
|
})), this._cachedGrammars.clear();
|
|
500
500
|
}
|
|
@@ -617,12 +617,12 @@ export default class View extends EventEmitter {
|
|
|
617
617
|
this.renderer = new CanvasRenderer(this), this.renderer.initialize(width, height, this._options, this._eventConfig).background(this._background);
|
|
618
618
|
}
|
|
619
619
|
initialize() {
|
|
620
|
-
var _a;
|
|
620
|
+
var _a, _c;
|
|
621
621
|
this.grammars = new RecordedGrammars((grammar => grammar.id()), ((key, grammar) => this.logger.warn(`Grammar id '${key}' has been occupied`, grammar))),
|
|
622
622
|
this._cachedGrammars = new RecordedTreeGrammars((grammar => grammar.id())), this._options.logger && Logger.setInstance(this._options.logger),
|
|
623
623
|
this.logger = Logger.getInstance(null !== (_a = this._options.logLevel) && void 0 !== _a ? _a : 0),
|
|
624
|
-
this._dataflow = new Dataflow, this.animate =
|
|
625
|
-
this._options.hooks && (Object.keys(this._options.hooks).forEach((key => {
|
|
624
|
+
this._dataflow = new Dataflow, this.animate = null === (_c = this.initAnimate) || void 0 === _c ? void 0 : _c.call(this, this),
|
|
625
|
+
this._differ = new ViewDiff, this._options.hooks && (Object.keys(this._options.hooks).forEach((key => {
|
|
626
626
|
this.on(key, this._options.hooks[key]);
|
|
627
627
|
})), this.hooks = this._options.hooks), this.container = null, this.renderer = null,
|
|
628
628
|
this._eventListeners = [], this._eventConfig = this.initializeEventConfig(this._options.eventConfig),
|
|
@@ -663,13 +663,14 @@ export default class View extends EventEmitter {
|
|
|
663
663
|
})), this._progressiveMarks = null);
|
|
664
664
|
}
|
|
665
665
|
release() {
|
|
666
|
-
var _a, _b, _c;
|
|
666
|
+
var _a, _b, _c, _d;
|
|
667
667
|
this.removeAllInteractions(), this.releaseStageEvent(), this._unBindResizeEvent(),
|
|
668
668
|
this.clearProgressive(), Factory.unregisterRuntimeTransforms(), Logger.setInstance(null),
|
|
669
|
-
|
|
670
|
-
this.
|
|
669
|
+
null === (_a = this.animate) || void 0 === _a || _a.stop(), this.grammars.release(),
|
|
670
|
+
this._cachedGrammars.release(), this._dataflow.release(), this._dataflow = null,
|
|
671
|
+
null === (_c = null === (_b = this.renderer) || void 0 === _b ? void 0 : _b.release) || void 0 === _c || _c.call(_b),
|
|
671
672
|
this.renderer = null, this._boundInteractions = null, this.removeAllListeners(),
|
|
672
|
-
null === (
|
|
673
|
+
null === (_d = this._eventListeners) || void 0 === _d || _d.forEach((listener => {
|
|
673
674
|
listener.source.removeEventListener(listener.type, listener.handler);
|
|
674
675
|
})), this._eventListeners = null;
|
|
675
676
|
}
|