@blokkli/editor 2.0.0-alpha.34 → 2.0.0-alpha.36

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 (204) hide show
  1. package/dist/global/types/blockOptions.d.ts +9 -2
  2. package/dist/global/types/definitions.d.ts +12 -5
  3. package/dist/module.d.mts +2 -2
  4. package/dist/module.json +1 -1
  5. package/dist/module.mjs +56 -4
  6. package/dist/modules/agent/index.d.mts +1 -1
  7. package/dist/modules/agent/index.mjs +38 -20
  8. package/dist/modules/agent/runtime/app/composables/agentProvider.d.ts +2 -2
  9. package/dist/modules/agent/runtime/app/composables/agentProvider.js +3 -3
  10. package/dist/modules/agent/runtime/app/features/agent/Panel/Input/Actions/index.vue +34 -60
  11. package/dist/modules/agent/runtime/app/features/agent/Transcript/index.d.vue.ts +8 -0
  12. package/dist/modules/agent/runtime/app/features/agent/Transcript/index.vue +138 -0
  13. package/dist/modules/agent/runtime/app/features/agent/Transcript/index.vue.d.ts +8 -0
  14. package/dist/modules/agent/runtime/app/features/agent/index.vue +5 -1
  15. package/dist/modules/agent/runtime/app/tools/get_bundle_info/index.js +175 -0
  16. package/dist/modules/agent/runtime/app/tools/get_paragraph_context/index.js +5 -0
  17. package/dist/modules/agent/runtime/app/tools/schemas.d.ts +9 -0
  18. package/dist/modules/agent/runtime/app/tools/schemas.js +36 -23
  19. package/dist/modules/agent/runtime/server/Session.d.ts +4 -2
  20. package/dist/modules/agent/runtime/server/Session.js +61 -57
  21. package/dist/modules/agent/runtime/server/agentPrompt.d.ts +9 -1
  22. package/dist/modules/agent/runtime/server/agentPrompt.js +26 -0
  23. package/dist/modules/agent/runtime/shared/types.d.ts +35 -1
  24. package/dist/modules/charts/index.d.mts +35 -0
  25. package/dist/modules/charts/index.mjs +43 -0
  26. package/dist/modules/charts/runtime/blokkli/skills/charts.d.ts +2 -0
  27. package/dist/modules/charts/runtime/blokkli/skills/charts.js +42 -0
  28. package/dist/modules/charts/runtime/blokkli/tools/chart_schemas.d.ts +63 -0
  29. package/dist/modules/charts/runtime/blokkli/tools/chart_schemas.js +98 -0
  30. package/dist/modules/charts/runtime/blokkli/tools/create_chart/index.d.ts +2 -0
  31. package/dist/modules/charts/runtime/blokkli/tools/create_chart/index.js +86 -0
  32. package/dist/modules/charts/runtime/blokkli/tools/get_chart_data/index.d.ts +2 -0
  33. package/dist/modules/charts/runtime/blokkli/tools/get_chart_data/index.js +74 -0
  34. package/dist/modules/charts/runtime/blokkli/tools/get_chart_type_options/index.d.ts +2 -0
  35. package/dist/modules/charts/runtime/blokkli/tools/get_chart_type_options/index.js +42 -0
  36. package/dist/modules/charts/runtime/blokkli/tools/update_chart/index.d.ts +2 -0
  37. package/dist/modules/charts/runtime/blokkli/tools/update_chart/index.js +101 -0
  38. package/dist/modules/charts/runtime/chartTypes/area.d.ts +2 -0
  39. package/dist/modules/charts/runtime/chartTypes/area.js +68 -0
  40. package/dist/modules/charts/runtime/chartTypes/bar.d.ts +2 -0
  41. package/dist/modules/charts/runtime/chartTypes/bar.js +76 -0
  42. package/dist/modules/charts/runtime/chartTypes/define.d.ts +2 -0
  43. package/dist/modules/charts/runtime/chartTypes/define.js +3 -0
  44. package/dist/modules/charts/runtime/chartTypes/donut.d.ts +2 -0
  45. package/dist/modules/charts/runtime/chartTypes/donut.js +45 -0
  46. package/dist/modules/charts/runtime/chartTypes/heatmap.d.ts +2 -0
  47. package/dist/modules/charts/runtime/chartTypes/heatmap.js +54 -0
  48. package/dist/modules/charts/runtime/chartTypes/index.d.ts +21 -0
  49. package/dist/modules/charts/runtime/chartTypes/index.js +47 -0
  50. package/dist/modules/charts/runtime/chartTypes/line.d.ts +2 -0
  51. package/dist/modules/charts/runtime/chartTypes/line.js +68 -0
  52. package/dist/modules/charts/runtime/chartTypes/pie.d.ts +2 -0
  53. package/dist/modules/charts/runtime/chartTypes/pie.js +28 -0
  54. package/dist/modules/charts/runtime/chartTypes/radar.d.ts +2 -0
  55. package/dist/modules/charts/runtime/chartTypes/radar.js +52 -0
  56. package/dist/modules/charts/runtime/chartTypes/radialBar.d.ts +2 -0
  57. package/dist/modules/charts/runtime/chartTypes/radialBar.js +44 -0
  58. package/dist/modules/charts/runtime/chartTypes/shared.d.ts +52 -0
  59. package/dist/modules/charts/runtime/chartTypes/shared.js +103 -0
  60. package/dist/modules/charts/runtime/chartTypes/types.d.ts +29 -0
  61. package/dist/modules/charts/runtime/chartTypes/types.js +0 -0
  62. package/dist/modules/charts/runtime/components/ChartRenderer/index.d.vue.ts +4 -0
  63. package/dist/modules/charts/runtime/components/ChartRenderer/index.vue +120 -0
  64. package/dist/modules/charts/runtime/components/ChartRenderer/index.vue.d.ts +4 -0
  65. package/dist/modules/charts/runtime/components/Fragment/BlokkliChart.d.vue.ts +3 -0
  66. package/dist/modules/charts/runtime/components/Fragment/BlokkliChart.vue +29 -0
  67. package/dist/modules/charts/runtime/components/Fragment/BlokkliChart.vue.d.ts +3 -0
  68. package/dist/modules/charts/runtime/features/charts/Editor/ChartTypeOptions/index.d.vue.ts +15 -0
  69. package/dist/modules/charts/runtime/features/charts/Editor/ChartTypeOptions/index.vue +97 -0
  70. package/dist/modules/charts/runtime/features/charts/Editor/ChartTypeOptions/index.vue.d.ts +15 -0
  71. package/dist/modules/charts/runtime/features/charts/Editor/ChartTypePicker/index.d.vue.ts +11 -0
  72. package/dist/modules/charts/runtime/features/charts/Editor/ChartTypePicker/index.vue +34 -0
  73. package/dist/modules/charts/runtime/features/charts/Editor/ChartTypePicker/index.vue.d.ts +11 -0
  74. package/dist/modules/charts/runtime/features/charts/Editor/ColorDropdown/index.d.vue.ts +12 -0
  75. package/dist/modules/charts/runtime/features/charts/Editor/ColorDropdown/index.vue +49 -0
  76. package/dist/modules/charts/runtime/features/charts/Editor/ColorDropdown/index.vue.d.ts +12 -0
  77. package/dist/modules/charts/runtime/features/charts/Editor/CsvImport/index.d.vue.ts +19 -0
  78. package/dist/modules/charts/runtime/features/charts/Editor/CsvImport/index.vue +90 -0
  79. package/dist/modules/charts/runtime/features/charts/Editor/CsvImport/index.vue.d.ts +19 -0
  80. package/dist/modules/charts/runtime/features/charts/Editor/DataTable/index.d.vue.ts +23 -0
  81. package/dist/modules/charts/runtime/features/charts/Editor/DataTable/index.vue +224 -0
  82. package/dist/modules/charts/runtime/features/charts/Editor/DataTable/index.vue.d.ts +23 -0
  83. package/dist/modules/charts/runtime/features/charts/Editor/FootnoteEditor/index.d.vue.ts +10 -0
  84. package/dist/modules/charts/runtime/features/charts/Editor/FootnoteEditor/index.vue +61 -0
  85. package/dist/modules/charts/runtime/features/charts/Editor/FootnoteEditor/index.vue.d.ts +10 -0
  86. package/dist/modules/charts/runtime/features/charts/Editor/Preview/index.d.vue.ts +8 -0
  87. package/dist/modules/charts/runtime/features/charts/Editor/Preview/index.vue +23 -0
  88. package/dist/modules/charts/runtime/features/charts/Editor/Preview/index.vue.d.ts +8 -0
  89. package/dist/modules/charts/runtime/features/charts/Editor/index.d.vue.ts +10 -0
  90. package/dist/modules/charts/runtime/features/charts/Editor/index.vue +243 -0
  91. package/dist/modules/charts/runtime/features/charts/Editor/index.vue.d.ts +10 -0
  92. package/dist/modules/charts/runtime/features/charts/Editor/useChartEditorState.d.ts +17 -0
  93. package/dist/modules/charts/runtime/features/charts/Editor/useChartEditorState.js +90 -0
  94. package/dist/modules/charts/runtime/features/charts/index.d.vue.ts +3 -0
  95. package/dist/modules/charts/runtime/features/charts/index.vue +72 -0
  96. package/dist/modules/charts/runtime/features/charts/index.vue.d.ts +3 -0
  97. package/dist/modules/charts/runtime/helpers/index.d.ts +1 -0
  98. package/dist/modules/charts/runtime/helpers/index.js +17 -0
  99. package/dist/modules/charts/runtime/types.d.ts +51 -0
  100. package/dist/modules/charts/runtime/types.js +64 -0
  101. package/dist/modules/drupal/graphql/features/fragments.graphql +2 -0
  102. package/dist/modules/drupal/index.d.mts +1 -1
  103. package/dist/modules/drupal/runtime/adapter/index.js +12 -8
  104. package/dist/modules/table-of-contents/index.d.mts +11 -0
  105. package/dist/modules/table-of-contents/index.mjs +24 -0
  106. package/dist/modules/table-of-contents/runtime/components/BlokkliTableOfContents/index.d.vue.ts +44 -0
  107. package/dist/modules/table-of-contents/runtime/components/BlokkliTableOfContents/index.vue +43 -0
  108. package/dist/modules/table-of-contents/runtime/components/BlokkliTableOfContents/index.vue.d.ts +44 -0
  109. package/dist/modules/table-of-contents/runtime/types/index.d.ts +4 -0
  110. package/dist/modules/table-of-contents/runtime/types/index.js +0 -0
  111. package/dist/runtime/components/Blocks/Fragment/index.vue +6 -2
  112. package/dist/runtime/components/BlokkliField.d.vue.ts +6 -0
  113. package/dist/runtime/components/BlokkliField.vue +4 -0
  114. package/dist/runtime/components/BlokkliField.vue.d.ts +6 -0
  115. package/dist/runtime/components/BlokkliItem.vue +8 -3
  116. package/dist/runtime/components/BlokkliProvider.d.vue.ts +7 -0
  117. package/dist/runtime/components/BlokkliProvider.vue +7 -1
  118. package/dist/runtime/components/BlokkliProvider.vue.d.ts +7 -0
  119. package/dist/runtime/composables/useBlokkliHelper.js +4 -2
  120. package/dist/runtime/editor/components/AnimationCanvas/index.vue +31 -22
  121. package/dist/runtime/editor/components/Banner/index.d.vue.ts +12 -2
  122. package/dist/runtime/editor/components/Banner/index.vue +4 -2
  123. package/dist/runtime/editor/components/Banner/index.vue.d.ts +12 -2
  124. package/dist/runtime/editor/components/DraggableList.d.vue.ts +2 -0
  125. package/dist/runtime/editor/components/DraggableList.vue +4 -1
  126. package/dist/runtime/editor/components/DraggableList.vue.d.ts +2 -0
  127. package/dist/runtime/editor/components/Dropdown/index.d.vue.ts +27 -0
  128. package/dist/runtime/editor/components/Dropdown/index.vue +107 -0
  129. package/dist/runtime/editor/components/Dropdown/index.vue.d.ts +27 -0
  130. package/dist/{modules/agent/runtime/app/features/agent/Panel/Input/Actions → runtime/editor/components}/DropdownItem/index.vue +1 -1
  131. package/dist/runtime/editor/components/EditProvider.d.vue.ts +2 -0
  132. package/dist/runtime/editor/components/EditProvider.vue +4 -3
  133. package/dist/runtime/editor/components/EditProvider.vue.d.ts +2 -0
  134. package/dist/runtime/editor/components/Form/Radio/index.d.vue.ts +1 -0
  135. package/dist/runtime/editor/components/Form/Radio/index.vue +3 -2
  136. package/dist/runtime/editor/components/Form/Radio/index.vue.d.ts +1 -0
  137. package/dist/runtime/editor/components/ItemIcon/index.vue +10 -2
  138. package/dist/runtime/editor/components/NestedEditorOverlay/index.d.vue.ts +13 -3
  139. package/dist/runtime/editor/components/NestedEditorOverlay/index.vue +15 -7
  140. package/dist/runtime/editor/components/NestedEditorOverlay/index.vue.d.ts +13 -3
  141. package/dist/runtime/editor/components/PreviewProvider.d.vue.ts +2 -0
  142. package/dist/runtime/editor/components/PreviewProvider.vue +3 -2
  143. package/dist/runtime/editor/components/PreviewProvider.vue.d.ts +2 -0
  144. package/dist/runtime/editor/components/ShortcutIndicator/index.vue +1 -1
  145. package/dist/runtime/editor/components/index.d.ts +3 -1
  146. package/dist/runtime/editor/components/index.js +4 -0
  147. package/dist/runtime/editor/composables/onElementResize.js +0 -1
  148. package/dist/runtime/editor/composables/useEditableFieldOverride.js +4 -5
  149. package/dist/runtime/editor/css/output.css +1 -1
  150. package/dist/runtime/editor/events/index.d.ts +7 -0
  151. package/dist/runtime/editor/features/add-list/Help/Item.vue +5 -2
  152. package/dist/runtime/editor/features/artboard/Renderer.vue +1 -1
  153. package/dist/runtime/editor/features/clipboard/index.vue +1 -1
  154. package/dist/runtime/editor/features/debug/index.vue +1 -1
  155. package/dist/runtime/editor/features/dev-mode/index.vue +86 -2
  156. package/dist/runtime/editor/features/edit/index.vue +20 -0
  157. package/dist/runtime/editor/features/fragments/types.d.ts +1 -0
  158. package/dist/runtime/editor/features/hover/Renderer/index.vue +30 -3
  159. package/dist/runtime/editor/features/hover/index.vue +1 -1
  160. package/dist/runtime/editor/features/options/Form/Checkbox/index.d.vue.ts +2 -2
  161. package/dist/runtime/editor/features/options/Form/Checkbox/index.vue +3 -3
  162. package/dist/runtime/editor/features/options/Form/Checkbox/index.vue.d.ts +2 -2
  163. package/dist/runtime/editor/features/options/Form/Checkboxes/index.d.vue.ts +2 -2
  164. package/dist/runtime/editor/features/options/Form/Checkboxes/index.vue +5 -5
  165. package/dist/runtime/editor/features/options/Form/Checkboxes/index.vue.d.ts +2 -2
  166. package/dist/runtime/editor/features/options/Form/Item.d.vue.ts +2 -2
  167. package/dist/runtime/editor/features/options/Form/Item.vue +14 -48
  168. package/dist/runtime/editor/features/options/Form/Item.vue.d.ts +2 -2
  169. package/dist/runtime/editor/features/options/Form/Number/index.d.vue.ts +3 -3
  170. package/dist/runtime/editor/features/options/Form/Number/index.vue +7 -17
  171. package/dist/runtime/editor/features/options/Form/Number/index.vue.d.ts +3 -3
  172. package/dist/runtime/editor/features/options/Form/Range/index.d.vue.ts +2 -2
  173. package/dist/runtime/editor/features/options/Form/Range/index.vue +4 -4
  174. package/dist/runtime/editor/features/options/Form/Range/index.vue.d.ts +2 -2
  175. package/dist/runtime/editor/features/options/Form/index.vue +10 -5
  176. package/dist/runtime/editor/features/selection/index.vue +2 -2
  177. package/dist/runtime/editor/features/transform/index.vue +1 -3
  178. package/dist/runtime/editor/providers/definition.d.ts +2 -2
  179. package/dist/runtime/editor/providers/definition.js +7 -1
  180. package/dist/runtime/editor/providers/dom.d.ts +5 -0
  181. package/dist/runtime/editor/providers/dom.js +11 -2
  182. package/dist/runtime/editor/providers/fields.d.ts +19 -1
  183. package/dist/runtime/editor/providers/fields.js +54 -2
  184. package/dist/runtime/editor/translations/de.json +269 -1
  185. package/dist/runtime/editor/translations/fr.json +269 -1
  186. package/dist/runtime/editor/translations/gsw_CH.json +269 -1
  187. package/dist/runtime/editor/translations/it.json +269 -1
  188. package/dist/runtime/editor/types/field.d.ts +2 -1
  189. package/dist/runtime/helpers/imports/index.d.ts +8 -1
  190. package/dist/runtime/helpers/imports/index.js +15 -6
  191. package/dist/runtime/helpers/injections.d.ts +10 -1
  192. package/dist/runtime/helpers/injections.js +6 -0
  193. package/dist/runtime/helpers/runtimeHelpers/index.js +14 -0
  194. package/dist/runtime/types/definitions.d.ts +8 -5
  195. package/dist/runtime/types/provider.d.ts +2 -0
  196. package/dist/shared/editor.6D5vApr0.mjs +30 -0
  197. package/dist/shared/{editor.DMFfaLVE.mjs → editor.BFIzNSQM.mjs} +1 -30
  198. package/dist/shared/{editor.Iax3GCvt.d.mts → editor.CWQIFIEQ.d.mts} +22 -0
  199. package/dist/types.d.mts +1 -1
  200. package/package.json +17 -1
  201. package/dist/modules/agent/runtime/app/tools/get_available_bundles/index.js +0 -104
  202. /package/dist/modules/agent/runtime/app/tools/{get_available_bundles → get_bundle_info}/index.d.ts +0 -0
  203. /package/dist/{modules/agent/runtime/app/features/agent/Panel/Input/Actions → runtime/editor/components}/DropdownItem/index.d.vue.ts +0 -0
  204. /package/dist/{modules/agent/runtime/app/features/agent/Panel/Input/Actions → runtime/editor/components}/DropdownItem/index.vue.d.ts +0 -0
