@tmagic/editor 1.3.0-alpha.1 → 1.3.0-alpha.2

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.
@@ -459,7 +459,7 @@
459
459
  {
460
460
  validator: ({ value, callback }, { model, parent }) => {
461
461
  const index = parent.findIndex((item) => item.name === value);
462
- if (model.index === -1 && index > -1 || model.index > -1 && index !== model.index) {
462
+ if (model.index === -1 && index > -1 || model.index > -1 && index > -1 && index !== model.index) {
463
463
  return callback(`属性key(${value})已存在`);
464
464
  }
465
465
  callback();
@@ -7098,6 +7098,7 @@
7098
7098
  });
7099
7099
  });
7100
7100
  });
7101
+ this.emit("collected", nodes, deep);
7101
7102
  }
7102
7103
  /**
7103
7104
  * 清除依赖
@@ -7126,6 +7127,7 @@
7126
7127
  const fullKey = prop ? `${prop}.${key}` : key;
7127
7128
  if (target.isTarget(key, value)) {
7128
7129
  target.updateDep(node, fullKey);
7130
+ this.emit("update-dep", node, fullKey);
7129
7131
  } else if (!keyIsItems && Array.isArray(value)) {
7130
7132
  value.forEach((item, index) => {
7131
7133
  collectTarget(item, `${fullKey}.${index}`);
@@ -7400,6 +7402,42 @@
7400
7402
  });
7401
7403
  };
7402
7404
  const initServiceEvents = (props, emit, { editorService, codeBlockService, dataSourceService, depService }) => {
7405
+ const getApp = () => {
7406
+ const stage = editorService.get("stage");
7407
+ return stage?.renderer.runtime?.getApp?.();
7408
+ };
7409
+ const updateDataSoucreSchema = () => {
7410
+ const root = editorService.get("root");
7411
+ if (root?.dataSources) {
7412
+ getApp()?.dataSourceManager?.updateSchema(root.dataSources);
7413
+ }
7414
+ };
7415
+ const upateNodeWhenDataSourceChange = (nodes) => {
7416
+ const root = editorService.get("root");
7417
+ const stage = editorService.get("stage");
7418
+ if (!root || !stage)
7419
+ return;
7420
+ const app = getApp();
7421
+ if (!app)
7422
+ return;
7423
+ if (app.dsl) {
7424
+ app.dsl.dataSourceDeps = root.dataSourceDeps;
7425
+ app.dsl.dataSources = root.dataSources;
7426
+ }
7427
+ updateDataSoucreSchema();
7428
+ nodes.forEach((node) => {
7429
+ const deps = Object.values(root.dataSourceDeps || {});
7430
+ deps.forEach((dep) => {
7431
+ if (dep[node.id]) {
7432
+ stage.update({
7433
+ config: lodashEs.cloneDeep(node),
7434
+ parentId: editorService.getParentById(node.id)?.id,
7435
+ root: lodashEs.cloneDeep(root)
7436
+ });
7437
+ }
7438
+ });
7439
+ });
7440
+ };
7403
7441
  const targetAddHandler = (target) => {
7404
7442
  if (target.type !== "data-source")
7405
7443
  return;
@@ -7417,8 +7455,16 @@
7417
7455
  return;
7418
7456
  delete root.dataSourceDeps[id];
7419
7457
  };
7458
+ const depUpdateHandler = (node) => {
7459
+ upateNodeWhenDataSourceChange([node]);
7460
+ };
7461
+ const collectedHandler = (nodes) => {
7462
+ upateNodeWhenDataSourceChange(nodes);
7463
+ };
7420
7464
  depService.on("add-target", targetAddHandler);
7421
7465
  depService.on("remove-target", targetRemoveHandler);
7466
+ depService.on("dep-update", depUpdateHandler);
7467
+ depService.on("collected", collectedHandler);
7422
7468
  const rootChangeHandler = async (value, preValue) => {
7423
7469
  const nodeId = editorService.get("node")?.id || props.defaultSelected;
7424
7470
  let node;
@@ -7486,14 +7532,20 @@
7486
7532
  codeBlockService.on("remove", codeBlockRemoveHandler);
7487
7533
  const dataSourceAddHandler = (config) => {
7488
7534
  depService.addTarget(createDataSourceTarget(config.id, config));
7535
+ getApp()?.dataSourceManager?.addDataSource(config);
7489
7536
  };
7490
7537
  const dataSourceUpdateHandler = (config) => {
7491
7538
  if (config.title) {
7492
7539
  depService.getTarget(config.id).name = config.title;
7493
7540
  }
7541
+ const root = editorService.get("root");
7542
+ const targets = depService.getTargets("data-source");
7543
+ const nodes = utils.getNodes(Object.keys(targets[config.id].deps), root?.items);
7544
+ upateNodeWhenDataSourceChange(nodes);
7494
7545
  };
7495
7546
  const dataSourceRemoveHandler = (id) => {
7496
7547
  depService.removeTarget(id);
7548
+ getApp()?.dataSourceManager?.removeDataSource(id);
7497
7549
  };
7498
7550
  dataSourceService.on("add", dataSourceAddHandler);
7499
7551
  dataSourceService.on("update", dataSourceUpdateHandler);
@@ -7501,6 +7553,8 @@
7501
7553
  vue.onUnmounted(() => {
7502
7554
  depService.off("add-target", targetAddHandler);
7503
7555
  depService.off("remove-target", targetRemoveHandler);
7556
+ depService.off("dep-update", depUpdateHandler);
7557
+ depService.off("collected", collectedHandler);
7504
7558
  editorService.off("history-change", historyChangeHandler);
7505
7559
  editorService.off("root-change", rootChangeHandler);
7506
7560
  editorService.off("add", nodeAddHandler);