@nocobase/plugin-snapshot-field 0.9.0-alpha.2 → 0.9.1-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.
Files changed (47) hide show
  1. package/README.md +13 -0
  2. package/README.zh-CN.md +13 -0
  3. package/lib/client/SnapshotBlock/SnapshotBlockInitializers/SnapshotBlockInitializers.js +1 -33
  4. package/lib/client/SnapshotRecordPicker.js +14 -30
  5. package/lib/client/components/AppendsTreeSelect.d.ts +12 -0
  6. package/lib/client/components/AppendsTreeSelect.js +191 -0
  7. package/lib/client/components/SnapshotOwnerCollectionFieldsSelect.d.ts +5 -0
  8. package/lib/client/components/SnapshotOwnerCollectionFieldsSelect.js +75 -0
  9. package/lib/client/index.js +9 -4
  10. package/lib/client/interface.d.ts +2 -1
  11. package/lib/client/interface.js +174 -103
  12. package/lib/client/locale/en-US.d.ts +4 -2
  13. package/lib/client/locale/en-US.js +4 -2
  14. package/lib/client/locale/zh-CN.d.ts +6 -2
  15. package/lib/client/locale/zh-CN.js +6 -2
  16. package/lib/server/collections/collectionsHistory.js +2 -0
  17. package/lib/server/collections/fieldsHistory.js +2 -0
  18. package/lib/server/fields/snapshot-field.d.ts +7 -1
  19. package/lib/server/fields/snapshot-field.js +67 -0
  20. package/lib/server/plugin.d.ts +2 -0
  21. package/lib/server/plugin.js +61 -27
  22. package/package.json +4 -4
  23. package/src/__tests__/data/field_linkto.ts +12 -0
  24. package/src/__tests__/data/field_m2m.ts +15 -0
  25. package/src/__tests__/data/field_o2m.ts +14 -0
  26. package/src/__tests__/data/field_o2o.ts +14 -0
  27. package/src/__tests__/data/snap_linkto.ts +12 -0
  28. package/src/__tests__/data/snap_m2m.ts +12 -0
  29. package/src/__tests__/data/snap_o2m.ts +12 -0
  30. package/src/__tests__/data/snap_o2o.ts +13 -0
  31. package/src/__tests__/data/table_a.ts +37 -0
  32. package/src/__tests__/data/table_b.ts +37 -0
  33. package/src/__tests__/data/table_m2m.ts +37 -0
  34. package/src/__tests__/fieldsHistory.test.ts +62 -0
  35. package/src/__tests__/snapshots.test.ts +155 -0
  36. package/src/client/SnapshotBlock/SnapshotBlockInitializers/SnapshotBlockInitializers.tsx +0 -34
  37. package/src/client/SnapshotRecordPicker.tsx +5 -24
  38. package/src/client/components/AppendsTreeSelect.tsx +122 -0
  39. package/src/client/components/SnapshotOwnerCollectionFieldsSelect.tsx +22 -0
  40. package/src/client/index.tsx +6 -3
  41. package/src/client/interface.ts +158 -84
  42. package/src/client/locale/en-US.ts +5 -3
  43. package/src/client/locale/zh-CN.ts +7 -2
  44. package/src/server/collections/collectionsHistory.ts +2 -0
  45. package/src/server/collections/fieldsHistory.ts +2 -0
  46. package/src/server/fields/snapshot-field.ts +47 -1
  47. package/src/server/plugin.ts +15 -1
package/README.md ADDED
@@ -0,0 +1,13 @@
1
+ # snapshot-field
2
+
3
+ English | [中文](./README.zh-CN.md)
4
+
5
+ 关系数据快照插件。
6
+
7
+ ## 安装激活
8
+
9
+ ```bash
10
+ yarn pm enable snapshot-field
11
+ ```
12
+
13
+ ## 使用方法
@@ -0,0 +1,13 @@
1
+ # snapshot-field
2
+
3
+ [English](./README.md) | 中文
4
+
5
+ 关系数据快照插件。
6
+
7
+ ## 安装激活
8
+
9
+ ```bash
10
+ yarn pm enable snapshot-field
11
+ ```
12
+
13
+ ## 使用方法
@@ -61,39 +61,7 @@ const SnapshotBlockInitializers = props => {
61
61
  component: 'MarkdownBlockInitializer'
62
62
  }]
