@primeui/vue-chart 0.0.1-alpha.1 → 1.0.0-rc.1

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 (180) hide show
  1. package/LICENSE.md +35 -0
  2. package/README.md +64 -0
  3. package/dist/CartesianRenderer.rich.spec.d.ts +1 -0
  4. package/dist/Chart.features.spec.d.ts +1 -0
  5. package/dist/Chart.interactions.spec.d.ts +1 -0
  6. package/dist/Chart.pointEvents.spec.d.ts +1 -0
  7. package/dist/Chart.vue.d.ts +5 -1
  8. package/dist/ChartCanvas.mjs +15 -14
  9. package/dist/ChartCanvas.pipeline.spec.d.ts +1 -0
  10. package/dist/ChartCanvas.vue.d.ts +8 -4
  11. package/dist/ChartGroup.sync.spec.d.ts +1 -0
  12. package/dist/ChartLegend.spec.d.ts +1 -0
  13. package/dist/ChartSvg.containers.spec.d.ts +1 -0
  14. package/dist/ChartSvg.declarative.spec.d.ts +1 -0
  15. package/dist/ChartSvg.export-menu.spec.d.ts +1 -0
  16. package/dist/ChartSvg.hover.spec.d.ts +1 -0
  17. package/dist/ChartSvg.mjs +15 -14
  18. package/dist/ChartSvg.renderers.spec.d.ts +1 -0
  19. package/dist/ChartSvg.vue.d.ts +8 -4
  20. package/dist/ColorLegendRenderer.branches.spec.d.ts +1 -0
  21. package/dist/ColorLegendRenderer.spec.d.ts +1 -0
  22. package/dist/LegendRenderer.spec.d.ts +1 -0
  23. package/dist/NavigatorRenderer.spec.d.ts +1 -0
  24. package/dist/RadialHeatmap.rich.spec.d.ts +1 -0
  25. package/dist/TooltipRenderer.spec.d.ts +1 -0
  26. package/dist/{chunk-6S4JMPKC.mjs → chunks/chunk-2NZ3PUWW.mjs} +2 -2
  27. package/dist/{chunk-RRHYGSK6.mjs → chunks/chunk-2TOEQNJ6.mjs} +2 -2
  28. package/dist/{chunk-GX2MK6VT.mjs → chunks/chunk-36DHPBYP.mjs} +25 -23
  29. package/dist/{chunk-RSTIA3KM.mjs → chunks/chunk-3DINEX6C.mjs} +2 -1
  30. package/dist/{chunk-PJVOZSPF.mjs → chunks/chunk-3JA5JAHF.mjs} +2 -2
  31. package/dist/{chunk-KOWFD2AE.mjs → chunks/chunk-3PJULFR5.mjs} +22 -21
  32. package/dist/chunks/chunk-3X27K5XC.mjs +236 -0
  33. package/dist/chunks/chunk-3XOLEGDL.mjs +182 -0
  34. package/dist/{chunk-372K2BMN.mjs → chunks/chunk-4EU72IBK.mjs} +71 -23
  35. package/dist/{chunk-PSSXPTLQ.mjs → chunks/chunk-4SLSYRNY.mjs} +6 -6
  36. package/dist/{chunk-4NJ2PSHV.mjs → chunks/chunk-5ZLVNQ2L.mjs} +7 -4
  37. package/dist/{chunk-O6L3PNFC.mjs → chunks/chunk-6Z4MZIJI.mjs} +2 -2
  38. package/dist/chunks/chunk-7EZEZMGG.mjs +22 -0
  39. package/dist/chunks/chunk-ADAGGXFG.mjs +166 -0
  40. package/dist/{chunk-YRKAI2R2.mjs → chunks/chunk-AKMQHU5T.mjs} +15 -14
  41. package/dist/{chunk-ZRCOVQQM.mjs → chunks/chunk-BSROML7P.mjs} +2 -2
  42. package/dist/{chunk-WYV2MHP6.mjs → chunks/chunk-CGFPDWB4.mjs} +1 -1
  43. package/dist/{chunk-4CRHCZV3.mjs → chunks/chunk-CMJXLIEY.mjs} +125 -9
  44. package/dist/{chunk-42J32DPD.mjs → chunks/chunk-CRIB3I3L.mjs} +1 -1
  45. package/dist/{chunk-WKSQR6L5.mjs → chunks/chunk-CW2KYVYO.mjs} +31 -8
  46. package/dist/{chunk-644ROAHU.mjs → chunks/chunk-DDRSIMLE.mjs} +33 -12
  47. package/dist/{chunk-32XIRBZ7.mjs → chunks/chunk-DXKAPWMO.mjs} +2 -2
  48. package/dist/{chunk-44BAFHPK.mjs → chunks/chunk-EWDMF46D.mjs} +10 -5
  49. package/dist/{chunk-E2U4W5FW.mjs → chunks/chunk-F7EK5D6J.mjs} +11 -11
  50. package/dist/{chunk-ZHFL3RYO.mjs → chunks/chunk-GE2Y2FHS.mjs} +6 -6
  51. package/dist/{chunk-AAX7FOW3.mjs → chunks/chunk-GIDIMIWE.mjs} +11 -11
  52. package/dist/{chunk-NLXOJSKK.mjs → chunks/chunk-GLFXRR7N.mjs} +29 -5
  53. package/dist/{chunk-W5M3BR6N.mjs → chunks/chunk-GV3CY6CQ.mjs} +1 -1
  54. package/dist/{chunk-CDXF6ZTL.mjs → chunks/chunk-HH5FUUXX.mjs} +1 -1
  55. package/dist/{chunk-RQURY2H3.mjs → chunks/chunk-HHZFGQN2.mjs} +2 -2
  56. package/dist/{chunk-2D3PWFR2.mjs → chunks/chunk-HVLFOABV.mjs} +4 -4
  57. package/dist/chunks/chunk-I2BWSDNR.mjs +832 -0
  58. package/dist/{chunk-MDA22SIZ.mjs → chunks/chunk-IFZSHQDZ.mjs} +2 -2
  59. package/dist/chunks/chunk-IRGQNA5W.mjs +289 -0
  60. package/dist/chunks/chunk-JBWL3G7O.mjs +86 -0
  61. package/dist/{chunk-56NMBNNX.mjs → chunks/chunk-JPKNWLLP.mjs} +3 -3
  62. package/dist/{chunk-XBDNMPF7.mjs → chunks/chunk-JVH4MDKX.mjs} +2 -2
  63. package/dist/chunks/chunk-KNNYJD4D.mjs +14 -0
  64. package/dist/{chunk-AUI5R4DA.mjs → chunks/chunk-L73MEG22.mjs} +2 -2
  65. package/dist/{chunk-K326BBF7.mjs → chunks/chunk-L74BEYTD.mjs} +38 -17
  66. package/dist/{chunk-DYVFVVTO.mjs → chunks/chunk-LJZCE7LQ.mjs} +102 -6
  67. package/dist/{chunk-YGHWUR7K.mjs → chunks/chunk-LP2YESP6.mjs} +1 -1
  68. package/dist/{chunk-WA735Y26.mjs → chunks/chunk-MGUGO3RV.mjs} +1 -1
  69. package/dist/{chunk-DOOXGOOB.mjs → chunks/chunk-OJHEN5FG.mjs} +96 -5
  70. package/dist/{chunk-ZNINPVG7.mjs → chunks/chunk-ON2FAZTD.mjs} +1 -1
  71. package/dist/{chunk-DLUFOM5K.mjs → chunks/chunk-PCBF6FSQ.mjs} +11 -11
  72. package/dist/{chunk-72KINEJ6.mjs → chunks/chunk-PR6MTWPJ.mjs} +10 -5
  73. package/dist/{chunk-FQTWLAVA.mjs → chunks/chunk-QJCMFAHB.mjs} +1 -1
  74. package/dist/{chunk-62NGBLQ7.mjs → chunks/chunk-QONZ3SCZ.mjs} +1 -1
  75. package/dist/{chunk-HANSF33Z.mjs → chunks/chunk-QOWKMWNO.mjs} +1 -1
  76. package/dist/{chunk-GA4VV5V4.mjs → chunks/chunk-R4AZOPXC.mjs} +1 -1
  77. package/dist/{chunk-5DWO3G33.mjs → chunks/chunk-SGLTVJUA.mjs} +35 -21
  78. package/dist/{chunk-5FTUGKPC.mjs → chunks/chunk-TRGN3ZMM.mjs} +5 -5
  79. package/dist/{chunk-RSAZ7V5Z.mjs → chunks/chunk-TZ23VBFU.mjs} +2 -2
  80. package/dist/{chunk-4UVPCLJ7.mjs → chunks/chunk-U6X3GVJ3.mjs} +1 -1
  81. package/dist/{chunk-J2P5JBHC.mjs → chunks/chunk-UOMQNZMT.mjs} +1 -1
  82. package/dist/{chunk-4THCGGER.mjs → chunks/chunk-UOZFNTVQ.mjs} +2 -2
  83. package/dist/{chunk-TIV2FI4S.mjs → chunks/chunk-WVNDZNMV.mjs} +2 -2
  84. package/dist/{chunk-GFC24374.mjs → chunks/chunk-X4NWFK7L.mjs} +5 -5
  85. package/dist/{chunk-FFBK7Q3W.mjs → chunks/chunk-YI3GLQYF.mjs} +67 -4
  86. package/dist/{chunk-HTZVV6VV.mjs → chunks/chunk-YZQS2YBK.mjs} +8 -6
  87. package/dist/{chunk-PQV55JYI.mjs → chunks/chunk-ZLD5VNMP.mjs} +2 -2
  88. package/dist/components/charts/ChartBar.mjs +13 -13
  89. package/dist/components/charts/ChartCandlestick.mjs +11 -11
  90. package/dist/components/charts/ChartHeatmap.mjs +11 -11
  91. package/dist/components/charts/ChartLine.mjs +12 -11
  92. package/dist/components/charts/ChartPie.mjs +12 -11
  93. package/dist/components/charts/ChartPolar.mjs +13 -11
  94. package/dist/components/charts/ChartRadar.mjs +13 -11
  95. package/dist/components/charts/ChartScatter.mjs +12 -11
  96. package/dist/components/charts/ChartTreemap.mjs +10 -10
  97. package/dist/components/containers/ChartDecimation.mjs +6 -6
  98. package/dist/components/containers/ChartGroup.mjs +4 -4
  99. package/dist/components/containers/ChartOverlap.mjs +5 -5
  100. package/dist/components/containers/ChartRange.mjs +6 -6
  101. package/dist/components/containers/ChartStacked.mjs +6 -6
  102. package/dist/components/containers/ChartWaterfall.mjs +5 -5
  103. package/dist/components/customizations/ChartAccessibility.mjs +9 -9
  104. package/dist/components/customizations/ChartAnnotation.mjs +5 -5
  105. package/dist/components/customizations/ChartAxisCategory.mjs +3 -3
  106. package/dist/components/customizations/ChartAxisGroup.mjs +3 -3
  107. package/dist/components/customizations/ChartBreadcrumb.mjs +6 -6
  108. package/dist/components/customizations/ChartCaption.mjs +9 -9
  109. package/dist/components/customizations/ChartColorLegend.mjs +9 -9
  110. package/dist/components/customizations/ChartDataLabels.mjs +9 -9
  111. package/dist/components/customizations/ChartExportMenu.mjs +9 -9
  112. package/dist/components/customizations/ChartHover.mjs +9 -9
  113. package/dist/components/customizations/ChartLegend.mjs +9 -9
  114. package/dist/components/customizations/ChartNavigator.mjs +10 -10
  115. package/dist/components/customizations/ChartReferenceBand.mjs +5 -5
  116. package/dist/components/customizations/ChartReferenceLine.mjs +5 -5
  117. package/dist/components/customizations/ChartResponsive.mjs +9 -9
  118. package/dist/components/customizations/ChartTitle.mjs +9 -9
  119. package/dist/components/customizations/ChartTooltip.mjs +9 -9
  120. package/dist/components/customizations/ChartXAxis.mjs +10 -10
  121. package/dist/components/customizations/ChartYAxis.mjs +10 -10
  122. package/dist/components/customizations/ChartZoom.mjs +9 -9
  123. package/dist/components/items/ChartItem.mjs +3 -3
  124. package/dist/components/items/ChartTreemapGroup.mjs +5 -5
  125. package/dist/components/renderers/CartesianRenderer.mjs +9 -9
  126. package/dist/components/renderers/CartesianRenderer.vue.d.ts +2 -0
  127. package/dist/components/renderers/ColorLegendRenderer.mjs +2 -2
  128. package/dist/components/renderers/LegendRenderer.mjs +3 -3
  129. package/dist/components/renderers/NavigatorRenderer.mjs +5 -5
  130. package/dist/components/renderers/RadialRenderer.mjs +9 -9
  131. package/dist/components/renderers/RadialRenderer.vue.d.ts +1 -1
  132. package/dist/components/renderers/RectRenderer.mjs +9 -9
  133. package/dist/components/renderers/RectRenderer.vue.d.ts +1 -1
  134. package/dist/components/renderers/TooltipRenderer.mjs +4 -4
  135. package/dist/components/renderers/layers/BarLayerCanvas.mjs +10 -10
  136. package/dist/components/renderers/layers/BarLayerSvg.mjs +10 -10
  137. package/dist/components/renderers/layers/CandlestickLayer.mjs +9 -9
  138. package/dist/components/renderers/layers/HeatmapLayer.mjs +9 -9
  139. package/dist/components/renderers/layers/LineLayer.mjs +10 -9
  140. package/dist/components/renderers/layers/PieLayer.mjs +7 -9
  141. package/dist/components/renderers/layers/PolarLayer.mjs +8 -9
  142. package/dist/components/renderers/layers/RadarLayer.mjs +8 -9
  143. package/dist/components/renderers/layers/ScatterLayer.mjs +10 -9
  144. package/dist/composables/index.d.ts +0 -8
  145. package/dist/composables/useAnimationProps.d.ts +2 -5
  146. package/dist/composables/useChartSync.spec.d.ts +1 -0
  147. package/dist/composables/useChartSyncCoordinator.spec.d.ts +1 -0
  148. package/dist/composables/useHeatmapRenderer.spec.d.ts +1 -0
  149. package/dist/composables/usePolarRenderer.spec.d.ts +1 -0
  150. package/dist/composables/useResponsiveConfig.d.ts +1 -1
  151. package/dist/composables/useResponsiveDimensions.spec.d.ts +1 -0
  152. package/dist/composables/useTreemapRenderer.spec.d.ts +1 -0
  153. package/dist/context/ChartContext.d.ts +1 -1
  154. package/dist/index.d.ts +2 -1
  155. package/dist/index.mjs +69 -66
  156. package/dist/namespace.mjs +69 -112
  157. package/dist/release-date.d.ts +1 -1
  158. package/dist/types/animation.types.d.ts +2 -0
  159. package/dist/types/bar.types.d.ts +2 -1
  160. package/dist/types/candlestick.types.d.ts +0 -1
  161. package/dist/types/heatmap.types.d.ts +0 -1
  162. package/dist/types/index.d.ts +1 -1
  163. package/dist/types/item.types.d.ts +0 -1
  164. package/dist/types/line.types.d.ts +4 -1
  165. package/dist/types/scatter.types.d.ts +3 -2
  166. package/dist/useChartContext.spec.d.ts +1 -0
  167. package/package.json +9 -14
  168. package/LICENSE +0 -23
  169. package/dist/chunk-54DLUFIA.mjs +0 -96
  170. package/dist/chunk-CQHNYT2V.mjs +0 -1692
  171. package/dist/chunk-JKK3D33U.mjs +0 -64
  172. package/dist/chunk-UO27BCRL.mjs +0 -86
  173. package/dist/chunk-VWABO23U.mjs +0 -143
  174. /package/dist/{chunk-FZ3PZ66C.mjs → chunks/chunk-4Q3QUNX6.mjs} +0 -0
  175. /package/dist/{chunk-5SRBQVU5.mjs → chunks/chunk-EHSDNH7K.mjs} +0 -0
  176. /package/dist/{chunk-LD57I4SY.mjs → chunks/chunk-H4HLHGUW.mjs} +0 -0
  177. /package/dist/{chunk-TEOO4OLV.mjs → chunks/chunk-L6N5IYAJ.mjs} +0 -0
  178. /package/dist/{chunk-E4ROAOPT.mjs → chunks/chunk-S4YR4YK7.mjs} +0 -0
  179. /package/dist/{chunk-7P6ASYW6.mjs → chunks/chunk-VIHIR2BE.mjs} +0 -0
  180. /package/dist/{chunk-J43KLCZF.mjs → chunks/chunk-ZH4A4L6W.mjs} +0 -0
