@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.
- package/LICENSE +21 -0
- package/LICENSE.THIRD-PARTY.md +110 -0
- package/dist/Accordion.js +3 -3
- package/dist/Alert.js +3 -3
- package/dist/AnomalySwimLaneChart.js +3 -3
- package/dist/AppChrome.js +3 -3
- package/dist/AppHeader.js +3 -3
- package/dist/AppShell.js +3 -3
- package/dist/ArcDiagramChart.d.ts +3 -1
- package/dist/ArcDiagramChart.d.ts.map +1 -1
- package/dist/ArcDiagramChart.js +9 -23
- package/dist/ArcDiagramChart.js.map +1 -1
- package/dist/AreaChart.js +3 -3
- package/dist/AreaRangeChart.js +3 -3
- package/dist/AreaSplineRangeChart.js +3 -3
- package/dist/AspectRatio.js +3 -3
- package/dist/Autosave.js +3 -3
- package/dist/Avatar.js +3 -3
- package/dist/AvatarGroup.js +3 -3
- package/dist/BackToTop.js +3 -3
- package/dist/Badge.js +3 -3
- package/dist/BarChart.js +3 -3
- package/dist/BellCurveChart.js +5 -5
- package/dist/BoxPlotChart.js +3 -3
- package/dist/Breadcrumb.js +3 -3
- package/dist/BulletChart.js +5 -5
- package/dist/BumpChart.js +5 -5
- package/dist/Button.d.ts +5 -1
- package/dist/Button.d.ts.map +1 -1
- package/dist/Button.js +15 -3
- package/dist/Button.js.map +1 -1
- package/dist/ButtonGroup.js +3 -3
- package/dist/Calendar.d.ts +12 -1
- package/dist/Calendar.d.ts.map +1 -1
- package/dist/Calendar.js +27 -3
- package/dist/Calendar.js.map +1 -1
- package/dist/CalendarHeatmapChart.d.ts.map +1 -1
- package/dist/CalendarHeatmapChart.js +27 -25
- package/dist/CalendarHeatmapChart.js.map +1 -1
- package/dist/CandlestickChart.js +3 -3
- package/dist/Card.js +3 -3
- package/dist/ChatComposer.js +3 -3
- package/dist/ChatMessage.js +3 -3
- package/dist/ChatThread.js +3 -3
- package/dist/Checkbox.d.ts +3 -1
- package/dist/Checkbox.d.ts.map +1 -1
- package/dist/Checkbox.js +9 -3
- package/dist/Checkbox.js.map +1 -1
- package/dist/CheckboxGroup.js +3 -3
- package/dist/ChordDiagram.js +3 -3
- package/dist/CodeSnippet.js +3 -3
- package/dist/Col.js +3 -3
- package/dist/Collapsible.js +3 -3
- package/dist/ColorScaleBar.js +3 -3
- package/dist/ColorSwatch.js +3 -3
- package/dist/ColumnPyramidChart.js +3 -3
- package/dist/ColumnRangeChart.js +3 -3
- package/dist/ComboChart.js +3 -3
- package/dist/Combobox.js +3 -3
- package/dist/ConfigItemCard.js +3 -3
- package/dist/Container.js +3 -3
- package/dist/ContentSwitcher.js +3 -3
- package/dist/ContextPanel.js +3 -3
- package/dist/ContourChart.d.ts.map +1 -1
- package/dist/ContourChart.js +51 -45
- package/dist/ContourChart.js.map +1 -1
- package/dist/CopyButton.js +3 -3
- package/dist/Dashboard.js +3 -3
- package/dist/DashboardGrid.js +3 -3
- package/dist/DataImage.js +3 -3
- package/dist/DataTable.js +3 -3
- package/dist/DatePicker.js +3 -3
- package/dist/DecompositionTreeChart.js +3 -3
- package/dist/Density2DChart.js +3 -3
- package/dist/DependencyWheelChart.d.ts +3 -1
- package/dist/DependencyWheelChart.d.ts.map +1 -1
- package/dist/DependencyWheelChart.js +9 -23
- package/dist/DependencyWheelChart.js.map +1 -1
- package/dist/DisplaySettings.js +3 -3
- package/dist/DivergentBarChart.js +3 -3
- package/dist/Divider.js +3 -3
- package/dist/DonutChart.js +3 -3
- package/dist/Drawer.js +3 -3
- package/dist/Dropdown.js +3 -3
- package/dist/DumbbellChart.js +5 -5
- package/dist/Embed.js +3 -3
- package/dist/EmptyState.js +3 -3
- package/dist/ErrorBarChart.js +3 -3
- package/dist/ErrorSummary.js +3 -3
- package/dist/EventFeedPanel.js +5 -5
- package/dist/FieldCard.js +3 -3
- package/dist/FileUploader.js +3 -3
- package/dist/FilterBar.js +3 -3
- package/dist/FilterPill.js +3 -3
- package/dist/FlamegraphChart.js +3 -3
- package/dist/Flex.js +3 -3
- package/dist/Footer.js +3 -3
- package/dist/ForceGraph.js +3 -3
- package/dist/Form.js +3 -3
- package/dist/FormGroup.js +3 -3
- package/dist/FunnelChart.js +3 -3
- package/dist/GanttChart.js +3 -3
- package/dist/GaugeChart.js +3 -3
- package/dist/GeoChart.js +5 -5
- package/dist/GraphLegend.js +3 -3
- package/dist/Grid.js +3 -3
- package/dist/HLCChart.js +3 -3
- package/dist/Header.js +3 -3
- package/dist/HeatmapChart.d.ts.map +1 -1
- package/dist/HeatmapChart.js +51 -45
- package/dist/HeatmapChart.js.map +1 -1
- package/dist/HeikinAshiChart.js +3 -3
- package/dist/Hidden.js +3 -3
- package/dist/Highlight.js +3 -3
- package/dist/HistogramChart.js +3 -3
- package/dist/HollowCandlestickChart.js +3 -3
- package/dist/Icon.d.ts +6 -1
- package/dist/Icon.d.ts.map +1 -1
- package/dist/Icon.js +46 -4
- package/dist/Icon.js.map +1 -1
- package/dist/IconButton.js +3 -3
- package/dist/IdentityMenu.js +3 -3
- package/dist/Inline.d.ts +16 -1
- package/dist/Inline.d.ts.map +1 -1
- package/dist/Inline.js +36 -5
- package/dist/Inline.js.map +1 -1
- package/dist/InlineLoading.js +3 -3
- package/dist/Input.d.ts +3 -1
- package/dist/Input.d.ts.map +1 -1
- package/dist/Input.js +9 -3
- package/dist/Input.js.map +1 -1
- package/dist/ItemChart.js +3 -3
- package/dist/KanbanBoard.js +3 -3
- package/dist/KpiCard.d.ts.map +1 -1
- package/dist/KpiCard.js +9 -4
- package/dist/KpiCard.js.map +1 -1
- package/dist/LanguageSelector.js +3 -3
- package/dist/LanguageToggle.js +3 -3
- package/dist/LineChart.d.ts +12 -0
- package/dist/LineChart.d.ts.map +1 -1
- package/dist/LineChart.js +15 -6
- package/dist/LineChart.js.map +1 -1
- package/dist/Link.js +3 -3
- package/dist/ListReportPage.js +3 -3
- package/dist/LoadingState.js +3 -3
- package/dist/LollipopChart.js +3 -3
- package/dist/MarimekkoChart.js +5 -5
- package/dist/MasterDetail.js +3 -3
- package/dist/MediaContent.js +3 -3
- package/dist/Menu.js +3 -3
- package/dist/MenuPopover.d.ts +25 -3
- package/dist/MenuPopover.d.ts.map +1 -1
- package/dist/MenuPopover.js +105 -15
- package/dist/MenuPopover.js.map +1 -1
- package/dist/MenuTriggerButton.js +3 -3
- package/dist/MessageActions.js +3 -3
- package/dist/MessageStatusBadge.js +3 -3
- package/dist/Modal.js +3 -3
- package/dist/MultiSelect.js +3 -3
- package/dist/NavActionStack.js +3 -3
- package/dist/NavDrawer.js +3 -3
- package/dist/NavItem.js +3 -3
- package/dist/NavRail.js +3 -3
- package/dist/NavSection.d.ts +1 -1
- package/dist/NavSection.d.ts.map +1 -1
- package/dist/NavSection.js +20 -9
- package/dist/NavSection.js.map +1 -1
- package/dist/NavShell.js +3 -3
- package/dist/Notification.js +3 -3
- package/dist/NumberInput.d.ts +3 -1
- package/dist/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput.js +9 -3
- package/dist/NumberInput.js.map +1 -1
- package/dist/OHLCChart.js +5 -5
- package/dist/ObjectPage.js +3 -3
- package/dist/OrderedList.js +3 -3
- package/dist/OrganizationChart.js +5 -5
- package/dist/OverflowMenu.js +3 -3
- package/dist/Overline.js +3 -3
- package/dist/PackedBubblesChart.js +5 -5
- package/dist/Pagination.js +3 -3
- package/dist/PaginationNav.js +3 -3
- package/dist/PanelSection.d.ts +12 -0
- package/dist/PanelSection.d.ts.map +1 -1
- package/dist/PanelSection.js +16 -4
- package/dist/PanelSection.js.map +1 -1
- package/dist/PanelStack.d.ts +17 -0
- package/dist/PanelStack.d.ts.map +1 -1
- package/dist/PanelStack.js +20 -3
- package/dist/PanelStack.js.map +1 -1
- package/dist/ParallelCoordinatesChart.js +5 -5
- package/dist/ParetoChart.js +5 -5
- package/dist/PasswordInput.js +3 -3
- package/dist/PointAndFigureChart.d.ts.map +1 -1
- package/dist/PointAndFigureChart.js +19 -15
- package/dist/PointAndFigureChart.js.map +1 -1
- package/dist/PolygonChart.js +5 -5
- package/dist/Popover.js +3 -3
- package/dist/Popper.js +3 -3
- package/dist/Portal.js +3 -3
- package/dist/PriorityMatrix.d.ts +103 -0
- package/dist/PriorityMatrix.d.ts.map +1 -0
- package/dist/PriorityMatrix.js +495 -0
- package/dist/PriorityMatrix.js.map +1 -0
- package/dist/ProgressBar.js +3 -3
- package/dist/ProgressIndicator.js +3 -3
- package/dist/Quote.js +3 -3
- package/dist/RadarChart.js +3 -3
- package/dist/Radio.js +3 -3
- package/dist/RadioGroup.js +3 -3
- package/dist/RangeSlider.js +3 -3
- package/dist/Rating.js +3 -3
- package/dist/RenkoChart.d.ts.map +1 -1
- package/dist/RenkoChart.js +22 -16
- package/dist/RenkoChart.js.map +1 -1
- package/dist/RibbonChart.js +3 -3
- package/dist/RoseChart.js +3 -3
- package/dist/Row.js +3 -3
- package/dist/SankeyChart.js +3 -3
- package/dist/ScatterPlot.js +3 -3
- package/dist/ScoreCard.js +3 -3
- package/dist/Search.d.ts.map +1 -1
- package/dist/Search.js +7 -5
- package/dist/Search.js.map +1 -1
- package/dist/Select.d.ts +3 -1
- package/dist/Select.d.ts.map +1 -1
- package/dist/Select.js +9 -3
- package/dist/Select.js.map +1 -1
- package/dist/SelectableList.js +3 -3
- package/dist/SelectableRow.js +3 -3
- package/dist/SelectionChip.d.ts.map +1 -1
- package/dist/SelectionChip.js +7 -5
- package/dist/SelectionChip.js.map +1 -1
- package/dist/SideNav.js +3 -3
- package/dist/SkeletonText.js +3 -3
- package/dist/SkipLink.js +3 -3
- package/dist/SlideIndicator.js +3 -3
- package/dist/Slider.js +3 -3
- package/dist/SolidGaugeChart.js +3 -3
- package/dist/Sparkline.js +3 -3
- package/dist/Stack.js +3 -3
- package/dist/StackedBarChart.d.ts.map +1 -1
- package/dist/StackedBarChart.js +32 -18
- package/dist/StackedBarChart.js.map +1 -1
- package/dist/StateTimelineChart.js +3 -3
- package/dist/StatusDot.js +3 -3
- package/dist/StatusHistoryChart.js +3 -3
- package/dist/StepLineChart.js +3 -3
- package/dist/Stepper.js +3 -3
- package/dist/StreamgraphChart.js +3 -3
- package/dist/StreamingMessage.js +3 -3
- package/dist/StructuredList.js +3 -3
- package/dist/SunburstChart.js +5 -5
- package/dist/Switch.js +3 -3
- package/dist/Table.js +3 -3
- package/dist/TableOfContents.js +3 -3
- package/dist/Tabs.js +3 -3
- package/dist/Tag.js +3 -3
- package/dist/Textarea.d.ts +3 -1
- package/dist/Textarea.d.ts.map +1 -1
- package/dist/Textarea.js +9 -3
- package/dist/Textarea.js.map +1 -1
- package/dist/ThemeProvider.js +3 -3
- package/dist/Tile.js +3 -3
- package/dist/TileGroup.js +3 -3
- package/dist/TileMapChart.js +3 -3
- package/dist/TimePicker.js +3 -3
- package/dist/TimeRangePicker.d.ts +23 -2
- package/dist/TimeRangePicker.d.ts.map +1 -1
- package/dist/TimeRangePicker.js +156 -24
- package/dist/TimeRangePicker.js.map +1 -1
- package/dist/Timeline.js +3 -3
- package/dist/TimelineChart.d.ts.map +1 -1
- package/dist/TimelineChart.js +4 -4
- package/dist/TimelineChart.js.map +1 -1
- package/dist/Toast.js +3 -3
- package/dist/Toggle.js +3 -3
- package/dist/Toggletip.js +3 -3
- package/dist/Tooltip.js +3 -3
- package/dist/TraceWaterfallChart.js +3 -3
- package/dist/Transcription.js +3 -3
- package/dist/TreeView.js +3 -3
- package/dist/TreegraphChart.js +5 -5
- package/dist/TreemapChart.js +5 -5
- package/dist/Typography.js +3 -3
- package/dist/UnorderedList.js +3 -3
- package/dist/UtilityPanel.js +3 -3
- package/dist/VariablePieChart.js +3 -3
- package/dist/VectorFieldChart.d.ts.map +1 -1
- package/dist/VectorFieldChart.js +20 -16
- package/dist/VectorFieldChart.js.map +1 -1
- package/dist/VennChart.js +3 -3
- package/dist/ViolinChart.js +3 -3
- package/dist/WaffleChart.js +3 -3
- package/dist/WaterfallChart.js +3 -3
- package/dist/WindBarbChart.d.ts.map +1 -1
- package/dist/WindBarbChart.js +19 -15
- package/dist/WindBarbChart.js.map +1 -1
- package/dist/Wizard.js +4 -4
- package/dist/WordCloudChart.js +3 -3
- package/dist/chartScale.d.ts +8 -0
- package/dist/chartScale.d.ts.map +1 -1
- package/dist/chartScale.js +48 -5
- package/dist/chartScale.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/priorityLabels.d.ts +143 -0
- package/dist/priorityLabels.d.ts.map +1 -0
- package/dist/priorityLabels.js +240 -0
- package/dist/priorityLabels.js.map +1 -0
- package/dist/styles.css +87 -4
- package/package.json +8 -6
- package/dist/GeoMap.d.ts +0 -204
- package/dist/GeoMap.d.ts.map +0 -1
- package/dist/GeoMap.js +0 -715
- 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:
|
|
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
|
-
|
|
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(
|
|
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.
|
|
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": "
|
|
43
|
-
"@angular/compiler": "
|
|
44
|
-
"@angular/compiler-cli": "
|
|
45
|
-
"@angular/core": "
|
|
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.
|
|
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
|
package/dist/GeoMap.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GeoMap.d.ts","sourceRoot":"","sources":["../src/GeoMap.ts"],"names":[],"mappings":"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"}
|