@sentropic/design-system-angular 0.37.0 → 0.38.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.
Files changed (318) hide show
  1. package/LICENSE +21 -0
  2. package/LICENSE.THIRD-PARTY.md +110 -0
  3. package/dist/Accordion.js +3 -3
  4. package/dist/Alert.js +3 -3
  5. package/dist/AnomalySwimLaneChart.js +3 -3
  6. package/dist/AppChrome.js +3 -3
  7. package/dist/AppHeader.js +3 -3
  8. package/dist/AppShell.js +3 -3
  9. package/dist/ArcDiagramChart.d.ts +3 -1
  10. package/dist/ArcDiagramChart.d.ts.map +1 -1
  11. package/dist/ArcDiagramChart.js +9 -23
  12. package/dist/ArcDiagramChart.js.map +1 -1
  13. package/dist/AreaChart.js +3 -3
  14. package/dist/AreaRangeChart.js +3 -3
  15. package/dist/AreaSplineRangeChart.js +3 -3
  16. package/dist/AspectRatio.js +3 -3
  17. package/dist/Autosave.js +3 -3
  18. package/dist/Avatar.js +3 -3
  19. package/dist/AvatarGroup.js +3 -3
  20. package/dist/BackToTop.js +3 -3
  21. package/dist/Badge.js +3 -3
  22. package/dist/BarChart.js +3 -3
  23. package/dist/BellCurveChart.js +5 -5
  24. package/dist/BoxPlotChart.js +3 -3
  25. package/dist/Breadcrumb.js +3 -3
  26. package/dist/BulletChart.js +5 -5
  27. package/dist/BumpChart.js +5 -5
  28. package/dist/Button.d.ts +5 -1
  29. package/dist/Button.d.ts.map +1 -1
  30. package/dist/Button.js +15 -3
  31. package/dist/Button.js.map +1 -1
  32. package/dist/ButtonGroup.js +3 -3
  33. package/dist/Calendar.d.ts +12 -1
  34. package/dist/Calendar.d.ts.map +1 -1
  35. package/dist/Calendar.js +27 -3
  36. package/dist/Calendar.js.map +1 -1
  37. package/dist/CalendarHeatmapChart.d.ts.map +1 -1
  38. package/dist/CalendarHeatmapChart.js +27 -25
  39. package/dist/CalendarHeatmapChart.js.map +1 -1
  40. package/dist/CandlestickChart.js +3 -3
  41. package/dist/Card.js +3 -3
  42. package/dist/ChatComposer.js +3 -3
  43. package/dist/ChatMessage.js +3 -3
  44. package/dist/ChatThread.js +3 -3
  45. package/dist/Checkbox.d.ts +3 -1
  46. package/dist/Checkbox.d.ts.map +1 -1
  47. package/dist/Checkbox.js +9 -3
  48. package/dist/Checkbox.js.map +1 -1
  49. package/dist/CheckboxGroup.js +3 -3
  50. package/dist/ChordDiagram.js +3 -3
  51. package/dist/CodeSnippet.js +3 -3
  52. package/dist/Col.js +3 -3
  53. package/dist/Collapsible.js +3 -3
  54. package/dist/ColorScaleBar.js +3 -3
  55. package/dist/ColorSwatch.js +3 -3
  56. package/dist/ColumnPyramidChart.js +3 -3
  57. package/dist/ColumnRangeChart.js +3 -3
  58. package/dist/ComboChart.js +3 -3
  59. package/dist/Combobox.js +3 -3
  60. package/dist/ConfigItemCard.js +3 -3
  61. package/dist/Container.js +3 -3
  62. package/dist/ContentSwitcher.js +3 -3
  63. package/dist/ContextPanel.js +3 -3
  64. package/dist/ContourChart.d.ts.map +1 -1
  65. package/dist/ContourChart.js +51 -45
  66. package/dist/ContourChart.js.map +1 -1
  67. package/dist/CopyButton.js +3 -3
  68. package/dist/Dashboard.js +3 -3
  69. package/dist/DashboardGrid.js +3 -3
  70. package/dist/DataImage.js +3 -3
  71. package/dist/DataTable.js +3 -3
  72. package/dist/DatePicker.js +3 -3
  73. package/dist/DecompositionTreeChart.js +3 -3
  74. package/dist/Density2DChart.js +3 -3
  75. package/dist/DependencyWheelChart.d.ts +3 -1
  76. package/dist/DependencyWheelChart.d.ts.map +1 -1
  77. package/dist/DependencyWheelChart.js +9 -23
  78. package/dist/DependencyWheelChart.js.map +1 -1
  79. package/dist/DisplaySettings.js +3 -3
  80. package/dist/DivergentBarChart.js +3 -3
  81. package/dist/Divider.js +3 -3
  82. package/dist/DonutChart.js +3 -3
  83. package/dist/Drawer.js +3 -3
  84. package/dist/Dropdown.js +3 -3
  85. package/dist/DumbbellChart.js +5 -5
  86. package/dist/Embed.js +3 -3
  87. package/dist/EmptyState.js +3 -3
  88. package/dist/ErrorBarChart.js +3 -3
  89. package/dist/ErrorSummary.js +3 -3
  90. package/dist/EventFeedPanel.js +5 -5
  91. package/dist/FieldCard.js +3 -3
  92. package/dist/FileUploader.js +3 -3
  93. package/dist/FilterBar.js +3 -3
  94. package/dist/FilterPill.js +3 -3
  95. package/dist/FlamegraphChart.js +3 -3
  96. package/dist/Flex.js +3 -3
  97. package/dist/Footer.js +3 -3
  98. package/dist/ForceGraph.js +3 -3
  99. package/dist/Form.js +3 -3
  100. package/dist/FormGroup.js +3 -3
  101. package/dist/FunnelChart.js +3 -3
  102. package/dist/GanttChart.js +3 -3
  103. package/dist/GaugeChart.js +3 -3
  104. package/dist/GeoChart.js +5 -5
  105. package/dist/GraphLegend.js +3 -3
  106. package/dist/Grid.js +3 -3
  107. package/dist/HLCChart.js +3 -3
  108. package/dist/Header.js +3 -3
  109. package/dist/HeatmapChart.d.ts.map +1 -1
  110. package/dist/HeatmapChart.js +51 -45
  111. package/dist/HeatmapChart.js.map +1 -1
  112. package/dist/HeikinAshiChart.js +3 -3
  113. package/dist/Hidden.js +3 -3
  114. package/dist/Highlight.js +3 -3
  115. package/dist/HistogramChart.js +3 -3
  116. package/dist/HollowCandlestickChart.js +3 -3
  117. package/dist/Icon.d.ts +6 -1
  118. package/dist/Icon.d.ts.map +1 -1
  119. package/dist/Icon.js +46 -4
  120. package/dist/Icon.js.map +1 -1
  121. package/dist/IconButton.js +3 -3
  122. package/dist/IdentityMenu.js +3 -3
  123. package/dist/Inline.d.ts +16 -1
  124. package/dist/Inline.d.ts.map +1 -1
  125. package/dist/Inline.js +36 -5
  126. package/dist/Inline.js.map +1 -1
  127. package/dist/InlineLoading.js +3 -3
  128. package/dist/Input.d.ts +3 -1
  129. package/dist/Input.d.ts.map +1 -1
  130. package/dist/Input.js +9 -3
  131. package/dist/Input.js.map +1 -1
  132. package/dist/ItemChart.js +3 -3
  133. package/dist/KanbanBoard.js +3 -3
  134. package/dist/KpiCard.d.ts.map +1 -1
  135. package/dist/KpiCard.js +9 -4
  136. package/dist/KpiCard.js.map +1 -1
  137. package/dist/LanguageSelector.js +3 -3
  138. package/dist/LanguageToggle.js +3 -3
  139. package/dist/LineChart.d.ts +12 -0
  140. package/dist/LineChart.d.ts.map +1 -1
  141. package/dist/LineChart.js +15 -6
  142. package/dist/LineChart.js.map +1 -1
  143. package/dist/Link.js +3 -3
  144. package/dist/ListReportPage.js +3 -3
  145. package/dist/LoadingState.js +3 -3
  146. package/dist/LollipopChart.js +3 -3
  147. package/dist/MarimekkoChart.js +5 -5
  148. package/dist/MasterDetail.js +3 -3
  149. package/dist/MediaContent.js +3 -3
  150. package/dist/Menu.js +3 -3
  151. package/dist/MenuPopover.d.ts +25 -3
  152. package/dist/MenuPopover.d.ts.map +1 -1
  153. package/dist/MenuPopover.js +105 -15
  154. package/dist/MenuPopover.js.map +1 -1
  155. package/dist/MenuTriggerButton.js +3 -3
  156. package/dist/MessageActions.js +3 -3
  157. package/dist/MessageStatusBadge.js +3 -3
  158. package/dist/Modal.js +3 -3
  159. package/dist/MultiSelect.js +3 -3
  160. package/dist/NavActionStack.js +3 -3
  161. package/dist/NavDrawer.js +3 -3
  162. package/dist/NavItem.js +3 -3
  163. package/dist/NavRail.js +3 -3
  164. package/dist/NavSection.d.ts +1 -1
  165. package/dist/NavSection.d.ts.map +1 -1
  166. package/dist/NavSection.js +20 -9
  167. package/dist/NavSection.js.map +1 -1
  168. package/dist/NavShell.js +3 -3
  169. package/dist/Notification.js +3 -3
  170. package/dist/NumberInput.d.ts +3 -1
  171. package/dist/NumberInput.d.ts.map +1 -1
  172. package/dist/NumberInput.js +9 -3
  173. package/dist/NumberInput.js.map +1 -1
  174. package/dist/OHLCChart.js +5 -5
  175. package/dist/ObjectPage.js +3 -3
  176. package/dist/OrderedList.js +3 -3
  177. package/dist/OrganizationChart.js +5 -5
  178. package/dist/OverflowMenu.js +3 -3
  179. package/dist/Overline.js +3 -3
  180. package/dist/PackedBubblesChart.js +5 -5
  181. package/dist/Pagination.js +3 -3
  182. package/dist/PaginationNav.js +3 -3
  183. package/dist/PanelSection.d.ts +12 -0
  184. package/dist/PanelSection.d.ts.map +1 -1
  185. package/dist/PanelSection.js +16 -4
  186. package/dist/PanelSection.js.map +1 -1
  187. package/dist/PanelStack.d.ts +17 -0
  188. package/dist/PanelStack.d.ts.map +1 -1
  189. package/dist/PanelStack.js +20 -3
  190. package/dist/PanelStack.js.map +1 -1
  191. package/dist/ParallelCoordinatesChart.js +5 -5
  192. package/dist/ParetoChart.js +5 -5
  193. package/dist/PasswordInput.js +3 -3
  194. package/dist/PointAndFigureChart.d.ts.map +1 -1
  195. package/dist/PointAndFigureChart.js +19 -15
  196. package/dist/PointAndFigureChart.js.map +1 -1
  197. package/dist/PolygonChart.js +5 -5
  198. package/dist/Popover.js +3 -3
  199. package/dist/Popper.js +3 -3
  200. package/dist/Portal.js +3 -3
  201. package/dist/PriorityMatrix.d.ts +103 -0
  202. package/dist/PriorityMatrix.d.ts.map +1 -0
  203. package/dist/PriorityMatrix.js +495 -0
  204. package/dist/PriorityMatrix.js.map +1 -0
  205. package/dist/ProgressBar.js +3 -3
  206. package/dist/ProgressIndicator.js +3 -3
  207. package/dist/Quote.js +3 -3
  208. package/dist/RadarChart.js +3 -3
  209. package/dist/Radio.js +3 -3
  210. package/dist/RadioGroup.js +3 -3
  211. package/dist/RangeSlider.js +3 -3
  212. package/dist/Rating.js +3 -3
  213. package/dist/RenkoChart.d.ts.map +1 -1
  214. package/dist/RenkoChart.js +22 -16
  215. package/dist/RenkoChart.js.map +1 -1
  216. package/dist/RibbonChart.js +3 -3
  217. package/dist/RoseChart.js +3 -3
  218. package/dist/Row.js +3 -3
  219. package/dist/SankeyChart.js +3 -3
  220. package/dist/ScatterPlot.js +3 -3
  221. package/dist/ScoreCard.js +3 -3
  222. package/dist/Search.d.ts.map +1 -1
  223. package/dist/Search.js +7 -5
  224. package/dist/Search.js.map +1 -1
  225. package/dist/Select.d.ts +3 -1
  226. package/dist/Select.d.ts.map +1 -1
  227. package/dist/Select.js +9 -3
  228. package/dist/Select.js.map +1 -1
  229. package/dist/SelectableList.js +3 -3
  230. package/dist/SelectableRow.js +3 -3
  231. package/dist/SelectionChip.d.ts.map +1 -1
  232. package/dist/SelectionChip.js +7 -5
  233. package/dist/SelectionChip.js.map +1 -1
  234. package/dist/SideNav.js +3 -3
  235. package/dist/SkeletonText.js +3 -3
  236. package/dist/SkipLink.js +3 -3
  237. package/dist/SlideIndicator.js +3 -3
  238. package/dist/Slider.js +3 -3
  239. package/dist/SolidGaugeChart.js +3 -3
  240. package/dist/Sparkline.js +3 -3
  241. package/dist/Stack.js +3 -3
  242. package/dist/StackedBarChart.d.ts.map +1 -1
  243. package/dist/StackedBarChart.js +32 -18
  244. package/dist/StackedBarChart.js.map +1 -1
  245. package/dist/StateTimelineChart.js +3 -3
  246. package/dist/StatusDot.js +3 -3
  247. package/dist/StatusHistoryChart.js +3 -3
  248. package/dist/StepLineChart.js +3 -3
  249. package/dist/Stepper.js +3 -3
  250. package/dist/StreamgraphChart.js +3 -3
  251. package/dist/StreamingMessage.js +3 -3
  252. package/dist/StructuredList.js +3 -3
  253. package/dist/SunburstChart.js +5 -5
  254. package/dist/Switch.js +3 -3
  255. package/dist/Table.js +3 -3
  256. package/dist/TableOfContents.js +3 -3
  257. package/dist/Tabs.js +3 -3
  258. package/dist/Tag.js +3 -3
  259. package/dist/Textarea.d.ts +3 -1
  260. package/dist/Textarea.d.ts.map +1 -1
  261. package/dist/Textarea.js +9 -3
  262. package/dist/Textarea.js.map +1 -1
  263. package/dist/ThemeProvider.js +3 -3
  264. package/dist/Tile.js +3 -3
  265. package/dist/TileGroup.js +3 -3
  266. package/dist/TileMapChart.js +3 -3
  267. package/dist/TimePicker.js +3 -3
  268. package/dist/TimeRangePicker.d.ts +23 -2
  269. package/dist/TimeRangePicker.d.ts.map +1 -1
  270. package/dist/TimeRangePicker.js +156 -24
  271. package/dist/TimeRangePicker.js.map +1 -1
  272. package/dist/Timeline.js +3 -3
  273. package/dist/TimelineChart.d.ts.map +1 -1
  274. package/dist/TimelineChart.js +4 -4
  275. package/dist/TimelineChart.js.map +1 -1
  276. package/dist/Toast.js +3 -3
  277. package/dist/Toggle.js +3 -3
  278. package/dist/Toggletip.js +3 -3
  279. package/dist/Tooltip.js +3 -3
  280. package/dist/TraceWaterfallChart.js +3 -3
  281. package/dist/Transcription.js +3 -3
  282. package/dist/TreeView.js +3 -3
  283. package/dist/TreegraphChart.js +5 -5
  284. package/dist/TreemapChart.js +5 -5
  285. package/dist/Typography.js +3 -3
  286. package/dist/UnorderedList.js +3 -3
  287. package/dist/UtilityPanel.js +3 -3
  288. package/dist/VariablePieChart.js +3 -3
  289. package/dist/VectorFieldChart.d.ts.map +1 -1
  290. package/dist/VectorFieldChart.js +20 -16
  291. package/dist/VectorFieldChart.js.map +1 -1
  292. package/dist/VennChart.js +3 -3
  293. package/dist/ViolinChart.js +3 -3
  294. package/dist/WaffleChart.js +3 -3
  295. package/dist/WaterfallChart.js +3 -3
  296. package/dist/WindBarbChart.d.ts.map +1 -1
  297. package/dist/WindBarbChart.js +19 -15
  298. package/dist/WindBarbChart.js.map +1 -1
  299. package/dist/Wizard.js +4 -4
  300. package/dist/WordCloudChart.js +3 -3
  301. package/dist/chartScale.d.ts +8 -0
  302. package/dist/chartScale.d.ts.map +1 -1
  303. package/dist/chartScale.js +48 -5
  304. package/dist/chartScale.js.map +1 -1
  305. package/dist/index.d.ts +2 -0
  306. package/dist/index.d.ts.map +1 -1
  307. package/dist/index.js +1 -0
  308. package/dist/index.js.map +1 -1
  309. package/dist/priorityLabels.d.ts +143 -0
  310. package/dist/priorityLabels.d.ts.map +1 -0
  311. package/dist/priorityLabels.js +240 -0
  312. package/dist/priorityLabels.js.map +1 -0
  313. package/dist/styles.css +87 -4
  314. package/package.json +8 -6
  315. package/dist/GeoMap.d.ts +0 -204
  316. package/dist/GeoMap.d.ts.map +0 -1
  317. package/dist/GeoMap.js +0 -715
  318. package/dist/GeoMap.js.map +0 -1
