lintje 0.5.1 → 0.6.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/dist-elements/actions.js +1 -5
- package/dist-elements/charts.js +1 -5
- package/dist-elements/chat.js +1 -6
- package/dist-elements/chunks/base-DuuwEY22.js +224 -0
- package/dist-elements/chunks/chart-styles-zJy-DGvZ.js +44 -0
- package/dist-elements/chunks/controls-IwMNNdZt.js +1 -0
- package/dist-elements/chunks/copied-Dx6jfxoK.js +1 -0
- package/dist-elements/chunks/date-format-5bii3QLP.js +1 -0
- package/dist-elements/chunks/debounce-Dfwdcv-z.js +1 -0
- package/dist-elements/chunks/dialog-CuB90unp.js +1 -0
- package/dist-elements/chunks/dialog-close-CIwpGpo7.js +1 -0
- package/dist-elements/chunks/disclosure-DHZz0V4I.js +22 -0
- package/dist-elements/chunks/disclosure-DjLQzn9n.js +1 -0
- package/dist-elements/chunks/download-D1wbtARJ.js +13 -0
- package/dist-elements/chunks/focus-trap-qYvMiFZF.js +1 -0
- package/dist-elements/chunks/frame-resize-observer-BGZg6VbV.js +1 -0
- package/dist-elements/chunks/input-CTxDOlLs.js +1 -0
- package/dist-elements/chunks/input-fzGBdp-5.js +8 -0
- package/dist-elements/chunks/key-CAxrgBxD.js +1 -0
- package/dist-elements/chunks/live-message-CYZ-Ch7D.js +1 -0
- package/dist-elements/chunks/playback-gEUDw038.js +1 -0
- package/dist-elements/chunks/player-Dh7ZHcMF.js +39 -0
- package/dist-elements/chunks/prose-DOF7h3je.js +1 -0
- package/dist-elements/chunks/sentence-DCIShaRE.js +3 -0
- package/dist-elements/chunks/sentence-end-DqHdi7Wb.js +1 -0
- package/dist-elements/chunks/stagger-nGiD5JgJ.js +133 -0
- package/dist-elements/chunks/transition-DZKyyCQs.js +1 -0
- package/dist-elements/content.js +1 -11
- package/dist-elements/core.js +1 -1
- package/dist-elements/custom-elements.json +121 -96
- package/dist-elements/data-types.json +140 -17
- package/dist-elements/dev.js +1 -31
- package/dist-elements/feedback.js +1 -11
- package/dist-elements/filters.js +1 -3
- package/dist-elements/forms.js +1 -7
- package/dist-elements/frame.js +1 -9
- package/dist-elements/guides/dashboard.md +3 -2
- package/dist-elements/guides/events.md +12 -2
- package/dist-elements/guides/start.md +6 -3
- package/dist-elements/inputs.js +1 -21
- package/dist-elements/layout.js +1 -4
- package/dist-elements/lintje.js +3569 -43561
- package/dist-elements/map.js +1 -1
- package/dist-elements/overlays.js +1 -5
- package/dist-elements/tables.js +1 -9
- package/dist-elements/tag/activity-log.js +10 -58
- package/dist-elements/tag/ai-label.js +5 -38
- package/dist-elements/tag/announcement.js +9 -105
- package/dist-elements/tag/app-search.js +22 -173
- package/dist-elements/tag/audio-player.js +49 -263
- package/dist-elements/tag/badge.js +1 -1
- package/dist-elements/tag/breadcrumbs.js +11 -76
- package/dist-elements/tag/button.js +1 -1
- package/dist-elements/tag/card-list.js +8 -77
- package/dist-elements/tag/card.js +36 -171
- package/dist-elements/tag/chart.js +457 -2291
- package/dist-elements/tag/chat-answer.js +50 -195
- package/dist-elements/tag/chat-composer.js +48 -403
- package/dist-elements/tag/chat-message.js +13 -75
- package/dist-elements/tag/chat-strip.js +20 -100
- package/dist-elements/tag/chat-suggestions.js +8 -51
- package/dist-elements/tag/chat.js +33 -191
- package/dist-elements/tag/checkbox-group.js +6 -46
- package/dist-elements/tag/checkbox.js +8 -47
- package/dist-elements/tag/code.js +9 -55
- package/dist-elements/tag/combobox.js +22 -180
- package/dist-elements/tag/conflict-alert.js +12 -67
- package/dist-elements/tag/copy-button.js +11 -102
- package/dist-elements/tag/data-table.js +302 -1538
- package/dist-elements/tag/date-input.js +28 -157
- package/dist-elements/tag/date-range.js +30 -231
- package/dist-elements/tag/description-list.js +18 -87
- package/dist-elements/tag/dialog.js +10 -120
- package/dist-elements/tag/document-viewer.js +30 -210
- package/dist-elements/tag/drawer.js +10 -86
- package/dist-elements/tag/empty-state.js +1 -58
- package/dist-elements/tag/error-page.js +13 -90
- package/dist-elements/tag/error-summary.js +15 -74
- package/dist-elements/tag/expander.js +5 -68
- package/dist-elements/tag/explainer.js +6 -61
- package/dist-elements/tag/field.js +5 -50
- package/dist-elements/tag/file-upload.js +40 -234
- package/dist-elements/tag/filter-bar.js +48 -221
- package/dist-elements/tag/filter-sheet.js +7 -77
- package/dist-elements/tag/filter-zone.js +25 -202
- package/dist-elements/tag/find.js +16 -110
- package/dist-elements/tag/footer.js +14 -36
- package/dist-elements/tag/form-actions.js +3 -103
- package/dist-elements/tag/form-section.js +6 -49
- package/dist-elements/tag/form.js +5 -291
- package/dist-elements/tag/gallery.js +10 -48
- package/dist-elements/tag/grid-item.js +1 -1
- package/dist-elements/tag/grid.js +1 -1
- package/dist-elements/tag/hero.js +7 -50
- package/dist-elements/tag/highlight.js +3 -57
- package/dist-elements/tag/icon-button.js +1 -1
- package/dist-elements/tag/icon.js +1 -1
- package/dist-elements/tag/job-list.js +4 -117
- package/dist-elements/tag/kpi-row.js +10 -30
- package/dist-elements/tag/kpi.js +74 -357
- package/dist-elements/tag/level-meter.js +9 -52
- package/dist-elements/tag/list.js +36 -225
- package/dist-elements/tag/log-viewer.js +101 -707
- package/dist-elements/tag/logo.js +27 -82
- package/dist-elements/tag/map.js +825 -21851
- package/dist-elements/tag/menu-button.js +35 -286
- package/dist-elements/tag/modal.js +16 -82
- package/dist-elements/tag/multiselect.js +28 -157
- package/dist-elements/tag/note.js +3 -22
- package/dist-elements/tag/notifications.js +31 -157
- package/dist-elements/tag/number-input.js +20 -88
- package/dist-elements/tag/page-header.js +17 -178
- package/dist-elements/tag/pagination.js +31 -232
- package/dist-elements/tag/popover.js +1 -1
- package/dist-elements/tag/progress-bar.js +1 -1
- package/dist-elements/tag/prose.js +1 -31
- package/dist-elements/tag/qr-code.js +6 -878
- package/dist-elements/tag/radio-group.js +11 -53
- package/dist-elements/tag/range.js +28 -222
- package/dist-elements/tag/recording-status.js +10 -82
- package/dist-elements/tag/repeater-row.js +1 -1
- package/dist-elements/tag/repeater.js +8 -139
- package/dist-elements/tag/segmented.js +12 -73
- package/dist-elements/tag/select.js +7 -49
- package/dist-elements/tag/shell.js +257 -998
- package/dist-elements/tag/skeleton.js +1 -1
- package/dist-elements/tag/slot-picker.js +13 -56
- package/dist-elements/tag/sortable-list.js +19 -193
- package/dist-elements/tag/spinner.js +1 -1
- package/dist-elements/tag/split-pane.js +10 -155
- package/dist-elements/tag/status-dot.js +1 -1
- package/dist-elements/tag/stepper.js +18 -118
- package/dist-elements/tag/streaming-text.js +14 -94
- package/dist-elements/tag/sub-nav.js +27 -141
- package/dist-elements/tag/tabs.js +27 -139
- package/dist-elements/tag/tag-input.js +32 -215
- package/dist-elements/tag/text-editor.js +31 -397
- package/dist-elements/tag/text-input.js +21 -110
- package/dist-elements/tag/textarea.js +11 -139
- package/dist-elements/tag/tile.js +1 -1
- package/dist-elements/tag/time-input.js +17 -199
- package/dist-elements/tag/toast.js +12 -100
- package/dist-elements/tag/toggle.js +6 -39
- package/dist-elements/tag/toggletip.js +8 -108
- package/dist-elements/tag/token-value.js +2 -72
- package/dist-elements/tag/tooltip.js +1 -1
- package/dist-elements/tag/transcript.js +31 -278
- package/dist-elements/tag/translator.js +7 -80
- package/dist-elements/tag/tree-view.js +22 -156
- package/dist-elements/tag/user-menu.js +29 -175
- package/dist-elements/tag/video-player.js +15 -154
- package/dist-elements/tokens.css +24 -8
- package/dist-elements/tokens.json +10 -6
- package/dist-elements/types/components/charts/chart/chart.d.ts +9 -1
- package/dist-elements/types/components/content/log-viewer/log-viewer.d.ts +0 -2
- package/dist-elements/types/components/feedback/recording-status/recording-status.d.ts +5 -2
- package/dist-elements/types/components/feedback/streaming-text/streaming-text.d.ts +1 -0
- package/dist-elements/types/components/forms/repeater/repeater.d.ts +1 -1
- package/dist-elements/types/components/forms/stepper/stepper.d.ts +12 -1
- package/dist-elements/types/components/frame/notifications/notifications.d.ts +0 -2
- package/dist-elements/types/components/inputs/checkbox-group/checkbox-group.d.ts +3 -2
- package/dist-elements/types/components/inputs/file-upload/file-upload.d.ts +12 -2
- package/dist-elements/types/components/inputs/find/find.d.ts +0 -3
- package/dist-elements/types/components/inputs/number-input/number-input.d.ts +3 -2
- package/dist-elements/types/components/inputs/range/range.d.ts +1 -0
- package/dist-elements/types/components/inputs/shared/input.d.ts +25 -3
- package/dist-elements/types/components/inputs/tag-input/tag-input.d.ts +0 -1
- package/dist-elements/types/components/map/map/map.d.ts +9 -1
- package/dist-elements/types/components/overlays/popover/popover.d.ts +6 -1
- package/dist-elements/types/components/shared/charts/map-chart/drawings.d.ts +4 -1
- package/dist-elements/types/components/shared/charts/map-chart/leaflet.d.ts +1 -1
- package/dist-elements/types/components/shared/charts/map-chart/map-chart.d.ts +5 -2
- package/dist-elements/types/components/shared/charts/map-chart/marks.d.ts +15 -4
- package/dist-elements/types/components/shared/charts/map-chart/series-style.d.ts +10 -0
- package/dist-elements/types/components/shared/charts/pie-chart/pie-chart.d.ts +2 -1
- package/dist-elements/types/components/shared/charts/shared/axes.d.ts +5 -3
- package/dist-elements/types/components/shared/charts/shared/controller.d.ts +15 -3
- package/dist-elements/types/components/shared/charts/shared/mark-select.d.ts +2 -1
- package/dist-elements/types/components/shared/charts/shared/runs.d.ts +7 -0
- package/dist-elements/types/components/shared/charts/shared/types.d.ts +57 -3
- package/dist-elements/types/components/shared/controls.d.ts +2 -0
- package/dist-elements/types/components/shared/disclosure.d.ts +2 -2
- package/dist-elements/types/components/shared/frame-resize-observer.d.ts +12 -0
- package/dist-elements/types/components/shared/live-message.d.ts +17 -0
- package/dist-elements/types/components/shared/transition.d.ts +12 -0
- package/dist-elements/types/components/tables/card/card.d.ts +0 -5
- package/dist-elements/types/components/tables/card-list/card-list.d.ts +2 -5
- package/dist-elements/types/components/tables/data-table/data-table.d.ts +8 -5
- package/dist-elements/types/components/tables/data-table/filters.d.ts +4 -2
- package/dist-elements/types/components/tables/description-list/description-list.d.ts +3 -2
- package/dist-elements/types/components/tables/sortable-list/sortable-list.d.ts +1 -1
- package/dist-elements/types/core/element.d.ts +5 -2
- package/dist-elements/types/core/links.d.ts +2 -0
- package/dist-elements/types/core/styles.d.ts +2 -0
- package/dist-elements/types/types.d.ts +8 -4
- package/package.json +2 -2
- package/dist-elements/chunks/base-Bd2pmq86.js +0 -2865
- package/dist-elements/chunks/chart-styles-DEd0uIWK.js +0 -108
- package/dist-elements/chunks/controls-_4ac1Lpz.js +0 -121
- package/dist-elements/chunks/copied-7BXYVkXT.js +0 -4
- package/dist-elements/chunks/date-format-DxP9yfDp.js +0 -152
- package/dist-elements/chunks/debounce-JXnLMCcF.js +0 -25
- package/dist-elements/chunks/dialog-BNbkcAxH.js +0 -28
- package/dist-elements/chunks/dialog-close-u75fVEw4.js +0 -4
- package/dist-elements/chunks/disclosure-BK-MJsEn.js +0 -4
- package/dist-elements/chunks/disclosure-CcTr_FLd.js +0 -64
- package/dist-elements/chunks/download-BGe7rpQo.js +0 -103
- package/dist-elements/chunks/focus-trap-Cl99vti9.js +0 -73
- package/dist-elements/chunks/input-Dg1o0Sfu.js +0 -4
- package/dist-elements/chunks/input-KqBT3qWD.js +0 -195
- package/dist-elements/chunks/key-D5wy9ZTj.js +0 -4
- package/dist-elements/chunks/playback-DZJ_NMXv.js +0 -133
- package/dist-elements/chunks/player-BRG7bk_h.js +0 -208
- package/dist-elements/chunks/prose-CmKVp5kL.js +0 -4
- package/dist-elements/chunks/sentence-DIByCXQV.js +0 -15
- package/dist-elements/chunks/sentence-end-8jlqKJ5P.js +0 -8
- package/dist-elements/chunks/stagger-DGRHP_We.js +0 -515
|
@@ -1,392 +1,31 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
function
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
"https",
|
|
15
|
-
"mailto",
|
|
16
|
-
"tel"
|
|
17
|
-
].includes(n[1].toLowerCase()) ? null : t.replace(/ /g, "%20").replace(/\(/g, "%28").replace(/\)/g, "%29");
|
|
18
|
-
}
|
|
19
|
-
var p = /[\\`*_{}[\]()#+\-.!>~|]/;
|
|
20
|
-
function m(e) {
|
|
21
|
-
let t = "", n = 0;
|
|
22
|
-
for (; n < e.length;) {
|
|
23
|
-
let r = e[n];
|
|
24
|
-
if (r === "\\" && p.test(e[n + 1] ?? "")) t += d(e[n + 1]), n += 2;
|
|
25
|
-
else if (r === "\n") t += "<br>", n += 1;
|
|
26
|
-
else {
|
|
27
|
-
if (e.startsWith("**", n)) {
|
|
28
|
-
let r = h(e, "**", n + 2);
|
|
29
|
-
if (r > n + 2) {
|
|
30
|
-
t += `<strong>${m(e.slice(n + 2, r))}</strong>`, n = r + 2;
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
if (r === "*" || r === "_") {
|
|
35
|
-
let i = h(e, r, n + 1);
|
|
36
|
-
if (i > n + 1) {
|
|
37
|
-
t += `<em>${m(e.slice(n + 1, i))}</em>`, n = i + 1;
|
|
38
|
-
continue;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (r === "[") {
|
|
42
|
-
let r = /^\[((?:\\.|[^\]\\])+)\]\(([^()\s]+)\)/.exec(e.slice(n));
|
|
43
|
-
if (r) {
|
|
44
|
-
let e = f(r[2]), i = m(r[1]);
|
|
45
|
-
t += e ? `<a href="${d(e)}">${i}</a>` : i, n += r[0].length;
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
t += d(r), n += 1;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return t;
|
|
53
|
-
}
|
|
54
|
-
function h(e, t, n) {
|
|
55
|
-
for (let r = n; r < e.length; r++) if (e[r] === "\\") r += 1;
|
|
56
|
-
else {
|
|
57
|
-
if (t === "**" && e.startsWith("**", r)) return r;
|
|
58
|
-
if (t.length === 1 && e[r] === t) {
|
|
59
|
-
if (t === "*" && e[r + 1] === "*") {
|
|
60
|
-
let t = h(e, "**", r + 2);
|
|
61
|
-
if (t === -1) return -1;
|
|
62
|
-
r = t + 1;
|
|
63
|
-
continue;
|
|
64
|
-
}
|
|
65
|
-
return r;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return -1;
|
|
69
|
-
}
|
|
70
|
-
var g = /^#{1,6}\s+(.*)$/, _ = /^[-*]\s+(.*)$/;
|
|
71
|
-
function v(e) {
|
|
72
|
-
let t = (e ?? "").replace(/\r\n?/g, "\n").split("\n"), n = [], r = [], i = [], a = () => {
|
|
73
|
-
r.length && n.push(`<p>${m(r.join("\n"))}</p>`), r = [];
|
|
74
|
-
}, o = () => {
|
|
75
|
-
i.length && n.push(`<ul>${i.map((e) => `<li>${e}</li>`).join("")}</ul>`), i = [];
|
|
76
|
-
};
|
|
77
|
-
for (let e of t) {
|
|
78
|
-
let t = e.trimEnd(), s = g.exec(t), c = _.exec(t);
|
|
79
|
-
t.trim() === "" ? (a(), o()) : s ? (a(), o(), n.push(`<h3>${m(s[1].trim())}</h3>`)) : c ? (a(), i.push(m(c[1].trim()))) : (o(), r.push(t.trim()));
|
|
80
|
-
}
|
|
81
|
-
return a(), o(), n.join("");
|
|
82
|
-
}
|
|
83
|
-
var y = (e) => e.replace(/([\\*_[\]])/g, "\\$1"), b = (e) => e.replace(/^(\s*)(#|[-*+](?=\s))/, "$1\\$2"), x = /* @__PURE__ */ new Set(/* @__PURE__ */ "ADDRESS.ARTICLE.ASIDE.BLOCKQUOTE.DD.DIV.DL.DT.FIGCAPTION.FIGURE.FOOTER.FORM.HEADER.HR.MAIN.NAV.P.PRE.SECTION.TABLE.TBODY.THEAD.TFOOT.TR.TD.TH".split(".")), S = /* @__PURE__ */ new Set([
|
|
84
|
-
"H1",
|
|
85
|
-
"H2",
|
|
86
|
-
"H3",
|
|
87
|
-
"H4",
|
|
88
|
-
"H5",
|
|
89
|
-
"H6"
|
|
90
|
-
]), C = /* @__PURE__ */ new Set(["UL", "OL"]), w = /* @__PURE__ */ new Set([
|
|
91
|
-
"SCRIPT",
|
|
92
|
-
"STYLE",
|
|
93
|
-
"TEMPLATE",
|
|
94
|
-
"NOSCRIPT",
|
|
95
|
-
"IFRAME",
|
|
96
|
-
"OBJECT",
|
|
97
|
-
"SVG",
|
|
98
|
-
"HEAD"
|
|
99
|
-
]), T = (e) => e.nodeType === 1, E = (e) => T(e) && (x.has(e.tagName) || S.has(e.tagName) || C.has(e.tagName) || e.tagName === "LI");
|
|
100
|
-
function D(e) {
|
|
101
|
-
let t = e.style?.fontWeight ?? "", n = e.style?.fontStyle ?? "";
|
|
102
|
-
return {
|
|
103
|
-
bold: t === "" ? void 0 : t === "bold" || Number(t) >= 600,
|
|
104
|
-
italic: n === "" ? void 0 : n === "italic" || n === "oblique"
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
function O(e, t) {
|
|
108
|
-
let n = /^(\s*)([\s\S]*?)(\s*)$/.exec(e);
|
|
109
|
-
return n[2] ? `${n[1]}${t}${n[2]}${t}${n[3]}` : e;
|
|
110
|
-
}
|
|
111
|
-
function k(e) {
|
|
112
|
-
if (e.nodeType === 3) return y((e.textContent ?? "").replace(/\s+/g, " "));
|
|
113
|
-
if (!T(e) || w.has(e.tagName)) return "";
|
|
114
|
-
if (e.tagName === "BR") return "\n";
|
|
115
|
-
if (e.tagName === "IMG") return y(e.getAttribute("alt") ?? "");
|
|
116
|
-
let t = [...e.childNodes].map(k).join(""), n = e.tagName, r = D(e), i = r.bold ?? (n === "B" || n === "STRONG"), a = r.italic ?? (n === "I" || n === "EM");
|
|
117
|
-
if (n === "A") {
|
|
118
|
-
let n = f(e.getAttribute("href"));
|
|
119
|
-
n && t.trim() && (t = `[${t.trim()}](${n})`);
|
|
120
|
-
}
|
|
121
|
-
return a && (t = O(t, "_")), i && (t = O(t, "**")), t;
|
|
122
|
-
}
|
|
123
|
-
var A = (e) => e.split("\n").map((e) => e.replace(/ {2,}/g, " ").trim()).join("\n").replace(/^\n+|\n+$/g, "");
|
|
124
|
-
function j(e, t) {
|
|
125
|
-
let n = [], r = () => {
|
|
126
|
-
let e = A(n.map(k).join(""));
|
|
127
|
-
e && t.push({
|
|
128
|
-
kind: "p",
|
|
129
|
-
text: e
|
|
130
|
-
}), n = [];
|
|
131
|
-
};
|
|
132
|
-
for (let i of e.childNodes) {
|
|
133
|
-
if (T(i) && w.has(i.tagName)) continue;
|
|
134
|
-
if (!E(i)) {
|
|
135
|
-
n.push(i);
|
|
136
|
-
continue;
|
|
137
|
-
}
|
|
138
|
-
r();
|
|
139
|
-
let e = i;
|
|
140
|
-
if (S.has(e.tagName)) {
|
|
141
|
-
let n = A(k(e).replace(/\n/g, " ")).replace(/\*\*/g, "");
|
|
142
|
-
n && t.push({
|
|
143
|
-
kind: "h",
|
|
144
|
-
text: n
|
|
145
|
-
});
|
|
146
|
-
} else if (C.has(e.tagName) || e.tagName === "LI") for (let n of e.tagName === "LI" ? [e] : e.querySelectorAll("li")) {
|
|
147
|
-
let e = A([...n.childNodes].filter((e) => !(T(e) && C.has(e.tagName))).map((e) => E(e) ? ` ${k(e)} ` : k(e)).join(""));
|
|
148
|
-
e && t.push({
|
|
149
|
-
kind: "li",
|
|
150
|
-
text: e.replace(/\n/g, " ")
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
else j(e, t);
|
|
154
|
-
}
|
|
155
|
-
return r(), t;
|
|
156
|
-
}
|
|
157
|
-
function M(e) {
|
|
158
|
-
let t = [], n = null;
|
|
159
|
-
for (let r of j(e, [])) n && t.push(n === "li" && r.kind === "li" ? "\n" : "\n\n"), r.kind === "h" ? t.push(`### ${r.text}`) : r.kind === "li" ? t.push(`- ${r.text}`) : t.push(r.text.split("\n").map(b).join("\n")), n = r.kind;
|
|
160
|
-
return t.join("");
|
|
161
|
-
}
|
|
162
|
-
function N(e) {
|
|
163
|
-
return v(M(new DOMParser().parseFromString(e, "text/html").body));
|
|
164
|
-
}
|
|
165
|
-
//#endregion
|
|
166
|
-
//#region src/components/inputs/text-editor/text-editor.ts
|
|
167
|
-
var P = [
|
|
168
|
-
{
|
|
169
|
-
format: "bold",
|
|
170
|
-
label: "Vet",
|
|
171
|
-
text: "B"
|
|
172
|
-
},
|
|
173
|
-
{
|
|
174
|
-
format: "italic",
|
|
175
|
-
label: "Cursief",
|
|
176
|
-
text: "I"
|
|
177
|
-
},
|
|
178
|
-
{
|
|
179
|
-
format: "heading",
|
|
180
|
-
label: "Kop",
|
|
181
|
-
text: "H"
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
format: "list",
|
|
185
|
-
label: "Opsomming",
|
|
186
|
-
text: "Opsomming"
|
|
187
|
-
},
|
|
188
|
-
{
|
|
189
|
-
format: "link",
|
|
190
|
-
label: "Link",
|
|
191
|
-
text: "Link"
|
|
192
|
-
}
|
|
193
|
-
], F = {
|
|
194
|
-
bold: ["B", "STRONG"],
|
|
195
|
-
italic: ["I", "EM"],
|
|
196
|
-
heading: [
|
|
197
|
-
"H1",
|
|
198
|
-
"H2",
|
|
199
|
-
"H3",
|
|
200
|
-
"H4",
|
|
201
|
-
"H5",
|
|
202
|
-
"H6"
|
|
203
|
-
],
|
|
204
|
-
list: ["UL", "LI"],
|
|
205
|
-
link: ["A"]
|
|
206
|
-
};
|
|
207
|
-
function I(e, t) {
|
|
208
|
-
typeof document.execCommand == "function" && document.execCommand(e, !1, t);
|
|
209
|
-
}
|
|
210
|
-
function L(e, t) {
|
|
211
|
-
let { startContainer: n, startOffset: r, endContainer: i, endOffset: a } = t;
|
|
212
|
-
e.setBaseAndExtent(n, r, i, a);
|
|
213
|
-
}
|
|
214
|
-
function R(e) {
|
|
215
|
-
let { startContainer: t, startOffset: n } = e;
|
|
216
|
-
if (e.collapsed || t.nodeType !== 3 || n < (t.textContent ?? "").length) return t;
|
|
217
|
-
let r = document.createTreeWalker(e.commonAncestorContainer, NodeFilter.SHOW_TEXT);
|
|
218
|
-
return r.currentNode = t, r.nextNode() ?? t;
|
|
219
|
-
}
|
|
220
|
-
var z = class extends s {
|
|
221
|
-
constructor(...e) {
|
|
222
|
-
super(...e), this.value = "", this.active = /* @__PURE__ */ new Set(), this.collapsed = !0, this.toolIndex = 0, this.linkOpen = !1, this.linkError = "", this.shown = null, this.range = null, this.onSelectionChange = () => {
|
|
223
|
-
let e = this.surface, t = this.selectedRange();
|
|
224
|
-
e && t && e.contains(t.commonAncestorContainer) && (this.range = t.cloneRange(), this.collapsed = t.collapsed, this.active = this.formatsAt(R(t)));
|
|
225
|
-
};
|
|
226
|
-
}
|
|
227
|
-
static {
|
|
228
|
-
this.styles = [
|
|
229
|
-
i,
|
|
230
|
-
t(c),
|
|
231
|
-
t(l),
|
|
232
|
-
t(u)
|
|
233
|
-
];
|
|
234
|
-
}
|
|
235
|
-
static {
|
|
236
|
-
this.properties = {
|
|
237
|
-
value: { type: String },
|
|
238
|
-
active: { state: !0 },
|
|
239
|
-
collapsed: { state: !0 },
|
|
240
|
-
toolIndex: { state: !0 },
|
|
241
|
-
linkOpen: { state: !0 },
|
|
242
|
-
linkError: { state: !0 }
|
|
243
|
-
};
|
|
244
|
-
}
|
|
245
|
-
get surface() {
|
|
246
|
-
return this.renderRoot.querySelector(".lintje-text-editor__surface");
|
|
247
|
-
}
|
|
248
|
-
selection() {
|
|
249
|
-
return this.renderRoot.getSelection?.() ?? document.getSelection();
|
|
250
|
-
}
|
|
251
|
-
selectedRange() {
|
|
252
|
-
let e = this.selection();
|
|
253
|
-
if (!e?.rangeCount) return null;
|
|
254
|
-
let t;
|
|
255
|
-
try {
|
|
256
|
-
t = e.getComposedRanges?.({ shadowRoots: [this.renderRoot] })[0];
|
|
257
|
-
} catch {}
|
|
258
|
-
if (!t) return e.getRangeAt(0);
|
|
259
|
-
let n = document.createRange();
|
|
260
|
-
return n.setStart(t.startContainer, t.startOffset), n.setEnd(t.endContainer, t.endOffset), n;
|
|
261
|
-
}
|
|
262
|
-
connectedCallback() {
|
|
263
|
-
super.connectedCallback(), document.addEventListener("selectionchange", this.onSelectionChange);
|
|
264
|
-
}
|
|
265
|
-
disconnectedCallback() {
|
|
266
|
-
document.removeEventListener("selectionchange", this.onSelectionChange), super.disconnectedCallback();
|
|
267
|
-
}
|
|
268
|
-
formatsAt(e) {
|
|
269
|
-
let t = /* @__PURE__ */ new Set(), n = this.surface;
|
|
270
|
-
for (let r = e; r && r !== n; r = r.parentNode) {
|
|
271
|
-
if (r.nodeType !== 1) continue;
|
|
272
|
-
let e = r.tagName;
|
|
273
|
-
for (let n of P) F[n.format].includes(e) && t.add(n.format);
|
|
274
|
-
}
|
|
275
|
-
return t;
|
|
276
|
-
}
|
|
277
|
-
updated(e) {
|
|
278
|
-
super.updated(e);
|
|
279
|
-
let t = this.surface;
|
|
280
|
-
t && this.value !== this.shown && (t.innerHTML = v(this.value), this.shown = this.value);
|
|
281
|
-
}
|
|
282
|
-
settle(e) {
|
|
283
|
-
let t = this.surface;
|
|
284
|
-
if (!t) return;
|
|
285
|
-
let n = M(t), r = v(n);
|
|
286
|
-
e && t.innerHTML !== r && (t.innerHTML = r), this.shown = n, n !== this.value && (this.value = n, this.commit(n));
|
|
287
|
-
}
|
|
288
|
-
onFocusOut(e) {
|
|
289
|
-
if (this.disabled) return;
|
|
290
|
-
let t = e.relatedTarget, n = t !== null && this.renderRoot.contains(t);
|
|
291
|
-
(e.target === this.surface || !n) && this.settle(!n);
|
|
292
|
-
}
|
|
293
|
-
restore() {
|
|
294
|
-
let e = this.surface, t = this.selection();
|
|
295
|
-
e && (e.focus(), this.range && t && L(t, this.range));
|
|
296
|
-
}
|
|
297
|
-
apply(e) {
|
|
298
|
-
if (!this.disabled) {
|
|
299
|
-
if (e === "link") return this.link();
|
|
300
|
-
this.restore(), I("defaultParagraphSeparator", "p"), e === "bold" && I("bold"), e === "italic" && I("italic"), e === "list" && I("insertUnorderedList"), e === "heading" && I("formatBlock", this.active.has("heading") ? "<p>" : "<h3>"), this.onSelectionChange();
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
link() {
|
|
304
|
-
if (this.active.has("link")) {
|
|
305
|
-
this.restore();
|
|
306
|
-
let e = this.selection(), t = this.range ? R(this.range) : null;
|
|
307
|
-
for (; t && t.tagName !== "A";) t = t.parentNode;
|
|
308
|
-
if (t && e) {
|
|
309
|
-
let n = document.createRange();
|
|
310
|
-
n.selectNodeContents(t), L(e, n);
|
|
311
|
-
}
|
|
312
|
-
I("unlink"), this.onSelectionChange();
|
|
313
|
-
} else this.collapsed || (this.linkError = "", this.linkOpen = !0, this.updateComplete.then(() => this.renderRoot.querySelector(".lintje-text-editor__link-field")?.shadowRoot?.querySelector("input")?.focus()));
|
|
314
|
-
}
|
|
315
|
-
onLinkChange(e) {
|
|
316
|
-
e.stopPropagation();
|
|
317
|
-
let t = f(e.detail);
|
|
318
|
-
t ? (this.linkOpen = !1, this.restore(), I("createLink", t), this.onSelectionChange()) : this.linkError = "Vul een webadres in, zoals https://www.rijksoverheid.nl";
|
|
319
|
-
}
|
|
320
|
-
onLinkKeydown(e) {
|
|
321
|
-
e.key === "Enter" && !e.isComposing && e.preventDefault();
|
|
322
|
-
}
|
|
323
|
-
onLinkFocusOut(e) {
|
|
324
|
-
let t = e.relatedTarget, n = e.currentTarget;
|
|
325
|
-
this.linkOpen && t && !r(t, n) && !r(this, t) && (this.linkOpen = !1);
|
|
326
|
-
}
|
|
327
|
-
onLinkClose(e) {
|
|
328
|
-
e.stopPropagation(), this.linkOpen = !1, this.restore();
|
|
329
|
-
}
|
|
330
|
-
onSurfaceKeydown(e) {
|
|
331
|
-
if (!(e.ctrlKey || e.metaKey) || e.altKey) return;
|
|
332
|
-
let t = {
|
|
333
|
-
b: "bold",
|
|
334
|
-
i: "italic",
|
|
335
|
-
k: "link"
|
|
336
|
-
}[e.key.toLowerCase()];
|
|
337
|
-
t && (e.preventDefault(), this.apply(t));
|
|
338
|
-
}
|
|
339
|
-
onPaste(e) {
|
|
340
|
-
let t = e.clipboardData;
|
|
341
|
-
if (!t) return;
|
|
342
|
-
e.preventDefault();
|
|
343
|
-
let n = t.getData("text/html");
|
|
344
|
-
n ? I("insertHTML", N(n)) : I("insertText", t.getData("text/plain"));
|
|
345
|
-
}
|
|
346
|
-
onToolbarKeydown(e) {
|
|
347
|
-
let t = P.length - 1, n = {
|
|
348
|
-
ArrowRight: this.toolIndex === t ? 0 : this.toolIndex + 1,
|
|
349
|
-
ArrowLeft: this.toolIndex === 0 ? t : this.toolIndex - 1,
|
|
350
|
-
Home: 0,
|
|
351
|
-
End: t
|
|
352
|
-
}[e.key];
|
|
353
|
-
n !== void 0 && (e.preventDefault(), this.toolIndex = n, this.updateComplete.then(() => {
|
|
354
|
-
this.renderRoot.querySelectorAll(".lintje-text-editor__tool")[n]?.focus();
|
|
355
|
-
}));
|
|
356
|
-
}
|
|
357
|
-
renderTool(e, t) {
|
|
358
|
-
let r = this.active.has(e.format), i = e.format === "link" && this.collapsed && !r;
|
|
359
|
-
return a`<button
|
|
1
|
+
import{$t as e,Zt as t,dt as n,in as r,lt as i,nn as a,nt as o}from"../chunks/base-DuuwEY22.js";import{n as s}from"../chunks/input-fzGBdp-5.js";import{t as c}from"../chunks/input-CTxDOlLs.js";import{t as l}from"../chunks/prose-DOF7h3je.js";import"./text-input.js";var u=`:host{min-width:0;display:block}:host([hidden]){display:none}.lintje-text-editor{border:1px solid var(--color-border-field);background:var(--color-bg-surface);flex-direction:column;min-width:0;display:flex}.lintje-text-editor:has(.lintje-text-editor__surface:focus-visible){outline:var(--focus-width) solid var(--color-focus);outline-offset:var(--focus-offset)}.lintje-text-editor.is-error{border:2px solid var(--color-error)}.lintje-text-editor.is-disabled{border:1px solid var(--color-border-strong)}.lintje-text-editor__toolbar{gap:var(--space-2) var(--space-1);padding:var(--space-1);background:var(--color-bg-page);border-bottom:1px solid var(--color-border-default);flex-wrap:wrap;display:flex}.lintje-text-editor__tool{width:var(--h-icon-button);height:var(--h-icon-button);color:var(--color-text-primary);transition:background var(--dur-hover) var(--ease-in-motion);background:0 0;border:1px solid #0000;flex:none;justify-content:center;align-items:center;font-size:1rem;display:inline-flex;position:relative}.lintje-text-editor__tool:after{content:"";inset:min(0px, calc((100% - var(--h-target)) / 2)) 0;position:absolute}.lintje-text-editor__tool--bold,.lintje-text-editor__tool--heading{font-weight:700}.lintje-text-editor__tool--italic{font-style:italic}.lintje-text-editor__tool--word{width:auto;min-width:var(--h-icon-button);padding:0 var(--space-2);font-size:.875rem;font-weight:700}.lintje-text-editor__tool:hover:not(:disabled):not(.is-idle){background:var(--color-bg-subtle)}.lintje-text-editor__tool.is-pressed{background:var(--color-action-primary);color:var(--color-action-primary-text);border-color:var(--color-action-primary-border)}.lintje-text-editor__tool.is-pressed:hover:not(:disabled){background:var(--color-action-primary)}.lintje-text-editor__tool.is-idle,.lintje-text-editor__tool:disabled{color:var(--color-text-disabled);cursor:not-allowed}.lintje-text-editor__surface{min-height:132px;padding:var(--space-3);overflow-wrap:anywhere}.lintje-text-editor__surface:focus-visible{outline:none}.lintje-text-editor.is-disabled .lintje-text-editor__surface{background:var(--color-bg-subtle);color:var(--color-text-disabled);cursor:not-allowed}.lintje-text-editor.is-disabled .lintje-text-editor__surface *{color:inherit}.lintje-text-editor__link{width:280px;max-width:100%;padding:var(--space-4)}@media screen and (width<=767px){.lintje-text-editor__toolbar{flex-wrap:nowrap;overflow-x:auto}}@media (forced-colors:active){.lintje-text-editor__tool.is-pressed{border:2px solid highlight}}`,d=e=>e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`);function f(e){let t=(e??``).replace(/\p{Cc}/gu,``).trim();if(!t)return null;let n=/^([a-z][a-z0-9+.-]*):/i.exec(t);return n&&![`http`,`https`,`mailto`,`tel`].includes(n[1].toLowerCase())?null:t.replace(/ /g,`%20`).replace(/\(/g,`%28`).replace(/\)/g,`%29`)}var p=/[\\`*_{}[\]()#+\-.!>~|]/;function m(e){let t=``,n=0;for(;n<e.length;){let r=e[n];if(r===`\\`&&p.test(e[n+1]??``))t+=d(e[n+1]),n+=2;else if(r===`
|
|
2
|
+
`)t+=`<br>`,n+=1;else{if(e.startsWith(`**`,n)){let r=h(e,`**`,n+2);if(r>n+2){t+=`<strong>${m(e.slice(n+2,r))}</strong>`,n=r+2;continue}}if(r===`*`||r===`_`){let i=h(e,r,n+1);if(i>n+1){t+=`<em>${m(e.slice(n+1,i))}</em>`,n=i+1;continue}}if(r===`[`){let r=/^\[((?:\\.|[^\]\\])+)\]\(([^()\s]+)\)/.exec(e.slice(n));if(r){let e=f(r[2]),i=m(r[1]);t+=e?`<a href="${d(e)}">${i}</a>`:i,n+=r[0].length;continue}}t+=d(r),n+=1}}return t}function h(e,t,n){for(let r=n;r<e.length;r++)if(e[r]===`\\`)r+=1;else{if(t===`**`&&e.startsWith(`**`,r))return r;if(t.length===1&&e[r]===t){if(t===`*`&&e[r+1]===`*`){let t=h(e,`**`,r+2);if(t===-1)return-1;r=t+1;continue}return r}}return-1}var g=/^#{1,6}\s+(.*)$/,_=/^[-*]\s+(.*)$/;function v(e){let t=(e??``).replace(/\r\n?/g,`
|
|
3
|
+
`).split(`
|
|
4
|
+
`),n=[],r=[],i=[],a=()=>{r.length&&n.push(`<p>${m(r.join(`
|
|
5
|
+
`))}</p>`),r=[]},o=()=>{i.length&&n.push(`<ul>${i.map(e=>`<li>${e}</li>`).join(``)}</ul>`),i=[]};for(let e of t){let t=e.trimEnd(),s=g.exec(t),c=_.exec(t);t.trim()===``?(a(),o()):s?(a(),o(),n.push(`<h3>${m(s[1].trim())}</h3>`)):c?(a(),i.push(m(c[1].trim()))):(o(),r.push(t.trim()))}return a(),o(),n.join(``)}var y=e=>e.replace(/([\\*_[\]])/g,`\\$1`),b=e=>e.replace(/^(\s*)(#|[-*+](?=\s))/,`$1\\$2`),x=/* @__PURE__ */ new Set(/* @__PURE__ */ `ADDRESS.ARTICLE.ASIDE.BLOCKQUOTE.DD.DIV.DL.DT.FIGCAPTION.FIGURE.FOOTER.FORM.HEADER.HR.MAIN.NAV.P.PRE.SECTION.TABLE.TBODY.THEAD.TFOOT.TR.TD.TH`.split(`.`)),S=/* @__PURE__ */ new Set([`H1`,`H2`,`H3`,`H4`,`H5`,`H6`]),C=/* @__PURE__ */ new Set([`UL`,`OL`]),w=/* @__PURE__ */ new Set([`SCRIPT`,`STYLE`,`TEMPLATE`,`NOSCRIPT`,`IFRAME`,`OBJECT`,`SVG`,`HEAD`]),T=e=>e.nodeType===1,E=e=>T(e)&&(x.has(e.tagName)||S.has(e.tagName)||C.has(e.tagName)||e.tagName===`LI`);function D(e){let t=e.style?.fontWeight??``,n=e.style?.fontStyle??``;return{bold:t===``?void 0:t===`bold`||Number(t)>=600,italic:n===``?void 0:n===`italic`||n===`oblique`}}function O(e,t){let n=/^(\s*)([\s\S]*?)(\s*)$/.exec(e);return n[2]?`${n[1]}${t}${n[2]}${t}${n[3]}`:e}function k(e){if(e.nodeType===3)return y((e.textContent??``).replace(/\s+/g,` `));if(!T(e)||w.has(e.tagName))return``;if(e.tagName===`BR`)return`
|
|
6
|
+
`;if(e.tagName===`IMG`)return y(e.getAttribute(`alt`)??``);let t=[...e.childNodes].map(k).join(``),n=e.tagName,r=D(e),i=r.bold??(n===`B`||n===`STRONG`),a=r.italic??(n===`I`||n===`EM`);if(n===`A`){let n=f(e.getAttribute(`href`));n&&t.trim()&&(t=`[${t.trim()}](${n})`)}return a&&(t=O(t,`_`)),i&&(t=O(t,`**`)),t}var A=e=>e.split(`
|
|
7
|
+
`).map(e=>e.replace(/ {2,}/g,` `).trim()).join(`
|
|
8
|
+
`).replace(/^\n+|\n+$/g,``);function j(e,t){let n=[],r=()=>{let e=A(n.map(k).join(``));e&&t.push({kind:`p`,text:e}),n=[]};for(let i of e.childNodes){if(T(i)&&w.has(i.tagName))continue;if(!E(i)){n.push(i);continue}r();let e=i;if(S.has(e.tagName)){let n=A(k(e).replace(/\n/g,` `)).replace(/\*\*/g,``);n&&t.push({kind:`h`,text:n})}else if(C.has(e.tagName)||e.tagName===`LI`)for(let n of e.tagName===`LI`?[e]:e.querySelectorAll(`li`)){let e=A([...n.childNodes].filter(e=>!(T(e)&&C.has(e.tagName))).map(e=>E(e)?` ${k(e)} `:k(e)).join(``));e&&t.push({kind:`li`,text:e.replace(/\n/g,` `)})}else j(e,t)}return r(),t}function M(e){let t=[],n=null;for(let r of j(e,[]))n&&t.push(n===`li`&&r.kind===`li`?`
|
|
9
|
+
`:`
|
|
10
|
+
|
|
11
|
+
`),r.kind===`h`?t.push(`### ${r.text}`):r.kind===`li`?t.push(`- ${r.text}`):t.push(r.text.split(`
|
|
12
|
+
`).map(b).join(`
|
|
13
|
+
`)),n=r.kind;return t.join(``)}function N(e){return v(M(new DOMParser().parseFromString(e,`text/html`).body))}var P=[{format:`bold`,label:`Vet`,text:`B`},{format:`italic`,label:`Cursief`,text:`I`},{format:`heading`,label:`Kop`,text:`H`},{format:`list`,label:`Opsomming`,text:`Opsomming`},{format:`link`,label:`Link`,text:`Link`}],F={bold:[`B`,`STRONG`],italic:[`I`,`EM`],heading:[`H1`,`H2`,`H3`,`H4`,`H5`,`H6`],list:[`UL`,`LI`],link:[`A`]};function I(e,t){typeof document.execCommand==`function`&&document.execCommand(e,!1,t)}function L(e,t){let{startContainer:n,startOffset:r,endContainer:i,endOffset:a}=t;e.setBaseAndExtent(n,r,i,a)}function R(e){let{startContainer:t,startOffset:n}=e;if(e.collapsed||t.nodeType!==3||n<(t.textContent??``).length)return t;let r=document.createTreeWalker(e.commonAncestorContainer,NodeFilter.SHOW_TEXT);return r.currentNode=t,r.nextNode()??t}var z=class extends s{constructor(...e){super(...e),this.value=``,this.active=/* @__PURE__ */ new Set,this.collapsed=!0,this.toolIndex=0,this.linkOpen=!1,this.linkError=``,this.shown=null,this.range=null,this.onSelectionChange=()=>{let e=this.surface,t=this.selectedRange();e&&t&&e.contains(t.commonAncestorContainer)&&(this.range=t.cloneRange(),this.collapsed=t.collapsed,this.active=this.formatsAt(R(t)))}}static{this.styles=[n,e(c),e(l),e(u)]}static{this.properties={value:{type:String},active:{state:!0},collapsed:{state:!0},toolIndex:{state:!0},linkOpen:{state:!0},linkError:{state:!0}}}get surface(){return this.renderRoot.querySelector(`.lintje-text-editor__surface`)}selection(){return this.renderRoot.getSelection?.()??document.getSelection()}selectedRange(){let e=this.selection();if(!e?.rangeCount)return null;let t;try{t=e.getComposedRanges?.({shadowRoots:[this.renderRoot]})[0]}catch{}if(!t)return e.getRangeAt(0);let n=document.createRange();return n.setStart(t.startContainer,t.startOffset),n.setEnd(t.endContainer,t.endOffset),n}connectedCallback(){super.connectedCallback(),document.addEventListener(`selectionchange`,this.onSelectionChange)}disconnectedCallback(){document.removeEventListener(`selectionchange`,this.onSelectionChange),super.disconnectedCallback()}formatsAt(e){let t=/* @__PURE__ */ new Set,n=this.surface;for(let r=e;r&&r!==n;r=r.parentNode){if(r.nodeType!==1)continue;let e=r.tagName;for(let n of P)F[n.format].includes(e)&&t.add(n.format)}return t}updated(e){super.updated(e);let t=this.surface;t&&this.value!==this.shown&&(t.innerHTML=v(this.value),this.shown=this.value)}settle(e){let t=this.surface;if(!t)return;let n=M(t),r=v(n);e&&t.innerHTML!==r&&(t.innerHTML=r),this.shown=n,n!==this.value&&(this.value=n,this.commit(n))}onFocusOut(e){if(this.disabled)return;let t=e.relatedTarget,n=t!==null&&this.renderRoot.contains(t);(e.target===this.surface||!n)&&this.settle(!n)}restore(){let e=this.surface,t=this.selection();e&&(e.focus(),this.range&&t&&L(t,this.range))}apply(e){if(!this.disabled){if(e===`link`)return this.link();this.restore(),I(`defaultParagraphSeparator`,`p`),e===`bold`&&I(`bold`),e===`italic`&&I(`italic`),e===`list`&&I(`insertUnorderedList`),e===`heading`&&I(`formatBlock`,this.active.has(`heading`)?`<p>`:`<h3>`),this.onSelectionChange()}}link(){if(this.active.has(`link`)){this.restore();let e=this.selection(),t=this.range?R(this.range):null;for(;t&&t.tagName!==`A`;)t=t.parentNode;if(t&&e){let n=document.createRange();n.selectNodeContents(t),L(e,n)}I(`unlink`),this.onSelectionChange()}else this.collapsed||(this.linkError=``,this.linkOpen=!0,this.updateComplete.then(()=>this.renderRoot.querySelector(`.lintje-text-editor__link-field`)?.shadowRoot?.querySelector(`input`)?.focus()))}onLinkChange(e){e.stopPropagation();let t=f(e.detail);t?(this.linkOpen=!1,this.restore(),I(`createLink`,t),this.onSelectionChange()):this.linkError=`Vul een webadres in, zoals https://www.rijksoverheid.nl`}onLinkKeydown(e){e.key===`Enter`&&!e.isComposing&&e.preventDefault()}onLinkFocusOut(e){let t=e.relatedTarget,n=e.currentTarget;this.linkOpen&&t&&!o(t,n)&&!o(this,t)&&(this.linkOpen=!1)}onLinkClose(e){e.stopPropagation(),this.linkOpen=!1,e.detail?.reason!==`focus`&&this.restore()}onSurfaceKeydown(e){if(!(e.ctrlKey||e.metaKey)||e.altKey)return;let t={b:`bold`,i:`italic`,k:`link`}[e.key.toLowerCase()];t&&(e.preventDefault(),this.apply(t))}onPaste(e){let t=e.clipboardData;if(!t)return;e.preventDefault();let n=t.getData(`text/html`);n?I(`insertHTML`,N(n)):I(`insertText`,t.getData(`text/plain`))}onToolbarKeydown(e){let t=P.length-1,n={ArrowRight:this.toolIndex===t?0:this.toolIndex+1,ArrowLeft:this.toolIndex===0?t:this.toolIndex-1,Home:0,End:t}[e.key];n!==void 0&&(e.preventDefault(),this.toolIndex=n,this.updateComplete.then(()=>{this.renderRoot.querySelectorAll(`.lintje-text-editor__tool`)[n]?.focus()}))}renderTool(e,t){let n=this.active.has(e.format),o=e.format===`link`&&this.collapsed&&!n;return r`<button
|
|
360
14
|
type="button"
|
|
361
|
-
class=${
|
|
362
|
-
|
|
363
|
-
[`lintje-text-editor__tool--${e.format}`]: !0,
|
|
364
|
-
"lintje-text-editor__tool--word": e.text.length > 1,
|
|
365
|
-
"is-pressed": r,
|
|
366
|
-
"is-idle": i
|
|
367
|
-
})}
|
|
368
|
-
tabindex=${t === this.toolIndex ? "0" : "-1"}
|
|
15
|
+
class=${i({"lintje-text-editor__tool":!0,[`lintje-text-editor__tool--${e.format}`]:!0,"lintje-text-editor__tool--word":e.text.length>1,"is-pressed":n,"is-idle":o})}
|
|
16
|
+
tabindex=${t===this.toolIndex?`0`:`-1`}
|
|
369
17
|
aria-label=${e.label}
|
|
370
|
-
aria-pressed=${
|
|
371
|
-
aria-disabled=${
|
|
18
|
+
aria-pressed=${n?`true`:`false`}
|
|
19
|
+
aria-disabled=${o?`true`:a}
|
|
372
20
|
?disabled=${this.disabled}
|
|
373
|
-
@mousedown=${
|
|
374
|
-
@click=${()
|
|
375
|
-
this.toolIndex = t, this.apply(e.format);
|
|
376
|
-
}}
|
|
21
|
+
@mousedown=${e=>e.preventDefault()}
|
|
22
|
+
@click=${()=>{this.toolIndex=t,this.apply(e.format)}}
|
|
377
23
|
>
|
|
378
24
|
${e.text}
|
|
379
|
-
</button
|
|
380
|
-
}
|
|
381
|
-
render() {
|
|
382
|
-
return a`<div class="lintje-field" @focusout=${this.onFocusOut}>
|
|
25
|
+
</button>`}render(){return r`<div class="lintje-field" @focusout=${this.onFocusOut}>
|
|
383
26
|
${this.renderLabel()}
|
|
384
27
|
<div
|
|
385
|
-
class=${
|
|
386
|
-
"lintje-text-editor": !0,
|
|
387
|
-
"is-error": !!this.error,
|
|
388
|
-
"is-disabled": this.disabled
|
|
389
|
-
})}
|
|
28
|
+
class=${i({"lintje-text-editor":!0,"is-error":!!this.error,"is-disabled":this.disabled})}
|
|
390
29
|
>
|
|
391
30
|
<div
|
|
392
31
|
class="lintje-text-editor__toolbar"
|
|
@@ -394,7 +33,7 @@ var z = class extends s {
|
|
|
394
33
|
aria-label="Opmaak"
|
|
395
34
|
@keydown=${this.onToolbarKeydown}
|
|
396
35
|
>
|
|
397
|
-
${P.map((e,
|
|
36
|
+
${P.map((e,t)=>this.renderTool(e,t))}
|
|
398
37
|
</div>
|
|
399
38
|
<lintje-popover
|
|
400
39
|
?open=${this.linkOpen}
|
|
@@ -404,16 +43,16 @@ var z = class extends s {
|
|
|
404
43
|
@lintje-close=${this.onLinkClose}
|
|
405
44
|
@focusout=${this.onLinkFocusOut}
|
|
406
45
|
>
|
|
407
|
-
${this.linkOpen
|
|
46
|
+
${this.linkOpen?r`<div class="lintje-text-editor__link" @keydown=${this.onLinkKeydown}>
|
|
408
47
|
<lintje-text-input
|
|
409
48
|
class="lintje-text-editor__link-field"
|
|
410
49
|
label="Adres van de link"
|
|
411
50
|
placeholder="https://"
|
|
412
51
|
hint="Enter plaatst de link"
|
|
413
|
-
error=${this.linkError
|
|
52
|
+
error=${this.linkError||a}
|
|
414
53
|
@lintje-change=${this.onLinkChange}
|
|
415
54
|
></lintje-text-input>
|
|
416
|
-
</div
|
|
55
|
+
</div>`:a}
|
|
417
56
|
</lintje-popover>
|
|
418
57
|
<div
|
|
419
58
|
id=${this.controlId}
|
|
@@ -422,19 +61,14 @@ var z = class extends s {
|
|
|
422
61
|
aria-multiline="true"
|
|
423
62
|
aria-labelledby=${this.labelId}
|
|
424
63
|
aria-describedby=${this.describedBy}
|
|
425
|
-
aria-invalid=${this.error
|
|
426
|
-
aria-required=${this.required
|
|
427
|
-
aria-disabled=${this.disabled
|
|
428
|
-
contenteditable=${this.disabled
|
|
429
|
-
tabindex=${this.disabled
|
|
64
|
+
aria-invalid=${this.error?`true`:a}
|
|
65
|
+
aria-required=${this.required?`true`:a}
|
|
66
|
+
aria-disabled=${this.disabled?`true`:a}
|
|
67
|
+
contenteditable=${this.disabled?`false`:`true`}
|
|
68
|
+
tabindex=${this.disabled?`-1`:`0`}
|
|
430
69
|
@keydown=${this.onSurfaceKeydown}
|
|
431
70
|
@paste=${this.onPaste}
|
|
432
71
|
></div>
|
|
433
72
|
</div>
|
|
434
73
|
${this.renderFoot()}
|
|
435
|
-
</div
|
|
436
|
-
}
|
|
437
|
-
};
|
|
438
|
-
e("lintje-text-editor", z);
|
|
439
|
-
//#endregion
|
|
440
|
-
export { z as LintjeTextEditor };
|
|
74
|
+
</div>`}};t(`lintje-text-editor`,z);export{z as LintjeTextEditor};
|
|
@@ -1,113 +1,29 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { i as s, t as c } from "../chunks/input-KqBT3qWD.js";
|
|
3
|
-
import { t as l } from "../chunks/input-Dg1o0Sfu.js";
|
|
4
|
-
import { t as u } from "../chunks/debounce-JXnLMCcF.js";
|
|
5
|
-
//#region src/components/inputs/text-input/text-input.css?inline
|
|
6
|
-
var d = "/* The text field. */\n\n/* --- Text field ----------------------------------------------------------- */\n.lintje-text-input { position: relative; display: flex; align-items: center; }\n.lintje-text-input__control {\n width: 100%; height: var(--h-control);\n padding: 0 14px;\n border: 1px solid var(--color-border-field);\n background: var(--color-bg-surface);\n color: var(--color-text-primary);\n font-size: 1rem;\n border-radius: var(--radius);\n}\n.lintje-text-input__control::placeholder { color: var(--color-text-placeholder); opacity: 1; }\n.lintje-text-input__control.is-error { border: 2px solid var(--color-error); }\n/* Read-only: the subtle surface, the strong border, the text still primary. */\n.lintje-text-input__control.is-readonly {\n border: 1px solid var(--color-border-strong);\n background: var(--color-bg-subtle);\n color: var(--color-text-primary);\n cursor: default;\n}\n.lintje-text-input__control:disabled {\n border: 1px solid var(--color-border-strong);\n background: var(--color-bg-subtle);\n color: var(--color-text-disabled);\n cursor: not-allowed;\n}\n.lintje-text-input--clearable .lintje-text-input__control {\n padding-right: calc(var(--h-icon-button) + var(--space-1));\n}\n/* The hit area reaches the target height above and below only: sideways it would cover the text. */\n.lintje-text-input__clear {\n position: absolute; right: var(--space-1);\n width: var(--h-icon-button); height: var(--h-icon-button);\n display: flex; align-items: center; justify-content: center;\n color: var(--color-text-muted);\n}\n.lintje-text-input__clear:hover { color: var(--color-text-primary); }\n.lintje-text-input__clear::after {\n content: '';\n position: absolute;\n inset: min(0px, calc((100% - var(--h-target)) / 2)) 0;\n}\n\n/* --- Search ---------------------------------------------------------------- */\n/* The browser's own clear button and decoration go: the field draws its own cross. */\n.lintje-text-input--search .lintje-text-input__control { padding-left: var(--space-10); }\n.lintje-text-input__search {\n position: absolute; left: var(--space-3);\n color: var(--color-text-muted);\n pointer-events: none;\n}\n.lintje-text-input__control::-webkit-search-cancel-button,\n.lintje-text-input__control::-webkit-search-decoration { appearance: none; }\n\n/* --- Password -------------------------------------------------------------- */\n.lintje-text-input--password .lintje-text-input__control { border-right: 0; }\n.lintje-text-input__reveal { flex: none; --h-button: var(--h-control); }\n", f = class extends c {
|
|
7
|
-
constructor(...e) {
|
|
8
|
-
super(...e), this.value = "", this.placeholder = "", this.clearable = !1, this.stacked = !1, this.type = "text", this.commitOn = "change", this.autocomplete = "", this.revealed = !1, this.typing = new u(this), this.#e = "", this.#t = !1;
|
|
9
|
-
}
|
|
10
|
-
static {
|
|
11
|
-
this.styles = [
|
|
12
|
-
r,
|
|
13
|
-
t(l),
|
|
14
|
-
t(d)
|
|
15
|
-
];
|
|
16
|
-
}
|
|
17
|
-
static {
|
|
18
|
-
this.properties = {
|
|
19
|
-
value: { type: String },
|
|
20
|
-
placeholder: { type: String },
|
|
21
|
-
clearable: { type: Boolean },
|
|
22
|
-
stacked: {
|
|
23
|
-
type: Boolean,
|
|
24
|
-
reflect: !0
|
|
25
|
-
},
|
|
26
|
-
type: { type: String },
|
|
27
|
-
commitOn: {
|
|
28
|
-
type: String,
|
|
29
|
-
attribute: "commit"
|
|
30
|
-
},
|
|
31
|
-
autocomplete: { type: String },
|
|
32
|
-
revealed: { state: !0 }
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
#e;
|
|
36
|
-
#t;
|
|
37
|
-
get formValue() {
|
|
38
|
-
return this.value;
|
|
39
|
-
}
|
|
40
|
-
willUpdate(e) {
|
|
41
|
-
super.willUpdate(e), e.has("value") && !this.#t && (this.#e = this.value), this.#t = !1;
|
|
42
|
-
}
|
|
43
|
-
send(e) {
|
|
44
|
-
e !== this.#e && (this.#e = e, this.commit(e));
|
|
45
|
-
}
|
|
46
|
-
onInput(e) {
|
|
47
|
-
this.readonly || (this.#t = !0, this.value = e.target.value, this.commitOn === "input" && this.typing.schedule(() => this.send(this.value)));
|
|
48
|
-
}
|
|
49
|
-
change(e) {
|
|
50
|
-
this.readonly || (this.#t = !0, this.value = e.target.value, this.commitOn === "input" ? this.typing.flush() : this.send(this.value));
|
|
51
|
-
}
|
|
52
|
-
onKeydown(e) {
|
|
53
|
-
e.key === "Enter" && this.commitOn === "input" && !this.readonly && (this.#t = !0, this.value = e.target.value, this.typing.flush()), this.submitOnEnter(e, () => this.change(e)), e.key === "Escape" && this.type === "search" && this.value !== "" && !this.readonly && (e.preventDefault(), e.stopPropagation(), this.clear());
|
|
54
|
-
}
|
|
55
|
-
clear() {
|
|
56
|
-
this.readonly || (this.typing.cancel(), this.value = "", this.send(""), this.nativeControl?.focus());
|
|
57
|
-
}
|
|
58
|
-
reveal() {
|
|
59
|
-
this.revealed = !this.revealed;
|
|
60
|
-
}
|
|
61
|
-
renderFoot() {
|
|
62
|
-
let e = this.error ?? "", t = {
|
|
63
|
-
hintId: this.hintId,
|
|
64
|
-
errorId: this.errorId
|
|
65
|
-
};
|
|
66
|
-
return this.type === "search" ? i`${e ? s(void 0, e, t) : n}<span
|
|
1
|
+
import{$t as e,Zt as t,dt as n,ft as r,in as i,lt as a,nn as o}from"../chunks/base-DuuwEY22.js";import{i as s,t as c}from"../chunks/input-fzGBdp-5.js";import{t as l}from"../chunks/input-CTxDOlLs.js";import{t as u}from"../chunks/debounce-Dfwdcv-z.js";var d=`.lintje-text-input{align-items:center;display:flex;position:relative}.lintje-text-input__control{width:100%;height:var(--h-control);border:1px solid var(--color-border-field);background:var(--color-bg-surface);color:var(--color-text-primary);border-radius:var(--radius);padding:0 14px;font-size:1rem}.lintje-text-input__control::placeholder{color:var(--color-text-placeholder);opacity:1}.lintje-text-input__control.is-error{border:2px solid var(--color-error)}.lintje-text-input__control.is-readonly{border:1px solid var(--color-border-strong);background:var(--color-bg-subtle);color:var(--color-text-primary);cursor:default}.lintje-text-input__control:disabled{border:1px solid var(--color-border-strong);background:var(--color-bg-subtle);color:var(--color-text-disabled);cursor:not-allowed}.lintje-text-input--clearable .lintje-text-input__control{padding-right:calc(var(--h-icon-button) + var(--space-1))}.lintje-text-input__clear{right:var(--space-1);width:var(--h-icon-button);height:var(--h-icon-button);color:var(--color-text-muted);justify-content:center;align-items:center;display:flex;position:absolute}.lintje-text-input__clear:hover{color:var(--color-text-primary)}.lintje-text-input__clear:after{content:"";inset:min(0px, calc((100% - var(--h-target)) / 2)) 0;position:absolute}.lintje-text-input--search .lintje-text-input__control{padding-left:var(--space-10)}.lintje-text-input__search{left:var(--space-3);color:var(--color-text-muted);pointer-events:none;position:absolute}.lintje-text-input__control::-webkit-search-cancel-button,.lintje-text-input__control::-webkit-search-decoration{appearance:none}.lintje-text-input--password .lintje-text-input__control{border-right:0}.lintje-text-input__reveal{--h-button:var(--h-control);flex:none}`,f=class extends c{constructor(...e){super(...e),this.value=``,this.placeholder=``,this.clearable=!1,this.stacked=!1,this.type=`text`,this.commitOn=`change`,this.autocomplete=``,this.revealed=!1,this.typing=new u(this),this.#e=``,this.#t=!1}static{this.styles=[n,e(l),e(d)]}static{this.properties={value:{type:String},placeholder:{type:String},clearable:{type:Boolean},stacked:{type:Boolean,reflect:!0},type:{type:String},commitOn:{type:String,attribute:`commit`},autocomplete:{type:String},revealed:{state:!0}}}#e;#t;get formValue(){return this.value}willUpdate(e){super.willUpdate(e),e.has(`value`)&&!this.#t&&(this.#e=this.value),this.#t=!1}send(e){e!==this.#e&&(this.#e=e,this.commit(e))}onInput(e){this.readonly||(this.#t=!0,this.value=e.target.value,this.commitOn===`input`&&this.typing.schedule(()=>this.send(this.value)))}change(e){this.readonly||(this.#t=!0,this.value=e.target.value,this.commitOn===`input`?this.typing.flush():this.send(this.value))}onKeydown(e){e.key===`Enter`&&this.commitOn===`input`&&!this.readonly&&(this.#t=!0,this.value=e.target.value,this.typing.flush()),this.submitOnEnter(e,()=>this.change(e)),e.key===`Escape`&&this.type===`search`&&this.value!==``&&!this.readonly&&(e.preventDefault(),e.stopPropagation(),this.clear())}clear(){this.readonly||(this.typing.cancel(),this.value=``,this.send(``),this.nativeControl?.focus())}reveal(){this.revealed=!this.revealed}renderFoot(){let e=this.error??``,t={hintId:this.hintId,errorId:this.errorId};return this.type===`search`?i`${e?s(void 0,e,t):o}<span
|
|
67
2
|
id=${this.hintId}
|
|
68
3
|
class="lintje-field__hint"
|
|
69
4
|
aria-live="polite"
|
|
70
|
-
?hidden=${!this.hint
|
|
71
|
-
>${this.hint
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
get inputType() {
|
|
75
|
-
return this.type === "password" ? this.revealed ? "text" : "password" : this.type === "search" || this.type === "email" ? this.type : "text";
|
|
76
|
-
}
|
|
77
|
-
render() {
|
|
78
|
-
let e = this.type === "search", t = this.type === "password", r = (this.clearable || e) && !t && this.value !== "" && !this.disabled && !this.readonly;
|
|
79
|
-
return i`<div class="lintje-field">
|
|
5
|
+
?hidden=${!this.hint||!!e}
|
|
6
|
+
>${this.hint??``}</span
|
|
7
|
+
>${this.renderReset()}`:i`${s(this.hint,e,t)}${this.renderReset()}`}get inputType(){return this.type===`password`?this.revealed?`text`:`password`:this.type===`search`||this.type===`email`?this.type:`text`}render(){let e=this.type===`search`,t=this.type===`password`,n=(this.clearable||e)&&!t&&this.value!==``&&!this.disabled&&!this.readonly;return i`<div class="lintje-field">
|
|
80
8
|
${this.renderLabel(this.controlId)}
|
|
81
9
|
<div
|
|
82
|
-
class=${a({
|
|
83
|
-
"lintje-text-input": !0,
|
|
84
|
-
"lintje-text-input--clearable": r,
|
|
85
|
-
"lintje-text-input--search": e,
|
|
86
|
-
"lintje-text-input--password": t
|
|
87
|
-
})}
|
|
10
|
+
class=${a({"lintje-text-input":!0,"lintje-text-input--clearable":n,"lintje-text-input--search":e,"lintje-text-input--password":t})}
|
|
88
11
|
>
|
|
89
|
-
${e
|
|
90
|
-
size: 18,
|
|
91
|
-
className: "lintje-text-input__search"
|
|
92
|
-
}) : n}
|
|
12
|
+
${e?r(`functioneel-zoek`,{size:18,className:`lintje-text-input__search`}):o}
|
|
93
13
|
<input
|
|
94
14
|
type=${this.inputType}
|
|
95
15
|
id=${this.controlId}
|
|
96
|
-
class=${a({
|
|
97
|
-
"lintje-text-input__control": !0,
|
|
98
|
-
"is-error": !!this.error,
|
|
99
|
-
"is-readonly": this.readonly
|
|
100
|
-
})}
|
|
16
|
+
class=${a({"lintje-text-input__control":!0,"is-error":!!this.error,"is-readonly":this.readonly})}
|
|
101
17
|
.value=${this.value}
|
|
102
18
|
placeholder=${this.placeholder}
|
|
103
|
-
role=${e
|
|
104
|
-
inputmode=${this.type
|
|
105
|
-
enterkeyhint=${e
|
|
106
|
-
autocomplete=${this.autocomplete
|
|
19
|
+
role=${e?`searchbox`:o}
|
|
20
|
+
inputmode=${this.type===`email`?`email`:o}
|
|
21
|
+
enterkeyhint=${e?`search`:o}
|
|
22
|
+
autocomplete=${this.autocomplete||o}
|
|
107
23
|
aria-labelledby=${this.labelId}
|
|
108
24
|
aria-describedby=${this.describedBy}
|
|
109
|
-
aria-invalid=${this.error
|
|
110
|
-
aria-required=${this.required
|
|
25
|
+
aria-invalid=${this.error?`true`:o}
|
|
26
|
+
aria-required=${this.required?`true`:o}
|
|
111
27
|
?required=${this.required}
|
|
112
28
|
?readonly=${this.readonly}
|
|
113
29
|
?disabled=${this.disabled}
|
|
@@ -115,27 +31,22 @@ var d = "/* The text field. */\n\n/* --- Text field ----------------------------
|
|
|
115
31
|
@change=${this.change}
|
|
116
32
|
@keydown=${this.onKeydown}
|
|
117
33
|
/>
|
|
118
|
-
${
|
|
34
|
+
${n?i`<button
|
|
119
35
|
type="button"
|
|
120
36
|
class="lintje-text-input__clear"
|
|
121
37
|
aria-label="Wissen"
|
|
122
|
-
@mousedown=${
|
|
38
|
+
@mousedown=${e=>e.preventDefault()}
|
|
123
39
|
@click=${this.clear}
|
|
124
40
|
>
|
|
125
|
-
${
|
|
126
|
-
</button
|
|
127
|
-
${t
|
|
41
|
+
${r(`functioneel-kruis`,{size:16})}
|
|
42
|
+
</button>`:o}
|
|
43
|
+
${t?i`<lintje-button
|
|
128
44
|
class="lintje-text-input__reveal"
|
|
129
45
|
variant="secondary"
|
|
130
46
|
?disabled=${this.disabled}
|
|
131
47
|
@click=${this.reveal}
|
|
132
|
-
>${this.revealed
|
|
133
|
-
|
|
48
|
+
>${this.revealed?`Verbergen`:`Tonen`}</lintje-button
|
|
49
|
+
>`:o}
|
|
134
50
|
</div>
|
|
135
51
|
${this.renderFoot()}
|
|
136
|
-
</div
|
|
137
|
-
}
|
|
138
|
-
};
|
|
139
|
-
e("lintje-text-input", f);
|
|
140
|
-
//#endregion
|
|
141
|
-
export { f as LintjeTextInput };
|
|
52
|
+
</div>`}};t(`lintje-text-input`,f);export{f as LintjeTextInput};
|