@limetech/lime-elements 37.72.3 → 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.
Files changed (45) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/limel-breadcrumbs_7.cjs.entry.js +15 -4
  3. package/dist/cjs/limel-breadcrumbs_7.cjs.entry.js.map +1 -1
  4. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +53 -36
  5. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js.map +1 -1
  6. package/dist/cjs/limel-shortcut.cjs.entry.js.map +1 -1
  7. package/dist/collection/components/list/list.js +27 -2
  8. package/dist/collection/components/list/list.js.map +1 -1
  9. package/dist/collection/components/menu-list/menu-list.js +26 -2
  10. package/dist/collection/components/menu-list/menu-list.js.map +1 -1
  11. package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/create-html-inserter.js +11 -0
  12. package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/create-html-inserter.js.map +1 -0
  13. package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/factory.js +8 -8
  14. package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/factory.js.map +1 -1
  15. package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/inserter.js +35 -27
  16. package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/inserter.js.map +1 -1
  17. package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js +1 -1
  18. package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js.map +1 -1
  19. package/dist/collection/components/text-editor/text-editor.types.js.map +1 -1
  20. package/dist/collection/style/internal/lime-theme.scss +1 -1
  21. package/dist/collection/style/shadows.scss +8 -4
  22. package/dist/esm/limel-breadcrumbs_7.entry.js +15 -4
  23. package/dist/esm/limel-breadcrumbs_7.entry.js.map +1 -1
  24. package/dist/esm/limel-prosemirror-adapter.entry.js +53 -36
  25. package/dist/esm/limel-prosemirror-adapter.entry.js.map +1 -1
  26. package/dist/esm/limel-shortcut.entry.js.map +1 -1
  27. package/dist/lime-elements/lime-elements.css +8 -4
  28. package/dist/lime-elements/lime-elements.esm.js +1 -1
  29. package/dist/lime-elements/{p-7172c8e7.entry.js → p-209cd952.entry.js} +3 -3
  30. package/dist/lime-elements/p-209cd952.entry.js.map +1 -0
  31. package/dist/lime-elements/{p-830d655c.entry.js → p-e83e845a.entry.js} +2 -2
  32. package/dist/lime-elements/p-e83e845a.entry.js.map +1 -0
  33. package/dist/lime-elements/p-f3a613a3.entry.js.map +1 -1
  34. package/dist/lime-elements/style/internal/lime-theme.scss +1 -1
  35. package/dist/lime-elements/style/shadows.scss +8 -4
  36. package/dist/types/components/list/list.d.ts +5 -0
  37. package/dist/types/components/menu-list/menu-list.d.ts +6 -0
  38. package/dist/types/components/text-editor/prosemirror-adapter/plugins/trigger/create-html-inserter.d.ts +5 -0
  39. package/dist/types/components/text-editor/prosemirror-adapter/plugins/trigger/factory.d.ts +2 -1
  40. package/dist/types/components/text-editor/prosemirror-adapter/plugins/trigger/inserter.d.ts +2 -1
  41. package/dist/types/components/text-editor/text-editor.types.d.ts +4 -1
  42. package/dist/types/components.d.ts +8 -0
  43. package/package.json +13 -13
  44. package/dist/lime-elements/p-7172c8e7.entry.js.map +0 -1
  45. package/dist/lime-elements/p-830d655c.entry.js.map +0 -1
@@ -26121,36 +26121,53 @@ const createNodeSpec = (config) => {
26121
26121
  };
26122
26122
  };
26123
26123
 
