UNPKG

@wordpress/components

Version:
96 lines (94 loc) 2.84 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // packages/components/src/input-control/utils.ts var utils_exports = {}; __export(utils_exports, { getDragCursor: () => getDragCursor, useDraft: () => useDraft, useDragCursor: () => useDragCursor }); module.exports = __toCommonJS(utils_exports); var import_element = require("@wordpress/element"); function getDragCursor(dragDirection) { let dragCursor = "ns-resize"; switch (dragDirection) { case "n": case "s": dragCursor = "ns-resize"; break; case "e": case "w": dragCursor = "ew-resize"; break; } return dragCursor; } function useDragCursor(isDragging, dragDirection) { const dragCursor = getDragCursor(dragDirection); (0, import_element.useEffect)(() => { if (isDragging) { document.documentElement.style.cursor = dragCursor; } else { document.documentElement.style.cursor = null; } }, [isDragging, dragCursor]); return dragCursor; } function useDraft(props) { const previousValueRef = (0, import_element.useRef)(props.value); const [draft, setDraft] = (0, import_element.useState)({}); const value = draft.value !== void 0 ? draft.value : props.value; (0, import_element.useLayoutEffect)(() => { const { current: previousValue } = previousValueRef; previousValueRef.current = props.value; if (draft.value !== void 0 && !draft.isStale) { setDraft({ ...draft, isStale: true }); } else if (draft.isStale && props.value !== previousValue) { setDraft({}); } }, [props.value, draft]); const onChange = (nextValue, extra) => { setDraft((current) => Object.assign(current, { value: nextValue, isStale: false })); props.onChange(nextValue, extra); }; const onBlur = (event) => { setDraft({}); props.onBlur?.(event); }; return { value, onBlur, onChange }; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { getDragCursor, useDraft, useDragCursor }); //# sourceMappingURL=utils.js.map