(models: unknown, opt: AddComponentOptions = {})
| 320 | add(models: ComponentAddType[], opt?: AddComponentOptions): Component[]; |
| 321 | add(models: ComponentAdd, opt?: AddComponentOptions): Component | Component[]; |
| 322 | add(models: unknown, opt: AddComponentOptions = {}): unknown { |
| 323 | if (models == undefined) return; |
| 324 | |
| 325 | opt.keepIds = [...(opt.keepIds || []), ...getComponentIds(opt.previousModels)]; |
| 326 | |
| 327 | if (isString(models)) { |
| 328 | models = this.parseString(models, opt)!; |
| 329 | } else if (isArray(models)) { |
| 330 | // Avoid "Cannot assign to read only property '0' of object '[object Array]' |
| 331 | models = [...models]; |
| 332 | (models as any).forEach((item: string, index: number) => { |
| 333 | if (isString(item)) { |
| 334 | const nodes = this.parseString(item, opt); |
| 335 | (models as any)[index] = isArray(nodes) && !nodes.length ? null : nodes; |
| 336 | } |
| 337 | }); |
| 338 | } |
| 339 | |
| 340 | const processedModels = (isArray(models) ? models : [models]) |
| 341 | .filter(Boolean) |
| 342 | .map((model: any) => this.processDef(model)); |
| 343 | |
| 344 | models = isArray(models) ? flatten(processedModels as any, 1) : processedModels[0]; |
| 345 | |
| 346 | return super.add(models as any, opt); |
| 347 | } |
| 348 | |
| 349 | /** |
| 350 | * Process component definition. |
no test coverage detected