26124
- const inserterFactory = (view) => {
26124
+ const createHtmlInserter = (view, contentConverter, startPos, dispatchTransaction) => {
26125
+ const schema = view.state.schema;
26126
+ return async (input) => {
26127
+ const container = document.createElement('span');
26128
+ container.innerHTML = await contentConverter.parseAsHTML(input, schema);
26129
+ const fragment = DOMParser.fromSchema(schema).parse(container).content;
26130
+ dispatchTransaction(view, startPos, fragment);
26131
+ };
26132
+ };
26133
+
26134
+ const inserterFactory = (view, contentConverter) => {
26125
26135
  const startPos = getTriggerStartPosition(view);
26126
26136
  return {
26127
- insert: (input) => {
26128
- const { state, dispatch } = view;
26129
- const { schema, selection } = state;
26130
- const { $from } = selection;
26131
- let node;
26132
- try {
26133
- node = createNode(input, schema);
26134
- }
26135
- catch (error) {
26136
- // eslint-disable-next-line no-console
26137
- console.error(error.message);
26138
- return;
26139
- }
26140
- const spaceNode = schema.text(' ');
26141
- const fragment = schema.nodes.doc.create(null, [node, spaceNode]);
26142
- const transaction = state.tr.replaceWith(startPos, $from.pos, fragment);
26143
- transaction.setMeta('stopTrigger', true);
26144
- dispatch(transaction);
26145
- },
26146
- stopTrigger: () => {
26147
- const { state, dispatch } = view;
26148
- const transaction = state.tr;
26149
- transaction.setMeta('stopTrigger', true);
26150
- dispatch(transaction);
26151
- },
26137
+ insert: createNodeAndTextInserter(view, startPos),
26138
+ insertHtml: createHtmlInserter(view, contentConverter, startPos, dispatchTransaction),
26139
+ stopTrigger: () => stopTriggerTransaction(view),
26152
26140
  };
26153
26141
  };
26142
+ const createNodeAndTextInserter = (view, startPos) => (input) => {
26143
+ const schema = view.state.schema;
26144
+ let node;
26145
+ try {
26146
+ node = createNode(input, schema);
26147
+ }
26148
+ catch (error) {
26149
+ // eslint-disable-next-line no-console
26150
+ console.error(error.message);
26151
+ return;
26152
+ }
26153
+ const spaceNode = schema.text(' ');
26154
+ const fragment = schema.nodes.doc.create(null, [node, spaceNode]);
26155
+ dispatchTransaction(view, startPos, fragment);
26156
+ };
26157
+ const stopTriggerTransaction = (view) => {
26158
+ const { state, dispatch } = view;
26159
+ const transaction = state.tr;
26160
+ transaction.setMeta('stopTrigger', true);
26161
+ dispatch(transaction);
26162
+ };
26163
+ const dispatchTransaction = (view, startPos, fragment) => {
26164
+ const state = view.state;
26165
+ const dispatch = view.dispatch;
26166
+ const fromPos = state.selection.$from.pos;
26167
+ const transaction = state.tr.replaceWith(startPos, fromPos, fragment);
26168
+ transaction.setMeta('stopTrigger', true);
26169
+ dispatch(transaction);
26170
+ };
26154
26171
  const createNode = (input, schema) => {
26155
26172
  var _a;
26156
26173
  if (typeof input === 'string') {
@@ -26169,7 +26186,7 @@ const createNode = (input, schema) => {
26169
26186
  const getCustomNode = (name, schema) => {
26170
26187
  const customNode = Object.values(schema.nodes).find((prosemirrorNode) => prosemirrorNode.name === name);
26171
26188
  if (!customNode) {
26172
- throw new Error(`A custom element hasn't been registered for node ${name}`);
26189
+ throw new Error(`No custom element has been registered for node ${name}`);
26173
26190
  }
26174
26191
  return customNode;
26175
26192
  };
@@ -26207,16 +26224,16 @@ const stillHasTrigger = (state, activeTrigger, triggerPosition, triggerLength) =
26207
26224
  return (state.doc.textBetween(triggerPosition, triggerPosition + 1) ===
26208
26225
  activeTrigger);
26209
26226
  };
26210
- const getTriggerEventDetail = (view, trigger, value) => {
26227
+ const getTriggerEventDetail = (view, contentConverter, trigger, value) => {
26211
26228
  return {
26212
26229
  trigger: trigger,
26213
- textEditor: inserterFactory(view),
26230
+ textEditor: inserterFactory(view, contentConverter),
26214
26231
  value: value,
26215
26232
  };
26216
26233
  };
26217
- const sendTriggerEvent = (type, view, trigger, value) => {
26234
+ const sendTriggerEvent = (type, view, contentConverter, trigger, value) => {
26218
26235
  const event = new CustomEvent(type, {
26219
- detail: getTriggerEventDetail(view, trigger, value),
26236
+ detail: getTriggerEventDetail(view, contentConverter, trigger, value),
26220
26237
  bubbles: true,
26221
26238
  composed: true,
26222
26239
  });
@@ -26254,14 +26271,14 @@ const processTransactions = (text, transactions, oldState) => {
26254
26271
  }
26255
26272
  return text;
26256
26273
  };
26257
- const createTriggerPlugin = (triggerCharacters) => {
26274
+ const createTriggerPlugin = (triggerCharacters, contentConverter) => {
26258
26275
  let activeTrigger = null;
26259
26276
  let triggerText = '';
26260
26277
  let pluginView = null;
26261
26278
  let triggerPosition = null;
26262
26279
  const stopTrigger = () => {
26263
26280
  triggerText = '';
26264
- sendTriggerEvent('triggerStop', pluginView, activeTrigger, triggerText);
26281
+ sendTriggerEvent('triggerStop', pluginView, contentConverter, activeTrigger, triggerText);
26265
26282
  triggerPosition = null;
26266
26283
  activeTrigger = null;
26267
26284
  };
@@ -26280,7 +26297,7 @@ const createTriggerPlugin = (triggerCharacters) => {
26280
26297
  activeTrigger = event.data;
26281
26298
  triggerText = '';
26282
26299
  triggerPosition = state.selection.$from.pos - triggerText.length;
26283
- sendTriggerEvent('triggerStart', view, activeTrigger, triggerText);
26300
+ sendTriggerEvent('triggerStart', view, contentConverter, activeTrigger, triggerText);
26284
26301
  return false;
26285
26302
  }
26286
26303
  return false;
@@ -26295,7 +26312,7 @@ const createTriggerPlugin = (triggerCharacters) => {
26295
26312
  const updatedText = processTransactions(triggerText, transactions, oldState);
26296
26313
  if (updatedText !== triggerText) {
26297
26314
  triggerText = updatedText;
26298
- sendTriggerEvent('triggerChange', pluginView, activeTrigger, triggerText.slice(1));
26315
+ sendTriggerEvent('triggerChange', pluginView, contentConverter, activeTrigger, triggerText.slice(1));
26299
26316
  }
26300
26317
  };
26301
26318
  return new Plugin({
@@ -28008,7 +28025,7 @@ const ProsemirrorAdapter = class {
28008
28025
  ...exampleSetup({ schema: this.schema, menuBar: false }),
28009
28026
  keymap(this.menuCommandFactory.buildKeymap()),
28010
28027
  createLinkPlugin(this.handleNewLinkSelection),
28011
- createTriggerPlugin(this.triggerCharacters),
28028
+ createTriggerPlugin(this.triggerCharacters, this.contentConverter),
28012
28029
  createImageRemoverPlugin(),
28013
28030
  createMenuStateTrackingPlugin(editorMenuTypesArray, this.menuCommandFactory, this.updateActiveActionBarItems),
28014
28031
  createActionBarInteractionPlugin(this.menuCommandFactory),