@vritti/quantum-ui 0.3.13 → 0.3.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/ActivePoints.js.map +1 -1
  2. package/dist/ActiveShapeUtils.js.map +1 -1
  3. package/dist/AreaChart.js.map +1 -1
  4. package/dist/BarChart.js.map +1 -1
  5. package/dist/CartesianChart.js.map +1 -1
  6. package/dist/Chart.js +53 -55
  7. package/dist/Chart.js.map +1 -1
  8. package/dist/CopyField.js +71 -0
  9. package/dist/CopyField.js.map +1 -0
  10. package/dist/ErrorBarContext.js.map +1 -1
  11. package/dist/IconSelect.js +2 -1
  12. package/dist/IconSelect.js.map +1 -1
  13. package/dist/LineChart.js.map +1 -1
  14. package/dist/OrgContext.js +37 -0
  15. package/dist/OrgContext.js.map +1 -0
  16. package/dist/PermissionGate.js +62 -22
  17. package/dist/PermissionGate.js.map +1 -1
  18. package/dist/PieChart.js.map +1 -1
  19. package/dist/PolarChart.js.map +1 -1
  20. package/dist/RadarChart.js.map +1 -1
  21. package/dist/RadialChart.js.map +1 -1
  22. package/dist/assets/quantum-ui.css +19 -0
  23. package/dist/components/CopyField.js +2 -0
  24. package/dist/components/CopyField.js.map +1 -0
  25. package/dist/components/PermissionGate.js +1 -1
  26. package/dist/context/index.js +1 -1
  27. package/dist/copy.js +18 -0
  28. package/dist/copy.js.map +1 -0
  29. package/dist/getClassNameFromUnknown.js.map +1 -1
  30. package/dist/getRadiusAndStrokeWidthFromDot.js.map +1 -1
  31. package/dist/getZIndexFromUnknown.js.map +1 -1
  32. package/dist/graphicalItemSelectors.js.map +1 -1
  33. package/dist/index.js +3 -2
  34. package/dist/index.js.map +1 -1
  35. package/dist/index38.js +2 -1
  36. package/dist/index38.js.map +1 -1
  37. package/dist/lib/components/CopyField/CopyField.d.ts +10 -0
  38. package/dist/lib/components/CopyField/CopyField.d.ts.map +1 -0
  39. package/dist/lib/components/CopyField/index.d.ts +2 -0
  40. package/dist/lib/components/CopyField/index.d.ts.map +1 -0
  41. package/dist/lib/components/PermissionGate/PermissionGate.d.ts +4 -2
  42. package/dist/lib/components/PermissionGate/PermissionGate.d.ts.map +1 -1
  43. package/dist/lib/components/PermissionGate/index.d.ts +1 -0
  44. package/dist/lib/components/PermissionGate/index.d.ts.map +1 -1
  45. package/dist/lib/components/index.d.ts +1 -0
  46. package/dist/lib/components/index.d.ts.map +1 -1
  47. package/dist/lib/context/OrgContext.d.ts +17 -0
  48. package/dist/lib/context/OrgContext.d.ts.map +1 -0
  49. package/dist/lib/context/index.d.ts +1 -0
  50. package/dist/lib/context/index.d.ts.map +1 -1
  51. package/dist/lib/types/catalog-resolver.d.ts +8 -1
  52. package/dist/lib/types/catalog-resolver.d.ts.map +1 -1
  53. package/dist/lib/utils/services.d.ts +4 -0
  54. package/dist/lib/utils/services.d.ts.map +1 -0
  55. package/dist/polarScaleSelectors.js.map +1 -1
  56. package/dist/tooltipContext.js.map +1 -1
  57. package/dist/types/catalog-resolver.js +2 -1
  58. package/dist/types/catalog-resolver.js.map +1 -1
  59. package/dist/youtube.js +15 -29
  60. package/dist/youtube.js.map +1 -1
  61. package/package.json +5 -1
  62. package/dist/LayoutModeContext.js +0 -19
  63. package/dist/LayoutModeContext.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"LineChart.js","sources":["../node_modules/.pnpm/recharts@3.8.0_@types+react@19.2.14_react-dom@19.2.3_react@19.2.3__react-is@17.0.2_react@19.2.3_redux@5.0.1/node_modules/recharts/es6/state/selectors/lineSelectors.js","../node_modules/.pnpm/recharts@3.8.0_@types+react@19.2.14_react-dom@19.2.3_react@19.2.3__react-is@17.0.2_react@19.2.3_redux@5.0.1/node_modules/recharts/es6/cartesian/Line.js","../node_modules/.pnpm/recharts@3.8.0_@types+react@19.2.14_react-dom@19.2.3_react@19.2.3__react-is@17.0.2_react@19.2.3_redux@5.0.1/node_modules/recharts/es6/chart/LineChart.js","../lib/components/LineChart/LineChart.tsx"],"sourcesContent":["import { createSelector } from 'reselect';\nimport { computeLinePoints } from '../../cartesian/Line';\nimport { selectChartDataWithIndexesIfNotInPanoramaPosition4 } from './dataSelectors';\nimport { selectChartLayout } from '../../context/chartLayoutContext';\nimport { selectAxisWithScale, selectTicksOfGraphicalItem, selectUnfilteredCartesianItems } from './axisSelectors';\nimport { getBandSizeOfAxis, isCategoricalAxis } from '../../util/ChartUtils';\nvar selectXAxisWithScale = (state, xAxisId, _yAxisId, isPanorama) => selectAxisWithScale(state, 'xAxis', xAxisId, isPanorama);\nvar selectXAxisTicks = (state, xAxisId, _yAxisId, isPanorama) => selectTicksOfGraphicalItem(state, 'xAxis', xAxisId, isPanorama);\nvar selectYAxisWithScale = (state, _xAxisId, yAxisId, isPanorama) => selectAxisWithScale(state, 'yAxis', yAxisId, isPanorama);\nvar selectYAxisTicks = (state, _xAxisId, yAxisId, isPanorama) => selectTicksOfGraphicalItem(state, 'yAxis', yAxisId, isPanorama);\nvar selectBandSize = createSelector([selectChartLayout, selectXAxisWithScale, selectYAxisWithScale, selectXAxisTicks, selectYAxisTicks], (layout, xAxis, yAxis, xAxisTicks, yAxisTicks) => {\n if (isCategoricalAxis(layout, 'xAxis')) {\n return getBandSizeOfAxis(xAxis, xAxisTicks, false);\n }\n return getBandSizeOfAxis(yAxis, yAxisTicks, false);\n});\nvar pickLineId = (_state, _xAxisId, _yAxisId, _isPanorama, id) => id;\nfunction isLineSettings(item) {\n return item.type === 'line';\n}\n\n/*\n * There is a race condition problem because we read some data from props and some from the state.\n * The state is updated through a dispatch and is one render behind,\n * and so we have this weird one tick render where the displayedData in one selector have the old dataKey\n * but the new dataKey in another selector.\n *\n * So here instead of reading the dataKey from the props, we always read it from the state.\n */\nvar selectSynchronisedLineSettings = createSelector([selectUnfilteredCartesianItems, pickLineId], (graphicalItems, id) => graphicalItems.filter(isLineSettings).find(x => x.id === id));\nexport var selectLinePoints = createSelector([selectChartLayout, selectXAxisWithScale, selectYAxisWithScale, selectXAxisTicks, selectYAxisTicks, selectSynchronisedLineSettings, selectBandSize, selectChartDataWithIndexesIfNotInPanoramaPosition4], (layout, xAxis, yAxis, xAxisTicks, yAxisTicks, lineSettings, bandSize, _ref) => {\n var {\n chartData,\n dataStartIndex,\n dataEndIndex\n } = _ref;\n if (lineSettings == null || xAxis == null || yAxis == null || xAxisTicks == null || yAxisTicks == null || xAxisTicks.length === 0 || yAxisTicks.length === 0 || bandSize == null || layout !== 'horizontal' && layout !== 'vertical') {\n return undefined;\n }\n var {\n dataKey,\n data\n } = lineSettings;\n var displayedData;\n if (data != null && data.length > 0) {\n displayedData = data;\n } else {\n displayedData = chartData === null || chartData === void 0 ? void 0 : chartData.slice(dataStartIndex, dataEndIndex + 1);\n }\n if (displayedData == null) {\n return undefined;\n }\n return computeLinePoints({\n layout,\n xAxis,\n yAxis,\n xAxisTicks,\n yAxisTicks,\n dataKey,\n bandSize,\n displayedData\n });\n});","var _excluded = [\"id\"],\n _excluded2 = [\"type\", \"layout\", \"connectNulls\", \"needClip\", \"shape\"],\n _excluded3 = [\"activeDot\", \"animateNewValues\", \"animationBegin\", \"animationDuration\", \"animationEasing\", \"connectNulls\", \"dot\", \"hide\", \"isAnimationActive\", \"label\", \"legendType\", \"xAxisId\", \"yAxisId\", \"id\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from 'react';\nimport { Component, useCallback, useMemo, useRef, useState } from 'react';\nimport { clsx } from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { CartesianLabelListContextProvider, LabelListFromLabelProp } from '../component/LabelList';\nimport { Dots } from '../component/Dots';\nimport { interpolate, isNullish, noop } from '../util/DataUtils';\nimport { isClipDot } from '../util/ReactUtils';\nimport { getCateCoordinateOfLine, getTooltipNameProp, getValueByDataKey } from '../util/ChartUtils';\nimport { ActivePoints } from '../component/ActivePoints';\nimport { SetTooltipEntrySettings } from '../state/SetTooltipEntrySettings';\nimport { SetErrorBarContext } from '../context/ErrorBarContext';\nimport { GraphicalItemClipPath, useNeedsClip } from './GraphicalItemClipPath';\nimport { useChartLayout } from '../context/chartLayoutContext';\nimport { useIsPanorama } from '../context/PanoramaContext';\nimport { selectLinePoints } from '../state/selectors/lineSelectors';\nimport { useAppSelector } from '../state/hooks';\nimport { SetLegendPayload } from '../state/SetLegendPayload';\nimport { useAnimationId } from '../util/useAnimationId';\nimport { resolveDefaultProps } from '../util/resolveDefaultProps';\nimport { usePlotArea } from '../hooks';\nimport { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId';\nimport { SetCartesianGraphicalItem } from '../state/SetGraphicalItem';\nimport { svgPropertiesNoEvents } from '../util/svgPropertiesNoEvents';\nimport { JavascriptAnimate } from '../animation/JavascriptAnimate';\nimport { svgPropertiesAndEvents } from '../util/svgPropertiesAndEvents';\nimport { getRadiusAndStrokeWidthFromDot } from '../util/getRadiusAndStrokeWidthFromDot';\nimport { Shape } from '../util/ActiveShapeUtils';\nimport { ZIndexLayer } from '../zIndex/ZIndexLayer';\nimport { DefaultZIndexes } from '../zIndex/DefaultZIndexes';\nimport { propsAreEqual } from '../util/propsAreEqual';\n\n/**\n * Internal props, combination of external props + defaultProps + private Recharts state\n */\n\n/**\n * External props, intended for end users to fill in\n */\n\n/**\n * Because of naming conflict, we are forced to ignore certain (valid) SVG attributes.\n */\n\nvar computeLegendPayloadFromAreaData = props => {\n var {\n dataKey,\n name,\n stroke,\n legendType,\n hide\n } = props;\n return [{\n inactive: hide,\n dataKey,\n type: legendType,\n color: stroke,\n value: getTooltipNameProp(name, dataKey),\n payload: props\n }];\n};\nvar SetLineTooltipEntrySettings = /*#__PURE__*/React.memo(_ref => {\n var {\n dataKey,\n data,\n stroke,\n strokeWidth,\n fill,\n name,\n hide,\n unit,\n tooltipType,\n id\n } = _ref;\n var tooltipEntrySettings = {\n dataDefinedOnItem: data,\n getPosition: noop,\n settings: {\n stroke,\n strokeWidth,\n fill,\n dataKey,\n nameKey: undefined,\n name: getTooltipNameProp(name, dataKey),\n hide,\n type: tooltipType,\n color: stroke,\n unit,\n graphicalItemId: id\n }\n };\n return /*#__PURE__*/React.createElement(SetTooltipEntrySettings, {\n tooltipEntrySettings: tooltipEntrySettings\n });\n});\n\n/**\n * Generates a simple stroke-dasharray string for animating a line draw effect.\n *\n * Uses `totalLength` as the gap (instead of `totalLength - length`) to prevent a floating-point\n * precision artifact: when fractional dash and gap values are serialized to a string attribute\n * and re-parsed by the SVG renderer, their sum can differ from the actual path length by a ULP,\n * causing the dasharray pattern to repeat and render a phantom dot at the path endpoint\n * with round or square strokeLinecap.\n *\n * @param totalLength The total length of the SVG path\n * @param length The currently visible portion of the path\n * @returns A stroke-dasharray string like \"50px 200px\"\n */\nvar generateSimpleStrokeDasharray = (totalLength, length) => {\n return \"\".concat(length, \"px \").concat(totalLength, \"px\");\n};\n\n/**\n * Repeats a dash pattern array a given number of times.\n *\n * If the input array has an odd length, a trailing `0` is appended to make it even\n * before repeating, because SVG stroke-dasharray patterns must have an even number\n * of values to cycle correctly between dash and gap segments.\n *\n * @param lines Array of dash/gap lengths to repeat\n * @param count Number of times to repeat the pattern\n * @returns A new array with the pattern repeated `count` times\n */\nfunction repeat(lines, count) {\n var linesUnit = lines.length % 2 !== 0 ? [...lines, 0] : lines;\n var result = [];\n for (var i = 0; i < count; ++i) {\n result.push(...linesUnit);\n }\n return result;\n}\n\n/**\n * Computes a stroke-dasharray string for animating a custom-dashed line draw effect.\n *\n * Given a user-specified dash pattern (e.g. `\"7,3\"`), this function builds a dasharray\n * that reveals exactly `length` pixels of that pattern, followed by a gap of `totalLength`\n * to hide the remainder of the path.\n *\n * Like {@link generateSimpleStrokeDasharray}, the trailing gap uses `totalLength` rather than\n * `totalLength - length` to avoid floating-point precision artifacts with round/square strokeLinecap.\n *\n * @param length The currently visible portion of the path\n * @param totalLength The total length of the SVG path\n * @param lines The user-specified dash pattern as an array of numbers (e.g. [7, 3])\n * @returns A stroke-dasharray string incorporating the custom dash pattern\n */\nvar getStrokeDasharray = (length, totalLength, lines) => {\n var lineLength = lines.reduce((pre, next) => pre + next, 0);\n\n // if lineLength is 0 return the default when no strokeDasharray is provided\n if (!lineLength) {\n return generateSimpleStrokeDasharray(totalLength, length);\n }\n var count = Math.floor(length / lineLength);\n var remainLength = length % lineLength;\n var remainLines = [];\n for (var i = 0, sum = 0; i < lines.length; sum += (_lines$i = lines[i]) !== null && _lines$i !== void 0 ? _lines$i : 0, ++i) {\n var _lines$i;\n var lineValue = lines[i];\n if (lineValue != null && sum + lineValue > remainLength) {\n remainLines = [...lines.slice(0, i), remainLength - sum];\n break;\n }\n }\n var emptyLines = remainLines.length % 2 === 0 ? [0, totalLength] : [totalLength];\n return [...repeat(lines, count), ...remainLines, ...emptyLines].map(line => \"\".concat(line, \"px\")).join(', ');\n};\nfunction LineDotsWrapper(_ref2) {\n var {\n clipPathId,\n points,\n props\n } = _ref2;\n var {\n dot,\n dataKey,\n needClip\n } = props;\n\n /*\n * Exclude ID from the props passed to the Dots component\n * because then the ID would be applied to multiple dots, and it would no longer be unique.\n */\n var {\n id\n } = props,\n propsWithoutId = _objectWithoutProperties(props, _excluded);\n var lineProps = svgPropertiesNoEvents(propsWithoutId);\n return /*#__PURE__*/React.createElement(Dots, {\n points: points,\n dot: dot,\n className: \"recharts-line-dots\",\n dotClassName: \"recharts-line-dot\",\n dataKey: dataKey,\n baseProps: lineProps,\n needClip: needClip,\n clipPathId: clipPathId\n });\n}\nfunction LineLabelListProvider(_ref3) {\n var {\n showLabels,\n children,\n points\n } = _ref3;\n var labelListEntries = useMemo(() => {\n return points === null || points === void 0 ? void 0 : points.map(point => {\n var _point$x, _point$y;\n var viewBox = {\n x: (_point$x = point.x) !== null && _point$x !== void 0 ? _point$x : 0,\n y: (_point$y = point.y) !== null && _point$y !== void 0 ? _point$y : 0,\n width: 0,\n lowerWidth: 0,\n upperWidth: 0,\n height: 0\n };\n return _objectSpread(_objectSpread({}, viewBox), {}, {\n value: point.value,\n payload: point.payload,\n viewBox,\n /*\n * Line is not passing parentViewBox to the LabelList so the labels can escape - looks like a bug, should we pass parentViewBox?\n * Or should this just be the root chart viewBox?\n */\n parentViewBox: undefined,\n fill: undefined\n });\n });\n }, [points]);\n return /*#__PURE__*/React.createElement(CartesianLabelListContextProvider, {\n value: showLabels ? labelListEntries : undefined\n }, children);\n}\nfunction StaticCurve(_ref4) {\n var {\n clipPathId,\n pathRef,\n points,\n strokeDasharray,\n props\n } = _ref4;\n var {\n type,\n layout,\n connectNulls,\n needClip,\n shape\n } = props,\n others = _objectWithoutProperties(props, _excluded2);\n var curveProps = _objectSpread(_objectSpread({}, svgPropertiesAndEvents(others)), {}, {\n fill: 'none',\n className: 'recharts-line-curve',\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : undefined,\n points,\n type,\n layout,\n connectNulls,\n strokeDasharray: strokeDasharray !== null && strokeDasharray !== void 0 ? strokeDasharray : props.strokeDasharray\n });\n return /*#__PURE__*/React.createElement(React.Fragment, null, (points === null || points === void 0 ? void 0 : points.length) > 1 && /*#__PURE__*/React.createElement(Shape, _extends({\n shapeType: \"curve\",\n option: shape\n }, curveProps, {\n pathRef: pathRef\n })), /*#__PURE__*/React.createElement(LineDotsWrapper, {\n points: points,\n clipPathId: clipPathId,\n props: props\n }));\n}\nfunction getTotalLength(mainCurve) {\n try {\n return mainCurve && mainCurve.getTotalLength && mainCurve.getTotalLength() || 0;\n } catch (_unused) {\n return 0;\n }\n}\nfunction CurveWithAnimation(_ref5) {\n var {\n clipPathId,\n props,\n pathRef,\n previousPointsRef,\n longestAnimatedLengthRef\n } = _ref5;\n var {\n points,\n strokeDasharray,\n isAnimationActive,\n animationBegin,\n animationDuration,\n animationEasing,\n animateNewValues,\n width,\n height,\n onAnimationEnd,\n onAnimationStart\n } = props;\n var prevPoints = previousPointsRef.current;\n var animationId = useAnimationId(points, 'recharts-line-');\n var animationIdRef = useRef(animationId);\n var [isAnimating, setIsAnimating] = useState(false);\n var showLabels = !isAnimating;\n var handleAnimationEnd = useCallback(() => {\n if (typeof onAnimationEnd === 'function') {\n onAnimationEnd();\n }\n setIsAnimating(false);\n }, [onAnimationEnd]);\n var handleAnimationStart = useCallback(() => {\n if (typeof onAnimationStart === 'function') {\n onAnimationStart();\n }\n setIsAnimating(true);\n }, [onAnimationStart]);\n var totalLength = getTotalLength(pathRef.current);\n /*\n * Here we want to detect if the length animation has been interrupted.\n * For that we keep a reference to the furthest length that has been animated.\n *\n * And then, to keep things smooth, we add to it the current length that is being animated right now.\n *\n * If we did Math.max then it makes the length animation \"pause\" but we want to keep it smooth\n * so in case we have some \"leftover\" length from the previous animation we add it to the current length.\n *\n * This is not perfect because the animation changes speed due to easing. The default easing is 'ease' which is not linear\n * and makes it stand out. But it's good enough I suppose.\n * If we want to fix it then we need to keep track of multiple animations and their easing and timings.\n *\n * If you want to see this in action, try to change the dataKey of the line chart while the initial animation is running.\n * The Line begins with zero length and slowly grows to the full length. While this growth is in progress,\n * change the dataKey and the Line will continue growing from where it has grown so far.\n *\n * This is for the case when new animation triggers. When that happens we get new points, everything re-renders,\n * and we get fresh new state in this component and use the ref stored above.\n *\n * In case when we get render without new animation - for example when opacity changes, or color changes,\n * then the animationId remains the same, and we do not update the starting point.\n * See https://github.com/recharts/recharts/issues/6044\n */\n var startingPointRef = useRef(0);\n if (animationIdRef.current !== animationId) {\n startingPointRef.current = longestAnimatedLengthRef.current;\n animationIdRef.current = animationId;\n }\n var startingPoint = startingPointRef.current;\n return /*#__PURE__*/React.createElement(LineLabelListProvider, {\n points: points,\n showLabels: showLabels\n }, props.children, /*#__PURE__*/React.createElement(JavascriptAnimate, {\n animationId: animationId,\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n onAnimationEnd: handleAnimationEnd,\n onAnimationStart: handleAnimationStart,\n key: animationId\n }, t => {\n var lengthInterpolated = interpolate(startingPoint, totalLength + startingPoint, t);\n var curLength = Math.min(lengthInterpolated, totalLength);\n var currentStrokeDasharray;\n if (isAnimationActive) {\n if (strokeDasharray) {\n var lines = \"\".concat(strokeDasharray).split(/[,\\s]+/gim).map(num => parseFloat(num));\n currentStrokeDasharray = getStrokeDasharray(curLength, totalLength, lines);\n } else {\n currentStrokeDasharray = generateSimpleStrokeDasharray(totalLength, curLength);\n }\n } else {\n currentStrokeDasharray = strokeDasharray == null ? undefined : String(strokeDasharray);\n }\n\n /*\n * Here it is important to wait a little bit with updating the previousPointsRef\n * before the animation has a time to initialize.\n * If we set the previous pointsRef immediately, we set it before the Legend height it calculated\n * and before pathRef is set.\n * If that happens, the Line will re-render again after Legend had reported its height\n * which will start a new animation with the previous points as the starting point\n * which gives the effect of the Line animating slightly upwards (where the animation distance equals the Legend height).\n * Waiting for t > 0 is indirect but good enough to ensure that the Legend height is calculated and animation works properly.\n *\n * Total length similarly is calculated from the pathRef. We should not update the previousPointsRef\n * before the pathRef is set, otherwise we will have a wrong total length.\n */\n if (t > 0 && totalLength > 0) {\n // eslint-disable-next-line no-param-reassign\n previousPointsRef.current = points;\n /*\n * totalLength is set from a ref and is not updated in the first tick of the animation.\n * It defaults to zero which is exactly what we want here because we want to grow from zero,\n * however the same happens when the data change.\n *\n * In that case we want to remember the previous length and continue from there, and only animate the shape.\n *\n * Therefore the totalLength > 0 check.\n *\n * The Animate is about to fire handleAnimationStart which will update the state\n * and cause a re-render and read a new proper totalLength which will be used in the next tick\n * and update the longestAnimatedLengthRef.\n *\n * Why Math.max? Sometimes the curve goes through a smaller length than previously recorded.\n * If we just set it to curLength, then the next animation would start from a smaller length\n * which looks weird. So we keep the longest length ever reached and then animate from there.\n */\n // eslint-disable-next-line no-param-reassign\n longestAnimatedLengthRef.current = Math.max(longestAnimatedLengthRef.current, curLength);\n }\n if (prevPoints) {\n var prevPointsDiffFactor = prevPoints.length / points.length;\n var stepData = t === 1 ? points : points.map((entry, index) => {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n if (prevPoints[prevPointIndex]) {\n var prev = prevPoints[prevPointIndex];\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolate(prev.x, entry.x, t),\n y: interpolate(prev.y, entry.y, t)\n });\n }\n\n // magic number of faking previous x and y location\n if (animateNewValues) {\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolate(width * 2, entry.x, t),\n y: interpolate(height / 2, entry.y, t)\n });\n }\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: entry.x,\n y: entry.y\n });\n });\n // eslint-disable-next-line no-param-reassign\n previousPointsRef.current = stepData;\n return /*#__PURE__*/React.createElement(StaticCurve, {\n props: props,\n points: stepData,\n clipPathId: clipPathId,\n pathRef: pathRef,\n strokeDasharray: currentStrokeDasharray\n });\n }\n return /*#__PURE__*/React.createElement(StaticCurve, {\n props: props,\n points: points,\n clipPathId: clipPathId,\n pathRef: pathRef,\n strokeDasharray: currentStrokeDasharray\n });\n }), /*#__PURE__*/React.createElement(LabelListFromLabelProp, {\n label: props.label\n }));\n}\nfunction RenderCurve(_ref6) {\n var {\n clipPathId,\n props\n } = _ref6;\n var previousPointsRef = useRef(null);\n var longestAnimatedLengthRef = useRef(0);\n var pathRef = useRef(null);\n return /*#__PURE__*/React.createElement(CurveWithAnimation, {\n props: props,\n clipPathId: clipPathId,\n previousPointsRef: previousPointsRef,\n longestAnimatedLengthRef: longestAnimatedLengthRef,\n pathRef: pathRef\n });\n}\nvar errorBarDataPointFormatter = (dataPoint, dataKey) => {\n var _dataPoint$x, _dataPoint$y;\n return {\n x: (_dataPoint$x = dataPoint.x) !== null && _dataPoint$x !== void 0 ? _dataPoint$x : undefined,\n y: (_dataPoint$y = dataPoint.y) !== null && _dataPoint$y !== void 0 ? _dataPoint$y : undefined,\n value: dataPoint.value,\n // getValueByDataKey does not validate the output type\n errorVal: getValueByDataKey(dataPoint.payload, dataKey)\n };\n};\n\n// eslint-disable-next-line react/prefer-stateless-function\nclass LineWithState extends Component {\n render() {\n var {\n hide,\n dot,\n points,\n className,\n xAxisId,\n yAxisId,\n top,\n left,\n width,\n height,\n id,\n needClip,\n zIndex\n } = this.props;\n if (hide) {\n return null;\n }\n var layerClass = clsx('recharts-line', className);\n var clipPathId = id;\n var {\n r,\n strokeWidth\n } = getRadiusAndStrokeWidthFromDot(dot);\n var clipDot = isClipDot(dot);\n var dotSize = r * 2 + strokeWidth;\n var activePointsClipPath = needClip ? \"url(#clipPath-\".concat(clipDot ? '' : 'dots-').concat(clipPathId, \")\") : undefined;\n return /*#__PURE__*/React.createElement(ZIndexLayer, {\n zIndex: zIndex\n }, /*#__PURE__*/React.createElement(Layer, {\n className: layerClass\n }, needClip && /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(GraphicalItemClipPath, {\n clipPathId: clipPathId,\n xAxisId: xAxisId,\n yAxisId: yAxisId\n }), !clipDot && /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-dots-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: left - dotSize / 2,\n y: top - dotSize / 2,\n width: width + dotSize,\n height: height + dotSize\n }))), /*#__PURE__*/React.createElement(SetErrorBarContext, {\n xAxisId: xAxisId,\n yAxisId: yAxisId,\n data: points,\n dataPointFormatter: errorBarDataPointFormatter,\n errorBarOffset: 0\n }, /*#__PURE__*/React.createElement(RenderCurve, {\n props: this.props,\n clipPathId: clipPathId\n }))), /*#__PURE__*/React.createElement(ActivePoints, {\n activeDot: this.props.activeDot,\n points: points,\n mainColor: this.props.stroke,\n itemDataKey: this.props.dataKey,\n clipPath: activePointsClipPath\n }));\n }\n}\nexport var defaultLineProps = {\n activeDot: true,\n animateNewValues: true,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease',\n connectNulls: false,\n dot: true,\n fill: '#fff',\n hide: false,\n isAnimationActive: 'auto',\n label: false,\n legendType: 'line',\n stroke: '#3182bd',\n strokeWidth: 1,\n xAxisId: 0,\n yAxisId: 0,\n zIndex: DefaultZIndexes.line,\n type: 'linear'\n};\nfunction LineImpl(props) {\n var _resolveDefaultProps = resolveDefaultProps(props, defaultLineProps),\n {\n activeDot,\n animateNewValues,\n animationBegin,\n animationDuration,\n animationEasing,\n connectNulls,\n dot,\n hide,\n isAnimationActive,\n label,\n legendType,\n xAxisId,\n yAxisId,\n id\n } = _resolveDefaultProps,\n everythingElse = _objectWithoutProperties(_resolveDefaultProps, _excluded3);\n var {\n needClip\n } = useNeedsClip(xAxisId, yAxisId);\n var plotArea = usePlotArea();\n var layout = useChartLayout();\n var isPanorama = useIsPanorama();\n var points = useAppSelector(state => selectLinePoints(state, xAxisId, yAxisId, isPanorama, id));\n if (layout !== 'horizontal' && layout !== 'vertical' || points == null || plotArea == null) {\n // Cannot render Line in an unsupported layout\n return null;\n }\n var {\n height,\n width,\n x: left,\n y: top\n } = plotArea;\n return /*#__PURE__*/React.createElement(LineWithState, _extends({}, everythingElse, {\n id: id,\n connectNulls: connectNulls,\n dot: dot,\n activeDot: activeDot,\n animateNewValues: animateNewValues,\n animationBegin: animationBegin,\n animationDuration: animationDuration,\n animationEasing: animationEasing,\n isAnimationActive: isAnimationActive,\n hide: hide,\n label: label,\n legendType: legendType,\n xAxisId: xAxisId,\n yAxisId: yAxisId,\n points: points,\n layout: layout,\n height: height,\n width: width,\n left: left,\n top: top,\n needClip: needClip\n }));\n}\nexport function computeLinePoints(_ref7) {\n var {\n layout,\n xAxis,\n yAxis,\n xAxisTicks,\n yAxisTicks,\n dataKey,\n bandSize,\n displayedData\n } = _ref7;\n return displayedData.map((entry, index) => {\n // getValueByDataKey does not validate the output type\n var value = getValueByDataKey(entry, dataKey);\n if (layout === 'horizontal') {\n var _x = getCateCoordinateOfLine({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize,\n entry,\n index\n });\n var _y = isNullish(value) ? null : yAxis.scale.map(value);\n return {\n x: _x,\n y: _y !== null && _y !== void 0 ? _y : null,\n value,\n payload: entry\n };\n }\n var x = isNullish(value) ? null : xAxis.scale.map(value);\n var y = getCateCoordinateOfLine({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize,\n entry,\n index\n });\n if (x == null || y == null) {\n return null;\n }\n return {\n x,\n y,\n value,\n payload: entry\n };\n }).filter(Boolean);\n}\nfunction LineFn(outsideProps) {\n var props = resolveDefaultProps(outsideProps, defaultLineProps);\n var isPanorama = useIsPanorama();\n return /*#__PURE__*/React.createElement(RegisterGraphicalItemId, {\n id: props.id,\n type: \"line\"\n }, id => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SetLegendPayload, {\n legendPayload: computeLegendPayloadFromAreaData(props)\n }), /*#__PURE__*/React.createElement(SetLineTooltipEntrySettings, {\n dataKey: props.dataKey,\n data: props.data,\n stroke: props.stroke,\n strokeWidth: props.strokeWidth,\n fill: props.fill,\n name: props.name,\n hide: props.hide,\n unit: props.unit,\n tooltipType: props.tooltipType,\n id: id\n }), /*#__PURE__*/React.createElement(SetCartesianGraphicalItem, {\n type: \"line\",\n id: id,\n data: props.data,\n xAxisId: props.xAxisId,\n yAxisId: props.yAxisId,\n zAxisId: 0,\n dataKey: props.dataKey,\n hide: props.hide,\n isPanorama: isPanorama\n }), /*#__PURE__*/React.createElement(LineImpl, _extends({}, props, {\n id: id\n }))));\n}\n\n/**\n * @provides LabelListContext\n * @provides ErrorBarContext\n * @consumes CartesianChartContext\n */\nexport var Line = /*#__PURE__*/React.memo(LineFn, propsAreEqual);\n// @ts-expect-error we need to set the displayName for debugging purposes\nLine.displayName = 'Line';","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport { arrayTooltipSearcher } from '../state/optionsSlice';\nimport { CartesianChart } from './CartesianChart';\nvar allowedTooltipTypes = ['axis'];\n\n/**\n * @consumes ResponsiveContainerContext\n * @provides CartesianViewBoxContext\n * @provides CartesianChartContext\n */\nexport var LineChart = /*#__PURE__*/forwardRef((props, ref) => {\n return /*#__PURE__*/React.createElement(CartesianChart, {\n chartName: \"LineChart\",\n defaultTooltipEventType: \"axis\",\n validateTooltipEventTypes: allowedTooltipTypes,\n tooltipPayloadSearcher: arrayTooltipSearcher,\n categoricalChartProps: props,\n ref: ref\n });\n});","import { CartesianGrid, Line, LineChart as RechartsLineChart, XAxis, YAxis } from 'recharts';\nimport {\n type ChartConfig,\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartTooltip,\n ChartTooltipContent,\n} from '../../../shadcn/shadcnChart';\n\ninterface LineSeries {\n dataKey: string;\n type?: 'linear' | 'monotone';\n}\n\nexport interface LineChartProps {\n data: Record<string, unknown>[];\n config: ChartConfig;\n xAxisKey: string;\n lines: LineSeries[];\n className?: string;\n}\n\nexport const LineChart = ({ data, config, xAxisKey, lines, className }: LineChartProps) => (\n <ChartContainer config={config} className={className ?? 'min-h-[300px] w-full'}>\n <RechartsLineChart data={data}>\n <CartesianGrid strokeDasharray=\"3 3\" vertical={false} />\n <XAxis dataKey={xAxisKey} tickLine={false} axisLine={false} />\n <YAxis tickLine={false} axisLine={false} />\n <ChartTooltip content={<ChartTooltipContent />} />\n <ChartLegend content={<ChartLegendContent />} />\n {lines.map((line) => (\n <Line\n key={line.dataKey}\n type={line.type ?? 'monotone'}\n dataKey={line.dataKey}\n stroke={`var(--color-${line.dataKey})`}\n strokeWidth={2}\n dot={false}\n />\n ))}\n </RechartsLineChart>\n </ChartContainer>\n);\n\nLineChart.displayName = 'LineChart';\n"],"names":["LineChart","RechartsLineChart"],"mappings":"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","x_google_ignoreList":[0,1,2]}
