UNPKG

json-joy

Version:

Collection of libraries for building collaborative editing apps.

47 lines (46 loc) 1.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RenderAnchor = exports.fadeInAnimation = void 0; const tslib_1 = require("tslib"); // biome-ignore lint: React is used for JSX const React = tslib_1.__importStar(require("react")); const nano_theme_1 = require("nano-theme"); const constants_1 = require("./constants"); const react_1 = require("../../web/react"); const hooks_1 = require("../../web/react/hooks"); exports.fadeInAnimation = (0, nano_theme_1.keyframes)({ from: { tr: 'scale(0)', }, to: { tr: 'scale(1)', }, }); const blockClass = (0, nano_theme_1.rule)({ pos: 'relative', pe: 'none', us: 'none', w: '0px', h: '100%', va: 'center', }); const innerClass = (0, nano_theme_1.rule)({ pos: 'absolute', l: 'calc(max(-6px,-0.2em))', b: '-.15em', w: 'calc(min(12px,0.4em))', h: 'calc(min(16px,0.5em))', bdrad: '50%/20%', bg: constants_1.DefaultRendererColors.ActiveCursor, an: exports.fadeInAnimation + ' .25s ease-out', animationFillMode: 'forwards', }); const RenderAnchor = ({ children }) => { const { dom } = (0, react_1.usePeritext)(); const focus = (0, hooks_1.useSyncStoreOpt)(dom?.cursor.focus) || false; const style = focus ? undefined : { background: constants_1.DefaultRendererColors.InactiveCursor }; return (React.createElement("span", { className: blockClass, contentEditable: false }, children, React.createElement("span", { className: innerClass, style: style }))); }; exports.RenderAnchor = RenderAnchor;