@limetech/lime-elements 37.76.0 → 37.76.2
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 +16 -0
- package/dist/cjs/lime-elements.cjs.js +1 -1
- package/dist/cjs/limel-breadcrumbs_7.cjs.entry.js +1 -1
- package/dist/cjs/limel-breadcrumbs_7.cjs.entry.js.map +1 -1
- package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +93 -116
- package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js.map +1 -1
- package/dist/cjs/limel-text-editor.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/spinner/spinner.js +2 -2
- package/dist/collection/components/spinner/spinner.js.map +1 -1
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/factory-helpers/append-transaction-handler.js +18 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/factory-helpers/append-transaction-handler.js.map +1 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/factory-helpers/detect-trigger-removal.js +26 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/factory-helpers/detect-trigger-removal.js.map +1 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/factory-helpers/get-trigger-event-detail.js +10 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/factory-helpers/get-trigger-event-detail.js.map +1 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/factory-helpers/monitor-triggered-text.js +11 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/factory-helpers/monitor-triggered-text.js.map +1 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/factory-helpers/send-trigger-event.js +10 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/factory-helpers/send-trigger-event.js.map +1 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/factory-helpers/text-input-handler.js +20 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/factory-helpers/text-input-handler.js.map +1 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/factory.js +18 -123
- 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 +6 -11
- 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 +2 -1
- package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js.map +1 -1
- package/dist/collection/components/text-editor/text-editor.js +1 -1
- package/dist/collection/components/text-editor/text-editor.js.map +1 -1
- package/dist/collection/components/text-editor/text-editor.types.js.map +1 -1
- package/dist/esm/lime-elements.js +1 -1
- package/dist/esm/limel-breadcrumbs_7.entry.js +1 -1
- package/dist/esm/limel-breadcrumbs_7.entry.js.map +1 -1
- package/dist/esm/limel-prosemirror-adapter.entry.js +93 -116
- package/dist/esm/limel-prosemirror-adapter.entry.js.map +1 -1
- package/dist/esm/limel-text-editor.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/lime-elements/lime-elements.esm.js +1 -1
- package/dist/lime-elements/lime-elements.esm.js.map +1 -1
- package/dist/lime-elements/{p-f9599a0c.entry.js → p-0a7788af.entry.js} +2 -2
- package/dist/lime-elements/{p-f9599a0c.entry.js.map → p-0a7788af.entry.js.map} +1 -1
- package/dist/lime-elements/{p-9addc6b3.entry.js → p-5ace2e19.entry.js} +2 -2
- package/dist/lime-elements/p-5ace2e19.entry.js.map +1 -0
- package/dist/lime-elements/p-9fae6488.entry.js.map +1 -1
- package/dist/types/components/text-editor/prosemirror-adapter/plugins/trigger/factory-helpers/append-transaction-handler.d.ts +6 -0
- package/dist/types/components/text-editor/prosemirror-adapter/plugins/trigger/factory-helpers/detect-trigger-removal.d.ts +6 -0
- package/dist/types/components/text-editor/prosemirror-adapter/plugins/trigger/factory-helpers/get-trigger-event-detail.d.ts +5 -0
- package/dist/types/components/text-editor/prosemirror-adapter/plugins/trigger/factory-helpers/monitor-triggered-text.d.ts +5 -0
- package/dist/types/components/text-editor/prosemirror-adapter/plugins/trigger/factory-helpers/send-trigger-event.d.ts +5 -0
- package/dist/types/components/text-editor/prosemirror-adapter/plugins/trigger/factory-helpers/text-input-handler.d.ts +5 -0
- package/dist/types/components/text-editor/prosemirror-adapter/plugins/trigger/inserter.d.ts +2 -2
- package/dist/types/components/text-editor/text-editor.d.ts +1 -1
- package/dist/types/components/text-editor/text-editor.types.d.ts +11 -0
- package/dist/types/components.d.ts +4 -4
- package/package.json +6 -6
- package/dist/lime-elements/p-9addc6b3.entry.js.map +0 -1
|
@@ -26131,15 +26131,14 @@ const createHtmlInserter = (view, contentConverter, startPos, dispatchTransactio
|
|
|
26131
26131
|
};
|
|
26132
26132
|
};
|
|
26133
26133
|
|
|
26134
|
-
const inserterFactory = (view, contentConverter) => {
|
|
26135
|
-
const startPos = getTriggerStartPosition(view);
|
|
26134
|
+
const inserterFactory = (view, contentConverter, trigger) => {
|
|
26136
26135
|
return {
|
|
26137
|
-
insert: createNodeAndTextInserter(view,
|
|
26138
|
-
insertHtml: createHtmlInserter(view, contentConverter,
|
|
26136
|
+
insert: createNodeAndTextInserter(view, trigger),
|
|
26137
|
+
insertHtml: createHtmlInserter(view, contentConverter, trigger.position, dispatchTransaction),
|
|
26139
26138
|
stopTrigger: () => stopTriggerTransaction(view),
|
|
26140
26139
|
};
|
|
26141
26140
|
};
|
|
26142
|
-
const createNodeAndTextInserter = (view,
|
|
26141
|
+
const createNodeAndTextInserter = (view, trigger) => (input) => {
|
|
26143
26142
|
const schema = view.state.schema;
|
|
26144
26143
|
let node;
|
|
26145
26144
|
try {
|
|
@@ -26152,7 +26151,7 @@ const createNodeAndTextInserter = (view, startPos) => (input) => {
|
|
|
26152
26151
|
}
|
|
26153
26152
|
const spaceNode = schema.text(' ');
|
|
26154
26153
|
const fragment = schema.nodes.doc.create(null, [node, spaceNode]);
|
|
26155
|
-
dispatchTransaction(view,
|
|
26154
|
+
dispatchTransaction(view, trigger.position, fragment);
|
|
26156
26155
|
};
|
|
26157
26156
|
const stopTriggerTransaction = (view) => {
|
|
26158
26157
|
const { state, dispatch } = view;
|
|
@@ -26162,8 +26161,8 @@ const stopTriggerTransaction = (view) => {
|
|
|
26162
26161
|
};
|
|
26163
26162
|
const dispatchTransaction = (view, startPos, fragment) => {
|
|
26164
26163
|
const state = view.state;
|
|
26165
|
-
const dispatch = view.dispatch;
|
|
26166
26164
|
const fromPos = state.selection.$from.pos;
|
|
26165
|
+
const dispatch = view.dispatch;
|
|
26167
26166
|
const transaction = state.tr.replaceWith(startPos, fromPos, fragment);
|
|
26168
26167
|
transaction.setMeta('stopTrigger', true);
|
|
26169
26168
|
dispatch(transaction);
|
|
@@ -26190,47 +26189,16 @@ const getCustomNode = (name, schema) => {
|
|
|
26190
26189
|
}
|
|
26191
26190
|
return customNode;
|
|
26192
26191
|
};
|
|
26193
|
-
const getTriggerStartPosition = (view) => {
|
|
26194
|
-
var _a, _b, _c;
|
|
26195
|
-
return (_c = (_b = (_a = view.state) === null || _a === void 0 ? void 0 : _a.selection) === null || _b === void 0 ? void 0 : _b.$from) === null || _c === void 0 ? void 0 : _c.pos;
|
|
26196
|
-
};
|
|
26197
26192
|
|
|
26198
|
-
const isTrigger = (key, validTriggers) => {
|
|
26199
|
-
return key.length === 1 && validTriggers.includes(key);
|
|
26200
|
-
};
|
|
26201
|
-
const shouldTrigger = (state) => {
|
|
26202
|
-
const { $from } = state.selection;
|
|
26203
|
-
if ($from.pos === 1) {
|
|
26204
|
-
return true;
|
|
26205
|
-
}
|
|
26206
|
-
// Getting the position immediately before the current selection
|
|
26207
|
-
const prevPos = $from.pos - 1;
|
|
26208
|
-
if (prevPos > 0) {
|
|
26209
|
-
// allow trigger if the cursor is at the start of a new paragraph
|
|
26210
|
-
if ($from.parentOffset === 0) {
|
|
26211
|
-
return true;
|
|
26212
|
-
}
|
|
26213
|
-
const prevChar = state.doc.textBetween(prevPos, $from.pos);
|
|
26214
|
-
return prevChar === ' ' || prevChar === '\n';
|
|
26215
|
-
}
|
|
26216
|
-
return false;
|
|
26217
|
-
};
|
|
26218
|
-
const stillHasTrigger = (state, activeTrigger, triggerPosition, triggerLength) => {
|
|
26219
|
-
const cursorPosition = state.selection.$from.pos;
|
|
26220
|
-
if (cursorPosition < triggerPosition ||
|
|
26221
|
-
cursorPosition > triggerPosition + triggerLength + 1) {
|
|
26222
|
-
return false;
|
|
26223
|
-
}
|
|
26224
|
-
return (state.doc.textBetween(triggerPosition, triggerPosition + 1) ===
|
|
26225
|
-
activeTrigger);
|
|
26226
|
-
};
|
|
26227
26193
|
const getTriggerEventDetail = (view, contentConverter, trigger, value) => {
|
|
26228
|
-
|
|
26229
|
-
trigger: trigger,
|
|
26230
|
-
textEditor: inserterFactory(view, contentConverter),
|
|
26194
|
+
const returnValue = {
|
|
26195
|
+
trigger: trigger.character,
|
|
26196
|
+
textEditor: inserterFactory(view, contentConverter, trigger),
|
|
26231
26197
|
value: value,
|
|
26232
26198
|
};
|
|
26199
|
+
return returnValue;
|
|
26233
26200
|
};
|
|
26201
|
+
|
|
26234
26202
|
const sendTriggerEvent = (type, view, contentConverter, trigger, value) => {
|
|
26235
26203
|
const event = new CustomEvent(type, {
|
|
26236
26204
|
detail: getTriggerEventDetail(view, contentConverter, trigger, value),
|
|
@@ -26239,83 +26207,93 @@ const sendTriggerEvent = (type, view, contentConverter, trigger, value) => {
|
|
|
26239
26207
|
});
|
|
26240
26208
|
view.dom.dispatchEvent(event);
|
|
26241
26209
|
};
|
|
26242
|
-
|
|
26243
|
-
|
|
26244
|
-
|
|
26245
|
-
|
|
26246
|
-
|
|
26247
|
-
|
|
26248
|
-
|
|
26249
|
-
|
|
26250
|
-
|
|
26251
|
-
|
|
26252
|
-
|
|
26253
|
-
|
|
26254
|
-
|
|
26255
|
-
|
|
26256
|
-
|
|
26257
|
-
|
|
26258
|
-
|
|
26259
|
-
|
|
26260
|
-
|
|
26261
|
-
|
|
26210
|
+
|
|
26211
|
+
const getTextInputHandler = (contentConverter, triggerCharacters, updateActiveTrigger) => {
|
|
26212
|
+
return (view, _from, _to, text) => {
|
|
26213
|
+
if (!triggerCharacters.includes(text)) {
|
|
26214
|
+
return false;
|
|
26215
|
+
}
|
|
26216
|
+
const doc = view.state.doc;
|
|
26217
|
+
const precedingText = doc.textBetween(_from - 1, _from, '');
|
|
26218
|
+
if (/\s/.test(precedingText) || precedingText === '') {
|
|
26219
|
+
const trigger = {
|
|
26220
|
+
character: text,
|
|
26221
|
+
position: _from,
|
|
26222
|
+
};
|
|
26223
|
+
updateActiveTrigger(trigger);
|
|
26224
|
+
sendTriggerEvent('triggerStart', view, contentConverter, trigger, text);
|
|
26225
|
+
}
|
|
26226
|
+
return false;
|
|
26227
|
+
};
|
|
26228
|
+
};
|
|
26229
|
+
|
|
26230
|
+
const detectTriggerRemoval = (transaction, activeTrigger, resetActiveTrigger, contentConverter, view) => {
|
|
26231
|
+
if (!activeTrigger || activeTrigger.position < 1) {
|
|
26232
|
+
return false;
|
|
26233
|
+
}
|
|
26234
|
+
for (const step of transaction.steps) {
|
|
26235
|
+
if (step instanceof ReplaceStep) {
|
|
26236
|
+
const { from, to, slice } = step; // Access properties specific to ReplaceStep
|
|
26237
|
+
// Check if the step affects the trigger position
|
|
26238
|
+
if (from <= activeTrigger.position &&
|
|
26239
|
+
to >= activeTrigger.position) {
|
|
26240
|
+
const text = slice.content.textBetween(0, slice.content.size, '');
|
|
26241
|
+
// Check if the trigger character has been removed
|
|
26242
|
+
// `text` is the text after the step has been applied
|
|
26243
|
+
if (!text.includes(activeTrigger.character)) {
|
|
26244
|
+
resetActiveTrigger();
|
|
26245
|
+
sendTriggerEvent('triggerStop', view, contentConverter, activeTrigger, '');
|
|
26246
|
+
return true;
|
|
26262
26247
|
}
|
|
26263
|
-
}
|
|
26248
|
+
}
|
|
26264
26249
|
}
|
|
26265
|
-
});
|
|
26266
|
-
if (textAdded) {
|
|
26267
|
-
text += textAdded;
|
|
26268
26250
|
}
|
|
26269
|
-
|
|
26270
|
-
|
|
26251
|
+
return false;
|
|
26252
|
+
};
|
|
26253
|
+
|
|
26254
|
+
const monitorTriggeredText = (doc, activeTrigger, cursorPosition, contentConverter, view) => {
|
|
26255
|
+
let newValue = '';
|
|
26256
|
+
if (cursorPosition > activeTrigger.position) {
|
|
26257
|
+
// Start extracting text after the trigger character
|
|
26258
|
+
newValue = doc.textBetween(activeTrigger.position + 1, cursorPosition, '');
|
|
26271
26259
|
}
|
|
26272
|
-
|
|
26260
|
+
sendTriggerEvent('triggerChange', view, contentConverter, activeTrigger, newValue);
|
|
26261
|
+
return newValue;
|
|
26262
|
+
};
|
|
26263
|
+
|
|
26264
|
+
const getAppendTransactionHandler = (getCurrentView, getActiveTrigger, resetActiveTrigger, contentConverter) => {
|
|
26265
|
+
return (transactions, _oldState, newState) => {
|
|
26266
|
+
const activeTrigger = getActiveTrigger();
|
|
26267
|
+
if (!activeTrigger) {
|
|
26268
|
+
return;
|
|
26269
|
+
}
|
|
26270
|
+
const triggerRemoved = detectTriggerRemoval(transactions[0], // Pass the first transaction
|
|
26271
|
+
activeTrigger, resetActiveTrigger, contentConverter, getCurrentView());
|
|
26272
|
+
if (triggerRemoved) {
|
|
26273
|
+
resetActiveTrigger();
|
|
26274
|
+
return;
|
|
26275
|
+
}
|
|
26276
|
+
monitorTriggeredText(newState.doc, activeTrigger, newState.selection.from, contentConverter, getCurrentView());
|
|
26277
|
+
};
|
|
26273
26278
|
};
|
|
26279
|
+
|
|
26274
26280
|
const createTriggerPlugin = (triggerCharacters, contentConverter) => {
|
|
26275
|
-
let activeTrigger = null;
|
|
26276
|
-
let triggerText = '';
|
|
26277
26281
|
let pluginView = null;
|
|
26278
|
-
let
|
|
26279
|
-
const
|
|
26280
|
-
|
|
26281
|
-
sendTriggerEvent('triggerStop', pluginView, contentConverter, activeTrigger, triggerText);
|
|
26282
|
-
triggerPosition = null;
|
|
26283
|
-
activeTrigger = null;
|
|
26282
|
+
let activeTrigger = null;
|
|
26283
|
+
const getCurrentView = () => {
|
|
26284
|
+
return pluginView;
|
|
26284
26285
|
};
|
|
26285
|
-
const
|
|
26286
|
-
|
|
26287
|
-
stopTrigger();
|
|
26288
|
-
return true;
|
|
26289
|
-
}
|
|
26290
|
-
return false;
|
|
26286
|
+
const getActiveTrigger = () => {
|
|
26287
|
+
return activeTrigger;
|
|
26291
26288
|
};
|
|
26292
|
-
const
|
|
26293
|
-
|
|
26294
|
-
if (event.inputType === 'insertText' &&
|
|
26295
|
-
isTrigger(event.data, triggerCharacters) &&
|
|
26296
|
-
shouldTrigger(state)) {
|
|
26297
|
-
activeTrigger = event.data;
|
|
26298
|
-
triggerText = '';
|
|
26299
|
-
triggerPosition = state.selection.$from.pos - triggerText.length;
|
|
26300
|
-
sendTriggerEvent('triggerStart', view, contentConverter, activeTrigger, triggerText);
|
|
26301
|
-
return false;
|
|
26302
|
-
}
|
|
26303
|
-
return false;
|
|
26289
|
+
const resetActiveTrigger = () => {
|
|
26290
|
+
activeTrigger = null;
|
|
26304
26291
|
};
|
|
26305
|
-
const
|
|
26306
|
-
|
|
26307
|
-
return;
|
|
26308
|
-
}
|
|
26309
|
-
if (!stillHasTrigger(newState, activeTrigger, triggerPosition, triggerText.length)) {
|
|
26310
|
-
stopTrigger();
|
|
26311
|
-
return;
|
|
26312
|
-
}
|
|
26313
|
-
const updatedText = processTransactions(triggerText, transactions, oldState);
|
|
26314
|
-
if (updatedText !== triggerText) {
|
|
26315
|
-
triggerText = updatedText;
|
|
26316
|
-
sendTriggerEvent('triggerChange', pluginView, contentConverter, activeTrigger, triggerText.slice(1));
|
|
26317
|
-
}
|
|
26292
|
+
const updateActiveTrigger = (trigger) => {
|
|
26293
|
+
activeTrigger = trigger;
|
|
26318
26294
|
};
|
|
26295
|
+
const textInputHandler = getTextInputHandler(contentConverter, triggerCharacters, updateActiveTrigger);
|
|
26296
|
+
const appendTransactionHandler = getAppendTransactionHandler(getCurrentView, getActiveTrigger, resetActiveTrigger, contentConverter);
|
|
26319
26297
|
return new Plugin({
|
|
26320
26298
|
key: new PluginKey('triggerPlugin'),
|
|
26321
26299
|
view: (view) => {
|
|
@@ -26328,18 +26306,16 @@ const createTriggerPlugin = (triggerCharacters, contentConverter) => {
|
|
|
26328
26306
|
},
|
|
26329
26307
|
apply: (transaction) => {
|
|
26330
26308
|
if (transaction.getMeta('stopTrigger')) {
|
|
26331
|
-
|
|
26309
|
+
sendTriggerEvent('triggerStop', pluginView, contentConverter, activeTrigger, '');
|
|
26310
|
+
resetActiveTrigger();
|
|
26332
26311
|
}
|
|
26333
26312
|
return {};
|
|
26334
26313
|
},
|
|
26335
26314
|
},
|
|
26336
26315
|
props: {
|
|
26337
|
-
|
|
26338
|
-
handleDOMEvents: {
|
|
26339
|
-
input: handleInput,
|
|
26340
|
-
},
|
|
26316
|
+
handleTextInput: textInputHandler,
|
|
26341
26317
|
},
|
|
26342
|
-
appendTransaction:
|
|
26318
|
+
appendTransaction: appendTransactionHandler,
|
|
26343
26319
|
});
|
|
26344
26320
|
};
|
|
26345
26321
|
|
|
@@ -28025,8 +28001,8 @@ const ProsemirrorAdapter = class {
|
|
|
28025
28001
|
plugins: [
|
|
28026
28002
|
...exampleSetup({ schema: this.schema, menuBar: false }),
|
|
28027
28003
|
keymap(this.menuCommandFactory.buildKeymap()),
|
|
28028
|
-
createLinkPlugin(this.handleNewLinkSelection),
|
|
28029
28004
|
createTriggerPlugin(this.triggerCharacters, this.contentConverter),
|
|
28005
|
+
createLinkPlugin(this.handleNewLinkSelection),
|
|
28030
28006
|
createImageRemoverPlugin(),
|
|
28031
28007
|
createMenuStateTrackingPlugin(editorMenuTypesArray, this.menuCommandFactory, this.updateActiveActionBarItems),
|
|
28032
28008
|
createActionBarInteractionPlugin(this.menuCommandFactory),
|
|
@@ -28046,6 +28022,7 @@ const ProsemirrorAdapter = class {
|
|
|
28046
28022
|
this.view.dispatch(tr);
|
|
28047
28023
|
this.suppressChangeEvent = false;
|
|
28048
28024
|
}
|
|
28025
|
+
static get delegatesFocus() { return true; }
|
|
28049
28026
|
get host() { return getElement(this); }
|
|
28050
28027
|
static get watchers() { return {
|
|
28051
28028
|
"value": ["watchValue"]
|