MCPcopy
hub / github.com/alibaba/lowcode-engine / setAsSlot

Method setAsSlot

packages/designer/src/document/node/props/prop.ts:431–466  ·  view source on GitHub ↗
(data: IPublicTypeJSSlot)

Source from the content-addressed store, hash-verified

429
430 @action
431 setAsSlot(data: IPublicTypeJSSlot) {
432 this._type = 'slot';
433 let slotSchema: IPublicTypeSlotSchema;
434 // 当 data.value 的结构为 { componentName: 'Slot' } 时,复用部分 slotSchema 数据
435 if ((isPlainObject(data.value) && isNodeSchema(data.value) && data.value?.componentName === 'Slot')) {
436 const value = data.value as IPublicTypeSlotSchema;
437 slotSchema = {
438 componentName: 'Slot',
439 title: value.title || value.props?.slotTitle,
440 id: value.id,
441 name: value.name || value.props?.slotName,
442 params: value.params || value.props?.slotParams,
443 children: value.children,
444 } as IPublicTypeSlotSchema;
445 } else {
446 slotSchema = {
447 componentName: 'Slot',
448 title: data.title,
449 id: data.id,
450 name: data.name,
451 params: data.params,
452 children: data.value,
453 };
454 }
455
456 if (this._slotNode) {
457 this._slotNode.import(slotSchema);
458 } else {
459 const { owner } = this.props;
460 this._slotNode = owner.document?.createNode<ISlotNode>(slotSchema);
461 if (this._slotNode) {
462 owner.addSlot(this._slotNode);
463 this._slotNode.internalSetSlotFor(this);
464 }
465 }
466 }
467
468 /**
469 * 取消设置值

Callers 1

setValueMethod · 0.95

Calls 6

importMethod · 0.65
createNodeMethod · 0.65
addSlotMethod · 0.65
internalSetSlotForMethod · 0.65
isPlainObjectFunction · 0.50
isNodeSchemaFunction · 0.50

Tested by

no test coverage detected