@@ -0,0 +1,240 @@
1
+ /**
2
+ * Internal priority-label placement for the DS PriorityMatrix component.
3
+ *
4
+ * STRUCTURAL TWIN of packages/dataviz-core/src/priorityMatrix.ts: same
5
+ * algorithm, same types, same behaviour. Duplicated (not imported) on purpose:
6
+ * the DS layer must not depend on @sentropic/dataviz-core, so this copy is
7
+ * kept in sync by hand. A shared golden-vector test pins all five copies to
8
+ * identical placements. Not exported from the package barrel (internal
9
+ * component use only).
10
+ */
11
+ /**
12
+ * Quadrant of a datum given thresholds (defaults 50/50).
13
+ * x = complexity (low left), y = value (high top).
14
+ */
15
+ export function priorityQuadrant(x, y, xThreshold = 50, yThreshold = 50) {
16
+ if (x < xThreshold && y >= yThreshold)
17
+ return 'quick-wins';
18
+ if (x >= xThreshold && y >= yThreshold)
19
+ return 'major-projects';
20
+ if (x < xThreshold && y < yThreshold)
21
+ return 'wait';
22
+ return 'drop';
23
+ }
24
+ /**
25
+ * Rough box estimate from a label string when the caller has no measurement.
26
+ * Single line up to 12 chars, two lines beyond; capped at 120px wide.
27
+ *
28
+ * This is a glyph-count MODEL, not a measurement: it assumes narrow latin
29
+ * glyphs at 11px. Wide latin runs overflow the box (Inter 11px measured in
30
+ * Chromium, review figures: "MMMMMMMMMM" by 17.7px, "WWWWWWWWWWWW" by 26.7px;
31
+ * same-direction check with DejaVu Sans 11px advances: 12.9px and 34.5px) and
32
+ * CJK text overflows further ("データ可視化の基盤" by 24.0px in Inter 11px).
33
+ * The non-overlap behaviour only holds for narrow latin; there is currently
34
+ * no prop to pass caller-measured boxes through the DS components.
35
+ */
36
+ export function estimatePriorityLabelBox(label) {
37
+ const chars = [...label].length;
38
+ if (chars === 0)
39
+ return { w: 12, h: 20 };
40
+ const lines = chars > 12 ? 2 : 1;
41
+ const longest = lines === 2 ? Math.ceil(chars / 2) : chars;
42
+ return { w: Math.min(120, 12 + 7 * longest), h: lines === 2 ? 34 : 20 };
43
+ }
44
+ const CANDIDATE_GAP = 8;
45
+ function mulberry32(seed) {
46
+ let a = seed >>> 0;
47
+ return () => {
48
+ a |= 0;
49
+ a = (a + 0x6d2b79f5) | 0;
50
+ let t = Math.imul(a ^ (a >>> 15), 1 | a);
51
+ t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;
52
+ return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
53
+ };
54
+ }
55
+ function overlapArea(ax, ay, aw, ah, bx, by, bw, bh) {
56
+ const dx = Math.min(ax + aw, bx + bw) - Math.max(ax, bx);
57
+ const dy = Math.min(ay + ah, by + bh) - Math.max(ay, by);
58
+ return dx > 0 && dy > 0 ? dx * dy : 0;
59
+ }
60
+ function pointInBox(px, py, x, y, w, h, pad = 4) {
61
+ return px > x - pad && px < x + w + pad && py > y - pad && py < y + h + pad;
62
+ }
63
+ function clampInto(x, y, w, h, f) {
64
+ const minX = f.marginLeft;
65
+ const minY = f.marginTop;
66
+ const maxX = f.marginLeft + f.plotWidth - w;
67
+ const maxY = f.marginTop + f.plotHeight - h;
68
+ // Box wider/taller than the plot: pin to the origin instead of inverting.
69
+ if (maxX < minX)
70
+ return { x: minX, y: Math.min(Math.max(y, minY), Math.max(minY, f.marginTop + f.plotHeight - h)) };
71
+ if (maxY < minY)
72
+ return { x: Math.min(Math.max(x, minX), maxX), y: minY };
73
+ return { x: Math.min(Math.max(x, minX), maxX), y: Math.min(Math.max(y, minY), maxY) };
74
+ }
75
+ /**
76
+ * Place one label per point. Never throws on degenerate input: non-finite
77
+ * coordinates fall back to the plot origin, empty arrays yield [].
78
+ *
79
+ * Cost model: label/label overlap area, point-cover (a label box covering ANY
80
+ * anchor — including its own — costs 300 in seeding, 800 in annealing, so
81
+ * opaque label boxes avoid hiding points), obstacle overlap, anchor distance,
82
+ * and out-of-frame penalties, refined by fixed-schedule simulated annealing.
83
+ *
84
+ * Complexity is O(n^2) per energy evaluation with max(1500, n*120) iterations,
85
+ * i.e. O(n^3) overall (the 1500 floor only dominates below 13 points, since n*120 passes 1500 at n=13). Measured
86
+ * (Node 22, desktop class, seeded random sets with long 2-line labels):
87
+ * n=13 in 3.2ms, n=30 in 13.7ms, n=50 in 36.8ms, n=80 in 137.8ms, n=100 in
88
+ * 258.9ms. Overlap counts are set-dependent (0/1/15/83/176 on that
89
+ * adversarial set). Recommended cap: around 50 points; beyond that both
90
+ * latency and overlaps degrade.
91
+ *
92
+ * Frame floor: with the shipped DS configuration (splitLabel boxes, threshold
93
+ * and name obstacles) the 13-point reference set is clean at 640x400, shows
94
+ * 1 overlap at 480x300 and 400x250, 9 overlaps at 320x200, 35 at 200x140, and
95
+ * 78 overlaps plus 12 out-of-plot boxes at 120x90. Do not render below
96
+ * roughly 480x300.
97
+ */
98
+ export function placePriorityLabels(points, boxes, frame, opts = {}) {
99
+ const xT = opts.xThreshold ?? 50;
100
+ const yT = opts.yThreshold ?? 50;
101
+ const seed = opts.seed ?? 42;
102
+ const obstacles = (opts.obstacles ?? []).filter((o) => Number.isFinite(o.x) && Number.isFinite(o.y) && o.w > 0 && o.h > 0);
103
+ const n = points.length;
104
+ if (n === 0)
105
+ return [];
106
+ const anchors = points.map((p) => ({
107
+ ax: Number.isFinite(p.x)
108
+ ? frame.marginLeft + (Math.min(Math.max(p.x, 0), 100) / 100) * frame.plotWidth
109
+ : frame.marginLeft,
110
+ ay: Number.isFinite(p.y)
111
+ ? frame.marginTop + (1 - Math.min(Math.max(p.y, 0), 100) / 100) * frame.plotHeight
112
+ : frame.marginTop,
113
+ }));
114
+ const sizes = points.map((_, i) => {
115
+ const b = boxes[i];
116
+ const w = b && Number.isFinite(b.w) && b.w > 0 ? b.w : 12;
117
+ const h = b && Number.isFinite(b.h) && b.h > 0 ? b.h : 20;
118
+ return { w, h };
119
+ });
120
+ const offsets = [
121
+ [0, -1], [1, -1], [1, 0], [1, 1], [0, 1], [-1, 1], [-1, 0], [-1, -1],
122
+ ];
123
+ const costAt = (idx, x, y, pos) => {
124
+ let c = 0;
125
+ const { w, h } = sizes[idx];
126
+ const left = frame.marginLeft;
127
+ const top = frame.marginTop;
128
+ const right = left + frame.plotWidth;
129
+ const bottom = top + frame.plotHeight;
130
+ c += (Math.max(left - x, 0) + Math.max(x + w - right, 0) + Math.max(top - y, 0) + Math.max(y + h - bottom, 0)) * 400;
131
+ for (let j = 0; j < n; j++) {
132
+ if (j === idx || pos[j] === undefined)
133
+ continue;
134
+ c += overlapArea(x, y, w, h, pos[j].x, pos[j].y, sizes[j].w, sizes[j].h) * 2;
135
+ }
136
+ for (let j = 0; j < n; j++) {
137
+ if (pointInBox(anchors[j].ax, anchors[j].ay, x, y, w, h))
138
+ c += 300;
139
+ }
140
+ // Obstacles (threshold bands, quadrant names) cost 4x a label/label overlap
141
+ // per px2. That is a nudge, not a veto: crossing a 6px band with a 68x20
142
+ // box costs 960 here against 2720 for fully overlapping another label,
143
+ // about a third, so a band is still crossed when nothing else fits.
144
+ for (const o of obstacles) {
145
+ c += overlapArea(x, y, w, h, o.x, o.y, o.w, o.h) * 8;
146
+ }
147
+ c += Math.hypot(x + w / 2 - anchors[idx].ax, y + h / 2 - anchors[idx].ay) * 0.5;
148
+ return c;
149
+ };
150
+ // Greedy seeding in stable y-then-x order.
151
+ const order = points.map((_, i) => i).sort((a, b) => anchors[a].ay - anchors[b].ay || anchors[a].ax - anchors[b].ax);
152
+ const pos = new Array(n);
153
+ for (const idx of order) {
154
+ let bestX = anchors[idx].ax;
155
+ let bestY = anchors[idx].ay;
156
+ let bestC = Infinity;
157
+ for (const [dx, dy] of offsets) {
158
+ const cx = anchors[idx].ax + dx * (sizes[idx].w / 2 + CANDIDATE_GAP) - sizes[idx].w / 2;
159
+ const cy = anchors[idx].ay + dy * (sizes[idx].h / 2 + CANDIDATE_GAP) - sizes[idx].h / 2;
160
+ const cc = costAt(idx, cx, cy, pos);
161
+ if (cc < bestC) {
162
+ bestC = cc;
163
+ bestX = cx;
164
+ bestY = cy;
165
+ }
166
+ }
167
+ const cl = clampInto(bestX, bestY, sizes[idx].w, sizes[idx].h, frame);
168
+ pos[idx] = cl;
169
+ }
170
+ // Simulated-annealing refinement (fixed seed ⇒ deterministic).
171
+ const rnd = mulberry32(seed);
172
+ const energy = () => {
173
+ let e = 0;
174
+ for (let i = 0; i < n; i++) {
175
+ const { w, h } = sizes[i];
176
+ e += Math.hypot(pos[i].x + w / 2 - anchors[i].ax, pos[i].y + h / 2 - anchors[i].ay) * 0.6;
177
+ if (pos[i].x < frame.marginLeft ||
178
+ pos[i].y < frame.marginTop ||
179
+ pos[i].x + w > frame.marginLeft + frame.plotWidth ||
180
+ pos[i].y + h > frame.marginTop + frame.plotHeight) {
181
+ e += 5000;
182
+ }
183
+ for (let j = 0; j < n; j++) {
184
+ if (pointInBox(anchors[j].ax, anchors[j].ay, pos[i].x, pos[i].y, w, h))
185
+ e += 800;
186
+ }
187
+ for (const o of obstacles) {
188
+ e += overlapArea(pos[i].x, pos[i].y, w, h, o.x, o.y, o.w, o.h) * 12;
189
+ }
190
+ for (let j = i + 1; j < n; j++) {
191
+ e += overlapArea(pos[i].x, pos[i].y, w, h, pos[j].x, pos[j].y, sizes[j].w, sizes[j].h) * 3;
192
+ }
193
+ }
194
+ return e;
195
+ };
196
+ let e = energy();
197
+ let temp = 800;
198
+ const iters = Math.max(1500, n * 120);
199
+ const cool = Math.pow(1 / 800, 1 / iters);
200
+ for (let k = 0; k < iters; k++) {
201
+ const i = Math.floor(rnd() * n);
202
+ const ox = pos[i].x;
203
+ const oy = pos[i].y;
204
+ const step = 6 + temp / 40;
205
+ const cl = clampInto(pos[i].x + (rnd() * 2 - 1) * step, pos[i].y + (rnd() * 2 - 1) * step, sizes[i].w, sizes[i].h, frame);
206
+ pos[i] = cl;
207
+ const ne = energy();
208
+ if (ne < e || rnd() < Math.exp((e - ne) / Math.max(temp, 1e-9))) {
209
+ e = ne;
210
+ }
211
+ else {
212
+ pos[i] = { x: ox, y: oy };
213
+ }
214
+ temp *= cool;
215
+ }
216
+ return points.map((p, i) => {
217
+ const { w, h } = sizes[i];
218
+ const bx = pos[i].x;
219
+ const by = pos[i].y;
220
+ // Leader from the closest point of the box to the anchor (edge-clamped;
221
+ // zero-length when the anchor lies inside the box) to the anchor.
222
+ const cx = Math.min(Math.max(anchors[i].ax, bx), bx + w);
223
+ const cy = Math.min(Math.max(anchors[i].ay, by), by + h);
224
+ return {
225
+ index: i,
226
+ x: bx,
227
+ y: by,
228
+ w,
229
+ h,
230
+ anchorX: anchors[i].ax,
231
+ anchorY: anchors[i].ay,
232
+ leaderX1: cx,
233
+ leaderY1: cy,
234
+ leaderX2: anchors[i].ax,
235
+ leaderY2: anchors[i].ay,
236
+ quadrant: priorityQuadrant(p.x, p.y, xT, yT),
237
+ };
238
+ });
239
+ }
240
+ //# sourceMappingURL=priorityLabels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priorityLabels.js","sourceRoot":"","sources":["../src/priorityLabels.ts"],"names":[],"mappings":"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"}
package/dist/styles.css CHANGED
@@ -1573,7 +1573,9 @@
1573
1573
 
