@next-core/runtime 1.54.8 → 1.54.10
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/CustomTemplates.js +1 -1
- package/dist/cjs/CustomTemplates.js.map +1 -1
- package/dist/cjs/setWatermark.js +7 -1
- package/dist/cjs/setWatermark.js.map +1 -1
- package/dist/esm/CustomTemplates.js +1 -1
- package/dist/esm/CustomTemplates.js.map +1 -1
- package/dist/esm/setWatermark.js +7 -1
- package/dist/esm/setWatermark.js.map +1 -1
- package/package.json +2 -2
|
@@ -163,7 +163,7 @@ class CustomTemplateRegistry {
|
|
|
163
163
|
value(...args) {
|
|
164
164
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
165
165
|
const element = this.$$getElementByRef(to.ref);
|
|
166
|
-
element[to.refMethod ?? from](...args);
|
|
166
|
+
return element[to.refMethod ?? from](...args);
|
|
167
167
|
},
|
|
168
168
|
enumerable: true
|
|
169
169
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomTemplates.js","names":["_lodash","require","_isStrictMode","_getV2RuntimeFromDll","allowedNativeProps","Set","CustomTemplateRegistry","registry","Map","define","tagName","constructor","_constructor$proxy","_compatibleConstructo","registered","has","console","warn","customElements","get","strict","isStrictMode","proxyProperties","proxy","properties","validProxyProps","legacyTplVariables","key","value","Object","entries","asVariable","warnAboutStrictMode","push","mergeProperty","refTransform","error","ref","compatibleConstructor","fromEntries","state","map","item","expose","concat","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","propName","some","defineProperty","getValue","_this$$$tplStateStore2","updateValue","enumerable","from","to","refProperty","_this$$$getElementByR","call","args","refMethod","uniq","getCustomTemplatesV2","v2Kit","getV2RuntimeFromDll","freeze","getRuntime","registerCustomTemplate","customTemplates","exports"],"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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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"CustomTemplates.js","names":["_lodash","require","_isStrictMode","_getV2RuntimeFromDll","allowedNativeProps","Set","CustomTemplateRegistry","registry","Map","define","tagName","constructor","_constructor$proxy","_compatibleConstructo","registered","has","console","warn","customElements","get","strict","isStrictMode","proxyProperties","proxy","properties","validProxyProps","legacyTplVariables","key","value","Object","entries","asVariable","warnAboutStrictMode","push","mergeProperty","refTransform","error","ref","compatibleConstructor","fromEntries","state","map","item","expose","concat","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","propName","some","defineProperty","getValue","_this$$$tplStateStore2","updateValue","enumerable","from","to","refProperty","_this$$$getElementByR","call","args","refMethod","uniq","getCustomTemplatesV2","v2Kit","getV2RuntimeFromDll","freeze","getRuntime","registerCustomTemplate","customTemplates","exports"],"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 return 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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","ignoreList":[]}
|
package/dist/cjs/setWatermark.js
CHANGED
|
@@ -22,8 +22,14 @@ function setWatermark() {
|
|
|
22
22
|
const watermarkConfig = settings.watermarkConfig ?? {
|
|
23
23
|
flags: {}
|
|
24
24
|
};
|
|
25
|
+
const content = [...(typeof watermarkConfig.content === "string" ? [watermarkConfig.content] : watermarkConfig.content ?? []), (_watermarkConfig$flag = watermarkConfig.flags) !== null && _watermarkConfig$flag !== void 0 && _watermarkConfig$flag["show-development"] && isDeveloper ? "Development" : "", (_watermarkConfig$flag2 = watermarkConfig.flags) !== null && _watermarkConfig$flag2 !== void 0 && _watermarkConfig$flag2["show-user"] ? username : ""].filter(Boolean);
|
|
26
|
+
|
|
27
|
+
// Do not call showWatermark if there is no content
|
|
28
|
+
if (content.length === 0) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
25
31
|
const defaultProps = {
|
|
26
|
-
content
|
|
32
|
+
content,
|
|
27
33
|
zIndex: 1001,
|
|
28
34
|
width: 200,
|
|
29
35
|
font: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setWatermark.js","names":["_loader","require","_Runtime","_lodash","brick","WATEMARK_BRICKNAME","exports","setWatermark","_window$APP_ROOT","_window$APP_ROOT2","_hooks$auth","_watermarkConfig$flag","_watermarkConfig$flag2","flags","getRuntime","getFeatureFlags","settings","getMiscSettings","isDeveloper","window","APP_ROOT","match","username","hooks","auth","getAuth","watermarkConfig","
|
|
1
|
+
{"version":3,"file":"setWatermark.js","names":["_loader","require","_Runtime","_lodash","brick","WATEMARK_BRICKNAME","exports","setWatermark","_window$APP_ROOT","_window$APP_ROOT2","_hooks$auth","_watermarkConfig$flag","_watermarkConfig$flag2","flags","getRuntime","getFeatureFlags","settings","getMiscSettings","isDeveloper","window","APP_ROOT","match","username","hooks","auth","getAuth","watermarkConfig","content","filter","Boolean","length","defaultProps","zIndex","width","font","fontSize","gap","omit","resolve","loadBricksImperatively","getBrickPackages","then","document","createElement","error","console"],"sources":["../../src/setWatermark.ts"],"sourcesContent":["import { loadBricksImperatively } from \"@next-core/loader\";\nimport { getBrickPackages, getRuntime, hooks } from \"./internal/Runtime.js\";\nimport { omit } from \"lodash\";\n\ninterface WaterMarkProps {\n container?: HTMLElement;\n content?: string | string[];\n zIndex?: number;\n rotate?: number;\n width?: number;\n height?: number;\n image?: string;\n font?: {\n color?: CanvasFillStrokeStyles[\"fillStyle\"];\n fontSize?: number | string;\n fontWeight?: \"normal\" | \"light\" | \"weight\" | number;\n fontStyle?: \"none\" | \"normal\" | \"italic\" | \"oblique\";\n fontFamily?: string;\n textAlign?: CanvasTextAlign;\n };\n style?: React.CSSProperties;\n gap?: [number, number];\n offset?: [number, number];\n}\n\nlet brick: {\n resolve(options: WaterMarkProps): void;\n};\n\nexport const WATEMARK_BRICKNAME = \"basic.show-watermark\";\n\nexport function setWatermark() {\n const flags = getRuntime().getFeatureFlags();\n const settings = getRuntime().getMiscSettings();\n if (!flags[\"show-watermark\"]) {\n return;\n }\n const isDeveloper =\n window.APP_ROOT?.match(/versions\\/([^/]+)\\//)?.[1] === \"0.0.0\" ||\n window.APP_ROOT?.match(/micro-apps\\/(?:v2|v3)\\/[^/]+\\/([^/]+)/)?.[1] ===\n \"0.0.0\";\n const username =\n (hooks?.auth?.getAuth() as Record<string, any>)?.username ?? \"\";\n const watermarkConfig = (settings.watermarkConfig ?? {\n flags: {},\n }) as WaterMarkProps & {\n flags: {\n \"show-development\"?: boolean;\n \"show-user\"?: boolean;\n };\n };\n\n const content = [\n ...(typeof watermarkConfig.content === \"string\"\n ? [watermarkConfig.content]\n : watermarkConfig.content ?? []),\n watermarkConfig.flags?.[\"show-development\"] && isDeveloper\n ? \"Development\"\n : \"\",\n watermarkConfig.flags?.[\"show-user\"] ? username : \"\",\n ].filter(Boolean);\n\n // Do not call showWatermark if there is no content\n if (content.length === 0) {\n return;\n }\n\n const defaultProps: WaterMarkProps = {\n content,\n zIndex: 1001,\n width: 200,\n font: {\n fontSize: 28,\n },\n gap: [190, 190],\n ...omit(watermarkConfig, [\"content\", \"flags\"]),\n };\n if (brick) {\n brick.resolve(defaultProps);\n } else {\n loadBricksImperatively([WATEMARK_BRICKNAME], getBrickPackages()).then(\n () => {\n brick = document.createElement(WATEMARK_BRICKNAME) as any;\n\n brick.resolve(defaultProps);\n },\n // istanbul ignore next\n (error: unknown) => {\n // eslint-disable-next-line no-console\n console.error(\"Load watermark service failed:\", error);\n }\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -163,7 +163,7 @@ class CustomTemplateRegistry {
|
|
|
163
163
|
value() {
|
|
164
164
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
165
165
|
const element = this.$$getElementByRef(to.ref);
|
|
166
|
-
element[to.refMethod ?? from](...arguments);
|
|
166
|
+
return element[to.refMethod ?? from](...arguments);
|
|
167
167
|
},
|
|
168
168
|
enumerable: true
|
|
169
169
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomTemplates.js","names":["uniq","isStrictMode","warnAboutStrictMode","getV2RuntimeFromDll","allowedNativeProps","Set","_registry","WeakMap","CustomTemplateRegistry","constructor","_classPrivateFieldInitSpec","Map","define","tagName","_constructor$proxy","_compatibleConstructo","registered","_classPrivateFieldGet","has","console","warn","customElements","get","strict","proxyProperties","proxy","properties","validProxyProps","legacyTplVariables","key","value","Object","entries","asVariable","push","mergeProperty","refTransform","error","ref","compatibleConstructor","fromEntries","state","map","item","expose","concat","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","propName","some","defineProperty","getValue","_this$$$tplStateStore2","updateValue","enumerable","from","to","refProperty","_this$$$getElementByR","call","refMethod","arguments","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":";;AAMA,SAASA,IAAI,QAAQ,QAAQ;AAE7B,SAASC,YAAY,EAAEC,mBAAmB,QAAQ,mBAAmB;AACrE,SAASC,mBAAmB,QAAQ,0BAA0B;;AAE9D;AACA,MAAMC,kBAAkB,GAAG,IAAIC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AAAC,IAAAC,SAAA,oBAAAC,OAAA;AAQ/C,MAAMC,sBAAsB,CAAC;EAAAC,YAAA;IAC3BC,0BAAA,OAASJ,SAAS,EAAG,IAAIK,GAAG,CAAyB,CAAC;EAAC;EAEvDC,MAAMA,CAACC,OAAe,EAAEJ,WAAsC,EAAQ;IAAA,IAAAK,kBAAA,EAAAC,qBAAA;IACpE,IAAIC,UAAU,GAAGC,qBAAA,CAAKX,SAAS,EAAd,IAAa,CAAC,CAACY,GAAG,CAACL,OAAO,CAAC;IAC5C,IAAIG,UAAU,EAAE;MACd;MACA;MACA;MACA;MACAG,OAAO,CAACC,IAAI,CAAC,uBAAuBP,OAAO,uBAAuB,CAAC;IACrE,CAAC,MAAM;MACLG,UAAU,GAAG,CAAC,CAACK,cAAc,CAACC,GAAG,CAACT,OAAO,CAAC;MAC1C,IAAIG,UAAU,EAAE;QACd;QACAG,OAAO,CAACC,IAAI,CACV,uBAAuBP,OAAO,sCAChC,CAAC;MACH;IACF;;IAEA;IACA,MAAMU,MAAM,GAAGtB,YAAY,CAAC,CAAC;IAC7B,MAAMuB,eAAe,GAAI,EAAAV,kBAAA,GAAAL,WAAW,CAACgB,KAAK,cAAAX,kBAAA,uBAAjBA,kBAAA,CAAmBY,UAAU,KAAI,CAAC,CAE1D;IACD,MAAMC,eAA6D,GAAG,EAAE;IACxE,MAAMC,kBAA4B,GAAG,EAAE;IACvC,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACR,eAAe,CAAC,EAAE;MAC1D,IAAIM,KAAK,CAACG,UAAU,EAAE;QACpB/B,mBAAmB,CAACqB,MAAM,EAAE,uBAAuB,EAAEV,OAAO,EAAEgB,GAAG,CAAC;QAClE;QACA,IAAI,CAACN,MAAM,EAAE;UACX;UACAK,kBAAkB,CAACM,IAAI,CAACL,GAAG,CAAC;QAC9B;MACF,CAAC,MAAM,IAAIC,KAAK,CAACK,aAAa,IAAIL,KAAK,CAACM,YAAY,EAAE;QACpD;QACAjB,OAAO,CAACkB,KAAK,CACX,gEAAgE,EAChExB,OAAO,EACPgB,GACF,CAAC;MACH,CAAC,MAAM,IAAIC,KAAK,CAACQ,GAAG,EAAE;QACpBX,eAAe,CAACO,IAAI,CAAC,CAACL,GAAG,EAAEC,KAAK,CAAC,CAAC;MACpC;MACA;IACF;IAEA,MAAMS,qBAAqB,GAAG;MAC5B,GAAG9B,WAAW;MACdgB,KAAK,EAAE;QACL,GAAGhB,WAAW,CAACgB,KAAK;QACpBC,UAAU,EAAEK,MAAM,CAACS,WAAW,CAACb,eAAe;MAChD,CAAC;MACDc,KAAK,EAAE,CAAChC,WAAW,CAACgC,KAAK,GACrBlB,MAAM,GACJd,WAAW,CAACgC,KAAK,GACjBhC,WAAW,CAACgC,KAAK,CAACC,GAAG,CAAEC,IAAI,KAAM;QAC/B;QACAC,MAAM,EAAE,IAAI;QACZ,GAAGD;MACL,CAAC,CAAC,CAAC,GACL,EAAE,EACJE,MAAM,CAACjB,kBAAkB,CAACc,GAAG,CAAEI,GAAG,KAAM;QAAEC,IAAI,EAAED,GAAG;QAAEF,MAAM,EAAE;MAAK,CAAC,CAAC,CAAC;IACzE,CAAC;;IAED;IACA3B,qBAAA,CAAKX,SAAS,EAAd,IAAa,CAAC,CAAC0C,GAAG,CAACnC,OAAO,EAAE;MAC1B,GAAG0B,qBAAqB;MACxBQ,IAAI,EAAElC;IACR,CAAC,CAAC;IAEF,MAAMoC,aAAa,GAAGC,gBAAgB,CAACX,qBAAqB,CAACE,KAAK,CAAC;IACnE,MAAMU,YAAY,GAAGpB,MAAM,CAACC,OAAO,CACjC,EAAAjB,qBAAA,GAAAwB,qBAAqB,CAACd,KAAK,cAAAV,qBAAA,uBAA3BA,qBAAA,CAA6BqC,OAAO,KAAI,CAAC,CAC3C,CAAC;IAED,MAAMC,KAAK,GAAGJ,aAAa,CAACJ,MAAM,CAChClB,eAAe,CAACe,GAAG,CAAEY,KAAK,IAAKA,KAAK,CAAC,CAAC,CAAC,CACzC,CAAC;IACD,MAAMF,OAAO,GAAGD,YAAY,CAACT,GAAG,CAAEY,KAAK,IAAKA,KAAK,CAAC,CAAC,CAAC,CAAC;IAErD,MAAMC,WAAW,GAAGF,KAAK,CACtBR,MAAM,CAACO,OAAO,CAAC,CACfI,MAAM,CACJC,IAAI,IAAKA,IAAI,IAAIC,WAAW,CAACC,SAAS,IAAI,CAACvD,kBAAkB,CAACc,GAAG,CAACuC,IAAI,CACzE,CAAC;IACH,IAAIF,WAAW,CAACK,MAAM,GAAG,CAAC,EAAE;MAC1B1D,mBAAmB,CACjBqB,MAAM,EACN,uEAAuE,EACvEV,OAAO,EACP,GAAG0C,WACL,CAAC;MACD;MACA,IAAIhC,MAAM,EAAE;QACV,MAAM,IAAIsC,KAAK,CACb,uBAAuBhD,OAAO,MAAM0C,WAAW,CAC5Cb,GAAG,CAAEoB,CAAC,IAAK,IAAIA,CAAC,GAAG,CAAC,CACpBC,IAAI,CACH,IACF,CAAC,oGACL,CAAC;MACH;IACF;IAEA,IAAI/C,UAAU,EAAE;MACd;IACF;IAEA,MAAMgD,UAAU,SAASN,WAAW,CAAC;MACnC,IAAIO,QAAQA,CAAA,EAAG;QACb,OAAO,iBAAiB;MAC1B;MAEA,WAAWC,2BAA2BA,CAAA,EAAa;QACjD,OAAOb,KAAK;MACd;MAEA,WAAWc,wBAAwBA,CAAA,EAAa;QAC9C,OAAOf,OAAO;MAChB;MAEAgB,iBAAiBA,CAA4B9B,GAAW,EAAE;QAAA,IAAA+B,qBAAA;QACxD,QAAAA,qBAAA,GAAO,IAAI,CAACC,eAAe,cAAAD,qBAAA,gBAAAA,qBAAA,GAApBA,qBAAA,CAAsBE,SAAS,cAAAF,qBAAA,gBAAAA,qBAAA,GAA/BA,qBAAA,CAAiCG,eAAe,cAAAH,qBAAA,gBAAAA,qBAAA,GAAhDA,qBAAA,CAAkDI,mBAAmB,CAACnD,GAAG,CAC9EgB,GACF,CAAC,cAAA+B,qBAAA,uBAFMA,qBAAA,CAEJK,OAAO;MACZ;MAEAC,iBAAiBA,CAAA,EAAG;QAClB,IAAIC,UAAU,GAAG,IAAI,CAACA,UAAU;QAChC,IAAI,CAACA,UAAU,EAAE;UACfA,UAAU,GAAG,IAAI,CAACC,YAAY,CAAC;YAAEC,IAAI,EAAE;UAAO,CAAC,CAAC;QAClD;QACA,MAAMC,QAAQ,GAAGC,QAAQ,CAACC,sBAAsB,CAAC,CAAC;QAClD,MAAMC,KAAK,GAAGF,QAAQ,CAACG,aAAa,CAAC,OAAO,CAAC;QAC7CD,KAAK,CAACE,WAAW,GAAG,mDAAmD;QACvE,MAAMC,IAAI,GAAGL,QAAQ,CAACG,aAAa,CAAC,MAAM,CAAC;QAC3CJ,QAAQ,CAACO,WAAW,CAACJ,KAAK,CAAC;QAC3BH,QAAQ,CAACO,WAAW,CAACD,IAAI,CAAC;QAC1BT,UAAU,CAACU,WAAW,CAACP,QAAQ,CAAC;MAClC;MAEAQ,oBAAoBA,CAAA,EAAG;QACrB,IAAI,IAAI,CAACX,UAAU,EAAE;UACnB,IAAI,CAACA,UAAU,CAACQ,WAAW,GAAG,EAAE;QAClC;MACF;IACF;IAEA,KAAK,MAAMI,QAAQ,IAAIvC,aAAa,EAAE;MACpC,IAAItB,eAAe,CAAC8D,IAAI,CAAEnC,KAAK,IAAKA,KAAK,CAAC,CAAC,CAAC,KAAKkC,QAAQ,CAAC,EAAE;QAC1D;QACArE,OAAO,CAACkB,KAAK,CACX,kEAAkEmD,QAAQ,QAAQ3E,OAAO,EAC3F,CAAC;QACD;MACF;MACAkB,MAAM,CAAC2D,cAAc,CAAC1B,UAAU,CAACL,SAAS,EAAE6B,QAAQ,EAAE;QACpDlE,GAAGA,CAAA,EAA4B;UAC7B;UACA,OAAO,IAAI,CAACgD,eAAe,CAAEqB,QAAQ,CAACH,QAAQ,CAAC;QACjD,CAAC;QACDxC,GAAGA,CAA4BlB,KAAc,EAAE;UAAA,IAAA8D,sBAAA;UAC7C;UACA;UACA,CAAAA,sBAAA,OAAI,CAACtB,eAAe,cAAAsB,sBAAA,eAApBA,sBAAA,CAAsBC,WAAW,CAACL,QAAQ,EAAE1D,KAAK,EAAE,SAAS,CAAC;QAC/D,CAAC;QACDgE,UAAU,EAAE;MACd,CAAC,CAAC;IACJ;IAEA,KAAK,MAAM,CAACC,IAAI,EAAEC,EAAE,CAAC,IAAIrE,eAAe,EAAE;MACxCI,MAAM,CAAC2D,cAAc,CAAC1B,UAAU,CAACL,SAAS,EAAEoC,IAAI,EAAE;QAChDzE,GAAGA,CAAA,EAAmB;UACpB;UACA,MAAMoD,OAAO,GAAG,IAAI,CAACN,iBAAiB,CAAE4B,EAAE,CAAC1D,GAAG,CAG7C;UACD,OAAOoC,OAAO,CAACsB,EAAE,CAACC,WAAW,IAAIF,IAAI,CAAC;QACxC,CAAC;QACD/C,GAAGA,CAAmBlB,KAAc,EAAE;UAAA,IAAAoE,qBAAA;UACpC;UACA,MAAMxB,OAAO,IAAAwB,qBAAA,GAAG,IAAI,CAAC9B,iBAAiB,cAAA8B,qBAAA,uBAAtBA,qBAAA,CAAAC,IAAA,KAAI,EAAqBH,EAAE,CAAC1D,GAAG,CAG9C;UACD,IAAIoC,OAAO,EAAE;YACXA,OAAO,CAACsB,EAAE,CAACC,WAAW,IAAIF,IAAI,CAAC,GAAGjE,KAAK;UACzC;QACF,CAAC;QACDgE,UAAU,EAAE;MACd,CAAC,CAAC;IACJ;IAEA,KAAK,MAAM,CAACC,IAAI,EAAEC,EAAE,CAAC,IAAI7C,YAAY,EAAE;MACrCpB,MAAM,CAAC2D,cAAc,CAAC1B,UAAU,CAACL,SAAS,EAAEoC,IAAI,EAAE;QAChDjE,KAAKA,CAAA,EAAuC;UAC1C;UACA,MAAM4C,OAAO,GAAG,IAAI,CAACN,iBAAiB,CAAE4B,EAAE,CAAC1D,GAAG,CAG7C;UACDoC,OAAO,CAACsB,EAAE,CAACI,SAAS,IAAIL,IAAI,CAAC,CAAC,GAAAM,SAAO,CAAC;QACxC,CAAC;QACDP,UAAU,EAAE;MACd,CAAC,CAAC;IACJ;IAEAzE,cAAc,CAACT,MAAM,CAACC,OAAO,EAAEmD,UAAU,CAAC;EAC5C;EAEA1C,GAAGA,CAACT,OAAe,EAAE;IACnB,OAAOI,qBAAA,CAAKX,SAAS,EAAd,IAAa,CAAC,CAACgB,GAAG,CAACT,OAAO,CAAC;EACpC;AACF;AAEA,SAASqC,gBAAgBA,CAACT,KAAgC,EAAY;EACpE;EACA,OAAOzC,IAAI,CACT,CAAAyC,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEe,MAAM,CAAEb,IAAI,IAAKA,IAAI,CAACC,MAAM,CAAC,CAACF,GAAG,CAAEC,IAAI,IAAKA,IAAI,CAACI,IAAI,CAAC,KAAI,EACnE,CAAC;AACH;;AAEA;AACA,SAASuD,oBAAoBA,CAAA,EAAG;EAC9B,MAAMC,KAAK,GAAGpG,mBAAmB,CAAC,CAAC;EACnC,IAAIoG,KAAK,EAAE;IACT,OAAOxE,MAAM,CAACyE,MAAM,CAAC;MACnB5F,MAAMA,CAACC,OAAe,EAAEJ,WAAsC,EAAE;QAC9D,OAAO8F,KAAK,CAACE,UAAU,CAAC,CAAC,CAACC,sBAAsB,CAAC7F,OAAO,EAAEJ,WAAW,CAAC;MACxE;IACF,CAAC,CAAC;EACJ;AACF;;AAEA;AACA,OAAO,MAAMkG,eAAe,GAC1BL,oBAAoB,CAAC,CAAC,IAAI,IAAI9F,sBAAsB,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"CustomTemplates.js","names":["uniq","isStrictMode","warnAboutStrictMode","getV2RuntimeFromDll","allowedNativeProps","Set","_registry","WeakMap","CustomTemplateRegistry","constructor","_classPrivateFieldInitSpec","Map","define","tagName","_constructor$proxy","_compatibleConstructo","registered","_classPrivateFieldGet","has","console","warn","customElements","get","strict","proxyProperties","proxy","properties","validProxyProps","legacyTplVariables","key","value","Object","entries","asVariable","push","mergeProperty","refTransform","error","ref","compatibleConstructor","fromEntries","state","map","item","expose","concat","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","propName","some","defineProperty","getValue","_this$$$tplStateStore2","updateValue","enumerable","from","to","refProperty","_this$$$getElementByR","call","refMethod","arguments","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 return 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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","ignoreList":[]}
|
package/dist/esm/setWatermark.js
CHANGED
|
@@ -15,8 +15,14 @@ export function setWatermark() {
|
|
|
15
15
|
const watermarkConfig = settings.watermarkConfig ?? {
|
|
16
16
|
flags: {}
|
|
17
17
|
};
|
|
18
|
+
const content = [...(typeof watermarkConfig.content === "string" ? [watermarkConfig.content] : watermarkConfig.content ?? []), (_watermarkConfig$flag = watermarkConfig.flags) !== null && _watermarkConfig$flag !== void 0 && _watermarkConfig$flag["show-development"] && isDeveloper ? "Development" : "", (_watermarkConfig$flag2 = watermarkConfig.flags) !== null && _watermarkConfig$flag2 !== void 0 && _watermarkConfig$flag2["show-user"] ? username : ""].filter(Boolean);
|
|
19
|
+
|
|
20
|
+
// Do not call showWatermark if there is no content
|
|
21
|
+
if (content.length === 0) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
18
24
|
const defaultProps = {
|
|
19
|
-
content
|
|
25
|
+
content,
|
|
20
26
|
zIndex: 1001,
|
|
21
27
|
width: 200,
|
|
22
28
|
font: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setWatermark.js","names":["loadBricksImperatively","getBrickPackages","getRuntime","hooks","omit","brick","WATEMARK_BRICKNAME","setWatermark","_window$APP_ROOT","_window$APP_ROOT2","_hooks$auth","_watermarkConfig$flag","_watermarkConfig$flag2","flags","getFeatureFlags","settings","getMiscSettings","isDeveloper","window","APP_ROOT","match","username","auth","getAuth","watermarkConfig","
|
|
1
|
+
{"version":3,"file":"setWatermark.js","names":["loadBricksImperatively","getBrickPackages","getRuntime","hooks","omit","brick","WATEMARK_BRICKNAME","setWatermark","_window$APP_ROOT","_window$APP_ROOT2","_hooks$auth","_watermarkConfig$flag","_watermarkConfig$flag2","flags","getFeatureFlags","settings","getMiscSettings","isDeveloper","window","APP_ROOT","match","username","auth","getAuth","watermarkConfig","content","filter","Boolean","length","defaultProps","zIndex","width","font","fontSize","gap","resolve","then","document","createElement","error","console"],"sources":["../../src/setWatermark.ts"],"sourcesContent":["import { loadBricksImperatively } from \"@next-core/loader\";\nimport { getBrickPackages, getRuntime, hooks } from \"./internal/Runtime.js\";\nimport { omit } from \"lodash\";\n\ninterface WaterMarkProps {\n container?: HTMLElement;\n content?: string | string[];\n zIndex?: number;\n rotate?: number;\n width?: number;\n height?: number;\n image?: string;\n font?: {\n color?: CanvasFillStrokeStyles[\"fillStyle\"];\n fontSize?: number | string;\n fontWeight?: \"normal\" | \"light\" | \"weight\" | number;\n fontStyle?: \"none\" | \"normal\" | \"italic\" | \"oblique\";\n fontFamily?: string;\n textAlign?: CanvasTextAlign;\n };\n style?: React.CSSProperties;\n gap?: [number, number];\n offset?: [number, number];\n}\n\nlet brick: {\n resolve(options: WaterMarkProps): void;\n};\n\nexport const WATEMARK_BRICKNAME = \"basic.show-watermark\";\n\nexport function setWatermark() {\n const flags = getRuntime().getFeatureFlags();\n const settings = getRuntime().getMiscSettings();\n if (!flags[\"show-watermark\"]) {\n return;\n }\n const isDeveloper =\n window.APP_ROOT?.match(/versions\\/([^/]+)\\//)?.[1] === \"0.0.0\" ||\n window.APP_ROOT?.match(/micro-apps\\/(?:v2|v3)\\/[^/]+\\/([^/]+)/)?.[1] ===\n \"0.0.0\";\n const username =\n (hooks?.auth?.getAuth() as Record<string, any>)?.username ?? \"\";\n const watermarkConfig = (settings.watermarkConfig ?? {\n flags: {},\n }) as WaterMarkProps & {\n flags: {\n \"show-development\"?: boolean;\n \"show-user\"?: boolean;\n };\n };\n\n const content = [\n ...(typeof watermarkConfig.content === \"string\"\n ? [watermarkConfig.content]\n : watermarkConfig.content ?? []),\n watermarkConfig.flags?.[\"show-development\"] && isDeveloper\n ? \"Development\"\n : \"\",\n watermarkConfig.flags?.[\"show-user\"] ? username : \"\",\n ].filter(Boolean);\n\n // Do not call showWatermark if there is no content\n if (content.length === 0) {\n return;\n }\n\n const defaultProps: WaterMarkProps = {\n content,\n zIndex: 1001,\n width: 200,\n font: {\n fontSize: 28,\n },\n gap: [190, 190],\n ...omit(watermarkConfig, [\"content\", \"flags\"]),\n };\n if (brick) {\n brick.resolve(defaultProps);\n } else {\n loadBricksImperatively([WATEMARK_BRICKNAME], getBrickPackages()).then(\n () => {\n brick = document.createElement(WATEMARK_BRICKNAME) as any;\n\n brick.resolve(defaultProps);\n },\n // istanbul ignore next\n (error: unknown) => {\n // eslint-disable-next-line no-console\n console.error(\"Load watermark service failed:\", error);\n }\n );\n }\n}\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,mBAAmB;AAC1D,SAASC,gBAAgB,EAAEC,UAAU,EAAEC,KAAK,QAAQ,uBAAuB;AAC3E,SAASC,IAAI,QAAQ,QAAQ;AAuB7B,IAAIC,KAEH;AAED,OAAO,MAAMC,kBAAkB,GAAG,sBAAsB;AAExD,OAAO,SAASC,YAAYA,CAAA,EAAG;EAAA,IAAAC,gBAAA,EAAAC,iBAAA,EAAAC,WAAA,EAAAC,qBAAA,EAAAC,sBAAA;EAC7B,MAAMC,KAAK,GAAGX,UAAU,CAAC,CAAC,CAACY,eAAe,CAAC,CAAC;EAC5C,MAAMC,QAAQ,GAAGb,UAAU,CAAC,CAAC,CAACc,eAAe,CAAC,CAAC;EAC/C,IAAI,CAACH,KAAK,CAAC,gBAAgB,CAAC,EAAE;IAC5B;EACF;EACA,MAAMI,WAAW,GACf,EAAAT,gBAAA,GAAAU,MAAM,CAACC,QAAQ,cAAAX,gBAAA,gBAAAA,gBAAA,GAAfA,gBAAA,CAAiBY,KAAK,CAAC,qBAAqB,CAAC,cAAAZ,gBAAA,uBAA7CA,gBAAA,CAAgD,CAAC,CAAC,MAAK,OAAO,IAC9D,EAAAC,iBAAA,GAAAS,MAAM,CAACC,QAAQ,cAAAV,iBAAA,gBAAAA,iBAAA,GAAfA,iBAAA,CAAiBW,KAAK,CAAC,uCAAuC,CAAC,cAAAX,iBAAA,uBAA/DA,iBAAA,CAAkE,CAAC,CAAC,MAClE,OAAO;EACX,MAAMY,QAAQ,GACZ,CAAClB,KAAK,aAALA,KAAK,gBAAAO,WAAA,GAALP,KAAK,CAAEmB,IAAI,cAAAZ,WAAA,gBAAAA,WAAA,GAAXA,WAAA,CAAaa,OAAO,CAAC,CAAC,cAAAb,WAAA,uBAAvBA,WAAA,CAAiDW,QAAQ,KAAI,EAAE;EACjE,MAAMG,eAAe,GAAIT,QAAQ,CAACS,eAAe,IAAI;IACnDX,KAAK,EAAE,CAAC;EACV,CAKC;EAED,MAAMY,OAAO,GAAG,CACd,IAAI,OAAOD,eAAe,CAACC,OAAO,KAAK,QAAQ,GAC3C,CAACD,eAAe,CAACC,OAAO,CAAC,GACzBD,eAAe,CAACC,OAAO,IAAI,EAAE,CAAC,EAClC,CAAAd,qBAAA,GAAAa,eAAe,CAACX,KAAK,cAAAF,qBAAA,eAArBA,qBAAA,CAAwB,kBAAkB,CAAC,IAAIM,WAAW,GACtD,aAAa,GACb,EAAE,EACN,CAAAL,sBAAA,GAAAY,eAAe,CAACX,KAAK,cAAAD,sBAAA,eAArBA,sBAAA,CAAwB,WAAW,CAAC,GAAGS,QAAQ,GAAG,EAAE,CACrD,CAACK,MAAM,CAACC,OAAO,CAAC;;EAEjB;EACA,IAAIF,OAAO,CAACG,MAAM,KAAK,CAAC,EAAE;IACxB;EACF;EAEA,MAAMC,YAA4B,GAAG;IACnCJ,OAAO;IACPK,MAAM,EAAE,IAAI;IACZC,KAAK,EAAE,GAAG;IACVC,IAAI,EAAE;MACJC,QAAQ,EAAE;IACZ,CAAC;IACDC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IACf,GAAG9B,IAAI,CAACoB,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;EAC/C,CAAC;EACD,IAAInB,KAAK,EAAE;IACTA,KAAK,CAAC8B,OAAO,CAACN,YAAY,CAAC;EAC7B,CAAC,MAAM;IACL7B,sBAAsB,CAAC,CAACM,kBAAkB,CAAC,EAAEL,gBAAgB,CAAC,CAAC,CAAC,CAACmC,IAAI,CACnE,MAAM;MACJ/B,KAAK,GAAGgC,QAAQ,CAACC,aAAa,CAAChC,kBAAkB,CAAQ;MAEzDD,KAAK,CAAC8B,OAAO,CAACN,YAAY,CAAC;IAC7B,CAAC;IACD;IACCU,KAAc,IAAK;MAClB;MACAC,OAAO,CAACD,KAAK,CAAC,gCAAgC,EAAEA,KAAK,CAAC;IACxD,CACF,CAAC;EACH;AACF","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-core/runtime",
|
|
3
|
-
"version": "1.54.
|
|
3
|
+
"version": "1.54.10",
|
|
4
4
|
"homepage": "https://github.com/easyops-cn/next-core/tree/v3/packages/runtime",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"repository": {
|
|
@@ -67,5 +67,5 @@
|
|
|
67
67
|
"@next-core/build-next-libs": "^1.0.18",
|
|
68
68
|
"@next-core/test-next": "^1.1.5"
|
|
69
69
|
},
|
|
70
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "2c7aeefaca5cb1e98dacd20553e0e50cde4865b4"
|
|
71
71
|
}
|