@@ -0,0 +1,101 @@
1
+ import { z } from "zod";
2
+ import { defineBlokkliAgentTool } from "#blokkli/agent/app/composables";
3
+ import { mutationResultSchema } from "#blokkli/agent/app/tools/schemas";
4
+ import {
5
+ chartTypeEnum,
6
+ chartColorEnum,
7
+ chartSeriesSchema,
8
+ validateChartData
9
+ } from "../chart_schemas.js";
10
+ import { COLORS } from "#blokkli-build/charts-config";
11
+ import { getDefaultChartData } from "#blokkli/charts/types";
12
+ import { fragmentBlockBundle } from "#blokkli-build/config";
13
+ const paramsSchema = z.object({
14
+ uuid: z.string().describe("UUID of the chart paragraph to update"),
15
+ title: z.string().optional().describe("Chart title"),
16
+ type: chartTypeEnum.optional().describe("Chart type"),
17
+ categories: z.array(z.string()).min(1).optional().describe(
18
+ "Category labels (x-axis or slice names). Replaces all existing categories."
19
+ ),
20
+ series: z.array(chartSeriesSchema).min(1).optional().describe("Data series. Replaces all existing series."),
21
+ categoryColors: z.array(chartColorEnum).optional().describe(
22
+ "Color IDs per category (for pie/donut/radialBar). Auto-assigned if omitted."
23
+ ),
24
+ footnotes: z.array(z.string()).optional().describe(
25
+ "Footnote texts. Reference in categories/series names as {1}, {2}, etc."
26
+ ),
27
+ typeOptions: z.record(z.string(), z.union([z.string(), z.boolean(), z.number()])).optional().describe(
28
+ "Type-specific rendering options. Use get_chart_type_options to see available keys."
29
+ )
30
+ });
31
+ export default defineBlokkliAgentTool({
32
+ name: "update_chart",
33
+ description: "Update an existing chart. Provide only the properties you want to change \u2014 they will be merged with the current chart data. Arrays (series, categories, footnotes) are replaced entirely when provided, not merged element-by-element.",
34
+ category: "mutation",
35
+ prunedSummary: (r) => r.success ? "updated chart" : "rejected",
36
+ modes: ["editing"],
37
+ lazy: true,
38
+ label($t) {
39
+ return $t("aiAgentUpdateChartRunning", "Updating chart...");
40
+ },
41
+ paramsSchema,
42
+ resultSchema: mutationResultSchema,
43
+ requiredAdapterMethods: ["updateOptions"],
44
+ execute(ctx, params) {
45
+ const { blocks, state } = ctx.app;
46
+ const block = blocks.getBlock(params.uuid);
47
+ if (!block) {
48
+ return { error: `Paragraph not found: ${params.uuid}` };
49
+ }
50
+ if (block.bundle !== fragmentBlockBundle) {
51
+ return {
52
+ error: `Paragraph "${params.uuid}" is a "${block.bundle}", not a "${fragmentBlockBundle}".`
53
+ };
54
+ }
55
+ if (block.fragment?.name !== "blokkli_chart") {
56
+ return {
57
+ error: `Fragment "${params.uuid}" is a "${block.fragment?.name}", not a "blokkli_chart".`
58
+ };
59
+ }
60
+ let current;
61
+ const item = state.getFieldListItem(params.uuid);
62
+ const rawData = item?.options?.data;
63
+ if (rawData) {
64
+ try {
65
+ current = JSON.parse(rawData);
66
+ } catch {
67
+ current = getDefaultChartData(COLORS);
68
+ }
69
+ } else {
70
+ current = getDefaultChartData(COLORS);
71
+ }
72
+ const merged = {
73
+ title: params.title !== void 0 ? params.title : current.title,
74
+ type: params.type !== void 0 ? params.type : current.type,
75
+ categories: params.categories !== void 0 ? params.categories : current.categories,
76
+ series: params.series !== void 0 ? params.series.map((s) => ({
77
+ name: s.name,
78
+ color: s.color || "",
79
+ data: s.data
80
+ })) : current.series,
81
+ categoryColors: params.categoryColors !== void 0 ? params.categoryColors : current.categoryColors,
82
+ footnotes: params.footnotes !== void 0 ? params.footnotes : current.footnotes,
83
+ typeOptions: params.typeOptions !== void 0 ? params.typeOptions : current.typeOptions || {}
84
+ };
85
+ const result = validateChartData(merged, COLORS);
86
+ if ("error" in result) return result;
87
+ const { $t } = ctx.app;
88
+ return {
89
+ type: "options",
90
+ label: $t("aiAgentUpdateChartDone", "Updated chart"),
91
+ affectedUuids: [params.uuid],
92
+ apply: (adapter) => adapter.updateOptions([
93
+ {
94
+ uuid: params.uuid,
95
+ key: "data",
96
+ value: JSON.stringify(result.data)
97
+ }
98
+ ])
99
+ };
100
+ }
101
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: import("./types.js").ChartTypeFactory;
2
+ export default _default;
@@ -0,0 +1,68 @@
1
+ import { defineChartType } from "./define.js";
2
+ import {
3
+ xAxisOptions,
4
+ buildXAxisLabelOptions,
5
+ dataLabelsOptions,
6
+ buildDataLabelsOptions,
7
+ legendOptions,
8
+ buildLegendOptions,
9
+ gridOptions,
10
+ buildGridOptions,
11
+ strokeWidthOptions,
12
+ buildStrokeWidthOptions,
13
+ mergeShared
14
+ } from "./shared.js";
15
+ export default defineChartType(($t) => {
16
+ const shared = mergeShared(
17
+ xAxisOptions($t),
18
+ dataLabelsOptions($t),
19
+ legendOptions($t),
20
+ gridOptions($t),
21
+ strokeWidthOptions($t)
22
+ );
23
+ return {
24
+ id: "area",
25
+ hasMultipleSeries: true,
26
+ hasSeriesColors: true,
27
+ hasCategoryColors: false,
28
+ buildChartOptions(ctx) {
29
+ const strokeWidth = buildStrokeWidthOptions(ctx.typeOptions);
30
+ return {
31
+ stroke: {
32
+ curve: ctx.typeOptions.curved ? "smooth" : "straight",
33
+ ...strokeWidth.stroke
34
+ },
35
+ markers: { size: ctx.typeOptions.markers ? 5 : 0 },
36
+ xaxis: {
37
+ categories: ctx.categories,
38
+ ...buildXAxisLabelOptions(ctx.typeOptions)
39
+ },
40
+ ...buildDataLabelsOptions(ctx.typeOptions),
41
+ ...buildLegendOptions(ctx.typeOptions),
42
+ ...buildGridOptions(ctx.typeOptions)
43
+ };
44
+ },
45
+ buildSeries(ctx) {
46
+ return ctx.series.map((s) => ({ name: s.name, data: s.data }));
47
+ },
48
+ editor: {
49
+ label: $t("chartsTypeArea", "Area"),
50
+ icon: "bk_mdi_area_chart",
51
+ options: {
52
+ curved: {
53
+ type: "checkbox",
54
+ label: $t("chartsAreaCurved", "Smooth curves"),
55
+ default: false,
56
+ group: "display"
57
+ },
58
+ markers: {
59
+ type: "checkbox",
60
+ label: $t("chartsAreaMarkers", "Show markers"),
61
+ default: false,
62
+ group: "display"
63
+ },
64
+ ...shared.options
65
+ }
66
+ }
67
+ };
68
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: import("./types.js").ChartTypeFactory;
2
+ export default _default;
@@ -0,0 +1,76 @@
1
+ import { defineChartType } from "./define.js";
2
+ import {
3
+ xAxisOptions,
4
+ buildXAxisLabelOptions,
5
+ dataLabelsOptions,
6
+ buildDataLabelsOptions,
7
+ legendOptions,
8
+ buildLegendOptions,
9
+ gridOptions,
10
+ buildGridOptions,
11
+ mergeShared
12
+ } from "./shared.js";
13
+ export default defineChartType(($t) => {
14
+ const shared = mergeShared(
15
+ xAxisOptions($t),
16
+ dataLabelsOptions($t),
17
+ legendOptions($t),
18
+ gridOptions($t)
19
+ );
20
+ return {
21
+ id: "bar",
22
+ hasMultipleSeries: true,
23
+ hasSeriesColors: true,
24
+ hasCategoryColors: false,
25
+ buildChartOptions(ctx) {
26
+ return {
27
+ chart: { stacked: !!ctx.typeOptions.stacked },
28
+ plotOptions: {
29
+ bar: {
30
+ horizontal: !!ctx.typeOptions.horizontal,
31
+ borderRadius: Number(ctx.typeOptions.borderRadius) || 0
32
+ }
33
+ },
34
+ xaxis: {
35
+ categories: ctx.categories,
36
+ ...buildXAxisLabelOptions(ctx.typeOptions)
37
+ },
38
+ ...buildDataLabelsOptions(ctx.typeOptions),
39
+ ...buildLegendOptions(ctx.typeOptions),
40
+ ...buildGridOptions(ctx.typeOptions)
41
+ };
42
+ },
43
+ buildSeries(ctx) {
44
+ return ctx.series.map((s) => ({ name: s.name, data: s.data }));
45
+ },
46
+ editor: {
47
+ label: $t("chartsTypeBar", "Bar"),
48
+ icon: "bk_mdi_bar_chart",
49
+ options: {
50
+ stacked: {
51
+ type: "checkbox",
52
+ label: $t("chartsBarStacked", "Stacked"),
53
+ default: false,
54
+ group: "display"
55
+ },
56
+ horizontal: {
57
+ type: "checkbox",
58
+ label: $t("chartsBarHorizontal", "Horizontal"),
59
+ default: false,
60
+ group: "display"
61
+ },
62
+ borderRadius: {
63
+ type: "radios",
64
+ label: $t("chartsBorderRadius", "Corner radius"),
65
+ default: "0",
66
+ options: {
67
+ "0": $t("chartsBorderRadiusNone", "None"),
68
+ "4": $t("chartsBorderRadiusSmall", "Small"),
69
+ "8": $t("chartsBorderRadiusLarge", "Large")
70
+ }
71
+ },
72
+ ...shared.options
73
+ }
74
+ }
75
+ };
76
+ });
@@ -0,0 +1,2 @@
1
+ import type { ChartTypeFactory } from './types.js';
2
+ export declare function defineChartType(factory: ChartTypeFactory): ChartTypeFactory;
@@ -0,0 +1,3 @@
1
+ export function defineChartType(factory) {
2
+ return factory;
3
+ }
@@ -0,0 +1,2 @@
1
+ declare const _default: import("./types.js").ChartTypeFactory;
2
+ export default _default;
@@ -0,0 +1,45 @@
1
+ import { defineChartType } from "./define.js";
2
+ export default defineChartType(($t) => ({
3
+ id: "donut",
4
+ hasMultipleSeries: false,
5
+ hasSeriesColors: false,
6
+ hasCategoryColors: true,
7
+ buildChartOptions(ctx) {
8
+ const show = !!ctx.typeOptions.showTotal;
9
+ return {
10
+ labels: ctx.categories,
11
+ dataLabels: { enabled: !!ctx.typeOptions.showLabels },
12
+ plotOptions: {
13
+ pie: {
14
+ donut: {
15
+ labels: {
16
+ show,
17
+ total: { show }
18
+ }
19
+ }
20
+ }
21
+ }
22
+ };
23
+ },
24
+ buildSeries(ctx) {
25
+ return ctx.series[0]?.data || [];
26
+ },
27
+ editor: {
28
+ label: $t("chartsTypeDonut", "Donut"),
29
+ icon: "bk_mdi_donut_large",
30
+ options: {
31
+ showTotal: {
32
+ type: "checkbox",
33
+ label: $t("chartsDonutShowTotal", "Show total"),
34
+ default: false,
35
+ group: "display"
36
+ },
37
+ showLabels: {
38
+ type: "checkbox",
39
+ label: $t("chartsDonutShowLabels", "Show labels"),
40
+ default: true,
41
+ group: "labels"
42
+ }
43
+ }
44
+ }
45
+ }));
@@ -0,0 +1,2 @@
1
+ declare const _default: import("./types.js").ChartTypeFactory;
2
+ export default _default;
@@ -0,0 +1,54 @@
1
+ import { defineChartType } from "./define.js";
2
+ import {
3
+ xAxisOptions,
4
+ buildXAxisLabelOptions,
5
+ legendOptions,
6
+ buildLegendOptions,
7
+ gridOptions,
8
+ buildGridOptions,
9
+ mergeShared
10
+ } from "./shared.js";
11
+ export default defineChartType(($t) => {
12
+ const shared = mergeShared(
13
+ xAxisOptions($t),
14
+ legendOptions($t),
15
+ gridOptions($t)
16
+ );
17
+ return {
18
+ id: "heatmap",
19
+ hasMultipleSeries: true,
20
+ hasSeriesColors: false,
21
+ hasCategoryColors: false,
22
+ buildChartOptions(ctx) {
23
+ return {
24
+ dataLabels: { enabled: true },
25
+ plotOptions: {
26
+ heatmap: {
27
+ colorScale: { ranges: [] }
28
+ }
29
+ },
30
+ xaxis: {
31
+ ...buildXAxisLabelOptions(ctx.typeOptions)
32
+ },
33
+ ...buildLegendOptions(ctx.typeOptions),
34
+ ...buildGridOptions(ctx.typeOptions)
35
+ };
36
+ },
37
+ buildSeries(ctx) {
38
+ return ctx.series.map((s) => ({
39
+ name: s.name,
40
+ data: s.data.map((value, i) => ({
41
+ x: ctx.categories[i] || "",
42
+ y: value
43
+ }))
44
+ }));
45
+ },
46
+ editor: {
47
+ label: $t("chartsTypeHeatmap", "Heatmap"),
48
+ icon: "bk_mdi_grid_view",
49
+ options: {
50
+ ...shared.options
51
+ }
52
+ }
53
+ };
54
+ });
@@ -0,0 +1,21 @@
1
+ import type { TranslateFunction, ChartTypeDefinition } from './types.js';
2
+ /**
3
+ * Get a chart type definition using fallback labels (no real translations).
4
+ * Used by ChartRenderer which runs in both edit mode and production.
5
+ */
6
+ export declare function getChartTypeRuntime(id: string): ChartTypeDefinition | undefined;
7
+ /**
8
+ * Get all chart type definitions with translated labels.
9
+ * Used by editor components only.
10
+ */
11
+ export declare function getChartTypes($t: TranslateFunction): ChartTypeDefinition[];
12
+ /**
13
+ * Get a single chart type definition with translated labels.
14
+ * Used by editor components only.
15
+ */
16
+ export declare function getChartType(id: string, $t: TranslateFunction): ChartTypeDefinition | undefined;
17
+ /**
18
+ * Get the default type options for a chart type.
19
+ */
20
+ export declare function getDefaultTypeOptions(id: string): Record<string, unknown>;
21
+ export type { ChartTypeDefinition, ChartBuildContext, TranslateFunction, } from './types.js';
@@ -0,0 +1,47 @@
1
+ import barFactory from "./bar.js";
2
+ import lineFactory from "./line.js";
3
+ import areaFactory from "./area.js";
4
+ import pieFactory from "./pie.js";
5
+ import donutFactory from "./donut.js";
6
+ import heatmapFactory from "./heatmap.js";
7
+ import radialBarFactory from "./radialBar.js";
8
+ import radarFactory from "./radar.js";
9
+ const factories = [
10
+ barFactory,
11
+ lineFactory,
12
+ pieFactory,
13
+ areaFactory,
14
+ donutFactory,
15
+ heatmapFactory,
16
+ radialBarFactory,
17
+ radarFactory
18
+ ];
19
+ const noopT = (_key, fallback) => fallback;
20
+ const runtimeCache = {};
21
+ function ensureRuntimeCache() {
22
+ if (Object.keys(runtimeCache).length === 0) {
23
+ for (const factory of factories) {
24
+ const def = factory(noopT);
25
+ runtimeCache[def.id] = def;
26
+ }
27
+ }
28
+ }
29
+ export function getChartTypeRuntime(id) {
30
+ ensureRuntimeCache();
31
+ return runtimeCache[id];
32
+ }
33
+ export function getChartTypes($t) {
34
+ return factories.map((factory) => factory($t));
35
+ }
36
+ export function getChartType(id, $t) {
37
+ return getChartTypes($t).find((def) => def.id === id);
38
+ }
39
+ export function getDefaultTypeOptions(id) {
40
+ const def = getChartTypeRuntime(id);
41
+ if (!def) return {};
42
+ const defaults = {};
43
+ for (const [key, opt] of Object.entries(def.editor.options)) {
44
+ defaults[key] = opt.default;
45
+ }
46
+ return defaults;
47
+ }
@@ -0,0 +1,2 @@
1
+ declare const _default: import("./types.js").ChartTypeFactory;
2
+ export default _default;
@@ -0,0 +1,68 @@
1
+ import { defineChartType } from "./define.js";
2
+ import {
3
+ xAxisOptions,
4
+ buildXAxisLabelOptions,
5
+ dataLabelsOptions,
6
+ buildDataLabelsOptions,
7
+ legendOptions,
8
+ buildLegendOptions,
9
+ gridOptions,
10
+ buildGridOptions,
11
+ strokeWidthOptions,
12
+ buildStrokeWidthOptions,
13
+ mergeShared
14
+ } from "./shared.js";
15
+ export default defineChartType(($t) => {
16
+ const shared = mergeShared(
17
+ xAxisOptions($t),
18
+ dataLabelsOptions($t),
19
+ legendOptions($t),
20
+ gridOptions($t),
21
+ strokeWidthOptions($t)
22
+ );
23
+ return {
24
+ id: "line",
25
+ hasMultipleSeries: true,
26
+ hasSeriesColors: true,
27
+ hasCategoryColors: false,
28
+ buildChartOptions(ctx) {
29
+ const strokeWidth = buildStrokeWidthOptions(ctx.typeOptions);
30
+ return {
31
+ stroke: {
32
+ curve: ctx.typeOptions.curved ? "smooth" : "straight",
33
+ ...strokeWidth.stroke
34
+ },
35
+ markers: { size: ctx.typeOptions.markers ? 5 : 0 },
36
+ xaxis: {
37
+ categories: ctx.categories,
38
+ ...buildXAxisLabelOptions(ctx.typeOptions)
39
+ },
40
+ ...buildDataLabelsOptions(ctx.typeOptions),
41
+ ...buildLegendOptions(ctx.typeOptions),
42
+ ...buildGridOptions(ctx.typeOptions)
43
+ };
44
+ },
45
+ buildSeries(ctx) {
46
+ return ctx.series.map((s) => ({ name: s.name, data: s.data }));
47
+ },
48
+ editor: {
49
+ label: $t("chartsTypeLine", "Line"),
50
+ icon: "bk_mdi_show_chart",
51
+ options: {
52
+ curved: {
53
+ type: "checkbox",
54
+ label: $t("chartsLineCurved", "Smooth curves"),
55
+ default: false,
56
+ group: "display"
57
+ },
58
+ markers: {
59
+ type: "checkbox",
60
+ label: $t("chartsLineMarkers", "Show markers"),
61
+ default: false,
62
+ group: "display"
63
+ },
64
+ ...shared.options
65
+ }
66
+ }
67
+ };
68
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: import("./types.js").ChartTypeFactory;
2
+ export default _default;
@@ -0,0 +1,28 @@
1
+ import { defineChartType } from "./define.js";
2
+ export default defineChartType(($t) => ({
3
+ id: "pie",
4
+ hasMultipleSeries: false,
5
+ hasSeriesColors: false,
6
+ hasCategoryColors: true,
7
+ buildChartOptions(ctx) {
8
+ return {
9
+ labels: ctx.categories,
10
+ dataLabels: { enabled: !!ctx.typeOptions.showLabels }
11
+ };
12
+ },
13
+ buildSeries(ctx) {
14
+ return ctx.series[0]?.data || [];
15
+ },
16
+ editor: {
17
+ label: $t("chartsTypePie", "Pie"),
18
+ icon: "bk_mdi_pie_chart",
19
+ options: {
20
+ showLabels: {
21
+ type: "checkbox",
22
+ label: $t("chartsPieShowLabels", "Show labels"),
23
+ default: true,
24
+ group: "labels"
25
+ }
26
+ }
27
+ }
28
+ }));
@@ -0,0 +1,2 @@
1
+ declare const _default: import("./types.js").ChartTypeFactory;
2
+ export default _default;
@@ -0,0 +1,52 @@
1
+ import { defineChartType } from "./define.js";
2
+ import {
3
+ dataLabelsOptions,
4
+ buildDataLabelsOptions,
5
+ legendOptions,
6
+ buildLegendOptions,
7
+ mergeShared
8
+ } from "./shared.js";
9
+ export default defineChartType(($t) => {
10
+ const shared = mergeShared(dataLabelsOptions($t), legendOptions($t));
11
+ return {
12
+ id: "radar",
13
+ hasMultipleSeries: true,
14
+ hasSeriesColors: true,
15
+ hasCategoryColors: false,
16
+ buildChartOptions(ctx) {
17
+ return {
18
+ xaxis: { categories: ctx.categories },
19
+ markers: { size: ctx.typeOptions.markers ? 5 : 0 },
20
+ fill: { opacity: Number(ctx.typeOptions.fillOpacity) || 0.2 },
21
+ ...buildDataLabelsOptions(ctx.typeOptions),
22
+ ...buildLegendOptions(ctx.typeOptions)
23
+ };
24
+ },
25
+ buildSeries(ctx) {
26
+ return ctx.series.map((s) => ({ name: s.name, data: s.data }));
27
+ },
28
+ editor: {
29
+ label: $t("chartsTypeRadar", "Radar"),
30
+ icon: "bk_mdi_radar",
31
+ options: {
32
+ markers: {
33
+ type: "checkbox",
34
+ label: $t("chartsRadarMarkers", "Show markers"),
35
+ default: false,
36
+ group: "display"
37
+ },
38
+ fillOpacity: {
39
+ type: "radios",
40
+ label: $t("chartsRadarFillOpacity", "Fill opacity"),
41
+ default: "0.2",
42
+ options: {
43
+ "0.2": $t("chartsOpacityTransparent", "Transparent"),
44
+ "0.4": $t("chartsOpacityLight", "Light"),
45
+ "0.8": $t("chartsOpacitySolid", "Solid")
46
+ }
47
+ },
48
+ ...shared.options
49
+ }
50
+ }
51
+ };
52
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: import("./types.js").ChartTypeFactory;
2
+ export default _default;
@@ -0,0 +1,44 @@
1
+ import { defineChartType } from "./define.js";
2
+ export default defineChartType(($t) => ({
3
+ id: "radialBar",
4
+ hasMultipleSeries: false,
5
+ hasSeriesColors: false,
6
+ hasCategoryColors: true,
7
+ buildChartOptions(ctx) {
8
+ const showLabels = !!ctx.typeOptions.showLabels;
9
+ const showTotal = !!ctx.typeOptions.showTotal;
10
+ return {
11
+ labels: ctx.categories,
12
+ plotOptions: {
13
+ radialBar: {
14
+ dataLabels: {
15
+ name: { show: showLabels },
16
+ value: { show: showLabels },
17
+ total: { show: showTotal }
18
+ }
19
+ }
20
+ }
21
+ };
22
+ },
23
+ buildSeries(ctx) {
24
+ return ctx.series[0]?.data || [];
25
+ },
26
+ editor: {
27
+ label: $t("chartsTypeRadialBar", "Radial Bar"),
28
+ icon: "bk_mdi_track_changes",
29
+ options: {
30
+ showLabels: {
31
+ type: "checkbox",
32
+ label: $t("chartsRadialBarShowLabels", "Show labels"),
33
+ default: true,
34
+ group: "labels"
35
+ },
36
+ showTotal: {
37
+ type: "checkbox",
38
+ label: $t("chartsRadialBarShowTotal", "Show total"),
39
+ default: false,
40
+ group: "display"
41
+ }
42
+ }
43
+ }
44
+ }));