@atlaskit/editor-synced-block-provider 2.9.0 → 2.9.1
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/CHANGELOG.md +9 -0
- package/dist/cjs/hooks/useFetchSyncBlockData.js +3 -2
- package/dist/cjs/providers/syncBlockProvider.js +74 -7
- package/dist/cjs/store-manager/referenceSyncBlockStoreManager.js +26 -0
- package/dist/cjs/store-manager/syncBlockStoreManager.js +5 -0
- package/dist/es2019/hooks/useFetchSyncBlockData.js +3 -2
- package/dist/es2019/providers/syncBlockProvider.js +70 -5
- package/dist/es2019/store-manager/referenceSyncBlockStoreManager.js +25 -0
- package/dist/es2019/store-manager/syncBlockStoreManager.js +3 -0
- package/dist/esm/hooks/useFetchSyncBlockData.js +3 -2
- package/dist/esm/providers/syncBlockProvider.js +74 -7
- package/dist/esm/store-manager/referenceSyncBlockStoreManager.js +26 -0
- package/dist/esm/store-manager/syncBlockStoreManager.js +5 -0
- package/dist/types/hooks/useFetchSyncBlockData.d.ts +2 -0
- package/dist/types/providers/syncBlockProvider.d.ts +59 -3
- package/dist/types/providers/types.d.ts +15 -0
- package/dist/types/store-manager/referenceSyncBlockStoreManager.d.ts +3 -0
- package/dist/types/store-manager/syncBlockStoreManager.d.ts +2 -0
- package/dist/types-ts4.5/hooks/useFetchSyncBlockData.d.ts +2 -0
- package/dist/types-ts4.5/providers/syncBlockProvider.d.ts +59 -3
- package/dist/types-ts4.5/providers/types.d.ts +15 -0
- package/dist/types-ts4.5/store-manager/referenceSyncBlockStoreManager.d.ts +3 -0
- package/dist/types-ts4.5/store-manager/syncBlockStoreManager.d.ts +2 -0
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# @atlaskit/editor-synced-block-provider
|
|
2
2
|
|
|
3
|
+
## 2.9.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`e3aafa008fcf4`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/e3aafa008fcf4) -
|
|
8
|
+
EDITOR-2771 Pass parent Editor/Renderer data providers through SyncBlockDataProvider to the nested
|
|
9
|
+
renderer
|
|
10
|
+
- Updated dependencies
|
|
11
|
+
|
|
3
12
|
## 2.9.0
|
|
4
13
|
|
|
5
14
|
### Minor Changes
|
|
@@ -72,8 +72,9 @@ var useFetchSyncBlockData = exports.useFetchSyncBlockData = function useFetchSyn
|
|
|
72
72
|
};
|
|
73
73
|
}, [localId, referenceSyncBlockStoreManager, resourceId]);
|
|
74
74
|
return {
|
|
75
|
-
syncBlockInstance: syncBlockInstance,
|
|
76
75
|
isLoading: isLoading,
|
|
77
|
-
|
|
76
|
+
providerFactory: referenceSyncBlockStoreManager.getProviderFactory(resourceId || ''),
|
|
77
|
+
reloadData: reloadData,
|
|
78
|
+
syncBlockInstance: syncBlockInstance
|
|
78
79
|
};
|
|
79
80
|
};
|
|
@@ -22,7 +22,15 @@ var _sourceInfo = require("../utils/sourceInfo");
|
|
|
22
22
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
23
23
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
24
24
|
var SyncBlockProvider = exports.SyncBlockProvider = /*#__PURE__*/function (_SyncBlockDataProvide) {
|
|
25
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Constructor for the SyncBlockProvider
|
|
27
|
+
*
|
|
28
|
+
* @param fetchProvider
|
|
29
|
+
* @param writeProvider
|
|
30
|
+
* @param sourceId
|
|
31
|
+
* @param nestedRendererDataProviders
|
|
32
|
+
*/
|
|
33
|
+
function SyncBlockProvider(fetchProvider, writeProvider, sourceId, providerOptions) {
|
|
26
34
|
var _this;
|
|
27
35
|
(0, _classCallCheck2.default)(this, SyncBlockProvider);
|
|
28
36
|
_this = _callSuper(this, SyncBlockProvider);
|
|
@@ -30,19 +38,44 @@ var SyncBlockProvider = exports.SyncBlockProvider = /*#__PURE__*/function (_Sync
|
|
|
30
38
|
_this.fetchProvider = fetchProvider;
|
|
31
39
|
_this.writeProvider = writeProvider;
|
|
32
40
|
_this.sourceId = sourceId;
|
|
41
|
+
_this.providerOptions = providerOptions;
|
|
33
42
|
return _this;
|
|
34
43
|
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Check if the node is supported by the provider
|
|
47
|
+
*
|
|
48
|
+
* @param node
|
|
49
|
+
*
|
|
50
|
+
* @returns True if the node is supported, false otherwise
|
|
51
|
+
*/
|
|
35
52
|
(0, _inherits2.default)(SyncBlockProvider, _SyncBlockDataProvide);
|
|
36
53
|
return (0, _createClass2.default)(SyncBlockProvider, [{
|
|
37
54
|
key: "isNodeSupported",
|
|
38
55
|
value: function isNodeSupported(node) {
|
|
39
|
-
return node.type === 'syncBlock';
|
|
56
|
+
return node.type === 'syncBlock' || node.type === 'bodiedSyncBlock';
|
|
40
57
|
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Get the data key for the node
|
|
61
|
+
*
|
|
62
|
+
* @param node
|
|
63
|
+
*
|
|
64
|
+
* @returns The data key
|
|
65
|
+
*/
|
|
41
66
|
}, {
|
|
42
67
|
key: "nodeDataKey",
|
|
43
68
|
value: function nodeDataKey(node) {
|
|
44
69
|
return node.attrs.localId;
|
|
45
70
|
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Fetch the data from the fetch provider
|
|
74
|
+
*
|
|
75
|
+
* @param nodes
|
|
76
|
+
*
|
|
77
|
+
* @returns Array of {resourceId?: string, error?: string}.
|
|
78
|
+
*/
|
|
46
79
|
}, {
|
|
47
80
|
key: "fetchNodesData",
|
|
48
81
|
value: function fetchNodesData(nodes) {
|
|
@@ -70,6 +103,7 @@ var SyncBlockProvider = exports.SyncBlockProvider = /*#__PURE__*/function (_Sync
|
|
|
70
103
|
}
|
|
71
104
|
|
|
72
105
|
/**
|
|
106
|
+
* Write the data to the write provider
|
|
73
107
|
*
|
|
74
108
|
* @param nodes
|
|
75
109
|
* @param data
|
|
@@ -114,10 +148,18 @@ var SyncBlockProvider = exports.SyncBlockProvider = /*#__PURE__*/function (_Sync
|
|
|
114
148
|
return _writeNodesData.apply(this, arguments);
|
|
115
149
|
}
|
|
116
150
|
return writeNodesData;
|
|
117
|
-
}()
|
|
151
|
+
}()
|
|
152
|
+
/**
|
|
153
|
+
* Delete the data from the write provider
|
|
154
|
+
*
|
|
155
|
+
* @param resourceIds
|
|
156
|
+
*
|
|
157
|
+
* @returns Array of {resourceId?: string, error?: string}.
|
|
158
|
+
*/
|
|
159
|
+
)
|
|
118
160
|
}, {
|
|
119
161
|
key: "deleteNodesData",
|
|
120
|
-
value: function () {
|
|
162
|
+
value: (function () {
|
|
121
163
|
var _deleteNodesData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(resourceIds) {
|
|
122
164
|
var _this4 = this;
|
|
123
165
|
var results;
|
|
@@ -152,11 +194,25 @@ var SyncBlockProvider = exports.SyncBlockProvider = /*#__PURE__*/function (_Sync
|
|
|
152
194
|
}
|
|
153
195
|
return deleteNodesData;
|
|
154
196
|
}()
|
|
197
|
+
/**
|
|
198
|
+
* Get the source id
|
|
199
|
+
*
|
|
200
|
+
* @returns The source id
|
|
201
|
+
*/
|
|
202
|
+
)
|
|
155
203
|
}, {
|
|
156
204
|
key: "getSourceId",
|
|
157
205
|
value: function getSourceId() {
|
|
158
206
|
return this.sourceId;
|
|
159
207
|
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Retrieve the source info from the source id
|
|
211
|
+
*
|
|
212
|
+
* @param node
|
|
213
|
+
*
|
|
214
|
+
* @returns The source info
|
|
215
|
+
*/
|
|
160
216
|
}, {
|
|
161
217
|
key: "retrieveSyncBlockSourceInfo",
|
|
162
218
|
value: function retrieveSyncBlockSourceInfo(node) {
|
|
@@ -182,10 +238,21 @@ var SyncBlockProvider = exports.SyncBlockProvider = /*#__PURE__*/function (_Sync
|
|
|
182
238
|
value: function generateResourceId(sourceId, localId) {
|
|
183
239
|
return this.writeProvider.generateResourceId(sourceId, localId);
|
|
184
240
|
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Get the synced block renderer provider options
|
|
244
|
+
*
|
|
245
|
+
* @returns The synced block renderer provider options
|
|
246
|
+
*/
|
|
247
|
+
}, {
|
|
248
|
+
key: "getSyncedBlockRendererProviderOptions",
|
|
249
|
+
value: function getSyncedBlockRendererProviderOptions() {
|
|
250
|
+
return this.providerOptions;
|
|
251
|
+
}
|
|
185
252
|
}]);
|
|
186
253
|
}(_types2.SyncBlockDataProvider);
|
|
187
|
-
var useMemoizedSyncedBlockProvider = exports.useMemoizedSyncedBlockProvider = function useMemoizedSyncedBlockProvider(fetchProvider, writeProvider, sourceId) {
|
|
254
|
+
var useMemoizedSyncedBlockProvider = exports.useMemoizedSyncedBlockProvider = function useMemoizedSyncedBlockProvider(fetchProvider, writeProvider, sourceId, providerOptions) {
|
|
188
255
|
return (0, _react.useMemo)(function () {
|
|
189
|
-
return new SyncBlockProvider(fetchProvider, writeProvider, sourceId);
|
|
190
|
-
}, [fetchProvider, writeProvider, sourceId]);
|
|
256
|
+
return new SyncBlockProvider(fetchProvider, writeProvider, sourceId, providerOptions);
|
|
257
|
+
}, [fetchProvider, writeProvider, sourceId, providerOptions]);
|
|
191
258
|
};
|
|
@@ -11,6 +11,7 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
|
|
|
11
11
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
12
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
13
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
|
+
var _providerFactory = require("@atlaskit/editor-common/provider-factory");
|
|
14
15
|
var _types = require("../common/types");
|
|
15
16
|
var _resolveSyncBlockInstance = require("../utils/resolveSyncBlockInstance");
|
|
16
17
|
var _utils = require("../utils/utils");
|
|
@@ -28,6 +29,7 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
28
29
|
this.titleSubscriptions = new Map();
|
|
29
30
|
this.dataProvider = dataProvider;
|
|
30
31
|
this.syncBlockURLRequests = new Map();
|
|
32
|
+
this.providerFactories = new Map();
|
|
31
33
|
}
|
|
32
34
|
|
|
33
35
|
/**
|
|
@@ -243,6 +245,7 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
243
245
|
key: "deleteFromCache",
|
|
244
246
|
value: function deleteFromCache(resourceId) {
|
|
245
247
|
this.syncBlockCache.delete(resourceId);
|
|
248
|
+
this.providerFactories.delete(resourceId);
|
|
246
249
|
}
|
|
247
250
|
}, {
|
|
248
251
|
key: "subscribeToSyncBlock",
|
|
@@ -338,12 +341,35 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
338
341
|
}
|
|
339
342
|
return (_syncBlock$data = syncBlock.data) === null || _syncBlock$data === void 0 ? void 0 : _syncBlock$data.sourceURL;
|
|
340
343
|
}
|
|
344
|
+
}, {
|
|
345
|
+
key: "getProviderFactory",
|
|
346
|
+
value: function getProviderFactory(resourceId) {
|
|
347
|
+
if (!this.dataProvider) {
|
|
348
|
+
return undefined;
|
|
349
|
+
}
|
|
350
|
+
var _this$dataProvider$ge = this.dataProvider.getSyncedBlockRendererProviderOptions(),
|
|
351
|
+
parentDataProviders = _this$dataProvider$ge.parentDataProviders;
|
|
352
|
+
if (!this.providerFactories.has(resourceId)) {
|
|
353
|
+
// TODO: EDITOR-2771 - In follow up PR, create media & emoji providers per ref sync block
|
|
354
|
+
// The media & emoji providers will be set later, once we get ref sync block data with page ID
|
|
355
|
+
// So we need to keep the reference to the Provider Factory so we can then set media & emoji providers later
|
|
356
|
+
this.providerFactories.set(resourceId, _providerFactory.ProviderFactory.create({
|
|
357
|
+
emojiProvider: parentDataProviders === null || parentDataProviders === void 0 ? void 0 : parentDataProviders.emojiProvider,
|
|
358
|
+
mediaProvider: parentDataProviders === null || parentDataProviders === void 0 ? void 0 : parentDataProviders.mediaProvider,
|
|
359
|
+
mentionProvider: parentDataProviders === null || parentDataProviders === void 0 ? void 0 : parentDataProviders.mentionProvider,
|
|
360
|
+
profilecardProvider: parentDataProviders === null || parentDataProviders === void 0 ? void 0 : parentDataProviders.profilecardProvider,
|
|
361
|
+
taskDecisionProvider: parentDataProviders === null || parentDataProviders === void 0 ? void 0 : parentDataProviders.taskDecisionProvider
|
|
362
|
+
}));
|
|
363
|
+
}
|
|
364
|
+
return this.providerFactories.get(resourceId);
|
|
365
|
+
}
|
|
341
366
|
}, {
|
|
342
367
|
key: "destroy",
|
|
343
368
|
value: function destroy() {
|
|
344
369
|
this.syncBlockCache.clear();
|
|
345
370
|
this.subscriptions.clear();
|
|
346
371
|
this.syncBlockURLRequests.clear();
|
|
372
|
+
this.providerFactories.clear();
|
|
347
373
|
}
|
|
348
374
|
}]);
|
|
349
375
|
}();
|
|
@@ -171,6 +171,11 @@ var SyncBlockStoreManager = exports.SyncBlockStoreManager = /*#__PURE__*/functio
|
|
|
171
171
|
// only applicable to source sync block, for now (will be refactored further)
|
|
172
172
|
this.sourceSyncBlockStoreManager.rebaseTransaction(incomingTr, state);
|
|
173
173
|
}
|
|
174
|
+
}, {
|
|
175
|
+
key: "getReferenceSyncBlockProviderFactory",
|
|
176
|
+
value: function getReferenceSyncBlockProviderFactory(resourceId) {
|
|
177
|
+
return this.referenceSyncBlockStoreManager.getProviderFactory(resourceId);
|
|
178
|
+
}
|
|
174
179
|
}, {
|
|
175
180
|
key: "destroy",
|
|
176
181
|
value: function destroy() {
|
|
@@ -36,8 +36,9 @@ export const useFetchSyncBlockData = (manager, resourceId, localId) => {
|
|
|
36
36
|
};
|
|
37
37
|
}, [localId, referenceSyncBlockStoreManager, resourceId]);
|
|
38
38
|
return {
|
|
39
|
-
syncBlockInstance,
|
|
40
39
|
isLoading,
|
|
41
|
-
|
|
40
|
+
providerFactory: referenceSyncBlockStoreManager.getProviderFactory(resourceId || ''),
|
|
41
|
+
reloadData,
|
|
42
|
+
syncBlockInstance
|
|
42
43
|
};
|
|
43
44
|
};
|
|
@@ -5,19 +5,52 @@ import { SyncBlockDataProvider } from '../providers/types';
|
|
|
5
5
|
import { getLocalIdFromAri, getPageARIFromResourceId } from '../utils/ari';
|
|
6
6
|
import { fetchSourceInfo } from '../utils/sourceInfo';
|
|
7
7
|
export class SyncBlockProvider extends SyncBlockDataProvider {
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Constructor for the SyncBlockProvider
|
|
10
|
+
*
|
|
11
|
+
* @param fetchProvider
|
|
12
|
+
* @param writeProvider
|
|
13
|
+
* @param sourceId
|
|
14
|
+
* @param nestedRendererDataProviders
|
|
15
|
+
*/
|
|
16
|
+
constructor(fetchProvider, writeProvider, sourceId, providerOptions) {
|
|
9
17
|
super();
|
|
10
18
|
_defineProperty(this, "name", 'syncBlockProvider');
|
|
11
19
|
this.fetchProvider = fetchProvider;
|
|
12
20
|
this.writeProvider = writeProvider;
|
|
13
21
|
this.sourceId = sourceId;
|
|
22
|
+
this.providerOptions = providerOptions;
|
|
14
23
|
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Check if the node is supported by the provider
|
|
27
|
+
*
|
|
28
|
+
* @param node
|
|
29
|
+
*
|
|
30
|
+
* @returns True if the node is supported, false otherwise
|
|
31
|
+
*/
|
|
15
32
|
isNodeSupported(node) {
|
|
16
|
-
return node.type === 'syncBlock';
|
|
33
|
+
return node.type === 'syncBlock' || node.type === 'bodiedSyncBlock';
|
|
17
34
|
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Get the data key for the node
|
|
38
|
+
*
|
|
39
|
+
* @param node
|
|
40
|
+
*
|
|
41
|
+
* @returns The data key
|
|
42
|
+
*/
|
|
18
43
|
nodeDataKey(node) {
|
|
19
44
|
return node.attrs.localId;
|
|
20
45
|
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Fetch the data from the fetch provider
|
|
49
|
+
*
|
|
50
|
+
* @param nodes
|
|
51
|
+
*
|
|
52
|
+
* @returns Array of {resourceId?: string, error?: string}.
|
|
53
|
+
*/
|
|
21
54
|
fetchNodesData(nodes) {
|
|
22
55
|
const resourceIdSet = new Set(nodes.map(node => node.attrs.resourceId));
|
|
23
56
|
const resourceIds = [...resourceIdSet];
|
|
@@ -38,6 +71,7 @@ export class SyncBlockProvider extends SyncBlockDataProvider {
|
|
|
38
71
|
}
|
|
39
72
|
|
|
40
73
|
/**
|
|
74
|
+
* Write the data to the write provider
|
|
41
75
|
*
|
|
42
76
|
* @param nodes
|
|
43
77
|
* @param data
|
|
@@ -62,6 +96,14 @@ export class SyncBlockProvider extends SyncBlockDataProvider {
|
|
|
62
96
|
}
|
|
63
97
|
});
|
|
64
98
|
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Delete the data from the write provider
|
|
102
|
+
*
|
|
103
|
+
* @param resourceIds
|
|
104
|
+
*
|
|
105
|
+
* @returns Array of {resourceId?: string, error?: string}.
|
|
106
|
+
*/
|
|
65
107
|
async deleteNodesData(resourceIds) {
|
|
66
108
|
const results = await Promise.allSettled(resourceIds.map(resourceId => this.writeProvider.deleteData(resourceId)));
|
|
67
109
|
return results.map((result, index) => {
|
|
@@ -76,9 +118,23 @@ export class SyncBlockProvider extends SyncBlockDataProvider {
|
|
|
76
118
|
}
|
|
77
119
|
});
|
|
78
120
|
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Get the source id
|
|
124
|
+
*
|
|
125
|
+
* @returns The source id
|
|
126
|
+
*/
|
|
79
127
|
getSourceId() {
|
|
80
128
|
return this.sourceId;
|
|
81
129
|
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Retrieve the source info from the source id
|
|
133
|
+
*
|
|
134
|
+
* @param node
|
|
135
|
+
*
|
|
136
|
+
* @returns The source info
|
|
137
|
+
*/
|
|
82
138
|
retrieveSyncBlockSourceInfo(node) {
|
|
83
139
|
const {
|
|
84
140
|
resourceId
|
|
@@ -102,9 +158,18 @@ export class SyncBlockProvider extends SyncBlockDataProvider {
|
|
|
102
158
|
generateResourceId(sourceId, localId) {
|
|
103
159
|
return this.writeProvider.generateResourceId(sourceId, localId);
|
|
104
160
|
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Get the synced block renderer provider options
|
|
164
|
+
*
|
|
165
|
+
* @returns The synced block renderer provider options
|
|
166
|
+
*/
|
|
167
|
+
getSyncedBlockRendererProviderOptions() {
|
|
168
|
+
return this.providerOptions;
|
|
169
|
+
}
|
|
105
170
|
}
|
|
106
|
-
export const useMemoizedSyncedBlockProvider = (fetchProvider, writeProvider, sourceId) => {
|
|
171
|
+
export const useMemoizedSyncedBlockProvider = (fetchProvider, writeProvider, sourceId, providerOptions) => {
|
|
107
172
|
return useMemo(() => {
|
|
108
|
-
return new SyncBlockProvider(fetchProvider, writeProvider, sourceId);
|
|
109
|
-
}, [fetchProvider, writeProvider, sourceId]);
|
|
173
|
+
return new SyncBlockProvider(fetchProvider, writeProvider, sourceId, providerOptions);
|
|
174
|
+
}, [fetchProvider, writeProvider, sourceId, providerOptions]);
|
|
110
175
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
|
|
2
3
|
import { SyncBlockError } from '../common/types';
|
|
3
4
|
import { resolveSyncBlockInstance } from '../utils/resolveSyncBlockInstance';
|
|
4
5
|
import { createSyncBlockNode } from '../utils/utils';
|
|
@@ -10,6 +11,7 @@ export class ReferenceSyncBlockStoreManager {
|
|
|
10
11
|
this.titleSubscriptions = new Map();
|
|
11
12
|
this.dataProvider = dataProvider;
|
|
12
13
|
this.syncBlockURLRequests = new Map();
|
|
14
|
+
this.providerFactories = new Map();
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
/**
|
|
@@ -134,6 +136,7 @@ export class ReferenceSyncBlockStoreManager {
|
|
|
134
136
|
}
|
|
135
137
|
deleteFromCache(resourceId) {
|
|
136
138
|
this.syncBlockCache.delete(resourceId);
|
|
139
|
+
this.providerFactories.delete(resourceId);
|
|
137
140
|
}
|
|
138
141
|
subscribeToSyncBlock(resourceId, localId, callback) {
|
|
139
142
|
// add to subscriptions map
|
|
@@ -227,9 +230,31 @@ export class ReferenceSyncBlockStoreManager {
|
|
|
227
230
|
}
|
|
228
231
|
return (_syncBlock$data = syncBlock.data) === null || _syncBlock$data === void 0 ? void 0 : _syncBlock$data.sourceURL;
|
|
229
232
|
}
|
|
233
|
+
getProviderFactory(resourceId) {
|
|
234
|
+
if (!this.dataProvider) {
|
|
235
|
+
return undefined;
|
|
236
|
+
}
|
|
237
|
+
const {
|
|
238
|
+
parentDataProviders
|
|
239
|
+
} = this.dataProvider.getSyncedBlockRendererProviderOptions();
|
|
240
|
+
if (!this.providerFactories.has(resourceId)) {
|
|
241
|
+
// TODO: EDITOR-2771 - In follow up PR, create media & emoji providers per ref sync block
|
|
242
|
+
// The media & emoji providers will be set later, once we get ref sync block data with page ID
|
|
243
|
+
// So we need to keep the reference to the Provider Factory so we can then set media & emoji providers later
|
|
244
|
+
this.providerFactories.set(resourceId, ProviderFactory.create({
|
|
245
|
+
emojiProvider: parentDataProviders === null || parentDataProviders === void 0 ? void 0 : parentDataProviders.emojiProvider,
|
|
246
|
+
mediaProvider: parentDataProviders === null || parentDataProviders === void 0 ? void 0 : parentDataProviders.mediaProvider,
|
|
247
|
+
mentionProvider: parentDataProviders === null || parentDataProviders === void 0 ? void 0 : parentDataProviders.mentionProvider,
|
|
248
|
+
profilecardProvider: parentDataProviders === null || parentDataProviders === void 0 ? void 0 : parentDataProviders.profilecardProvider,
|
|
249
|
+
taskDecisionProvider: parentDataProviders === null || parentDataProviders === void 0 ? void 0 : parentDataProviders.taskDecisionProvider
|
|
250
|
+
}));
|
|
251
|
+
}
|
|
252
|
+
return this.providerFactories.get(resourceId);
|
|
253
|
+
}
|
|
230
254
|
destroy() {
|
|
231
255
|
this.syncBlockCache.clear();
|
|
232
256
|
this.subscriptions.clear();
|
|
233
257
|
this.syncBlockURLRequests.clear();
|
|
258
|
+
this.providerFactories.clear();
|
|
234
259
|
}
|
|
235
260
|
}
|
|
@@ -122,6 +122,9 @@ export class SyncBlockStoreManager {
|
|
|
122
122
|
// only applicable to source sync block, for now (will be refactored further)
|
|
123
123
|
this.sourceSyncBlockStoreManager.rebaseTransaction(incomingTr, state);
|
|
124
124
|
}
|
|
125
|
+
getReferenceSyncBlockProviderFactory(resourceId) {
|
|
126
|
+
return this.referenceSyncBlockStoreManager.getProviderFactory(resourceId);
|
|
127
|
+
}
|
|
125
128
|
destroy() {
|
|
126
129
|
this.referenceSyncBlockStoreManager.destroy();
|
|
127
130
|
}
|
|
@@ -65,8 +65,9 @@ export var useFetchSyncBlockData = function useFetchSyncBlockData(manager, resou
|
|
|
65
65
|
};
|
|
66
66
|
}, [localId, referenceSyncBlockStoreManager, resourceId]);
|
|
67
67
|
return {
|
|
68
|
-
syncBlockInstance: syncBlockInstance,
|
|
69
68
|
isLoading: isLoading,
|
|
70
|
-
|
|
69
|
+
providerFactory: referenceSyncBlockStoreManager.getProviderFactory(resourceId || ''),
|
|
70
|
+
reloadData: reloadData,
|
|
71
|
+
syncBlockInstance: syncBlockInstance
|
|
71
72
|
};
|
|
72
73
|
};
|
|
@@ -15,7 +15,15 @@ import { SyncBlockDataProvider } from '../providers/types';
|
|
|
15
15
|
import { getLocalIdFromAri, getPageARIFromResourceId } from '../utils/ari';
|
|
16
16
|
import { fetchSourceInfo } from '../utils/sourceInfo';
|
|
17
17
|
export var SyncBlockProvider = /*#__PURE__*/function (_SyncBlockDataProvide) {
|
|
18
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Constructor for the SyncBlockProvider
|
|
20
|
+
*
|
|
21
|
+
* @param fetchProvider
|
|
22
|
+
* @param writeProvider
|
|
23
|
+
* @param sourceId
|
|
24
|
+
* @param nestedRendererDataProviders
|
|
25
|
+
*/
|
|
26
|
+
function SyncBlockProvider(fetchProvider, writeProvider, sourceId, providerOptions) {
|
|
19
27
|
var _this;
|
|
20
28
|
_classCallCheck(this, SyncBlockProvider);
|
|
21
29
|
_this = _callSuper(this, SyncBlockProvider);
|
|
@@ -23,19 +31,44 @@ export var SyncBlockProvider = /*#__PURE__*/function (_SyncBlockDataProvide) {
|
|
|
23
31
|
_this.fetchProvider = fetchProvider;
|
|
24
32
|
_this.writeProvider = writeProvider;
|
|
25
33
|
_this.sourceId = sourceId;
|
|
34
|
+
_this.providerOptions = providerOptions;
|
|
26
35
|
return _this;
|
|
27
36
|
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Check if the node is supported by the provider
|
|
40
|
+
*
|
|
41
|
+
* @param node
|
|
42
|
+
*
|
|
43
|
+
* @returns True if the node is supported, false otherwise
|
|
44
|
+
*/
|
|
28
45
|
_inherits(SyncBlockProvider, _SyncBlockDataProvide);
|
|
29
46
|
return _createClass(SyncBlockProvider, [{
|
|
30
47
|
key: "isNodeSupported",
|
|
31
48
|
value: function isNodeSupported(node) {
|
|
32
|
-
return node.type === 'syncBlock';
|
|
49
|
+
return node.type === 'syncBlock' || node.type === 'bodiedSyncBlock';
|
|
33
50
|
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Get the data key for the node
|
|
54
|
+
*
|
|
55
|
+
* @param node
|
|
56
|
+
*
|
|
57
|
+
* @returns The data key
|
|
58
|
+
*/
|
|
34
59
|
}, {
|
|
35
60
|
key: "nodeDataKey",
|
|
36
61
|
value: function nodeDataKey(node) {
|
|
37
62
|
return node.attrs.localId;
|
|
38
63
|
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Fetch the data from the fetch provider
|
|
67
|
+
*
|
|
68
|
+
* @param nodes
|
|
69
|
+
*
|
|
70
|
+
* @returns Array of {resourceId?: string, error?: string}.
|
|
71
|
+
*/
|
|
39
72
|
}, {
|
|
40
73
|
key: "fetchNodesData",
|
|
41
74
|
value: function fetchNodesData(nodes) {
|
|
@@ -63,6 +96,7 @@ export var SyncBlockProvider = /*#__PURE__*/function (_SyncBlockDataProvide) {
|
|
|
63
96
|
}
|
|
64
97
|
|
|
65
98
|
/**
|
|
99
|
+
* Write the data to the write provider
|
|
66
100
|
*
|
|
67
101
|
* @param nodes
|
|
68
102
|
* @param data
|
|
@@ -107,10 +141,18 @@ export var SyncBlockProvider = /*#__PURE__*/function (_SyncBlockDataProvide) {
|
|
|
107
141
|
return _writeNodesData.apply(this, arguments);
|
|
108
142
|
}
|
|
109
143
|
return writeNodesData;
|
|
110
|
-
}()
|
|
144
|
+
}()
|
|
145
|
+
/**
|
|
146
|
+
* Delete the data from the write provider
|
|
147
|
+
*
|
|
148
|
+
* @param resourceIds
|
|
149
|
+
*
|
|
150
|
+
* @returns Array of {resourceId?: string, error?: string}.
|
|
151
|
+
*/
|
|
152
|
+
)
|
|
111
153
|
}, {
|
|
112
154
|
key: "deleteNodesData",
|
|
113
|
-
value: function () {
|
|
155
|
+
value: (function () {
|
|
114
156
|
var _deleteNodesData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(resourceIds) {
|
|
115
157
|
var _this4 = this;
|
|
116
158
|
var results;
|
|
@@ -145,11 +187,25 @@ export var SyncBlockProvider = /*#__PURE__*/function (_SyncBlockDataProvide) {
|
|
|
145
187
|
}
|
|
146
188
|
return deleteNodesData;
|
|
147
189
|
}()
|
|
190
|
+
/**
|
|
191
|
+
* Get the source id
|
|
192
|
+
*
|
|
193
|
+
* @returns The source id
|
|
194
|
+
*/
|
|
195
|
+
)
|
|
148
196
|
}, {
|
|
149
197
|
key: "getSourceId",
|
|
150
198
|
value: function getSourceId() {
|
|
151
199
|
return this.sourceId;
|
|
152
200
|
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Retrieve the source info from the source id
|
|
204
|
+
*
|
|
205
|
+
* @param node
|
|
206
|
+
*
|
|
207
|
+
* @returns The source info
|
|
208
|
+
*/
|
|
153
209
|
}, {
|
|
154
210
|
key: "retrieveSyncBlockSourceInfo",
|
|
155
211
|
value: function retrieveSyncBlockSourceInfo(node) {
|
|
@@ -175,10 +231,21 @@ export var SyncBlockProvider = /*#__PURE__*/function (_SyncBlockDataProvide) {
|
|
|
175
231
|
value: function generateResourceId(sourceId, localId) {
|
|
176
232
|
return this.writeProvider.generateResourceId(sourceId, localId);
|
|
177
233
|
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Get the synced block renderer provider options
|
|
237
|
+
*
|
|
238
|
+
* @returns The synced block renderer provider options
|
|
239
|
+
*/
|
|
240
|
+
}, {
|
|
241
|
+
key: "getSyncedBlockRendererProviderOptions",
|
|
242
|
+
value: function getSyncedBlockRendererProviderOptions() {
|
|
243
|
+
return this.providerOptions;
|
|
244
|
+
}
|
|
178
245
|
}]);
|
|
179
246
|
}(SyncBlockDataProvider);
|
|
180
|
-
export var useMemoizedSyncedBlockProvider = function useMemoizedSyncedBlockProvider(fetchProvider, writeProvider, sourceId) {
|
|
247
|
+
export var useMemoizedSyncedBlockProvider = function useMemoizedSyncedBlockProvider(fetchProvider, writeProvider, sourceId, providerOptions) {
|
|
181
248
|
return useMemo(function () {
|
|
182
|
-
return new SyncBlockProvider(fetchProvider, writeProvider, sourceId);
|
|
183
|
-
}, [fetchProvider, writeProvider, sourceId]);
|
|
249
|
+
return new SyncBlockProvider(fetchProvider, writeProvider, sourceId, providerOptions);
|
|
250
|
+
}, [fetchProvider, writeProvider, sourceId, providerOptions]);
|
|
184
251
|
};
|
|
@@ -9,6 +9,7 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
|
9
9
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
10
10
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
11
11
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
12
|
+
import { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
|
|
12
13
|
import { SyncBlockError } from '../common/types';
|
|
13
14
|
import { resolveSyncBlockInstance } from '../utils/resolveSyncBlockInstance';
|
|
14
15
|
import { createSyncBlockNode } from '../utils/utils';
|
|
@@ -21,6 +22,7 @@ export var ReferenceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
21
22
|
this.titleSubscriptions = new Map();
|
|
22
23
|
this.dataProvider = dataProvider;
|
|
23
24
|
this.syncBlockURLRequests = new Map();
|
|
25
|
+
this.providerFactories = new Map();
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
/**
|
|
@@ -236,6 +238,7 @@ export var ReferenceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
236
238
|
key: "deleteFromCache",
|
|
237
239
|
value: function deleteFromCache(resourceId) {
|
|
238
240
|
this.syncBlockCache.delete(resourceId);
|
|
241
|
+
this.providerFactories.delete(resourceId);
|
|
239
242
|
}
|
|
240
243
|
}, {
|
|
241
244
|
key: "subscribeToSyncBlock",
|
|
@@ -331,12 +334,35 @@ export var ReferenceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
331
334
|
}
|
|
332
335
|
return (_syncBlock$data = syncBlock.data) === null || _syncBlock$data === void 0 ? void 0 : _syncBlock$data.sourceURL;
|
|
333
336
|
}
|
|
337
|
+
}, {
|
|
338
|
+
key: "getProviderFactory",
|
|
339
|
+
value: function getProviderFactory(resourceId) {
|
|
340
|
+
if (!this.dataProvider) {
|
|
341
|
+
return undefined;
|
|
342
|
+
}
|
|
343
|
+
var _this$dataProvider$ge = this.dataProvider.getSyncedBlockRendererProviderOptions(),
|
|
344
|
+
parentDataProviders = _this$dataProvider$ge.parentDataProviders;
|
|
345
|
+
if (!this.providerFactories.has(resourceId)) {
|
|
346
|
+
// TODO: EDITOR-2771 - In follow up PR, create media & emoji providers per ref sync block
|
|
347
|
+
// The media & emoji providers will be set later, once we get ref sync block data with page ID
|
|
348
|
+
// So we need to keep the reference to the Provider Factory so we can then set media & emoji providers later
|
|
349
|
+
this.providerFactories.set(resourceId, ProviderFactory.create({
|
|
350
|
+
emojiProvider: parentDataProviders === null || parentDataProviders === void 0 ? void 0 : parentDataProviders.emojiProvider,
|
|
351
|
+
mediaProvider: parentDataProviders === null || parentDataProviders === void 0 ? void 0 : parentDataProviders.mediaProvider,
|
|
352
|
+
mentionProvider: parentDataProviders === null || parentDataProviders === void 0 ? void 0 : parentDataProviders.mentionProvider,
|
|
353
|
+
profilecardProvider: parentDataProviders === null || parentDataProviders === void 0 ? void 0 : parentDataProviders.profilecardProvider,
|
|
354
|
+
taskDecisionProvider: parentDataProviders === null || parentDataProviders === void 0 ? void 0 : parentDataProviders.taskDecisionProvider
|
|
355
|
+
}));
|
|
356
|
+
}
|
|
357
|
+
return this.providerFactories.get(resourceId);
|
|
358
|
+
}
|
|
334
359
|
}, {
|
|
335
360
|
key: "destroy",
|
|
336
361
|
value: function destroy() {
|
|
337
362
|
this.syncBlockCache.clear();
|
|
338
363
|
this.subscriptions.clear();
|
|
339
364
|
this.syncBlockURLRequests.clear();
|
|
365
|
+
this.providerFactories.clear();
|
|
340
366
|
}
|
|
341
367
|
}]);
|
|
342
368
|
}();
|
|
@@ -165,6 +165,11 @@ export var SyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
165
165
|
// only applicable to source sync block, for now (will be refactored further)
|
|
166
166
|
this.sourceSyncBlockStoreManager.rebaseTransaction(incomingTr, state);
|
|
167
167
|
}
|
|
168
|
+
}, {
|
|
169
|
+
key: "getReferenceSyncBlockProviderFactory",
|
|
170
|
+
value: function getReferenceSyncBlockProviderFactory(resourceId) {
|
|
171
|
+
return this.referenceSyncBlockStoreManager.getProviderFactory(resourceId);
|
|
172
|
+
}
|
|
168
173
|
}, {
|
|
169
174
|
key: "destroy",
|
|
170
175
|
value: function destroy() {
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import type { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
|
|
1
2
|
import type { SyncBlockInstance } from '../providers/types';
|
|
2
3
|
import type { SyncBlockStoreManager } from '../store-manager/syncBlockStoreManager';
|
|
3
4
|
export interface UseFetchSyncBlockDataResult {
|
|
4
5
|
isLoading: boolean;
|
|
6
|
+
providerFactory: ProviderFactory | undefined;
|
|
5
7
|
reloadData: () => Promise<void>;
|
|
6
8
|
syncBlockInstance: SyncBlockInstance | null;
|
|
7
9
|
}
|
|
@@ -1,16 +1,47 @@
|
|
|
1
1
|
import type { JSONNode } from '@atlaskit/editor-json-transformer/types';
|
|
2
2
|
import { type SyncBlockData, type SyncBlockNode } from '../common/types';
|
|
3
|
-
import { SyncBlockDataProvider, type ADFFetchProvider, type ADFWriteProvider, type DeleteSyncBlockResult, type SyncBlockInstance, type SyncBlockSourceInfo, type WriteSyncBlockResult } from '../providers/types';
|
|
3
|
+
import { SyncBlockDataProvider, type ADFFetchProvider, type ADFWriteProvider, type DeleteSyncBlockResult, type SyncBlockInstance, type SyncBlockSourceInfo, type SyncedBlockRendererProviderOptions, type WriteSyncBlockResult } from '../providers/types';
|
|
4
4
|
export declare class SyncBlockProvider extends SyncBlockDataProvider {
|
|
5
5
|
name: string;
|
|
6
6
|
private fetchProvider;
|
|
7
7
|
private writeProvider;
|
|
8
8
|
private sourceId;
|
|
9
|
-
|
|
9
|
+
private providerOptions;
|
|
10
|
+
/**
|
|
11
|
+
* Constructor for the SyncBlockProvider
|
|
12
|
+
*
|
|
13
|
+
* @param fetchProvider
|
|
14
|
+
* @param writeProvider
|
|
15
|
+
* @param sourceId
|
|
16
|
+
* @param nestedRendererDataProviders
|
|
17
|
+
*/
|
|
18
|
+
constructor(fetchProvider: ADFFetchProvider, writeProvider: ADFWriteProvider, sourceId: string, providerOptions: SyncedBlockRendererProviderOptions);
|
|
19
|
+
/**
|
|
20
|
+
* Check if the node is supported by the provider
|
|
21
|
+
*
|
|
22
|
+
* @param node
|
|
23
|
+
*
|
|
24
|
+
* @returns True if the node is supported, false otherwise
|
|
25
|
+
*/
|
|
10
26
|
isNodeSupported(node: JSONNode): node is SyncBlockNode;
|
|
27
|
+
/**
|
|
28
|
+
* Get the data key for the node
|
|
29
|
+
*
|
|
30
|
+
* @param node
|
|
31
|
+
*
|
|
32
|
+
* @returns The data key
|
|
33
|
+
*/
|
|
11
34
|
nodeDataKey(node: SyncBlockNode): string;
|
|
35
|
+
/**
|
|
36
|
+
* Fetch the data from the fetch provider
|
|
37
|
+
*
|
|
38
|
+
* @param nodes
|
|
39
|
+
*
|
|
40
|
+
* @returns Array of {resourceId?: string, error?: string}.
|
|
41
|
+
*/
|
|
12
42
|
fetchNodesData(nodes: SyncBlockNode[]): Promise<SyncBlockInstance[]>;
|
|
13
43
|
/**
|
|
44
|
+
* Write the data to the write provider
|
|
14
45
|
*
|
|
15
46
|
* @param nodes
|
|
16
47
|
* @param data
|
|
@@ -19,9 +50,34 @@ export declare class SyncBlockProvider extends SyncBlockDataProvider {
|
|
|
19
50
|
* resourceId: resource id of the node if write successfully , error: reason for when write failed
|
|
20
51
|
*/
|
|
21
52
|
writeNodesData(nodes: SyncBlockNode[], data: SyncBlockData[]): Promise<Array<WriteSyncBlockResult>>;
|
|
53
|
+
/**
|
|
54
|
+
* Delete the data from the write provider
|
|
55
|
+
*
|
|
56
|
+
* @param resourceIds
|
|
57
|
+
*
|
|
58
|
+
* @returns Array of {resourceId?: string, error?: string}.
|
|
59
|
+
*/
|
|
22
60
|
deleteNodesData(resourceIds: string[]): Promise<Array<DeleteSyncBlockResult>>;
|
|
61
|
+
/**
|
|
62
|
+
* Get the source id
|
|
63
|
+
*
|
|
64
|
+
* @returns The source id
|
|
65
|
+
*/
|
|
23
66
|
getSourceId(): string;
|
|
67
|
+
/**
|
|
68
|
+
* Retrieve the source info from the source id
|
|
69
|
+
*
|
|
70
|
+
* @param node
|
|
71
|
+
*
|
|
72
|
+
* @returns The source info
|
|
73
|
+
*/
|
|
24
74
|
retrieveSyncBlockSourceInfo(node: SyncBlockNode): Promise<SyncBlockSourceInfo | undefined>;
|
|
25
75
|
generateResourceId(sourceId: string, localId: string): string;
|
|
76
|
+
/**
|
|
77
|
+
* Get the synced block renderer provider options
|
|
78
|
+
*
|
|
79
|
+
* @returns The synced block renderer provider options
|
|
80
|
+
*/
|
|
81
|
+
getSyncedBlockRendererProviderOptions(): SyncedBlockRendererProviderOptions;
|
|
26
82
|
}
|
|
27
|
-
export declare const useMemoizedSyncedBlockProvider: (fetchProvider: ADFFetchProvider, writeProvider: ADFWriteProvider, sourceId: string) => SyncBlockProvider;
|
|
83
|
+
export declare const useMemoizedSyncedBlockProvider: (fetchProvider: ADFFetchProvider, writeProvider: ADFWriteProvider, sourceId: string, providerOptions: SyncedBlockRendererProviderOptions) => SyncBlockProvider;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { SyncedBlockRendererDataProviders, MediaProvider } from '@atlaskit/editor-common/provider-factory';
|
|
2
|
+
import type { EmojiProvider } from '@atlaskit/emoji';
|
|
1
3
|
import { NodeDataProvider } from '@atlaskit/node-data-provider';
|
|
2
4
|
import type { SyncBlockData, ResourceId, SyncBlockError, SyncBlockNode } from '../common/types';
|
|
3
5
|
/**
|
|
@@ -31,11 +33,24 @@ export interface ADFWriteProvider {
|
|
|
31
33
|
generateResourceId: (sourceId: string, localId: string) => ResourceId;
|
|
32
34
|
writeData: (data: SyncBlockData) => Promise<WriteSyncBlockResult>;
|
|
33
35
|
}
|
|
36
|
+
export type MediaEmojiProviderOptions = {
|
|
37
|
+
contentId: string;
|
|
38
|
+
contentType: string;
|
|
39
|
+
spaceKey?: string | null;
|
|
40
|
+
};
|
|
41
|
+
export type SyncedBlockRendererProviderOptions = {
|
|
42
|
+
parentDataProviders?: SyncedBlockRendererDataProviders;
|
|
43
|
+
providerCreator?: {
|
|
44
|
+
createEmojiProvider: ((options: MediaEmojiProviderOptions) => Promise<EmojiProvider>) | undefined;
|
|
45
|
+
createMediaProvider: ((options: MediaEmojiProviderOptions) => Promise<MediaProvider>) | undefined;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
34
48
|
export declare abstract class SyncBlockDataProvider extends NodeDataProvider<SyncBlockNode, SyncBlockInstance> {
|
|
35
49
|
abstract writeNodesData(nodes: SyncBlockNode[], data: SyncBlockData[]): Promise<Array<WriteSyncBlockResult>>;
|
|
36
50
|
abstract deleteNodesData(resourceIds: string[]): Promise<Array<DeleteSyncBlockResult>>;
|
|
37
51
|
abstract getSourceId(): ResourceId;
|
|
38
52
|
abstract retrieveSyncBlockSourceInfo(node: SyncBlockNode): Promise<SyncBlockSourceInfo | undefined>;
|
|
53
|
+
abstract getSyncedBlockRendererProviderOptions(): SyncedBlockRendererProviderOptions;
|
|
39
54
|
/**
|
|
40
55
|
* Generates a resource ID from a source ID and local ID.
|
|
41
56
|
* @param sourceId - The source document ID (e.g., page ARI)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
|
|
1
2
|
import { type Node as PMNode } from '@atlaskit/editor-prosemirror/model';
|
|
2
3
|
import { type ResourceId, type SyncBlockNode } from '../common/types';
|
|
3
4
|
import type { SyncBlockInstance, SubscriptionCallback, SyncBlockDataProvider, TitleSubscriptionCallback } from '../providers/types';
|
|
@@ -6,6 +7,7 @@ export declare class ReferenceSyncBlockStoreManager {
|
|
|
6
7
|
private syncBlockCache;
|
|
7
8
|
private subscriptions;
|
|
8
9
|
private titleSubscriptions;
|
|
10
|
+
private providerFactories;
|
|
9
11
|
private syncBlockURLRequests;
|
|
10
12
|
private isRefreshingSubscriptions;
|
|
11
13
|
constructor(dataProvider?: SyncBlockDataProvider);
|
|
@@ -29,5 +31,6 @@ export declare class ReferenceSyncBlockStoreManager {
|
|
|
29
31
|
* @returns
|
|
30
32
|
*/
|
|
31
33
|
getSyncBlockURL(resourceId: ResourceId): string | undefined;
|
|
34
|
+
getProviderFactory(resourceId: ResourceId): ProviderFactory | undefined;
|
|
32
35
|
destroy(): void;
|
|
33
36
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
|
|
1
2
|
import type { EditorView } from '@atlaskit/editor-prosemirror/dist/types/view';
|
|
2
3
|
import { type Node as PMNode } from '@atlaskit/editor-prosemirror/model';
|
|
3
4
|
import type { EditorState, Transaction } from '@atlaskit/editor-prosemirror/state';
|
|
@@ -60,5 +61,6 @@ export declare class SyncBlockStoreManager {
|
|
|
60
61
|
refreshSubscriptions(): void;
|
|
61
62
|
deleteSyncBlocksWithConfirmation(tr: Transaction, syncBlockIds: SyncBlockAttrs[]): Promise<void>;
|
|
62
63
|
rebaseTransaction(incomingTr: Transaction, state: EditorState): void;
|
|
64
|
+
getReferenceSyncBlockProviderFactory(resourceId: ResourceId): ProviderFactory | undefined;
|
|
63
65
|
destroy(): void;
|
|
64
66
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import type { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
|
|
1
2
|
import type { SyncBlockInstance } from '../providers/types';
|
|
2
3
|
import type { SyncBlockStoreManager } from '../store-manager/syncBlockStoreManager';
|
|
3
4
|
export interface UseFetchSyncBlockDataResult {
|
|
4
5
|
isLoading: boolean;
|
|
6
|
+
providerFactory: ProviderFactory | undefined;
|
|
5
7
|
reloadData: () => Promise<void>;
|
|
6
8
|
syncBlockInstance: SyncBlockInstance | null;
|
|
7
9
|
}
|
|
@@ -1,16 +1,47 @@
|
|
|
1
1
|
import type { JSONNode } from '@atlaskit/editor-json-transformer/types';
|
|
2
2
|
import { type SyncBlockData, type SyncBlockNode } from '../common/types';
|
|
3
|
-
import { SyncBlockDataProvider, type ADFFetchProvider, type ADFWriteProvider, type DeleteSyncBlockResult, type SyncBlockInstance, type SyncBlockSourceInfo, type WriteSyncBlockResult } from '../providers/types';
|
|
3
|
+
import { SyncBlockDataProvider, type ADFFetchProvider, type ADFWriteProvider, type DeleteSyncBlockResult, type SyncBlockInstance, type SyncBlockSourceInfo, type SyncedBlockRendererProviderOptions, type WriteSyncBlockResult } from '../providers/types';
|
|
4
4
|
export declare class SyncBlockProvider extends SyncBlockDataProvider {
|
|
5
5
|
name: string;
|
|
6
6
|
private fetchProvider;
|
|
7
7
|
private writeProvider;
|
|
8
8
|
private sourceId;
|
|
9
|
-
|
|
9
|
+
private providerOptions;
|
|
10
|
+
/**
|
|
11
|
+
* Constructor for the SyncBlockProvider
|
|
12
|
+
*
|
|
13
|
+
* @param fetchProvider
|
|
14
|
+
* @param writeProvider
|
|
15
|
+
* @param sourceId
|
|
16
|
+
* @param nestedRendererDataProviders
|
|
17
|
+
*/
|
|
18
|
+
constructor(fetchProvider: ADFFetchProvider, writeProvider: ADFWriteProvider, sourceId: string, providerOptions: SyncedBlockRendererProviderOptions);
|
|
19
|
+
/**
|
|
20
|
+
* Check if the node is supported by the provider
|
|
21
|
+
*
|
|
22
|
+
* @param node
|
|
23
|
+
*
|
|
24
|
+
* @returns True if the node is supported, false otherwise
|
|
25
|
+
*/
|
|
10
26
|
isNodeSupported(node: JSONNode): node is SyncBlockNode;
|
|
27
|
+
/**
|
|
28
|
+
* Get the data key for the node
|
|
29
|
+
*
|
|
30
|
+
* @param node
|
|
31
|
+
*
|
|
32
|
+
* @returns The data key
|
|
33
|
+
*/
|
|
11
34
|
nodeDataKey(node: SyncBlockNode): string;
|
|
35
|
+
/**
|
|
36
|
+
* Fetch the data from the fetch provider
|
|
37
|
+
*
|
|
38
|
+
* @param nodes
|
|
39
|
+
*
|
|
40
|
+
* @returns Array of {resourceId?: string, error?: string}.
|
|
41
|
+
*/
|
|
12
42
|
fetchNodesData(nodes: SyncBlockNode[]): Promise<SyncBlockInstance[]>;
|
|
13
43
|
/**
|
|
44
|
+
* Write the data to the write provider
|
|
14
45
|
*
|
|
15
46
|
* @param nodes
|
|
16
47
|
* @param data
|
|
@@ -19,9 +50,34 @@ export declare class SyncBlockProvider extends SyncBlockDataProvider {
|
|
|
19
50
|
* resourceId: resource id of the node if write successfully , error: reason for when write failed
|
|
20
51
|
*/
|
|
21
52
|
writeNodesData(nodes: SyncBlockNode[], data: SyncBlockData[]): Promise<Array<WriteSyncBlockResult>>;
|
|
53
|
+
/**
|
|
54
|
+
* Delete the data from the write provider
|
|
55
|
+
*
|
|
56
|
+
* @param resourceIds
|
|
57
|
+
*
|
|
58
|
+
* @returns Array of {resourceId?: string, error?: string}.
|
|
59
|
+
*/
|
|
22
60
|
deleteNodesData(resourceIds: string[]): Promise<Array<DeleteSyncBlockResult>>;
|
|
61
|
+
/**
|
|
62
|
+
* Get the source id
|
|
63
|
+
*
|
|
64
|
+
* @returns The source id
|
|
65
|
+
*/
|
|
23
66
|
getSourceId(): string;
|
|
67
|
+
/**
|
|
68
|
+
* Retrieve the source info from the source id
|
|
69
|
+
*
|
|
70
|
+
* @param node
|
|
71
|
+
*
|
|
72
|
+
* @returns The source info
|
|
73
|
+
*/
|
|
24
74
|
retrieveSyncBlockSourceInfo(node: SyncBlockNode): Promise<SyncBlockSourceInfo | undefined>;
|
|
25
75
|
generateResourceId(sourceId: string, localId: string): string;
|
|
76
|
+
/**
|
|
77
|
+
* Get the synced block renderer provider options
|
|
78
|
+
*
|
|
79
|
+
* @returns The synced block renderer provider options
|
|
80
|
+
*/
|
|
81
|
+
getSyncedBlockRendererProviderOptions(): SyncedBlockRendererProviderOptions;
|
|
26
82
|
}
|
|
27
|
-
export declare const useMemoizedSyncedBlockProvider: (fetchProvider: ADFFetchProvider, writeProvider: ADFWriteProvider, sourceId: string) => SyncBlockProvider;
|
|
83
|
+
export declare const useMemoizedSyncedBlockProvider: (fetchProvider: ADFFetchProvider, writeProvider: ADFWriteProvider, sourceId: string, providerOptions: SyncedBlockRendererProviderOptions) => SyncBlockProvider;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { SyncedBlockRendererDataProviders, MediaProvider } from '@atlaskit/editor-common/provider-factory';
|
|
2
|
+
import type { EmojiProvider } from '@atlaskit/emoji';
|
|
1
3
|
import { NodeDataProvider } from '@atlaskit/node-data-provider';
|
|
2
4
|
import type { SyncBlockData, ResourceId, SyncBlockError, SyncBlockNode } from '../common/types';
|
|
3
5
|
/**
|
|
@@ -31,11 +33,24 @@ export interface ADFWriteProvider {
|
|
|
31
33
|
generateResourceId: (sourceId: string, localId: string) => ResourceId;
|
|
32
34
|
writeData: (data: SyncBlockData) => Promise<WriteSyncBlockResult>;
|
|
33
35
|
}
|
|
36
|
+
export type MediaEmojiProviderOptions = {
|
|
37
|
+
contentId: string;
|
|
38
|
+
contentType: string;
|
|
39
|
+
spaceKey?: string | null;
|
|
40
|
+
};
|
|
41
|
+
export type SyncedBlockRendererProviderOptions = {
|
|
42
|
+
parentDataProviders?: SyncedBlockRendererDataProviders;
|
|
43
|
+
providerCreator?: {
|
|
44
|
+
createEmojiProvider: ((options: MediaEmojiProviderOptions) => Promise<EmojiProvider>) | undefined;
|
|
45
|
+
createMediaProvider: ((options: MediaEmojiProviderOptions) => Promise<MediaProvider>) | undefined;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
34
48
|
export declare abstract class SyncBlockDataProvider extends NodeDataProvider<SyncBlockNode, SyncBlockInstance> {
|
|
35
49
|
abstract writeNodesData(nodes: SyncBlockNode[], data: SyncBlockData[]): Promise<Array<WriteSyncBlockResult>>;
|
|
36
50
|
abstract deleteNodesData(resourceIds: string[]): Promise<Array<DeleteSyncBlockResult>>;
|
|
37
51
|
abstract getSourceId(): ResourceId;
|
|
38
52
|
abstract retrieveSyncBlockSourceInfo(node: SyncBlockNode): Promise<SyncBlockSourceInfo | undefined>;
|
|
53
|
+
abstract getSyncedBlockRendererProviderOptions(): SyncedBlockRendererProviderOptions;
|
|
39
54
|
/**
|
|
40
55
|
* Generates a resource ID from a source ID and local ID.
|
|
41
56
|
* @param sourceId - The source document ID (e.g., page ARI)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
|
|
1
2
|
import { type Node as PMNode } from '@atlaskit/editor-prosemirror/model';
|
|
2
3
|
import { type ResourceId, type SyncBlockNode } from '../common/types';
|
|
3
4
|
import type { SyncBlockInstance, SubscriptionCallback, SyncBlockDataProvider, TitleSubscriptionCallback } from '../providers/types';
|
|
@@ -6,6 +7,7 @@ export declare class ReferenceSyncBlockStoreManager {
|
|
|
6
7
|
private syncBlockCache;
|
|
7
8
|
private subscriptions;
|
|
8
9
|
private titleSubscriptions;
|
|
10
|
+
private providerFactories;
|
|
9
11
|
private syncBlockURLRequests;
|
|
10
12
|
private isRefreshingSubscriptions;
|
|
11
13
|
constructor(dataProvider?: SyncBlockDataProvider);
|
|
@@ -29,5 +31,6 @@ export declare class ReferenceSyncBlockStoreManager {
|
|
|
29
31
|
* @returns
|
|
30
32
|
*/
|
|
31
33
|
getSyncBlockURL(resourceId: ResourceId): string | undefined;
|
|
34
|
+
getProviderFactory(resourceId: ResourceId): ProviderFactory | undefined;
|
|
32
35
|
destroy(): void;
|
|
33
36
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
|
|
1
2
|
import type { EditorView } from '@atlaskit/editor-prosemirror/dist/types/view';
|
|
2
3
|
import { type Node as PMNode } from '@atlaskit/editor-prosemirror/model';
|
|
3
4
|
import type { EditorState, Transaction } from '@atlaskit/editor-prosemirror/state';
|
|
@@ -60,5 +61,6 @@ export declare class SyncBlockStoreManager {
|
|
|
60
61
|
refreshSubscriptions(): void;
|
|
61
62
|
deleteSyncBlocksWithConfirmation(tr: Transaction, syncBlockIds: SyncBlockAttrs[]): Promise<void>;
|
|
62
63
|
rebaseTransaction(incomingTr: Transaction, state: EditorState): void;
|
|
64
|
+
getReferenceSyncBlockProviderFactory(resourceId: ResourceId): ProviderFactory | undefined;
|
|
63
65
|
destroy(): void;
|
|
64
66
|
}
|
package/package.json
CHANGED
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"uuid": "^3.1.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
|
+
"@atlaskit/editor-common": "^110.30.0",
|
|
41
42
|
"react": "^18.2.0"
|
|
42
43
|
},
|
|
43
44
|
"devDependencies": {
|
|
@@ -83,7 +84,7 @@
|
|
|
83
84
|
}
|
|
84
85
|
},
|
|
85
86
|
"name": "@atlaskit/editor-synced-block-provider",
|
|
86
|
-
"version": "2.9.
|
|
87
|
+
"version": "2.9.1",
|
|
87
88
|
"description": "Synced Block Provider for @atlaskit/editor-plugin-synced-block",
|
|
88
89
|
"author": "Atlassian Pty Ltd",
|
|
89
90
|
"license": "Apache-2.0",
|