vccs 0.1.0 → 0.2.0
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.
- package/dist/cartesian/funnel/Funnel.d.ts +2 -0
- package/dist/cartesian/funnel/index.d.ts +2 -0
- package/dist/cartesian/funnel/type.d.ts +74 -5
- package/dist/cartesian/index.d.ts +1 -0
- package/dist/chart/FunnelChart.d.ts +1 -0
- package/dist/chart/index.d.ts +1 -0
- package/dist/es/animation/Animate.mjs +48 -22
- package/dist/es/cartesian/GraphicalItemClipPath.mjs +16 -15
- package/dist/es/cartesian/area/ActivePoints.mjs +44 -40
- package/dist/es/cartesian/area/Area.mjs +42 -31
- package/dist/es/cartesian/area/ClipRect.mjs +79 -58
- package/dist/es/cartesian/area/RenderArea.mjs +142 -108
- package/dist/es/cartesian/area/hooks/useArea.mjs +71 -47
- package/dist/es/cartesian/area/type.mjs +11 -11
- package/dist/es/cartesian/area/utils.mjs +69 -49
- package/dist/es/cartesian/axis/XAxis.mjs +87 -73
- package/dist/es/cartesian/axis/YAxis.mjs +67 -56
- package/dist/es/cartesian/bar/Bar.mjs +93 -71
- package/dist/es/cartesian/bar/components/BarBackground.mjs +22 -19
- package/dist/es/cartesian/bar/components/BarRectangles.mjs +117 -80
- package/dist/es/cartesian/bar/hooks/useBar.mjs +49 -37
- package/dist/es/cartesian/bar/type.mjs +9 -9
- package/dist/es/cartesian/bar/utils.mjs +97 -70
- package/dist/es/cartesian/cartesian-axis/CartesianAxis.mjs +165 -115
- package/dist/es/cartesian/cartesian-grid/Background.mjs +19 -16
- package/dist/es/cartesian/cartesian-grid/CartesianGrid.mjs +116 -97
- package/dist/es/cartesian/cartesian-grid/HorizontalGridLines.mjs +24 -23
- package/dist/es/cartesian/cartesian-grid/HorizontalStripes.mjs +24 -24
- package/dist/es/cartesian/cartesian-grid/VerticalGridLines.mjs +23 -22
- package/dist/es/cartesian/cartesian-grid/VerticalStripes.mjs +24 -24
- package/dist/es/cartesian/cartesian-grid/const.mjs +317 -10
- package/dist/es/cartesian/cartesian-grid/utils.mjs +18 -13
- package/dist/es/cartesian/error-bar/ErrorBar.mjs +111 -83
- package/dist/es/cartesian/error-bar/ErrorBarContext.mjs +13 -12
- package/dist/es/cartesian/funnel/Funnel.mjs +177 -0
- package/dist/es/cartesian/funnel/type.mjs +80 -0
- package/dist/es/cartesian/funnel/utils.mjs +102 -0
- package/dist/es/cartesian/line/ActivePoints.mjs +45 -41
- package/dist/es/cartesian/line/Line.mjs +41 -37
- package/dist/es/cartesian/line/StaticLine.mjs +191 -122
- package/dist/es/cartesian/line/hooks/useLine.mjs +60 -44
- package/dist/es/cartesian/line/type.mjs +11 -11
- package/dist/es/cartesian/line/utils.mjs +27 -26
- package/dist/es/cartesian/reference-area/ReferenceArea.mjs +86 -69
- package/dist/es/cartesian/reference-line/ReferenceLine.mjs +99 -77
- package/dist/es/cartesian/scatter/Scatter.mjs +168 -140
- package/dist/es/cartesian/scatter/hooks/useScatter.mjs +18 -14
- package/dist/es/cartesian/useNeedsClip.mjs +18 -9
- package/dist/es/cartesian/utils/get-ticks.mjs +103 -68
- package/dist/es/cartesian/z-axis/ZAxis.mjs +30 -28
- package/dist/es/chart/AreaChart.mjs +5 -5
- package/dist/es/chart/BarChart.mjs +5 -5
- package/dist/es/chart/ComposedChart.mjs +5 -5
- package/dist/es/chart/FunnelChart.mjs +11 -0
- package/dist/es/chart/LegendPortalContext.mjs +3 -3
- package/dist/es/chart/LineChart.mjs +5 -5
- package/dist/es/chart/PieChart.mjs +5 -5
- package/dist/es/chart/RadarChart.mjs +5 -5
- package/dist/es/chart/RadialBarChart.mjs +5 -5
- package/dist/es/chart/RechartsWrapper.mjs +111 -88
- package/dist/es/chart/ScatterChart.mjs +5 -5
- package/dist/es/chart/Surface.mjs +3 -3
- package/dist/es/chart/Surface.vue_vue_type_script_setup_true_lang.mjs +51 -45
- package/dist/es/chart/TooltipPortalContext.mjs +3 -3
- package/dist/es/chart/const.mjs +2 -2
- package/dist/es/chart/generateCategoricalChart.mjs +97 -88
- package/dist/es/chart/provideClipPathId.mjs +12 -7
- package/dist/es/components/Cell.mjs +16 -4
- package/dist/es/components/Text.mjs +3 -3
- package/dist/es/components/Text.vue_vue_type_script_setup_true_lang.mjs +106 -69
- package/dist/es/components/Tooltip.mjs +274 -199
- package/dist/es/components/label/Label.mjs +30 -26
- package/dist/es/components/label/LabelList.mjs +45 -39
- package/dist/es/components/label/types.mjs +8 -5
- package/dist/es/components/label/utils.mjs +194 -162
- package/dist/es/components/legend/Legend.mjs +82 -71
- package/dist/es/components/legend/LegendSymbol.mjs +40 -38
- package/dist/es/components/legend/hooks/useLegend.mjs +66 -46
- package/dist/es/components/legend/hooks/useLegendContent.mjs +52 -31
- package/dist/es/components/legend/type.mjs +2 -2
- package/dist/es/components/legend/utils.mjs +19 -11
- package/dist/es/components/utils.mjs +35 -22
- package/dist/es/container/ClipPath.mjs +14 -14
- package/dist/es/container/Layer.mjs +9 -7
- package/dist/es/container/ResponsiveContainer.mjs +3 -3
- package/dist/es/container/ResponsiveContainer.vue_vue_type_script_setup_true_lang.mjs +109 -77
- package/dist/es/container/Surface.mjs +23 -19
- package/dist/es/container/useSizeContext.mjs +3 -3
- package/dist/es/context/ChartDataContextProvider.mjs +19 -13
- package/dist/es/context/PanoramaContextProvider.mjs +15 -10
- package/dist/es/context/accessibilityContext.mjs +3 -3
- package/dist/es/context/cartesianLabelListContext.mjs +3 -3
- package/dist/es/context/chartLayoutContext.mjs +33 -30
- package/dist/es/context/cursorLayerContext.mjs +3 -3
- package/dist/es/context/graphicalLayerContext.mjs +3 -3
- package/dist/es/context/labelLayerContext.mjs +3 -3
- package/dist/es/context/polarLabelViewBoxContext.mjs +5 -5
- package/dist/es/context/useTooltipAxis.mjs +14 -12
- package/dist/es/events/useChartSynchronisation.mjs +91 -66
- package/dist/es/hooks/useIsAnimating.mjs +28 -0
- package/dist/es/hooks/useSetupGraphicalItem.mjs +52 -43
- package/dist/es/index.mjs +46 -42
- package/dist/es/polar/pie/Pie.mjs +131 -115
- package/dist/es/polar/pie/type.mjs +6 -6
- package/dist/es/polar/radar/PolarAngleAxis.mjs +103 -84
- package/dist/es/polar/radar/PolarGrid.mjs +72 -59
- package/dist/es/polar/radar/PolarRadiusAxis.mjs +90 -65
- package/dist/es/polar/radar/Radar.mjs +181 -145
- package/dist/es/polar/radial-bar/RadialBar.mjs +161 -140
- package/dist/es/polar/radial-bar/type.mjs +9 -9
- package/dist/es/shape/Cross.mjs +11 -10
- package/dist/es/shape/Curve.mjs +69 -43
- package/dist/es/shape/Dot.mjs +12 -11
- package/dist/es/shape/Rectangle.mjs +41 -26
- package/dist/es/shape/Sector.mjs +103 -75
- package/dist/es/shape/Symbols.mjs +45 -34
- package/dist/es/shape/Trapezoid.mjs +52 -0
- package/dist/es/state/ReportChartProps.mjs +21 -20
- package/dist/es/state/ReportMainChartProps.mjs +26 -21
- package/dist/es/state/ReportPolarOptions.mjs +23 -22
- package/dist/es/state/SetGraphicalItem.mjs +42 -27
- package/dist/es/state/SetLegendPayload.mjs +17 -13
- package/dist/es/state/SetTooltipEntrySettings.mjs +14 -12
- package/dist/es/state/brushSlice.mjs +12 -8
- package/dist/es/state/cartesianAxisSlice.mjs +23 -17
- package/dist/es/state/chartDataSlice.mjs +18 -13
- package/dist/es/state/externalEventsMiddleware.mjs +25 -15
- package/dist/es/state/graphicalItemsSlice.mjs +29 -25
- package/dist/es/state/hooks.mjs +4 -3
- package/dist/es/state/keyboardEventsMiddleware.mjs +50 -42
- package/dist/es/state/layoutSlice.mjs +18 -12
- package/dist/es/state/legendSlice.mjs +19 -14
- package/dist/es/state/mouseEventsMiddleware.mjs +31 -24
- package/dist/es/state/optionsSlice.mjs +14 -11
- package/dist/es/state/polarAxisSlice.mjs +15 -13
- package/dist/es/state/polarOptionsSlice.mjs +8 -6
- package/dist/es/state/reduxDevtoolsJsonStringifyReplacer.mjs +5 -3
- package/dist/es/state/referenceElementsSlice.mjs +21 -19
- package/dist/es/state/rootPropsSlice.mjs +20 -9
- package/dist/es/state/selectors/areaSelectors.mjs +65 -55
- package/dist/es/state/selectors/axisSelectors.mjs +755 -569
- package/dist/es/state/selectors/barSelectors.mjs +225 -162
- package/dist/es/state/selectors/brushSelectors.mjs +15 -14
- package/dist/es/state/selectors/combiners/combineActiveLabel.mjs +6 -5
- package/dist/es/state/selectors/combiners/combineActiveTooltipIndex.mjs +36 -27
- package/dist/es/state/selectors/combiners/combineAxisRangeWithReverse.mjs +5 -3
- package/dist/es/state/selectors/combiners/combineCoordinateForDefaultIndex.mjs +13 -11
- package/dist/es/state/selectors/combiners/combineTooltipInteractionState.mjs +26 -21
- package/dist/es/state/selectors/combiners/combineTooltipPayloadConfigurations.mjs +10 -6
- package/dist/es/state/selectors/common.mjs +2 -2
- package/dist/es/state/selectors/containerSelectors.mjs +5 -2
- package/dist/es/state/selectors/dataSelectors.mjs +28 -9
- package/dist/es/state/selectors/funnelSelectors.mjs +38 -0
- package/dist/es/state/selectors/legendSelectors.mjs +7 -6
- package/dist/es/state/selectors/lineSelectors.mjs +54 -47
- package/dist/es/state/selectors/pickAxisId.mjs +2 -2
- package/dist/es/state/selectors/pickAxisType.mjs +2 -2
- package/dist/es/state/selectors/pieSelectors.mjs +116 -81
- package/dist/es/state/selectors/polarAxisSelectors.mjs +113 -94
- package/dist/es/state/selectors/polarGridSelectors.mjs +13 -11
- package/dist/es/state/selectors/polarScaleSelectors.mjs +49 -46
- package/dist/es/state/selectors/polarSelectors.mjs +79 -62
- package/dist/es/state/selectors/radarSelectors.mjs +111 -91
- package/dist/es/state/selectors/radialBarSelectors.mjs +230 -183
- package/dist/es/state/selectors/rootPropsSelectors.mjs +11 -5
- package/dist/es/state/selectors/scatterSelectors.mjs +111 -95
- package/dist/es/state/selectors/selectActivePropsFromChartPointer.mjs +19 -17
- package/dist/es/state/selectors/selectAllAxes.mjs +8 -3
- package/dist/es/state/selectors/selectChartOffset.mjs +59 -50
- package/dist/es/state/selectors/selectChartOffsetInternal.mjs +55 -44
- package/dist/es/state/selectors/selectTooltipEventType.mjs +15 -14
- package/dist/es/state/selectors/selectTooltipPayloadSearcher.mjs +3 -3
- package/dist/es/state/selectors/selectTooltipSettings.mjs +2 -2
- package/dist/es/state/selectors/selectTooltipState.mjs +2 -2
- package/dist/es/state/selectors/selectors.mjs +94 -75
- package/dist/es/state/selectors/tooltipSelectors.mjs +253 -204
- package/dist/es/state/selectors/touchSelectors.mjs +17 -14
- package/dist/es/state/store.mjs +46 -46
- package/dist/es/state/tooltipSlice.mjs +64 -37
- package/dist/es/state/touchEventsMiddleware.mjs +35 -29
- package/dist/es/state/utils/useReportScale.mjs +16 -13
- package/dist/es/synchronisation/syncSelectors.mjs +3 -3
- package/dist/es/synchronisation/useChartSynchronisation.mjs +33 -19
- package/dist/es/types/event.mjs +164 -2
- package/dist/es/utils/ReduceCSSCalc.mjs +81 -49
- package/dist/es/utils/VueUtils.mjs +35 -14
- package/dist/es/utils/attrs.mjs +43 -26
- package/dist/es/utils/cartesian.mjs +47 -15
- package/dist/es/utils/chart.mjs +298 -197
- package/dist/es/utils/const.mjs +30 -2
- package/dist/es/utils/createContext.mjs +28 -9
- package/dist/es/utils/data-utils.mjs +9 -8
- package/dist/es/utils/data.mjs +35 -21
- package/dist/es/utils/events.mjs +5 -3
- package/dist/es/utils/getLinearRegression.mjs +28 -11
- package/dist/es/utils/grid.mjs +20 -5
- package/dist/es/utils/isDomainSpecifiedByUser.mjs +105 -54
- package/dist/es/utils/legend.mjs +13 -12
- package/dist/es/utils/log.mjs +10 -7
- package/dist/es/utils/payload/getUniqPayload.mjs +6 -4
- package/dist/es/utils/polar.mjs +37 -30
- package/dist/es/utils/props.mjs +16 -10
- package/dist/es/utils/resolveDefaultProps.mjs +23 -4
- package/dist/es/utils/scale/getNiceTickValues.mjs +127 -49
- package/dist/es/utils/scale/utils/arithmetic.mjs +49 -19
- package/dist/es/utils/scale/utils/utils.mjs +43 -24
- package/dist/es/utils/style.mjs +24 -13
- package/dist/es/utils/tick.mjs +34 -23
- package/dist/es/utils/tooltip/translate.mjs +63 -49
- package/dist/es/utils/validate.mjs +40 -29
- package/dist/hooks/useIsAnimating.d.ts +14 -0
- package/dist/shape/Trapezoid.d.ts +31 -0
- package/dist/shape/index.d.ts +1 -0
- package/dist/state/graphicalItemsSlice.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,18 +1,39 @@
|
|
|
1
|
-
import { FilteredElementKeyMap
|
|
2
|
-
import { EventKeys
|
|
1
|
+
import { FilteredElementKeyMap, SVGElementPropKeys } from "../cartesian/cartesian-grid/const.mjs";
|
|
2
|
+
import { EventKeys } from "../types/event.mjs";
|
|
3
3
|
//#region src/utils/VueUtils.ts
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Checks if the property is valid to spread onto an SVG element or onto a specific component
|
|
6
|
+
* @param {unknown} property property value currently being compared
|
|
7
|
+
* @param {string} key property key currently being compared
|
|
8
|
+
* @param {boolean} includeEvents if events are included in spreadable props
|
|
9
|
+
* @param {boolean} svgElementType checks against map of SVG element types to attributes
|
|
10
|
+
* @returns {boolean} is prop valid
|
|
11
|
+
*/
|
|
12
|
+
function isValidSpreadableProp(property, key, includeEvents, svgElementType) {
|
|
13
|
+
/**
|
|
14
|
+
* If the svg element type is explicitly included, check against the filtered element key map
|
|
15
|
+
* to determine if there are attributes that should only exist on that element type.
|
|
16
|
+
* @todo Add an internal cjs version of https://github.com/wooorm/svg-element-attributes for full coverage.
|
|
17
|
+
*/
|
|
18
|
+
const matchingElementTypeKeys = (svgElementType && FilteredElementKeyMap?.[svgElementType]) ?? [];
|
|
19
|
+
return key.startsWith("data-") || typeof property !== "function" && (svgElementType && matchingElementTypeKeys.includes(key) || SVGElementPropKeys.includes(key)) || includeEvents && EventKeys.includes(key);
|
|
7
20
|
}
|
|
8
|
-
function
|
|
9
|
-
if (!
|
|
10
|
-
|
|
11
|
-
if (typeof
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
21
|
+
function filterProps(props, includeEvents, svgElementType) {
|
|
22
|
+
if (!props || typeof props === "function" || typeof props === "boolean") return null;
|
|
23
|
+
const inputProps = props;
|
|
24
|
+
if (typeof inputProps !== "object" && typeof inputProps !== "function") return null;
|
|
25
|
+
const out = {};
|
|
26
|
+
/**
|
|
27
|
+
* Props are blindly spread onto SVG elements. This loop filters out properties that we don't want to spread.
|
|
28
|
+
* Items filtered out are as follows:
|
|
29
|
+
* - functions in properties that are SVG attributes (functions are included when includeEvents is true)
|
|
30
|
+
* - props that are SVG attributes but don't matched the passed svgElementType
|
|
31
|
+
* - any prop that is not in SVGElementPropKeys (or in EventKeys if includeEvents is true)
|
|
32
|
+
*/
|
|
33
|
+
Object.keys(inputProps).forEach((key) => {
|
|
34
|
+
if (isValidSpreadableProp(inputProps?.[key], key, includeEvents, svgElementType)) out[key] = inputProps[key];
|
|
35
|
+
});
|
|
36
|
+
return out;
|
|
16
37
|
}
|
|
17
38
|
//#endregion
|
|
18
|
-
export {
|
|
39
|
+
export { filterProps };
|
package/dist/es/utils/attrs.mjs
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { isSsr
|
|
1
|
+
import { isSsr } from "./validate.mjs";
|
|
2
2
|
//#region src/utils/attrs.ts
|
|
3
|
-
var
|
|
3
|
+
var stringCache = {
|
|
4
4
|
widthCache: {},
|
|
5
5
|
cacheCount: 0
|
|
6
|
-
}
|
|
6
|
+
};
|
|
7
|
+
var MAX_CACHE_NUM = 2e3;
|
|
8
|
+
var SPAN_STYLE = {
|
|
7
9
|
position: "absolute",
|
|
8
10
|
top: "-20000px",
|
|
9
11
|
left: 0,
|
|
@@ -11,36 +13,51 @@ var t = {
|
|
|
11
13
|
margin: 0,
|
|
12
14
|
border: "none",
|
|
13
15
|
whiteSpace: "pre"
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
};
|
|
17
|
+
var MEASUREMENT_SPAN_ID = "v-charts_measurement_span";
|
|
18
|
+
function removeInvalidKeys(obj) {
|
|
19
|
+
const copyObj = { ...obj };
|
|
20
|
+
Object.keys(copyObj).forEach((key) => {
|
|
21
|
+
if (!copyObj[key]) delete copyObj[key];
|
|
22
|
+
});
|
|
23
|
+
return copyObj;
|
|
20
24
|
}
|
|
21
|
-
function
|
|
22
|
-
if (
|
|
25
|
+
function getStringSize(text, style = {}) {
|
|
26
|
+
if (text === void 0 || text === null || isSsr) return {
|
|
23
27
|
width: 0,
|
|
24
28
|
height: 0
|
|
25
29
|
};
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
const copyStyle = removeInvalidKeys(style);
|
|
31
|
+
const cacheKey = JSON.stringify({
|
|
32
|
+
text,
|
|
33
|
+
copyStyle
|
|
29
34
|
});
|
|
30
|
-
if (
|
|
35
|
+
if (stringCache.widthCache[cacheKey]) return stringCache.widthCache[cacheKey];
|
|
31
36
|
try {
|
|
32
|
-
let
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
+
let measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);
|
|
38
|
+
if (!measurementSpan) {
|
|
39
|
+
measurementSpan = document.createElement("span");
|
|
40
|
+
measurementSpan.setAttribute("id", MEASUREMENT_SPAN_ID);
|
|
41
|
+
measurementSpan.setAttribute("aria-hidden", "true");
|
|
42
|
+
document.body.appendChild(measurementSpan);
|
|
43
|
+
}
|
|
44
|
+
const measurementSpanStyle = {
|
|
45
|
+
...SPAN_STYLE,
|
|
46
|
+
...copyStyle
|
|
37
47
|
};
|
|
38
|
-
Object.assign(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
48
|
+
Object.assign(measurementSpan.style, measurementSpanStyle);
|
|
49
|
+
measurementSpan.textContent = `${text}`;
|
|
50
|
+
const rect = measurementSpan.getBoundingClientRect();
|
|
51
|
+
const result = {
|
|
52
|
+
width: rect.width,
|
|
53
|
+
height: rect.height
|
|
42
54
|
};
|
|
43
|
-
|
|
55
|
+
stringCache.widthCache[cacheKey] = result;
|
|
56
|
+
if (++stringCache.cacheCount > MAX_CACHE_NUM) {
|
|
57
|
+
stringCache.cacheCount = 0;
|
|
58
|
+
stringCache.widthCache = {};
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
44
61
|
} catch {
|
|
45
62
|
return {
|
|
46
63
|
width: 0,
|
|
@@ -49,4 +66,4 @@ function o(o, s = {}) {
|
|
|
49
66
|
}
|
|
50
67
|
}
|
|
51
68
|
//#endregion
|
|
52
|
-
export {
|
|
69
|
+
export { getStringSize };
|
|
@@ -1,22 +1,54 @@
|
|
|
1
|
-
import { isVisible
|
|
2
|
-
import { getEveryNthWithCondition
|
|
1
|
+
import { isVisible } from "./validate.mjs";
|
|
2
|
+
import { getEveryNthWithCondition } from "./tick.mjs";
|
|
3
3
|
//#region src/utils/cartesian.ts
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Normalizes the angle so that 0 <= angle < 180.
|
|
6
|
+
* @param {number} angle Angle in degrees.
|
|
7
|
+
* @return {number} the normalized angle with a value of at least 0 and never greater or equal to 180.
|
|
8
|
+
*/
|
|
9
|
+
function normalizeAngle(angle) {
|
|
10
|
+
return (angle % 180 + 180) % 180;
|
|
6
11
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Calculates the width of the largest horizontal line that fits inside a rectangle that is displayed at an angle.
|
|
14
|
+
* @param {object} size Width and height of the text in a horizontal position.
|
|
15
|
+
* @param {number} angle Angle in degrees in which the text is displayed.
|
|
16
|
+
* @return {number} The width of the largest horizontal line that fits inside a rectangle that is displayed at an angle.
|
|
17
|
+
*/
|
|
18
|
+
function getAngledRectangleWidth({ width, height }, angle = 0) {
|
|
19
|
+
const angleRadians = normalizeAngle(angle) * Math.PI / 180;
|
|
20
|
+
const angleThreshold = Math.atan(height / width);
|
|
21
|
+
const angledWidth = angleRadians > angleThreshold && angleRadians < Math.PI - angleThreshold ? height / Math.sin(angleRadians) : width / Math.cos(angleRadians);
|
|
22
|
+
return Math.abs(angledWidth);
|
|
10
23
|
}
|
|
11
|
-
function
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
24
|
+
function getEquidistantTicks(sign, boundaries, getTickSize, ticks, minTickGap) {
|
|
25
|
+
const result = (ticks || []).slice();
|
|
26
|
+
const { start: initialStart, end } = boundaries;
|
|
27
|
+
let index = 0;
|
|
28
|
+
let stepsize = 1;
|
|
29
|
+
let start = initialStart;
|
|
30
|
+
while (stepsize <= result.length) {
|
|
31
|
+
const entry = ticks?.[index];
|
|
32
|
+
if (entry === void 0) return getEveryNthWithCondition(ticks, stepsize) ?? [];
|
|
33
|
+
const i = index;
|
|
34
|
+
let size;
|
|
35
|
+
const getSize = () => {
|
|
36
|
+
if (size === void 0) size = getTickSize(entry, i);
|
|
37
|
+
return size;
|
|
38
|
+
};
|
|
39
|
+
const tickCoord = entry.coordinate;
|
|
40
|
+
const isShow = index === 0 || isVisible(sign, tickCoord, getSize, start, end);
|
|
41
|
+
if (!isShow) {
|
|
42
|
+
index = 0;
|
|
43
|
+
start = initialStart;
|
|
44
|
+
stepsize += 1;
|
|
45
|
+
}
|
|
46
|
+
if (isShow) {
|
|
47
|
+
start = tickCoord + sign * (getSize() / 2 + minTickGap);
|
|
48
|
+
index += stepsize;
|
|
49
|
+
}
|
|
18
50
|
}
|
|
19
51
|
return [];
|
|
20
52
|
}
|
|
21
53
|
//#endregion
|
|
22
|
-
export {
|
|
54
|
+
export { getAngledRectangleWidth, getEquidistantTicks };
|