Files
sgauthier 6e64e138e2
All checks were successful
Publish To Prod / deploy_and_publish (push) Successful in 35s
planning
2024-10-14 09:15:30 +02:00

55 lines
1.3 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
function Link({
type
}) {
return {
commands: {
toggleLink(editor, getUrl) {
const selection = editor.value.selection;
const isCollapsed = selection && selection.isCollapsed;
if (editor.hasInline(type)) {
const inlines = editor.value.inlines.toJSON();
const link = inlines.find(item => item.type === type);
const url = getUrl(link.data.url);
if (url) {
// replace the old link
return editor.setInlines({
data: {
url
}
});
} else {
// remove url if it was removed by the user
return editor.unwrapInline(type);
}
} else {
const url = getUrl();
if (!url) {
return;
}
return isCollapsed ? editor.insertInline({
type,
data: {
url
},
nodes: [{
object: 'text',
text: url
}]
}) : editor.wrapInline({
type,
data: {
url
}
}).moveToEnd();
}
}
}
};
}
var _default = exports.default = Link;