1
+ {"version":3,"file":"LineChart.js","sources":["../node_modules/.pnpm/recharts@3.8.0_@types+react@19.2.14_react-dom@19.2.3_react@19.2.3__react-is@18.3.1_react@19.2.3_redux@5.0.1/node_modules/recharts/es6/state/selectors/lineSelectors.js","../node_modules/.pnpm/recharts@3.8.0_@types+react@19.2.14_react-dom@19.2.3_react@19.2.3__react-is@18.3.1_react@19.2.3_redux@5.0.1/node_modules/recharts/es6/cartesian/Line.js","../node_modules/.pnpm/recharts@3.8.0_@types+react@19.2.14_react-dom@19.2.3_react@19.2.3__react-is@18.3.1_react@19.2.3_redux@5.0.1/node_modules/recharts/es6/chart/LineChart.js","../lib/components/LineChart/LineChart.tsx"],"sourcesContent":["import { createSelector } from 'reselect';\nimport { computeLinePoints } from '../../cartesian/Line';\nimport { selectChartDataWithIndexesIfNotInPanoramaPosition4 } from './dataSelectors';\nimport { selectChartLayout } from '../../context/chartLayoutContext';\nimport { selectAxisWithScale, selectTicksOfGraphicalItem, selectUnfilteredCartesianItems } from './axisSelectors';\nimport { getBandSizeOfAxis, isCategoricalAxis } from '../../util/ChartUtils';\nvar selectXAxisWithScale = (state, xAxisId, _yAxisId, isPanorama) => selectAxisWithScale(state, 'xAxis', xAxisId, isPanorama);\nvar selectXAxisTicks = (state, xAxisId, _yAxisId, isPanorama) => selectTicksOfGraphicalItem(state, 'xAxis', xAxisId, isPanorama);\nvar selectYAxisWithScale = (state, _xAxisId, yAxisId, isPanorama) => selectAxisWithScale(state, 'yAxis', yAxisId, isPanorama);\nvar selectYAxisTicks = (state, _xAxisId, yAxisId, isPanorama) => selectTicksOfGraphicalItem(state, 'yAxis', yAxisId, isPanorama);\nvar selectBandSize = createSelector([selectChartLayout, selectXAxisWithScale, selectYAxisWithScale, selectXAxisTicks, selectYAxisTicks], (layout, xAxis, yAxis, xAxisTicks, yAxisTicks) => {\n if (isCategoricalAxis(layout, 'xAxis')) {\n return getBandSizeOfAxis(xAxis, xAxisTicks, false);\n }\n return getBandSizeOfAxis(yAxis, yAxisTicks, false);\n});\nvar pickLineId = (_state, _xAxisId, _yAxisId, _isPanorama, id) => id;\nfunction isLineSettings(item) {\n return item.type === 'line';\n}\n\n/*\n * There is a race condition problem because we read some data from props and some from the state.\n * The state is updated through a dispatch and is one render behind,\n * and so we have this weird one tick render where the displayedData in one selector have the old dataKey\n * but the new dataKey in another selector.\n *\n * So here instead of reading the dataKey from the props, we always read it from the state.\n */\nvar selectSynchronisedLineSettings = createSelector([selectUnfilteredCartesianItems, pickLineId], (graphicalItems, id) => graphicalItems.filter(isLineSettings).find(x => x.id === id));\nexport var selectLinePoints = createSelector([selectChartLayout, selectXAxisWithScale, selectYAxisWithScale, selectXAxisTicks, selectYAxisTicks, selectSynchronisedLineSettings, selectBandSize, selectChartDataWithIndexesIfNotInPanoramaPosition4], (layout, xAxis, yAxis, xAxisTicks, yAxisTicks, lineSettings, bandSize, _ref) => {\n var {\n chartData,\n dataStartIndex,\n dataEndIndex\n } = _ref;\n if (lineSettings == null || xAxis == null || yAxis == null || xAxisTicks == null || yAxisTicks == null || xAxisTicks.length === 0 || yAxisTicks.length === 0 || bandSize == null || layout !== 'horizontal' && layout !== 'vertical') {\n return undefined;\n }\n var {\n dataKey,\n data\n } = lineSettings;\n var displayedData;\n if (data != null && data.length > 0) {\n displayedData = data;\n } else {\n displayedData = chartData === null || chartData === void 0 ? void 0 : chartData.slice(dataStartIndex, dataEndIndex + 1);\n }\n if (displayedData == null) {\n return undefined;\n }\n return computeLinePoints({\n layout,\n xAxis,\n yAxis,\n xAxisTicks,\n yAxisTicks,\n dataKey,\n bandSize,\n displayedData\n });\n});","var _excluded = [\"id\"],\n _excluded2 = [\"type\", \"layout\", \"connectNulls\", \"needClip\", \"shape\"],\n _excluded3 = [\"activeDot\", \"animateNewValues\", \"animationBegin\", \"animationDuration\", \"animationEasing\", \"connectNulls\", \"dot\", \"hide\", \"isAnimationActive\", \"label\", \"legendType\", \"xAxisId\", \"yAxisId\", \"id\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nimport * as React from 'react';\nimport { Component, useCallback, useMemo, useRef, useState } from 'react';\nimport { clsx } from 'clsx';\nimport { Layer } from '../container/Layer';\nimport { CartesianLabelListContextProvider, LabelListFromLabelProp } from '../component/LabelList';\nimport { Dots } from '../component/Dots';\nimport { interpolate, isNullish, noop } from '../util/DataUtils';\nimport { isClipDot } from '../util/ReactUtils';\nimport { getCateCoordinateOfLine, getTooltipNameProp, getValueByDataKey } from '../util/ChartUtils';\nimport { ActivePoints } from '../component/ActivePoints';\nimport { SetTooltipEntrySettings } from '../state/SetTooltipEntrySettings';\nimport { SetErrorBarContext } from '../context/ErrorBarContext';\nimport { GraphicalItemClipPath, useNeedsClip } from './GraphicalItemClipPath';\nimport { useChartLayout } from '../context/chartLayoutContext';\nimport { useIsPanorama } from '../context/PanoramaContext';\nimport { selectLinePoints } from '../state/selectors/lineSelectors';\nimport { useAppSelector } from '../state/hooks';\nimport { SetLegendPayload } from '../state/SetLegendPayload';\nimport { useAnimationId } from '../util/useAnimationId';\nimport { resolveDefaultProps } from '../util/resolveDefaultProps';\nimport { usePlotArea } from '../hooks';\nimport { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId';\nimport { SetCartesianGraphicalItem } from '../state/SetGraphicalItem';\nimport { svgPropertiesNoEvents } from '../util/svgPropertiesNoEvents';\nimport { JavascriptAnimate } from '../animation/JavascriptAnimate';\nimport { svgPropertiesAndEvents } from '../util/svgPropertiesAndEvents';\nimport { getRadiusAndStrokeWidthFromDot } from '../util/getRadiusAndStrokeWidthFromDot';\nimport { Shape } from '../util/ActiveShapeUtils';\nimport { ZIndexLayer } from '../zIndex/ZIndexLayer';\nimport { DefaultZIndexes } from '../zIndex/DefaultZIndexes';\nimport { propsAreEqual } from '../util/propsAreEqual';\n\n/**\n * Internal props, combination of external props + defaultProps + private Recharts state\n */\n\n/**\n * External props, intended for end users to fill in\n */\n\n/**\n * Because of naming conflict, we are forced to ignore certain (valid) SVG attributes.\n */\n\nvar computeLegendPayloadFromAreaData = props => {\n var {\n dataKey,\n name,\n stroke,\n legendType,\n hide\n } = props;\n return [{\n inactive: hide,\n dataKey,\n type: legendType,\n color: stroke,\n value: getTooltipNameProp(name, dataKey),\n payload: props\n }];\n};\nvar SetLineTooltipEntrySettings = /*#__PURE__*/React.memo(_ref => {\n var {\n dataKey,\n data,\n stroke,\n strokeWidth,\n fill,\n name,\n hide,\n unit,\n tooltipType,\n id\n } = _ref;\n var tooltipEntrySettings = {\n dataDefinedOnItem: data,\n getPosition: noop,\n settings: {\n stroke,\n strokeWidth,\n fill,\n dataKey,\n nameKey: undefined,\n name: getTooltipNameProp(name, dataKey),\n hide,\n type: tooltipType,\n color: stroke,\n unit,\n graphicalItemId: id\n }\n };\n return /*#__PURE__*/React.createElement(SetTooltipEntrySettings, {\n tooltipEntrySettings: tooltipEntrySettings\n });\n});\n\n/**\n * Generates a simple stroke-dasharray string for animating a line draw effect.\n *\n * Uses `totalLength` as the gap (instead of `totalLength - length`) to prevent a floating-point\n * precision artifact: when fractional dash and gap values are serialized to a string attribute\n * and re-parsed by the SVG renderer, their sum can differ from the actual path length by a ULP,\n * causing the dasharray pattern to repeat and render a phantom dot at the path endpoint\n * with round or square strokeLinecap.\n *\n * @param totalLength The total length of the SVG path\n * @param length The currently visible portion of the path\n * @returns A stroke-dasharray string like \"50px 200px\"\n */\nvar generateSimpleStrokeDasharray = (totalLength, length) => {\n return \"\".concat(length, \"px \").concat(totalLength, \"px\");\n};\n\n/**\n * Repeats a dash pattern array a given number of times.\n *\n * If the input array has an odd length, a trailing `0` is appended to make it even\n * before repeating, because SVG stroke-dasharray patterns must have an even number\n * of values to cycle correctly between dash and gap segments.\n *\n * @param lines Array of dash/gap lengths to repeat\n * @param count Number of times to repeat the pattern\n * @returns A new array with the pattern repeated `count` times\n */\nfunction repeat(lines, count) {\n var linesUnit = lines.length % 2 !== 0 ? [...lines, 0] : lines;\n var result = [];\n for (var i = 0; i < count; ++i) {\n result.push(...linesUnit);\n }\n return result;\n}\n\n/**\n * Computes a stroke-dasharray string for animating a custom-dashed line draw effect.\n *\n * Given a user-specified dash pattern (e.g. `\"7,3\"`), this function builds a dasharray\n * that reveals exactly `length` pixels of that pattern, followed by a gap of `totalLength`\n * to hide the remainder of the path.\n *\n * Like {@link generateSimpleStrokeDasharray}, the trailing gap uses `totalLength` rather than\n * `totalLength - length` to avoid floating-point precision artifacts with round/square strokeLinecap.\n *\n * @param length The currently visible portion of the path\n * @param totalLength The total length of the SVG path\n * @param lines The user-specified dash pattern as an array of numbers (e.g. [7, 3])\n * @returns A stroke-dasharray string incorporating the custom dash pattern\n */\nvar getStrokeDasharray = (length, totalLength, lines) => {\n var lineLength = lines.reduce((pre, next) => pre + next, 0);\n\n // if lineLength is 0 return the default when no strokeDasharray is provided\n if (!lineLength) {\n return generateSimpleStrokeDasharray(totalLength, length);\n }\n var count = Math.floor(length / lineLength);\n var remainLength = length % lineLength;\n var remainLines = [];\n for (var i = 0, sum = 0; i < lines.length; sum += (_lines$i = lines[i]) !== null && _lines$i !== void 0 ? _lines$i : 0, ++i) {\n var _lines$i;\n var lineValue = lines[i];\n if (lineValue != null && sum + lineValue > remainLength) {\n remainLines = [...lines.slice(0, i), remainLength - sum];\n break;\n }\n }\n var emptyLines = remainLines.length % 2 === 0 ? [0, totalLength] : [totalLength];\n return [...repeat(lines, count), ...remainLines, ...emptyLines].map(line => \"\".concat(line, \"px\")).join(', ');\n};\nfunction LineDotsWrapper(_ref2) {\n var {\n clipPathId,\n points,\n props\n } = _ref2;\n var {\n dot,\n dataKey,\n needClip\n } = props;\n\n /*\n * Exclude ID from the props passed to the Dots component\n * because then the ID would be applied to multiple dots, and it would no longer be unique.\n */\n var {\n id\n } = props,\n propsWithoutId = _objectWithoutProperties(props, _excluded);\n var lineProps = svgPropertiesNoEvents(propsWithoutId);\n return /*#__PURE__*/React.createElement(Dots, {\n points: points,\n dot: dot,\n className: \"recharts-line-dots\",\n dotClassName: \"recharts-line-dot\",\n dataKey: dataKey,\n baseProps: lineProps,\n needClip: needClip,\n clipPathId: clipPathId\n });\n}\nfunction LineLabelListProvider(_ref3) {\n var {\n showLabels,\n children,\n points\n } = _ref3;\n var labelListEntries = useMemo(() => {\n return points === null || points === void 0 ? void 0 : points.map(point => {\n var _point$x, _point$y;\n var viewBox = {\n x: (_point$x = point.x) !== null && _point$x !== void 0 ? _point$x : 0,\n y: (_point$y = point.y) !== null && _point$y !== void 0 ? _point$y : 0,\n width: 0,\n lowerWidth: 0,\n upperWidth: 0,\n height: 0\n };\n return _objectSpread(_objectSpread({}, viewBox), {}, {\n value: point.value,\n payload: point.payload,\n viewBox,\n /*\n * Line is not passing parentViewBox to the LabelList so the labels can escape - looks like a bug, should we pass parentViewBox?\n * Or should this just be the root chart viewBox?\n */\n parentViewBox: undefined,\n fill: undefined\n });\n });\n }, [points]);\n return /*#__PURE__*/React.createElement(CartesianLabelListContextProvider, {\n value: showLabels ? labelListEntries : undefined\n }, children);\n}\nfunction StaticCurve(_ref4) {\n var {\n clipPathId,\n pathRef,\n points,\n strokeDasharray,\n props\n } = _ref4;\n var {\n type,\n layout,\n connectNulls,\n needClip,\n shape\n } = props,\n others = _objectWithoutProperties(props, _excluded2);\n var curveProps = _objectSpread(_objectSpread({}, svgPropertiesAndEvents(others)), {}, {\n fill: 'none',\n className: 'recharts-line-curve',\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : undefined,\n points,\n type,\n layout,\n connectNulls,\n strokeDasharray: strokeDasharray !== null && strokeDasharray !== void 0 ? strokeDasharray : props.strokeDasharray\n });\n return /*#__PURE__*/React.createElement(React.Fragment, null, (points === null || points === void 0 ? void 0 : points.length) > 1 && /*#__PURE__*/React.createElement(Shape, _extends({\n shapeType: \"curve\",\n option: shape\n }, curveProps, {\n pathRef: pathRef\n })), /*#__PURE__*/React.createElement(LineDotsWrapper, {\n points: points,\n clipPathId: clipPathId,\n props: props\n }));\n}\nfunction getTotalLength(mainCurve) {\n try {\n return mainCurve && mainCurve.getTotalLength && mainCurve.getTotalLength() || 0;\n } catch (_unused) {\n return 0;\n }\n}\nfunction CurveWithAnimation(_ref5) {\n var {\n clipPathId,\n props,\n pathRef,\n previousPointsRef,\n longestAnimatedLengthRef\n } = _ref5;\n var {\n points,\n strokeDasharray,\n isAnimationActive,\n animationBegin,\n animationDuration,\n animationEasing,\n animateNewValues,\n width,\n height,\n onAnimationEnd,\n onAnimationStart\n } = props;\n var prevPoints = previousPointsRef.current;\n var animationId = useAnimationId(points, 'recharts-line-');\n var animationIdRef = useRef(animationId);\n var [isAnimating, setIsAnimating] = useState(false);\n var showLabels = !isAnimating;\n var handleAnimationEnd = useCallback(() => {\n if (typeof onAnimationEnd === 'function') {\n onAnimationEnd();\n }\n setIsAnimating(false);\n }, [onAnimationEnd]);\n var handleAnimationStart = useCallback(() => {\n if (typeof onAnimationStart === 'function') {\n onAnimationStart();\n }\n setIsAnimating(true);\n }, [onAnimationStart]);\n var totalLength = getTotalLength(pathRef.current);\n /*\n * Here we want to detect if the length animation has been interrupted.\n * For that we keep a reference to the furthest length that has been animated.\n *\n * And then, to keep things smooth, we add to it the current length that is being animated right now.\n *\n * If we did Math.max then it makes the length animation \"pause\" but we want to keep it smooth\n * so in case we have some \"leftover\" length from the previous animation we add it to the current length.\n *\n * This is not perfect because the animation changes speed due to easing. The default easing is 'ease' which is not linear\n * and makes it stand out. But it's good enough I suppose.\n * If we want to fix it then we need to keep track of multiple animations and their easing and timings.\n *\n * If you want to see this in action, try to change the dataKey of the line chart while the initial animation is running.\n * The Line begins with zero length and slowly grows to the full length. While this growth is in progress,\n * change the dataKey and the Line will continue growing from where it has grown so far.\n *\n * This is for the case when new animation triggers. When that happens we get new points, everything re-renders,\n * and we get fresh new state in this component and use the ref stored above.\n *\n * In case when we get render without new animation - for example when opacity changes, or color changes,\n * then the animationId remains the same, and we do not update the starting point.\n * See https://github.com/recharts/recharts/issues/6044\n */\n var startingPointRef = useRef(0);\n if (animationIdRef.current !== animationId) {\n startingPointRef.current = longestAnimatedLengthRef.current;\n animationIdRef.current = animationId;\n }\n var startingPoint = startingPointRef.current;\n return /*#__PURE__*/React.createElement(LineLabelListProvider, {\n points: points,\n showLabels: showLabels\n }, props.children, /*#__PURE__*/React.createElement(JavascriptAnimate, {\n animationId: animationId,\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n onAnimationEnd: handleAnimationEnd,\n onAnimationStart: handleAnimationStart,\n key: animationId\n }, t => {\n var lengthInterpolated = interpolate(startingPoint, totalLength + startingPoint, t);\n var curLength = Math.min(lengthInterpolated, totalLength);\n var currentStrokeDasharray;\n if (isAnimationActive) {\n if (strokeDasharray) {\n var lines = \"\".concat(strokeDasharray).split(/[,\\s]+/gim).map(num => parseFloat(num));\n currentStrokeDasharray = getStrokeDasharray(curLength, totalLength, lines);\n } else {\n currentStrokeDasharray = generateSimpleStrokeDasharray(totalLength, curLength);\n }\n } else {\n currentStrokeDasharray = strokeDasharray == null ? undefined : String(strokeDasharray);\n }\n\n /*\n * Here it is important to wait a little bit with updating the previousPointsRef\n * before the animation has a time to initialize.\n * If we set the previous pointsRef immediately, we set it before the Legend height it calculated\n * and before pathRef is set.\n * If that happens, the Line will re-render again after Legend had reported its height\n * which will start a new animation with the previous points as the starting point\n * which gives the effect of the Line animating slightly upwards (where the animation distance equals the Legend height).\n * Waiting for t > 0 is indirect but good enough to ensure that the Legend height is calculated and animation works properly.\n *\n * Total length similarly is calculated from the pathRef. We should not update the previousPointsRef\n * before the pathRef is set, otherwise we will have a wrong total length.\n */\n if (t > 0 && totalLength > 0) {\n // eslint-disable-next-line no-param-reassign\n previousPointsRef.current = points;\n /*\n * totalLength is set from a ref and is not updated in the first tick of the animation.\n * It defaults to zero which is exactly what we want here because we want to grow from zero,\n * however the same happens when the data change.\n *\n * In that case we want to remember the previous length and continue from there, and only animate the shape.\n *\n * Therefore the totalLength > 0 check.\n *\n * The Animate is about to fire handleAnimationStart which will update the state\n * and cause a re-render and read a new proper totalLength which will be used in the next tick\n * and update the longestAnimatedLengthRef.\n *\n * Why Math.max? Sometimes the curve goes through a smaller length than previously recorded.\n * If we just set it to curLength, then the next animation would start from a smaller length\n * which looks weird. So we keep the longest length ever reached and then animate from there.\n */\n // eslint-disable-next-line no-param-reassign\n longestAnimatedLengthRef.current = Math.max(longestAnimatedLengthRef.current, curLength);\n }\n if (prevPoints) {\n var prevPointsDiffFactor = prevPoints.length / points.length;\n var stepData = t === 1 ? points : points.map((entry, index) => {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n if (prevPoints[prevPointIndex]) {\n var prev = prevPoints[prevPointIndex];\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolate(prev.x, entry.x, t),\n y: interpolate(prev.y, entry.y, t)\n });\n }\n\n // magic number of faking previous x and y location\n if (animateNewValues) {\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: interpolate(width * 2, entry.x, t),\n y: interpolate(height / 2, entry.y, t)\n });\n }\n return _objectSpread(_objectSpread({}, entry), {}, {\n x: entry.x,\n y: entry.y\n });\n });\n // eslint-disable-next-line no-param-reassign\n previousPointsRef.current = stepData;\n return /*#__PURE__*/React.createElement(StaticCurve, {\n props: props,\n points: stepData,\n clipPathId: clipPathId,\n pathRef: pathRef,\n strokeDasharray: currentStrokeDasharray\n });\n }\n return /*#__PURE__*/React.createElement(StaticCurve, {\n props: props,\n points: points,\n clipPathId: clipPathId,\n pathRef: pathRef,\n strokeDasharray: currentStrokeDasharray\n });\n }), /*#__PURE__*/React.createElement(LabelListFromLabelProp, {\n label: props.label\n }));\n}\nfunction RenderCurve(_ref6) {\n var {\n clipPathId,\n props\n } = _ref6;\n var previousPointsRef = useRef(null);\n var longestAnimatedLengthRef = useRef(0);\n var pathRef = useRef(null);\n return /*#__PURE__*/React.createElement(CurveWithAnimation, {\n props: props,\n clipPathId: clipPathId,\n previousPointsRef: previousPointsRef,\n longestAnimatedLengthRef: longestAnimatedLengthRef,\n pathRef: pathRef\n });\n}\nvar errorBarDataPointFormatter = (dataPoint, dataKey) => {\n var _dataPoint$x, _dataPoint$y;\n return {\n x: (_dataPoint$x = dataPoint.x) !== null && _dataPoint$x !== void 0 ? _dataPoint$x : undefined,\n y: (_dataPoint$y = dataPoint.y) !== null && _dataPoint$y !== void 0 ? _dataPoint$y : undefined,\n value: dataPoint.value,\n // getValueByDataKey does not validate the output type\n errorVal: getValueByDataKey(dataPoint.payload, dataKey)\n };\n};\n\n// eslint-disable-next-line react/prefer-stateless-function\nclass LineWithState extends Component {\n render() {\n var {\n hide,\n dot,\n points,\n className,\n xAxisId,\n yAxisId,\n top,\n left,\n width,\n height,\n id,\n needClip,\n zIndex\n } = this.props;\n if (hide) {\n return null;\n }\n var layerClass = clsx('recharts-line', className);\n var clipPathId = id;\n var {\n r,\n strokeWidth\n } = getRadiusAndStrokeWidthFromDot(dot);\n var clipDot = isClipDot(dot);\n var dotSize = r * 2 + strokeWidth;\n var activePointsClipPath = needClip ? \"url(#clipPath-\".concat(clipDot ? '' : 'dots-').concat(clipPathId, \")\") : undefined;\n return /*#__PURE__*/React.createElement(ZIndexLayer, {\n zIndex: zIndex\n }, /*#__PURE__*/React.createElement(Layer, {\n className: layerClass\n }, needClip && /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(GraphicalItemClipPath, {\n clipPathId: clipPathId,\n xAxisId: xAxisId,\n yAxisId: yAxisId\n }), !clipDot && /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clipPath-dots-\".concat(clipPathId)\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: left - dotSize / 2,\n y: top - dotSize / 2,\n width: width + dotSize,\n height: height + dotSize\n }))), /*#__PURE__*/React.createElement(SetErrorBarContext, {\n xAxisId: xAxisId,\n yAxisId: yAxisId,\n data: points,\n dataPointFormatter: errorBarDataPointFormatter,\n errorBarOffset: 0\n }, /*#__PURE__*/React.createElement(RenderCurve, {\n props: this.props,\n clipPathId: clipPathId\n }))), /*#__PURE__*/React.createElement(ActivePoints, {\n activeDot: this.props.activeDot,\n points: points,\n mainColor: this.props.stroke,\n itemDataKey: this.props.dataKey,\n clipPath: activePointsClipPath\n }));\n }\n}\nexport var defaultLineProps = {\n activeDot: true,\n animateNewValues: true,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease',\n connectNulls: false,\n dot: true,\n fill: '#fff',\n hide: false,\n isAnimationActive: 'auto',\n label: false,\n legendType: 'line',\n stroke: '#3182bd',\n strokeWidth: 1,\n xAxisId: 0,\n yAxisId: 0,\n zIndex: DefaultZIndexes.line,\n type: 'linear'\n};\nfunction LineImpl(props) {\n var _resolveDefaultProps = resolveDefaultProps(props, defaultLineProps),\n {\n activeDot,\n animateNewValues,\n animationBegin,\n animationDuration,\n animationEasing,\n connectNulls,\n dot,\n hide,\n isAnimationActive,\n label,\n legendType,\n xAxisId,\n yAxisId,\n id\n } = _resolveDefaultProps,\n everythingElse = _objectWithoutProperties(_resolveDefaultProps, _excluded3);\n var {\n needClip\n } = useNeedsClip(xAxisId, yAxisId);\n var plotArea = usePlotArea();\n var layout = useChartLayout();\n var isPanorama = useIsPanorama();\n var points = useAppSelector(state => selectLinePoints(state, xAxisId, yAxisId, isPanorama, id));\n if (layout !== 'horizontal' && layout !== 'vertical' || points == null || plotArea == null) {\n // Cannot render Line in an unsupported layout\n return null;\n }\n var {\n height,\n width,\n x: left,\n y: top\n } = plotArea;\n return /*#__PURE__*/React.createElement(LineWithState, _extends({}, everythingElse, {\n id: id,\n connectNulls: connectNulls,\n dot: dot,\n activeDot: activeDot,\n animateNewValues: animateNewValues,\n animationBegin: animationBegin,\n animationDuration: animationDuration,\n animationEasing: animationEasing,\n isAnimationActive: isAnimationActive,\n hide: hide,\n label: label,\n legendType: legendType,\n xAxisId: xAxisId,\n yAxisId: yAxisId,\n points: points,\n layout: layout,\n height: height,\n width: width,\n left: left,\n top: top,\n needClip: needClip\n }));\n}\nexport function computeLinePoints(_ref7) {\n var {\n layout,\n xAxis,\n yAxis,\n xAxisTicks,\n yAxisTicks,\n dataKey,\n bandSize,\n displayedData\n } = _ref7;\n return displayedData.map((entry, index) => {\n // getValueByDataKey does not validate the output type\n var value = getValueByDataKey(entry, dataKey);\n if (layout === 'horizontal') {\n var _x = getCateCoordinateOfLine({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize,\n entry,\n index\n });\n var _y = isNullish(value) ? null : yAxis.scale.map(value);\n return {\n x: _x,\n y: _y !== null && _y !== void 0 ? _y : null,\n value,\n payload: entry\n };\n }\n var x = isNullish(value) ? null : xAxis.scale.map(value);\n var y = getCateCoordinateOfLine({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize,\n entry,\n index\n });\n if (x == null || y == null) {\n return null;\n }\n return {\n x,\n y,\n value,\n payload: entry\n };\n }).filter(Boolean);\n}\nfunction LineFn(outsideProps) {\n var props = resolveDefaultProps(outsideProps, defaultLineProps);\n var isPanorama = useIsPanorama();\n return /*#__PURE__*/React.createElement(RegisterGraphicalItemId, {\n id: props.id,\n type: \"line\"\n }, id => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SetLegendPayload, {\n legendPayload: computeLegendPayloadFromAreaData(props)\n }), /*#__PURE__*/React.createElement(SetLineTooltipEntrySettings, {\n dataKey: props.dataKey,\n data: props.data,\n stroke: props.stroke,\n strokeWidth: props.strokeWidth,\n fill: props.fill,\n name: props.name,\n hide: props.hide,\n unit: props.unit,\n tooltipType: props.tooltipType,\n id: id\n }), /*#__PURE__*/React.createElement(SetCartesianGraphicalItem, {\n type: \"line\",\n id: id,\n data: props.data,\n xAxisId: props.xAxisId,\n yAxisId: props.yAxisId,\n zAxisId: 0,\n dataKey: props.dataKey,\n hide: props.hide,\n isPanorama: isPanorama\n }), /*#__PURE__*/React.createElement(LineImpl, _extends({}, props, {\n id: id\n }))));\n}\n\n/**\n * @provides LabelListContext\n * @provides ErrorBarContext\n * @consumes CartesianChartContext\n */\nexport var Line = /*#__PURE__*/React.memo(LineFn, propsAreEqual);\n// @ts-expect-error we need to set the displayName for debugging purposes\nLine.displayName = 'Line';","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport { arrayTooltipSearcher } from '../state/optionsSlice';\nimport { CartesianChart } from './CartesianChart';\nvar allowedTooltipTypes = ['axis'];\n\n/**\n * @consumes ResponsiveContainerContext\n * @provides CartesianViewBoxContext\n * @provides CartesianChartContext\n */\nexport var LineChart = /*#__PURE__*/forwardRef((props, ref) => {\n return /*#__PURE__*/React.createElement(CartesianChart, {\n chartName: \"LineChart\",\n defaultTooltipEventType: \"axis\",\n validateTooltipEventTypes: allowedTooltipTypes,\n tooltipPayloadSearcher: arrayTooltipSearcher,\n categoricalChartProps: props,\n ref: ref\n });\n});","import { CartesianGrid, Line, LineChart as RechartsLineChart, XAxis, YAxis } from 'recharts';\nimport {\n type ChartConfig,\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartTooltip,\n ChartTooltipContent,\n} from '../../../shadcn/shadcnChart';\n\ninterface LineSeries {\n dataKey: string;\n type?: 'linear' | 'monotone';\n}\n\nexport interface LineChartProps {\n data: Record<string, unknown>[];\n config: ChartConfig;\n xAxisKey: string;\n lines: LineSeries[];\n className?: string;\n}\n\nexport const LineChart = ({ data, config, xAxisKey, lines, className }: LineChartProps) => (\n <ChartContainer config={config} className={className ?? 'min-h-[300px] w-full'}>\n <RechartsLineChart data={data}>\n <CartesianGrid strokeDasharray=\"3 3\" vertical={false} />\n <XAxis dataKey={xAxisKey} tickLine={false} axisLine={false} />\n <YAxis tickLine={false} axisLine={false} />\n <ChartTooltip content={<ChartTooltipContent />} />\n <ChartLegend content={<ChartLegendContent />} />\n {lines.map((line) => (\n <Line\n key={line.dataKey}\n type={line.type ?? 'monotone'}\n dataKey={line.dataKey}\n stroke={`var(--color-${line.dataKey})`}\n strokeWidth={2}\n dot={false}\n />\n ))}\n </RechartsLineChart>\n </ChartContainer>\n);\n\nLineChart.displayName = 'LineChart';\n"],"names":["LineChart","RechartsLineChart"],"mappings":"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","x_google_ignoreList":[0,1,2]}
@@ -0,0 +1,37 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useState, useMemo, useContext, createContext } from 'react';
3
+
4
+ const LayoutModeContext = createContext({
5
+ mode: "padded",
6
+ setMode: () => {
7
+ }
8
+ });
9
+ const LayoutModeProvider = ({ children }) => {
10
+ const [mode, setMode] = useState("padded");
11
+ const value = useMemo(() => ({ mode, setMode }), [mode]);
12
+ return /* @__PURE__ */ jsx(LayoutModeContext.Provider, { value, children });
13
+ };
14
+ function useLayoutMode() {
15
+ return useContext(LayoutModeContext);
16
+ }
17
+
18
+ const NO_SERVICES = [];
19
+ const ABSENT = Object.freeze({
20
+ id: null,
21
+ name: null,
22
+ subdomain: null,
23
+ logoUrl: null,
24
+ services: NO_SERVICES
25
+ });
26
+ const OrgContext = createContext(ABSENT);
27
+ const OrgContextProvider = OrgContext.Provider;
28
+ function useOrgContext() {
29
+ return useContext(OrgContext);
30
+ }
31
+ function useOrgService(service) {
32
+ const { services } = useOrgContext();
33
+ return services.find((entry) => entry.service === service) ?? null;
34
+ }
35
+
36
+ export { LayoutModeProvider as L, OrgContextProvider as O, useOrgContext as a, useOrgService as b, useLayoutMode as u };
37
+ //# sourceMappingURL=OrgContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrgContext.js","sources":["../lib/context/LayoutModeContext.tsx","../lib/context/OrgContext.tsx"],"sourcesContent":["import { createContext, type ReactNode, useContext, useMemo, useState } from 'react';\n\nexport type LayoutMode = 'padded' | 'full';\n\ninterface LayoutModeContextValue {\n mode: LayoutMode;\n setMode: (mode: LayoutMode) => void;\n}\n\nconst LayoutModeContext = createContext<LayoutModeContextValue>({\n mode: 'padded',\n setMode: () => {},\n});\n\nexport const LayoutModeProvider = ({ children }: { children: ReactNode }) => {\n const [mode, setMode] = useState<LayoutMode>('padded');\n const value = useMemo(() => ({ mode, setMode }), [mode]);\n return <LayoutModeContext.Provider value={value}>{children}</LayoutModeContext.Provider>;\n};\n\n// Returns current layout mode and a setter; MF pages set 'full' on mount and reset to 'padded' on unmount.\nexport function useLayoutMode(): LayoutModeContextValue {\n return useContext(LayoutModeContext);\n}\n","import { createContext, useContext } from 'react';\nimport type { ServiceCode } from '../types/catalog-resolver';\n\n// An external service the org has provisioned. externalId/externalName carry the provider's own\n// identifiers (for Gitea: the numeric org id and the namespace) so consumers never need a second call.\nexport interface OrgService {\n service: ServiceCode;\n externalId: string | null;\n externalName: string | null;\n}\n\nexport interface OrgContextValue {\n id: string | null;\n name: string | null;\n subdomain: string | null;\n logoUrl: string | null;\n services: OrgService[];\n}\n\n// No provider means no org has been resolved yet — report zero services rather than throwing, so a\n// federated remote rendered outside the host still mounts (same posture as usePermission).\nconst NO_SERVICES: OrgService[] = [];\n\nconst ABSENT: OrgContextValue = Object.freeze({\n id: null,\n name: null,\n subdomain: null,\n logoUrl: null,\n services: NO_SERVICES,\n});\n\nconst OrgContext = createContext<OrgContextValue>(ABSENT);\n\nexport const OrgContextProvider = OrgContext.Provider;\n\n// Returns the host's current organization, fed from the auth-state stream; remotes read it instead of refetching\nexport function useOrgContext(): OrgContextValue {\n return useContext(OrgContext);\n}\n\n// Returns the org's provisioned entry for one service, or null when it has not been set up\nexport function useOrgService(service: ServiceCode): OrgService | null {\n const { services } = useOrgContext();\n return services.find((entry) => entry.service === service) ?? null;\n}\n"],"names":[],"mappings":";;;AASA,MAAM,oBAAoB,aAAA,CAAsC;AAAA,EAC9D,IAAA,EAAM,QAAA;AAAA,EACN,SAAS,MAAM;AAAA,EAAC;AAClB,CAAC,CAAA;AAEM,MAAM,kBAAA,GAAqB,CAAC,EAAE,QAAA,EAAS,KAA+B;AAC3E,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAqB,QAAQ,CAAA;AACrD,EAAA,MAAM,KAAA,GAAQ,QAAQ,OAAO,EAAE,MAAM,OAAA,EAAQ,CAAA,EAAI,CAAC,IAAI,CAAC,CAAA;AACvD,EAAA,uBAAO,GAAA,CAAC,iBAAA,CAAkB,QAAA,EAAlB,EAA2B,OAAe,QAAA,EAAS,CAAA;AAC7D;AAGO,SAAS,aAAA,GAAwC;AACtD,EAAA,OAAO,WAAW,iBAAiB,CAAA;AACrC;;ACFA,MAAM,cAA4B,EAAC;AAEnC,MAAM,MAAA,GAA0B,OAAO,MAAA,CAAO;AAAA,EAC5C,EAAA,EAAI,IAAA;AAAA,EACJ,IAAA,EAAM,IAAA;AAAA,EACN,SAAA,EAAW,IAAA;AAAA,EACX,OAAA,EAAS,IAAA;AAAA,EACT,QAAA,EAAU;AACZ,CAAC,CAAA;AAED,MAAM,UAAA,GAAa,cAA+B,MAAM,CAAA;AAEjD,MAAM,qBAAqB,UAAA,CAAW;AAGtC,SAAS,aAAA,GAAiC;AAC/C,EAAA,OAAO,WAAW,UAAU,CAAA;AAC9B;AAGO,SAAS,cAAc,OAAA,EAAyC;AACrE,EAAA,MAAM,EAAE,QAAA,EAAS,GAAI,aAAA,EAAc;AACnC,EAAA,OAAO,SAAS,IAAA,CAAK,CAAC,UAAU,KAAA,CAAM,OAAA,KAAY,OAAO,CAAA,IAAK,IAAA;AAChE;;;;"}
@@ -1,14 +1,25 @@
1
1
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import { useContext, createContext } from 'react';
3
3
  import { c as cn } from './utils.js';