1574
1574
  .st-contentSwitcher__option--selected {
1575
1575
  background: var(--st-semantic-surface-default);
1576
- box-shadow: var(--st-shadow-subtle);
1576
+ box-shadow:
1577
+ inset 0 0 0 1px var(--st-semantic-border-interactive),
1578
+ var(--st-shadow-subtle);
1577
1579
  color: var(--st-semantic-text-primary);
1578
1580
  }
1579
1581
 
@@ -3318,6 +3320,34 @@
3318
3320
 
3319
3321
  .st-highlight__body p { margin: 0; }
3320
3322
 
3323
+ /* Icon (.st-icon) — stroke width and colour come from the theme tokens
3324
+ (--st-component-icon-strokeWidth / --st-component-icon-color).
3325
+ - The selectors only match the DS defaults: stroke-width 2.25 set by no prop
3326
+ (an explicit strokeWidth prop is marked data-st-icon-stroke) and stroke
3327
+ currentColor. An explicit prop or colour keeps its presentation attribute.
3328
+ - The rules live in the cascade layer `st-icon`. A layered rule still beats
3329
+ the SVG presentation attributes, and ANY unlayered consumer rule beats it,
3330
+ whatever its specificity or position.
3331
+ - A consumer rule inside a layer (Tailwind v4 utilities, any @layer CSS) only
3332
+ wins if `st-icon` comes BEFORE that layer in the layer order, which is set
3333
+ by first appearance. Declare it first, before Tailwind:
3334
+ @layer st-icon;
3335
+ @import "tailwindcss";
3336
+ or load this stylesheet before any layered CSS. If `st-icon` is declared
3337
+ after the consumer's layers, the token rules beat the consumer's layered
3338
+ rules on the icon.
3339
+ - The var() fallbacks reproduce the former render when no theme is loaded.
3340
+ Same rules as the Svelte Icon component. */
3341
+ @layer st-icon {
3342
+ :where(.st-icon[stroke-width="2.25"]:not([data-st-icon-stroke])) {
3343
+ stroke-width: var(--st-component-icon-strokeWidth, 2.25);
3344
+ }
3345
+
3346
+ :where(.st-icon[stroke="currentColor"]) {
3347
+ stroke: var(--st-component-icon-color, currentColor);
3348
+ }
3349
+ }
3350
+
3321
3351
  .st-iconButton {
3322
3352
  align-items: center;
3323
3353
  background: transparent;
@@ -4055,7 +4085,14 @@
4055
4085
  max-height: calc(100vh - 2rem);
4056
4086
  overflow: auto;
4057
4087
  padding: 0;
4058
- position: absolute;
4088
+ /* The Popover API UA sheet gives [popover] `inset: 0; margin: auto`: without
4089
+ this reset the top-layer panel is re-centred between its top/left and the
4090
+ viewport edges instead of sitting on the trigger. Inline top/left win. */
4091
+ inset: auto;
4092
+ margin: 0;
4093
+ /* Viewport coordinates from getBoundingClientRect: fixed, never absolute
4094
+ (absolute + document coords broke inside any positioned ancestor). */
4095
+ position: fixed;
4059
4096
  z-index: var(--st-component-popover-zIndex, 80);
4060
4097
  }