@@ -0,0 +1,236 @@
1
+ import { useCartesianFrame, useCartesianFrameRegistration } from './chunk-I2BWSDNR.mjs';
2
+ import { useChartMethods, useChartState, useChartHover } from './chunk-QOWKMWNO.mjs';
3
+ import { defineComponent, computed, unref, openBlock, createElementBlock, Fragment, createElementVNode, renderList, createBlock, createCommentVNode, ref, watch, onUnmounted, createVNode } from 'vue';
4
+ import { renderHeatmapAxesSvg } from '@primeui/chart-core';
5
+ import { createHeatmapRendererCanvas } from '@primeui/chart-core/series/heatmap/controller-canvas';
6
+ import { createHeatmapRendererSvg } from '@primeui/chart-core/series/heatmap/controller-svg';
7
+
8
+ function useHeatmapRenderer(options) {
9
+ const { chartArea, renderer, canvasEl, datasets, axes, datasetVisibility, hover, hoverConfig, chartId, width, height, features, compositor, globalFont, theme } = options;
10
+ const groupRef = ref(null);
11
+ const gridGroupRef = ref(null);
12
+ const axisGroupRef = ref(null);
13
+ const controller = renderer === "canvas" ? createHeatmapRendererCanvas() : createHeatmapRendererSvg();
14
+ const versionRef = ref(0);
15
+ controller.onFrame = () => {
16
+ versionRef.value++;
17
+ };
18
+ const scaleResult = computed(() => {
19
+ void versionRef.value;
20
+ return controller.scaleResult;
21
+ });
22
+ const axisLayoutsComputed = computed(() => {
23
+ void versionRef.value;
24
+ return controller.axisLayouts;
25
+ });
26
+ watch(
27
+ [datasets, datasetVisibility, chartArea, axes, features, width, height, groupRef, gridGroupRef, axisGroupRef, options.locale, theme],
28
+ () => {
29
+ controller.update({
30
+ datasets: datasets.value,
31
+ datasetVisibility: datasetVisibility.value,
32
+ chartArea: chartArea.value,
33
+ chartId,
34
+ width: width.value,
35
+ height: height.value,
36
+ renderer,
37
+ axes: axes.value,
38
+ features: features.value,
39
+ hover: hover.value,
40
+ hoverConfig: hoverConfig.value,
41
+ compositor,
42
+ canvasEl: canvasEl.value,
43
+ svgGroup: groupRef.value,
44
+ globalFont,
45
+ locale: options.locale?.value,
46
+ theme: theme.value,
47
+ resolveDatasetProps: (dsId) => {
48
+ const dsReg = datasets.value.get(dsId);
49
+ return dsReg?.props;
50
+ }
51
+ });
52
+ if (renderer === "svg") {
53
+ renderHeatmapAxesSvg(gridGroupRef.value, axisGroupRef.value, controller.axisLayouts, theme.value);
54
+ }
55
+ },
56
+ { immediate: true, flush: "post" }
57
+ );
58
+ watch(hover, () => {
59
+ controller.applyHover(hover.value);
60
+ });
61
+ onUnmounted(() => {
62
+ controller.destroy();
63
+ });
64
+ function hitTest(x, y) {
65
+ return controller.hitTest(x, y);
66
+ }
67
+ function getPointPosition(datasetId, index) {
68
+ const lr = controller.layoutResult;
69
+ if (!lr) return null;
70
+ const hmLayout = lr.layouts.get(datasetId);
71
+ const cell = hmLayout?.cells.find((c) => c.index === index && !c.isEmpty);
72
+ if (!cell) return null;
73
+ return { x: cell.x, y: cell.y, width: cell.width, height: cell.height, shape: "rect" };
74
+ }
75
+ function getColorScaleInfo() {
76
+ return controller.getColorScaleInfo();
77
+ }
78
+ function applyPropertyAnimations(store) {
79
+ controller.applyPropertyAnimations(store);
80
+ }
81
+ function renderFrameCycle() {
82
+ controller.renderFrameCycle();
83
+ }
84
+ const svgContent = computed(() => {
85
+ if (renderer !== "svg") return [];
86
+ void versionRef.value;
87
+ const lr = controller.layoutResult;
88
+ if (!lr) return [];
89
+ const elements = [];
90
+ for (const [datasetId, hmLayout] of lr.layouts) {
91
+ const dsReg = datasets.value.get(datasetId);
92
+ const hmProps = dsReg?.props;
93
+ const renderFn = hmProps?.renderContent;
94
+ const data = hmProps?.data;
95
+ if (!renderFn || !data) continue;
96
+ for (const cell of hmLayout.cells) {
97
+ if (cell.isEmpty) continue;
98
+ const dataItem = data[cell.index];
99
+ if (!dataItem) continue;
100
+ const result = renderFn({
101
+ data: dataItem,
102
+ index: cell.index,
103
+ value: cell.value,
104
+ xLabel: cell.xLabel,
105
+ yLabel: cell.yLabel,
106
+ color: cell.color,
107
+ x: cell.x,
108
+ y: cell.y,
109
+ width: cell.width,
110
+ height: cell.height,
111
+ row: cell.row,
112
+ col: cell.col,
113
+ isEmpty: cell.isEmpty
114
+ });
115
+ if (result != null) {
116
+ const clipId = `hm-clip-${datasetId}-${cell.index}`;
117
+ elements.push(
118
+ createVNode("g", { key: `${datasetId}-${cell.index}`, "clip-path": `url(#${clipId})` }, [
119
+ createVNode("defs", null, [createVNode("clipPath", { id: clipId }, [createVNode("rect", { x: cell.x, y: cell.y, width: cell.width, height: cell.height })])]),
120
+ result
121
+ ])
122
+ );
123
+ }
124
+ }
125
+ }
126
+ return elements;
127
+ });
128
+ return {
129
+ groupRef,
130
+ gridGroupRef,
131
+ axisGroupRef,
132
+ hitTest,
133
+ getPointPosition,
134
+ axisLayouts: axisLayoutsComputed,
135
+ plotArea: chartArea,
136
+ getColorScaleInfo,
137
+ scaleResult,
138
+ svgContent,
139
+ applyPropertyAnimations,
140
+ renderFrameCycle
141
+ };
142
+ }
143
+
144
+ // src/components/renderers/layers/HeatmapLayer.vue
145
+ var _sfc_main = /* @__PURE__ */ defineComponent({
146
+ __name: "HeatmapLayer",
147
+ setup(__props) {
148
+ const VNodeRenderer = defineComponent({
149
+ props: { node: {
150
+ type: Object,
151
+ required: true
152
+ } },
153
+ render() {
154
+ return this.node;
155
+ }
156
+ });
157
+ const frame = useCartesianFrame();
158
+ const methods = useChartMethods();
159
+ const state = useChartState();
160
+ const hoverCtx = useChartHover();
161
+ const features = computed(() => state.value.features);
162
+ const heatmap = useHeatmapRenderer({
163
+ chartArea: frame.cartesianArea,
164
+ renderer: methods.renderer,
165
+ canvasEl: frame.canvasEl,
166
+ datasets: computed(() => state.value.datasets),
167
+ axes: computed(() => state.value.axes),
168
+ datasetVisibility: computed(() => state.value.datasetVisibility),
169
+ hover: computed(() => hoverCtx.value.hover),
170
+ hoverConfig: frame.hoverConfig,
171
+ chartId: methods.chartId,
172
+ width: frame.width,
173
+ height: frame.height,
174
+ features,
175
+ compositor: frame.compositor,
176
+ globalFont: methods.font,
177
+ locale: computed(() => methods.locale),
178
+ theme: computed(() => methods.theme)
179
+ });
180
+ useCartesianFrameRegistration({
181
+ type: "heatmap",
182
+ getColorScaleInfo: () => heatmap.getColorScaleInfo(),
183
+ scaleResult: heatmap.scaleResult,
184
+ getPointPosition: (datasetId, index) => heatmap.getPointPosition(datasetId, index),
185
+ applyPropertyAnimations: (store) => heatmap.applyPropertyAnimations(store),
186
+ renderFrameCycle: () => heatmap.renderFrameCycle(),
187
+ hitTest: (x, y) => {
188
+ const hmHit = heatmap.hitTest(x, y);
189
+ if (!hmHit) return null;
190
+ return {
191
+ datasetId: hmHit.datasetId,
192
+ index: hmHit.index,
193
+ col: hmHit.col,
194
+ label: `${hmHit.xLabel}, ${hmHit.yLabel}`,
195
+ value: hmHit.value ?? 0,
196
+ color: hmHit.color,
197
+ snapX: hmHit.x + hmHit.width / 2,
198
+ snapY: hmHit.y + hmHit.height / 2,
199
+ formattedValue: hmHit.value != null ? String(hmHit.value) : "",
200
+ cursorFormattedValue: ""
201
+ };
202
+ }
203
+ });
204
+ return (_ctx, _cache) => {
205
+ return unref(methods).renderer === "svg" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
206
+ createElementVNode("g", {
207
+ ref: (el) => {
208
+ unref(heatmap).gridGroupRef.value = el;
209
+ },
210
+ class: "heatmap-grid"
211
+ }, null, 512),
212
+ createElementVNode("g", {
213
+ ref: (el) => {
214
+ unref(heatmap).groupRef.value = el;
215
+ },
216
+ class: "heatmap-chart"
217
+ }, null, 512),
218
+ createElementVNode("g", {
219
+ ref: (el) => {
220
+ unref(heatmap).axisGroupRef.value = el;
221
+ },
222
+ class: "heatmap-axes"
223
+ }, null, 512),
224
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(heatmap).svgContent.value, (el) => {
225
+ return openBlock(), createBlock(unref(VNodeRenderer), {
226
+ key: el.key ?? el.props?.key,
227
+ node: el
228
+ }, null, 8, ["node"]);
229
+ }), 128))
230
+ ], 64)) : createCommentVNode("", true);
231
+ };
232
+ }
233
+ });
234
+ var HeatmapLayer_default = _sfc_main;
235
+
236
+ export { HeatmapLayer_default };
@@ -0,0 +1,182 @@
1
+ import { useControllerLifecycle } from './chunk-KNNYJD4D.mjs';
2
+ import { useRadialFrameRegistration } from './chunk-7EZEZMGG.mjs';
3
+ import { useChartMethods, useChartState, useChartHover } from './chunk-QOWKMWNO.mjs';
4
+ import { defineComponent, computed, toRef, unref, openBlock, createElementBlock, Fragment, createElementVNode, renderList, createBlock, createCommentVNode, ref, watch, h } from 'vue';
5
+ import { buildPieSliceContentItems } from '@primeui/chart-core';
6
+ import { createPieRendererCanvas } from '@primeui/chart-core/series/pie/controller-canvas';
7
+ import { createPieRendererSvg } from '@primeui/chart-core/series/pie/controller-svg';
8
+
9
+ function usePieRenderer(options) {
10
+ const { renderer, chartId, globalFont, adaptiveDataLabelFontSize, theme, dir } = options;
11
+ const groupRef = ref(null);
12
+ const labelGroupRef = ref(null);
13
+ const centerRef = ref(null);
14
+ const versionRef = ref(0);
15
+ const controller = renderer === "canvas" ? createPieRendererCanvas() : createPieRendererSvg();
16
+ controller.onFrame = () => {
17
+ versionRef.value++;
18
+ centerRef.value = controller.center;
19
+ };
20
+ watch(
21
+ [options.datasets, options.chartArea, options.datasetVisibility, options.hiddenItems, options.features, options.width, options.height, groupRef, dir, theme],
22
+ () => {
23
+ if (options.datasets.value.size === 0) return;
24
+ if (renderer === "svg" && !groupRef.value) return;
25
+ const hoverConfig = options.features.value.get("hover")?.props;
26
+ controller.update({
27
+ datasets: options.datasets.value,
28
+ datasetVisibility: options.datasetVisibility.value,
29
+ hiddenItems: options.hiddenItems.value,
30
+ chartArea: options.chartArea.value,
31
+ renderer,
32
+ width: options.width.value,
33
+ height: options.height.value,
34
+ chartId,
35
+ features: options.features.value,
36
+ hover: options.hover.value,
37
+ hoverConfig,
38
+ globalFont,
39
+ adaptiveDataLabelFontSize: adaptiveDataLabelFontSize?.value,
40
+ svgGroup: groupRef.value ?? void 0,
41
+ canvasEl: options.canvasEl.value ?? void 0,
42
+ dir: dir.value,
43
+ theme: theme.value
44
+ });
45
+ controller.registerLabelGroup(labelGroupRef.value);
46
+ centerRef.value = controller.center;
47
+ },
48
+ { immediate: true, flush: "post" }
49
+ );
50
+ watch([options.hover, () => options.features.value.get("hover")?.props], () => {
51
+ controller.applyHover(options.hover.value);
52
+ });
53
+ const { applyPropertyAnimations, renderFrameCycle } = useControllerLifecycle(controller);
54
+ const svgContent = computed(() => {
55
+ if (renderer !== "svg") return [];
56
+ void versionRef.value;
57
+ const content = [];
58
+ for (const item of buildPieSliceContentItems(controller.entries, controller.lastRenderedSlices, controller.ringRadii, controller.animationLayout, options.hiddenItems.value, options.globalFont?.family, theme.value)) {
59
+ const result = item.renderFn(item.context);
60
+ if (result != null) {
61
+ content.push(
62
+ h(
63
+ "g",
64
+ {
65
+ key: item.datasetKey,
66
+ class: "slice-custom-content",
67
+ "data-dataset": item.datasetId,
68
+ "data-index": item.index,
69
+ transform: `translate(${item.contentX}, ${item.contentY})`,
70
+ onVnodeMounted: (vnode) => controller.registerCustomContent(item.key, vnode.el),
71
+ onVnodeUnmounted: () => controller.registerCustomContent(item.key, null)
72
+ },
73
+ [result]
74
+ )
75
+ );
76
+ }
77
+ }
78
+ return content;
79
+ });
80
+ function hitTest(x, y) {
81
+ const hit = controller.hitTest(x, y);
82
+ if (!hit) return null;
83
+ return { datasetId: hit.datasetId, index: hit.index, label: hit.label, value: hit.value, percentage: hit.percentage, color: hit.color };
84
+ }
85
+ function getSlicePosition(datasetId, index) {
86
+ return controller.getSlicePosition(datasetId, index);
87
+ }
88
+ return {
89
+ groupRef,
90
+ labelGroupRef,
91
+ hitTest,
92
+ getSlicePosition,
93
+ center: centerRef,
94
+ svgContent,
95
+ applyPropertyAnimations,
96
+ renderFrameCycle
97
+ };
98
+ }
99
+
100
+ // src/components/renderers/layers/PieLayer.vue
101
+ var _sfc_main = /* @__PURE__ */ defineComponent({
102
+ __name: "PieLayer",
103
+ props: {
104
+ chartArea: {},
105
+ width: {},
106
+ height: {},
107
+ canvasEl: {},
108
+ containerEl: {},
109
+ adaptiveDataLabelFontSize: {}
110
+ },
111
+ setup(__props) {
112
+ const VNodeRenderer = defineComponent({
113
+ props: { node: {
114
+ type: Object,
115
+ required: true
116
+ } },
117
+ render() {
118
+ return this.node;
119
+ }
120
+ });
121
+ const props = __props;
122
+ const methods = useChartMethods();
123
+ const state = useChartState();
124
+ const hoverCtx = useChartHover();
125
+ const pie = usePieRenderer({
126
+ chartArea: computed(() => props.chartArea),
127
+ renderer: methods.renderer,
128
+ canvasEl: toRef(props, "canvasEl"),
129
+ containerEl: toRef(props, "containerEl"),
130
+ datasets: computed(() => state.value.datasets),
131
+ features: computed(() => state.value.features),
132
+ hover: computed(() => hoverCtx.value.hover),
133
+ datasetVisibility: computed(() => state.value.datasetVisibility),
134
+ hiddenItems: computed(() => state.value.hiddenItems),
135
+ chartId: methods.chartId,
136
+ width: computed(() => props.width),
137
+ height: computed(() => props.height),
138
+ globalFont: methods.font,
139
+ adaptiveDataLabelFontSize: computed(() => props.adaptiveDataLabelFontSize),
140
+ dir: computed(() => methods.dir),
141
+ theme: computed(() => methods.theme)
142
+ });
143
+ useRadialFrameRegistration({
144
+ type: "pie",
145
+ hitTest: (x, y) => pie.hitTest(x, y),
146
+ getPointPosition: (datasetId, index) => {
147
+ const pos = pie.getSlicePosition(datasetId, index);
148
+ if (!pos) return null;
149
+ const r = 6;
150
+ return {
151
+ x: pos.x - r,
152
+ y: pos.y - r,
153
+ width: r * 2,
154
+ height: r * 2,
155
+ shape: "circle"
156
+ };
157
+ },
158
+ getCenter: () => pie.center.value,
159
+ applyPropertyAnimations: (store) => pie.applyPropertyAnimations(store),
160
+ renderFrameCycle: () => pie.renderFrameCycle()
161
+ });
162
+ return (_ctx, _cache) => {
163
+ return unref(methods).renderer === "svg" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
164
+ createElementVNode("g", { ref: (el) => {
165
+ unref(pie).groupRef.value = el;
166
+ } }, null, 512),
167
+ createElementVNode("g", { ref: (el) => {
168
+ unref(pie).labelGroupRef.value = el;
169
+ } }, null, 512),
170
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(pie).svgContent.value, (el) => {
171
+ return openBlock(), createBlock(unref(VNodeRenderer), {
172
+ key: el.key ?? el.props?.key,
173
+ node: el
174
+ }, null, 8, ["node"]);
175
+ }), 128))
176
+ ], 64)) : createCommentVNode("", true);
177
+ };
178
+ }
179
+ });
180
+ var PieLayer_default = _sfc_main;
181
+
182
+ export { PieLayer_default };
@@ -1,17 +1,17 @@
1
- import { LegendRenderer_default } from './chunk-5FTUGKPC.mjs';
2
- import { ColorLegendRenderer_default } from './chunk-E4ROAOPT.mjs';
3
- import { TooltipRenderer_default } from './chunk-GX2MK6VT.mjs';
4
- import { useResponsiveDimensions, useAnimationProps, useDrilldownState, useResponsiveConfig, provideFamilyRenderers, provideChartLayers, useZoomPan, useKeyboardNavigation, useChartSync, useChartContext, useChartSyncCoordinator } from './chunk-CQHNYT2V.mjs';
5
- import { NavigatorRenderer_default } from './chunk-NLXOJSKK.mjs';
6
- import { provideChartContext } from './chunk-HANSF33Z.mjs';
7
- import { CHART_SYNC_INFO_KEY } from './chunk-LD57I4SY.mjs';
8
- import { TOOLTIP_CONTEXT_KEY } from './chunk-FZ3PZ66C.mjs';
9
- import { defineComponent, computed, ref, onMounted, watch, onBeforeUnmount, toRef, shallowRef, provide, nextTick, openBlock, createElementBlock, normalizeStyle, normalizeClass, createElementVNode, toDisplayString, createCommentVNode, renderSlot, unref, createBlock, resolveDynamicComponent, withCtx, createTextVNode, Fragment, renderList, withModifiers } from 'vue';
1
+ import { LegendRenderer_default } from './chunk-TRGN3ZMM.mjs';
2
+ import { ColorLegendRenderer_default } from './chunk-S4YR4YK7.mjs';
3
+ import { TooltipRenderer_default } from './chunk-36DHPBYP.mjs';
4
+ import { useResponsiveDimensions, useAnimationProps, useDrilldownState, useResponsiveConfig, provideFamilyRenderers, provideChartLayers, useZoomPan, useKeyboardNavigation, useChartSync, useChartContext, useChartSyncCoordinator } from './chunk-I2BWSDNR.mjs';
5
+ import { NavigatorRenderer_default } from './chunk-GLFXRR7N.mjs';
6
+ import { provideChartContext } from './chunk-QOWKMWNO.mjs';
7
+ import { CHART_SYNC_INFO_KEY } from './chunk-H4HLHGUW.mjs';
8
+ import { TOOLTIP_CONTEXT_KEY } from './chunk-4Q3QUNX6.mjs';
9
+ import { defineComponent, computed, ref, onMounted, watch, onBeforeUnmount, toRef, shallowRef, nextTick, provide, openBlock, createElementBlock, normalizeStyle, normalizeClass, createElementVNode, toDisplayString, createCommentVNode, renderSlot, unref, createBlock, resolveDynamicComponent, withCtx, createTextVNode, Fragment, renderList, withModifiers } from 'vue';
10
10
  import { resolveTheme, ChartStateController, buildChartDataTable, themeToCssVars, configureCanvasHiDPI, computeCrosshairLayout, buildAnnotationContext, DEFAULT_FONT_FAMILY, renderAnnotationsCanvas, resolveDirFromElement, observeDocumentDir } from '@primeui/chart-core';
