@atlaskit/editor-plugin-card 16.5.4 → 16.6.0
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 +11 -0
- package/dist/cjs/cardPlugin.js +18 -4
- package/dist/cjs/pm-plugins/doc.js +87 -22
- package/dist/es2019/cardPlugin.js +12 -1
- package/dist/es2019/pm-plugins/doc.js +83 -21
- package/dist/esm/cardPlugin.js +19 -5
- package/dist/esm/pm-plugins/doc.js +86 -21
- package/dist/types/cardPluginType.d.ts +9 -3
- package/dist/types/pm-plugins/doc.d.ts +9 -0
- package/dist/types-ts4.5/cardPluginType.d.ts +9 -3
- package/dist/types-ts4.5/pm-plugins/doc.d.ts +9 -0
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-card
|
|
2
2
|
|
|
3
|
+
## 16.6.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`a94026f1bcd86`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/a94026f1bcd86) -
|
|
8
|
+
[ux] fix: scope card queue to inserted range when inserting MAUI embed via Add to Doc
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- Updated dependencies
|
|
13
|
+
|
|
3
14
|
## 16.5.4
|
|
4
15
|
|
|
5
16
|
### Patch Changes
|
package/dist/cjs/cardPlugin.js
CHANGED
|
@@ -135,6 +135,19 @@ var cardPlugin = exports.cardPlugin = function cardPlugin(_ref) {
|
|
|
135
135
|
editorView: editorView
|
|
136
136
|
}));
|
|
137
137
|
},
|
|
138
|
+
commands: {
|
|
139
|
+
queueCardsFromRange: function queueCardsFromRange(from, to, source, analyticsAction, normalizeLinkText, sourceEvent, appearance) {
|
|
140
|
+
return function (_ref5) {
|
|
141
|
+
var tr = _ref5.tr;
|
|
142
|
+
return (0, _doc.queueCardsFromRange)(
|
|
143
|
+
// Synthesise the minimal EditorState shape the impl actually reads.
|
|
144
|
+
{
|
|
145
|
+
schema: tr.doc.type.schema,
|
|
146
|
+
selection: tr.selection
|
|
147
|
+
}, tr, from, to, source, analyticsAction, normalizeLinkText, sourceEvent, appearance);
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
},
|
|
138
151
|
actions: {
|
|
139
152
|
setProvider: function () {
|
|
140
153
|
var _setProvider2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(providerPromise) {
|
|
@@ -154,8 +167,8 @@ var cardPlugin = exports.cardPlugin = function cardPlugin(_ref) {
|
|
|
154
167
|
return _context.abrupt("return", false);
|
|
155
168
|
case 5:
|
|
156
169
|
previousCardProvider = provider;
|
|
157
|
-
return _context.abrupt("return", (_api$core$actions$exe = api === null || api === void 0 ? void 0 : api.core.actions.execute(function (
|
|
158
|
-
var tr =
|
|
170
|
+
return _context.abrupt("return", (_api$core$actions$exe = api === null || api === void 0 ? void 0 : api.core.actions.execute(function (_ref6) {
|
|
171
|
+
var tr = _ref6.tr;
|
|
159
172
|
return (0, _actions.setProvider)(provider)(tr);
|
|
160
173
|
})) !== null && _api$core$actions$exe !== void 0 ? _api$core$actions$exe : false);
|
|
161
174
|
case 7:
|
|
@@ -171,6 +184,7 @@ var cardPlugin = exports.cardPlugin = function cardPlugin(_ref) {
|
|
|
171
184
|
}(),
|
|
172
185
|
hideLinkToolbar: _actions.hideLinkToolbar,
|
|
173
186
|
queueCardsFromChangedTr: _doc.queueCardsFromChangedTr,
|
|
187
|
+
queueCardsFromRange: _doc.queueCardsFromRange,
|
|
174
188
|
registerEmbedCardTransformer: function registerEmbedCardTransformer(transformers) {
|
|
175
189
|
instanceEmbedCardTransformers = transformers;
|
|
176
190
|
},
|
|
@@ -262,8 +276,8 @@ var cardPlugin = exports.cardPlugin = function cardPlugin(_ref) {
|
|
|
262
276
|
},
|
|
263
277
|
pluginsOptions: {
|
|
264
278
|
floatingToolbar: (0, _toolbar.floatingToolbar)(options, (_options$lpLinkPicker = options.lpLinkPicker) !== null && _options$lpLinkPicker !== void 0 ? _options$lpLinkPicker : false, options.linkPicker, api, options.disableFloatingToolbar),
|
|
265
|
-
quickInsert: function quickInsert(
|
|
266
|
-
var formatMessage =
|
|
279
|
+
quickInsert: function quickInsert(_ref7) {
|
|
280
|
+
var formatMessage = _ref7.formatMessage;
|
|
267
281
|
var quickInsertArray = [];
|
|
268
282
|
if (!options.allowDatasource) {
|
|
269
283
|
return quickInsertArray;
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.updateCardViaDatasource = exports.updateCard = exports.setSelectedCardAppearance = exports.replaceQueuedUrlWithCard = exports.queueCardsFromChangedTr = exports.queueCardFromChangedTr = exports.insertDatasource = exports.handleFallbackWithAnalytics = exports.getLinkNodeType = exports.getAttrsForAppearance = exports.convertHyperlinkToSmartCard = exports.changeSelectedCardToText = exports.changeSelectedCardToLinkFallback = exports.changeSelectedCardToLink = void 0;
|
|
7
|
+
exports.updateCardViaDatasource = exports.updateCard = exports.setSelectedCardAppearance = exports.replaceQueuedUrlWithCard = exports.queueCardsFromRange = exports.queueCardsFromChangedTr = exports.queueCardFromChangedTr = exports.insertDatasource = exports.handleFallbackWithAnalytics = exports.getLinkNodeType = exports.getAttrsForAppearance = exports.convertHyperlinkToSmartCard = exports.changeSelectedCardToText = exports.changeSelectedCardToLinkFallback = exports.changeSelectedCardToLink = void 0;
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
9
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
10
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
@@ -199,6 +199,45 @@ var handleFallbackWithAnalytics = exports.handleFallbackWithAnalytics = function
|
|
|
199
199
|
return true;
|
|
200
200
|
};
|
|
201
201
|
};
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Shared options used by both `queueCardsFromChangedTr` and
|
|
205
|
+
* `queueCardsFromRange` to build smart-link resolution requests for text
|
|
206
|
+
* nodes carrying a `link` mark.
|
|
207
|
+
*/
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Per-node walker shared by `queueCardsFromChangedTr` and
|
|
211
|
+
* `queueCardsFromRange`. Pushes a smart-link resolution request for every
|
|
212
|
+
* text node carrying a qualifying `link` mark.
|
|
213
|
+
*
|
|
214
|
+
* Returning `true`/`false` follows the ProseMirror `nodesBetween`/
|
|
215
|
+
* `nodesBetweenChanged` walker contract: `true` to descend into children,
|
|
216
|
+
* `false` to skip subtree.
|
|
217
|
+
*/
|
|
218
|
+
var collectLinkRequest = function collectLinkRequest(requests, node, pos, options) {
|
|
219
|
+
if (!node.isText) {
|
|
220
|
+
return true;
|
|
221
|
+
}
|
|
222
|
+
var linkMark = node.marks.find(function (mark) {
|
|
223
|
+
return mark.type === options.linkMarkType;
|
|
224
|
+
});
|
|
225
|
+
if (linkMark) {
|
|
226
|
+
if (!(0, _shouldReplaceLink.shouldReplaceLink)(node, options.normalizeLinkText)) {
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
requests.push({
|
|
230
|
+
url: linkMark.attrs.href,
|
|
231
|
+
pos: pos,
|
|
232
|
+
appearance: options.appearance,
|
|
233
|
+
compareLinkText: options.normalizeLinkText,
|
|
234
|
+
source: options.source,
|
|
235
|
+
analyticsAction: options.analyticsAction,
|
|
236
|
+
sourceEvent: options.sourceEvent
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
return false;
|
|
240
|
+
};
|
|
202
241
|
var queueCardsFromChangedTr = exports.queueCardsFromChangedTr = function queueCardsFromChangedTr(state, tr, source, analyticsAction) {
|
|
203
242
|
var normalizeLinkText = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
|
|
204
243
|
var sourceEvent = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : undefined;
|
|
@@ -206,28 +245,16 @@ var queueCardsFromChangedTr = exports.queueCardsFromChangedTr = function queueCa
|
|
|
206
245
|
var schema = state.schema;
|
|
207
246
|
var link = schema.marks.link;
|
|
208
247
|
var requests = [];
|
|
248
|
+
var options = {
|
|
249
|
+
analyticsAction: analyticsAction,
|
|
250
|
+
appearance: appearance,
|
|
251
|
+
linkMarkType: link,
|
|
252
|
+
normalizeLinkText: normalizeLinkText,
|
|
253
|
+
source: source,
|
|
254
|
+
sourceEvent: sourceEvent
|
|
255
|
+
};
|
|
209
256
|
(0, _utils.nodesBetweenChanged)(tr, function (node, pos) {
|
|
210
|
-
|
|
211
|
-
return true;
|
|
212
|
-
}
|
|
213
|
-
var linkMark = node.marks.find(function (mark) {
|
|
214
|
-
return mark.type === link;
|
|
215
|
-
});
|
|
216
|
-
if (linkMark) {
|
|
217
|
-
if (!(0, _shouldReplaceLink.shouldReplaceLink)(node, normalizeLinkText)) {
|
|
218
|
-
return false;
|
|
219
|
-
}
|
|
220
|
-
requests.push({
|
|
221
|
-
url: linkMark.attrs.href,
|
|
222
|
-
pos: pos,
|
|
223
|
-
appearance: appearance,
|
|
224
|
-
compareLinkText: normalizeLinkText,
|
|
225
|
-
source: source,
|
|
226
|
-
analyticsAction: analyticsAction,
|
|
227
|
-
sourceEvent: sourceEvent
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
return false;
|
|
257
|
+
return collectLinkRequest(requests, node, pos, options);
|
|
231
258
|
});
|
|
232
259
|
if (analyticsAction) {
|
|
233
260
|
(0, _card.addLinkMetadata)(state.selection, tr, {
|
|
@@ -236,6 +263,44 @@ var queueCardsFromChangedTr = exports.queueCardsFromChangedTr = function queueCa
|
|
|
236
263
|
}
|
|
237
264
|
return (0, _actions.queueCards)(requests)(tr);
|
|
238
265
|
};
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Queue link-mark → smart-link resolution for text nodes within an explicit
|
|
269
|
+
* document range, rather than the entire step range of the transaction.
|
|
270
|
+
*
|
|
271
|
+
* Use this instead of `queueCardsFromChangedTr` when you know the exact range
|
|
272
|
+
* that was inserted/modified and want to avoid accidentally queuing pre-existing
|
|
273
|
+
* links that happen to fall within the broader step range.
|
|
274
|
+
*/
|
|
275
|
+
var queueCardsFromRange = exports.queueCardsFromRange = function queueCardsFromRange(state, tr, from, to, source, analyticsAction) {
|
|
276
|
+
var normalizeLinkText = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : true;
|
|
277
|
+
var sourceEvent = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : undefined;
|
|
278
|
+
var appearance = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 'inline';
|
|
279
|
+
var schema = state.schema;
|
|
280
|
+
var link = schema.marks.link;
|
|
281
|
+
var requests = [];
|
|
282
|
+
var options = {
|
|
283
|
+
analyticsAction: analyticsAction,
|
|
284
|
+
appearance: appearance,
|
|
285
|
+
linkMarkType: link,
|
|
286
|
+
normalizeLinkText: normalizeLinkText,
|
|
287
|
+
source: source,
|
|
288
|
+
sourceEvent: sourceEvent
|
|
289
|
+
};
|
|
290
|
+
var clampedFrom = Math.max(0, from);
|
|
291
|
+
var clampedTo = Math.min(tr.doc.content.size, to);
|
|
292
|
+
if (clampedFrom < clampedTo) {
|
|
293
|
+
tr.doc.nodesBetween(clampedFrom, clampedTo, function (node, pos) {
|
|
294
|
+
return collectLinkRequest(requests, node, pos, options);
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
if (analyticsAction) {
|
|
298
|
+
(0, _card.addLinkMetadata)(state.selection, tr, {
|
|
299
|
+
action: analyticsAction
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
return (0, _actions.queueCards)(requests)(tr);
|
|
303
|
+
};
|
|
239
304
|
var queueCardFromChangedTr = exports.queueCardFromChangedTr = function queueCardFromChangedTr(state, tr, source, analyticsAction) {
|
|
240
305
|
var normalizeLinkText = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
|
|
241
306
|
var sourceEvent = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : undefined;
|
|
@@ -8,7 +8,7 @@ import { blockCardSpecWithFixedToDOM } from './nodeviews/toDOM-fixes/blockCard';
|
|
|
8
8
|
import { embedCardSpecWithFixedToDOM } from './nodeviews/toDOM-fixes/embedCard';
|
|
9
9
|
import { inlineCardSpecWithFixedToDOM } from './nodeviews/toDOM-fixes/inlineCard';
|
|
10
10
|
import { hideLinkToolbar, setProvider, showDatasourceModal } from './pm-plugins/actions';
|
|
11
|
-
import { queueCardsFromChangedTr } from './pm-plugins/doc';
|
|
11
|
+
import { queueCardsFromChangedTr, queueCardsFromRange } from './pm-plugins/doc';
|
|
12
12
|
import { cardKeymap } from './pm-plugins/keymap';
|
|
13
13
|
import { createPlugin } from './pm-plugins/main';
|
|
14
14
|
import { pluginKey } from './pm-plugins/plugin-key';
|
|
@@ -133,6 +133,16 @@ export const cardPlugin = ({
|
|
|
133
133
|
editorView: editorView
|
|
134
134
|
}));
|
|
135
135
|
},
|
|
136
|
+
commands: {
|
|
137
|
+
queueCardsFromRange: (from, to, source, analyticsAction, normalizeLinkText, sourceEvent, appearance) => ({
|
|
138
|
+
tr
|
|
139
|
+
}) => queueCardsFromRange(
|
|
140
|
+
// Synthesise the minimal EditorState shape the impl actually reads.
|
|
141
|
+
{
|
|
142
|
+
schema: tr.doc.type.schema,
|
|
143
|
+
selection: tr.selection
|
|
144
|
+
}, tr, from, to, source, analyticsAction, normalizeLinkText, sourceEvent, appearance)
|
|
145
|
+
},
|
|
136
146
|
actions: {
|
|
137
147
|
setProvider: async providerPromise => {
|
|
138
148
|
var _api$core$actions$exe;
|
|
@@ -148,6 +158,7 @@ export const cardPlugin = ({
|
|
|
148
158
|
},
|
|
149
159
|
hideLinkToolbar,
|
|
150
160
|
queueCardsFromChangedTr,
|
|
161
|
+
queueCardsFromRange,
|
|
151
162
|
registerEmbedCardTransformer: transformers => {
|
|
152
163
|
instanceEmbedCardTransformers = transformers;
|
|
153
164
|
},
|
|
@@ -176,6 +176,43 @@ export const handleFallbackWithAnalytics = (request, editorAnalyticsApi) => (sta
|
|
|
176
176
|
}
|
|
177
177
|
return true;
|
|
178
178
|
};
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Shared options used by both `queueCardsFromChangedTr` and
|
|
182
|
+
* `queueCardsFromRange` to build smart-link resolution requests for text
|
|
183
|
+
* nodes carrying a `link` mark.
|
|
184
|
+
*/
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Per-node walker shared by `queueCardsFromChangedTr` and
|
|
188
|
+
* `queueCardsFromRange`. Pushes a smart-link resolution request for every
|
|
189
|
+
* text node carrying a qualifying `link` mark.
|
|
190
|
+
*
|
|
191
|
+
* Returning `true`/`false` follows the ProseMirror `nodesBetween`/
|
|
192
|
+
* `nodesBetweenChanged` walker contract: `true` to descend into children,
|
|
193
|
+
* `false` to skip subtree.
|
|
194
|
+
*/
|
|
195
|
+
const collectLinkRequest = (requests, node, pos, options) => {
|
|
196
|
+
if (!node.isText) {
|
|
197
|
+
return true;
|
|
198
|
+
}
|
|
199
|
+
const linkMark = node.marks.find(mark => mark.type === options.linkMarkType);
|
|
200
|
+
if (linkMark) {
|
|
201
|
+
if (!shouldReplaceLink(node, options.normalizeLinkText)) {
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
requests.push({
|
|
205
|
+
url: linkMark.attrs.href,
|
|
206
|
+
pos,
|
|
207
|
+
appearance: options.appearance,
|
|
208
|
+
compareLinkText: options.normalizeLinkText,
|
|
209
|
+
source: options.source,
|
|
210
|
+
analyticsAction: options.analyticsAction,
|
|
211
|
+
sourceEvent: options.sourceEvent
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
return false;
|
|
215
|
+
};
|
|
179
216
|
export const queueCardsFromChangedTr = (state, tr, source, analyticsAction, normalizeLinkText = true, sourceEvent = undefined, appearance = 'inline') => {
|
|
180
217
|
const {
|
|
181
218
|
schema
|
|
@@ -184,27 +221,52 @@ export const queueCardsFromChangedTr = (state, tr, source, analyticsAction, norm
|
|
|
184
221
|
link
|
|
185
222
|
} = schema.marks;
|
|
186
223
|
const requests = [];
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
224
|
+
const options = {
|
|
225
|
+
analyticsAction,
|
|
226
|
+
appearance,
|
|
227
|
+
linkMarkType: link,
|
|
228
|
+
normalizeLinkText,
|
|
229
|
+
source,
|
|
230
|
+
sourceEvent
|
|
231
|
+
};
|
|
232
|
+
nodesBetweenChanged(tr, (node, pos) => collectLinkRequest(requests, node, pos, options));
|
|
233
|
+
if (analyticsAction) {
|
|
234
|
+
addLinkMetadata(state.selection, tr, {
|
|
235
|
+
action: analyticsAction
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
return queueCards(requests)(tr);
|
|
239
|
+
};
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Queue link-mark → smart-link resolution for text nodes within an explicit
|
|
243
|
+
* document range, rather than the entire step range of the transaction.
|
|
244
|
+
*
|
|
245
|
+
* Use this instead of `queueCardsFromChangedTr` when you know the exact range
|
|
246
|
+
* that was inserted/modified and want to avoid accidentally queuing pre-existing
|
|
247
|
+
* links that happen to fall within the broader step range.
|
|
248
|
+
*/
|
|
249
|
+
export const queueCardsFromRange = (state, tr, from, to, source, analyticsAction, normalizeLinkText = true, sourceEvent = undefined, appearance = 'inline') => {
|
|
250
|
+
const {
|
|
251
|
+
schema
|
|
252
|
+
} = state;
|
|
253
|
+
const {
|
|
254
|
+
link
|
|
255
|
+
} = schema.marks;
|
|
256
|
+
const requests = [];
|
|
257
|
+
const options = {
|
|
258
|
+
analyticsAction,
|
|
259
|
+
appearance,
|
|
260
|
+
linkMarkType: link,
|
|
261
|
+
normalizeLinkText,
|
|
262
|
+
source,
|
|
263
|
+
sourceEvent
|
|
264
|
+
};
|
|
265
|
+
const clampedFrom = Math.max(0, from);
|
|
266
|
+
const clampedTo = Math.min(tr.doc.content.size, to);
|
|
267
|
+
if (clampedFrom < clampedTo) {
|
|
268
|
+
tr.doc.nodesBetween(clampedFrom, clampedTo, (node, pos) => collectLinkRequest(requests, node, pos, options));
|
|
269
|
+
}
|
|
208
270
|
if (analyticsAction) {
|
|
209
271
|
addLinkMetadata(state.selection, tr, {
|
|
210
272
|
action: analyticsAction
|
package/dist/esm/cardPlugin.js
CHANGED
|
@@ -14,7 +14,7 @@ import { blockCardSpecWithFixedToDOM } from './nodeviews/toDOM-fixes/blockCard';
|
|
|
14
14
|
import { embedCardSpecWithFixedToDOM } from './nodeviews/toDOM-fixes/embedCard';
|
|
15
15
|
import { inlineCardSpecWithFixedToDOM } from './nodeviews/toDOM-fixes/inlineCard';
|
|
16
16
|
import { hideLinkToolbar, setProvider as _setProvider, showDatasourceModal } from './pm-plugins/actions';
|
|
17
|
-
import { queueCardsFromChangedTr } from './pm-plugins/doc';
|
|
17
|
+
import { queueCardsFromChangedTr, queueCardsFromRange as _queueCardsFromRange } from './pm-plugins/doc';
|
|
18
18
|
import { cardKeymap } from './pm-plugins/keymap';
|
|
19
19
|
import { createPlugin } from './pm-plugins/main';
|
|
20
20
|
import { pluginKey } from './pm-plugins/plugin-key';
|
|
@@ -129,6 +129,19 @@ export var cardPlugin = function cardPlugin(_ref) {
|
|
|
129
129
|
editorView: editorView
|
|
130
130
|
}));
|
|
131
131
|
},
|
|
132
|
+
commands: {
|
|
133
|
+
queueCardsFromRange: function queueCardsFromRange(from, to, source, analyticsAction, normalizeLinkText, sourceEvent, appearance) {
|
|
134
|
+
return function (_ref5) {
|
|
135
|
+
var tr = _ref5.tr;
|
|
136
|
+
return _queueCardsFromRange(
|
|
137
|
+
// Synthesise the minimal EditorState shape the impl actually reads.
|
|
138
|
+
{
|
|
139
|
+
schema: tr.doc.type.schema,
|
|
140
|
+
selection: tr.selection
|
|
141
|
+
}, tr, from, to, source, analyticsAction, normalizeLinkText, sourceEvent, appearance);
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
},
|
|
132
145
|
actions: {
|
|
133
146
|
setProvider: function () {
|
|
134
147
|
var _setProvider2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(providerPromise) {
|
|
@@ -148,8 +161,8 @@ export var cardPlugin = function cardPlugin(_ref) {
|
|
|
148
161
|
return _context.abrupt("return", false);
|
|
149
162
|
case 5:
|
|
150
163
|
previousCardProvider = provider;
|
|
151
|
-
return _context.abrupt("return", (_api$core$actions$exe = api === null || api === void 0 ? void 0 : api.core.actions.execute(function (
|
|
152
|
-
var tr =
|
|
164
|
+
return _context.abrupt("return", (_api$core$actions$exe = api === null || api === void 0 ? void 0 : api.core.actions.execute(function (_ref6) {
|
|
165
|
+
var tr = _ref6.tr;
|
|
153
166
|
return _setProvider(provider)(tr);
|
|
154
167
|
})) !== null && _api$core$actions$exe !== void 0 ? _api$core$actions$exe : false);
|
|
155
168
|
case 7:
|
|
@@ -165,6 +178,7 @@ export var cardPlugin = function cardPlugin(_ref) {
|
|
|
165
178
|
}(),
|
|
166
179
|
hideLinkToolbar: hideLinkToolbar,
|
|
167
180
|
queueCardsFromChangedTr: queueCardsFromChangedTr,
|
|
181
|
+
queueCardsFromRange: _queueCardsFromRange,
|
|
168
182
|
registerEmbedCardTransformer: function registerEmbedCardTransformer(transformers) {
|
|
169
183
|
instanceEmbedCardTransformers = transformers;
|
|
170
184
|
},
|
|
@@ -256,8 +270,8 @@ export var cardPlugin = function cardPlugin(_ref) {
|
|
|
256
270
|
},
|
|
257
271
|
pluginsOptions: {
|
|
258
272
|
floatingToolbar: floatingToolbar(options, (_options$lpLinkPicker = options.lpLinkPicker) !== null && _options$lpLinkPicker !== void 0 ? _options$lpLinkPicker : false, options.linkPicker, api, options.disableFloatingToolbar),
|
|
259
|
-
quickInsert: function quickInsert(
|
|
260
|
-
var formatMessage =
|
|
273
|
+
quickInsert: function quickInsert(_ref7) {
|
|
274
|
+
var formatMessage = _ref7.formatMessage;
|
|
261
275
|
var quickInsertArray = [];
|
|
262
276
|
if (!options.allowDatasource) {
|
|
263
277
|
return quickInsertArray;
|
|
@@ -193,6 +193,45 @@ export var handleFallbackWithAnalytics = function handleFallbackWithAnalytics(re
|
|
|
193
193
|
return true;
|
|
194
194
|
};
|
|
195
195
|
};
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Shared options used by both `queueCardsFromChangedTr` and
|
|
199
|
+
* `queueCardsFromRange` to build smart-link resolution requests for text
|
|
200
|
+
* nodes carrying a `link` mark.
|
|
201
|
+
*/
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Per-node walker shared by `queueCardsFromChangedTr` and
|
|
205
|
+
* `queueCardsFromRange`. Pushes a smart-link resolution request for every
|
|
206
|
+
* text node carrying a qualifying `link` mark.
|
|
207
|
+
*
|
|
208
|
+
* Returning `true`/`false` follows the ProseMirror `nodesBetween`/
|
|
209
|
+
* `nodesBetweenChanged` walker contract: `true` to descend into children,
|
|
210
|
+
* `false` to skip subtree.
|
|
211
|
+
*/
|
|
212
|
+
var collectLinkRequest = function collectLinkRequest(requests, node, pos, options) {
|
|
213
|
+
if (!node.isText) {
|
|
214
|
+
return true;
|
|
215
|
+
}
|
|
216
|
+
var linkMark = node.marks.find(function (mark) {
|
|
217
|
+
return mark.type === options.linkMarkType;
|
|
218
|
+
});
|
|
219
|
+
if (linkMark) {
|
|
220
|
+
if (!shouldReplaceLink(node, options.normalizeLinkText)) {
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
requests.push({
|
|
224
|
+
url: linkMark.attrs.href,
|
|
225
|
+
pos: pos,
|
|
226
|
+
appearance: options.appearance,
|
|
227
|
+
compareLinkText: options.normalizeLinkText,
|
|
228
|
+
source: options.source,
|
|
229
|
+
analyticsAction: options.analyticsAction,
|
|
230
|
+
sourceEvent: options.sourceEvent
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
return false;
|
|
234
|
+
};
|
|
196
235
|
export var queueCardsFromChangedTr = function queueCardsFromChangedTr(state, tr, source, analyticsAction) {
|
|
197
236
|
var normalizeLinkText = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
|
|
198
237
|
var sourceEvent = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : undefined;
|
|
@@ -200,28 +239,16 @@ export var queueCardsFromChangedTr = function queueCardsFromChangedTr(state, tr,
|
|
|
200
239
|
var schema = state.schema;
|
|
201
240
|
var link = schema.marks.link;
|
|
202
241
|
var requests = [];
|
|
242
|
+
var options = {
|
|
243
|
+
analyticsAction: analyticsAction,
|
|
244
|
+
appearance: appearance,
|
|
245
|
+
linkMarkType: link,
|
|
246
|
+
normalizeLinkText: normalizeLinkText,
|
|
247
|
+
source: source,
|
|
248
|
+
sourceEvent: sourceEvent
|
|
249
|
+
};
|
|
203
250
|
nodesBetweenChanged(tr, function (node, pos) {
|
|
204
|
-
|
|
205
|
-
return true;
|
|
206
|
-
}
|
|
207
|
-
var linkMark = node.marks.find(function (mark) {
|
|
208
|
-
return mark.type === link;
|
|
209
|
-
});
|
|
210
|
-
if (linkMark) {
|
|
211
|
-
if (!shouldReplaceLink(node, normalizeLinkText)) {
|
|
212
|
-
return false;
|
|
213
|
-
}
|
|
214
|
-
requests.push({
|
|
215
|
-
url: linkMark.attrs.href,
|
|
216
|
-
pos: pos,
|
|
217
|
-
appearance: appearance,
|
|
218
|
-
compareLinkText: normalizeLinkText,
|
|
219
|
-
source: source,
|
|
220
|
-
analyticsAction: analyticsAction,
|
|
221
|
-
sourceEvent: sourceEvent
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
return false;
|
|
251
|
+
return collectLinkRequest(requests, node, pos, options);
|
|
225
252
|
});
|
|
226
253
|
if (analyticsAction) {
|
|
227
254
|
addLinkMetadata(state.selection, tr, {
|
|
@@ -230,6 +257,44 @@ export var queueCardsFromChangedTr = function queueCardsFromChangedTr(state, tr,
|
|
|
230
257
|
}
|
|
231
258
|
return queueCards(requests)(tr);
|
|
232
259
|
};
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Queue link-mark → smart-link resolution for text nodes within an explicit
|
|
263
|
+
* document range, rather than the entire step range of the transaction.
|
|
264
|
+
*
|
|
265
|
+
* Use this instead of `queueCardsFromChangedTr` when you know the exact range
|
|
266
|
+
* that was inserted/modified and want to avoid accidentally queuing pre-existing
|
|
267
|
+
* links that happen to fall within the broader step range.
|
|
268
|
+
*/
|
|
269
|
+
export var queueCardsFromRange = function queueCardsFromRange(state, tr, from, to, source, analyticsAction) {
|
|
270
|
+
var normalizeLinkText = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : true;
|
|
271
|
+
var sourceEvent = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : undefined;
|
|
272
|
+
var appearance = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 'inline';
|
|
273
|
+
var schema = state.schema;
|
|
274
|
+
var link = schema.marks.link;
|
|
275
|
+
var requests = [];
|
|
276
|
+
var options = {
|
|
277
|
+
analyticsAction: analyticsAction,
|
|
278
|
+
appearance: appearance,
|
|
279
|
+
linkMarkType: link,
|
|
280
|
+
normalizeLinkText: normalizeLinkText,
|
|
281
|
+
source: source,
|
|
282
|
+
sourceEvent: sourceEvent
|
|
283
|
+
};
|
|
284
|
+
var clampedFrom = Math.max(0, from);
|
|
285
|
+
var clampedTo = Math.min(tr.doc.content.size, to);
|
|
286
|
+
if (clampedFrom < clampedTo) {
|
|
287
|
+
tr.doc.nodesBetween(clampedFrom, clampedTo, function (node, pos) {
|
|
288
|
+
return collectLinkRequest(requests, node, pos, options);
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
if (analyticsAction) {
|
|
292
|
+
addLinkMetadata(state.selection, tr, {
|
|
293
|
+
action: analyticsAction
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
return queueCards(requests)(tr);
|
|
297
|
+
};
|
|
233
298
|
export var queueCardFromChangedTr = function queueCardFromChangedTr(state, tr, source, analyticsAction) {
|
|
234
299
|
var normalizeLinkText = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
|
|
235
300
|
var sourceEvent = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : undefined;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
1
|
+
import type { UIAnalyticsEvent } from '@atlaskit/analytics-next';
|
|
2
|
+
import type { ACTION, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
|
|
3
|
+
import type { CardPluginActions, CardReplacementInputMethod } from '@atlaskit/editor-common/card';
|
|
4
|
+
import type { CardAppearance } from '@atlaskit/editor-common/provider-factory';
|
|
5
|
+
import type { Command, EditorCommand, NextEditorPlugin, OptionalPlugin } from '@atlaskit/editor-common/types';
|
|
4
6
|
import type { AnalyticsPlugin } from '@atlaskit/editor-plugin-analytics';
|
|
5
7
|
import type { InlineCommentPluginState } from '@atlaskit/editor-plugin-annotation';
|
|
6
8
|
import type { BasePlugin } from '@atlaskit/editor-plugin-base';
|
|
@@ -38,6 +40,10 @@ export type CardPluginDependencies = [
|
|
|
38
40
|
];
|
|
39
41
|
export type CardPlugin = NextEditorPlugin<'card', {
|
|
40
42
|
actions: CardPluginActions;
|
|
43
|
+
commands: {
|
|
44
|
+
/** EditorCommand form of `queueCardsFromRange`. Prefer over the action. */
|
|
45
|
+
queueCardsFromRange: (from: number, to: number, source: CardReplacementInputMethod, analyticsAction?: ACTION, normalizeLinkText?: boolean, sourceEvent?: UIAnalyticsEvent | null, appearance?: CardAppearance) => EditorCommand;
|
|
46
|
+
};
|
|
41
47
|
dependencies: CardPluginDependencies;
|
|
42
48
|
pluginConfiguration: CardPluginOptions | undefined;
|
|
43
49
|
sharedState: CardPluginState | null;
|
|
@@ -12,6 +12,15 @@ import type { Request } from '../types';
|
|
|
12
12
|
export declare const replaceQueuedUrlWithCard: (url: string, cardData: CardAdf | DatasourceAdf, analyticsAction?: ACTION, editorAnalyticsApi?: EditorAnalyticsAPI, createAnalyticsEvent?: CreateUIAnalyticsEvent, embedCardNodeTransformer?: EmbedCardNodeTransformer) => Command;
|
|
13
13
|
export declare const handleFallbackWithAnalytics: (request: Request, editorAnalyticsApi: EditorAnalyticsAPI | undefined) => Command;
|
|
14
14
|
export declare const queueCardsFromChangedTr: (state: EditorState, tr: Transaction, source: CardReplacementInputMethod, analyticsAction?: ACTION, normalizeLinkText?: boolean, sourceEvent?: UIAnalyticsEvent | null | undefined, appearance?: CardAppearance) => Transaction;
|
|
15
|
+
/**
|
|
16
|
+
* Queue link-mark → smart-link resolution for text nodes within an explicit
|
|
17
|
+
* document range, rather than the entire step range of the transaction.
|
|
18
|
+
*
|
|
19
|
+
* Use this instead of `queueCardsFromChangedTr` when you know the exact range
|
|
20
|
+
* that was inserted/modified and want to avoid accidentally queuing pre-existing
|
|
21
|
+
* links that happen to fall within the broader step range.
|
|
22
|
+
*/
|
|
23
|
+
export declare const queueCardsFromRange: (state: EditorState, tr: Transaction, from: number, to: number, source: CardReplacementInputMethod, analyticsAction?: ACTION, normalizeLinkText?: boolean, sourceEvent?: UIAnalyticsEvent | null | undefined, appearance?: CardAppearance) => Transaction;
|
|
15
24
|
export declare const queueCardFromChangedTr: (state: EditorState, tr: Transaction, source: CardReplacementInputMethod, analyticsAction: ACTION, normalizeLinkText?: boolean, sourceEvent?: UIAnalyticsEvent | null | undefined, previousAppearance?: CardAppearance | "url") => Transaction;
|
|
16
25
|
export declare const convertHyperlinkToSmartCard: (state: EditorState, source: CardReplacementInputMethod, appearance: CardAppearance, normalizeLinkText?: boolean) => Transaction;
|
|
17
26
|
export declare const changeSelectedCardToLink: (text?: string, href?: string, sendAnalytics?: boolean, node?: Node, pos?: number, editorAnalyticsApi?: EditorAnalyticsAPI) => Command;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
1
|
+
import type { UIAnalyticsEvent } from '@atlaskit/analytics-next';
|
|
2
|
+
import type { ACTION, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
|
|
3
|
+
import type { CardPluginActions, CardReplacementInputMethod } from '@atlaskit/editor-common/card';
|
|
4
|
+
import type { CardAppearance } from '@atlaskit/editor-common/provider-factory';
|
|
5
|
+
import type { Command, EditorCommand, NextEditorPlugin, OptionalPlugin } from '@atlaskit/editor-common/types';
|
|
4
6
|
import type { AnalyticsPlugin } from '@atlaskit/editor-plugin-analytics';
|
|
5
7
|
import type { InlineCommentPluginState } from '@atlaskit/editor-plugin-annotation';
|
|
6
8
|
import type { BasePlugin } from '@atlaskit/editor-plugin-base';
|
|
@@ -38,6 +40,10 @@ export type CardPluginDependencies = [
|
|
|
38
40
|
];
|
|
39
41
|
export type CardPlugin = NextEditorPlugin<'card', {
|
|
40
42
|
actions: CardPluginActions;
|
|
43
|
+
commands: {
|
|
44
|
+
/** EditorCommand form of `queueCardsFromRange`. Prefer over the action. */
|
|
45
|
+
queueCardsFromRange: (from: number, to: number, source: CardReplacementInputMethod, analyticsAction?: ACTION, normalizeLinkText?: boolean, sourceEvent?: UIAnalyticsEvent | null, appearance?: CardAppearance) => EditorCommand;
|
|
46
|
+
};
|
|
41
47
|
dependencies: CardPluginDependencies;
|
|
42
48
|
pluginConfiguration: CardPluginOptions | undefined;
|
|
43
49
|
sharedState: CardPluginState | null;
|
|
@@ -12,6 +12,15 @@ import type { Request } from '../types';
|
|
|
12
12
|
export declare const replaceQueuedUrlWithCard: (url: string, cardData: CardAdf | DatasourceAdf, analyticsAction?: ACTION, editorAnalyticsApi?: EditorAnalyticsAPI, createAnalyticsEvent?: CreateUIAnalyticsEvent, embedCardNodeTransformer?: EmbedCardNodeTransformer) => Command;
|
|
13
13
|
export declare const handleFallbackWithAnalytics: (request: Request, editorAnalyticsApi: EditorAnalyticsAPI | undefined) => Command;
|
|
14
14
|
export declare const queueCardsFromChangedTr: (state: EditorState, tr: Transaction, source: CardReplacementInputMethod, analyticsAction?: ACTION, normalizeLinkText?: boolean, sourceEvent?: UIAnalyticsEvent | null | undefined, appearance?: CardAppearance) => Transaction;
|
|
15
|
+
/**
|
|
16
|
+
* Queue link-mark → smart-link resolution for text nodes within an explicit
|
|
17
|
+
* document range, rather than the entire step range of the transaction.
|
|
18
|
+
*
|
|
19
|
+
* Use this instead of `queueCardsFromChangedTr` when you know the exact range
|
|
20
|
+
* that was inserted/modified and want to avoid accidentally queuing pre-existing
|
|
21
|
+
* links that happen to fall within the broader step range.
|
|
22
|
+
*/
|
|
23
|
+
export declare const queueCardsFromRange: (state: EditorState, tr: Transaction, from: number, to: number, source: CardReplacementInputMethod, analyticsAction?: ACTION, normalizeLinkText?: boolean, sourceEvent?: UIAnalyticsEvent | null | undefined, appearance?: CardAppearance) => Transaction;
|
|
15
24
|
export declare const queueCardFromChangedTr: (state: EditorState, tr: Transaction, source: CardReplacementInputMethod, analyticsAction: ACTION, normalizeLinkText?: boolean, sourceEvent?: UIAnalyticsEvent | null | undefined, previousAppearance?: CardAppearance | "url") => Transaction;
|
|
16
25
|
export declare const convertHyperlinkToSmartCard: (state: EditorState, source: CardReplacementInputMethod, appearance: CardAppearance, normalizeLinkText?: boolean) => Transaction;
|
|
17
26
|
export declare const changeSelectedCardToLink: (text?: string, href?: string, sendAnalytics?: boolean, node?: Node, pos?: number, editorAnalyticsApi?: EditorAnalyticsAPI) => Command;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/editor-plugin-card",
|
|
3
|
-
"version": "16.
|
|
3
|
+
"version": "16.6.0",
|
|
4
4
|
"description": "Card plugin for @atlaskit/editor-core",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
],
|
|
30
30
|
"atlaskit:src": "src/index.ts",
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@atlaskit/adf-schema": "^52.
|
|
32
|
+
"@atlaskit/adf-schema": "^52.11.0",
|
|
33
33
|
"@atlaskit/analytics-next": "^11.2.0",
|
|
34
34
|
"@atlaskit/custom-steps": "^0.16.0",
|
|
35
35
|
"@atlaskit/editor-card-provider": "^6.7.0",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"@atlaskit/primitives": "^19.0.0",
|
|
63
63
|
"@atlaskit/prosemirror-history": "^0.2.0",
|
|
64
64
|
"@atlaskit/smart-card": "^44.9.0",
|
|
65
|
-
"@atlaskit/tmp-editor-statsig": "^
|
|
65
|
+
"@atlaskit/tmp-editor-statsig": "^79.0.0",
|
|
66
66
|
"@atlaskit/tokens": "^13.0.0",
|
|
67
67
|
"@babel/runtime": "^7.0.0",
|
|
68
68
|
"@emotion/react": "^11.7.1",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"uuid": "^3.1.0"
|
|
73
73
|
},
|
|
74
74
|
"peerDependencies": {
|
|
75
|
-
"@atlaskit/editor-common": "^114.
|
|
75
|
+
"@atlaskit/editor-common": "^114.29.0",
|
|
76
76
|
"@atlaskit/link-provider": "^4.4.0",
|
|
77
77
|
"react": "^18.2.0",
|
|
78
78
|
"react-intl": "^5.25.1 || ^6.0.0 || ^7.0.0"
|