4
- import { L as LockKeyhole } from './lock-keyhole.js';
5
4
  import { L as Lock } from './lock.js';
5
+ import { L as LockKeyhole } from './lock-keyhole.js';
6
+
7
+ const SERVICE_LABELS = {
8
+ GITEA: "a git organization"
9
+ };
10
+ function serviceLabels(services) {
11
+ const labels = services.map((service) => SERVICE_LABELS[service] ?? service);
12
+ if (labels.length === 0) return "a service";
13
+ if (labels.length === 1) return labels[0];
14
+ return `${labels.slice(0, -1).join(", ")} and ${labels[labels.length - 1]}`;
15
+ }
6
16
 
7
17
  const ALLOW = Object.freeze({
8
18
  granted: true,
9
19
  locked: false,
10
20
  reason: null,
11
21
  unlockPlans: [],
22
+ missingServices: [],
12
23
  available: true,
13
24
  featureName: null
14
25
  });
@@ -28,10 +39,29 @@ function usePermission(code) {
28
39
  const PermissionLockIcon = ({
29
40
  reason,
30
41
  className
31
- }) => reason === "SITE" ? /* @__PURE__ */ jsx(LockKeyhole, { className: cn("text-destructive", className) }) : /* @__PURE__ */ jsx(Lock, { className: cn("text-warning", className) });
32
- function lockedTip({ reason, unlockPlans }) {
33
- if (reason === "SITE") return "Not enabled for this site";
34
- return unlockPlans.length > 0 ? `Available in ${unlockPlans.join(", ")}` : "Not included in your plan";
42
+ }) => {
43
+ switch (reason) {
44
+ case "SITE":
45
+ return /* @__PURE__ */ jsx(LockKeyhole, { className: cn("text-destructive", className) });
46
+ case "SERVICE":
47
+ return /* @__PURE__ */ jsx(Lock, { className: cn("text-destructive", className) });
48
+ default:
49
+ return /* @__PURE__ */ jsx(Lock, { className: cn("text-warning", className) });
50
+ }
51
+ };
52
+ function lockedTip({
53
+ reason,
54
+ unlockPlans,
55
+ missingServices = []
56
+ }) {
57
+ switch (reason) {
58
+ case "SITE":
59
+ return "Not enabled for this site";
60
+ case "SERVICE":
61
+ return `Requires ${serviceLabels(missingServices)}`;
62
+ default:
63
+ return unlockPlans.length > 0 ? `Available in ${unlockPlans.join(", ")}` : "Not included in your plan";
64
+ }
35
65
  }
