@limetech/lime-elements 37.64.4 → 37.65.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 +15 -0
- package/dist/cjs/lime-elements.cjs.js +1 -1
- package/dist/cjs/limel-markdown.cjs.entry.js.map +1 -1
- package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +197 -5
- package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js.map +1 -1
- package/dist/cjs/limel-text-editor.cjs.entry.js +6 -2
- package/dist/cjs/limel-text-editor.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/markdown-parser-ba7cc71e.js.map +1 -1
- package/dist/collection/components/markdown/markdown-parser.js.map +1 -1
- package/dist/collection/components/markdown/markdown.js +3 -3
- package/dist/collection/components/markdown/markdown.js.map +1 -1
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/factory.js +142 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/factory.js.map +1 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/inserter.js +51 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/plugins/trigger/inserter.js.map +1 -0
- package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js +39 -9
- package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js.map +1 -1
- package/dist/collection/components/text-editor/text-editor.js +114 -7
- package/dist/collection/components/text-editor/text-editor.js.map +1 -1
- package/dist/collection/components/text-editor/text-editor.types.js +2 -0
- package/dist/collection/components/text-editor/text-editor.types.js.map +1 -0
- package/dist/collection/components/text-editor/types.js.map +1 -1
- package/dist/collection/components/text-editor/utils/markdown-converter.js.map +1 -1
- package/dist/collection/components/text-editor/utils/plugin-factory.js.map +1 -1
- package/dist/collection/global/shared-types/custom-element.types.js.map +1 -1
- package/dist/collection/interface.js +1 -0
- package/dist/collection/interface.js.map +1 -1
- package/dist/esm/lime-elements.js +1 -1
- package/dist/esm/limel-markdown.entry.js.map +1 -1
- package/dist/esm/limel-prosemirror-adapter.entry.js +197 -5
- package/dist/esm/limel-prosemirror-adapter.entry.js.map +1 -1
- package/dist/esm/limel-text-editor.entry.js +6 -2
- package/dist/esm/limel-text-editor.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/markdown-parser-3c0af898.js.map +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-086509a5.js.map +1 -1
- package/dist/lime-elements/{p-6c1c51bd.entry.js → p-8d388c5c.entry.js} +2 -2
- package/dist/lime-elements/p-8d388c5c.entry.js.map +1 -0
- package/dist/lime-elements/p-da20ff72.entry.js.map +1 -1
- package/dist/lime-elements/{p-2ab02bd9.entry.js → p-daecb14f.entry.js} +2 -2
- package/dist/lime-elements/p-daecb14f.entry.js.map +1 -0
- package/dist/types/components/markdown/markdown-parser.d.ts +2 -2
- package/dist/types/components/markdown/markdown.d.ts +2 -2
- package/dist/types/components/text-editor/prosemirror-adapter/plugins/trigger/factory.d.ts +4 -0
- package/dist/types/components/text-editor/prosemirror-adapter/plugins/trigger/inserter.d.ts +4 -0
- package/dist/types/components/text-editor/prosemirror-adapter/prosemirror-adapter.d.ts +10 -2
- package/dist/types/components/text-editor/text-editor.d.ts +41 -3
- package/dist/types/components/text-editor/text-editor.types.d.ts +47 -0
- package/dist/types/components/text-editor/types.d.ts +2 -2
- package/dist/types/components/text-editor/utils/markdown-converter.d.ts +2 -2
- package/dist/types/components/text-editor/utils/plugin-factory.d.ts +2 -2
- package/dist/types/components.d.ts +64 -16
- package/dist/types/global/shared-types/custom-element.types.d.ts +15 -2
- package/dist/types/interface.d.ts +1 -0
- package/package.json +1 -1
- package/dist/lime-elements/p-2ab02bd9.entry.js.map +0 -1
- package/dist/lime-elements/p-6c1c51bd.entry.js.map +0 -1
|
@@ -26128,6 +26128,196 @@ const createNodeSpec = (config) => {
|
|
|
26128
26128
|
};
|
|
26129
26129
|
};
|
|
26130
26130
|
|
|
26131
|
+
const inserterFactory = (view) => {
|
|
26132
|
+
const startPos = getTriggerStartPosition(view);
|
|
26133
|
+
return {
|
|
26134
|
+
insert: (input) => {
|
|
26135
|
+
const { state, dispatch } = view;
|
|
26136
|
+
const { schema, selection } = state;
|
|
26137
|
+
const { $from } = selection;
|
|
26138
|
+
let node;
|
|
26139
|
+
try {
|
|
26140
|
+
node = createNode(input, schema);
|
|
26141
|
+
}
|
|
26142
|
+
catch (error) {
|
|
26143
|
+
// eslint-disable-next-line no-console
|
|
26144
|
+
console.error(error.message);
|
|
26145
|
+
return;
|
|
26146
|
+
}
|
|
26147
|
+
const spaceNode = schema.text(' ');
|
|
26148
|
+
const fragment = schema.nodes.doc.create(null, [node, spaceNode]);
|
|
26149
|
+
const transaction = state.tr.replaceWith(startPos, $from.pos, fragment);
|
|
26150
|
+
transaction.setMeta('stopTrigger', true);
|
|
26151
|
+
dispatch(transaction);
|
|
26152
|
+
},
|
|
26153
|
+
};
|
|
26154
|
+
};
|
|
26155
|
+
const createNode = (input, schema) => {
|
|
26156
|
+
var _a;
|
|
26157
|
+
if (typeof input === 'string') {
|
|
26158
|
+
return schema.text(input);
|
|
26159
|
+
}
|
|
26160
|
+
const node = input.node;
|
|
26161
|
+
if (typeof node === 'string') {
|
|
26162
|
+
return schema.text(node);
|
|
26163
|
+
}
|
|
26164
|
+
const customNode = getCustomNode(node.tagName, schema);
|
|
26165
|
+
const childNodes = ((_a = input.children) !== null && _a !== void 0 ? _a : [])
|
|
26166
|
+
.map((child) => createNode(child, schema))
|
|
26167
|
+
.filter(Boolean);
|
|
26168
|
+
return customNode.create(node.attributes, childNodes);
|
|
26169
|
+
};
|
|
26170
|
+
const getCustomNode = (name, schema) => {
|
|
26171
|
+
const customNode = Object.values(schema.nodes).find((prosemirrorNode) => prosemirrorNode.name === name);
|
|
26172
|
+
if (!customNode) {
|
|
26173
|
+
throw new Error(`A custom element hasn't been registered for node ${name}`);
|
|
26174
|
+
}
|
|
26175
|
+
return customNode;
|
|
26176
|
+
};
|
|
26177
|
+
const getTriggerStartPosition = (view) => {
|
|
26178
|
+
var _a, _b, _c;
|
|
26179
|
+
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;
|
|
26180
|
+
};
|
|
26181
|
+
|
|
26182
|
+
const isTrigger = (key, validTriggers) => {
|
|
26183
|
+
return key.length === 1 && validTriggers.includes(key);
|
|
26184
|
+
};
|
|
26185
|
+
const shouldTrigger = (state) => {
|
|
26186
|
+
const { $from } = state.selection;
|
|
26187
|
+
if ($from.pos === 1) {
|
|
26188
|
+
return true;
|
|
26189
|
+
}
|
|
26190
|
+
// Getting the position immediately before the current selection
|
|
26191
|
+
const prevPos = $from.pos - 1;
|
|
26192
|
+
if (prevPos > 0) {
|
|
26193
|
+
// allow trigger if the cursor is at the start of a new paragraph
|
|
26194
|
+
if ($from.parentOffset === 0) {
|
|
26195
|
+
return true;
|
|
26196
|
+
}
|
|
26197
|
+
const prevChar = state.doc.textBetween(prevPos, $from.pos);
|
|
26198
|
+
return prevChar === ' ' || prevChar === '\n';
|
|
26199
|
+
}
|
|
26200
|
+
return false;
|
|
26201
|
+
};
|
|
26202
|
+
const stillHasTrigger = (state, activeTrigger, triggerPosition, triggerLength) => {
|
|
26203
|
+
const cursorPosition = state.selection.$from.pos;
|
|
26204
|
+
if (cursorPosition < triggerPosition ||
|
|
26205
|
+
cursorPosition > triggerPosition + triggerLength + 1) {
|
|
26206
|
+
return false;
|
|
26207
|
+
}
|
|
26208
|
+
return (state.doc.textBetween(triggerPosition, triggerPosition + 1) ===
|
|
26209
|
+
activeTrigger);
|
|
26210
|
+
};
|
|
26211
|
+
const getTriggerEventDetail = (view, trigger, value) => {
|
|
26212
|
+
return {
|
|
26213
|
+
trigger: trigger,
|
|
26214
|
+
textEditor: inserterFactory(view),
|
|
26215
|
+
value: value,
|
|
26216
|
+
};
|
|
26217
|
+
};
|
|
26218
|
+
const sendTriggerEvent = (type, view, trigger, value) => {
|
|
26219
|
+
const event = new CustomEvent(type, {
|
|
26220
|
+
detail: getTriggerEventDetail(view, trigger, value),
|
|
26221
|
+
bubbles: true,
|
|
26222
|
+
composed: true,
|
|
26223
|
+
});
|
|
26224
|
+
view.dom.dispatchEvent(event);
|
|
26225
|
+
};
|
|
26226
|
+
const processTransactions = (text, transactions, oldState) => {
|
|
26227
|
+
let textAdded = '';
|
|
26228
|
+
let textRemoved = '';
|
|
26229
|
+
transactions.forEach((transaction) => {
|
|
26230
|
+
if (transaction.docChanged) {
|
|
26231
|
+
transaction.steps.forEach((step) => {
|
|
26232
|
+
if (step instanceof ReplaceStep ||
|
|
26233
|
+
step instanceof ReplaceAroundStep) {
|
|
26234
|
+
const slice = step.slice;
|
|
26235
|
+
const fromPos = step.from;
|
|
26236
|
+
const toPos = step.to;
|
|
26237
|
+
if (slice === null || slice === void 0 ? void 0 : slice.size) {
|
|
26238
|
+
// Text added
|
|
26239
|
+
textAdded += slice.content.textBetween(0, slice.size);
|
|
26240
|
+
}
|
|
26241
|
+
else if (fromPos !== toPos) {
|
|
26242
|
+
// Text removed
|
|
26243
|
+
const removedText = oldState.doc.textBetween(fromPos, toPos);
|
|
26244
|
+
textRemoved += removedText;
|
|
26245
|
+
}
|
|
26246
|
+
}
|
|
26247
|
+
});
|
|
26248
|
+
}
|
|
26249
|
+
});
|
|
26250
|
+
if (textAdded) {
|
|
26251
|
+
text += textAdded;
|
|
26252
|
+
}
|
|
26253
|
+
else if (textRemoved) {
|
|
26254
|
+
text = text.slice(0, -textRemoved.length);
|
|
26255
|
+
}
|
|
26256
|
+
return text;
|
|
26257
|
+
};
|
|
26258
|
+
const createTriggerPlugin = (triggerCharacters) => {
|
|
26259
|
+
let activeTrigger = null;
|
|
26260
|
+
let triggerText = '';
|
|
26261
|
+
let pluginView = null;
|
|
26262
|
+
let triggerPosition = null;
|
|
26263
|
+
const stopTrigger = () => {
|
|
26264
|
+
triggerText = '';
|
|
26265
|
+
sendTriggerEvent('triggerStop', pluginView, activeTrigger, triggerText);
|
|
26266
|
+
triggerPosition = null;
|
|
26267
|
+
activeTrigger = null;
|
|
26268
|
+
};
|
|
26269
|
+
const handleKeyDown = (view, event) => {
|
|
26270
|
+
const { state } = view;
|
|
26271
|
+
if (event.key === 'Escape') {
|
|
26272
|
+
stopTrigger();
|
|
26273
|
+
return true;
|
|
26274
|
+
}
|
|
26275
|
+
if (isTrigger(event.key, triggerCharacters) && shouldTrigger(state)) {
|
|
26276
|
+
activeTrigger = event.key;
|
|
26277
|
+
triggerText = '';
|
|
26278
|
+
triggerPosition = state.selection.$from.pos - triggerText.length;
|
|
26279
|
+
sendTriggerEvent('triggerStart', view, activeTrigger, triggerText);
|
|
26280
|
+
return false;
|
|
26281
|
+
}
|
|
26282
|
+
return false;
|
|
26283
|
+
};
|
|
26284
|
+
const appendTransactions = (transactions, oldState, newState) => {
|
|
26285
|
+
if (!activeTrigger || !triggerPosition || !pluginView) {
|
|
26286
|
+
return;
|
|
26287
|
+
}
|
|
26288
|
+
if (!stillHasTrigger(newState, activeTrigger, triggerPosition, triggerText.length)) {
|
|
26289
|
+
return;
|
|
26290
|
+
}
|
|
26291
|
+
const updatedText = processTransactions(triggerText, transactions, oldState);
|
|
26292
|
+
if (updatedText !== triggerText) {
|
|
26293
|
+
triggerText = updatedText;
|
|
26294
|
+
sendTriggerEvent('triggerChange', pluginView, activeTrigger, triggerText.slice(1));
|
|
26295
|
+
}
|
|
26296
|
+
};
|
|
26297
|
+
return new Plugin({
|
|
26298
|
+
key: new PluginKey('triggerPlugin'),
|
|
26299
|
+
view: (view) => {
|
|
26300
|
+
pluginView = view;
|
|
26301
|
+
return {};
|
|
26302
|
+
},
|
|
26303
|
+
state: {
|
|
26304
|
+
init: () => {
|
|
26305
|
+
return {};
|
|
26306
|
+
},
|
|
26307
|
+
apply: (transaction) => {
|
|
26308
|
+
if (transaction.getMeta('stopTrigger')) {
|
|
26309
|
+
stopTrigger();
|
|
26310
|
+
}
|
|
26311
|
+
return {};
|
|
26312
|
+
},
|
|
26313
|
+
},
|
|
26314
|
+
props: {
|
|
26315
|
+
handleKeyDown: handleKeyDown,
|
|
26316
|
+
},
|
|
26317
|
+
appendTransaction: appendTransactions,
|
|
26318
|
+
});
|
|
26319
|
+
};
|
|
26320
|
+
|
|
26131
26321
|
const prosemirrorAdapterCss = "@charset \"UTF-8\";:host{--mdc-theme-primary:var(\n --lime-primary-color,\n rgb(var(--color-teal-default))\n );--mdc-theme-secondary:var(\n --lime-secondary-color,\n rgb(var(--contrast-1100))\n );--mdc-theme-on-primary:var(\n --lime-on-primary-color,\n rgb(var(--contrast-100))\n );--mdc-theme-on-secondary:var(\n --lime-on-secondary-color,\n rgb(var(--contrast-100))\n );--mdc-theme-text-disabled-on-background:var(\n --lime-text-disabled-on-background-color,\n rgba(var(--contrast-1700), 0.38)\n );--mdc-theme-text-primary-on-background:var(\n --lime-text-primary-on-background-color,\n rgba(var(--contrast-1700), 0.87)\n );--mdc-theme-text-secondary-on-background:var(\n --lime-text-secondary-on-background-color,\n rgba(var(--contrast-1700), 0.54)\n );--mdc-theme-error:var(\n --lime-error-background-color,\n rgb(var(--color-red-dark))\n );--lime-error-text-color:rgb(var(--color-red-darker));--mdc-theme-surface:var(\n --lime-surface-background-color,\n rgb(var(--contrast-100))\n );--mdc-theme-on-surface:var(\n --lime-on-surface-color,\n rgb(var(--contrast-1500))\n )}:host(limel-prosemirror-adapter){display:flex;flex-direction:column}:host(limel-prosemirror-adapter) .toolbar{order:1}:host(limel-prosemirror-adapter) div#editor{order:2;height:100%;flex-grow:1}:host(limel-prosemirror-adapter) div[contenteditable=true]{height:100%}*{box-sizing:border-box}:host(limel-prosemirror-adapter:hover) .toolbar,:host(limel-prosemirror-adapter:focus-within) .toolbar{will-change:grid-template-rows}:host(limel-prosemirror-adapter:hover) limel-action-bar,:host(limel-prosemirror-adapter:focus-within) limel-action-bar{will-change:opacity, padding}:host(limel-prosemirror-adapter:hover) .ProseMirror,:host(limel-prosemirror-adapter:focus-within) .ProseMirror{will-change:padding}.ProseMirror-menubar-wrapper{display:grid;grid-template-rows:auto 1fr}.ProseMirror-textblock-dropdown{min-width:3em}.ProseMirror-tooltip .ProseMirror-menu{width:-webkit-fit-content;width:fit-content;white-space:pre}.toolbar{--action-bar-border-radius:0.25rem;border-radius:var(--action-bar-border-radius);flex-shrink:0;position:sticky;z-index:1;top:0;width:100%;display:grid;grid-template-rows:var(--limel-prosemirror-adapter-toolbar-grid-template-rows);transition-property:grid-template-rows;transition-duration:var(--limel-prosemirror-adapter-toolbar-grid-template-rows-transition-duration);transition-timing-function:var(--limel-prosemirror-adapter-toolbar-transition-timing-function);background-color:rgba(var(--contrast-200), 0.5);backdrop-filter:blur(0.5rem);-webkit-backdrop-filter:blur(0.5rem)}limel-action-bar{min-width:0;transition-property:padding, opacity;transition-duration:var(--limel-prosemirror-adapter-toolbar-grid-template-rows-transition-duration);transition-timing-function:var(--limel-prosemirror-adapter-toolbar-transition-timing-function);opacity:var(--limel-prosemirror-adapter-toolbar-opacity);padding:var(--limel-prosemirror-adapter-action-bar-padding-top-bottom, 0.125rem) 0.25rem;background-color:transparent;overflow:hidden}.ProseMirror{transition-duration:padding;transition-duration:var(--limel-prosemirror-adapter-toolbar-grid-template-rows-transition-duration);transition-timing-function:var(--limel-prosemirror-adapter-toolbar-transition-timing-function);position:relative;word-wrap:break-word;white-space:pre-wrap;white-space:break-spaces;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;font-feature-settings:\"liga\" 0;padding:var(--limel-text-editor-padding)}.ProseMirror [draggable][contenteditable=false]{user-select:text}.ProseMirror:focus-visible{outline:none}.ProseMirror-hideselection{caret-color:transparent}.ProseMirror-hideselection *::selection{background:transparent}.ProseMirror-hideselection *::-moz-selection{background:transparent}.ProseMirror-selectednode{outline:0.125rem solid rgb(var(--color-sky-light))}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{content:\"\";position:absolute;left:-2rem;right:-0.125rem;top:-0.125rem;bottom:-0.125rem;border:0.125rem solid rgb(var(--color-sky-light));pointer-events:none}img.ProseMirror-separator{display:inline !important;border:none !important;margin:0 !important}limel-portal{width:25rem}blockquote{position:relative;font-weight:100;font-size:0.875rem;max-width:100%;line-height:1.4;margin:0;padding:0.5rem 1.25rem;border-radius:0.05rem 0.75rem;background-color:rgb(var(--contrast-300))}blockquote:before,blockquote:after{position:absolute;font-size:2.75rem;opacity:0.4}blockquote:before{content:\"“\";left:0;top:-0.75rem}blockquote:after{content:\"”\";right:0;bottom:-2rem}:host(limel-markdown.truncate-paragraphs) p{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}p,li{font-size:0.875rem;word-break:break-word;hyphens:auto;-webkit-hyphens:auto}a{word-break:break-all}p{margin-top:0;margin-bottom:0.5rem}p:only-child{margin-bottom:0}a{transition:color 0.2s ease;color:var(--markdown-hyperlink-color, rgb(var(--color-blue-dark)));text-decoration:none}a:hover{color:var(--markdown-hyperlink-color--hovered, rgb(var(--color-blue-default)))}hr{margin:1.75rem 0 2rem 0;border-width:0;border-top:1px solid rgb(var(--contrast-500))}dl{display:grid;grid-template-columns:1fr 2fr;grid-template-rows:1fr;margin-bottom:2rem;border:1px solid rgb(var(--contrast-400));border-radius:0.375rem;background-color:rgb(var(--contrast-200))}dl dt,dl dd{padding:0.375rem 0.5rem;font-size:0.875rem;margin:0}dl dt:nth-of-type(even),dl dd:nth-of-type(even){background-color:rgb(var(--contrast-300))}dl dt:first-child{border-top-left-radius:0.375rem}dl dt:last-child{border-bottom-left-radius:0.375rem}dl dd:first-child{border-top-right-radius:0.375rem}dl dd:last-child{border-bottom-right-radius:0.375rem}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.125rem}h4{font-size:1rem}h5{font-size:0.875rem}h6{font-size:0.75rem}h1,h2{margin-top:0.5rem;margin-bottom:0.5rem;letter-spacing:-0.03125rem;font-weight:500}h3,h4{margin-top:0.75rem;margin-bottom:0.25rem;font-weight:600}h5,h6{margin-top:0.5rem;margin-bottom:0.125rem;font-weight:600}h1,h2,h3,h4,h5,h6{word-break:break-word;hyphens:auto;-webkit-hyphens:auto}:not([contenteditable=true]) h1,:not([contenteditable=true]) h2,:not([contenteditable=true]) h3,:not([contenteditable=true]) h4,:not([contenteditable=true]) h5,:not([contenteditable=true]) h6{text-wrap:balance}[contenteditable=true] h1,[contenteditable=true] h2,[contenteditable=true] h3,[contenteditable=true] h4,[contenteditable=true] h5,[contenteditable=true] h6{text-wrap:initial}ul{list-style:none}ul li{position:relative;margin-left:0.75rem}ul li:before{content:\"\";position:absolute;left:-0.5rem;top:0.5rem;width:0.25rem;height:0.25rem;border-radius:50%;background-color:rgb(var(--contrast-700));display:block}ol{margin-top:0.25rem;padding-left:1rem}ul{margin-top:0.25rem;padding-left:0}ul ul,ul ol,ol ol,ol ul{margin-left:0}li{margin-bottom:0.25rem}code{font-family:ui-monospace, \"Cascadia Code\", \"Source Code Pro\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace;font-size:0.8125rem;letter-spacing:-0.0125rem;color:rgb(var(--contrast-1300));-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;display:inline-block;border-radius:0.25rem;padding:0.03125rem 0.25rem;background-color:rgb(var(--contrast-600))}pre>code{display:block;margin:0.5rem 0;padding:0.5rem 0.75rem;overflow:auto;white-space:pre-wrap}:host(limel-markdown:not(.no-table-styles)) table{table-layout:auto;min-width:100%;border-collapse:collapse;border-spacing:0;background:transparent;margin:0.75rem 0;border:1px solid rgb(var(--contrast-400))}:host(limel-markdown:not(.no-table-styles)) th,:host(limel-markdown:not(.no-table-styles)) td{text-align:left;vertical-align:top;transition:background-color 0.2s ease;font-size:0.875rem}:host(limel-markdown:not(.no-table-styles)) td{padding:0.5rem 0.375rem 0.75rem 0.375rem}:host(limel-markdown:not(.no-table-styles)) tr th{background-color:rgb(var(--contrast-400));padding:0.25rem 0.375rem;font-weight:normal}:host(limel-markdown:not(.no-table-styles)) tr th:only-child{text-align:center}:host(limel-markdown:not(.no-table-styles)) tbody tr:nth-child(odd) td{background-color:rgb(var(--contrast-200))}:host(limel-markdown:not(.no-table-styles)) tbody tr:hover td{background-color:rgb(var(--contrast-300))}";
|
|
26132
26322
|
|
|
26133
26323
|
const DEBOUNCE_TIMEOUT = 300;
|
|
@@ -26229,7 +26419,8 @@ const ProsemirrorAdapter = class {
|
|
|
26229
26419
|
this.contentType = 'markdown';
|
|
26230
26420
|
this.value = undefined;
|
|
26231
26421
|
this.language = undefined;
|
|
26232
|
-
this.
|
|
26422
|
+
this.customElements = [];
|
|
26423
|
+
this.triggerCharacters = [];
|
|
26233
26424
|
this.view = undefined;
|
|
26234
26425
|
this.actionBarItems = [];
|
|
26235
26426
|
this.link = { href: '' };
|
|
@@ -26291,7 +26482,7 @@ const ProsemirrorAdapter = class {
|
|
|
26291
26482
|
}
|
|
26292
26483
|
setupContentConverter() {
|
|
26293
26484
|
if (this.contentType === 'markdown') {
|
|
26294
|
-
this.contentConverter = new MarkdownConverter(this.
|
|
26485
|
+
this.contentConverter = new MarkdownConverter(this.customElements);
|
|
26295
26486
|
}
|
|
26296
26487
|
else if (this.contentType === 'html') {
|
|
26297
26488
|
this.contentConverter = new HTMLConverter();
|
|
@@ -26315,9 +26506,9 @@ const ProsemirrorAdapter = class {
|
|
|
26315
26506
|
}
|
|
26316
26507
|
initializeSchema() {
|
|
26317
26508
|
let nodes = schema$1.spec.nodes;
|
|
26318
|
-
this.
|
|
26319
|
-
const newNodeSpec = createNodeSpec(
|
|
26320
|
-
const nodeName =
|
|
26509
|
+
this.customElements.forEach((customElement) => {
|
|
26510
|
+
const newNodeSpec = createNodeSpec(customElement);
|
|
26511
|
+
const nodeName = customElement.tagName;
|
|
26321
26512
|
nodes = nodes.append({ [nodeName]: newNodeSpec });
|
|
26322
26513
|
});
|
|
26323
26514
|
nodes = addListNodes(nodes, 'paragraph block*', 'block');
|
|
@@ -26346,6 +26537,7 @@ const ProsemirrorAdapter = class {
|
|
|
26346
26537
|
...exampleSetup({ schema: this.schema, menuBar: false }),
|
|
26347
26538
|
keymap(this.menuCommandFactory.buildKeymap()),
|
|
26348
26539
|
createLinkPlugin(this.handleNewLinkSelection),
|
|
26540
|
+
createTriggerPlugin(this.triggerCharacters),
|
|
26349
26541
|
createImageRemoverPlugin(),
|
|
26350
26542
|
createMenuStateTrackingPlugin(editorMenuTypesArray, this.menuCommandFactory, this.updateActiveActionBarItems),
|
|
26351
26543
|
createActionBarInteractionPlugin(this.menuCommandFactory),
|