MCPcopy Index your code
hub / github.com/alibaba/lowcode-engine / setAssets

Method setAssets

packages/editor-core/src/editor.ts:129–209  ·  view source on GitHub ↗
(assets: IPublicTypeAssetsJson)

Source from the content-addressed store, hash-verified

127 }
128
129 async setAssets(assets: IPublicTypeAssetsJson) {
130 const { components } = assets;
131 if (components && components.length) {
132 const componentDescriptions: IPublicTypeComponentDescription[] = [];
133 const remoteComponentDescriptions: IPublicTypeRemoteComponentDescription[] = [];
134 components.forEach((component: any) => {
135 if (!component) {
136 return;
137 }
138 if (component.exportName && component.url) {
139 remoteComponentDescriptions.push(component);
140 } else {
141 componentDescriptions.push(component);
142 }
143 });
144 assets.components = componentDescriptions;
145 assets.componentList = assets.componentList || [];
146
147 // 如果有远程组件描述协议,则自动加载并补充到资产包中,同时出发 designer.incrementalAssetsReady 通知组件面板更新数据
148 if (remoteComponentDescriptions && remoteComponentDescriptions.length) {
149 await Promise.all(
150 remoteComponentDescriptions.map(async (component: IPublicTypeRemoteComponentDescription) => {
151 const { exportName, url, npm } = component;
152 if (!url || !exportName) {
153 return;
154 }
155 if (!AssetsCache[exportName] || !npm?.version || AssetsCache[exportName].npm?.version !== npm?.version) {
156 await (new AssetLoader()).load(url);
157 }
158 AssetsCache[exportName] = component;
159 function setAssetsComponent(component: any, extraNpmInfo: any = {}) {
160 const components = component.components;
161 assets.componentList = assets.componentList?.concat(component.componentList || []);
162 if (Array.isArray(components)) {
163 components.forEach(d => {
164 assets.components = assets.components.concat({
165 npm: {
166 ...npm,
167 ...extraNpmInfo,
168 },
169 ...d,
170 } || []);
171 });
172 return;
173 }
174 if (component.components) {
175 assets.components = assets.components.concat({
176 npm: {
177 ...npm,
178 ...extraNpmInfo,
179 },
180 ...component.components,
181 } || []);
182 }
183 }
184 function setArrayAssets(value: any[], preExportName: string = '', preSubName: string = '') {
185 value.forEach((d: any, i: number) => {
186 const exportName = [preExportName, i.toString()].filter(d => !!d).join('.');

Callers 1

setMethod · 0.95

Calls 7

notifyGotMethod · 0.95
assetsTransformFunction · 0.90
pushMethod · 0.80
forEachMethod · 0.65
mapMethod · 0.65
loadMethod · 0.65
setMethod · 0.65

Tested by

no test coverage detected