@limetech/lime-elements 37.73.0 → 37.74.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 +8 -0
- package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +53 -36
- package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js.map +1 -1
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/create-html-inserter.js +11 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/create-html-inserter.js.map +1 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/factory.js +8 -8
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/factory.js.map +1 -1
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/inserter.js +35 -27
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/inserter.js.map +1 -1
- package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js +1 -1
- package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js.map +1 -1
- package/dist/collection/components/text-editor/text-editor.types.js.map +1 -1
- package/dist/esm/limel-prosemirror-adapter.entry.js +53 -36
- package/dist/esm/limel-prosemirror-adapter.entry.js.map +1 -1
- package/dist/lime-elements/lime-elements.esm.js +1 -1
- package/dist/lime-elements/{p-830d655c.entry.js → p-e83e845a.entry.js} +2 -2
- package/dist/lime-elements/p-e83e845a.entry.js.map +1 -0
- package/dist/types/components/text-editor/prosemirror-adapter/plugins/trigger/create-html-inserter.d.ts +5 -0
- package/dist/types/components/text-editor/prosemirror-adapter/plugins/trigger/factory.d.ts +2 -1
- package/dist/types/components/text-editor/prosemirror-adapter/plugins/trigger/inserter.d.ts +2 -1
- package/dist/types/components/text-editor/text-editor.types.d.ts +4 -1
- package/package.json +1 -1
- package/dist/lime-elements/p-830d655c.entry.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
## [37.74.0](https://github.com/Lundalogik/lime-elements/compare/v37.73.0...v37.74.0) (2024-12-04)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
* **text-editor:** add insertHtml function to properly parse html string ([be1b234](https://github.com/Lundalogik/lime-elements/commit/be1b2348fa250f0d6bef2fec3de6a294161a02a1))
|
|
8
|
+
|
|
1
9
|
## [37.73.0](https://github.com/Lundalogik/lime-elements/compare/v37.72.3...v37.73.0) (2024-12-04)
|
|
2
10
|
|
|
3
11
|
|
|
@@ -26125,36 +26125,53 @@ const createNodeSpec = (config) => {
|
|
|
26125
26125
|
};
|
|
26126
26126
|
};
|
|
26127
26127
|
|
|
26128
|
-
const
|
|
26128
|
+
const createHtmlInserter = (view, contentConverter, startPos, dispatchTransaction) => {
|
|
26129
|
+
const schema = view.state.schema;
|
|
26130
|
+
return async (input) => {
|
|
26131
|
+
const container = document.createElement('span');
|
|
26132
|
+
container.innerHTML = await contentConverter.parseAsHTML(input, schema);
|
|
26133
|
+
const fragment = DOMParser.fromSchema(schema).parse(container).content;
|
|
26134
|
+
dispatchTransaction(view, startPos, fragment);
|
|
26135
|
+
};
|
|
26136
|
+
};
|
|
26137
|
+
|
|
26138
|
+
const inserterFactory = (view, contentConverter) => {
|
|
26129
26139
|
const startPos = getTriggerStartPosition(view);
|
|
26130
26140
|
return {
|
|
26131
|
-
insert: (
|
|
26132
|
-
|
|
26133
|
-
|
|
26134
|
-
const { $from } = selection;
|
|
26135
|
-
let node;
|
|
26136
|
-
try {
|
|
26137
|
-
node = createNode(input, schema);
|
|
26138
|
-
}
|
|
26139
|
-
catch (error) {
|
|
26140
|
-
// eslint-disable-next-line no-console
|
|
26141
|
-
console.error(error.message);
|
|
26142
|
-
return;
|
|
26143
|
-
}
|
|
26144
|
-
const spaceNode = schema.text(' ');
|
|
26145
|
-
const fragment = schema.nodes.doc.create(null, [node, spaceNode]);
|
|
26146
|
-
const transaction = state.tr.replaceWith(startPos, $from.pos, fragment);
|
|
26147
|
-
transaction.setMeta('stopTrigger', true);
|
|
26148
|
-
dispatch(transaction);
|
|
26149
|
-
},
|
|
26150
|
-
stopTrigger: () => {
|
|
26151
|
-
const { state, dispatch } = view;
|
|
26152
|
-
const transaction = state.tr;
|
|
26153
|
-
transaction.setMeta('stopTrigger', true);
|
|
26154
|
-
dispatch(transaction);
|
|
26155
|
-
},
|
|
26141
|
+
insert: createNodeAndTextInserter(view, startPos),
|
|
26142
|
+
insertHtml: createHtmlInserter(view, contentConverter, startPos, dispatchTransaction),
|
|
26143
|
+
stopTrigger: () => stopTriggerTransaction(view),
|
|
26156
26144
|
};
|
|
26157
26145
|
};
|
|
26146
|
+
const createNodeAndTextInserter = (view, startPos) => (input) => {
|
|
26147
|
+
const schema = view.state.schema;
|
|
26148
|
+
let node;
|
|
26149
|
+
try {
|
|
26150
|
+
node = createNode(input, schema);
|
|
26151
|
+
}
|
|
26152
|
+
catch (error) {
|
|
26153
|
+
// eslint-disable-next-line no-console
|
|
26154
|
+
console.error(error.message);
|
|
26155
|
+
return;
|
|
26156
|
+
}
|
|
26157
|
+
const spaceNode = schema.text(' ');
|
|
26158
|
+
const fragment = schema.nodes.doc.create(null, [node, spaceNode]);
|
|
26159
|
+
dispatchTransaction(view, startPos, fragment);
|
|
26160
|
+
};
|
|
26161
|
+
const stopTriggerTransaction = (view) => {
|
|
26162
|
+
const { state, dispatch } = view;
|
|
26163
|
+
const transaction = state.tr;
|
|
26164
|
+
transaction.setMeta('stopTrigger', true);
|
|
26165
|
+
dispatch(transaction);
|
|
26166
|
+
};
|
|
26167
|
+
const dispatchTransaction = (view, startPos, fragment) => {
|
|
26168
|
+
const state = view.state;
|
|
26169
|
+
const dispatch = view.dispatch;
|
|
26170
|
+
const fromPos = state.selection.$from.pos;
|
|
26171
|
+
const transaction = state.tr.replaceWith(startPos, fromPos, fragment);
|
|
26172
|
+
transaction.setMeta('stopTrigger', true);
|
|
26173
|
+
dispatch(transaction);
|
|
26174
|
+
};
|
|
26158
26175
|
const createNode = (input, schema) => {
|
|
26159
26176
|
var _a;
|
|
26160
26177
|
if (typeof input === 'string') {
|
|
@@ -26173,7 +26190,7 @@ const createNode = (input, schema) => {
|
|
|
26173
26190
|
const getCustomNode = (name, schema) => {
|
|
26174
26191
|
const customNode = Object.values(schema.nodes).find((prosemirrorNode) => prosemirrorNode.name === name);
|
|
26175
26192
|
if (!customNode) {
|
|
26176
|
-
throw new Error(`
|
|
26193
|
+
throw new Error(`No custom element has been registered for node ${name}`);
|
|
26177
26194
|
}
|
|
26178
26195
|
return customNode;
|
|
26179
26196
|
};
|
|
@@ -26211,16 +26228,16 @@ const stillHasTrigger = (state, activeTrigger, triggerPosition, triggerLength) =
|
|
|
26211
26228
|
return (state.doc.textBetween(triggerPosition, triggerPosition + 1) ===
|
|
26212
26229
|
activeTrigger);
|
|
26213
26230
|
};
|
|
26214
|
-
const getTriggerEventDetail = (view, trigger, value) => {
|
|
26231
|
+
const getTriggerEventDetail = (view, contentConverter, trigger, value) => {
|
|
26215
26232
|
return {
|
|
26216
26233
|
trigger: trigger,
|
|
26217
|
-
textEditor: inserterFactory(view),
|
|
26234
|
+
textEditor: inserterFactory(view, contentConverter),
|
|
26218
26235
|
value: value,
|
|
26219
26236
|
};
|
|
26220
26237
|
};
|
|
26221
|
-
const sendTriggerEvent = (type, view, trigger, value) => {
|
|
26238
|
+
const sendTriggerEvent = (type, view, contentConverter, trigger, value) => {
|
|
26222
26239
|
const event = new CustomEvent(type, {
|
|
26223
|
-
detail: getTriggerEventDetail(view, trigger, value),
|
|
26240
|
+
detail: getTriggerEventDetail(view, contentConverter, trigger, value),
|
|
26224
26241
|
bubbles: true,
|
|
26225
26242
|
composed: true,
|
|
26226
26243
|
});
|
|
@@ -26258,14 +26275,14 @@ const processTransactions = (text, transactions, oldState) => {
|
|
|
26258
26275
|
}
|
|
26259
26276
|
return text;
|
|
26260
26277
|
};
|
|
26261
|
-
const createTriggerPlugin = (triggerCharacters) => {
|
|
26278
|
+
const createTriggerPlugin = (triggerCharacters, contentConverter) => {
|
|
26262
26279
|
let activeTrigger = null;
|
|
26263
26280
|
let triggerText = '';
|
|
26264
26281
|
let pluginView = null;
|
|
26265
26282
|
let triggerPosition = null;
|
|
26266
26283
|
const stopTrigger = () => {
|
|
26267
26284
|
triggerText = '';
|
|
26268
|
-
sendTriggerEvent('triggerStop', pluginView, activeTrigger, triggerText);
|
|
26285
|
+
sendTriggerEvent('triggerStop', pluginView, contentConverter, activeTrigger, triggerText);
|
|
26269
26286
|
triggerPosition = null;
|
|
26270
26287
|
activeTrigger = null;
|
|
26271
26288
|
};
|
|
@@ -26284,7 +26301,7 @@ const createTriggerPlugin = (triggerCharacters) => {
|
|
|
26284
26301
|
activeTrigger = event.data;
|
|
26285
26302
|
triggerText = '';
|
|
26286
26303
|
triggerPosition = state.selection.$from.pos - triggerText.length;
|
|
26287
|
-
sendTriggerEvent('triggerStart', view, activeTrigger, triggerText);
|
|
26304
|
+
sendTriggerEvent('triggerStart', view, contentConverter, activeTrigger, triggerText);
|
|
26288
26305
|
return false;
|
|
26289
26306
|
}
|
|
26290
26307
|
return false;
|
|
@@ -26299,7 +26316,7 @@ const createTriggerPlugin = (triggerCharacters) => {
|
|
|
26299
26316
|
const updatedText = processTransactions(triggerText, transactions, oldState);
|
|
26300
26317
|
if (updatedText !== triggerText) {
|
|
26301
26318
|
triggerText = updatedText;
|
|
26302
|
-
sendTriggerEvent('triggerChange', pluginView, activeTrigger, triggerText.slice(1));
|
|
26319
|
+
sendTriggerEvent('triggerChange', pluginView, contentConverter, activeTrigger, triggerText.slice(1));
|
|
26303
26320
|
}
|
|
26304
26321
|
};
|
|
26305
26322
|
return new Plugin({
|
|
@@ -28012,7 +28029,7 @@ const ProsemirrorAdapter = class {
|
|
|
28012
28029
|
...exampleSetup({ schema: this.schema, menuBar: false }),
|
|
28013
28030
|
keymap(this.menuCommandFactory.buildKeymap()),
|
|
28014
28031
|
createLinkPlugin(this.handleNewLinkSelection),
|
|
28015
|
-
createTriggerPlugin(this.triggerCharacters),
|
|
28032
|
+
createTriggerPlugin(this.triggerCharacters, this.contentConverter),
|
|
28016
28033
|
createImageRemoverPlugin(),
|
|
28017
28034
|
createMenuStateTrackingPlugin(editorMenuTypesArray, this.menuCommandFactory, this.updateActiveActionBarItems),
|
|
28018
28035
|
createActionBarInteractionPlugin(this.menuCommandFactory),
|