36
66
  function lockMessages(result) {
37
67
  const name = result.featureName;
@@ -41,23 +71,33 @@ function lockMessages(result) {
41
71
  tip: name ? `You don't have permission to view ${name}.` : "You don't have permission to access this."
42
72
  };
43
73
  }
44
- if (result.reason === "SITE") {
45
- return {
46
- title: name ? `${name} not enabled here` : "Not available here",
47
- tip: name ? `${name} isn't enabled for this site.` : "Not enabled for this site."
48
- };
49
- }
50
- if (result.unlockPlans.length > 0) {
51
- const plans = result.unlockPlans.join(", ");
52
- return {
53
- title: name ? `Unlock ${name}` : "Upgrade required",
54
- tip: name ? `${name} is available on ${plans}.` : `Available in ${plans}.`
55
- };
74
+ switch (result.reason) {
75
+ case "SITE":
76
+ return {
77
+ title: name ? `${name} not enabled here` : "Not available here",
78
+ tip: name ? `${name} isn't enabled for this site.` : "Not enabled for this site."
79
+ };
80
+ case "SERVICE": {
81
+ const needs = serviceLabels(result.missingServices ?? []);
82
+ return {
83
+ title: "Setup required",
84
+ tip: name ? `${name} needs ${needs}. Set it up to continue.` : `This needs ${needs}. Set it up to continue.`
85
+ };
86
+ }
87
+ default: {
88
+ if (result.unlockPlans.length > 0) {
89
+ const plans = result.unlockPlans.join(", ");
90
+ return {
91
+ title: name ? `Unlock ${name}` : "Upgrade required",
92
+ tip: name ? `${name} is available on ${plans}.` : `Available in ${plans}.`
93
+ };
94
+ }
95
+ return {
96
+ title: name ? `Unlock ${name}` : "Upgrade required",
97
+ tip: name ? `${name} isn't included in your plan.` : "Not included in your plan."
98
+ };
99
+ }
56
100
  }
57
- return {
58
- title: name ? `Unlock ${name}` : "Upgrade required",
59
- tip: name ? `${name} isn't included in your plan.` : "Not included in your plan."
60
- };
61
101
  }