63
63
  }]
64
- }); // const { t } = useSnapshotTranslation();
65
- // return (
66
- // <SchemaInitializer.Button
67
- // wrap={gridRowColWrap}
68
- // title={t('Add block')}
69
- // icon={'PlusOutlined'}
70
- // items={[
71
- // {
72
- // type: 'itemGroup',
73
- // title: '{{ t("Data blocks") }}',
74
- // children: [
75
- // {
76
- // type: 'item',
77
- // title: '{{t("Details")}}',
78
- // component: 'SnapshotBlockInitializersDetailItem',
79
- // actionInitializers: 'CalendarFormActionInitializers',
80
- // },
81
- // ],
82
- // },
83
- // {
84
- // type: 'itemGroup',
85
- // title: '{{t("Other blocks")}}',
86
- // children: [
87
- // {
88
- // type: 'item',
89
- // title: '{{t("Markdown")}}',
90
- // component: 'MarkdownBlockInitializer',
91
- // },
92
- // ],
93
- // },
94
- // ]}
95
- // />
96
- // );
64
+ });
97
65
  };
98
66
 
99
67
  exports.SnapshotBlockInitializers = SnapshotBlockInitializers;
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.SnapshotRecordPicker = void 0;
7
7
 
8
8
  function _react() {
9
- const data = _interopRequireDefault(require("react"));
9
+ const data = require("@formily/react");
10
10
 
11
11
  _react = function _react() {
12
12
  return data;
@@ -15,20 +15,20 @@ function _react() {
15
15
  return data;
16
16
  }
17
17
 
18
- function _react2() {
19
- const data = require("@formily/react");
18
+ function _client() {
19
+ const data = require("@nocobase/client");
20
20
 
21
- _react2 = function _react2() {
21
+ _client = function _client() {
22
22
  return data;
23
23
  };
24
24
 
25
25
  return data;
26
26
  }
27
27
 
28
- function _client() {
29
- const data = require("@nocobase/client");
28
+ function _react2() {
29
+ const data = _interopRequireDefault(require("react"));
30
30
 
31
- _client = function _client() {
31
+ _react2 = function _react2() {
32
32
  return data;
33
33
  };
34
34
 
@@ -51,35 +51,19 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
51
51
 
52
52
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
53
53
 
54
- const useSnapshotFieldTargetCollectionName = () => {
55
- var _historyCollections$f;
56
-
57
- const fieldSchema = (0, _react2().useFieldSchema)();
54
+ const ReadPrettyRecordPickerWrapper = props => {
55
+ const fieldSchema = (0, _react().useFieldSchema)();
58
56
 
59
57
  const _useCollection = (0, _client().useCollection)(),
60
58
  getField = _useCollection.getField;
61
59
 
62
60
  const collectionField = getField(fieldSchema.name);
63
-
64
- const _useCollectionHistory = (0, _client().useCollectionHistory)(),
65
- historyCollections = _useCollectionHistory.historyCollections;
66
-
67
- return (_historyCollections$f = historyCollections.find(i => i.name === collectionField.target)) === null || _historyCollections$f === void 0 ? void 0 : _historyCollections$f.name;
68
- };
69
-
70
- const ReadPrettyRecordPickerWrapper = props => {
71
- const collectionName = useSnapshotFieldTargetCollectionName();
72
- return _react().default.createElement(_SnapshotHistoryCollectionProvider.SnapshotHistoryCollectionProvider, {
73
- collectionName: collectionName
74
- }, _react().default.createElement(_client().ReadPrettyRecordPicker, _objectSpread({}, props)));
61
+ return _react2().default.createElement(_SnapshotHistoryCollectionProvider.SnapshotHistoryCollectionProvider, {
62
+ collectionName: collectionField === null || collectionField === void 0 ? void 0 : collectionField.targetCollection
63
+ }, _react2().default.createElement(_client().ReadPrettyRecordPicker, _objectSpread({}, props)));
75
64
  };
76
65
 
77
- const SnapshotRecordPickerInner = (0, _react2().connect)(props => {
78
- const actionCtx = (0, _client().useActionContext)();
79
- const isUpdateAction = actionCtx.fieldSchema['x-action'] === 'update';
80
- return isUpdateAction ? _react().default.createElement(ReadPrettyRecordPickerWrapper, _objectSpread({}, props)) : _react().default.createElement(_client().InputRecordPicker, _objectSpread({}, props));
81
- }, // mapProps(mapSuffixProps),
82
- (0, _react2().mapReadPretty)(ReadPrettyRecordPickerWrapper));
66
+ const SnapshotRecordPickerInner = (0, _react().connect)(ReadPrettyRecordPickerWrapper, (0, _react().mapReadPretty)(ReadPrettyRecordPickerWrapper));
83
67
 
84
68
  const SnapshotRecordPicker = props => {
85
69
  const value = props.value,
@@ -93,7 +77,7 @@ const SnapshotRecordPicker = props => {
93
77
  })
94
78
  });
95
79
 
96
- return _react().default.createElement(SnapshotRecordPickerInner, _objectSpread({}, newProps));
80
+ return _react2().default.createElement(SnapshotRecordPickerInner, _objectSpread({}, newProps));
97
81
  };
98
82
 
99
83
  exports.SnapshotRecordPicker = SnapshotRecordPicker;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ export declare type TreeCacheMapNode = {
3
+ parent?: TreeCacheMapNode;
4
+ title: string;
5
+ path: string;
6
+ children?: TreeCacheMapNode[];
7
+ };
8
+ export declare type AppendsTreeSelectProps = {
9
+ value: string[];
10
+ onChange: (value: string[]) => void;
11
+ };
12
+ export declare const AppendsTreeSelect: React.FC<AppendsTreeSelectProps>;
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AppendsTreeSelect = void 0;
7
+
8
+ function _react() {
9
+ const data = _interopRequireDefault(require("react"));
10
+
11
+ _react = function _react() {
12
+ return data;
13
+ };
14
+
15
+ return data;
16
+ }
17
+
18
+ function _antd() {
19
+ const data = require("antd");
20
+
21
+ _antd = function _antd() {
22
+ return data;
23
+ };
24
+
25
+ return data;
26
+ }
27
+
28
+ function _react2() {
29
+ const data = require("@formily/react");
30
+
31
+ _react2 = function _react2() {
32
+ return data;
33
+ };
34
+
35
+ return data;
36
+ }
37
+
38
+ function _client() {
39
+ const data = require("@nocobase/client");
40
+
41
+ _client = function _client() {
42
+ return data;
43
+ };
44
+
45
+ return data;
46
+ }
47
+
48
+ var _locale = require("../locale");
49
+
50
+ var _interface = require("../interface");
51
+
52
+ const _excluded = ["value", "onChange"];
53
+
54
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
55
+
56
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
57
+
58
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
59
+
60
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
61
+
62
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
63
+
64
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
65
+
66
+ const AppendsTreeSelect = props => {
67
+ var _getCollectionField;
68
+
69
+ const _props$value = props.value,
70
+ value = _props$value === void 0 ? [] : _props$value,
71
+ onChange = props.onChange,
72
+ restProps = _objectWithoutProperties(props, _excluded);
73
+
74
+ const record = (0, _interface.useTopRecord)();
75
+
76
+ const _useCollectionManager = (0, _client().useCollectionManager)(),
77
+ getCollectionFields = _useCollectionManager.getCollectionFields,
78
+ getCollectionField = _useCollectionManager.getCollectionField;
79
+
80
+ const compile = (0, _client().useCompile)();
81
+ const formValues = (0, _react2().useForm)().values;
82
+
83
+ const _useSnapshotTranslati = (0, _locale.useSnapshotTranslation)(),
84
+ t = _useSnapshotTranslati.t;
85
+
86
+ const fieldsToOptions = (fields = [], fieldPath = []) => {
87
+ const filter = i => !!i.target && !!i.interface && !fieldPath.find(p => p.target === i.target);
88
+
89
+ return fields.filter(filter).map(i => {
90
+ var _compile, _i$uiSchema;
91
+
92
+ return {
93
+ title: (_compile = compile((_i$uiSchema = i.uiSchema) === null || _i$uiSchema === void 0 ? void 0 : _i$uiSchema.title)) !== null && _compile !== void 0 ? _compile : i.name,
94
+ value: fieldPath.map(p => p.name).concat(i.name).join('.'),
95
+ children: fieldsToOptions(getCollectionFields(i.target), [...fieldPath, i])
96
+ };
97
+ });
98
+ };
99
+
100
+ const treeData = fieldsToOptions(getCollectionFields((_getCollectionField = getCollectionField(`${record.name}.${formValues.targetField}`)) === null || _getCollectionField === void 0 ? void 0 : _getCollectionField.target));
101
+ const valueMap = {};
102
+
103
+ function loops(list, parent) {
104
+ return (list || []).map(({
105
+ children,
106
+ value,
107
+ title
108
+ }) => {
109
+ const node = valueMap[value] = {
110
+ parent,
111
+ path: value,
112
+ title
113
+ };
114
+ node.children = loops(children, node);
115
+ return node;
116
+ });
117
+ }
118
+
119
+ loops(treeData);
120
+
121
+ const handleChange = newNodes => {
122
+ const newValue = newNodes.map(i => i.value);
123
+ const valueSet = new Set(newValue);
124
+ const delValue = value.find(i => !newValue.includes(i));
125
+
126
+ if (delValue) {
127
+ const delNode = valueMap[delValue];
128
+
129
+ const delNodeValue = node => {
130
+ var _node$children;
131
+
132
+ valueSet.delete(node.path);
133
+ (_node$children = node.children) === null || _node$children === void 0 ? void 0 : _node$children.forEach(child => delNodeValue(child));
134
+ };
135
+
136
+ delNodeValue(delNode);
137
+ } else {
138
+ newValue.forEach(v => {
139
+ let current = valueMap[v];
140
+
141
+ while (current = current.parent) {
142
+ valueSet.add(current.path);
143
+ }
144
+ });
145
+ }
146
+
147
+ onChange(Array.from(valueSet));
148
+ };
149
+
150
+ const TreeTag = props => {
151
+ var _node;
152
+
153
+ const value = props.value,
154
+ onClose = props.onClose,
155
+ disabled = props.disabled,
156
+ closable = props.closable;
157
+ let node = valueMap[value];
158
+ let text = (_node = node) === null || _node === void 0 ? void 0 : _node.title;
159
+
160
+ while (node = (_node2 = node) === null || _node2 === void 0 ? void 0 : _node2.parent) {
161
+ var _node2;
162
+
163
+ text = `${node.title} / ${text}`;
164
+ }
165
+
166
+ return _react().default.createElement(_antd().Tag, {
167
+ closable: closable && !disabled,
168
+ onClose: onClose
169
+ }, text);
170
+ };
171
+
172
+ const filterdValue = Array.isArray(value) ? value.filter(i => i in valueMap) : value;
173
+ return _react().default.createElement(_antd().TreeSelect, _objectSpread({
174
+ value: filterdValue,
175
+ dropdownStyle: {
176
+ maxHeight: 400,
177
+ overflow: 'auto'
178
+ },
179
+ placeholder: t('Please select'),
180
+ showCheckedStrategy: "SHOW_ALL",
181
+ allowClear: true,
182
+ multiple: true,
183
+ treeCheckStrictly: true,
184
+ treeCheckable: true,
185
+ tagRender: TreeTag,
186
+ onChange: handleChange,
187
+ treeData: treeData
188
+ }, restProps));
189
+ };
190
+
191
+ exports.AppendsTreeSelect = AppendsTreeSelect;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { SelectProps } from 'antd';
3
+ export declare type SnapshotOwnerCollectionFieldsSelectProps = Omit<SelectProps, 'options'>;
4
+ export declare const useSnapshotOwnerCollectionFields: () => any;
5
+ export declare const SnapshotOwnerCollectionFieldsSelect: React.FC<SnapshotOwnerCollectionFieldsSelectProps>;
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useSnapshotOwnerCollectionFields = exports.SnapshotOwnerCollectionFieldsSelect = void 0;
7
+
8
+ function _react() {
9
+ const data = _interopRequireDefault(require("react"));
10
+
11
+ _react = function _react() {
12
+ return data;
13
+ };
14
+
15
+ return data;
16
+ }
17
+
18
+ function _antd() {
19
+ const data = require("antd");
20
+
21
+ _antd = function _antd() {
22
+ return data;
23
+ };
24
+
25
+ return data;
26
+ }
27
+
28
+ var _interface = require("../interface");
29
+
30
+ function _client() {
31
+ const data = require("@nocobase/client");
32
+
33
+ _client = function _client() {
34
+ return data;
35
+ };
36
+
37
+ return data;
38
+ }
39
+
40
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
41
+
42
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
43
+
44
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
45
+
46
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
47
+
48
+ const useSnapshotOwnerCollectionFields = () => {
49
+ const record = (0, _interface.useTopRecord)();
50
+
51
+ const _useCollectionManager = (0, _client().useCollectionManager)(),
52
+ getCollection = _useCollectionManager.getCollection;
53
+
54
+ const collection = getCollection(record.name);
55
+ const compile = (0, _client().useCompile)();
56
+ return collection.fields.filter(i => !!i.target && !!i.interface).map(i => {
57
+ var _i$uiSchema;
58
+
59
+ return _objectSpread(_objectSpread({}, i), {}, {
60
+ label: compile((_i$uiSchema = i.uiSchema) === null || _i$uiSchema === void 0 ? void 0 : _i$uiSchema.title),
61
+ value: i.name
62
+ });
63
+ });
64
+ };
65
+
66
+ exports.useSnapshotOwnerCollectionFields = useSnapshotOwnerCollectionFields;
67
+
68
+ const SnapshotOwnerCollectionFieldsSelect = props => {
69
+ const options = useSnapshotOwnerCollectionFields();
70
+ return _react().default.createElement(_antd().Select, _objectSpread({
71
+ options: options
72
+ }, props));
73
+ };
74
+
75
+ exports.SnapshotOwnerCollectionFieldsSelect = SnapshotOwnerCollectionFieldsSelect;
@@ -35,6 +35,10 @@ var _SnapshotBlockInitializersDetailItem = require("./SnapshotBlock/SnapshotBloc
35
35
 
36
36
  var _SnapshotBlockProvider = require("./SnapshotBlock/SnapshotBlockProvider");
37
37
 
38
+ var _AppendsTreeSelect = require("./components/AppendsTreeSelect");
39
+
40
+ var _SnapshotOwnerCollectionFieldsSelect = require("./components/SnapshotOwnerCollectionFieldsSelect");
41
+
38
42
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
39
43
 
40
44
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -47,13 +51,12 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
47
51
 
48
52
  var _default = _react().default.memo(props => {
49
53
  const initializers = (0, _react().useContext)(_client().SchemaInitializerContext);
50
- const snapshot = (0, _interface.useSnapshotInterface)();
51
54
  (0, _react().useEffect)(() => {
52
- (0, _client().registerField)(snapshot.group, snapshot.name, snapshot);
55
+ (0, _client().registerField)(_interface.snapshot.group, _interface.snapshot.name, _interface.snapshot);
53
56
  }, []);
54
57
  return _react().default.createElement(_client().CollectionManagerProvider, {
55
58
  interfaces: {
56
- snapshot
59
+ snapshot: _interface.snapshot
57
60
  }
58
61
  }, _react().default.createElement(_client().CollectionHistoryProvider, null, _react().default.createElement(_client().SchemaInitializerProvider, {
59
62
  initializers: _objectSpread(_objectSpread({}, initializers), {}, {
@@ -63,7 +66,9 @@ var _default = _react().default.memo(props => {
63
66
  components: {
64
67
  SnapshotRecordPicker: _SnapshotRecordPicker.SnapshotRecordPicker,
65
68
  SnapshotBlockProvider: _SnapshotBlockProvider.SnapshotBlockProvider,
66
- SnapshotBlockInitializersDetailItem: _SnapshotBlockInitializersDetailItem.SnapshotBlockInitializersDetailItem
69
+ SnapshotBlockInitializersDetailItem: _SnapshotBlockInitializersDetailItem.SnapshotBlockInitializersDetailItem,
70
+ AppendsTreeSelect: _AppendsTreeSelect.AppendsTreeSelect,
71
+ SnapshotOwnerCollectionFieldsSelect: _SnapshotOwnerCollectionFieldsSelect.SnapshotOwnerCollectionFieldsSelect
67
72
  }
68
73
  }, props.children))));
69
74
  });
@@ -1,2 +1,3 @@
1
1
  import { IField } from '@nocobase/client';
2
- export declare const useSnapshotInterface: () => IField;
2
+ export declare const useTopRecord: () => any;
3
+ export declare const snapshot: IField;