UNPKG

json-joy

Version:

Collection of libraries for building collaborative editing apps.

45 lines (44 loc) 2.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RenderFocus = void 0; const tslib_1 = require("tslib"); const React = tslib_1.__importStar(require("react")); const nano_theme_1 = require("nano-theme"); const CaretToolbar_1 = require("nice-ui/lib/4-card/Toolbar/ToolbarMenu/CaretToolbar"); const context_1 = require("./context"); const hooks_1 = require("../../web/react/hooks"); const height = 1.8; const blockClass = (0, nano_theme_1.rule)({ pos: 'relative', w: '0px', h: '100%', va: 'bottom', }); const overClass = (0, nano_theme_1.rule)({ pos: 'absolute', b: `${height}em`, l: 0, isolation: 'isolate', us: 'none', transform: 'translateX(calc(-50% + 0px))', }); const RenderFocus = ({ children }) => { const { toolbar } = (0, context_1.useToolbarPlugin)(); const showInlineToolbar = toolbar.showInlineToolbar; const [showInlineToolbarValue, toolbarVisibilityChangeTime] = (0, hooks_1.useSyncStore)(showInlineToolbar); const enableAfterCoolDown = (0, hooks_1.useTimeout)(500, [toolbarVisibilityChangeTime]); const isScrubbing = (0, hooks_1.useSyncStoreOpt)(toolbar.surface.dom?.cursor.mouseDown) || false; // const focus = useSyncStoreOpt(toolbar.surface.dom?.cursor.focus) || false; // const blurTimeout = useTimeout(300, [focus]); const handleClose = React.useCallback(() => { // toolbar.surface.dom?.focus(); // // if (showInlineToolbar.value) showInlineToolbar.next(false); }, []); let toolbarElement = null; if (showInlineToolbarValue && !isScrubbing) toolbarElement = (React.createElement(CaretToolbar_1.CaretToolbar, { disabled: !enableAfterCoolDown /* || (!focus && blurTimeout) */, menu: toolbar.getSelectionMenu(), onPopupClose: handleClose })); return (React.createElement("span", { className: blockClass }, children, React.createElement("span", { className: overClass, contentEditable: false }, toolbarElement))); }; exports.RenderFocus = RenderFocus;