4061
4098
 
@@ -8088,7 +8125,7 @@
8088
8125
 
8089
8126
  .st-radioGroup__legend {
8090
8127
  color: var(--st-component-field-labelText, var(--st-semantic-text-primary));
8091
- font-size: 0.9375rem;
8128
+ font-size: var(--st-component-selection-legendFontSize, 0.9375rem);
8092
8129
  font-weight: 650;
8093
8130
  line-height: 1.3;
8094
8131
  padding: 0;
@@ -8777,7 +8814,15 @@
8777
8814
  }
8778
8815
 
8779
8816
  .st-calendar__day--inRange {
8780
- background: var(--st-component-control-hoverBackground, var(--st-semantic-surface-subtle));
8817
+ background: var(
8818
+ --st-component-calendar-rangeBackground,
8819
+ color-mix(
8820
+ in srgb,
8821
+ var(--st-semantic-action-primary) 32%,
8822
+ var(--st-component-popover-background, var(--st-semantic-surface-raised))
8823
+ )
8824
+ );
8825
+ color: var(--st-component-popover-text, var(--st-semantic-text-primary));
8781
8826
  }
8782
8827
 
8783
8828
  .st-calendar__day--selected {
@@ -18160,6 +18205,17 @@
18160
18205
  min-width: 16rem;
18161
18206
  }
