@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
@@ -26125,36 +26125,53 @@ const createNodeSpec = (config) => {
26125
26125
  };
26126
26126
  };
26127
26127
 
26128
- const inserterFactory = (view) => {
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: (input) => {
26132
- const { state, dispatch } = view;
26133
- const { schema, selection } = state;
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(`A custom element hasn't been registered for node ${name}`);
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),