11
11
  import { verifyLicense } from '@primeui/license-manager';
12
12
 
13
13
  // src/release-date.ts
14
- var RELEASE_DATE = "2026-06-20";
14
+ var RELEASE_DATE = "2026-06-28";
15
15
 
16
16
  // src/Chart.vue
17
17
  var _hoisted_1 = {
@@ -224,10 +224,13 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
224
224
  locale: {},
225
225
  animation: { type: [Object, Boolean] },
226
226
  animations: {},
227
- transitions: {},
228
227
  renderer: {}
229
228
  },
230
- emits: ["resize"],
229
+ emits: [
230
+ "resize",
231
+ "point-click",
232
+ "point-hover"
233
+ ],
231
234
  setup(__props, { expose: __expose, emit: __emit }) {
232
235
  const VNodeRenderer = defineComponent({
233
236
  props: { node: {
@@ -312,8 +315,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
312
315
  });
313
316
  useAnimationProps(() => ({
314
317
  animation: props.animation,
315
- animations: props.animations,
316
- transitions: props.transitions
318
+ animations: props.animations
317
319
  }), methods);
318
320
  const containerRef = ref(null);
319
321
  const mainCanvasRef = ref(null);
@@ -444,12 +446,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
444
446
  });
445
447
  });
446
448
  const autoColorScale = shallowRef(null);
