@next-core/runtime 1.31.1 → 1.32.0
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/dist/cjs/internal/RendererContext.js +92 -123
- package/dist/cjs/internal/RendererContext.js.map +1 -1
- package/dist/cjs/internal/Router.js +70 -110
- package/dist/cjs/internal/Router.js.map +1 -1
- package/dist/cjs/internal/Runtime.js +13 -19
- package/dist/cjs/internal/Runtime.js.map +1 -1
- package/dist/cjs/setWatermark.js +47 -0
- package/dist/cjs/setWatermark.js.map +1 -0
- package/dist/esm/CustomProcessors.js +6 -8
- package/dist/esm/CustomProcessors.js.map +1 -1
- package/dist/esm/CustomTemplates.js +6 -8
- package/dist/esm/CustomTemplates.js.map +1 -1
- package/dist/esm/internal/RendererContext.js +92 -123
- package/dist/esm/internal/RendererContext.js.map +1 -1
- package/dist/esm/internal/Router.js +78 -118
- package/dist/esm/internal/Router.js.map +1 -1
- package/dist/esm/internal/Runtime.js +13 -19
- package/dist/esm/internal/Runtime.js.map +1 -1
- package/dist/esm/setWatermark.js +40 -0
- package/dist/esm/setWatermark.js.map +1 -0
- package/dist/types/setWatermark.d.ts +2 -0
- package/dist/types/tsdoc-metadata.json +1 -1
- package/package.json +13 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomTemplates.js","names":["uniq","isStrictMode","warnAboutStrictMode","getV2RuntimeFromDll","allowedNativeProps","Set","_registry","WeakMap","CustomTemplateRegistry","constructor","_classPrivateFieldInitSpec","writable","value","Map","define","tagName","_constructor$proxy$pr","_constructor$proxy","_compatibleConstructo","_compatibleConstructo2","registered","_classPrivateFieldGet","has","console","warn","concat","customElements","get","strict","proxyProperties","proxy","properties","validProxyProps","legacyTplVariables","key","Object","entries","asVariable","push","mergeProperty","refTransform","error","ref","compatibleConstructor","_objectSpread","fromEntries","state","map","item","expose","tpl","name","set","exposedStates","getExposedStates","proxyMethods","methods","props","entry","nativeProps","filter","prop","HTMLElement","prototype","length","Error","p","join","TplElement","$$typeof","_dev_only_definedProperties","_dev_only_definedMethods","$$getElementByRef","_this$$$tplStateStore","$$tplStateStore","hostBrick","tplHostMetadata","internalBricksByRef","element","connectedCallback","shadowRoot","attachShadow","mode","fragment","document","createDocumentFragment","style","createElement","textContent","slot","appendChild","disconnectedCallback","_loop","propName","some","defineProperty","getValue","_this$$$tplStateStore2","updateValue","enumerable","_loop2","from","to","_to$refProperty","refProperty","_this$$$getElementByR","call","_to$refProperty2","_loop3","_from","_to","_to$refMethod","refMethod","arguments","_state$filter$map","getCustomTemplatesV2","v2Kit","freeze","getRuntime","registerCustomTemplate","customTemplates"],"sources":["../../src/CustomTemplates.ts"],"sourcesContent":["import type {\n ContextConf,\n CustomTemplate,\n CustomTemplateConstructor,\n CustomTemplateProxyBasicProperty,\n} from \"@next-core/types\";\nimport { uniq } from \"lodash\";\nimport type { RuntimeBrickElement } from \"./internal/interfaces.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"./isStrictMode.js\";\nimport { getV2RuntimeFromDll } from \"./getV2RuntimeFromDll.js\";\n\n// Note: `prefix` is a native prop on Element, but it's only used in XML documents.\nconst allowedNativeProps = new Set([\"prefix\"]);\n\ninterface LegacyTplPropProxy extends CustomTemplateProxyBasicProperty {\n asVariable?: boolean;\n mergeProperty?: unknown;\n refTransform?: unknown;\n}\n\nclass CustomTemplateRegistry {\n readonly #registry = new Map<string, CustomTemplate>();\n\n define(tagName: string, constructor: CustomTemplateConstructor): void {\n let registered = this.#registry.has(tagName);\n if (registered) {\n // When open launchpad, the storyboard will be updated.\n // However, we can't *undefine* a custom element.\n // Just ignore re-registering custom templates.\n // eslint-disable-next-line no-console\n console.warn(`Custom template of \"${tagName}\" already registered.`);\n } else {\n registered = !!customElements.get(tagName);\n if (registered) {\n // eslint-disable-next-line no-console\n console.warn(\n `Custom template of \"${tagName}\" already defined by customElements.`\n );\n }\n }\n\n // Transform legacy `proxy.properties[].asVariable` as states.\n const strict = isStrictMode();\n const proxyProperties = (constructor.proxy?.properties ?? {}) as {\n [name: string]: LegacyTplPropProxy;\n };\n const validProxyProps: [string, CustomTemplateProxyBasicProperty][] = [];\n const legacyTplVariables: string[] = [];\n for (const [key, value] of Object.entries(proxyProperties)) {\n if (value.asVariable) {\n warnAboutStrictMode(strict, \"Template `asVariable`\", tagName, key);\n // istanbul ignore next\n if (!strict) {\n // For existed TPL usage, treat it as a STATE.\n legacyTplVariables.push(key);\n }\n } else if (value.mergeProperty || value.refTransform) {\n // eslint-disable-next-line no-console\n console.error(\n \"Template `mergeProperty` and `refTransform` are dropped in v3:\",\n tagName,\n key\n );\n } else if (value.ref) {\n validProxyProps.push([key, value]);\n }\n // Else: documentation only, for exposed states.\n }\n\n const compatibleConstructor = {\n ...constructor,\n proxy: {\n ...constructor.proxy,\n properties: Object.fromEntries(validProxyProps),\n },\n state: (constructor.state\n ? strict\n ? constructor.state\n : constructor.state.map((item) => ({\n // Make `expose` defaults to true in non-strict mode.\n expose: true,\n ...item,\n }))\n : []\n ).concat(legacyTplVariables.map((tpl) => ({ name: tpl, expose: true }))),\n };\n\n // Now we allow re-register custom template\n this.#registry.set(tagName, {\n ...compatibleConstructor,\n name: tagName,\n });\n\n const exposedStates = getExposedStates(compatibleConstructor.state);\n const proxyMethods = Object.entries(\n compatibleConstructor.proxy?.methods ?? {}\n );\n\n const props = exposedStates.concat(\n validProxyProps.map((entry) => entry[0])\n );\n const methods = proxyMethods.map((entry) => entry[0]);\n\n const nativeProps = props\n .concat(methods)\n .filter(\n (prop) => prop in HTMLElement.prototype && !allowedNativeProps.has(prop)\n );\n if (nativeProps.length > 0) {\n warnAboutStrictMode(\n strict,\n \"Using native HTMLElement properties as template properties or methods\",\n tagName,\n ...nativeProps\n );\n // istanbul ignore next\n if (strict) {\n throw new Error(\n `In custom template \"${tagName}\", ${nativeProps\n .map((p) => `\"${p}\"`)\n .join(\n \", \"\n )} are native HTMLElement properties, and should be avoid to be used as brick properties or methods.`\n );\n }\n }\n\n if (registered) {\n return;\n }\n\n class TplElement extends HTMLElement {\n get $$typeof() {\n return \"custom-template\" as const;\n }\n\n static get _dev_only_definedProperties(): string[] {\n return props;\n }\n\n static get _dev_only_definedMethods(): string[] {\n return methods;\n }\n\n $$getElementByRef(this: RuntimeBrickElement, ref: string) {\n return this.$$tplStateStore?.hostBrick?.tplHostMetadata?.internalBricksByRef.get(\n ref\n )?.element;\n }\n\n connectedCallback() {\n let shadowRoot = this.shadowRoot;\n if (!shadowRoot) {\n shadowRoot = this.attachShadow({ mode: \"open\" });\n }\n const fragment = document.createDocumentFragment();\n const style = document.createElement(\"style\");\n style.textContent = \":host{display:block}:host([hidden]){display:none}\";\n const slot = document.createElement(\"slot\");\n fragment.appendChild(style);\n fragment.appendChild(slot);\n shadowRoot.appendChild(fragment);\n }\n\n disconnectedCallback() {\n if (this.shadowRoot) {\n this.shadowRoot.textContent = \"\";\n }\n }\n }\n\n for (const propName of exposedStates) {\n if (validProxyProps.some((entry) => entry[0] === propName)) {\n // eslint-disable-next-line no-console\n console.error(\n `Cannot define an exposed state that is also a proxy property: \"${propName}\" in ${tagName}`\n );\n continue;\n }\n Object.defineProperty(TplElement.prototype, propName, {\n get(this: RuntimeBrickElement) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.$$tplStateStore!.getValue(propName);\n },\n set(this: RuntimeBrickElement, value: unknown) {\n // 在 mount 过程中,先设置属性,再设置 `$$tplStateStore`,这样,当触发属性设置时,\n // 避免初始化的一次 state update 操作及其 onChange 事件。\n this.$$tplStateStore?.updateValue(propName, value, \"replace\");\n },\n enumerable: true,\n });\n }\n\n for (const [from, to] of validProxyProps) {\n Object.defineProperty(TplElement.prototype, from, {\n get(this: TplElement) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const element = this.$$getElementByRef!(to.ref) as unknown as Record<\n string,\n unknown\n >;\n return element[to.refProperty ?? from];\n },\n set(this: TplElement, value: unknown) {\n // 同上 exposedState.set\n const element = this.$$getElementByRef?.(to.ref) as unknown as Record<\n string,\n unknown\n >;\n if (element) {\n element[to.refProperty ?? from] = value;\n }\n },\n enumerable: true,\n });\n }\n\n for (const [from, to] of proxyMethods) {\n Object.defineProperty(TplElement.prototype, from, {\n value(this: TplElement, ...args: unknown[]) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const element = this.$$getElementByRef!(to.ref) as unknown as Record<\n string,\n Function\n >;\n element[to.refMethod ?? from](...args);\n },\n enumerable: true,\n });\n }\n\n customElements.define(tagName, TplElement);\n }\n\n get(tagName: string) {\n return this.#registry.get(tagName);\n }\n}\n\nfunction getExposedStates(state: ContextConf[] | undefined): string[] {\n // Allow duplicated state names which maybe mutually exclusive.\n return uniq(\n state?.filter((item) => item.expose).map((item) => item.name) ?? []\n );\n}\n\n// istanbul ignore next\nfunction getCustomTemplatesV2() {\n const v2Kit = getV2RuntimeFromDll();\n if (v2Kit) {\n return Object.freeze({\n define(tagName: string, constructor: CustomTemplateConstructor) {\n return v2Kit.getRuntime().registerCustomTemplate(tagName, constructor);\n },\n }) as CustomTemplateRegistry;\n }\n}\n\n// istanbul ignore next\nexport const customTemplates =\n getCustomTemplatesV2() || new CustomTemplateRegistry();\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CustomTemplates.js","names":["uniq","isStrictMode","warnAboutStrictMode","getV2RuntimeFromDll","allowedNativeProps","Set","_registry","WeakMap","CustomTemplateRegistry","constructor","_classPrivateFieldInitSpec","Map","define","tagName","_constructor$proxy$pr","_constructor$proxy","_compatibleConstructo","_compatibleConstructo2","registered","_classPrivateFieldGet","has","console","warn","concat","customElements","get","strict","proxyProperties","proxy","properties","validProxyProps","legacyTplVariables","key","value","Object","entries","asVariable","push","mergeProperty","refTransform","error","ref","compatibleConstructor","_objectSpread","fromEntries","state","map","item","expose","tpl","name","set","exposedStates","getExposedStates","proxyMethods","methods","props","entry","nativeProps","filter","prop","HTMLElement","prototype","length","Error","p","join","TplElement","$$typeof","_dev_only_definedProperties","_dev_only_definedMethods","$$getElementByRef","_this$$$tplStateStore","$$tplStateStore","hostBrick","tplHostMetadata","internalBricksByRef","element","connectedCallback","shadowRoot","attachShadow","mode","fragment","document","createDocumentFragment","style","createElement","textContent","slot","appendChild","disconnectedCallback","_loop","propName","some","defineProperty","getValue","_this$$$tplStateStore2","updateValue","enumerable","_loop2","from","to","_to$refProperty","refProperty","_this$$$getElementByR","call","_to$refProperty2","_loop3","_from","_to","_to$refMethod","refMethod","arguments","_state$filter$map","getCustomTemplatesV2","v2Kit","freeze","getRuntime","registerCustomTemplate","customTemplates"],"sources":["../../src/CustomTemplates.ts"],"sourcesContent":["import type {\n ContextConf,\n CustomTemplate,\n CustomTemplateConstructor,\n CustomTemplateProxyBasicProperty,\n} from \"@next-core/types\";\nimport { uniq } from \"lodash\";\nimport type { RuntimeBrickElement } from \"./internal/interfaces.js\";\nimport { isStrictMode, warnAboutStrictMode } from \"./isStrictMode.js\";\nimport { getV2RuntimeFromDll } from \"./getV2RuntimeFromDll.js\";\n\n// Note: `prefix` is a native prop on Element, but it's only used in XML documents.\nconst allowedNativeProps = new Set([\"prefix\"]);\n\ninterface LegacyTplPropProxy extends CustomTemplateProxyBasicProperty {\n asVariable?: boolean;\n mergeProperty?: unknown;\n refTransform?: unknown;\n}\n\nclass CustomTemplateRegistry {\n readonly #registry = new Map<string, CustomTemplate>();\n\n define(tagName: string, constructor: CustomTemplateConstructor): void {\n let registered = this.#registry.has(tagName);\n if (registered) {\n // When open launchpad, the storyboard will be updated.\n // However, we can't *undefine* a custom element.\n // Just ignore re-registering custom templates.\n // eslint-disable-next-line no-console\n console.warn(`Custom template of \"${tagName}\" already registered.`);\n } else {\n registered = !!customElements.get(tagName);\n if (registered) {\n // eslint-disable-next-line no-console\n console.warn(\n `Custom template of \"${tagName}\" already defined by customElements.`\n );\n }\n }\n\n // Transform legacy `proxy.properties[].asVariable` as states.\n const strict = isStrictMode();\n const proxyProperties = (constructor.proxy?.properties ?? {}) as {\n [name: string]: LegacyTplPropProxy;\n };\n const validProxyProps: [string, CustomTemplateProxyBasicProperty][] = [];\n const legacyTplVariables: string[] = [];\n for (const [key, value] of Object.entries(proxyProperties)) {\n if (value.asVariable) {\n warnAboutStrictMode(strict, \"Template `asVariable`\", tagName, key);\n // istanbul ignore next\n if (!strict) {\n // For existed TPL usage, treat it as a STATE.\n legacyTplVariables.push(key);\n }\n } else if (value.mergeProperty || value.refTransform) {\n // eslint-disable-next-line no-console\n console.error(\n \"Template `mergeProperty` and `refTransform` are dropped in v3:\",\n tagName,\n key\n );\n } else if (value.ref) {\n validProxyProps.push([key, value]);\n }\n // Else: documentation only, for exposed states.\n }\n\n const compatibleConstructor = {\n ...constructor,\n proxy: {\n ...constructor.proxy,\n properties: Object.fromEntries(validProxyProps),\n },\n state: (constructor.state\n ? strict\n ? constructor.state\n : constructor.state.map((item) => ({\n // Make `expose` defaults to true in non-strict mode.\n expose: true,\n ...item,\n }))\n : []\n ).concat(legacyTplVariables.map((tpl) => ({ name: tpl, expose: true }))),\n };\n\n // Now we allow re-register custom template\n this.#registry.set(tagName, {\n ...compatibleConstructor,\n name: tagName,\n });\n\n const exposedStates = getExposedStates(compatibleConstructor.state);\n const proxyMethods = Object.entries(\n compatibleConstructor.proxy?.methods ?? {}\n );\n\n const props = exposedStates.concat(\n validProxyProps.map((entry) => entry[0])\n );\n const methods = proxyMethods.map((entry) => entry[0]);\n\n const nativeProps = props\n .concat(methods)\n .filter(\n (prop) => prop in HTMLElement.prototype && !allowedNativeProps.has(prop)\n );\n if (nativeProps.length > 0) {\n warnAboutStrictMode(\n strict,\n \"Using native HTMLElement properties as template properties or methods\",\n tagName,\n ...nativeProps\n );\n // istanbul ignore next\n if (strict) {\n throw new Error(\n `In custom template \"${tagName}\", ${nativeProps\n .map((p) => `\"${p}\"`)\n .join(\n \", \"\n )} are native HTMLElement properties, and should be avoid to be used as brick properties or methods.`\n );\n }\n }\n\n if (registered) {\n return;\n }\n\n class TplElement extends HTMLElement {\n get $$typeof() {\n return \"custom-template\" as const;\n }\n\n static get _dev_only_definedProperties(): string[] {\n return props;\n }\n\n static get _dev_only_definedMethods(): string[] {\n return methods;\n }\n\n $$getElementByRef(this: RuntimeBrickElement, ref: string) {\n return this.$$tplStateStore?.hostBrick?.tplHostMetadata?.internalBricksByRef.get(\n ref\n )?.element;\n }\n\n connectedCallback() {\n let shadowRoot = this.shadowRoot;\n if (!shadowRoot) {\n shadowRoot = this.attachShadow({ mode: \"open\" });\n }\n const fragment = document.createDocumentFragment();\n const style = document.createElement(\"style\");\n style.textContent = \":host{display:block}:host([hidden]){display:none}\";\n const slot = document.createElement(\"slot\");\n fragment.appendChild(style);\n fragment.appendChild(slot);\n shadowRoot.appendChild(fragment);\n }\n\n disconnectedCallback() {\n if (this.shadowRoot) {\n this.shadowRoot.textContent = \"\";\n }\n }\n }\n\n for (const propName of exposedStates) {\n if (validProxyProps.some((entry) => entry[0] === propName)) {\n // eslint-disable-next-line no-console\n console.error(\n `Cannot define an exposed state that is also a proxy property: \"${propName}\" in ${tagName}`\n );\n continue;\n }\n Object.defineProperty(TplElement.prototype, propName, {\n get(this: RuntimeBrickElement) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return this.$$tplStateStore!.getValue(propName);\n },\n set(this: RuntimeBrickElement, value: unknown) {\n // 在 mount 过程中,先设置属性,再设置 `$$tplStateStore`,这样,当触发属性设置时,\n // 避免初始化的一次 state update 操作及其 onChange 事件。\n this.$$tplStateStore?.updateValue(propName, value, \"replace\");\n },\n enumerable: true,\n });\n }\n\n for (const [from, to] of validProxyProps) {\n Object.defineProperty(TplElement.prototype, from, {\n get(this: TplElement) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const element = this.$$getElementByRef!(to.ref) as unknown as Record<\n string,\n unknown\n >;\n return element[to.refProperty ?? from];\n },\n set(this: TplElement, value: unknown) {\n // 同上 exposedState.set\n const element = this.$$getElementByRef?.(to.ref) as unknown as Record<\n string,\n unknown\n >;\n if (element) {\n element[to.refProperty ?? from] = value;\n }\n },\n enumerable: true,\n });\n }\n\n for (const [from, to] of proxyMethods) {\n Object.defineProperty(TplElement.prototype, from, {\n value(this: TplElement, ...args: unknown[]) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const element = this.$$getElementByRef!(to.ref) as unknown as Record<\n string,\n Function\n >;\n element[to.refMethod ?? from](...args);\n },\n enumerable: true,\n });\n }\n\n customElements.define(tagName, TplElement);\n }\n\n get(tagName: string) {\n return this.#registry.get(tagName);\n }\n}\n\nfunction getExposedStates(state: ContextConf[] | undefined): string[] {\n // Allow duplicated state names which maybe mutually exclusive.\n return uniq(\n state?.filter((item) => item.expose).map((item) => item.name) ?? []\n );\n}\n\n// istanbul ignore next\nfunction getCustomTemplatesV2() {\n const v2Kit = getV2RuntimeFromDll();\n if (v2Kit) {\n return Object.freeze({\n define(tagName: string, constructor: CustomTemplateConstructor) {\n return v2Kit.getRuntime().registerCustomTemplate(tagName, constructor);\n },\n }) as CustomTemplateRegistry;\n }\n}\n\n// istanbul ignore next\nexport const customTemplates =\n getCustomTemplatesV2() || new CustomTemplateRegistry();\n"],"mappings":"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"}
|
|
@@ -2,9 +2,9 @@ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
|
2
2
|
import _classPrivateMethodInitSpec from "@babel/runtime/helpers/classPrivateMethodInitSpec";
|
|
3
3
|
import _classPrivateFieldInitSpec from "@babel/runtime/helpers/classPrivateFieldInitSpec";
|
|
4
4
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
|
|
6
|
+
function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
|
|
7
|
+
function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
|
|
8
8
|
import { isEmpty, remove } from "lodash";
|
|
9
9
|
import { listenerFactory } from "./bindListeners.js";
|
|
10
10
|
import { getHistory } from "../history.js";
|
|
@@ -25,18 +25,11 @@ var _memoized = /*#__PURE__*/new WeakMap();
|
|
|
25
25
|
var _allMenuRequests = /*#__PURE__*/new WeakMap();
|
|
26
26
|
var _memoizedMenuRequestMap = /*#__PURE__*/new WeakMap();
|
|
27
27
|
var _locationChangeCallbacks = /*#__PURE__*/new WeakMap();
|
|
28
|
-
var
|
|
29
|
-
var _initializeRerenderBricks = /*#__PURE__*/new WeakSet();
|
|
30
|
-
var _dispatchGeneralLifeCycle = /*#__PURE__*/new WeakSet();
|
|
31
|
-
var _addObserver = /*#__PURE__*/new WeakSet();
|
|
28
|
+
var _RendererContext_brand = /*#__PURE__*/new WeakSet();
|
|
32
29
|
export class RendererContext {
|
|
33
30
|
constructor(scope, options) {
|
|
34
31
|
var _options$unknownBrick;
|
|
35
|
-
_classPrivateMethodInitSpec(this,
|
|
36
|
-
// Note: no `onScrollIntoView` and `onMessage`
|
|
37
|
-
_classPrivateMethodInitSpec(this, _dispatchGeneralLifeCycle);
|
|
38
|
-
_classPrivateMethodInitSpec(this, _initializeRerenderBricks);
|
|
39
|
-
_classPrivateMethodInitSpec(this, _unmountBricks);
|
|
32
|
+
_classPrivateMethodInitSpec(this, _RendererContext_brand);
|
|
40
33
|
/**
|
|
41
34
|
* - page: render as whole page, triggering page life cycles.
|
|
42
35
|
* - fragment: render as fragment, not triggering page life cycles.
|
|
@@ -44,68 +37,41 @@ export class RendererContext {
|
|
|
44
37
|
_defineProperty(this, "scope", void 0);
|
|
45
38
|
_defineProperty(this, "unknownBricks", void 0);
|
|
46
39
|
_defineProperty(this, "renderId", void 0);
|
|
47
|
-
_classPrivateFieldInitSpec(this, _routeHelper,
|
|
48
|
-
writable: true,
|
|
49
|
-
value: void 0
|
|
50
|
-
});
|
|
40
|
+
_classPrivateFieldInitSpec(this, _routeHelper, void 0);
|
|
51
41
|
_classPrivateFieldInitSpec(this, _memoizedLifeCycle, {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
onMessage: [],
|
|
65
|
-
onMessageClose: []
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
_classPrivateFieldInitSpec(this, _observers, {
|
|
69
|
-
writable: true,
|
|
70
|
-
value: new Map()
|
|
71
|
-
});
|
|
72
|
-
_classPrivateFieldInitSpec(this, _mediaListener, {
|
|
73
|
-
writable: true,
|
|
74
|
-
value: void 0
|
|
75
|
-
});
|
|
76
|
-
_classPrivateFieldInitSpec(this, _arbitraryLifeCycle, {
|
|
77
|
-
writable: true,
|
|
78
|
-
value: new Map()
|
|
79
|
-
});
|
|
80
|
-
_classPrivateFieldInitSpec(this, _memoized, {
|
|
81
|
-
writable: true,
|
|
82
|
-
value: void 0
|
|
83
|
-
});
|
|
84
|
-
_classPrivateFieldInitSpec(this, _allMenuRequests, {
|
|
85
|
-
writable: true,
|
|
86
|
-
value: void 0
|
|
87
|
-
});
|
|
88
|
-
_classPrivateFieldInitSpec(this, _memoizedMenuRequestMap, {
|
|
89
|
-
writable: true,
|
|
90
|
-
value: void 0
|
|
91
|
-
});
|
|
92
|
-
_classPrivateFieldInitSpec(this, _locationChangeCallbacks, {
|
|
93
|
-
writable: true,
|
|
94
|
-
value: []
|
|
42
|
+
onBeforePageLoad: [],
|
|
43
|
+
onPageLoad: [],
|
|
44
|
+
onPageLeave: [],
|
|
45
|
+
onBeforePageLeave: [],
|
|
46
|
+
onAnchorLoad: [],
|
|
47
|
+
onAnchorUnload: [],
|
|
48
|
+
onMediaChange: [],
|
|
49
|
+
onScrollIntoView: [],
|
|
50
|
+
onMount: [],
|
|
51
|
+
onUnmount: [],
|
|
52
|
+
onMessage: [],
|
|
53
|
+
onMessageClose: []
|
|
95
54
|
});
|
|
55
|
+
_classPrivateFieldInitSpec(this, _observers, new Map());
|
|
56
|
+
_classPrivateFieldInitSpec(this, _mediaListener, void 0);
|
|
57
|
+
_classPrivateFieldInitSpec(this, _arbitraryLifeCycle, new Map());
|
|
58
|
+
_classPrivateFieldInitSpec(this, _memoized, void 0);
|
|
59
|
+
_classPrivateFieldInitSpec(this, _allMenuRequests, void 0);
|
|
60
|
+
_classPrivateFieldInitSpec(this, _memoizedMenuRequestMap, void 0);
|
|
61
|
+
_classPrivateFieldInitSpec(this, _locationChangeCallbacks, []);
|
|
96
62
|
this.scope = scope;
|
|
97
63
|
this.unknownBricks = (_options$unknownBrick = options === null || options === void 0 ? void 0 : options.unknownBricks) !== null && _options$unknownBrick !== void 0 ? _options$unknownBrick : "throw";
|
|
98
|
-
_classPrivateFieldSet(
|
|
64
|
+
_classPrivateFieldSet(_routeHelper, this, options === null || options === void 0 ? void 0 : options.routeHelper);
|
|
99
65
|
this.renderId = options === null || options === void 0 ? void 0 : options.renderId;
|
|
100
66
|
}
|
|
101
67
|
setInitialMenuRequests(menuRequests) {
|
|
102
|
-
_classPrivateFieldSet(
|
|
68
|
+
_classPrivateFieldSet(_allMenuRequests, this, menuRequests);
|
|
103
69
|
}
|
|
104
70
|
memoizeMenuRequests(route, menuRequests) {
|
|
105
|
-
if (!_classPrivateFieldGet(
|
|
106
|
-
_classPrivateFieldSet(
|
|
71
|
+
if (!_classPrivateFieldGet(_memoizedMenuRequestMap, this)) {
|
|
72
|
+
_classPrivateFieldSet(_memoizedMenuRequestMap, this, new WeakMap());
|
|
107
73
|
}
|
|
108
|
-
_classPrivateFieldGet(
|
|
74
|
+
_classPrivateFieldGet(_memoizedMenuRequestMap, this).set(route, menuRequests[0]);
|
|
109
75
|
}
|
|
110
76
|
reMergeMenuRequests(routes, currentRoute, menuRequests) {
|
|
111
77
|
var _this = this;
|
|
@@ -116,13 +82,13 @@ export class RendererContext {
|
|
|
116
82
|
var _classPrivateFieldGet2;
|
|
117
83
|
// If the sub-routes doesn't match, then `this.memoizeMenuRequests` will
|
|
118
84
|
// not be called, thus `this.#memoizedMenuRequestMap` is not set.
|
|
119
|
-
previousMenuRequest = (_classPrivateFieldGet2 = _classPrivateFieldGet(
|
|
85
|
+
previousMenuRequest = (_classPrivateFieldGet2 = _classPrivateFieldGet(_memoizedMenuRequestMap, _this)) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.get(route);
|
|
120
86
|
if (previousMenuRequest) {
|
|
121
87
|
previousRoute = route;
|
|
122
88
|
break;
|
|
123
89
|
}
|
|
124
90
|
}
|
|
125
|
-
var mergedMenuRequests = _classPrivateFieldGet(
|
|
91
|
+
var mergedMenuRequests = _classPrivateFieldGet(_allMenuRequests, _this);
|
|
126
92
|
var previousIndex = previousMenuRequest ? mergedMenuRequests.indexOf(previousMenuRequest) : -1;
|
|
127
93
|
if (previousIndex === -1) {
|
|
128
94
|
if (!menuRequests.length) {
|
|
@@ -134,24 +100,24 @@ export class RendererContext {
|
|
|
134
100
|
}
|
|
135
101
|
if (previousRoute && previousRoute !== currentRoute) {
|
|
136
102
|
var _classPrivateFieldGet3;
|
|
137
|
-
(_classPrivateFieldGet3 = _classPrivateFieldGet(
|
|
103
|
+
(_classPrivateFieldGet3 = _classPrivateFieldGet(_memoizedMenuRequestMap, _this)) === null || _classPrivateFieldGet3 === void 0 || _classPrivateFieldGet3.delete(previousRoute);
|
|
138
104
|
}
|
|
139
|
-
yield _classPrivateFieldGet(
|
|
105
|
+
yield _classPrivateFieldGet(_routeHelper, _this).mergeMenus(mergedMenuRequests);
|
|
140
106
|
})();
|
|
141
107
|
}
|
|
142
108
|
reBailout(output) {
|
|
143
|
-
return _classPrivateFieldGet(
|
|
109
|
+
return _classPrivateFieldGet(_routeHelper, this).bailout(output);
|
|
144
110
|
}
|
|
145
111
|
reCatch(error, returnNode) {
|
|
146
|
-
return _classPrivateFieldGet(
|
|
112
|
+
return _classPrivateFieldGet(_routeHelper, this).catch(error, returnNode);
|
|
147
113
|
}
|
|
148
114
|
didPerformIncrementalRender(location, prevLocation) {
|
|
149
115
|
var _this2 = this;
|
|
150
116
|
return _asyncToGenerator(function* () {
|
|
151
117
|
// Perform incremental rendering from inside out.
|
|
152
118
|
// This allows nested incremental sub-routes.
|
|
153
|
-
for (var i = _classPrivateFieldGet(
|
|
154
|
-
var callback = _classPrivateFieldGet(
|
|
119
|
+
for (var i = _classPrivateFieldGet(_locationChangeCallbacks, _this2).length - 1; i >= 0; i--) {
|
|
120
|
+
var callback = _classPrivateFieldGet(_locationChangeCallbacks, _this2)[i];
|
|
155
121
|
if (yield callback(location, prevLocation)) {
|
|
156
122
|
return true;
|
|
157
123
|
}
|
|
@@ -165,7 +131,7 @@ export class RendererContext {
|
|
|
165
131
|
* ignore normal rendering.
|
|
166
132
|
*/
|
|
167
133
|
performIncrementalRender(callback) {
|
|
168
|
-
_classPrivateFieldGet(
|
|
134
|
+
_classPrivateFieldGet(_locationChangeCallbacks, this).push(callback);
|
|
169
135
|
}
|
|
170
136
|
registerBrickLifeCycle(brick, lifeCycle) {
|
|
171
137
|
if (!lifeCycle) {
|
|
@@ -175,7 +141,7 @@ export class RendererContext {
|
|
|
175
141
|
for (var key of lifeCycleTypes) {
|
|
176
142
|
var handlers = lifeCycle[key];
|
|
177
143
|
if (handlers) {
|
|
178
|
-
_classPrivateFieldGet(
|
|
144
|
+
_classPrivateFieldGet(_memoizedLifeCycle, this)[key].push({
|
|
179
145
|
brick,
|
|
180
146
|
handlers: handlers
|
|
181
147
|
});
|
|
@@ -188,22 +154,22 @@ export class RendererContext {
|
|
|
188
154
|
}
|
|
189
155
|
}
|
|
190
156
|
registerArbitraryLifeCycle(lifeCycle, fn) {
|
|
191
|
-
var arbitraryCallbacks = _classPrivateFieldGet(
|
|
157
|
+
var arbitraryCallbacks = _classPrivateFieldGet(_arbitraryLifeCycle, this).get(lifeCycle);
|
|
192
158
|
if (arbitraryCallbacks) {
|
|
193
159
|
arbitraryCallbacks.add(fn);
|
|
194
160
|
} else {
|
|
195
|
-
_classPrivateFieldGet(
|
|
161
|
+
_classPrivateFieldGet(_arbitraryLifeCycle, this).set(lifeCycle, new Set([fn]));
|
|
196
162
|
}
|
|
197
163
|
}
|
|
198
164
|
memoize(slotId, keyPath, node, returnNode) {
|
|
199
|
-
if (!_classPrivateFieldGet(
|
|
200
|
-
_classPrivateFieldSet(
|
|
165
|
+
if (!_classPrivateFieldGet(_memoized, this)) {
|
|
166
|
+
_classPrivateFieldSet(_memoized, this, new WeakMap());
|
|
201
167
|
}
|
|
202
168
|
var memKey = [slotId !== null && slotId !== void 0 ? slotId : "", ...keyPath].join(".");
|
|
203
|
-
var mem = _classPrivateFieldGet(
|
|
169
|
+
var mem = _classPrivateFieldGet(_memoized, this).get(returnNode);
|
|
204
170
|
if (!mem) {
|
|
205
171
|
mem = new Map();
|
|
206
|
-
_classPrivateFieldGet(
|
|
172
|
+
_classPrivateFieldGet(_memoized, this).set(returnNode, mem);
|
|
207
173
|
}
|
|
208
174
|
mem.set(memKey, {
|
|
209
175
|
node,
|
|
@@ -215,7 +181,7 @@ export class RendererContext {
|
|
|
215
181
|
reRender(slotId, keyPath, node, returnNode) {
|
|
216
182
|
var memKey = [slotId !== null && slotId !== void 0 ? slotId : "", ...keyPath].join(".");
|
|
217
183
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
218
|
-
var memoized = _classPrivateFieldGet(
|
|
184
|
+
var memoized = _classPrivateFieldGet(_memoized, this).get(returnNode).get(memKey);
|
|
219
185
|
var {
|
|
220
186
|
node: prevNode,
|
|
221
187
|
last: prevLast,
|
|
@@ -281,7 +247,7 @@ export class RendererContext {
|
|
|
281
247
|
|
|
282
248
|
// Unmount previous bricks, including their descendants
|
|
283
249
|
var removeBricks = getBrickRange(prevNode, prevLast);
|
|
284
|
-
|
|
250
|
+
_assertClassBrand(_RendererContext_brand, this, _unmountBricks).call(this, removeBricks);
|
|
285
251
|
mountTree(renderRoot);
|
|
286
252
|
|
|
287
253
|
// Connect back
|
|
@@ -330,76 +296,79 @@ export class RendererContext {
|
|
|
330
296
|
portal.insertBefore(portalFragment, insertPortalBeforeChild);
|
|
331
297
|
}
|
|
332
298
|
var newBricks = getBrickRange(node, last);
|
|
333
|
-
|
|
299
|
+
_assertClassBrand(_RendererContext_brand, this, _initializeRerenderBricks).call(this, newBricks);
|
|
334
300
|
}
|
|
335
301
|
dispose() {
|
|
336
|
-
for (var list of Object.values(_classPrivateFieldGet(
|
|
302
|
+
for (var list of Object.values(_classPrivateFieldGet(_memoizedLifeCycle, this))) {
|
|
337
303
|
list.length = 0;
|
|
338
304
|
}
|
|
339
|
-
for (var _list of _classPrivateFieldGet(
|
|
305
|
+
for (var _list of _classPrivateFieldGet(_observers, this).values()) {
|
|
340
306
|
for (var observer of _list) {
|
|
341
307
|
observer.disconnect();
|
|
342
308
|
}
|
|
343
309
|
_list.length = 0;
|
|
344
310
|
}
|
|
345
|
-
_classPrivateFieldGet(
|
|
346
|
-
if (_classPrivateFieldGet(
|
|
347
|
-
mediaEventTarget.removeEventListener("change", _classPrivateFieldGet(
|
|
348
|
-
_classPrivateFieldSet(
|
|
311
|
+
_classPrivateFieldGet(_observers, this).clear();
|
|
312
|
+
if (_classPrivateFieldGet(_mediaListener, this)) {
|
|
313
|
+
mediaEventTarget.removeEventListener("change", _classPrivateFieldGet(_mediaListener, this));
|
|
314
|
+
_classPrivateFieldSet(_mediaListener, this, undefined);
|
|
349
315
|
}
|
|
350
|
-
_classPrivateFieldSet(
|
|
351
|
-
_classPrivateFieldSet(
|
|
352
|
-
_classPrivateFieldSet(
|
|
353
|
-
_classPrivateFieldGet(
|
|
354
|
-
_classPrivateFieldGet(
|
|
316
|
+
_classPrivateFieldSet(_memoized, this, undefined);
|
|
317
|
+
_classPrivateFieldSet(_allMenuRequests, this, undefined);
|
|
318
|
+
_classPrivateFieldSet(_memoizedMenuRequestMap, this, undefined);
|
|
319
|
+
_classPrivateFieldGet(_arbitraryLifeCycle, this).clear();
|
|
320
|
+
_classPrivateFieldGet(_locationChangeCallbacks, this).length = 0;
|
|
355
321
|
}
|
|
322
|
+
|
|
323
|
+
// Note: no `onScrollIntoView` and `onMessage`
|
|
324
|
+
|
|
356
325
|
dispatchBeforePageLoad() {
|
|
357
|
-
|
|
326
|
+
_assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onBeforePageLoad", new CustomEvent("page.beforeLoad"));
|
|
358
327
|
}
|
|
359
328
|
dispatchPageLoad() {
|
|
360
329
|
var event = new CustomEvent("page.load");
|
|
361
|
-
|
|
330
|
+
_assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onPageLoad", event);
|
|
362
331
|
// Currently only for e2e testing
|
|
363
332
|
window.dispatchEvent(event);
|
|
364
333
|
}
|
|
365
334
|
dispatchBeforePageLeave(detail) {
|
|
366
|
-
|
|
335
|
+
_assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onBeforePageLeave", new CustomEvent("page.beforeLeave", {
|
|
367
336
|
detail
|
|
368
337
|
}));
|
|
369
338
|
}
|
|
370
339
|
dispatchPageLeave() {
|
|
371
|
-
|
|
340
|
+
_assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onPageLeave", new CustomEvent("page.leave"));
|
|
372
341
|
}
|
|
373
342
|
dispatchAnchorLoad() {
|
|
374
343
|
var {
|
|
375
344
|
hash
|
|
376
345
|
} = getHistory().location;
|
|
377
346
|
if (hash && hash !== "#") {
|
|
378
|
-
|
|
347
|
+
_assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onAnchorLoad", new CustomEvent("anchor.load", {
|
|
379
348
|
detail: {
|
|
380
349
|
hash,
|
|
381
350
|
anchor: hash.substring(1)
|
|
382
351
|
}
|
|
383
352
|
}));
|
|
384
353
|
} else {
|
|
385
|
-
|
|
354
|
+
_assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onAnchorUnload", new CustomEvent("anchor.unload"));
|
|
386
355
|
}
|
|
387
356
|
}
|
|
388
357
|
initializeScrollIntoView() {
|
|
389
358
|
for (var {
|
|
390
359
|
brick,
|
|
391
360
|
handlers: conf
|
|
392
|
-
} of _classPrivateFieldGet(
|
|
393
|
-
|
|
361
|
+
} of _classPrivateFieldGet(_memoizedLifeCycle, this).onScrollIntoView) {
|
|
362
|
+
_assertClassBrand(_RendererContext_brand, this, _addObserver).call(this, brick, conf);
|
|
394
363
|
}
|
|
395
364
|
}
|
|
396
365
|
initializeMediaChange() {
|
|
397
|
-
_classPrivateFieldSet(
|
|
398
|
-
|
|
366
|
+
_classPrivateFieldSet(_mediaListener, this, event => {
|
|
367
|
+
_assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onMediaChange", new CustomEvent("media.change", {
|
|
399
368
|
detail: getReadOnlyProxy(event.detail)
|
|
400
369
|
}));
|
|
401
370
|
});
|
|
402
|
-
mediaEventTarget.addEventListener("change", _classPrivateFieldGet(
|
|
371
|
+
mediaEventTarget.addEventListener("change", _classPrivateFieldGet(_mediaListener, this));
|
|
403
372
|
}
|
|
404
373
|
initializeMessageDispatcher() {
|
|
405
374
|
var _hooks$messageDispatc;
|
|
@@ -419,27 +388,27 @@ export class RendererContext {
|
|
|
419
388
|
for (var {
|
|
420
389
|
brick,
|
|
421
390
|
handlers: confList
|
|
422
|
-
} of _classPrivateFieldGet(
|
|
391
|
+
} of _classPrivateFieldGet(_memoizedLifeCycle, this).onMessage) {
|
|
423
392
|
_loop(brick);
|
|
424
393
|
}
|
|
425
394
|
hooks === null || hooks === void 0 || (_hooks$messageDispatc = hooks.messageDispatcher) === null || _hooks$messageDispatc === void 0 || _hooks$messageDispatc.onClose(() => {
|
|
426
|
-
|
|
395
|
+
_assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onMessageClose", new CustomEvent("message.close"));
|
|
427
396
|
});
|
|
428
397
|
}
|
|
429
398
|
dispatchOnMount() {
|
|
430
|
-
|
|
399
|
+
_assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onMount", new CustomEvent("mount"));
|
|
431
400
|
}
|
|
432
401
|
dispatchOnUnmount() {
|
|
433
|
-
|
|
402
|
+
_assertClassBrand(_RendererContext_brand, this, _dispatchGeneralLifeCycle).call(this, "onUnmount", new CustomEvent("unmount"));
|
|
434
403
|
}
|
|
435
404
|
}
|
|
436
|
-
function
|
|
405
|
+
function _unmountBricks(bricks) {
|
|
437
406
|
var lifeCycleTypes = [...commonLifeCycles, ...(this.scope === "page" ? pageOnlyLifeCycles : [])];
|
|
438
407
|
var unmountList = [];
|
|
439
408
|
|
|
440
409
|
// Clear life cycle handlers, record `onUnmount` at the same time
|
|
441
410
|
for (var key of lifeCycleTypes) {
|
|
442
|
-
var removed = remove(_classPrivateFieldGet(
|
|
411
|
+
var removed = remove(_classPrivateFieldGet(_memoizedLifeCycle, this)[key], item => bricks.has(item.brick));
|
|
443
412
|
if (key === "onUnmount") {
|
|
444
413
|
unmountList.push(...removed);
|
|
445
414
|
}
|
|
@@ -448,13 +417,13 @@ function _unmountBricks2(bricks) {
|
|
|
448
417
|
// Clear intersection observers
|
|
449
418
|
for (var brick of bricks) {
|
|
450
419
|
var _brick$element, _brick$element2;
|
|
451
|
-
var observers = _classPrivateFieldGet(
|
|
420
|
+
var observers = _classPrivateFieldGet(_observers, this).get(brick);
|
|
452
421
|
if (observers !== null && observers !== void 0 && observers.length) {
|
|
453
422
|
for (var observer of observers) {
|
|
454
423
|
observer.disconnect();
|
|
455
424
|
}
|
|
456
425
|
observers.length = 0;
|
|
457
|
-
_classPrivateFieldGet(
|
|
426
|
+
_classPrivateFieldGet(_observers, this).delete(brick);
|
|
458
427
|
}
|
|
459
428
|
unbindTemplateProxy(brick);
|
|
460
429
|
(_brick$element = brick.element) === null || _brick$element === void 0 || delete _brick$element.$$tplStateStore;
|
|
@@ -472,12 +441,12 @@ function _unmountBricks2(bricks) {
|
|
|
472
441
|
listenerFactory(handlers, _brick.runtimeContext, _brick)(unmountEvent);
|
|
473
442
|
}
|
|
474
443
|
}
|
|
475
|
-
function
|
|
444
|
+
function _initializeRerenderBricks(bricks) {
|
|
476
445
|
var mountEvent = new CustomEvent("mount");
|
|
477
446
|
for (var {
|
|
478
447
|
brick,
|
|
479
448
|
handlers
|
|
480
|
-
} of _classPrivateFieldGet(
|
|
449
|
+
} of _classPrivateFieldGet(_memoizedLifeCycle, this).onMount) {
|
|
481
450
|
if (bricks.has(brick)) {
|
|
482
451
|
listenerFactory(handlers, brick.runtimeContext, brick)(mountEvent);
|
|
483
452
|
}
|
|
@@ -485,13 +454,13 @@ function _initializeRerenderBricks2(bricks) {
|
|
|
485
454
|
for (var {
|
|
486
455
|
brick: _brick2,
|
|
487
456
|
handlers: conf
|
|
488
|
-
} of _classPrivateFieldGet(
|
|
457
|
+
} of _classPrivateFieldGet(_memoizedLifeCycle, this).onScrollIntoView) {
|
|
489
458
|
if (bricks.has(_brick2)) {
|
|
490
|
-
|
|
459
|
+
_assertClassBrand(_RendererContext_brand, this, _addObserver).call(this, _brick2, conf);
|
|
491
460
|
}
|
|
492
461
|
}
|
|
493
462
|
}
|
|
494
|
-
function
|
|
463
|
+
function _dispatchGeneralLifeCycle(type, event) {
|
|
495
464
|
// istanbul ignore next
|
|
496
465
|
if (process.env.NODE_ENV === "development" && this.scope === "fragment" && pageOnlyLifeCycles.includes(type)) {
|
|
497
466
|
throw new Error("`lifeCycle.".concat(type, "` cannot be used in ").concat(this.scope, ".\nThis is a bug of Brick Next, please report it."));
|
|
@@ -499,17 +468,17 @@ function _dispatchGeneralLifeCycle2(type, event) {
|
|
|
499
468
|
for (var {
|
|
500
469
|
brick,
|
|
501
470
|
handlers
|
|
502
|
-
} of _classPrivateFieldGet(
|
|
471
|
+
} of _classPrivateFieldGet(_memoizedLifeCycle, this)[type]) {
|
|
503
472
|
listenerFactory(handlers, brick.runtimeContext, brick)(event);
|
|
504
473
|
}
|
|
505
|
-
var arbitraryCallbacks = _classPrivateFieldGet(
|
|
474
|
+
var arbitraryCallbacks = _classPrivateFieldGet(_arbitraryLifeCycle, this).get(type);
|
|
506
475
|
if (arbitraryCallbacks) {
|
|
507
476
|
for (var fn of arbitraryCallbacks) {
|
|
508
477
|
fn();
|
|
509
478
|
}
|
|
510
479
|
}
|
|
511
480
|
}
|
|
512
|
-
function
|
|
481
|
+
function _addObserver(brick, conf) {
|
|
513
482
|
var _conf$threshold;
|
|
514
483
|
var threshold = (_conf$threshold = conf.threshold) !== null && _conf$threshold !== void 0 ? _conf$threshold : 0.1;
|
|
515
484
|
var observer = new IntersectionObserver((entries, observer) => {
|
|
@@ -525,10 +494,10 @@ function _addObserver2(brick, conf) {
|
|
|
525
494
|
threshold
|
|
526
495
|
});
|
|
527
496
|
observer.observe(brick.element);
|
|
528
|
-
var list = _classPrivateFieldGet(
|
|
497
|
+
var list = _classPrivateFieldGet(_observers, this).get(brick);
|
|
529
498
|
if (!list) {
|
|
530
499
|
list = [];
|
|
531
|
-
_classPrivateFieldGet(
|
|
500
|
+
_classPrivateFieldGet(_observers, this).set(brick, list);
|
|
532
501
|
}
|
|
533
502
|
list.push(observer);
|
|
534
503
|
}
|