{
  "version": 3,
  "sources": ["../../../src/custom-gradient-picker/gradient-bar/index.tsx"],
  "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useRef, useReducer } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport ControlPoints from './control-points';\nimport { getHorizontalRelativeGradientPosition } from './utils';\nimport { MINIMUM_DISTANCE_BETWEEN_INSERTER_AND_POINT } from './constants';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst customGradientBarReducer = (state, action) => {\n  switch (action.type) {\n    case 'MOVE_INSERTER':\n      if (state.id === 'IDLE' || state.id === 'MOVING_INSERTER') {\n        return {\n          id: 'MOVING_INSERTER',\n          insertPosition: action.insertPosition\n        };\n      }\n      break;\n    case 'STOP_INSERTER_MOVE':\n      if (state.id === 'MOVING_INSERTER') {\n        return {\n          id: 'IDLE'\n        };\n      }\n      break;\n    case 'OPEN_INSERTER':\n      if (state.id === 'MOVING_INSERTER') {\n        return {\n          id: 'INSERTING_CONTROL_POINT',\n          insertPosition: state.insertPosition\n        };\n      }\n      break;\n    case 'CLOSE_INSERTER':\n      if (state.id === 'INSERTING_CONTROL_POINT') {\n        return {\n          id: 'IDLE'\n        };\n      }\n      break;\n    case 'START_CONTROL_CHANGE':\n      if (state.id === 'IDLE') {\n        return {\n          id: 'MOVING_CONTROL_POINT'\n        };\n      }\n      break;\n    case 'STOP_CONTROL_CHANGE':\n      if (state.id === 'MOVING_CONTROL_POINT') {\n        return {\n          id: 'IDLE'\n        };\n      }\n      break;\n  }\n  return state;\n};\nconst customGradientBarReducerInitialState = {\n  id: 'IDLE'\n};\nexport default function CustomGradientBar({\n  background,\n  hasGradient,\n  value: controlPoints,\n  onChange,\n  disableInserter = false,\n  disableAlpha = false,\n  __experimentalIsRenderedInSidebar = false\n}) {\n  const gradientMarkersContainerDomRef = useRef(null);\n  const [gradientBarState, gradientBarStateDispatch] = useReducer(customGradientBarReducer, customGradientBarReducerInitialState);\n  const onMouseEnterAndMove = event => {\n    if (!gradientMarkersContainerDomRef.current) {\n      return;\n    }\n    const insertPosition = getHorizontalRelativeGradientPosition(event.clientX, gradientMarkersContainerDomRef.current);\n\n    // If the insert point is close to an existing control point don't show it.\n    if (controlPoints.some(({\n      position\n    }) => {\n      return Math.abs(insertPosition - position) < MINIMUM_DISTANCE_BETWEEN_INSERTER_AND_POINT;\n    })) {\n      if (gradientBarState.id === 'MOVING_INSERTER') {\n        gradientBarStateDispatch({\n          type: 'STOP_INSERTER_MOVE'\n        });\n      }\n      return;\n    }\n    gradientBarStateDispatch({\n      type: 'MOVE_INSERTER',\n      insertPosition\n    });\n  };\n  const onMouseLeave = () => {\n    gradientBarStateDispatch({\n      type: 'STOP_INSERTER_MOVE'\n    });\n  };\n  const isMovingInserter = gradientBarState.id === 'MOVING_INSERTER';\n  const isInsertingControlPoint = gradientBarState.id === 'INSERTING_CONTROL_POINT';\n  return /*#__PURE__*/_jsxs(\"div\", {\n    className: clsx('components-custom-gradient-picker__gradient-bar', {\n      'has-gradient': hasGradient\n    }),\n    onMouseEnter: onMouseEnterAndMove,\n    onMouseMove: onMouseEnterAndMove,\n    onMouseLeave: onMouseLeave,\n    children: [/*#__PURE__*/_jsx(\"div\", {\n      className: \"components-custom-gradient-picker__gradient-bar-background\",\n      style: {\n        background,\n        opacity: hasGradient ? 1 : 0.4\n      }\n    }), /*#__PURE__*/_jsxs(\"div\", {\n      ref: gradientMarkersContainerDomRef,\n      className: \"components-custom-gradient-picker__markers-container\",\n      children: [!disableInserter && (isMovingInserter || isInsertingControlPoint) && /*#__PURE__*/_jsx(ControlPoints.InsertPoint, {\n        __experimentalIsRenderedInSidebar: __experimentalIsRenderedInSidebar,\n        disableAlpha: disableAlpha,\n        insertPosition: gradientBarState.insertPosition,\n        value: controlPoints,\n        onChange: onChange,\n        onOpenInserter: () => {\n          gradientBarStateDispatch({\n            type: 'OPEN_INSERTER'\n          });\n        },\n        onCloseInserter: () => {\n          gradientBarStateDispatch({\n            type: 'CLOSE_INSERTER'\n          });\n        }\n      }), /*#__PURE__*/_jsx(ControlPoints, {\n        __experimentalIsRenderedInSidebar: __experimentalIsRenderedInSidebar,\n        disableAlpha: disableAlpha,\n        disableRemove: disableInserter,\n        gradientPickerDomRef: gradientMarkersContainerDomRef,\n        ignoreMarkerPosition: isInsertingControlPoint ? gradientBarState.insertPosition : undefined,\n        value: controlPoints,\n        onChange: onChange,\n        onStartControlPointChange: () => {\n          gradientBarStateDispatch({\n            type: 'START_CONTROL_CHANGE'\n          });\n        },\n        onStopControlPointChange: () => {\n          gradientBarStateDispatch({\n            type: 'STOP_CONTROL_CHANGE'\n          });\n        }\n      })]\n    })]\n  });\n}"],
  "mappings": "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",
  "names": ["_jsxs", "clsx", "_jsx", "ControlPoints"]
}
