UNPKG

@atlaskit/editor-plugin-width

Version:

Width plugin for @atlaskit/editor-core

47 lines 1.62 kB
import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; import { useEffect } from 'react'; import { pluginKey } from './plugin-key'; var setEditorWidth = function setEditorWidth(props) { return function (editorView) { var dispatch = editorView.dispatch, tr = editorView.state.tr; tr.setMeta(pluginKey, props); dispatch(tr); }; }; export var useResizeWidthObserver = function useResizeWidthObserver(_ref) { var editorView = _ref.editorView, containerElement = _ref.containerElement; useEffect(function () { var newState = { lineLength: editorView.dom.clientWidth, width: containerElement === null || containerElement === void 0 ? void 0 : containerElement.offsetWidth }; setEditorWidth(newState)(editorView); }, [editorView, editorView.dom.clientWidth, containerElement]); useEffect(function () { var resizeWidth = function resizeWidth(entries) { if (entries.length !== 1) { return; } var _entries = _slicedToArray(entries, 1), fullAreaSize = _entries[0]; if (!fullAreaSize || !Array.isArray(fullAreaSize.borderBoxSize)) { return; } var width = fullAreaSize.borderBoxSize[0].inlineSize; var lineLength = editorView.dom.clientWidth; setEditorWidth({ width: width, lineLength: lineLength })(editorView); }; var resizeObserver = new ResizeObserver(resizeWidth); if (containerElement) { resizeObserver.observe(containerElement); } return function () { resizeObserver.disconnect(); }; }, [containerElement, editorView]); };