447
- watch([
448
- () => state.value.datasets,
449
- () => state.value.datasetVisibility,
450
- () => coreState.value.chartArea,
451
- rendererDelegate
452
- ], () => {
449
+ function syncAutoColorScale() {
453
450
  const info = rendererDelegate.value?.getColorScaleInfo?.() ?? null;
454
451
  const prev = autoColorScale.value;
455
452
  if (prev === null && info === null) return;
@@ -457,6 +454,18 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
457
454
  return;
458
455
  }
459
456
  autoColorScale.value = info;
457
+ }
458
+ watch([
459
+ () => state.value.datasets,
460
+ () => state.value.datasetVisibility,
461
+ () => coreState.value.chartArea,
462
+ rendererDelegate
463
+ ], () => {
464
+ syncAutoColorScale();
465
+ if (autoColorScale.value === null) {
466
+ const hasColorScaleSeries = [...state.value.datasets.values()].some((d) => d.type === "heatmap" || d.type === "treemap");
467
+ if (hasColorScaleSeries) nextTick(syncAutoColorScale);
468
+ }
460
469
  }, {
461
470
  immediate: true,
462
471
  flush: "post"
@@ -588,11 +597,38 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
588
597
  processMouseMove(evt);
589
598
  });
590
599
  }
600
+ function resolvePointEvent(hit) {
601
+ const index = hit.index ?? 0;
602
+ const data = state.value.datasets.get(hit.datasetId)?.props?.data;
603
+ return {
604
+ datasetId: hit.datasetId,
605
+ index,
606
+ label: hit.label ?? "",
607
+ value: hit.value ?? 0,
608
+ color: hit.color ?? "",
609
+ datum: data?.[index]
610
+ };
611
+ }
612
+ function hitForPointEvent(x, y) {
613
+ try {
614
+ return rendererDelegate.value?.hitTest(x, y) ?? null;
615
+ } catch {
616
+ return null;
617
+ }
618
+ }
619
+ let _lastHoverKey = null;
591
620
  function processMouseMove(e) {
592
621
  if (zoomIsDragging.value) return;
593
622
  const rect = containerRef.value?.getBoundingClientRect();
594
623
  if (!rect) return;
595
- coreMouseMove(e.clientX - rect.left, e.clientY - rect.top);
624
+ const x = e.clientX - rect.left;
625
+ const y = e.clientY - rect.top;
626
+ coreMouseMove(x, y);
627
+ const hit = hitForPointEvent(x, y);
628
+ const key = hit ? `${hit.datasetId}:${hit.index}` : null;
629
+ if (key === _lastHoverKey) return;
630
+ _lastHoverKey = key;
631
+ emit("point-hover", hit ? resolvePointEvent(hit) : null);
596
632
  }