18162
18207
 
18208
+ .st-timeRangePicker__customExtra {
18209
+ display: flex;
18210
+ flex-direction: column;
18211
+ gap: var(--st-spacing-2, 0.5rem);
18212
+ }
18213
+
18214
+ /* Angular always renders the projection host; hide it when nothing is projected. */
18215
+ .st-timeRangePicker__customExtra:empty {
18216
+ display: none;
18217
+ }
18218
+
18163
18219
  .st-timeRangePicker__bounds {
18164
18220
  display: grid;
18165
18221
  gap: var(--st-spacing-3, 0.75rem);
@@ -18341,3 +18397,30 @@
18341
18397
  padding-block: 0;
18342
18398
  visibility: hidden;
18343
18399
  }
18400
+
18401
+ /* PriorityMatrix — 2x2 value/complexity matrix with placed labels. Token-only. */
18402
+ .st-priorityMatrix { color: var(--st-semantic-text-secondary); display: block; font-family: inherit; position: relative; width: 100%; }
18403
+ .st-priorityMatrix__visual { display: block; }
18404
+ .st-priorityMatrix svg { display: block; overflow: visible; }
18405
+ .st-priorityMatrix__title { fill: var(--st-semantic-text-primary); font-size: 0.875rem; font-weight: 700; }
18406
+ .st-priorityMatrix__quad--quick-wins { fill: color-mix(in srgb, var(--st-semantic-feedback-success) 12%, transparent); }
18407
+ .st-priorityMatrix__quad--major-projects { fill: color-mix(in srgb, var(--st-semantic-feedback-info) 12%, transparent); }
18408
+ .st-priorityMatrix__quad--wait { fill: color-mix(in srgb, var(--st-semantic-feedback-warning) 12%, transparent); }
18409
+ .st-priorityMatrix__quad--drop { fill: color-mix(in srgb, var(--st-semantic-border-subtle) 22%, transparent); }
18410
+ .st-priorityMatrix__threshold { stroke: var(--st-semantic-text-secondary); stroke-width: 1.5; stroke-dasharray: 5 4; }
18411
+ .st-priorityMatrix__quadName { fill: var(--st-semantic-text-secondary); font-size: 0.6875rem; font-weight: 600; }
18412
+ .st-priorityMatrix__grid { stroke: var(--st-semantic-border-subtle); stroke-dasharray: 2 3; stroke-width: 1; opacity: 0.7; }
18413
+ .st-priorityMatrix__axis { stroke: var(--st-semantic-border-subtle); stroke-width: 1; }
18414
+ .st-priorityMatrix__tick { fill: var(--st-semantic-text-secondary); font-size: 0.6875rem; }
18415
+ .st-priorityMatrix__axisLabel { fill: var(--st-semantic-text-secondary); font-size: 0.75rem; font-weight: 600; }
18416
+ .st-priorityMatrix__point--category1 { fill: var(--st-semantic-data-category1); }
18417
+ .st-priorityMatrix__point--category2 { fill: var(--st-semantic-data-category2); }
18418
+ .st-priorityMatrix__point--category3 { fill: var(--st-semantic-data-category3); }
18419
+ .st-priorityMatrix__point--category4 { fill: var(--st-semantic-data-category4); }
18420
+ .st-priorityMatrix__point--category5 { fill: var(--st-semantic-data-category5); }
18421
+ .st-priorityMatrix__point--category6 { fill: var(--st-semantic-data-category6); }
18422
+ .st-priorityMatrix__point--category7 { fill: var(--st-semantic-data-category7); }
18423
+ .st-priorityMatrix__point--category8 { fill: var(--st-semantic-data-category8); }
18424
+ .st-priorityMatrix__leader { stroke: var(--st-semantic-text-secondary); stroke-width: 1; opacity: 0.8; }
18425
+ .st-priorityMatrix__labelBox { fill: var(--st-semantic-surface-default); stroke: var(--st-semantic-border-subtle); stroke-width: 1; }
18426
+ .st-priorityMatrix__labelText { fill: var(--st-semantic-text-primary); font-size: 0.6875rem; }
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@sentropic/design-system-angular",
3
- "version": "0.37.0",
3
+ "version": "0.38.0",
4
+ "license": "MIT",
4
5
  "description": "Angular components for the Sentropic design system.",
