@flowgram.ai/document 0.2.1 → 0.2.3

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/esm/index.js CHANGED
@@ -176,13 +176,37 @@ var DEFAULT_FLOW_NODE_META = (nodeType, document) => {
176
176
  };
177
177
  var FlowNodeRegistry;
178
178
  ((FlowNodeRegistry4) => {
179
+ function mergeChildRegistries(r1 = [], r2 = []) {
180
+ if (r1.length === 0 || r2.length === 0) {
181
+ return [...r1, ...r2];
182
+ }
183
+ const r1Filter = r1.map((r1Current) => {
184
+ const r2Current = r2.find((n) => n.type === r1Current.type);
185
+ if (r2Current) {
186
+ return merge(r1Current, r2Current, r1Current.type);
187
+ }
188
+ return r1Current;
189
+ });
190
+ const r2Filter = r2.filter((n) => !r1.some((r) => r.type === n.type));
191
+ return [...r1Filter, ...r2Filter];
192
+ }
193
+ FlowNodeRegistry4.mergeChildRegistries = mergeChildRegistries;
179
194
  function merge(registry1, registry2, finalType) {
195
+ const extendKeys = registry1.__extends__ ? registry1.__extends__.slice() : [];
196
+ if (registry1.type !== registry2.type) {
197
+ extendKeys.unshift(registry1.type);
198
+ }
180
199
  return {
181
200
  ...registry1,
182
201
  ...registry2,
202
+ extendChildRegistries: mergeChildRegistries(
203
+ registry1.extendChildRegistries,
204
+ registry2.extendChildRegistries
205
+ ),
183
206
  meta: { ...registry1.meta, ...registry2.meta },
184
207
  extend: void 0,
185
- type: finalType
208
+ type: finalType,
209
+ __extends__: extendKeys
186
210
  };
187
211
  }
188
212
  FlowNodeRegistry4.merge = merge;
@@ -1768,7 +1792,7 @@ var FlowDocument = class {
1768
1792
  * @param data
1769
1793
  * @param addedNodes
1770
1794
  */
1771
- addNode(data, addedNodes, ignoreCreateAndUpdateEvent) {
1795
+ addNode(data, addedNodes, ignoreCreateAndUpdateEvent, ignoreBlocks) {
1772
1796
  const { id, type = "block", originParent, parent, meta, hidden, index } = data;
1773
1797
  let node = this.getNode(id);
1774
1798
  let isNew = false;
@@ -1810,7 +1834,7 @@ var FlowDocument = class {
1810
1834
  if (extendNodes && addedNodes) {
1811
1835
  addedNodes.push(...extendNodes);
1812
1836
  }
1813
- } else if (data.blocks && data.blocks.length > 0) {
1837
+ } else if (data.blocks && data.blocks.length > 0 && !ignoreBlocks) {
1814
1838
  if (!data.blocks[0].type) {
1815
1839
  this.addInlineBlocks(node, data.blocks, addedNodes);
1816
1840
  } else {
@@ -1936,10 +1960,22 @@ var FlowDocument = class {
1936
1960
  meta: {
1937
1961
  ...preRegistry?.meta,
1938
1962
  ...newRegistry?.meta
1939
- }
1963
+ },
1964
+ extendChildRegistries: FlowNodeRegistry.mergeChildRegistries(
1965
+ preRegistry?.extendChildRegistries,
1966
+ newRegistry?.extendChildRegistries
1967
+ )
1940
1968
  });
1941
1969
  });
1942
1970
  }
1971
+ /**
1972
+ * Check node extend
1973
+ * @param currentType
1974
+ * @param parentType
1975
+ */
1976
+ isExtend(currentType, parentType) {
1977
+ return (this.getNodeRegistry(currentType).__extends__ || []).includes(parentType);
1978
+ }
1943
1979
  /**
1944
1980
  * 导出数据,可以重载
1945
1981
  */