597
633
  function handleMouseMoveWithKeyboard(e) {
598
634
  keyboardNav.onMouseMove();
@@ -614,12 +650,20 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
614
650
  }
615
651
  function handleMouseLeave() {
616
652
  coreMouseLeave();
653
+ if (_lastHoverKey !== null) {
654
+ _lastHoverKey = null;
655
+ emit("point-hover", null);
656
+ }
617
657
  }
618
658
  function handleClick(e) {
619
- if (!hoverConfig.value && !isRect.value && !drilldownState.enabled.value) return;
620
659
  const rect = containerRef.value?.getBoundingClientRect();
621
660
  if (!rect) return;
622
- coreClick(e.clientX - rect.left, e.clientY - rect.top);
661
+ const x = e.clientX - rect.left;
662
+ const y = e.clientY - rect.top;
663
+ const hit = hitForPointEvent(x, y);
664
+ if (hit) emit("point-click", resolvePointEvent(hit));
665
+ if (!hoverConfig.value && !isRect.value && !drilldownState.enabled.value) return;
666
+ coreClick(x, y);
623
667
  }
624
668
  function handleLegendClick(item) {
625
669
  coreLegendClick(item);
@@ -994,6 +1038,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
994
1038
  height: unref(height),
995
1039
  "canvas-el": mainCanvasRef.value,
996
1040
  "zoom-state": unref(zoomState),
1041
+ "is-dragging": unref(zoomIsDragging),
997
1042
  "adaptive-data-label-font-size": unref(adaptive).dataLabelFontSize,
998
1043
  "adaptive-data-label-rotation": unref(adaptive).dataLabelRotation,
999
1044
  "rule-overrides": unref(ruleOverrides)
@@ -1003,6 +1048,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
1003
1048
  "height",
1004
1049
  "canvas-el",
1005
1050
  "zoom-state",
1051
+ "is-dragging",
1006
1052
  "adaptive-data-label-font-size",
1007
1053
  "adaptive-data-label-rotation",
1008
1054
  "rule-overrides"
@@ -1142,6 +1188,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
1142
1188
  "canvas-el": mainCanvasRef.value,
1143
1189
  "overlay-canvas-el": overlayCanvasRef.value,
1144
1190
  "zoom-state": unref(zoomState),
1191
+ "is-dragging": unref(zoomIsDragging),
1145
1192
  "adaptive-data-label-font-size": unref(adaptive).dataLabelFontSize,
1146
1193
  "adaptive-data-label-rotation": unref(adaptive).dataLabelRotation,
1147
1194
  "rule-overrides": unref(ruleOverrides)
@@ -1152,6 +1199,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
1152
1199
  "canvas-el",
1153
1200
  "overlay-canvas-el",
1154
1201
  "zoom-state",
1202
+ "is-dragging",
1155
1203
  "adaptive-data-label-font-size",
1156
1204
  "adaptive-data-label-rotation",
1157
1205
  "rule-overrides"
@@ -1,8 +1,8 @@
1
- import { useCustomizationRegistration } from './chunk-PQV55JYI.mjs';
2
- import { SYNC_BUS_KEY } from './chunk-LD57I4SY.mjs';
3
- import { CHART_METHODS_KEY } from './chunk-FZ3PZ66C.mjs';
1
+ import { useCustomizationRegistration } from './chunk-ZLD5VNMP.mjs';
2
+ import { SYNC_BUS_KEY } from './chunk-H4HLHGUW.mjs';
3
+ import { CHART_METHODS_KEY } from './chunk-4Q3QUNX6.mjs';
4
4
  import { defineComponent, inject, computed, ref, onMounted, onBeforeUnmount, openBlock, createElementBlock, Fragment, unref, normalizeStyle, normalizeClass, renderList, createBlock, resolveDynamicComponent, createElementVNode, toDisplayString, createCommentVNode } from 'vue';
5
- import { gradientToCssBackground, buildSharedLegendItems } from '@primeui/chart-core';
5
+ import { safeRenderProp, gradientToCssBackground, buildSharedLegendItems } from '@primeui/chart-core';
6
6
 
7
7
  var _hoisted_1 = ["onClick", "onMouseenter"];
8
8
  var _hoisted_2 = ["data-chart-gradient"];
@@ -151,7 +151,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
151
151
  class: normalizeClass(props.class),
152
152
  style: normalizeStyle([containerStyle.value, props.style])
153
153
  }, [(openBlock(true), createElementBlock(Fragment, null, renderList(sharedItems.value, (item) => {
154
- return openBlock(), createElementBlock(Fragment, { key: getItemKey(item) }, [__props.render ? (openBlock(), createBlock(resolveDynamicComponent(() => __props.render({
154
+ return openBlock(), createElementBlock(Fragment, { key: getItemKey(item) }, [__props.render ? (openBlock(), createBlock(resolveDynamicComponent(() => unref(safeRenderProp)(() => __props.render({
155
155
  type: item.type,
156
156
  datasetId: item.datasetId,
157
157
  label: item.label,
@@ -166,7 +166,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
166
166
  onMouseLeave: () => {
167
167
  hoveredId.value = null;
168
168
  }
169
- })), { key: 0 })) : (openBlock(), createElementBlock("button", {
169
+ }), "legend")), { key: 0 })) : (openBlock(), createElementBlock("button", {
170
170
  key: 1,
171
171
  type: "button",
172
172
  style: normalizeStyle({
@@ -1,5 +1,6 @@
1
- import { provideRadialFrame, useChartLayers, usePropertyAnimations } from './chunk-CQHNYT2V.mjs';
2
- import { useChartMethods, useChartState } from './chunk-HANSF33Z.mjs';
1
+ import { useChartLayers, usePropertyAnimations } from './chunk-I2BWSDNR.mjs';
2
+ import { provideRadialFrame } from './chunk-7EZEZMGG.mjs';
3
+ import { useChartMethods, useChartState } from './chunk-QOWKMWNO.mjs';
3
4
  import { defineComponent, computed, ref, watch, shallowRef, onUnmounted, openBlock, createElementBlock, Fragment, unref, createCommentVNode, renderList, createBlock, resolveDynamicComponent } from 'vue';
4
5
  import { collectItems, computeRadialComboContext, materializeSvgGroup, renderRadialGridSvg, AnimatedPropertyStore, AnimationRegistry, buildRadialGridLayout, withReferenceFeatures, redrawRadialCanvas } from '@primeui/chart-core';
5
6
 
@@ -48,10 +49,12 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
48
49
  const polarRaw = frame.handles.get("polar")?.layout?.value;
49
50
  const src = radarRaw ? {
50
51
  ...radarRaw,
51
- radius: radarRaw.radius
52
+ radius: radarRaw.radius,
53
+ innerRadius: 0
52
54
  } : polarRaw ? {
53
55
  ...polarRaw,
54
- radius: polarRaw.maxRadius
56
+ radius: polarRaw.maxRadius,
57
+ innerRadius: polarRaw.innerRadiusRatio * polarRaw.maxRadius
55
58
  } : null;
56
59
  if (!src) return _stickyGridLayout ? withReferenceFeatures(_stickyGridLayout, state.value.features) : null;
57
60
  const xAxisProps = [...state.value.axes.x.values()][0]?.props;
@@ -1,5 +1,5 @@
1
- import { registerKeyboardController } from './chunk-CQHNYT2V.mjs';
2
- import { useCustomizationRegistration } from './chunk-PQV55JYI.mjs';
1
+ import { registerKeyboardController } from './chunk-I2BWSDNR.mjs';
2
+ import { useCustomizationRegistration } from './chunk-ZLD5VNMP.mjs';
3
3
  import { defineComponent, getCurrentInstance, computed } from 'vue';
4
4
  import { KeyboardNavigationController } from '@primeui/chart-core';
5
5
 
@@ -0,0 +1,22 @@
1
+ import { shallowReactive, provide, inject, onBeforeUnmount } from 'vue';
2
+
3
+ // src/composables/useRadialFrame.ts
4
+ var RADIAL_FRAME_KEY = /* @__PURE__ */ Symbol.for("primeui-chart-radial-frame");
5
+ function provideRadialFrame() {
6
+ const handles = shallowReactive(/* @__PURE__ */ new Map());
7
+ const frame = {
8
+ handles,
9
+ register: (h) => handles.set(h.type, h),
10
+ unregister: (type) => handles.delete(type)
11
+ };
12
+ provide(RADIAL_FRAME_KEY, frame);
13
+ return frame;
14
+ }
15
+ function useRadialFrameRegistration(handle) {
16
+ const frame = inject(RADIAL_FRAME_KEY, null);
17
+ if (!frame) return;
18
+ frame.register(handle);
19
+ onBeforeUnmount(() => frame.unregister(handle.type));
20
+ }
21
+
22
+ export { provideRadialFrame, useRadialFrameRegistration };