UNPKG

@tldraw/editor

Version:

tldraw infinite canvas SDK (editor).

108 lines (107 loc) 4.54 kB
const isCoveredByCurrentColor = (value, property, { currentColor }) => { return value === "currentColor" || value === currentColor; }; const isInherited = (value, property, { parentStyles }) => { return parentStyles[property] === value; }; const isExcludedBorder = (borderDirection) => (value, property, { getStyle }) => { const borderWidth = getStyle(`border-${borderDirection}-width`); const borderStyle = getStyle(`border-${borderDirection}-style`); if (borderWidth === "0px") return true; if (borderStyle === "none") return true; return false; }; const cssRules = { // currentColor properties: "border-block-end-color": isCoveredByCurrentColor, "border-block-start-color": isCoveredByCurrentColor, "border-bottom-color": isCoveredByCurrentColor, "border-inline-end-color": isCoveredByCurrentColor, "border-inline-start-color": isCoveredByCurrentColor, "border-left-color": isCoveredByCurrentColor, "border-right-color": isCoveredByCurrentColor, "border-top-color": isCoveredByCurrentColor, "caret-color": isCoveredByCurrentColor, "column-rule-color": isCoveredByCurrentColor, "outline-color": isCoveredByCurrentColor, "text-decoration": (value, property, { currentColor }) => { return value === "none solid currentColor" || value === "none solid " + currentColor; }, "text-decoration-color": isCoveredByCurrentColor, "text-emphasis-color": isCoveredByCurrentColor, // inherited properties: "border-collapse": isInherited, "border-spacing": isInherited, "caption-side": isInherited, // N.B. We shouldn't inherit 'color' because there's some UA styling, e.g. `mark` elements // 'color': isInherited, cursor: isInherited, direction: isInherited, "empty-cells": isInherited, "font-family": isInherited, "font-size": isInherited, "font-style": isInherited, "font-variant": isInherited, "font-weight": isInherited, "font-size-adjust": isInherited, "font-stretch": isInherited, font: isInherited, "letter-spacing": isInherited, "line-height": isInherited, "list-style-image": isInherited, "list-style-position": isInherited, "list-style-type": isInherited, "list-style": isInherited, orphans: isInherited, "overflow-wrap": isInherited, quotes: isInherited, "stroke-linecap": isInherited, "stroke-linejoin": isInherited, "tab-size": isInherited, "text-align": isInherited, "text-align-last": isInherited, "text-indent": isInherited, "text-justify": isInherited, "text-shadow": isInherited, "text-transform": isInherited, visibility: isInherited, "white-space": isInherited, "white-space-collapse": isInherited, widows: isInherited, "word-break": isInherited, "word-spacing": isInherited, "word-wrap": isInherited, // special border cases - we have a weird case (tailwind seems to trigger this) where all // border-styles sometimes get set to 'solid', but the border-width is 0 so they don't render. // but in SVGs, **sometimes**, the border-width defaults (i think from a UA style-sheet? but // honestly can't tell) to 1.5px so the border displays. we work around this by only including // border styles at all if both the border-width and border-style are set to something that // would show a border. "border-top": isExcludedBorder("top"), "border-right": isExcludedBorder("right"), "border-bottom": isExcludedBorder("bottom"), "border-left": isExcludedBorder("left"), "border-block-end": isExcludedBorder("block-end"), "border-block-start": isExcludedBorder("block-start"), "border-inline-end": isExcludedBorder("inline-end"), "border-inline-start": isExcludedBorder("inline-start"), "border-top-style": isExcludedBorder("top"), "border-right-style": isExcludedBorder("right"), "border-bottom-style": isExcludedBorder("bottom"), "border-left-style": isExcludedBorder("left"), "border-block-end-style": isExcludedBorder("block-end"), "border-block-start-style": isExcludedBorder("block-start"), "border-inline-end-style": isExcludedBorder("inline-end"), "border-inline-start-style": isExcludedBorder("inline-start"), "border-top-width": isExcludedBorder("top"), "border-right-width": isExcludedBorder("right"), "border-bottom-width": isExcludedBorder("bottom"), "border-left-width": isExcludedBorder("left"), "border-block-end-width": isExcludedBorder("block-end"), "border-block-start-width": isExcludedBorder("block-start"), "border-inline-end-width": isExcludedBorder("inline-end") }; export { cssRules }; //# sourceMappingURL=cssRules.mjs.map