@jackuait/blok 0.4.3-beta.3 → 0.4.3-beta.5
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/blok.mjs +2 -2
- package/dist/chunks/{blok-BmjQP37u.mjs → blok-CC3asvLc.mjs} +71 -52
- package/dist/chunks/{i18next-loader-DjtwmuRK.mjs → i18next-loader-DESAFQPB.mjs} +1 -1
- package/dist/chunks/{index-TdePW2Yb.mjs → index-qoZny9Yh.mjs} +1 -1
- package/dist/chunks/{inline-tool-convert-CreNXc4T.mjs → inline-tool-convert-DtMsnFGn.mjs} +1 -1
- package/dist/full.mjs +2 -2
- package/dist/tools.mjs +2 -2
- package/package.json +1 -1
- package/src/components/modules/i18n.ts +6 -11
- package/src/components/tools/factory.ts +49 -1
package/dist/blok.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { B as s, v as a } from "./chunks/blok-
|
|
2
|
-
import { D as A } from "./chunks/inline-tool-convert-
|
|
1
|
+
import { B as s, v as a } from "./chunks/blok-CC3asvLc.mjs";
|
|
2
|
+
import { D as A } from "./chunks/inline-tool-convert-DtMsnFGn.mjs";
|
|
3
3
|
export {
|
|
4
4
|
s as Blok,
|
|
5
5
|
A as DATA_ATTR,
|
|
@@ -9,7 +9,7 @@ var Ne = (a, t, e) => t in a ? No(a, t, { enumerable: !0, configurable: !0, writ
|
|
|
9
9
|
for (var e of Et(t))
|
|
10
10
|
Pe.call(t, e) && Ne(a, e, t[e]);
|
|
11
11
|
return a;
|
|
12
|
-
},
|
|
12
|
+
}, H = (a, t) => Ro(a, Po(t));
|
|
13
13
|
var Yt = (a, t) => {
|
|
14
14
|
var e = {};
|
|
15
15
|
for (var o in a)
|
|
@@ -19,7 +19,7 @@ var Yt = (a, t) => {
|
|
|
19
19
|
t.indexOf(o) < 0 && Pe.call(a, o) && (e[o] = a[o]);
|
|
20
20
|
return e;
|
|
21
21
|
};
|
|
22
|
-
import { i as N, g as Ho, a as f, b as be, c as E, l as I, S as y, d as Fo, e as _o, D as m, t as C, f as $, h as co, P as O, j as Ht, k as j, m as A, n as wt, o as ht, p as ho, q as J, T as jt, r as Ft, s as v, I as zo, u as Uo, v as ct, w as oe, x as Ko, y as Wo, z as $o, A as uo, B as Yo, C as po, E as fo, F as jo, G as Xo, H as Vo, J as qo, K as Go, L as ke, M as He, N as Zo, O as Fe, Q as _e, R as Jo, U as Qo, V as ts, W as es, X as os, Y as se, Z as _t, _ as ss, $ as ns, a0 as is, a1 as ze, a2 as rs, a3 as as, a4 as ls, a5 as cs, a6 as ds, a7 as hs, a8 as us } from "./inline-tool-convert-
|
|
22
|
+
import { i as N, g as Ho, a as f, b as be, c as E, l as I, S as y, d as Fo, e as _o, D as m, t as C, f as $, h as co, P as O, j as Ht, k as j, m as A, n as wt, o as ht, p as ho, q as J, T as jt, r as Ft, s as v, I as zo, u as Uo, v as ct, w as oe, x as Ko, y as Wo, z as $o, A as uo, B as Yo, C as po, E as fo, F as jo, G as Xo, H as Vo, J as qo, K as Go, L as ke, M as He, N as Zo, O as Fe, Q as _e, R as Jo, U as Qo, V as ts, W as es, X as os, Y as se, Z as _t, _ as ss, $ as ns, a0 as is, a1 as ze, a2 as rs, a3 as as, a4 as ls, a5 as cs, a6 as ds, a7 as hs, a8 as us } from "./inline-tool-convert-DtMsnFGn.mjs";
|
|
23
23
|
function ps(a) {
|
|
24
24
|
return a && a.__esModule && Object.prototype.hasOwnProperty.call(a, "default") ? a.default : a;
|
|
25
25
|
}
|
|
@@ -1458,7 +1458,7 @@ class As {
|
|
|
1458
1458
|
* @returns {Promise<NotifierModule>} loaded notifier module
|
|
1459
1459
|
*/
|
|
1460
1460
|
loadNotifierModule() {
|
|
1461
|
-
return this.notifierModule !== null ? Promise.resolve(this.notifierModule) : (this.loadingPromise === null && (this.loadingPromise = import("./index-
|
|
1461
|
+
return this.notifierModule !== null ? Promise.resolve(this.notifierModule) : (this.loadingPromise === null && (this.loadingPromise = import("./index-qoZny9Yh.mjs").then((t) => {
|
|
1462
1462
|
const e = t;
|
|
1463
1463
|
if (!this.isNotifierModule(e))
|
|
1464
1464
|
throw new Error('notifier module does not expose a "show" method.');
|
|
@@ -1625,7 +1625,7 @@ function Os() {
|
|
|
1625
1625
|
var Ns = Os();
|
|
1626
1626
|
const Rs = /* @__PURE__ */ ps(Ns), Ps = /^\s*(?:javascript\s*:|data\s*:\s*text\s*\/\s*html)/i, Hs = /\s*(?:href|src)\s*=\s*(?:"\s*(?:javascript\s*:|data\s*:\s*text\s*\/\s*html)[^"]*"|'\s*(?:javascript\s*:|data\s*:\s*text\s*\/\s*html)[^']*|(?:javascript\s*:|data\s*:\s*text\s*\/\s*html)[^ \t\r\n>]*)/gi, ve = (a, t, e = {}) => a.map((o) => {
|
|
1627
1627
|
const s = E(t) ? t(o.tool) : t, n = s != null ? s : {};
|
|
1628
|
-
return A(n) && N(n) && N(e) ? o :
|
|
1628
|
+
return A(n) && N(n) && N(e) ? o : H(B({}, o), {
|
|
1629
1629
|
data: we(o.data, n, e)
|
|
1630
1630
|
});
|
|
1631
1631
|
}), q = (a, t = {}) => {
|
|
@@ -2978,7 +2978,7 @@ class G extends xe {
|
|
|
2978
2978
|
const o = (i = e == null ? void 0 : e.wrapperTag) != null ? i : "div", s = document.createElement(o);
|
|
2979
2979
|
return o === "button" && s.setAttribute("type", "button"), s.className = this.getContainerClass(), s.setAttribute(m.popoverItem, ""), s.setAttribute("data-blok-testid", "popover-item"), t.name && s.setAttribute("data-blok-item-name", t.name), t.dataset && Object.entries(t.dataset).forEach(([d, h]) => {
|
|
2980
2980
|
s.setAttribute(`data-${d}`, h);
|
|
2981
|
-
}), t.isDisabled && s.setAttribute(m.disabled, "true"), this.isActive && s.setAttribute(m.popoverItemActive, "true"), this.hasChildren && s.setAttribute(m.hasChildren, "true"), this.createContentElements(s, t, e), t.hint !== void 0 && ((r = e == null ? void 0 : e.hint) == null ? void 0 : r.enabled) !== !1 && t.hint !== void 0 && this.addHint(s,
|
|
2981
|
+
}), t.isDisabled && s.setAttribute(m.disabled, "true"), this.isActive && s.setAttribute(m.popoverItemActive, "true"), this.hasChildren && s.setAttribute(m.hasChildren, "true"), this.createContentElements(s, t, e), t.hint !== void 0 && ((r = e == null ? void 0 : e.hint) == null ? void 0 : r.enabled) !== !1 && t.hint !== void 0 && this.addHint(s, H(B({}, t.hint), {
|
|
2982
2982
|
position: ((l = e == null ? void 0 : e.hint) == null ? void 0 : l.position) || "right",
|
|
2983
2983
|
alignment: ((c = e == null ? void 0 : e.hint) == null ? void 0 : c.alignment) || "center"
|
|
2984
2984
|
})), s;
|
|
@@ -3083,7 +3083,7 @@ class G extends xe {
|
|
|
3083
3083
|
enableConfirmationMode(t) {
|
|
3084
3084
|
if (this.nodes.root === null)
|
|
3085
3085
|
return;
|
|
3086
|
-
const e =
|
|
3086
|
+
const e = H(B(B({}, this.params), t), {
|
|
3087
3087
|
confirmation: "confirmation" in t ? t.confirmation : void 0
|
|
3088
3088
|
});
|
|
3089
3089
|
this.setConfirmation(e), this.confirmationState = t, this.enableSpecialHoverAndFocusBehavior();
|
|
@@ -3335,7 +3335,7 @@ class St extends xe {
|
|
|
3335
3335
|
return o.className = C(
|
|
3336
3336
|
Gt.root,
|
|
3337
3337
|
this.isInline && Ye.root
|
|
3338
|
-
), o.setAttribute(m.popoverItemHtml, ""), o.setAttribute("data-blok-testid", "popover-item-html"), t.name && o.setAttribute("data-blok-item-name", t.name), o.appendChild(t.element), t.hint !== void 0 && ((s = e == null ? void 0 : e.hint) == null ? void 0 : s.enabled) !== !1 && this.addHint(o,
|
|
3338
|
+
), o.setAttribute(m.popoverItemHtml, ""), o.setAttribute("data-blok-testid", "popover-item-html"), t.name && o.setAttribute("data-blok-item-name", t.name), o.appendChild(t.element), t.hint !== void 0 && ((s = e == null ? void 0 : e.hint) == null ? void 0 : s.enabled) !== !1 && this.addHint(o, H(B({}, t.hint), {
|
|
3339
3339
|
position: ((n = e == null ? void 0 : e.hint) == null ? void 0 : n.position) || "right",
|
|
3340
3340
|
alignment: ((i = e == null ? void 0 : e.hint) == null ? void 0 : i.alignment) || "center"
|
|
3341
3341
|
})), o;
|
|
@@ -3953,7 +3953,7 @@ class je extends ft {
|
|
|
3953
3953
|
]
|
|
3954
3954
|
});
|
|
3955
3955
|
super(
|
|
3956
|
-
|
|
3956
|
+
H(B({}, t), {
|
|
3957
3957
|
flipper: o
|
|
3958
3958
|
}),
|
|
3959
3959
|
{
|
|
@@ -4836,7 +4836,7 @@ class Cn {
|
|
|
4836
4836
|
return (this.registeredShortcuts.get(t) || []).find(({ name: s }) => s === e);
|
|
4837
4837
|
}
|
|
4838
4838
|
}
|
|
4839
|
-
const
|
|
4839
|
+
const _ = new Cn();
|
|
4840
4840
|
var Nt = /* @__PURE__ */ ((a) => (a.Opened = "toolbox-opened", a.Closed = "toolbox-closed", a.BlockAdded = "toolbox-block-added", a))(Nt || {});
|
|
4841
4841
|
class In extends Ct {
|
|
4842
4842
|
/**
|
|
@@ -5009,7 +5009,7 @@ class In extends Ct {
|
|
|
5009
5009
|
* @param {string} shortcut - shortcut according to the ShortcutData Module format
|
|
5010
5010
|
*/
|
|
5011
5011
|
enableShortcutForTool(t, e) {
|
|
5012
|
-
|
|
5012
|
+
_.add({
|
|
5013
5013
|
name: e,
|
|
5014
5014
|
on: this.api.ui.nodes.redactor,
|
|
5015
5015
|
handler: async (o) => {
|
|
@@ -5033,7 +5033,7 @@ class In extends Ct {
|
|
|
5033
5033
|
removeAllShortcuts() {
|
|
5034
5034
|
this.toolsToBeDisplayed.forEach((t) => {
|
|
5035
5035
|
const e = t.shortcut;
|
|
5036
|
-
e &&
|
|
5036
|
+
e && _.remove(this.api.ui.nodes.redactor, e);
|
|
5037
5037
|
});
|
|
5038
5038
|
}
|
|
5039
5039
|
/**
|
|
@@ -5839,14 +5839,14 @@ class An extends T {
|
|
|
5839
5839
|
if (t instanceof HTMLElement)
|
|
5840
5840
|
return i;
|
|
5841
5841
|
if (t.type === O.Html)
|
|
5842
|
-
return i.push(
|
|
5842
|
+
return i.push(H(B(B({}, r), t), {
|
|
5843
5843
|
type: O.Html
|
|
5844
5844
|
})), i;
|
|
5845
5845
|
if (t.type === O.Separator)
|
|
5846
5846
|
return i.push({
|
|
5847
5847
|
type: O.Separator
|
|
5848
5848
|
}), i;
|
|
5849
|
-
const l =
|
|
5849
|
+
const l = H(B(B({}, r), t), {
|
|
5850
5850
|
type: O.Default
|
|
5851
5851
|
});
|
|
5852
5852
|
return i.push(l), "children" in l && n && i.push({
|
|
@@ -5933,7 +5933,7 @@ class An extends T {
|
|
|
5933
5933
|
*/
|
|
5934
5934
|
enableShortcuts(t, e) {
|
|
5935
5935
|
const o = this.registeredShortcuts.get(t);
|
|
5936
|
-
o !== e && (this.isShortcutTakenByAnotherTool(t, e) || (o !== void 0 && (
|
|
5936
|
+
o !== e && (this.isShortcutTakenByAnotherTool(t, e) || (o !== void 0 && (_.remove(document, o), this.registeredShortcuts.delete(t)), _.add({
|
|
5937
5937
|
name: e,
|
|
5938
5938
|
handler: (s) => {
|
|
5939
5939
|
const { currentBlock: n } = this.Blok.BlockManager;
|
|
@@ -6354,14 +6354,11 @@ class Pn extends T {
|
|
|
6354
6354
|
* Uses lightweight i18n for English, loads i18next only for other locales.
|
|
6355
6355
|
*/
|
|
6356
6356
|
async prepare() {
|
|
6357
|
-
var o
|
|
6357
|
+
var o;
|
|
6358
6358
|
const t = this.config.i18n;
|
|
6359
|
-
|
|
6360
|
-
this.lightweightI18n.setDictionary(t.messages), this.usingI18next = !1, this.updateConfigDirection((o = t.direction) != null ? o : "ltr");
|
|
6361
|
-
return;
|
|
6362
|
-
}
|
|
6359
|
+
this.applyDefaultLocale(t == null ? void 0 : t.defaultLocale);
|
|
6363
6360
|
const e = t == null ? void 0 : t.locale;
|
|
6364
|
-
e === void 0 || e === "auto" ? await this.detectAndSetLocale() : await this.setLocale(e), this.updateConfigDirection((
|
|
6361
|
+
e === void 0 || e === "auto" ? await this.detectAndSetLocale() : await this.setLocale(e), (t == null ? void 0 : t.messages) !== void 0 && this.setDictionary(t.messages), this.updateConfigDirection((o = t == null ? void 0 : t.direction) != null ? o : this.getDirection());
|
|
6365
6362
|
}
|
|
6366
6363
|
/**
|
|
6367
6364
|
* Dynamically load i18next when needed for non-English locales
|
|
@@ -6369,7 +6366,7 @@ class Pn extends T {
|
|
|
6369
6366
|
async ensureI18nextLoaded(t, e) {
|
|
6370
6367
|
if (this.i18nextWrapper !== null)
|
|
6371
6368
|
return;
|
|
6372
|
-
const { loadI18next: o } = await import("./i18next-loader-
|
|
6369
|
+
const { loadI18next: o } = await import("./i18next-loader-DESAFQPB.mjs");
|
|
6373
6370
|
this.i18nextWrapper = await o(t, e);
|
|
6374
6371
|
}
|
|
6375
6372
|
/**
|
|
@@ -8117,13 +8114,13 @@ class Gn extends T {
|
|
|
8117
8114
|
*/
|
|
8118
8115
|
setupKeyboardShortcuts() {
|
|
8119
8116
|
setTimeout(() => {
|
|
8120
|
-
["CMD+SHIFT+UP", "CMD+SHIFT+DOWN"].forEach((e) =>
|
|
8117
|
+
["CMD+SHIFT+UP", "CMD+SHIFT+DOWN"].forEach((e) => _.remove(document, e)), _.add({
|
|
8121
8118
|
name: "CMD+SHIFT+UP",
|
|
8122
8119
|
on: document,
|
|
8123
8120
|
handler: (e) => {
|
|
8124
8121
|
this.shouldHandleShortcut(e) && (e.preventDefault(), this.moveCurrentBlockUp());
|
|
8125
8122
|
}
|
|
8126
|
-
}), this.registeredShortcuts.push("CMD+SHIFT+UP"),
|
|
8123
|
+
}), this.registeredShortcuts.push("CMD+SHIFT+UP"), _.add({
|
|
8127
8124
|
name: "CMD+SHIFT+DOWN",
|
|
8128
8125
|
on: document,
|
|
8129
8126
|
handler: (e) => {
|
|
@@ -8149,7 +8146,7 @@ class Gn extends T {
|
|
|
8149
8146
|
*/
|
|
8150
8147
|
async destroy() {
|
|
8151
8148
|
for (const t of this.registeredShortcuts)
|
|
8152
|
-
|
|
8149
|
+
_.remove(document, t);
|
|
8153
8150
|
this.registeredShortcuts = [], await Promise.all(this.blocks.map((t) => t.destroy()));
|
|
8154
8151
|
}
|
|
8155
8152
|
/**
|
|
@@ -8310,7 +8307,7 @@ class Zn extends T {
|
|
|
8310
8307
|
* to select all and copy them
|
|
8311
8308
|
*/
|
|
8312
8309
|
prepare() {
|
|
8313
|
-
this.selection = new y(),
|
|
8310
|
+
this.selection = new y(), _.add({
|
|
8314
8311
|
name: "CMD+A",
|
|
8315
8312
|
handler: (t) => {
|
|
8316
8313
|
const { BlockManager: e, ReadOnly: o } = this.Blok;
|
|
@@ -8485,7 +8482,7 @@ class Zn extends T {
|
|
|
8485
8482
|
* De-registers Shortcut CMD+A
|
|
8486
8483
|
*/
|
|
8487
8484
|
destroy() {
|
|
8488
|
-
|
|
8485
|
+
_.remove(this.Blok.UI.nodes.redactor, "CMD+A");
|
|
8489
8486
|
}
|
|
8490
8487
|
/**
|
|
8491
8488
|
* First CMD+A selects all input content by native behaviour,
|
|
@@ -10538,7 +10535,7 @@ const ii = (a) => a.some((t) => t.items !== void 0 && t.items.length > 0), ri =
|
|
|
10538
10535
|
const r = s.data, l = ci(r, s.tunes);
|
|
10539
10536
|
t.push(...l);
|
|
10540
10537
|
} else
|
|
10541
|
-
t.push(
|
|
10538
|
+
t.push(H(B({}, s), {
|
|
10542
10539
|
id: n
|
|
10543
10540
|
}));
|
|
10544
10541
|
}
|
|
@@ -10729,7 +10726,7 @@ class ki extends T {
|
|
|
10729
10726
|
isValid: !1
|
|
10730
10727
|
};
|
|
10731
10728
|
const n = await t.validate(s.data);
|
|
10732
|
-
return
|
|
10729
|
+
return H(B({}, s), {
|
|
10733
10730
|
isValid: n,
|
|
10734
10731
|
parentId: t.parentId,
|
|
10735
10732
|
contentIds: t.contentIds
|
|
@@ -10802,7 +10799,7 @@ class ki extends T {
|
|
|
10802
10799
|
), i = t.map((r) => B({}, r));
|
|
10803
10800
|
return s.forEach(({ index: r }, l) => {
|
|
10804
10801
|
const c = n[l];
|
|
10805
|
-
i[r] =
|
|
10802
|
+
i[r] = H(B({}, i[r]), {
|
|
10806
10803
|
data: c.data
|
|
10807
10804
|
});
|
|
10808
10805
|
}), i;
|
|
@@ -10839,7 +10836,7 @@ class ki extends T {
|
|
|
10839
10836
|
if (N(e))
|
|
10840
10837
|
return;
|
|
10841
10838
|
const o = t.preservedTunes;
|
|
10842
|
-
return
|
|
10839
|
+
return H(B({
|
|
10843
10840
|
id: t.id,
|
|
10844
10841
|
tool: t.name,
|
|
10845
10842
|
data: e
|
|
@@ -10949,46 +10946,46 @@ class wi extends Se {
|
|
|
10949
10946
|
});
|
|
10950
10947
|
}
|
|
10951
10948
|
}
|
|
10952
|
-
class
|
|
10949
|
+
class F extends Map {
|
|
10953
10950
|
/**
|
|
10954
10951
|
* Returns Block Tools collection
|
|
10955
10952
|
*/
|
|
10956
10953
|
get blockTools() {
|
|
10957
10954
|
const t = Array.from(this.entries()).filter(([, e]) => e.isBlock());
|
|
10958
|
-
return new
|
|
10955
|
+
return new F(t);
|
|
10959
10956
|
}
|
|
10960
10957
|
/**
|
|
10961
10958
|
* Returns Inline Tools collection
|
|
10962
10959
|
*/
|
|
10963
10960
|
get inlineTools() {
|
|
10964
10961
|
const t = Array.from(this.entries()).filter(([, e]) => e.isInline());
|
|
10965
|
-
return new
|
|
10962
|
+
return new F(t);
|
|
10966
10963
|
}
|
|
10967
10964
|
/**
|
|
10968
10965
|
* Returns Block Tunes collection
|
|
10969
10966
|
*/
|
|
10970
10967
|
get blockTunes() {
|
|
10971
10968
|
const t = Array.from(this.entries()).filter(([, e]) => e.isTune());
|
|
10972
|
-
return new
|
|
10969
|
+
return new F(t);
|
|
10973
10970
|
}
|
|
10974
10971
|
/**
|
|
10975
10972
|
* Returns internal Tools collection
|
|
10976
10973
|
*/
|
|
10977
10974
|
get internalTools() {
|
|
10978
10975
|
const t = Array.from(this.entries()).filter(([, e]) => e.isInternal);
|
|
10979
|
-
return new
|
|
10976
|
+
return new F(t);
|
|
10980
10977
|
}
|
|
10981
10978
|
/**
|
|
10982
10979
|
* Returns Tools collection provided by user
|
|
10983
10980
|
*/
|
|
10984
10981
|
get externalTools() {
|
|
10985
10982
|
const t = Array.from(this.entries()).filter(([, e]) => !e.isInternal);
|
|
10986
|
-
return new
|
|
10983
|
+
return new F(t);
|
|
10987
10984
|
}
|
|
10988
10985
|
}
|
|
10989
10986
|
class yi extends Se {
|
|
10990
10987
|
constructor() {
|
|
10991
|
-
super(...arguments), this.type = dt.Block, this.inlineTools = new
|
|
10988
|
+
super(...arguments), this.type = dt.Block, this.inlineTools = new F(), this.tunes = new F();
|
|
10992
10989
|
}
|
|
10993
10990
|
/**
|
|
10994
10991
|
* Creates new Tool instance
|
|
@@ -11139,20 +11136,42 @@ class Bi {
|
|
|
11139
11136
|
* @param name - tool name
|
|
11140
11137
|
*/
|
|
11141
11138
|
get(t) {
|
|
11142
|
-
const
|
|
11139
|
+
const l = this.config[t], { class: e, isInternal: o = !1 } = l, s = Yt(l, ["class", "isInternal"]), n = e;
|
|
11143
11140
|
if (n === void 0)
|
|
11144
11141
|
throw new Error(`Tool "${t}" does not provide a class.`);
|
|
11145
|
-
const i = this.getConstructor(n);
|
|
11142
|
+
const i = this.getConstructor(n), r = this.createToolApi(t);
|
|
11146
11143
|
return new i({
|
|
11147
11144
|
name: t,
|
|
11148
11145
|
constructable: n,
|
|
11149
11146
|
config: s,
|
|
11150
|
-
api:
|
|
11147
|
+
api: r,
|
|
11151
11148
|
isDefault: t === this.blokConfig.defaultBlock,
|
|
11152
11149
|
defaultPlaceholder: this.blokConfig.placeholder,
|
|
11153
11150
|
isInternal: o
|
|
11154
11151
|
});
|
|
11155
11152
|
}
|
|
11153
|
+
/**
|
|
11154
|
+
* Creates a tool-specific API with namespaced i18n.
|
|
11155
|
+
*
|
|
11156
|
+
* EditorJS tools expect `api.i18n.t('key')` to automatically look up
|
|
11157
|
+
* `tools.{toolName}.key`. This wrapper provides that behavior while
|
|
11158
|
+
* falling back to direct key lookup for Blok internal tools that use
|
|
11159
|
+
* fully-qualified keys like `tools.stub.error`.
|
|
11160
|
+
*
|
|
11161
|
+
* @param toolName - Name of the tool
|
|
11162
|
+
* @returns API object with tool-namespaced i18n
|
|
11163
|
+
*/
|
|
11164
|
+
createToolApi(t) {
|
|
11165
|
+
const e = this.api.methods, o = `tools.${t}`, s = {
|
|
11166
|
+
t: (n) => {
|
|
11167
|
+
const i = `${o}.${n}`, r = e.i18n.t(i);
|
|
11168
|
+
return r !== i ? r : e.i18n.t(n);
|
|
11169
|
+
}
|
|
11170
|
+
};
|
|
11171
|
+
return H(B({}, e), {
|
|
11172
|
+
i18n: s
|
|
11173
|
+
});
|
|
11174
|
+
}
|
|
11156
11175
|
/**
|
|
11157
11176
|
* Find appropriate Tool object constructor for Tool constructable
|
|
11158
11177
|
* @param constructable - Tools constructable
|
|
@@ -11203,7 +11222,7 @@ const ee = (a) => {
|
|
|
11203
11222
|
};
|
|
11204
11223
|
class xi extends T {
|
|
11205
11224
|
constructor() {
|
|
11206
|
-
super(...arguments), this.stubTool = "stub", this.factory = null, this.toolsAvailable = new
|
|
11225
|
+
super(...arguments), this.stubTool = "stub", this.factory = null, this.toolsAvailable = new F(), this.toolsUnavailable = new F(), this.inlineToolsSanitizeConfigCache = null;
|
|
11207
11226
|
}
|
|
11208
11227
|
/**
|
|
11209
11228
|
* Returns available Tools
|
|
@@ -11432,7 +11451,7 @@ class xi extends T {
|
|
|
11432
11451
|
...Array.from(o.entries()),
|
|
11433
11452
|
...Array.from(this.blockTunes.internalTools.entries())
|
|
11434
11453
|
];
|
|
11435
|
-
e.tunes = new
|
|
11454
|
+
e.tunes = new F(s);
|
|
11436
11455
|
return;
|
|
11437
11456
|
}
|
|
11438
11457
|
if (Array.isArray(this.config.tunes)) {
|
|
@@ -11440,10 +11459,10 @@ class xi extends T {
|
|
|
11440
11459
|
...Array.from(o.entries()),
|
|
11441
11460
|
...Array.from(this.blockTunes.internalTools.entries())
|
|
11442
11461
|
];
|
|
11443
|
-
e.tunes = new
|
|
11462
|
+
e.tunes = new F(s);
|
|
11444
11463
|
return;
|
|
11445
11464
|
}
|
|
11446
|
-
e.tunes = new
|
|
11465
|
+
e.tunes = new F(
|
|
11447
11466
|
Array.from(this.blockTunes.internalTools.entries())
|
|
11448
11467
|
);
|
|
11449
11468
|
}
|
|
@@ -11516,7 +11535,7 @@ class xi extends T {
|
|
|
11516
11535
|
}
|
|
11517
11536
|
e.push([o, s]);
|
|
11518
11537
|
}
|
|
11519
|
-
return new
|
|
11538
|
+
return new F(e);
|
|
11520
11539
|
}
|
|
11521
11540
|
/**
|
|
11522
11541
|
* Builds block tunes collection for provided tune names, skipping unavailable ones.
|
|
@@ -11533,7 +11552,7 @@ class xi extends T {
|
|
|
11533
11552
|
}
|
|
11534
11553
|
e.push([o, s]);
|
|
11535
11554
|
}
|
|
11536
|
-
return new
|
|
11555
|
+
return new F(e);
|
|
11537
11556
|
}
|
|
11538
11557
|
}
|
|
11539
11558
|
const Ti = `*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:PT Mono,Menlo,Monaco,Consolas,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:651px){.\\!container{max-width:651px!important}.container{max-width:651px}}@media(min-width:768px){.\\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\\!container{max-width:1536px!important}.container{max-width:1536px}}.blok-block{padding:3px 2px}.blok-block::-webkit-input-placeholder{line-height:1.5!important}.blok-inline-tool-button{display:flex;height:100%;width:1.75rem;cursor:pointer;align-items:center;justify-content:center;border-radius:.25rem;border-width:0px;background-color:transparent;padding:0;line-height:1.5;--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.blok-inline-tool-button--active{background-color:#388ae51a;--tw-text-opacity: 1;color:rgb(56 138 229 / var(--tw-text-opacity, 1))}.blok-input{width:100%;border-radius:3px;border-width:1px;--tw-border-opacity: 1;border-color:rgb(239 240 241 / var(--tw-border-opacity, 1));padding:.625rem .75rem;--tw-shadow: inset 0 1px 2px 0 rgba(35, 44, 72, .06);--tw-shadow-colored: inset 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}.blok-input[data-blok-placeholder]:before{pointer-events:none;position:static!important;display:inline-block;width:0px;content:var(--tw-content);white-space:nowrap}.blok-loader{position:relative;border-width:1px;--tw-border-opacity: 1;border-color:rgb(239 240 241 / var(--tw-border-opacity, 1))}.blok-loader:before{position:absolute;left:50%;top:50%;margin-left:-11px;margin-top:-11px;height:18px;content:var(--tw-content);width:18px}@keyframes rotation{0%{content:var(--tw-content);transform:rotate(0)}to{content:var(--tw-content);transform:rotate(360deg)}}.blok-loader:before{animation:rotation 1.2s infinite linear;border-radius:9999px;border-width:2px;border-color:rgb(239 240 241 / var(--tw-border-opacity, 1));--tw-border-opacity: 1;border-left-color:rgb(56 138 229 / var(--tw-border-opacity, 1));--tw-content: "";content:var(--tw-content)}.blok-button{cursor:pointer;border-radius:3px;border-width:1px;--tw-border-opacity: 1;border-color:rgb(239 240 241 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:13px;text-align:center;font-size:14.9px;--tw-text-opacity: 1;color:rgb(112 118 132 / var(--tw-text-opacity, 1));--tw-shadow: 0 2px 2px 0 rgba(18, 30, 57, .04);--tw-shadow-colored: 0 2px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.blok-button:hover{--tw-bg-opacity: 1;background-color:rgb(251 252 254 / var(--tw-bg-opacity, 1));--tw-shadow: 0 1px 3px 0 rgba(18, 30, 57, .08);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.blok-button svg{margin-right:.2em;margin-top:-.125rem;height:1.25rem}.blok-settings-button{margin:0;display:inline-flex;min-height:26px;min-width:26px;cursor:pointer;align-items:center;justify-content:center;border-radius:3px;border-width:0px;background-color:transparent;vertical-align:bottom;color:inherit;outline:2px solid transparent;outline-offset:2px}@media(max-width:650px){.blok-settings-button{height:36px;width:36px;border-radius:.5rem}}@media(hover:hover){.blok-settings-button:hover{--tw-bg-opacity: 1;background-color:rgb(239 242 245 / var(--tw-bg-opacity, 1))}}.blok-settings-button svg{height:auto;width:auto}@media(max-width:650px){.blok-settings-button svg{height:28px;width:28px}}.blok-settings-button--active{--tw-text-opacity: 1;color:rgb(56 138 229 / var(--tw-text-opacity, 1))}.blok-settings-button--focused{background-color:#22baff14;--tw-shadow: inset 0 0 0 1px rgba(7, 161, 227, .08);--tw-shadow-colored: inset 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}@keyframes buttonClicked{0%{transform:scale3d(.95,.95,.95)}60%{transform:scale3d(1.02,1.02,1.02)}80%,to{transform:scaleZ(1)}}.blok-settings-button--focused-animated{animation:buttonClicked .75s cubic-bezier(.215,.61,.355,1) forwards}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-\\[auto_var\\(--offset\\)_calc\\(var\\(--offset\\)\\+env\\(safe-area-inset-bottom\\)\\)_var\\(--offset\\)\\]{inset:auto var(--offset) calc(var(--offset) + env(safe-area-inset-bottom)) var(--offset)}.bottom-0{bottom:0}.bottom-5{bottom:1.25rem}.left-0{left:0}.left-5{left:1.25rem}.left-\\[var\\(--popover-left\\)\\]{left:var(--popover-left)}.left-auto{left:auto}.right-0{right:0}.right-\\[15px\\]{right:15px}.right-full{right:100%}.top-0{top:0}.top-\\[7px\\]{top:7px}.top-\\[var\\(--popover-top\\)\\]{top:var(--popover-top)}.top-auto{top:auto}.z-0{z-index:0}.z-\\[10000\\]{z-index:10000}.z-\\[1\\]{z-index:1}.z-\\[2\\]{z-index:2}.z-\\[3\\]{z-index:3}.z-\\[4\\]{z-index:4}.z-overlay{z-index:999}.\\!m-0{margin:0!important}.-m-px{margin:-1px}.m-0{margin:0}.mx-auto{margin-left:auto;margin-right:auto}.my-2\\.5{margin-top:.625rem;margin-bottom:.625rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-\\[-0\\.5em\\]{margin-top:-.5em;margin-bottom:-.5em}.\\!mr-0{margin-right:0!important}.\\!mr-2{margin-right:.5rem!important}.mb-1{margin-bottom:.25rem}.mb-1\\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-\\[30px\\]{margin-bottom:30px}.mb-px{margin-bottom:1px}.ml-3\\.5{margin-left:.875rem}.mr-2{margin-right:.5rem}.mr-auto{margin-right:auto}.mt-1{margin-top:.25rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\\[15px\\]{margin-top:15px}.mt-\\[2px\\]{margin-top:2px}.mt-\\[3px\\]{margin-top:3px}.mt-\\[5px\\]{margin-top:5px}.box-border{box-sizing:border-box}.\\!block{display:block!important}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.\\!hidden{display:none!important}.hidden{display:none}.h-2\\.5{height:.625rem}.h-4{height:1rem}.h-9{height:2.25rem}.h-\\[26px\\]{height:26px}.h-\\[50px\\]{height:50px}.h-auto{height:auto}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.h-px{height:1px}.h-toolbox-btn{height:26px}.max-h-0{max-height:0px}.max-h-\\[var\\(--max-height\\)\\]{max-height:var(--max-height)}.max-h-none{max-height:none}.w-2\\.5{width:.625rem}.w-4{width:1rem}.w-6{width:1.5rem}.w-9{width:2.25rem}.w-\\[230px\\]{width:230px}.w-\\[26px\\]{width:26px}.w-\\[var\\(--width\\)\\]{width:var(--width)}.w-auto{width:auto}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.w-toolbox-btn{width:26px}.min-w-0{min-width:0px}.min-w-\\[calc\\(100\\%-theme\\(\\'spacing\\.6\\'\\)-10px\\)\\]{min-width:calc(100% - 1.5rem - 10px)}.min-w-\\[calc\\(100\\%-var\\(--offset\\)\\*2\\)\\]{min-width:calc(100% - var(--offset) * 2)}.min-w-\\[var\\(--width\\)\\]{min-width:var(--width)}.min-w-max{min-width:-moz-max-content;min-width:max-content}.max-w-\\[1100px\\]{max-width:1100px}.max-w-\\[130px\\]{max-width:130px}.max-w-content{max-width:650px}.max-w-none{max-width:none}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-\\[5px\\]{--tw-translate-x: -5px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-\\[5px\\]{--tw-translate-y: -5px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\\[5px\\]{--tw-translate-x: 5px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\\[5px\\]{--tw-translate-y: 5px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-none{transform:none}@keyframes panelShowingMobile{0%{opacity:0;transform:translateY(14px) scale(.98)}70%{opacity:1;transform:translateY(-4px)}to{transform:translateY(0)}}.animate-\\[panelShowingMobile_250ms_ease\\]{animation:panelShowingMobile .25s ease}@keyframes panelShowing{0%{opacity:0;transform:translateY(-8px) scale(.9)}70%{opacity:1;transform:translateY(2px)}to{transform:translateY(0)}}.animate-\\[panelShowing_100ms_ease\\]{animation:panelShowing .1s ease}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:fade-in .3s ease forwards}.animate-none{animation:none}@keyframes notifyBounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}to{transform:scale(1)}}.animate-notify-bounce-in{animation:notifyBounceIn .6s 1}@keyframes wobble{0%{transform:translateZ(0)}15%{transform:translate3d(-9%,0,0)}30%{transform:translate3d(9%,0,0)}45%{transform:translate3d(-4%,0,0)}60%{transform:translate3d(4%,0,0)}75%{transform:translate3d(-1%,0,0)}to{transform:translateZ(0)}}.animate-wobble{animation:wobble .4s}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-\\[auto_auto_1fr\\]{grid-template-columns:auto auto 1fr}.grid-rows-\\[auto\\]{grid-template-rows:auto}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-\\[10px\\]{border-radius:10px}.rounded-\\[3px\\]{border-radius:3px}.rounded-\\[4px\\]{border-radius:4px}.rounded-\\[5px\\]{border-radius:5px}.rounded-\\[7px\\]{border-radius:7px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-0{border-width:0px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-none{border-style:none}.border-\\[\\#e8e8eb\\]{--tw-border-opacity: 1;border-color:rgb(232 232 235 / var(--tw-border-opacity, 1))}.border-\\[rgba\\(226\\,226\\,229\\,0\\.2\\)\\],.border-\\[rgba\\(226\\,226\\,229\\,0\\.20\\)\\]{border-color:#e2e2e533}.border-line-gray,.border-popover-border{--tw-border-opacity: 1;border-color:rgb(239 240 241 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.\\!bg-\\[\\#fafffe\\]{--tw-bg-opacity: 1 !important;background-color:rgb(250 255 254 / var(--tw-bg-opacity, 1))!important}.\\!bg-\\[\\#fffbfb\\]{--tw-bg-opacity: 1 !important;background-color:rgb(255 251 251 / var(--tw-bg-opacity, 1))!important}.\\!bg-item-confirm-bg{--tw-bg-opacity: 1 !important;background-color:rgb(226 74 74 / var(--tw-bg-opacity, 1))!important}.\\!bg-item-focus-bg{background-color:#22baff14!important}.bg-\\[\\#34c992\\]{--tw-bg-opacity: 1;background-color:rgb(52 201 146 / var(--tw-bg-opacity, 1))}.bg-\\[\\#F8F8F8\\]{--tw-bg-opacity: 1;background-color:rgb(248 248 248 / var(--tw-bg-opacity, 1))}.bg-\\[\\#eff1f4\\]{--tw-bg-opacity: 1;background-color:rgb(239 241 244 / var(--tw-bg-opacity, 1))}.bg-\\[\\#f2f5f7\\]{--tw-bg-opacity: 1;background-color:rgb(242 245 247 / var(--tw-bg-opacity, 1))}.bg-\\[\\#f7f7f7\\]{--tw-bg-opacity: 1;background-color:rgb(247 247 247 / var(--tw-bg-opacity, 1))}.bg-bg-light{--tw-bg-opacity: 1;background-color:rgb(239 242 245 / var(--tw-bg-opacity, 1))}.bg-dark{--tw-bg-opacity: 1;background-color:rgb(29 32 43 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-item-hover-bg{--tw-bg-opacity: 1;background-color:rgb(248 248 248 / var(--tw-bg-opacity, 1))}.bg-popover-bg{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-popover-border{--tw-bg-opacity: 1;background-color:rgb(239 240 241 / var(--tw-bg-opacity, 1))}.bg-selection{--tw-bg-opacity: 1;background-color:rgb(225 242 255 / var(--tw-bg-opacity, 1))}.bg-selection-highlight{background-color:#2eaadc33}.bg-tooltip-bg{--tw-bg-opacity: 1;background-color:rgb(29 32 43 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.p-0{padding:0}.p-0\\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-\\[3px\\]{padding:3px}.p-\\[5px\\]{padding:5px}.p-\\[var\\(--item-padding\\)\\]{padding:var(--item-padding)}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-\\[18px\\]{padding-left:18px;padding-right:18px}.px-\\[2px\\]{padding-left:2px;padding-right:2px}.px-\\[30px\\]{padding-left:30px;padding-right:30px}.px-\\[3px\\]{padding-left:3px;padding-right:3px}.py-0{padding-top:0;padding-bottom:0}.py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-\\[0\\.5em\\]{padding-top:.5em;padding-bottom:.5em}.py-\\[13px\\]{padding-top:13px;padding-bottom:13px}.py-\\[3px\\]{padding-top:3px;padding-bottom:3px}.py-\\[5px\\]{padding-top:5px;padding-bottom:5px}.pl-0\\.5{padding-left:.125rem}.pr-1\\.5{padding-right:.375rem}.pr-\\[5px\\]{padding-right:5px}.text-center{text-align:center}.text-right{text-align:right}.text-start{text-align:start}.font-\\[-apple-system\\,BlinkMacSystemFont\\,\\"Segoe_UI\\"\\,\\"Roboto\\"\\,\\"Oxygen\\"\\,\\"Ubuntu\\"\\,\\"Cantarell\\"\\,\\"Fira_Sans\\"\\,\\"Droid_Sans\\"\\,\\"Helvetica_Neue\\"\\,sans-serif\\]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.font-\\[inherit\\]{font-family:inherit}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\\[13px\\]{font-size:13px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.capitalize{text-transform:capitalize}.italic{font-style:italic}.\\!leading-\\[1\\.3\\]{line-height:1.3!important}.leading-5{line-height:1.25rem}.leading-\\[1\\.4em\\]{line-height:1.4em}.leading-\\[1\\.6em\\]{line-height:1.6em}.leading-\\[1em\\]{line-height:1em}.leading-\\[22px\\]{line-height:22px}.leading-\\[50px\\]{line-height:50px}.leading-relaxed{line-height:1.625}.-tracking-widest{letter-spacing:-.1em}.tracking-\\[0\\.02em\\]{letter-spacing:.02em}.\\!text-white{--tw-text-opacity: 1 !important;color:rgb(255 255 255 / var(--tw-text-opacity, 1))!important}.text-\\[\\#656b7c\\]{--tw-text-opacity: 1;color:rgb(101 107 124 / var(--tw-text-opacity, 1))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-dark{--tw-text-opacity: 1;color:rgb(29 32 43 / var(--tw-text-opacity, 1))}.text-gray-text{--tw-text-opacity: 1;color:rgb(112 118 132 / var(--tw-text-opacity, 1))}.text-inherit{color:inherit}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-text-primary{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-text-secondary{--tw-text-opacity: 1;color:rgb(112 118 132 / var(--tw-text-opacity, 1))}.text-tooltip-font{--tw-text-opacity: 1;color:rgb(205 209 224 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.accent-current{accent-color:currentColor}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-55{opacity:.55}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\\[0_11px_17px_0_rgba\\(23\\,32\\,61\\,0\\.13\\)\\]{--tw-shadow: 0 11px 17px 0 rgba(23,32,61,.13);--tw-shadow-colored: 0 11px 17px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\\[0_1px_1px_0_rgba\\(18\\,49\\,35\\,0\\.05\\)\\]{--tw-shadow: 0 1px 1px 0 rgba(18,49,35,.05);--tw-shadow-colored: 0 1px 1px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\\[0_2px_1px_0_rgba\\(16\\,19\\,29\\,0\\)\\]{--tw-shadow: 0 2px 1px 0 rgba(16,19,29,0);--tw-shadow-colored: 0 2px 1px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\\[0_3px_15px_-3px_theme\\(colors\\.popover-shadow\\)\\]{--tw-shadow: 0 3px 15px -3px rgba(13, 20, 33, .1);--tw-shadow-colored: 0 3px 15px -3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-tooltip{--tw-shadow: 0 8px 12px 0 rgba(29, 32, 43, .17), 0 4px 5px -3px rgba(5, 6, 12, .49);--tw-shadow-colored: 0 8px 12px 0 var(--tw-shadow-color), 0 4px 5px -3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\\[opacity\\,transform\\]{transition-property:opacity,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-none{transition-property:none}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-\\[120ms\\]{transition-duration:.12s}.duration-\\[250ms\\]{transition-duration:.25s}.duration-\\[50ms\\,70ms\\]{transition-duration:50ms,70ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.will-change-\\[opacity\\,left\\,top\\]{will-change:opacity,left,top}.will-change-\\[opacity\\,top\\,left\\]{will-change:opacity,top,left}.will-change-\\[opacity\\,top\\]{will-change:opacity,top}.will-change-\\[opacity\\]{will-change:opacity}.\\[clip\\:rect\\(0\\,0\\,0\\,0\\)\\]{clip:rect(0,0,0,0)}.\\[direction\\:rtl\\]{direction:rtl}[data-blok-navigation-focused=true]{margin-left:auto;margin-right:auto;width:650px;max-width:100%;border-radius:.375rem;background-color:#22baff14}@media(hover:hover){[data-blok-item-name=delete]:hover{--tw-text-opacity: 1;color:rgb(226 74 74 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}}[data-drop-indicator]{position:relative}[data-drop-indicator]:before{pointer-events:none;position:absolute;z-index:10;height:.375rem;width:100%;max-width:650px;--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:.125rem;--tw-bg-opacity: 1;background-color:rgb(212 227 252 / var(--tw-bg-opacity, 1));--tw-content: "";content:var(--tw-content);left:calc(50% + var(--drop-indicator-depth, 0) * 12px);max-width:calc(650px - var(--drop-indicator-depth, 0) * 24px)}[data-drop-indicator=bottom]:before{bottom:0;--tw-translate-y: 50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}[data-drop-indicator=top]:before{top:0;--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}[data-blok-dragging-multi=true] [data-blok-selected=true]{opacity:.4;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}[data-blok-selected=true] [data-blok-element-content]:has([data-list-style]){background-color:transparent}[data-blok-selected=true] [data-list-style] [role=listitem]{border-radius:4px;--tw-bg-opacity: 1;background-color:rgb(225 242 255 / var(--tw-bg-opacity, 1))}[data-blok-selected=true] [data-list-style] [role=listitem] [contenteditable]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.placeholder\\:font-medium::-moz-placeholder{font-weight:500}.placeholder\\:font-medium::placeholder{font-weight:500}.placeholder\\:text-\\[\\#656b7c\\]::-moz-placeholder{--tw-text-opacity: 1;color:rgb(101 107 124 / var(--tw-text-opacity, 1))}.placeholder\\:text-\\[\\#656b7c\\]::placeholder{--tw-text-opacity: 1;color:rgb(101 107 124 / var(--tw-text-opacity, 1))}.placeholder\\:text-gray-text::-moz-placeholder{--tw-text-opacity: 1;color:rgb(112 118 132 / var(--tw-text-opacity, 1))}.placeholder\\:text-gray-text::placeholder{--tw-text-opacity: 1;color:rgb(112 118 132 / var(--tw-text-opacity, 1))}.before\\:absolute:before{content:var(--tw-content);position:absolute}.before\\:inset-0:before{content:var(--tw-content);inset:0}.before\\:left-0:before{content:var(--tw-content);left:0}.before\\:left-\\[9px\\]:before{content:var(--tw-content);left:9px}.before\\:top-0:before{content:var(--tw-content);top:0}.before\\:top-\\[5px\\]:before{content:var(--tw-content);top:5px}.before\\:-z-10:before{content:var(--tw-content);z-index:-10}.before\\:m-\\[3px\\]:before{content:var(--tw-content);margin:3px}.before\\:block:before{content:var(--tw-content);display:block}.before\\:h-3:before{content:var(--tw-content);height:.75rem}.before\\:h-\\[calc\\(100\\%-6px\\)\\]:before{content:var(--tw-content);height:calc(100% - 6px)}.before\\:w-0\\.5:before{content:var(--tw-content);width:.125rem}.before\\:w-\\[3px\\]:before{content:var(--tw-content);width:3px}.before\\:rotate-\\[-45deg\\]:before{content:var(--tw-content);--tw-rotate: -45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.before\\:rounded-\\[5px\\]:before{content:var(--tw-content);border-radius:5px}.before\\:rounded-lg:before{content:var(--tw-content);border-radius:.5rem}.before\\:\\!bg-\\[\\#41ffb1\\]:before{content:var(--tw-content);--tw-bg-opacity: 1 !important;background-color:rgb(65 255 177 / var(--tw-bg-opacity, 1))!important}.before\\:\\!bg-\\[\\#fb5d5d\\]:before{content:var(--tw-content);--tw-bg-opacity: 1 !important;background-color:rgb(251 93 93 / var(--tw-bg-opacity, 1))!important}.before\\:bg-\\[\\#575d67\\]:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(87 93 103 / var(--tw-bg-opacity, 1))}.before\\:bg-tooltip-bg:before{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(29 32 43 / var(--tw-bg-opacity, 1))}.before\\:bg-transparent:before{content:var(--tw-content);background-color:transparent}.before\\:content-\\[\\"\\"\\]:before{--tw-content: "";content:var(--tw-content)}.before\\:content-\\[\\\\\\'\\\\\\'\\]:before{--tw-content: \\'\\';content:var(--tw-content)}.after\\:absolute:after{content:var(--tw-content);position:absolute}.after\\:left-\\[9px\\]:after{content:var(--tw-content);left:9px}.after\\:top-\\[5px\\]:after{content:var(--tw-content);top:5px}.after\\:mx-3:after{content:var(--tw-content);margin-left:.75rem;margin-right:.75rem}.after\\:h-3:after{content:var(--tw-content);height:.75rem}.after\\:w-0\\.5:after{content:var(--tw-content);width:.125rem}.after\\:rotate-45:after{content:var(--tw-content);--tw-rotate: 45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.after\\:bg-\\[\\#575d67\\]:after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(87 93 103 / var(--tw-bg-opacity, 1))}.after\\:text-\\[\\#ddd\\]:after{content:var(--tw-content);--tw-text-opacity: 1;color:rgb(221 221 221 / var(--tw-text-opacity, 1))}.after\\:content-\\[\\"\\"\\]:after{--tw-content: "";content:var(--tw-content)}.after\\:content-\\[\\'\\|\\'\\]:after{--tw-content: "|";content:var(--tw-content)}.first\\:mt-0:first-child{margin-top:0}.last\\:ml-2\\.5:last-child{margin-left:.625rem}.empty\\:before\\:pointer-events-none:empty:before{content:var(--tw-content);pointer-events:none}.empty\\:before\\:cursor-text:empty:before{content:var(--tw-content);cursor:text}.empty\\:before\\:text-gray-text:empty:before{content:var(--tw-content);--tw-text-opacity: 1;color:rgb(112 118 132 / var(--tw-text-opacity, 1))}.empty\\:before\\:content-\\[attr\\(data-blok-placeholder\\)\\]:empty:before{--tw-content: attr(data-blok-placeholder);content:var(--tw-content)}.empty\\:before\\:content-\\[attr\\(data-blok-placeholder-active\\)\\]:empty:before{--tw-content: attr(data-blok-placeholder-active);content:var(--tw-content)}.empty\\:before\\:content-\\[attr\\(data-placeholder\\)\\]:empty:before{--tw-content: attr(data-placeholder);content:var(--tw-content)}.hover\\:bg-\\[\\#2db583\\]:hover{--tw-bg-opacity: 1;background-color:rgb(45 181 131 / var(--tw-bg-opacity, 1))}.hover\\:bg-\\[\\#e0e4eb\\]:hover{--tw-bg-opacity: 1;background-color:rgb(224 228 235 / var(--tw-bg-opacity, 1))}.hover\\:bg-\\[\\#e9ecee\\]:hover{--tw-bg-opacity: 1;background-color:rgb(233 236 238 / var(--tw-bg-opacity, 1))}.hover\\:opacity-100:hover{opacity:1}.focus\\:placeholder\\:text-\\[rgba\\(101\\,107\\,124\\,0\\.3\\)\\]:focus::-moz-placeholder{color:#656b7c4d}.focus\\:placeholder\\:text-\\[rgba\\(101\\,107\\,124\\,0\\.3\\)\\]:focus::placeholder{color:#656b7c4d}.empty\\:focus\\:before\\:pointer-events-none:focus:empty:before{content:var(--tw-content);pointer-events:none}.empty\\:focus\\:before\\:cursor-text:focus:empty:before{content:var(--tw-content);cursor:text}.empty\\:focus\\:before\\:text-gray-text:focus:empty:before{content:var(--tw-content);--tw-text-opacity: 1;color:rgb(112 118 132 / var(--tw-text-opacity, 1))}.empty\\:focus\\:before\\:content-\\[attr\\(data-blok-placeholder-active\\)\\]:focus:empty:before{--tw-content: attr(data-blok-placeholder-active);content:var(--tw-content)}.active\\:cursor-grabbing:active{cursor:grabbing}.group[data-blok-dragging=true] .group-data-\\[blok-dragging\\=true\\]\\:pointer-events-none{pointer-events:none}.group[data-blok-rtl=true] .group-data-\\[blok-rtl\\=true\\]\\:left-\\[calc\\(-1\\*theme\\(width\\.toolbox-btn\\)\\)\\]{left:-26px}.group[data-blok-rtl=true] .group-data-\\[blok-rtl\\=true\\]\\:left-auto{left:auto}.group[data-blok-rtl=true] .group-data-\\[blok-rtl\\=true\\]\\:right-\\[calc\\(-1\\*theme\\(width\\.toolbox-btn\\)\\)\\]{right:-26px}.group[data-blok-rtl=true] .group-data-\\[blok-rtl\\=true\\]\\:right-auto{right:auto}.group[data-blok-dragging=true] .group-data-\\[blok-dragging\\=true\\]\\:cursor-grabbing{cursor:grabbing}@media(max-width:650px){.mobile\\:absolute{position:absolute}.mobile\\:right-auto{right:auto}.mobile\\:z-\\[2\\]{z-index:2}.mobile\\:hidden{display:none}.mobile\\:h-toolbox-btn-mobile{height:36px}.mobile\\:w-toolbox-btn-mobile{width:36px}.mobile\\:rounded-\\[6px\\]{border-radius:6px}.mobile\\:border{border-width:1px}.mobile\\:border-\\[\\#e8e8eb\\]{--tw-border-opacity: 1;border-color:rgb(232 232 235 / var(--tw-border-opacity, 1))}.mobile\\:bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.mobile\\:p-1{padding:.25rem}.mobile\\:text-\\[15px\\]{font-size:15px}.mobile\\:font-medium{font-weight:500}.mobile\\:shadow-overlay-pane{--tw-shadow: 0 3px 15px -3px rgba(13, 20, 33, .13);--tw-shadow-colored: 0 3px 15px -3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.group[data-blok-rtl=true] .mobile\\:group-data-\\[blok-rtl\\=true\\]\\:ml-0{margin-left:0}.group[data-blok-rtl=true] .mobile\\:group-data-\\[blok-rtl\\=true\\]\\:mr-auto{margin-right:auto}.group[data-blok-rtl=true] .mobile\\:group-data-\\[blok-rtl\\=true\\]\\:pl-\\[10px\\]{padding-left:10px}.group[data-blok-rtl=true] .mobile\\:group-data-\\[blok-rtl\\=true\\]\\:pr-0{padding-right:0}}@media(min-width:651px){.not-mobile\\:w-6{width:1.5rem}.group[data-blok-narrow=true][data-blok-rtl=true] .not-mobile\\:group-data-\\[blok-narrow\\=true\\]\\:group-data-\\[blok-rtl\\=true\\]\\:left-0{left:0}.group[data-blok-narrow=true][data-blok-rtl=true] .not-mobile\\:group-data-\\[blok-narrow\\=true\\]\\:group-data-\\[blok-rtl\\=true\\]\\:left-\\[-5px\\]{left:-5px}.group[data-blok-narrow=true][data-blok-rtl=true] .not-mobile\\:group-data-\\[blok-narrow\\=true\\]\\:group-data-\\[blok-rtl\\=true\\]\\:left-\\[calc\\(-1\\*theme\\(spacing\\.narrow-mode-right-padding\\)-5px\\)\\]{left:-55px}.group[data-blok-narrow=true][data-blok-rtl=true] .not-mobile\\:group-data-\\[blok-narrow\\=true\\]\\:group-data-\\[blok-rtl\\=true\\]\\:right-\\[5px\\]{right:5px}.group[data-blok-narrow=true][data-blok-rtl=true] .not-mobile\\:group-data-\\[blok-narrow\\=true\\]\\:group-data-\\[blok-rtl\\=true\\]\\:right-auto{right:auto}.group[data-blok-narrow=true] .not-mobile\\:group-data-\\[blok-narrow\\=true\\]\\:left-\\[5px\\]{left:5px}.group[data-blok-narrow=true] .not-mobile\\:group-data-\\[blok-narrow\\=true\\]\\:right-\\[calc\\(-1\\*theme\\(spacing\\.narrow-mode-right-padding\\)-5px\\)\\]{right:-55px}.group[data-blok-narrow=true][data-blok-rtl=true] .not-mobile\\:group-data-\\[blok-narrow\\=true\\]\\:group-data-\\[blok-rtl\\=true\\]\\:ml-\\[theme\\(spacing\\.narrow-mode-right-padding\\)\\]{margin-left:50px}.group[data-blok-narrow=true][data-blok-rtl=true] .not-mobile\\:group-data-\\[blok-narrow\\=true\\]\\:group-data-\\[blok-rtl\\=true\\]\\:mr-0{margin-right:0}.group[data-blok-narrow=true] .not-mobile\\:group-data-\\[blok-narrow\\=true\\]\\:mr-\\[theme\\(spacing\\.narrow-mode-right-padding\\)\\]{margin-right:50px}}@media(hover:hover){.can-hover\\:hover\\:cursor-grab:hover{cursor:grab}.can-hover\\:hover\\:cursor-pointer:hover{cursor:pointer}.can-hover\\:hover\\:bg-bg-light:hover{--tw-bg-opacity: 1;background-color:rgb(239 242 245 / var(--tw-bg-opacity, 1))}.can-hover\\:hover\\:bg-item-hover-bg:hover{--tw-bg-opacity: 1;background-color:rgb(248 248 248 / var(--tw-bg-opacity, 1))}.group[data-blok-toolbox-opened=true] .group-data-\\[blok-toolbox-opened\\=true\\]\\:can-hover\\:hover\\:cursor-pointer:hover{cursor:pointer}}.\\[\\&\\>p\\:first-of-type\\]\\:mt-0>p:first-of-type{margin-top:0}.\\[\\&\\>p\\:last-of-type\\]\\:mb-0>p:last-of-type{margin-bottom:0}.\\[\\&\\[data-blok-dragging\\=true\\]\\]\\:cursor-grabbing[data-blok-dragging=true]{cursor:grabbing}.\\[\\&\\[data-blok-empty\\=true\\]\\]\\:before\\:pointer-events-none[data-blok-empty=true]:before{content:var(--tw-content);pointer-events:none}.\\[\\&\\[data-blok-empty\\=true\\]\\]\\:before\\:cursor-text[data-blok-empty=true]:before{content:var(--tw-content);cursor:text}.\\[\\&\\[data-blok-empty\\=true\\]\\]\\:before\\:text-gray-text[data-blok-empty=true]:before{content:var(--tw-content);--tw-text-opacity: 1;color:rgb(112 118 132 / var(--tw-text-opacity, 1))}.\\[\\&\\[data-blok-empty\\=true\\]\\]\\:before\\:content-\\[attr\\(data-blok-placeholder\\)\\][data-blok-empty=true]:before{--tw-content: attr(data-blok-placeholder);content:var(--tw-content)}.\\[\\&\\[data-blok-empty\\=true\\]\\]\\:before\\:content-\\[attr\\(data-placeholder\\)\\][data-blok-empty=true]:before{--tw-content: attr(data-placeholder);content:var(--tw-content)}.\\[\\&\\[data-blok-focused\\=\\"true\\"\\]\\]\\:bg-item-focus-bg[data-blok-focused=true]{background-color:#22baff14}.\\[\\&\\[data-blok-force-hover\\]\\]\\:cursor-pointer[data-blok-force-hover]{cursor:pointer}.\\[\\&\\[data-blok-force-hover\\]\\]\\:bg-item-hover-bg[data-blok-force-hover]{--tw-bg-opacity: 1;background-color:rgb(248 248 248 / var(--tw-bg-opacity, 1))}.\\[\\&\\[data-blok-popover-item-active\\]\\]\\:bg-icon-active-bg[data-blok-popover-item-active]{background-color:#388ae51a}.\\[\\&\\[data-blok-popover-item-active\\]\\]\\:text-icon-active-text[data-blok-popover-item-active]{--tw-text-opacity: 1;color:rgb(56 138 229 / var(--tw-text-opacity, 1))}.\\[\\&\\[data-blok-popover-item-no-hover\\]\\]\\:cursor-default[data-blok-popover-item-no-hover]{cursor:default}.\\[\\&\\[data-blok-popover-item-no-hover\\]\\]\\:hover\\:bg-transparent:hover[data-blok-popover-item-no-hover]{background-color:transparent}.\\[\\&\\[data-blok-toolbox-opened\\=true\\]_\\[contentEditable\\=true\\]\\[data-blok-placeholder\\]\\:focus\\]\\:before\\:\\!opacity-0[data-blok-toolbox-opened=true] [contentEditable=true][data-blok-placeholder]:focus:before{content:var(--tw-content);opacity:0!important}.\\[\\&\\[data-empty\\=true\\]\\:focus\\]\\:before\\:pointer-events-none[data-empty=true]:focus:before{content:var(--tw-content);pointer-events:none}.\\[\\&\\[data-empty\\=true\\]\\:focus\\]\\:before\\:cursor-text[data-empty=true]:focus:before{content:var(--tw-content);cursor:text}.\\[\\&\\[data-empty\\=true\\]\\:focus\\]\\:before\\:text-gray-text[data-empty=true]:focus:before{content:var(--tw-content);--tw-text-opacity: 1;color:rgb(112 118 132 / var(--tw-text-opacity, 1))}.\\[\\&\\[data-empty\\=true\\]\\:focus\\]\\:before\\:content-\\[attr\\(data-blok-placeholder-active\\)\\][data-empty=true]:focus:before{--tw-content: attr(data-blok-placeholder-active);content:var(--tw-content)}.\\[\\&\\[data-empty\\=true\\]\\]\\:before\\:pointer-events-none[data-empty=true]:before{content:var(--tw-content);pointer-events:none}.\\[\\&\\[data-empty\\=true\\]\\]\\:before\\:cursor-text[data-empty=true]:before{content:var(--tw-content);cursor:text}.\\[\\&\\[data-empty\\=true\\]\\]\\:before\\:text-gray-text[data-empty=true]:before{content:var(--tw-content);--tw-text-opacity: 1;color:rgb(112 118 132 / var(--tw-text-opacity, 1))}.\\[\\&\\[data-empty\\=true\\]\\]\\:before\\:content-\\[attr\\(data-blok-placeholder-active\\)\\][data-empty=true]:before{--tw-content: attr(data-blok-placeholder-active);content:var(--tw-content)}.\\[\\&_\\:\\:selection\\]\\:bg-selection-inline ::-moz-selection{--tw-bg-opacity: 1;background-color:rgb(212 236 255 / var(--tw-bg-opacity, 1))}.\\[\\&_\\:\\:selection\\]\\:bg-selection-inline ::selection{--tw-bg-opacity: 1;background-color:rgb(212 236 255 / var(--tw-bg-opacity, 1))}.\\[\\&_\\[contenteditable\\]\\:empty\\]\\:after\\:content-\\[\\"\\\\\\\\feff_\\"\\] [contenteditable]:empty:after{--tw-content: "\\\\feff ";content:var(--tw-content)}.\\[\\&_\\[contenteditable\\]\\]\\:select-none [contenteditable]{-webkit-user-select:none;-moz-user-select:none;user-select:none}.\\[\\&_\\[data-blok-tool\\=stub\\]\\]\\:opacity-55 [data-blok-tool=stub]{opacity:.55}.\\[\\&_\\[hidden\\]\\]\\:\\!hidden [hidden]{display:none!important}.\\[\\&_a\\]\\:cursor-pointer a{cursor:pointer}.\\[\\&_a\\]\\:text-link a{--tw-text-opacity: 1;color:rgb(56 138 229 / var(--tw-text-opacity, 1))}.\\[\\&_a\\]\\:underline a{text-decoration-line:underline}.\\[\\&_b\\]\\:font-bold b{font-weight:700}.\\[\\&_div\\]\\:\\!m-0 div{margin:0!important}.\\[\\&_div\\]\\:\\!p-0 div{padding:0!important}.\\[\\&_i\\]\\:italic i{font-style:italic}.\\[\\&_img\\]\\:opacity-55 img{opacity:.55}.\\[\\&_p\\]\\:\\!m-0 p{margin:0!important}.\\[\\&_p\\]\\:\\!p-0 p{padding:0!important}.\\[\\&_path\\]\\:stroke-current path{stroke:currentColor}.\\[\\&_svg\\]\\:block svg{display:block}.\\[\\&_svg\\]\\:size-icon svg{width:20px;height:20px}.\\[\\&_svg\\]\\:h-6 svg{height:1.5rem}.\\[\\&_svg\\]\\:h-7 svg{height:1.75rem}.\\[\\&_svg\\]\\:h-icon svg{height:20px}.\\[\\&_svg\\]\\:max-h-full svg{max-height:100%}.\\[\\&_svg\\]\\:w-6 svg{width:1.5rem}.\\[\\&_svg\\]\\:w-7 svg{width:1.75rem}.\\[\\&_svg\\]\\:w-icon svg{width:20px}.\\[\\&_svg\\]\\:text-gray-text svg{--tw-text-opacity: 1;color:rgb(112 118 132 / var(--tw-text-opacity, 1))}@media(max-width:650px){.mobile\\:\\[\\&_svg\\]\\:h-icon-mobile svg{height:28px}.mobile\\:\\[\\&_svg\\]\\:w-icon-mobile svg{width:28px}}`;
|
|
@@ -12121,19 +12140,19 @@ const Ci = 30, Ii = 200, Ei = 100, rt = class rt extends T {
|
|
|
12121
12140
|
if (!t)
|
|
12122
12141
|
return;
|
|
12123
12142
|
const e = this.globalUndoRedo ? document : t;
|
|
12124
|
-
["CMD+Z", "CMD+SHIFT+Z", "CMD+Y"].forEach((i) =>
|
|
12143
|
+
["CMD+Z", "CMD+SHIFT+Z", "CMD+Y"].forEach((i) => _.remove(e, i)), _.add({
|
|
12125
12144
|
name: "CMD+Z",
|
|
12126
12145
|
on: e,
|
|
12127
12146
|
handler: (i) => {
|
|
12128
12147
|
this.shouldHandleShortcut(i) && (i.preventDefault(), this.undo());
|
|
12129
12148
|
}
|
|
12130
|
-
}), this.registeredShortcuts.push({ name: "CMD+Z", element: e }),
|
|
12149
|
+
}), this.registeredShortcuts.push({ name: "CMD+Z", element: e }), _.add({
|
|
12131
12150
|
name: "CMD+SHIFT+Z",
|
|
12132
12151
|
on: e,
|
|
12133
12152
|
handler: (i) => {
|
|
12134
12153
|
this.shouldHandleShortcut(i) && (i.preventDefault(), this.redo());
|
|
12135
12154
|
}
|
|
12136
|
-
}), this.registeredShortcuts.push({ name: "CMD+SHIFT+Z", element: e }),
|
|
12155
|
+
}), this.registeredShortcuts.push({ name: "CMD+SHIFT+Z", element: e }), _.add({
|
|
12137
12156
|
name: "CMD+Y",
|
|
12138
12157
|
on: e,
|
|
12139
12158
|
handler: (i) => {
|
|
@@ -12511,7 +12530,7 @@ const Ci = 30, Ii = 200, Ei = 100, rt = class rt extends T {
|
|
|
12511
12530
|
destroy() {
|
|
12512
12531
|
this.clearDebounce();
|
|
12513
12532
|
for (const { name: t, element: e } of this.registeredShortcuts)
|
|
12514
|
-
|
|
12533
|
+
_.remove(e, t);
|
|
12515
12534
|
this.registeredShortcuts = [], rt.activeInstance === this && (rt.activeInstance = null), this.undoStack = [], this.redoStack = [], this.initialStateCaptured = !1;
|
|
12516
12535
|
}
|
|
12517
12536
|
};
|
|
@@ -12713,8 +12732,8 @@ class Mi {
|
|
|
12713
12732
|
};
|
|
12714
12733
|
if (A(t)) {
|
|
12715
12734
|
const e = t, o = e.config;
|
|
12716
|
-
return
|
|
12717
|
-
config:
|
|
12735
|
+
return H(B({}, e), {
|
|
12736
|
+
config: H(B({}, A(o) ? o : {}), {
|
|
12718
12737
|
preserveBlank: !0
|
|
12719
12738
|
})
|
|
12720
12739
|
});
|
|
@@ -18,7 +18,7 @@ let nt = (o = 21) => {
|
|
|
18
18
|
return t;
|
|
19
19
|
};
|
|
20
20
|
var ot = /* @__PURE__ */ ((o) => (o.VERBOSE = "VERBOSE", o.INFO = "INFO", o.WARN = "WARN", o.ERROR = "ERROR", o))(ot || {});
|
|
21
|
-
const rt = () => "0.4.3-beta.
|
|
21
|
+
const rt = () => "0.4.3-beta.5", Ct = {
|
|
22
22
|
BACKSPACE: 8,
|
|
23
23
|
TAB: 9,
|
|
24
24
|
ENTER: 13,
|
package/dist/full.mjs
CHANGED
|
@@ -10,10 +10,10 @@ var e = (a, l, o) => l in a ? n(a, l, { enumerable: !0, configurable: !0, writab
|
|
|
10
10
|
d.call(l, o) && e(a, o, l[o]);
|
|
11
11
|
return a;
|
|
12
12
|
}, r = (a, l) => t(a, c(l));
|
|
13
|
-
import { B as v, v as A } from "./chunks/blok-
|
|
13
|
+
import { B as v, v as A } from "./chunks/blok-CC3asvLc.mjs";
|
|
14
14
|
import { List as p, Header as f, Paragraph as I, Link as k, Italic as u, Bold as B } from "./tools.mjs";
|
|
15
15
|
import { defaultBlockTools as H, defaultInlineTools as P } from "./tools.mjs";
|
|
16
|
-
import { D as _ } from "./chunks/inline-tool-convert-
|
|
16
|
+
import { D as _ } from "./chunks/inline-tool-convert-DtMsnFGn.mjs";
|
|
17
17
|
const m = {
|
|
18
18
|
paragraph: {
|
|
19
19
|
class: I,
|
package/dist/tools.mjs
CHANGED
|
@@ -10,8 +10,8 @@ var U = (f, t, e) => t in f ? nt(f, t, { enumerable: !0, configurable: !0, writa
|
|
|
10
10
|
it.call(t, e) && U(f, e, t[e]);
|
|
11
11
|
return f;
|
|
12
12
|
}, P = (f, t) => rt(f, st(t));
|
|
13
|
-
import { t as L, D as g, a9 as et, aa as at, ab as lt, ac as ct, ad as dt, ae as ut, af as ht, ag as ft, ah as pt, ai as G, aj as j, ak as $, f as A, al as gt, am as mt, S as H, P as Et, an as Tt, l as Ct, J as At } from "./chunks/inline-tool-convert-
|
|
14
|
-
import { a0 as Ot } from "./chunks/inline-tool-convert-
|
|
13
|
+
import { t as L, D as g, a9 as et, aa as at, ab as lt, ac as ct, ad as dt, ae as ut, af as ht, ag as ft, ah as pt, ai as G, aj as j, ak as $, f as A, al as gt, am as mt, S as H, P as Et, an as Tt, l as Ct, J as At } from "./chunks/inline-tool-convert-DtMsnFGn.mjs";
|
|
14
|
+
import { a0 as Ot } from "./chunks/inline-tool-convert-DtMsnFGn.mjs";
|
|
15
15
|
const W = [
|
|
16
16
|
"empty:before:pointer-events-none",
|
|
17
17
|
"empty:before:text-gray-text",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jackuait/blok",
|
|
3
|
-
"version": "0.4.3-beta.
|
|
3
|
+
"version": "0.4.3-beta.5",
|
|
4
4
|
"description": "Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch",
|
|
5
5
|
"module": "dist/blok.mjs",
|
|
6
6
|
"types": "./types/index.d.ts",
|
|
@@ -204,17 +204,7 @@ export class I18n extends Module {
|
|
|
204
204
|
// Set default locale if configured
|
|
205
205
|
this.applyDefaultLocale(i18nConfig?.defaultLocale);
|
|
206
206
|
|
|
207
|
-
//
|
|
208
|
-
if (i18nConfig?.messages !== undefined) {
|
|
209
|
-
// For custom messages, use lightweight implementation with overrides
|
|
210
|
-
this.lightweightI18n.setDictionary(i18nConfig.messages);
|
|
211
|
-
this.usingI18next = false;
|
|
212
|
-
// Set direction from config or default to 'ltr' for custom messages
|
|
213
|
-
this.updateConfigDirection(i18nConfig.direction ?? 'ltr');
|
|
214
|
-
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
|
|
207
|
+
// Load base translations first
|
|
218
208
|
const requestedLocale = i18nConfig?.locale;
|
|
219
209
|
|
|
220
210
|
if (requestedLocale === undefined || requestedLocale === 'auto') {
|
|
@@ -223,6 +213,11 @@ export class I18n extends Module {
|
|
|
223
213
|
await this.setLocale(requestedLocale);
|
|
224
214
|
}
|
|
225
215
|
|
|
216
|
+
// Merge custom messages on top of base translations (if provided)
|
|
217
|
+
if (i18nConfig?.messages !== undefined) {
|
|
218
|
+
this.setDictionary(i18nConfig.messages);
|
|
219
|
+
}
|
|
220
|
+
|
|
226
221
|
// Update config.i18n.direction so other modules can access it via isRtl getter
|
|
227
222
|
this.updateConfigDirection(i18nConfig?.direction ?? this.getDirection());
|
|
228
223
|
}
|
|
@@ -5,6 +5,7 @@ import { BlockTuneAdapter } from './tune';
|
|
|
5
5
|
import { BlockToolAdapter } from './block';
|
|
6
6
|
import type { API as ApiModule } from '../modules/api';
|
|
7
7
|
import type { BlokConfig } from '../../../types/configs';
|
|
8
|
+
import type { API as ApiMethods, I18n } from '../../../types';
|
|
8
9
|
|
|
9
10
|
type ToolConstructor = typeof InlineToolAdapter | typeof BlockToolAdapter | typeof BlockTuneAdapter;
|
|
10
11
|
|
|
@@ -56,18 +57,65 @@ export class ToolsFactory {
|
|
|
56
57
|
}
|
|
57
58
|
|
|
58
59
|
const Constructor = this.getConstructor(constructable);
|
|
60
|
+
const toolApi = this.createToolApi(name);
|
|
59
61
|
|
|
60
62
|
return new Constructor({
|
|
61
63
|
name,
|
|
62
64
|
constructable,
|
|
63
65
|
config,
|
|
64
|
-
api:
|
|
66
|
+
api: toolApi,
|
|
65
67
|
isDefault: name === this.blokConfig.defaultBlock,
|
|
66
68
|
defaultPlaceholder: this.blokConfig.placeholder,
|
|
67
69
|
isInternal,
|
|
68
70
|
});
|
|
69
71
|
}
|
|
70
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Creates a tool-specific API with namespaced i18n.
|
|
75
|
+
*
|
|
76
|
+
* EditorJS tools expect `api.i18n.t('key')` to automatically look up
|
|
77
|
+
* `tools.{toolName}.key`. This wrapper provides that behavior while
|
|
78
|
+
* falling back to direct key lookup for Blok internal tools that use
|
|
79
|
+
* fully-qualified keys like `tools.stub.error`.
|
|
80
|
+
*
|
|
81
|
+
* @param toolName - Name of the tool
|
|
82
|
+
* @returns API object with tool-namespaced i18n
|
|
83
|
+
*/
|
|
84
|
+
private createToolApi(toolName: string): ApiMethods {
|
|
85
|
+
const baseApi = this.api.methods;
|
|
86
|
+
const namespace = `tools.${toolName}`;
|
|
87
|
+
|
|
88
|
+
const namespacedI18n: I18n = {
|
|
89
|
+
t: (dictKey: string): string => {
|
|
90
|
+
/**
|
|
91
|
+
* Try namespaced key first for EditorJS compatibility.
|
|
92
|
+
* External tools call t('Add row') expecting lookup of 'tools.table.Add row'.
|
|
93
|
+
*/
|
|
94
|
+
const namespacedKey = `${namespace}.${dictKey}`;
|
|
95
|
+
const namespacedResult = baseApi.i18n.t(namespacedKey);
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* If translation found (result differs from key), use it.
|
|
99
|
+
* When translation is missing, I18n.t() returns the key unchanged.
|
|
100
|
+
*/
|
|
101
|
+
if (namespacedResult !== namespacedKey) {
|
|
102
|
+
return namespacedResult;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Fall back to direct key lookup for Blok internal tools.
|
|
107
|
+
* Internal tools use fully-qualified keys like 'tools.stub.error'.
|
|
108
|
+
*/
|
|
109
|
+
return baseApi.i18n.t(dictKey);
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
return {
|
|
114
|
+
...baseApi,
|
|
115
|
+
i18n: namespacedI18n,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
|
|
71
119
|
/**
|
|
72
120
|
* Find appropriate Tool object constructor for Tool constructable
|
|
73
121
|
* @param constructable - Tools constructable
|