fable-editor 1.2.6 → 1.2.8
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/angular/core/editor.d.ts +17 -1
- package/dist/angular/esm2022/core/editor.mjs +66 -15
- package/dist/angular/fesm2022/fable-editor.mjs +65 -14
- package/dist/angular/fesm2022/fable-editor.mjs.map +1 -1
- package/dist/core/editor.css +15 -2
- package/dist/core/editor.d.ts +17 -1
- package/dist/core/editor.d.ts.map +1 -1
- package/dist/core/index.cjs +3 -3
- package/dist/core/index.mjs +105 -83
- package/dist/react/index.cjs +5 -5
- package/dist/react/index.mjs +71 -49
- package/package.json +1 -1
- package/style.css +15 -2
package/dist/react/index.mjs
CHANGED
|
@@ -61,10 +61,10 @@ function We() {
|
|
|
61
61
|
A.unshift("Warning: " + f), Function.prototype.apply.call(console[a], console, A);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
var H = !1, $ = !1,
|
|
64
|
+
var H = !1, $ = !1, Z = !1, F = !1, et = !1, Mt;
|
|
65
65
|
Mt = Symbol.for("react.module.reference");
|
|
66
66
|
function ue(a) {
|
|
67
|
-
return !!(typeof a == "string" || typeof a == "function" || a === i || a === n || et || a === s || a === c || a === d || F || a === b || H || $ ||
|
|
67
|
+
return !!(typeof a == "string" || typeof a == "function" || a === i || a === n || et || a === s || a === c || a === d || F || a === b || H || $ || Z || typeof a == "object" && a !== null && (a.$$typeof === m || a.$$typeof === u || a.$$typeof === l || a.$$typeof === r || a.$$typeof === o || // This needs to include all possible module reference object
|
|
68
68
|
// types supported by any Flight configuration anywhere since
|
|
69
69
|
// we don't know which Flight build this will end up being used
|
|
70
70
|
// with.
|
|
@@ -313,13 +313,13 @@ function We() {
|
|
|
313
313
|
}
|
|
314
314
|
return "";
|
|
315
315
|
}
|
|
316
|
-
var K = Object.prototype.hasOwnProperty, Dt = {},
|
|
316
|
+
var K = Object.prototype.hasOwnProperty, Dt = {}, Ot = w.ReactDebugCurrentFrame;
|
|
317
317
|
function lt(a) {
|
|
318
318
|
if (a) {
|
|
319
319
|
var f = a._owner, v = nt(a.type, a._source, f ? f.type : null);
|
|
320
|
-
|
|
320
|
+
Ot.setExtraStackFrame(v);
|
|
321
321
|
} else
|
|
322
|
-
|
|
322
|
+
Ot.setExtraStackFrame(null);
|
|
323
323
|
}
|
|
324
324
|
function ye(a, f, v, T, L) {
|
|
325
325
|
{
|
|
@@ -352,17 +352,17 @@ function We() {
|
|
|
352
352
|
}
|
|
353
353
|
function we(a) {
|
|
354
354
|
try {
|
|
355
|
-
return
|
|
355
|
+
return Zt(a), !1;
|
|
356
356
|
} catch {
|
|
357
357
|
return !0;
|
|
358
358
|
}
|
|
359
359
|
}
|
|
360
|
-
function
|
|
360
|
+
function Zt(a) {
|
|
361
361
|
return "" + a;
|
|
362
362
|
}
|
|
363
363
|
function Ft(a) {
|
|
364
364
|
if (we(a))
|
|
365
|
-
return E("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", Ce(a)),
|
|
365
|
+
return E("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", Ce(a)), Zt(a);
|
|
366
366
|
}
|
|
367
367
|
var _t = w.ReactCurrentOwner, Te = {
|
|
368
368
|
key: !0,
|
|
@@ -601,13 +601,13 @@ Check the top-level render call using <` + v + ">.");
|
|
|
601
601
|
return Fe !== "key";
|
|
602
602
|
}), xt = D.length > 0 ? "{key: someKey, " + D.join(": ..., ") + ": ...}" : "{key: someKey}";
|
|
603
603
|
if (!Yt[U + xt]) {
|
|
604
|
-
var
|
|
604
|
+
var Ze = D.length > 0 ? "{" + D.join(": ..., ") + ": ...}" : "{}";
|
|
605
605
|
E(`A props object containing a "key" prop is being spread into JSX:
|
|
606
606
|
let props = %s;
|
|
607
607
|
<%s {...props} />
|
|
608
608
|
React keys must be passed directly to JSX without using spread:
|
|
609
609
|
let props = %s;
|
|
610
|
-
<%s key={someKey} {...props} />`, xt, U,
|
|
610
|
+
<%s key={someKey} {...props} />`, xt, U, Ze, U), Yt[U + xt] = !0;
|
|
611
611
|
}
|
|
612
612
|
}
|
|
613
613
|
return a === i ? Pe(P) : Re(P), P;
|
|
@@ -619,8 +619,8 @@ React keys must be passed directly to JSX without using spread:
|
|
|
619
619
|
function Ne(a, f, v) {
|
|
620
620
|
return Qt(a, f, v, !1);
|
|
621
621
|
}
|
|
622
|
-
var De = Ne,
|
|
623
|
-
tt.Fragment = i, tt.jsx = De, tt.jsxs =
|
|
622
|
+
var De = Ne, Oe = Be;
|
|
623
|
+
tt.Fragment = i, tt.jsx = De, tt.jsxs = Oe;
|
|
624
624
|
}()), tt;
|
|
625
625
|
}
|
|
626
626
|
process.env.NODE_ENV === "production" ? Et.exports = je() : Et.exports = We();
|
|
@@ -2921,23 +2921,23 @@ const xi = ["nw", "ne", "sw", "se"], wt = ["img-left", "img-right", "img-top", "
|
|
|
2921
2921
|
"img-top": h.tpltop,
|
|
2922
2922
|
"img-center": h.tplcenter
|
|
2923
2923
|
}, wi = ".tox,.pop,.tblctx,.imgctx,.selctx,.dlg";
|
|
2924
|
-
let
|
|
2924
|
+
let O = null, X = null, St = 0, ae = !1;
|
|
2925
2925
|
function ct() {
|
|
2926
|
-
clearTimeout(St), X = null,
|
|
2926
|
+
clearTimeout(St), X = null, O && O.classList.remove("show");
|
|
2927
2927
|
}
|
|
2928
2928
|
function Ti(p) {
|
|
2929
2929
|
const t = p.dataset.tip;
|
|
2930
2930
|
if (!t) return;
|
|
2931
2931
|
X = p, clearTimeout(St);
|
|
2932
|
-
const e =
|
|
2932
|
+
const e = O && O.classList.contains("show") ? 60 : 350;
|
|
2933
2933
|
St = window.setTimeout(() => {
|
|
2934
2934
|
if (X !== p || !document.contains(p)) return;
|
|
2935
|
-
|
|
2936
|
-
const i = p.getBoundingClientRect(), s =
|
|
2935
|
+
O || (O = document.createElement("div"), O.className = "etip", document.body.appendChild(O)), O.textContent = t, O.classList.add("show");
|
|
2936
|
+
const i = p.getBoundingClientRect(), s = O.offsetWidth, n = O.offsetHeight;
|
|
2937
2937
|
let l = i.left + i.width / 2 - s / 2;
|
|
2938
2938
|
l = Math.max(6, Math.min(l, innerWidth - s - 6));
|
|
2939
2939
|
let r = i.bottom + 7;
|
|
2940
|
-
r + n > innerHeight - 6 && (r = i.top - n - 7),
|
|
2940
|
+
r + n > innerHeight - 6 && (r = i.top - n - 7), O.style.left = l + "px", O.style.top = r + "px";
|
|
2941
2941
|
}, e);
|
|
2942
2942
|
}
|
|
2943
2943
|
function Ei() {
|
|
@@ -2976,7 +2976,7 @@ function de(p) {
|
|
|
2976
2976
|
var j;
|
|
2977
2977
|
let Hi = (j = class {
|
|
2978
2978
|
constructor(t) {
|
|
2979
|
-
this.lang = "en", this.contentClass = "fable-content-" + j.instanceCounter++, this.contentStyleEl = null, this.savedRange = null, this.foreColor = "#000000", this.backColor = "#FACC15", this.openPop = null, this.
|
|
2979
|
+
this.lang = "en", this.contentClass = "fable-content-" + j.instanceCounter++, this.contentStyleEl = null, this.savedRange = null, this.foreColor = "#000000", this.backColor = "#FACC15", this.openPop = null, this.subStack = [], this.popAnchor = null, this.dlgOvl = null, this.tblActive = null, this.tblCorner = null, this.tblColBars = [], this.tblCtx = null, this.tblCellMark = null, this.tblOpMark = null, this.tblOpMarkKind = null, this.imgActive = null, this.imgHandles = [], this.imgCtx = null, this.imgHideTimer = null, this.phActive = null, this.phCtx = null, this.phUploadTarget = null, this.vidActive = null, this.vidCtx = null, this.vidHideTimer = null, this.vphActive = null, this.vphCtx = null, this.vphUploadTarget = null, this.selCtx = null, this.tbrMore = null, this.tbrExpanded = !1, this.codeActive = null, this.codeCtx = null, this.tplActive = null, this.tplCtx = null, this.revisions = [], this.revTimer = null, this.draftTimer = null, this.draftStorageKey = "", this.listeners = [], this.isDestroyed = !1, this.options = {
|
|
2980
2980
|
target: t.target,
|
|
2981
2981
|
language: t.language || "en",
|
|
2982
2982
|
height: t.height ?? 302,
|
|
@@ -3048,7 +3048,7 @@ let Hi = (j = class {
|
|
|
3048
3048
|
/* ---------------------------------------------------------- event binding */
|
|
3049
3049
|
bindEvents() {
|
|
3050
3050
|
if (this.onDoc("mousedown", (t) => {
|
|
3051
|
-
this.openPop && !this.openPop.contains(t.target) && !this.popAnchor.contains(t.target) && !
|
|
3051
|
+
this.openPop && !this.openPop.contains(t.target) && !this.popAnchor.contains(t.target) && !this.subContains(t.target) && this.closePop();
|
|
3052
3052
|
}), this.onDoc("keydown", (t) => {
|
|
3053
3053
|
t.key === "Escape" && (this.closePop(), this.closeDlg());
|
|
3054
3054
|
}), this.onDoc("selectionchange", () => {
|
|
@@ -3103,8 +3103,10 @@ let Hi = (j = class {
|
|
|
3103
3103
|
this.positionTableHandles(), this.positionImageHandles(), this.positionImgPhCtx(), this.positionTplCtx(), this.positionVphCtx(), this.positionVidCtx(), this.positionCodeCtx();
|
|
3104
3104
|
}), this.onWin(
|
|
3105
3105
|
"scroll",
|
|
3106
|
-
() => {
|
|
3107
|
-
|
|
3106
|
+
(t) => {
|
|
3107
|
+
var s;
|
|
3108
|
+
const e = t.target;
|
|
3109
|
+
e instanceof Node && ((((s = this.openPop) == null ? void 0 : s.contains(e)) ?? !1) || this.subContains(e)) || this.closePop(), this.positionTableHandles(), this.positionImageHandles(), this.positionImgPhCtx(), this.positionTplCtx(), this.positionVphCtx(), this.positionVidCtx(), this.positionCodeCtx(), this.repositionSelToolbar();
|
|
3108
3110
|
},
|
|
3109
3111
|
!0
|
|
3110
3112
|
), this.onWin("resize", () => {
|
|
@@ -3152,7 +3154,7 @@ let Hi = (j = class {
|
|
|
3152
3154
|
const t = (e = this.docInput.files) == null ? void 0 : e[0];
|
|
3153
3155
|
t && this.importWordFile(t).catch(() => alert(this.t("importfail")));
|
|
3154
3156
|
}), this.onDoc("mousedown", (t) => {
|
|
3155
|
-
this.ed.contains(t.target) || t.target === this.tblCorner || this.tblColBars.includes(t.target) || this.tblCtx && this.tblCtx.contains(t.target) || this.imgHandles.includes(t.target) || this.imgCtx && this.imgCtx.contains(t.target) || this.phCtx && this.phCtx.contains(t.target) || this.tplCtx && this.tplCtx.contains(t.target) || this.selCtx && this.selCtx.contains(t.target) || this.vphCtx && this.vphCtx.contains(t.target) || this.vidCtx && this.vidCtx.contains(t.target) || this.codeCtx && this.codeCtx.contains(t.target) || this.openPop && this.openPop.contains(t.target) || this.
|
|
3157
|
+
this.ed.contains(t.target) || t.target === this.tblCorner || this.tblColBars.includes(t.target) || this.tblCtx && this.tblCtx.contains(t.target) || this.imgHandles.includes(t.target) || this.imgCtx && this.imgCtx.contains(t.target) || this.phCtx && this.phCtx.contains(t.target) || this.tplCtx && this.tplCtx.contains(t.target) || this.selCtx && this.selCtx.contains(t.target) || this.vphCtx && this.vphCtx.contains(t.target) || this.vidCtx && this.vidCtx.contains(t.target) || this.codeCtx && this.codeCtx.contains(t.target) || this.openPop && this.openPop.contains(t.target) || this.subContains(t.target) || (this.clearTableHandles(), this.clearImageHandles(), this.clearImgPlaceholderSel(), this.clearTplSel(), this.clearVphPlaceholderSel(), this.clearVidHandles(), this.clearCodeSel(), this.clearSelToolbar());
|
|
3156
3158
|
});
|
|
3157
3159
|
}
|
|
3158
3160
|
on(t, e, i) {
|
|
@@ -3358,24 +3360,42 @@ let Hi = (j = class {
|
|
|
3358
3360
|
}
|
|
3359
3361
|
/* ---------------------------------------------------------- popups / menus */
|
|
3360
3362
|
closeSub() {
|
|
3361
|
-
|
|
3362
|
-
|
|
3363
|
+
this.closeSubFrom(0);
|
|
3364
|
+
}
|
|
3365
|
+
/** Removes stacked flyouts from `level` (0 = shallowest) onward, keeping
|
|
3366
|
+
* anything shallower - e.g. hovering a sibling item inside the "Cell"
|
|
3367
|
+
* flyout should drop a deeper "Cell background" flyout but keep "Cell"
|
|
3368
|
+
* itself and the top-level popup it bridges to. */
|
|
3369
|
+
closeSubFrom(t) {
|
|
3370
|
+
for (; this.subStack.length > t; ) this.subStack.pop().remove();
|
|
3371
|
+
}
|
|
3372
|
+
/** True if `node` is inside any currently-open flyout submenu (any depth). */
|
|
3373
|
+
subContains(t) {
|
|
3374
|
+
return this.subStack.some((e) => e.contains(t));
|
|
3375
|
+
}
|
|
3376
|
+
/** 0 for the top-level popup itself; otherwise this container's depth in
|
|
3377
|
+
* the flyout stack + 1. Used to know how many deeper flyouts to close
|
|
3378
|
+
* when opening or hovering within `container`. */
|
|
3379
|
+
subLevelOf(t) {
|
|
3380
|
+
if (t === this.openPop) return 0;
|
|
3381
|
+
const e = this.subStack.indexOf(t);
|
|
3382
|
+
return e === -1 ? this.subStack.length : e + 1;
|
|
3363
3383
|
}
|
|
3364
3384
|
closePop() {
|
|
3365
3385
|
var t;
|
|
3366
3386
|
this.closeSub(), this.openPop && (this.openPop.remove(), this.openPop = null, (t = this.popAnchor) == null || t.classList.remove("open"), this.popAnchor = null, this.setOpTarget(null));
|
|
3367
3387
|
}
|
|
3368
3388
|
openSubFor(t, e) {
|
|
3369
|
-
|
|
3370
|
-
|
|
3371
|
-
|
|
3372
|
-
|
|
3373
|
-
|
|
3374
|
-
|
|
3375
|
-
let
|
|
3376
|
-
|
|
3377
|
-
let
|
|
3378
|
-
|
|
3389
|
+
const i = e.getBoundingClientRect(), s = e.closest(".pop");
|
|
3390
|
+
this.closeSubFrom(s ? this.subLevelOf(s) : 0);
|
|
3391
|
+
const n = document.createElement("div");
|
|
3392
|
+
n.className = "pop sub", n.dir = this.dir(), t.subBuild ? t.subBuild(n) : t.sub && this.menuItems(n, t.sub), n.addEventListener("mousedown", (c) => {
|
|
3393
|
+
c.target.tagName !== "INPUT" && c.preventDefault();
|
|
3394
|
+
}), document.body.appendChild(n);
|
|
3395
|
+
let r = this.dir() === "rtl" ? i.left - n.offsetWidth + 2 : i.right - 2;
|
|
3396
|
+
r = Math.max(8, Math.min(r + scrollX, scrollX + innerWidth - n.offsetWidth - 8));
|
|
3397
|
+
let o = i.top + scrollY - 6;
|
|
3398
|
+
o = Math.max(8 + scrollY, Math.min(o, scrollY + innerHeight - n.offsetHeight - 8)), n.style.left = r + "px", n.style.top = o + "px", this.subStack.push(n);
|
|
3379
3399
|
}
|
|
3380
3400
|
popup(t, e, i) {
|
|
3381
3401
|
if (this.openPop && this.popAnchor === t) {
|
|
@@ -3386,10 +3406,12 @@ let Hi = (j = class {
|
|
|
3386
3406
|
const s = document.createElement("div");
|
|
3387
3407
|
s.className = "pop" + (i ? " " + i : ""), s.dir = this.dir(), e(s), document.body.appendChild(s);
|
|
3388
3408
|
const n = t.getBoundingClientRect();
|
|
3389
|
-
s.style.minWidth = Math.max(160, Math.round(n.width)) + "px"
|
|
3390
|
-
let
|
|
3391
|
-
|
|
3392
|
-
|
|
3409
|
+
s.style.minWidth = Math.max(160, Math.round(n.width)) + "px";
|
|
3410
|
+
let l = n.bottom + scrollY + 2;
|
|
3411
|
+
l = Math.max(8 + scrollY, Math.min(l, scrollY + innerHeight - s.offsetHeight - 8)), s.style.top = l + "px";
|
|
3412
|
+
let o = this.dir() === "rtl" ? n.right - s.offsetWidth : n.left;
|
|
3413
|
+
o = Math.max(8, Math.min(o + scrollX, scrollX + innerWidth - s.offsetWidth - 8)), s.style.left = o + "px", s.addEventListener("mousedown", (c) => {
|
|
3414
|
+
c.target.tagName !== "INPUT" && c.preventDefault();
|
|
3393
3415
|
}), this.openPop = s, this.popAnchor = t, t.classList.add("open");
|
|
3394
3416
|
}
|
|
3395
3417
|
menuItems(t, e) {
|
|
@@ -3403,7 +3425,7 @@ let Hi = (j = class {
|
|
|
3403
3425
|
i.action && (this.closePop(), i.action());
|
|
3404
3426
|
}), n.addEventListener("mouseenter", () => {
|
|
3405
3427
|
var l;
|
|
3406
|
-
s ? this.openSubFor(i, n) : this.
|
|
3428
|
+
s ? this.openSubFor(i, n) : this.closeSubFrom(this.subLevelOf(t)), (l = i.hover) == null || l.call(i, !0);
|
|
3407
3429
|
}), n.addEventListener("mouseleave", () => {
|
|
3408
3430
|
var l;
|
|
3409
3431
|
return (l = i.hover) == null ? void 0 : l.call(i, !1);
|
|
@@ -3782,8 +3804,8 @@ let Hi = (j = class {
|
|
|
3782
3804
|
* (the quick color chips); everything else yields one. */
|
|
3783
3805
|
buildToolbarRegistry() {
|
|
3784
3806
|
const t = this.tbtn(h.tableic, this.t("quicktable"), () => this.tableGrid(t)), e = {
|
|
3785
|
-
undo: () => this.tbtn(h.undo, this.t("undo"), () => this.exec("undo")),
|
|
3786
|
-
redo: () => this.tbtn(h.redo, this.t("redo"), () => this.exec("redo")),
|
|
3807
|
+
undo: () => this.tbtn(h.undo, this.t("undo"), () => this.exec("undo"), "undo"),
|
|
3808
|
+
redo: () => this.tbtn(h.redo, this.t("redo"), () => this.exec("redo"), "redo"),
|
|
3787
3809
|
preview: () => this.tbtn(h.prevw, this.t("preview"), () => this.previewDlg()),
|
|
3788
3810
|
print: () => this.tbtn(h.printic, this.t("print"), () => this.printDoc()),
|
|
3789
3811
|
importword: () => this.tbtn(h.wordic, this.t("importword"), () => this.pickWordDoc()),
|
|
@@ -4126,10 +4148,10 @@ let Hi = (j = class {
|
|
|
4126
4148
|
this.t("tablepropsttl"),
|
|
4127
4149
|
(E) => {
|
|
4128
4150
|
const I = (H, $) => {
|
|
4129
|
-
const
|
|
4130
|
-
|
|
4151
|
+
const Z = document.createElement("div");
|
|
4152
|
+
Z.style.cssText = r;
|
|
4131
4153
|
const F = document.createElement("span");
|
|
4132
|
-
F.style.cssText = o, F.textContent = this.t(H),
|
|
4154
|
+
F.style.cssText = o, F.textContent = this.t(H), Z.append(F, $), E.appendChild(Z);
|
|
4133
4155
|
};
|
|
4134
4156
|
e = document.createElement("input"), e.type = "text", e.style.cssText = c, e.placeholder = "e.g. 600px or 100%", e.value = u, I("tblwidth", e), i = document.createElement("input"), i.type = "number", i.min = "0", i.style.cssText = c, i.value = String(m), I("tblcellpadding", i), s = document.createElement("input"), s.type = "number", s.min = "0", s.style.cssText = c, s.value = String(b), I("tblcellspacing", s), n = document.createElement("input"), n.type = "number", n.min = "0", n.style.cssText = c, n.value = String(y), I("tblborder", n), l = document.createElement("select"), l.style.cssText = c, [
|
|
4135
4157
|
["", "alignnone"],
|
|
@@ -4137,8 +4159,8 @@ let Hi = (j = class {
|
|
|
4137
4159
|
["center", "aligncenter"],
|
|
4138
4160
|
["right", "alignright"]
|
|
4139
4161
|
].forEach(([H, $]) => {
|
|
4140
|
-
const
|
|
4141
|
-
|
|
4162
|
+
const Z = document.createElement("option");
|
|
4163
|
+
Z.value = H, Z.textContent = this.t($), H === w && (Z.selected = !0), l.appendChild(Z);
|
|
4142
4164
|
}), I("tblalign", l);
|
|
4143
4165
|
},
|
|
4144
4166
|
[
|
|
@@ -4726,8 +4748,8 @@ let Hi = (j = class {
|
|
|
4726
4748
|
E.type = "file", E.accept = this.options.videoFileTypes.join(","), E.style.display = "none", w.addEventListener("click", () => {
|
|
4727
4749
|
E.value = "", E.click();
|
|
4728
4750
|
}), E.addEventListener("change", () => {
|
|
4729
|
-
var
|
|
4730
|
-
const H = (
|
|
4751
|
+
var Z;
|
|
4752
|
+
const H = (Z = E.files) == null ? void 0 : Z[0];
|
|
4731
4753
|
if (!H) return;
|
|
4732
4754
|
w.disabled = !0, w.textContent = this.t("uploading");
|
|
4733
4755
|
const $ = (F) => {
|
package/package.json
CHANGED
package/style.css
CHANGED
|
@@ -194,6 +194,14 @@
|
|
|
194
194
|
stroke-linejoin: round;
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
+
/* undo/redo swap sides under dir=rtl (normal flex reordering of the
|
|
198
|
+
toolbar), but their glyphs stay fixed - without this, both arrows end
|
|
199
|
+
up pointing at each other instead of outward from their new position */
|
|
200
|
+
[dir=rtl] .tbtn[data-id=undo] svg,
|
|
201
|
+
[dir=rtl] .tbtn[data-id=redo] svg {
|
|
202
|
+
transform: scaleX(-1);
|
|
203
|
+
}
|
|
204
|
+
|
|
197
205
|
.tbtn svg .f {
|
|
198
206
|
fill: #2f3744;
|
|
199
207
|
stroke: none;
|
|
@@ -1053,7 +1061,7 @@
|
|
|
1053
1061
|
transform: rotate(-90deg);
|
|
1054
1062
|
}
|
|
1055
1063
|
|
|
1056
|
-
[dir=rtl] .
|
|
1064
|
+
.pop[dir=rtl] .mi .subarrow svg {
|
|
1057
1065
|
transform: rotate(90deg);
|
|
1058
1066
|
}
|
|
1059
1067
|
|
|
@@ -1711,8 +1719,13 @@
|
|
|
1711
1719
|
color: #556;
|
|
1712
1720
|
}
|
|
1713
1721
|
|
|
1714
|
-
kbd
|
|
1722
|
+
/* scoped (not a bare kbd selector) and with its own explicit color -
|
|
1723
|
+
a host page's own kbd styling can otherwise out-specificity a bare
|
|
1724
|
+
tag selector and override just one of background/color, leaving
|
|
1725
|
+
light-on-light text */
|
|
1726
|
+
.dlg kbd {
|
|
1715
1727
|
background: #f3f4f6;
|
|
1728
|
+
color: #444c58;
|
|
1716
1729
|
border-radius: 4px;
|
|
1717
1730
|
padding: 2px 7px;
|
|
1718
1731
|
font: 12px Consolas, monospace;
|