{"version":3,"file":"7882.1a3cc418752c83396970.js","mappings":"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","sources":["webpack://grafana/./node_modules/@glideapps/glide-data-grid/dist/esm/internal/data-grid-overlay-editor/data-grid-overlay-editor-style.js","webpack://grafana/./node_modules/@glideapps/glide-data-grid/dist/esm/internal/data-grid-overlay-editor/use-stay-on-screen.js","webpack://grafana/./node_modules/@glideapps/glide-data-grid/dist/esm/internal/data-grid-overlay-editor/data-grid-overlay-editor.js"],"sourcesContent":["import { styled } from \"@linaria/react\";\nconst _exp2 = /*#__PURE__*/() => p => p.targetX;\nconst _exp3 = /*#__PURE__*/() => p => p.targetY;\nconst _exp4 = /*#__PURE__*/() => p => p.targetWidth;\nconst _exp5 = /*#__PURE__*/() => p => p.targetHeight;\nconst _exp6 = /*#__PURE__*/() => p => p.targetY + 10;\nconst _exp7 = /*#__PURE__*/() => p => Math.max(0, (p.targetHeight - 28) / 2);\nexport const DataGridOverlayEditorStyle = /*#__PURE__*/styled('div')({\n name: \"DataGridOverlayEditorStyle\",\n class: \"gdg-d19meir1\",\n propsAsIs: false,\n vars: {\n \"d19meir1-0\": [_exp3(), \"px\"],\n \"d19meir1-1\": [_exp2(), \"px\"],\n \"d19meir1-2\": [_exp4(), \"px\"],\n \"d19meir1-3\": [_exp5(), \"px\"],\n \"d19meir1-4\": [_exp6(), \"px\"],\n \"d19meir1-5\": [_exp7(), \"px\"]\n }\n});\n\n","import * as React from \"react\";\nfunction useRefState() {\n const [refState, setRefState] = React.useState();\n return [refState ?? undefined, setRefState];\n}\nexport function useStayOnScreen() {\n const [ref, setRef] = useRefState();\n const [xOffset, setXOffset] = React.useState(0);\n const [isIntersecting, setIsIntersecting] = React.useState(true);\n React.useLayoutEffect(() => {\n if (ref === undefined)\n return;\n if (!(\"IntersectionObserver\" in window))\n return;\n const observer = new IntersectionObserver(ents => {\n if (ents.length === 0)\n return;\n setIsIntersecting(ents[0].isIntersecting);\n }, { threshold: 1 });\n observer.observe(ref);\n return () => observer.disconnect();\n }, [ref]);\n React.useEffect(() => {\n if (isIntersecting || ref === undefined)\n return;\n let rafHandle;\n const fn = () => {\n const { right: refRight } = ref.getBoundingClientRect();\n setXOffset(cv => Math.min(cv + window.innerWidth - refRight - 10, 0));\n rafHandle = requestAnimationFrame(fn);\n };\n rafHandle = requestAnimationFrame(fn);\n return () => {\n if (rafHandle !== undefined) {\n cancelAnimationFrame(rafHandle);\n }\n };\n }, [ref, isIntersecting]);\n const style = React.useMemo(() => {\n return { transform: `translateX(${xOffset}px)` };\n }, [xOffset]);\n return {\n ref: setRef,\n style,\n };\n}\n//# sourceMappingURL=use-stay-on-screen.js.map","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport ClickOutsideContainer from \"../click-outside-container/click-outside-container.js\";\nimport { makeCSSStyle, ThemeContext } from \"../../common/styles.js\";\nimport { isEditableGridCell, isInnerOnlyCell, isObjectEditorCallbackResult, } from \"../data-grid/data-grid-types.js\";\nimport { DataGridOverlayEditorStyle } from \"./data-grid-overlay-editor-style.js\";\nimport { useStayOnScreen } from \"./use-stay-on-screen.js\";\nconst DataGridOverlayEditor = p => {\n const { target, content, onFinishEditing: onFinishEditingIn, forceEditMode, initialValue, imageEditorOverride, markdownDivCreateNode, highlight, className, theme, id, cell, bloom, validateCell, getCellRenderer, provideEditor, isOutsideClick, } = p;\n const [tempValue, setTempValueRaw] = React.useState(forceEditMode ? content : undefined);\n const lastValueRef = React.useRef(tempValue ?? content);\n lastValueRef.current = tempValue ?? content;\n const [isValid, setIsValid] = React.useState(() => {\n if (validateCell === undefined)\n return true;\n return !(isEditableGridCell(content) && validateCell?.(cell, content, lastValueRef.current) === false);\n });\n const onFinishEditing = React.useCallback((newCell, movement) => {\n onFinishEditingIn(isValid ? newCell : undefined, movement);\n }, [isValid, onFinishEditingIn]);\n const setTempValue = React.useCallback((newVal) => {\n if (validateCell !== undefined && newVal !== undefined && isEditableGridCell(newVal)) {\n const validResult = validateCell(cell, newVal, lastValueRef.current);\n if (validResult === false) {\n setIsValid(false);\n }\n else if (typeof validResult === \"object\") {\n newVal = validResult;\n setIsValid(true);\n }\n else {\n setIsValid(true);\n }\n }\n setTempValueRaw(newVal);\n }, [cell, validateCell]);\n const finished = React.useRef(false);\n const customMotion = React.useRef(undefined);\n const onClickOutside = React.useCallback(() => {\n onFinishEditing(tempValue, [0, 0]);\n finished.current = true;\n }, [tempValue, onFinishEditing]);\n const onEditorFinished = React.useCallback((newValue, movement) => {\n onFinishEditing(newValue, movement ?? customMotion.current ?? [0, 0]);\n finished.current = true;\n }, [onFinishEditing]);\n const onKeyDown = React.useCallback(async (event) => {\n let save = false;\n if (event.key === \"Escape\") {\n event.stopPropagation();\n event.preventDefault();\n customMotion.current = [0, 0];\n }\n else if (event.key === \"Enter\" && !event.shiftKey) {\n event.stopPropagation();\n event.preventDefault();\n customMotion.current = [0, 1];\n save = true;\n }\n else if (event.key === \"Tab\") {\n event.stopPropagation();\n event.preventDefault();\n customMotion.current = [event.shiftKey ? -1 : 1, 0];\n save = true;\n }\n window.setTimeout(() => {\n if (!finished.current && customMotion.current !== undefined) {\n onFinishEditing(save ? tempValue : undefined, customMotion.current);\n finished.current = true;\n }\n }, 0);\n }, [onFinishEditing, tempValue]);\n const targetValue = tempValue ?? content;\n const [editorProvider, useLabel] = React.useMemo(() => {\n if (isInnerOnlyCell(content))\n return [];\n const external = provideEditor?.(content);\n if (external !== undefined)\n return [external, false];\n return [getCellRenderer(content)?.provideEditor?.(content), false];\n }, [content, getCellRenderer, provideEditor]);\n const { ref, style: stayOnScreenStyle } = useStayOnScreen();\n let pad = true;\n let editor;\n let style = true;\n let styleOverride;\n if (editorProvider !== undefined) {\n pad = editorProvider.disablePadding !== true;\n style = editorProvider.disableStyling !== true;\n const isObjectEditor = isObjectEditorCallbackResult(editorProvider);\n if (isObjectEditor) {\n styleOverride = editorProvider.styleOverride;\n }\n const CustomEditor = isObjectEditor ? editorProvider.editor : editorProvider;\n editor = (React.createElement(CustomEditor, { isHighlighted: highlight, onChange: setTempValue, value: targetValue, initialValue: initialValue, onFinishedEditing: onEditorFinished, validatedSelection: isEditableGridCell(targetValue) ? targetValue.selectionRange : undefined, forceEditMode: forceEditMode, target: target, imageEditorOverride: imageEditorOverride, markdownDivCreateNode: markdownDivCreateNode, isValid: isValid, theme: theme }));\n }\n styleOverride = { ...styleOverride, ...stayOnScreenStyle };\n // Consider imperatively creating and adding the element to the dom?\n const portalElement = document.getElementById(\"portal\");\n if (portalElement === null) {\n // eslint-disable-next-line no-console\n console.error('Cannot open Data Grid overlay editor, because portal not found. Please add `
` as the last child of your ``.');\n return null;\n }\n let classWrap = style ? \"gdg-style\" : \"gdg-unstyle\";\n if (!isValid) {\n classWrap += \" gdg-invalid\";\n }\n if (pad) {\n classWrap += \" gdg-pad\";\n }\n const bloomX = bloom?.[0] ?? 1;\n const bloomY = bloom?.[1] ?? 1;\n return createPortal(React.createElement(ThemeContext.Provider, { value: theme },\n React.createElement(ClickOutsideContainer, { style: makeCSSStyle(theme), className: className, onClickOutside: onClickOutside, isOutsideClick: isOutsideClick },\n React.createElement(DataGridOverlayEditorStyle, { ref: ref, id: id, className: classWrap, style: styleOverride, as: useLabel === true ? \"label\" : undefined, targetX: target.x - bloomX, targetY: target.y - bloomY, targetWidth: target.width + bloomX * 2, targetHeight: target.height + bloomY * 2 },\n React.createElement(\"div\", { className: \"gdg-clip-region\", onKeyDown: onKeyDown }, editor)))), portalElement);\n};\nexport default DataGridOverlayEditor;\n//# sourceMappingURL=data-grid-overlay-editor.js.map"],"names":["_exp2","p","_exp3","_exp4","_exp5","_exp6","_exp7","DataGridOverlayEditorStyle","useRefState","refState","setRefState","useStayOnScreen","ref","setRef","xOffset","setXOffset","isIntersecting","setIsIntersecting","observer","ents","rafHandle","fn","refRight","cv","style","target","content","onFinishEditingIn","forceEditMode","initialValue","imageEditorOverride","markdownDivCreateNode","highlight","className","theme","id","cell","bloom","validateCell","getCellRenderer","provideEditor","isOutsideClick","tempValue","setTempValueRaw","lastValueRef","isValid","setIsValid","onFinishEditing","newCell","movement","setTempValue","newVal","validResult","finished","customMotion","onClickOutside","onEditorFinished","newValue","onKeyDown","event","save","targetValue","editorProvider","useLabel","external","stayOnScreenStyle","pad","editor","styleOverride","isObjectEditor","CustomEditor","portalElement","classWrap","bloomX","bloomY"],"sourceRoot":""}