5
6
  "type": "module",
6
7
  "publishConfig": {
@@ -39,12 +40,13 @@
39
40
  "@angular/core": "^20.0.0 || ^21.0.0 || ^22.0.0"
40
41
  },
41
42
  "devDependencies": {
42
- "@angular/common": "^21.2.17",
43
- "@angular/compiler": "^21.2.17",
44
- "@angular/compiler-cli": "^21.2.17",
45
- "@angular/core": "^21.2.17",
43
+ "@angular/common": "21.2.24",
44
+ "@angular/compiler": "21.2.24",
45
+ "@angular/compiler-cli": "21.2.24",
46
+ "@angular/core": "21.2.24",
47
+ "@angular/platform-browser": "21.2.24",
46
48
  "typescript": "^5.9.3",
47
49
  "vite": "^8.0.16",
48
- "vitest": "^4.1.6"
50
+ "vitest": "^4.1.11"
49
51
  }
50
52
  }
package/dist/GeoMap.d.ts DELETED
@@ -1,204 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export type GeoMapTone = "category1" | "category2" | "category3" | "category4" | "category5" | "category6" | "category7" | "category8";
3
- /** Coordonnée géographique — même forme que `GeoCoordinate` (dataviz-core). */
4
- export type GeoMapCoordinate = {
5
- latitude: number;
6
- longitude: number;
7
- };
8
- /** Emprise géographique — même forme que `GeoBounds` (dataviz-core). */
9
- export type GeoMapBounds = {
10
- south: number;
11
- west: number;
12
- north: number;
13
- east: number;
14
- };
15
- export type GeoMapProjection = "equirectangular" | "mercator";
16
- export type GeoMapGeometryType = "Point" | "MultiPoint" | "LineString" | "MultiLineString" | "Polygon" | "MultiPolygon";
17
- /** Géométrie GeoJSON — même forme que `GeoJsonGeometry` (dataviz-core). */
18
- export type GeoMapGeometry = {
19
- type: GeoMapGeometryType;
20
- coordinates: unknown[];
21
- };
22
- /** Entité géographique — sous-ensemble structurel de `GeoJsonFeature` (dataviz-core). */
23
- export type GeoMapFeature = {
24
- id: string;
25
- label?: string;
26
- value?: number;
27
- geometry: GeoMapGeometry;
28
- };
29
- /** Point géographique — sur-ensemble structurel de `GeoPoint` (dataviz-core). */
30
- export type GeoMapPoint = GeoMapCoordinate & {
31
- id?: string;
32
- label?: string;
33
- value?: number;
34
- tone?: GeoMapTone;
35
- /** Rayon explicite en px (prioritaire sur l'échelle par `value`), borné à 32. */
36
- r?: number;
37
- };
38
- /** Flux géographique — sous-ensemble structurel de `GeoFlowLink` (dataviz-core). */
39
- export type GeoMapFlow = {
40
- id?: string;
41
- label?: string;
42
- source: GeoMapCoordinate;
43
- target: GeoMapCoordinate;
44
- value?: number;
45
- };
46
- /** Entités GeoJSON (polygones, lignes, points) ; ton par couche ou cycle de palette par entité. */
47
- export type GeoMapGeojsonLayer = {
48
- type: "geojson";
49
- features: GeoMapFeature[];
50
- tone?: GeoMapTone;
51
- label?: string;
52
- };
53
- /** Choroplèthe : entités + valeur par id (`regions` dataviz : `key` → `value`) → intensité color-mix. */
54
- export type GeoMapChoroplethLayer = {
55
- type: "choropleth";
56
- features: GeoMapFeature[];
57
- values: Record<string, number>;
58
- /** Ton de base de la rampe d'intensité (défaut `category1`). */
59
- tone?: GeoMapTone;
60
- label?: string;
61
- };
62
- /** Points/épingles : rayon ∝ `value` (bornes `minRadius`/`maxRadius`, défauts 5/14 comme dataviz). */
63
- export type GeoMapPointsLayer = {
64
- type: "points";
65
- points: GeoMapPoint[];
66
- tone?: GeoMapTone;
67
- minRadius?: number;
68
- maxRadius?: number;
69
- label?: string;
70
- };
71
- /** Densité : cercles translucides superposés, rayon/intensité ∝ `value` (poids). */
72
- export type GeoMapDensityLayer = {
73
- type: "density";
74
- points: GeoMapPoint[];
75
- /** Ton de la nappe (défaut `category3` — parité visuelle dataviz). */
76
- tone?: GeoMapTone;
77
- maxRadius?: number;
78
- label?: string;
79
- };
80
- /** Flux : arcs quadratiques source → target, épaisseur ∝ `value` (défaut ton `category1`). */
81
- export type GeoMapFlowLayer = {
82
- type: "flow";
83
- flows: GeoMapFlow[];
84
- tone?: GeoMapTone;
85
- label?: string;
86
- };
87
- /** Hexbin : binning hexagonal des points (même binning que dataviz-core), intensité ∝ valeur agrégée. */
88
- export type GeoMapHexbinLayer = {
89
- type: "hexbin";
90
- points: GeoMapPoint[];
91
- /** Taille de cellule en degrés (défaut 1). */
92
- cellSize?: number;
93
- tone?: GeoMapTone;
94
- label?: string;
95
- };
96
- /** Clusters : regroupement glouton des points (même algo que dataviz-core), centroïdes marqueurs distinctifs. */
97
- export type GeoMapClusterLayer = {
98
- type: "cluster";
99
- points: GeoMapPoint[];
100
- /** Rayon de regroupement en degrés (défaut 1). */
101
- radius?: number;
102
- tone?: GeoMapTone;
103
- label?: string;
104
- };
105
- export type GeoMapLayer = GeoMapGeojsonLayer | GeoMapChoroplethLayer | GeoMapPointsLayer | GeoMapDensityLayer | GeoMapFlowLayer | GeoMapHexbinLayer | GeoMapClusterLayer;
106
- export type GeoMapProps = {
107
- layers: GeoMapLayer[];
108
- width?: number;
109
- height?: number;
110
- projection?: GeoMapProjection;
111
- /** Emprise explicite ; sinon auto-ajustement sur les données de toutes les couches + marge. */
112
- bounds?: GeoMapBounds;
113
- label: string;
114
- class?: string;
115
- };
116
- type FeatureMark = {
117
- key: string;
118
- d: string;
119
- tone: GeoMapTone;
120
- line: boolean;
121
- text: string;
122
- };
123
- type RegionMark = {
124
- key: string;
125
- d: string;
126
- tone: GeoMapTone;
127
- mix: string | null;
128
- text: string;
129
- };
130
- type CircleMark = {
131
- key: string;
132
- cx: number;
133
- cy: number;
134
- r: number;
135
- tone: GeoMapTone;
136
- mix: string | null;
137
- text: string;
138
- };
139
- type FlowMark = {
140
- key: string;
141
- d: string;
142
- strokeWidth: number;
143
- tone: GeoMapTone;
144
- text: string;
145
- };
146
- type HexMark = {
147
- key: string;
148
- points: string;
149
- tone: GeoMapTone;
150
- mix: string;
151
- text: string;
152
- };
153
- type ClusterMark = {
154
- key: string;
155
- cx: number;
156
- cy: number;
157
- r: number;
158
- tone: GeoMapTone;
159
- text: string;
160
- };
161
- type RenderLayer = {
162
- key: string;
163
- type: GeoMapLayer["type"];
164
- summary: string;
165
- features: FeatureMark[];
166
- regions: RegionMark[];
167
- circles: CircleMark[];
168
- flows: FlowMark[];
169
- hexes: HexMark[];
170
- clusters: ClusterMark[];
171
- };
172
- export declare class GeoMap {
173
- static readonly stComponentName = "GeoMap";
174
- readonly componentName = "GeoMap";
175
- layers: GeoMapLayer[];
176
- width?: number;
177
- height?: number;
178
- projection?: GeoMapProjection;
179
- bounds?: GeoMapBounds;
180
- label: string;
181
- classInput?: string;
182
- get hostClass(): string;
183
- get resolvedWidth(): number;
184
- get resolvedHeight(): number;
185
- get resolvedProjection(): GeoMapProjection;
186
- get viewBox(): string;
187
- get renderedLayers(): RenderLayer[];
188
- get dataValueItems(): string[];
189
- trackByKey(_index: number, item: {
190
- key: string;
191
- }): string;
192
- layerClass(layer: RenderLayer): string;
193
- featureClass(feature: FeatureMark): string;
194
- regionClass(region: RegionMark): string;
195
- pointClass(mark: CircleMark): string;
196
- densityClass(mark: CircleMark): string;
197
- flowClass(mark: FlowMark): string;
198
- hexClass(mark: HexMark): string;
199
- clusterClass(mark: ClusterMark): string;
200
- static ɵfac: i0.ɵɵFactoryDeclaration<GeoMap, never>;
201
- static ɵcmp: i0.ɵɵComponentDeclaration<GeoMap, "st-geo-map", never, { "layers": { "alias": "layers"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "projection": { "alias": "projection"; "required": false; }; "bounds": { "alias": "bounds"; "required": false; }; "label": { "alias": "label"; "required": false; }; "classInput": { "alias": "class"; "required": false; }; }, {}, never, never, true, never>;
202
- }
203
- export {};
204
- //# sourceMappingURL=GeoMap.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GeoMap.d.ts","sourceRoot":"","sources":["../src/GeoMap.ts"],"names":[],"mappings":";AAKA,MAAM,MAAM,UAAU,GAClB,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wEAAwE;AACxE,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,UAAU,CAAC;AAE9D,MAAM,MAAM,kBAAkB,GAC1B,OAAO,GACP,YAAY,GACZ,YAAY,GACZ,iBAAiB,GACjB,SAAS,GACT,cAAc,CAAC;AAEnB,2EAA2E;AAC3E,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,kBAAkB,CAAC;IACzB,WAAW,EAAE,OAAO,EAAE,CAAC;CACxB,CAAC;AAEF,yFAAyF;AACzF,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,cAAc,CAAC;CAC1B,CAAC;AAEF,iFAAiF;AACjF,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG;IAC3C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,iFAAiF;IACjF,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,oFAAoF;AACpF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,mGAAmG;AACnG,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,yGAAyG;AACzG,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,gEAAgE;IAChE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,sGAAsG;AACtG,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oFAAoF;AACpF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,sEAAsE;IACtE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,8FAA8F;AAC9F,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,yGAAyG;AACzG,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,iHAAiH;AACjH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,WAAW,GACnB,kBAAkB,GAClB,qBAAqB,GACrB,iBAAiB,GACjB,kBAAkB,GAClB,eAAe,GACf,iBAAiB,GACjB,kBAAkB,CAAC;AAEvB,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,+FAA+F;IAC/F,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,MAAM,CAAC;IACV,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB,CAAC;AAwRF,qBA2Ga,MAAM;IACjB,MAAM,CAAC,QAAQ,CAAC,eAAe,YAAY;IAC3C,QAAQ,CAAC,aAAa,YAAY;IACvB,MAAM,EAAE,WAAW,EAAE,CAAM;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,SAAM;IACJ,UAAU,CAAC,EAAE,MAAM,CAAC;IAEtC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,kBAAkB,IAAI,gBAAgB,CAEzC;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,cAAc,IAAI,WAAW,EAAE,CAkJlC;IAED,IAAI,cAAc,IAAI,MAAM,EAAE,CAY7B;IAED,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAIzD,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM;IAItC,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM;IAI1C,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAIvC,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAIpC,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAItC,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAIjC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IAI/B,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM;yCAjO5B,MAAM;2CAAN,MAAM;CAoOlB"}