62
102
  const DefaultLockFallback = ({ result }) => /* @__PURE__ */ jsxs("div", { className: "flex flex-1 flex-col items-center justify-center gap-2 text-center", children: [
63
103
  /* @__PURE__ */ jsx(PermissionLockIcon, { reason: result.reason, className: "size-10" }),
@@ -71,5 +111,5 @@ const PermissionGate = ({ permission, children, fallback }) => {
71
111
  return /* @__PURE__ */ jsx(DefaultLockFallback, { result });
72
112
  };
73
113
 
74
- export { PermissionGate as P, PermissionGateProvider as a, PermissionLockIcon as b, usePermissionGate as c, lockedTip as l, usePermission as u };
114
+ export { PermissionGate as P, SERVICE_LABELS as S, PermissionGateProvider as a, PermissionLockIcon as b, usePermissionGate as c, lockedTip as l, serviceLabels as s, usePermission as u };
75
115
  //# sourceMappingURL=PermissionGate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionGate.js","sources":["../lib/components/PermissionGate/PermissionGate.tsx"],"sourcesContent":["import { Lock, LockKeyhole } from 'lucide-react';\nimport type React from 'react';\nimport { createContext, useContext } from 'react';\nimport { cn } from '../../../shadcn/utils';\n\nexport type PermissionLockReason = 'PLAN' | 'SITE';\n\nexport interface PermissionGateResult {\n granted: boolean;\n locked: boolean;\n reason: PermissionLockReason | null;\n unlockPlans: string[];\n available: boolean;\n featureName: string | null;\n}\n\nexport type PermissionGateFn = (code: string) => PermissionGateResult;\n\nconst ALLOW: PermissionGateResult = Object.freeze({\n granted: true,\n locked: false,\n reason: null,\n unlockPlans: [],\n available: true,\n featureName: null,\n});\n\nconst ALLOW_GATE: PermissionGateFn = () => ALLOW;\n\nconst GATE_CONTEXT_KEY = Symbol.for('@vritti/quantum-ui/PermissionGate');\ntype GateRegistry = { [GATE_CONTEXT_KEY]?: React.Context<PermissionGateFn | null> };\nconst registry = globalThis as GateRegistry;\nregistry[GATE_CONTEXT_KEY] ??= createContext<PermissionGateFn | null>(null);\nconst PermissionGateContext = registry[GATE_CONTEXT_KEY];\n\nexport const PermissionGateProvider = PermissionGateContext.Provider;\n\n// The raw gate for mapping over collections; ALLOW-everything when no provider is mounted\nexport function usePermissionGate(): PermissionGateFn {\n return useContext(PermissionGateContext) ?? ALLOW_GATE;\n}\n\n// Total: no provider / no code resolves to ALLOW, so callers never branch on null\nexport function usePermission(code?: string): PermissionGateResult {\n const gate = useContext(PermissionGateContext);\n return code && gate ? gate(code) : ALLOW;\n}\n\n// The lock symbol for a locked control — plan locks show a warning lock, BU locks a red keyhole lock\nexport const PermissionLockIcon: React.FC<{ reason: PermissionLockReason | null; className?: string }> = ({\n reason,\n className,\n}) =>\n reason === 'SITE' ? (\n <LockKeyhole className={cn('text-destructive', className)} />\n ) : (\n <Lock className={cn('text-warning', className)} />\n );\n\n// Shared tooltip copy for locked controls — upsell for plan locks, restriction notice for BU locks\nexport function lockedTip({ reason, unlockPlans }: Pick<PermissionGateResult, 'reason' | 'unlockPlans'>): string {\n if (reason === 'SITE') return 'Not enabled for this site';\n return unlockPlans.length > 0 ? `Available in ${unlockPlans.join(', ')}` : 'Not included in your plan';\n}\n\n// Resolves a blocked control's heading + description, keyed off the resolved feature name when known\nfunction lockMessages(result: Pick<PermissionGateResult, 'granted' | 'reason' | 'unlockPlans' | 'featureName'>): {\n title: string;\n tip: string;\n} {\n const name = result.featureName;\n if (!result.granted) {\n return {\n title: name ? `${name} is restricted` : 'No access',\n tip: name ? `You don't have permission to view ${name}.` : \"You don't have permission to access this.\",\n };\n }\n if (result.reason === 'SITE') {\n return {\n title: name ? `${name} not enabled here` : 'Not available here',\n tip: name ? `${name} isn't enabled for this site.` : 'Not enabled for this site.',\n };\n }\n if (result.unlockPlans.length > 0) {\n const plans = result.unlockPlans.join(', ');\n return {\n title: name ? `Unlock ${name}` : 'Upgrade required',\n tip: name ? `${name} is available on ${plans}.` : `Available in ${plans}.`,\n };\n }\n return {\n title: name ? `Unlock ${name}` : 'Upgrade required',\n tip: name ? `${name} isn't included in your plan.` : 'Not included in your plan.',\n };\n}\n\nexport interface PermissionGateProps {\n permission?: string;\n children: React.ReactNode;\n fallback?: React.ReactNode | ((result: PermissionGateResult & { title: string; tip: string }) => React.ReactNode);\n}\n\n// Default fallback — a centered lock panel with the feature-specific restriction message\nconst DefaultLockFallback: React.FC<{ result: PermissionGateResult }> = ({ result }) => (\n <div className=\"flex flex-1 flex-col items-center justify-center gap-2 text-center\">\n <PermissionLockIcon reason={result.reason} className=\"size-10\" />\n <p className=\"max-w-sm text-sm text-muted-foreground\">{lockMessages(result).tip}</p>\n </div>\n);\n\n// Gates a subtree by permission code: children mount only when granted AND unlocked, else renders `fallback`\nexport const PermissionGate: React.FC<PermissionGateProps> = ({ permission, children, fallback }) => {\n const result = usePermission(permission);\n if (result.available) return <>{children}</>;\n if (fallback !== undefined)\n return <>{typeof fallback === 'function' ? fallback({ ...result, ...lockMessages(result) }) : fallback}</>;\n return <DefaultLockFallback result={result} />;\n};\n"],"names":[],"mappings":";;;;;;AAkBA,MAAM,KAAA,GAA8B,OAAO,MAAA,CAAO;AAAA,EAChD,OAAA,EAAS,IAAA;AAAA,EACT,MAAA,EAAQ,KAAA;AAAA,EACR,MAAA,EAAQ,IAAA;AAAA,EACR,aAAa,EAAC;AAAA,EACd,SAAA,EAAW,IAAA;AAAA,EACX,WAAA,EAAa;AACf,CAAC,CAAA;AAED,MAAM,aAA+B,MAAM,KAAA;AAE3C,MAAM,gBAAA,mBAAmB,MAAA,CAAO,GAAA,CAAI,mCAAmC,CAAA;AAEvE,MAAM,QAAA,GAAW,UAAA;AACjB,QAAA,CAAS,gBAAgB,CAAA,KAAM,aAAA,CAAuC,IAAI,CAAA;AAC1E,MAAM,qBAAA,GAAwB,SAAS,gBAAgB,CAAA;AAEhD,MAAM,yBAAyB,qBAAA,CAAsB;AAGrD,SAAS,iBAAA,GAAsC;AACpD,EAAA,OAAO,UAAA,CAAW,qBAAqB,CAAA,IAAK,UAAA;AAC9C;AAGO,SAAS,cAAc,IAAA,EAAqC;AACjE,EAAA,MAAM,IAAA,GAAO,WAAW,qBAAqB,CAAA;AAC7C,EAAA,OAAO,IAAA,IAAQ,IAAA,GAAO,IAAA,CAAK,IAAI,CAAA,GAAI,KAAA;AACrC;AAGO,MAAM,qBAA4F,CAAC;AAAA,EACxG,MAAA;AAAA,EACA;AACF,CAAA,KACE,WAAW,MAAA,mBACT,GAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAW,GAAG,kBAAA,EAAoB,SAAS,CAAA,EAAG,CAAA,uBAE1D,IAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,SAAS,CAAA,EAAG;AAI7C,SAAS,SAAA,CAAU,EAAE,MAAA,EAAQ,WAAA,EAAY,EAAiE;AAC/G,EAAA,IAAI,MAAA,KAAW,QAAQ,OAAO,2BAAA;AAC9B,EAAA,OAAO,WAAA,CAAY,SAAS,CAAA,GAAI,CAAA,aAAA,EAAgB,YAAY,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,GAAK,2BAAA;AAC7E;AAGA,SAAS,aAAa,MAAA,EAGpB;AACA,EAAA,MAAM,OAAO,MAAA,CAAO,WAAA;AACpB,EAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,IAAA,GAAO,CAAA,EAAG,IAAI,CAAA,cAAA,CAAA,GAAmB,WAAA;AAAA,MACxC,GAAA,EAAK,IAAA,GAAO,CAAA,kCAAA,EAAqC,IAAI,CAAA,CAAA,CAAA,GAAM;AAAA,KAC7D;AAAA,EACF;AACA,EAAA,IAAI,MAAA,CAAO,WAAW,MAAA,EAAQ;AAC5B,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,IAAA,GAAO,CAAA,EAAG,IAAI,CAAA,iBAAA,CAAA,GAAsB,oBAAA;AAAA,MAC3C,GAAA,EAAK,IAAA,GAAO,CAAA,EAAG,IAAI,CAAA,6BAAA,CAAA,GAAkC;AAAA,KACvD;AAAA,EACF;AACA,EAAA,IAAI,MAAA,CAAO,WAAA,CAAY,MAAA,GAAS,CAAA,EAAG;AACjC,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,IAAI,CAAA;AAC1C,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,IAAA,GAAO,CAAA,OAAA,EAAU,IAAI,CAAA,CAAA,GAAK,kBAAA;AAAA,MACjC,GAAA,EAAK,OAAO,CAAA,EAAG,IAAI,oBAAoB,KAAK,CAAA,CAAA,CAAA,GAAM,gBAAgB,KAAK,CAAA,CAAA;AAAA,KACzE;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,IAAA,GAAO,CAAA,OAAA,EAAU,IAAI,CAAA,CAAA,GAAK,kBAAA;AAAA,IACjC,GAAA,EAAK,IAAA,GAAO,CAAA,EAAG,IAAI,CAAA,6BAAA,CAAA,GAAkC;AAAA,GACvD;AACF;AASA,MAAM,mBAAA,GAAkE,CAAC,EAAE,MAAA,uBACzE,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,oEAAA,EACb,QAAA,EAAA;AAAA,kBAAA,GAAA,CAAC,kBAAA,EAAA,EAAmB,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAQ,WAAU,SAAA,EAAU,CAAA;AAAA,sBAC9D,GAAA,EAAA,EAAE,SAAA,EAAU,0CAA0C,QAAA,EAAA,YAAA,CAAa,MAAM,EAAE,GAAA,EAAI;AAAA,CAAA,EAClF,CAAA;AAIK,MAAM,iBAAgD,CAAC,EAAE,UAAA,EAAY,QAAA,EAAU,UAAS,KAAM;AACnG,EAAA,MAAM,MAAA,GAAS,cAAc,UAAU,CAAA;AACvC,EAAA,IAAI,MAAA,CAAO,SAAA,EAAW,uBAAO,GAAA,CAAA,QAAA,EAAA,EAAG,QAAA,EAAS,CAAA;AACzC,EAAA,IAAI,QAAA,KAAa,MAAA;AACf,IAAA,uBAAO,GAAA,CAAA,QAAA,EAAA,EAAG,QAAA,EAAA,OAAO,QAAA,KAAa,UAAA,GAAa,SAAS,EAAE,GAAG,MAAA,EAAQ,GAAG,YAAA,CAAa,MAAM,CAAA,EAAG,IAAI,QAAA,EAAS,CAAA;AACzG,EAAA,uBAAO,GAAA,CAAC,uBAAoB,MAAA,EAAgB,CAAA;AAC9C;;;;"}
1
+ {"version":3,"file":"PermissionGate.js","sources":["../lib/utils/services.ts","../lib/components/PermissionGate/PermissionGate.tsx"],"sourcesContent":["import type { ServiceCode } from '../types/catalog-resolver';\n\n// Human copy for each external service a feature can depend on. Adding a service means adding one entry\n// here — no lock surface branches on a specific service code.\nexport const SERVICE_LABELS: Record<ServiceCode, string> = {\n GITEA: 'a git organization',\n};\n\n// Joins the missing services into a phrase, e.g. \"a git organization\" / \"a git organization and X\"\nexport function serviceLabels(services: ServiceCode[]): string {\n const labels = services.map((service) => SERVICE_LABELS[service] ?? service);\n if (labels.length === 0) return 'a service';\n if (labels.length === 1) return labels[0];\n return `${labels.slice(0, -1).join(', ')} and ${labels[labels.length - 1]}`;\n}\n","import { Lock, LockKeyhole } from 'lucide-react';\nimport type React from 'react';\nimport { createContext, useContext } from 'react';\nimport { cn } from '../../../shadcn/utils';\nimport type { ServiceCode } from '../../types/catalog-resolver';\nimport { serviceLabels } from '../../utils/services';\n\nexport type PermissionLockReason = 'PLAN' | 'SITE' | 'SERVICE';\n\nexport interface PermissionGateResult {\n granted: boolean;\n locked: boolean;\n reason: PermissionLockReason | null;\n unlockPlans: string[];\n // Which external services the org still has to provision — only populated when reason is 'SERVICE'\n missingServices: ServiceCode[];\n available: boolean;\n featureName: string | null;\n}\n\nexport type PermissionGateFn = (code: string) => PermissionGateResult;\n\nconst ALLOW: PermissionGateResult = Object.freeze({\n granted: true,\n locked: false,\n reason: null,\n unlockPlans: [],\n missingServices: [],\n available: true,\n featureName: null,\n});\n\nconst ALLOW_GATE: PermissionGateFn = () => ALLOW;\n\nconst GATE_CONTEXT_KEY = Symbol.for('@vritti/quantum-ui/PermissionGate');\ntype GateRegistry = { [GATE_CONTEXT_KEY]?: React.Context<PermissionGateFn | null> };\nconst registry = globalThis as GateRegistry;\nregistry[GATE_CONTEXT_KEY] ??= createContext<PermissionGateFn | null>(null);\nconst PermissionGateContext = registry[GATE_CONTEXT_KEY];\n\nexport const PermissionGateProvider = PermissionGateContext.Provider;\n\n// The raw gate for mapping over collections; ALLOW-everything when no provider is mounted\nexport function usePermissionGate(): PermissionGateFn {\n return useContext(PermissionGateContext) ?? ALLOW_GATE;\n}\n\n// Total: no provider / no code resolves to ALLOW, so callers never branch on null\nexport function usePermission(code?: string): PermissionGateResult {\n const gate = useContext(PermissionGateContext);\n return code && gate ? gate(code) : ALLOW;\n}\n\n// The lock symbol for a locked control — plan locks show a warning lock, BU locks a red keyhole lock,\n// service locks a red lock (blocked until the org provisions it, not an entitlement the user can buy)\nexport const PermissionLockIcon: React.FC<{ reason: PermissionLockReason | null; className?: string }> = ({\n reason,\n className,\n}) => {\n switch (reason) {\n case 'SITE':\n return <LockKeyhole className={cn('text-destructive', className)} />;\n case 'SERVICE':\n return <Lock className={cn('text-destructive', className)} />;\n default:\n return <Lock className={cn('text-warning', className)} />;\n }\n};\n\n// Shared tooltip copy for locked controls — upsell for plan locks, restriction notice for BU locks,\n// setup notice for service locks\nexport function lockedTip({\n reason,\n unlockPlans,\n missingServices = [],\n}: Pick<PermissionGateResult, 'reason' | 'unlockPlans'> &\n Partial<Pick<PermissionGateResult, 'missingServices'>>): string {\n switch (reason) {\n case 'SITE':\n return 'Not enabled for this site';\n case 'SERVICE':\n return `Requires ${serviceLabels(missingServices)}`;\n default:\n return unlockPlans.length > 0 ? `Available in ${unlockPlans.join(', ')}` : 'Not included in your plan';\n }\n}\n\n// Resolves a blocked control's heading + description, keyed off the resolved feature name when known\nfunction lockMessages(\n result: Pick<PermissionGateResult, 'granted' | 'reason' | 'unlockPlans' | 'featureName'> &\n Partial<Pick<PermissionGateResult, 'missingServices'>>,\n): {\n title: string;\n tip: string;\n} {\n const name = result.featureName;\n if (!result.granted) {\n return {\n title: name ? `${name} is restricted` : 'No access',\n tip: name ? `You don't have permission to view ${name}.` : \"You don't have permission to access this.\",\n };\n }\n switch (result.reason) {\n case 'SITE':\n return {\n title: name ? `${name} not enabled here` : 'Not available here',\n tip: name ? `${name} isn't enabled for this site.` : 'Not enabled for this site.',\n };\n case 'SERVICE': {\n const needs = serviceLabels(result.missingServices ?? []);\n return {\n title: 'Setup required',\n tip: name ? `${name} needs ${needs}. Set it up to continue.` : `This needs ${needs}. Set it up to continue.`,\n };\n }\n default: {\n if (result.unlockPlans.length > 0) {\n const plans = result.unlockPlans.join(', ');\n return {\n title: name ? `Unlock ${name}` : 'Upgrade required',\n tip: name ? `${name} is available on ${plans}.` : `Available in ${plans}.`,\n };\n }\n return {\n title: name ? `Unlock ${name}` : 'Upgrade required',\n tip: name ? `${name} isn't included in your plan.` : 'Not included in your plan.',\n };\n }\n }\n}\n\nexport interface PermissionGateProps {\n permission?: string;\n children: React.ReactNode;\n fallback?: React.ReactNode | ((result: PermissionGateResult & { title: string; tip: string }) => React.ReactNode);\n}\n\n// Default fallback — a centered lock panel with the feature-specific restriction message\nconst DefaultLockFallback: React.FC<{ result: PermissionGateResult }> = ({ result }) => (\n <div className=\"flex flex-1 flex-col items-center justify-center gap-2 text-center\">\n <PermissionLockIcon reason={result.reason} className=\"size-10\" />\n <p className=\"max-w-sm text-sm text-muted-foreground\">{lockMessages(result).tip}</p>\n </div>\n);\n\n// Gates a subtree by permission code: children mount only when granted AND unlocked, else renders `fallback`\nexport const PermissionGate: React.FC<PermissionGateProps> = ({ permission, children, fallback }) => {\n const result = usePermission(permission);\n if (result.available) return <>{children}</>;\n if (fallback !== undefined)\n return <>{typeof fallback === 'function' ? fallback({ ...result, ...lockMessages(result) }) : fallback}</>;\n return <DefaultLockFallback result={result} />;\n};\n"],"names":[],"mappings":"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"}