@fusion.dev/helix-core 0.40.0 → 0.41.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/custom-elements.json +95 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/mixins/mixin-chart-source/mixin-chart-source.d.ts +28 -0
- package/dist/mixins/mixin-chart-source/mixin-chart-source.js +13 -0
- package/dist/utils/draw-tooltip/draw-tooltip.d.ts +1 -1
- package/dist/utils/draw-tooltip/draw-tooltip.js +9 -5
- package/package.json +4 -4
package/custom-elements.json
CHANGED
|
@@ -5243,6 +5243,14 @@
|
|
|
5243
5243
|
"module": "./mixins/mixin-chart-source/mixin-chart-source.js"
|
|
5244
5244
|
}
|
|
5245
5245
|
},
|
|
5246
|
+
{
|
|
5247
|
+
"kind": "js",
|
|
5248
|
+
"name": "seriesNames",
|
|
5249
|
+
"declaration": {
|
|
5250
|
+
"name": "seriesNames",
|
|
5251
|
+
"module": "./mixins/mixin-chart-source/mixin-chart-source.js"
|
|
5252
|
+
}
|
|
5253
|
+
},
|
|
5246
5254
|
{
|
|
5247
5255
|
"kind": "js",
|
|
5248
5256
|
"name": "CollectionElement",
|
|
@@ -5908,6 +5916,24 @@
|
|
|
5908
5916
|
],
|
|
5909
5917
|
"description": "The palette slot for the nth series, counting from one and wrapping."
|
|
5910
5918
|
},
|
|
5919
|
+
{
|
|
5920
|
+
"kind": "function",
|
|
5921
|
+
"name": "seriesNames",
|
|
5922
|
+
"return": {
|
|
5923
|
+
"type": {
|
|
5924
|
+
"text": "string[]"
|
|
5925
|
+
}
|
|
5926
|
+
},
|
|
5927
|
+
"parameters": [
|
|
5928
|
+
{
|
|
5929
|
+
"name": "list",
|
|
5930
|
+
"type": {
|
|
5931
|
+
"text": "string | undefined"
|
|
5932
|
+
}
|
|
5933
|
+
}
|
|
5934
|
+
],
|
|
5935
|
+
"description": "A list of series names, as the attributes that take one are written.\n\n**Here because five properties across two tiers read the same list and two of\nthem read it differently.** `BarChart.lines` and `secondary` split on\nwhitespace; `outlined`, `subtle` and `glass` on the styled tier split on\nwhitespace or a comma, under a sentence saying the first three are matched\n\"the way `lines` and `secondary` are\". So `lines=\"Gateway, Billing\"` looked\nexactly like `outlined=\"Gateway, Billing\"` and matched nothing, because\n`gateway,` is not a column heading: no column drawn as a line, no error, and\nnothing to read off the page that says why. That is the undebuggable case\n`gridlines` names in its own docblock, arrived at from the other direction.\n\nA comma is accepted rather than refused because a reader writing a list of\nwords puts commas between them, and the widest of the spellings already\nshipped. Lowercased and trimmed, since the headings are matched\ncase-insensitively."
|
|
5936
|
+
},
|
|
5911
5937
|
{
|
|
5912
5938
|
"kind": "class",
|
|
5913
5939
|
"description": "The public surface `MixinChartSource` adds.\n\nDeclared separately because TypeScript cannot emit declarations for an\nanonymous class that has private or protected members (TS4094), and every\nclass extending `HelixElement` inherits protected `willUpdate` and `updated`.\nReturning the class directly was tried and refused for exactly that.\n\n**Every member here is documented twice, and that is the convention rather\nthan an oversight.** TypeScript reads this interface; the analyzer reads the\ninner class. Documented only here, `helix-convention-lint` failed the build\nwith six `Public member has no description` on three charts that had just\nbeen given a shared, fully documented property.\n\n**The protected members are declared here too, and have to be.** Cast to an\ninterface holding only `for` and `label`, `series` and `named` vanished from\nthe emitted `.d.ts` and every chart failed with `Property 'series' does not\nexist`. A mixin's interface is not its public API, it is everything a\nsubclass can see.\n\n**The series palette, and the one property every chart's mark reads.** A\nchart knows which series a bar belongs to and CSS cannot count it, so the\nheadless tier writes `--chart-series: var(--chart-series-3)` onto the\nrectangle and each styled sheet is one rule rather than twenty-four.\n\nDeclared here because this is where `seriesIndex` and `PALETTE` live, and\nbecause a hook repeated on four families is a hook four families have to keep\nagreeing about.\n\nThe numbered twenty-four are the seam between the tiers: `chart/series.css`\npoints each at a semantic token, which is a decision and so belongs to the\nstyled tier, and a consumer on `headless` sets the same names to whatever\nthey like. The headless examples set them to a ramp of grays.",
|
|
@@ -6058,6 +6084,33 @@
|
|
|
6058
6084
|
"description": "Every row of the table, with each cell's text as well as its number.",
|
|
6059
6085
|
"readonly": true
|
|
6060
6086
|
},
|
|
6087
|
+
{
|
|
6088
|
+
"kind": "field",
|
|
6089
|
+
"name": "plottedColumns",
|
|
6090
|
+
"type": {
|
|
6091
|
+
"text": "number[]"
|
|
6092
|
+
},
|
|
6093
|
+
"description": "Which cells of a row hold numbers, by their place in it, in table order.",
|
|
6094
|
+
"readonly": true
|
|
6095
|
+
},
|
|
6096
|
+
{
|
|
6097
|
+
"kind": "method",
|
|
6098
|
+
"name": "seriesOf",
|
|
6099
|
+
"return": {
|
|
6100
|
+
"type": {
|
|
6101
|
+
"text": "number | undefined"
|
|
6102
|
+
}
|
|
6103
|
+
},
|
|
6104
|
+
"parameters": [
|
|
6105
|
+
{
|
|
6106
|
+
"name": "cell",
|
|
6107
|
+
"type": {
|
|
6108
|
+
"text": "number"
|
|
6109
|
+
}
|
|
6110
|
+
}
|
|
6111
|
+
],
|
|
6112
|
+
"description": "The palette slot the cell at this place in a row is drawn in, or nothing\nwhere no series was read from that column."
|
|
6113
|
+
},
|
|
6061
6114
|
{
|
|
6062
6115
|
"kind": "field",
|
|
6063
6116
|
"name": "readings",
|
|
@@ -6145,6 +6198,33 @@
|
|
|
6145
6198
|
"description": "Every row of the table, with each cell's text as well as its number.\n\nThis is where a tooltip's content comes from, and it is deliberately not\n`series`. A chart draws numbers; a reader resting a pointer on one wants\nwhat the table says, which is `$128k` and not `128000`, and often wants\nthe column beside it that nothing plotted at all.\n\n**Not `rows`.** It is the source table's rows, and `rows` on a chart is a\nname a chart wants for itself: `helix-heatmap` takes `rows=\"7\"` to mean a\ncalendar week, and declaring that against a base class whose `rows` is a\n`Row[]` getter is a type error at best. Name the member for what it holds\nrather than for the shortest word available.",
|
|
6146
6199
|
"readonly": true
|
|
6147
6200
|
},
|
|
6201
|
+
{
|
|
6202
|
+
"kind": "field",
|
|
6203
|
+
"name": "plottedColumns",
|
|
6204
|
+
"type": {
|
|
6205
|
+
"text": "number[]"
|
|
6206
|
+
},
|
|
6207
|
+
"description": "Which cells of a row hold numbers, by their place in it, in table order.\n\nThe same test `readSeries` applies when it drops a column of notes: a\ncolumn is a series where any row parses, so a series survives one blank\ncell and a column of words is never one.",
|
|
6208
|
+
"readonly": true
|
|
6209
|
+
},
|
|
6210
|
+
{
|
|
6211
|
+
"kind": "method",
|
|
6212
|
+
"name": "seriesOf",
|
|
6213
|
+
"return": {
|
|
6214
|
+
"type": {
|
|
6215
|
+
"text": "number | undefined"
|
|
6216
|
+
}
|
|
6217
|
+
},
|
|
6218
|
+
"parameters": [
|
|
6219
|
+
{
|
|
6220
|
+
"name": "cell",
|
|
6221
|
+
"type": {
|
|
6222
|
+
"text": "number"
|
|
6223
|
+
}
|
|
6224
|
+
}
|
|
6225
|
+
],
|
|
6226
|
+
"description": "The palette slot the cell at this place in a row is drawn in.\n\n**A cell's place in its row is not its series' depth, and the tooltip\nspent a while assuming it was.** `readSeries` drops a column nothing\nparses and `readRows` keeps it, so one column of notes among the figures\nmoves every column after it one color along in the bubble: a row reading\n`Referral 1,080` wearing series three's green beside a legend that says\nseries three is something else, which is the one failure the dot exists\nto prevent.\n\nOverridden where a chart reads the table some other way. `ScatterChart`\nsplits the first plotted column off as the measure across, so its first\n*plotted* series is this table's second numeric column."
|
|
6227
|
+
},
|
|
6148
6228
|
{
|
|
6149
6229
|
"kind": "field",
|
|
6150
6230
|
"name": "readings",
|
|
@@ -6202,6 +6282,14 @@
|
|
|
6202
6282
|
"module": "src/mixins/mixin-chart-source/mixin-chart-source.ts"
|
|
6203
6283
|
}
|
|
6204
6284
|
},
|
|
6285
|
+
{
|
|
6286
|
+
"kind": "js",
|
|
6287
|
+
"name": "seriesNames",
|
|
6288
|
+
"declaration": {
|
|
6289
|
+
"name": "seriesNames",
|
|
6290
|
+
"module": "src/mixins/mixin-chart-source/mixin-chart-source.ts"
|
|
6291
|
+
}
|
|
6292
|
+
},
|
|
6205
6293
|
{
|
|
6206
6294
|
"kind": "js",
|
|
6207
6295
|
"name": "MixinChartSourceInterface",
|
|
@@ -9049,6 +9137,13 @@
|
|
|
9049
9137
|
"type": {
|
|
9050
9138
|
"text": "TooltipAt"
|
|
9051
9139
|
}
|
|
9140
|
+
},
|
|
9141
|
+
{
|
|
9142
|
+
"name": "slotOf",
|
|
9143
|
+
"optional": true,
|
|
9144
|
+
"type": {
|
|
9145
|
+
"text": "(cell: number) => number | undefined"
|
|
9146
|
+
}
|
|
9052
9147
|
}
|
|
9053
9148
|
],
|
|
9054
9149
|
"description": "What a pointer resting on a reading shows, as `Tooltip` pointed at a mark.\n\n**A chart does not draw its own tooltip, and the top layer is why.** `Tooltip`\nrenders `popover=\"manual\"` through `PopoverController`, so it clears every\nstacking context and every `overflow` on the page. A box drawn by the chart is\n`position: absolute` inside the plot and is confined to the chart's own\ncontext, so it is clipped by, or layered under, whatever sits beside the\nchart. Escaping that means reimplementing `PopoverController`, which is\n`Tooltip` with extra steps and a second copy of the hard part.\n\n**`for` was already the anchor and needed nothing added.** It resolves through\n`getRootNode().getElementById()`, and a chart's shadow root *is* a\n`ShadowRoot`, so a chart names an element inside itself and `Tooltip` finds\nit. What the chart provides is an invisible mark at the reading's point.\n\n**An HTML mark rather than the `<rect>` or `<circle>` already there.**\n`FloatingController` types its anchor as `HTMLElement` and an SVG element is\nnot one; and a slice's `<circle>` has the bounding box of the whole ring\nrather than of its arc, so anchoring to it would point at the ring's center\nfor every slice.\n\n**And the arrow now follows from placement rather than from a compass.** The\nchart says which side it prefers and `FloatingController` moves it if that\nside does not fit, which is how a slice at any bearing gets a bubble that\npoints at it. Four hard-coded sides could not express a bearing, which is what\nmade the donut's arrow miss its own ring.\n\n**It shows the table's text and not the chart's numbers.** `$128k` is what the\ncell says and `128000` is what the drawing measured. Every cell of the row is\nhere, including columns nothing was plotted from, because a note beside the\nfigures is most of the reason to want a tooltip.\n\n**Hidden from assistive technology, on purpose.** The table is the accessible\nrepresentation and the drawing is `aria-hidden`; a reader on a keyboard gets\nthe table, which they can reach, rather than a tooltip which they cannot."
|
package/dist/index.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export { eventsForTag, registerElementEvents } from './events/element-events.js'
|
|
|
17
17
|
export { type CaretDetail, type ChangeDetail, type CompleteDetail, type ConsoleDetail, type CopyDetail, type CreateDetail, type DismissDetail, type FacetDetail, type FilterDetail, HelixActivateEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePinEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCaretEvent, HelixCompleteEvent, HelixConsoleEvent, HelixCopyEvent, HelixCreateEvent, HelixDismissEvent, HelixFacetEvent, HelixFilterEvent, HelixHistoryEvent, HelixNavigateEvent, HelixNextEvent, HelixPreviousEvent, HelixReadEvent, HelixReorderEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixTourAskEvent, type NavigateDetail, type OpenDetail, type ReadDetail, type ResizeDetail, type ScrolledDetail, type SelectDetail, type SendDetail, type ShortcutDetail, type SkipDetail, type SortDetail, type ToggleDetail, } from './events/events.js';
|
|
18
18
|
export { HelixElement, whenHydrated } from './helix-element/helix-element.js';
|
|
19
19
|
export { HelixFormElement } from './helix-form-element/helix-form-element.js';
|
|
20
|
-
export { MixinChartSource, type MixinChartSourceInterface, PALETTE, seriesIndex, } from './mixins/mixin-chart-source/mixin-chart-source.js';
|
|
20
|
+
export { MixinChartSource, type MixinChartSourceInterface, PALETTE, seriesIndex, seriesNames, } from './mixins/mixin-chart-source/mixin-chart-source.js';
|
|
21
21
|
export { type CollectionElement, MixinCollection, } from './mixins/mixin-collection/mixin-collection.js';
|
|
22
22
|
export { MixinControllerActive, type MixinControllerActiveInterface, } from './mixins/mixin-controller-active/mixin-controller-active.js';
|
|
23
23
|
export { MixinControllerChecked, type MixinControllerCheckedInterface, } from './mixins/mixin-controller-checked/mixin-controller-checked.js';
|
package/dist/index.js
CHANGED
|
@@ -17,7 +17,7 @@ export { eventsForTag, registerElementEvents } from './events/element-events.js'
|
|
|
17
17
|
export { HelixActivateEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePinEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCaretEvent, HelixCompleteEvent, HelixConsoleEvent, HelixCopyEvent, HelixCreateEvent, HelixDismissEvent, HelixFacetEvent, HelixFilterEvent, HelixHistoryEvent, HelixNavigateEvent, HelixNextEvent, HelixPreviousEvent, HelixReadEvent, HelixReorderEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixTourAskEvent, } from './events/events.js';
|
|
18
18
|
export { HelixElement, whenHydrated } from './helix-element/helix-element.js';
|
|
19
19
|
export { HelixFormElement } from './helix-form-element/helix-form-element.js';
|
|
20
|
-
export { MixinChartSource, PALETTE, seriesIndex, } from './mixins/mixin-chart-source/mixin-chart-source.js';
|
|
20
|
+
export { MixinChartSource, PALETTE, seriesIndex, seriesNames, } from './mixins/mixin-chart-source/mixin-chart-source.js';
|
|
21
21
|
export { MixinCollection, } from './mixins/mixin-collection/mixin-collection.js';
|
|
22
22
|
export { MixinControllerActive, } from './mixins/mixin-controller-active/mixin-controller-active.js';
|
|
23
23
|
export { MixinControllerChecked, } from './mixins/mixin-controller-checked/mixin-controller-checked.js';
|
|
@@ -13,6 +13,25 @@ type Constructor<T> = new (...args: any[]) => T;
|
|
|
13
13
|
export declare const PALETTE = 24;
|
|
14
14
|
/** The palette slot for the nth series, counting from one and wrapping. */
|
|
15
15
|
export declare const seriesIndex: (depth: number) => number;
|
|
16
|
+
/**
|
|
17
|
+
* A list of series names, as the attributes that take one are written.
|
|
18
|
+
*
|
|
19
|
+
* **Here because five properties across two tiers read the same list and two of
|
|
20
|
+
* them read it differently.** `BarChart.lines` and `secondary` split on
|
|
21
|
+
* whitespace; `outlined`, `subtle` and `glass` on the styled tier split on
|
|
22
|
+
* whitespace or a comma, under a sentence saying the first three are matched
|
|
23
|
+
* "the way `lines` and `secondary` are". So `lines="Gateway, Billing"` looked
|
|
24
|
+
* exactly like `outlined="Gateway, Billing"` and matched nothing, because
|
|
25
|
+
* `gateway,` is not a column heading: no column drawn as a line, no error, and
|
|
26
|
+
* nothing to read off the page that says why. That is the undebuggable case
|
|
27
|
+
* `gridlines` names in its own docblock, arrived at from the other direction.
|
|
28
|
+
*
|
|
29
|
+
* A comma is accepted rather than refused because a reader writing a list of
|
|
30
|
+
* words puts commas between them, and the widest of the spellings already
|
|
31
|
+
* shipped. Lowercased and trimmed, since the headings are matched
|
|
32
|
+
* case-insensitively.
|
|
33
|
+
*/
|
|
34
|
+
export declare const seriesNames: (list: string | undefined) => string[];
|
|
16
35
|
/**
|
|
17
36
|
* The public surface `MixinChartSource` adds.
|
|
18
37
|
*
|
|
@@ -104,6 +123,15 @@ export declare class MixinChartSourceInterface {
|
|
|
104
123
|
* Every row of the table, with each cell's text as well as its number.
|
|
105
124
|
*/
|
|
106
125
|
get sourceRows(): Row[];
|
|
126
|
+
/**
|
|
127
|
+
* Which cells of a row hold numbers, by their place in it, in table order.
|
|
128
|
+
*/
|
|
129
|
+
get plottedColumns(): number[];
|
|
130
|
+
/**
|
|
131
|
+
* The palette slot the cell at this place in a row is drawn in, or nothing
|
|
132
|
+
* where no series was read from that column.
|
|
133
|
+
*/
|
|
134
|
+
seriesOf(cell: number): number | undefined;
|
|
107
135
|
/**
|
|
108
136
|
* How many readings there are, which is what the pointer maps onto.
|
|
109
137
|
*/
|
|
@@ -9,6 +9,10 @@ import { ChartPointerController } from '../../controllers/chart-pointer-controll
|
|
|
9
9
|
import { SourceController } from '../../controllers/source-controller/source-controller.js';
|
|
10
10
|
export const PALETTE = 24;
|
|
11
11
|
export const seriesIndex = (depth) => (depth % PALETTE) + 1;
|
|
12
|
+
export const seriesNames = (list) => (list ?? '')
|
|
13
|
+
.split(/[\s,]+/)
|
|
14
|
+
.map((name) => name.trim().toLowerCase())
|
|
15
|
+
.filter(Boolean);
|
|
12
16
|
export const MixinChartSource = (Base) => {
|
|
13
17
|
class ChartSourceElement extends Base {
|
|
14
18
|
constructor() {
|
|
@@ -33,6 +37,15 @@ export const MixinChartSource = (Base) => {
|
|
|
33
37
|
get sourceRows() {
|
|
34
38
|
return this.source.rows;
|
|
35
39
|
}
|
|
40
|
+
get plottedColumns() {
|
|
41
|
+
const rows = this.sourceRows;
|
|
42
|
+
const width = Math.max(0, ...rows.map((row) => row.cells.length));
|
|
43
|
+
return Array.from({ length: width }, (_, column) => column).filter((column) => rows.some((row) => row.cells[column]?.value !== undefined));
|
|
44
|
+
}
|
|
45
|
+
seriesOf(cell) {
|
|
46
|
+
const depth = this.plottedColumns.indexOf(cell);
|
|
47
|
+
return depth < 0 ? undefined : seriesIndex(depth);
|
|
48
|
+
}
|
|
36
49
|
get readings() {
|
|
37
50
|
return this.sourceRows.length;
|
|
38
51
|
}
|
|
@@ -90,4 +90,4 @@ export interface TooltipAt {
|
|
|
90
90
|
* representation and the drawing is `aria-hidden`; a reader on a keyboard gets
|
|
91
91
|
* the table, which they can reach, rather than a tooltip which they cannot.
|
|
92
92
|
*/
|
|
93
|
-
export declare const drawTooltip: (rows: Row[], at: number, tag: StaticValue, where?: TooltipAt) => TemplateResult | typeof nothing;
|
|
93
|
+
export declare const drawTooltip: (rows: Row[], at: number, tag: StaticValue, where?: TooltipAt, slotOf?: (cell: number) => number | undefined) => TemplateResult | typeof nothing;
|
|
@@ -3,7 +3,7 @@ import { styleMap } from 'lit/directives/style-map.js';
|
|
|
3
3
|
import { html } from 'lit/static-html.js';
|
|
4
4
|
import { seriesIndex } from '../../mixins/mixin-chart-source/mixin-chart-source.js';
|
|
5
5
|
export const CHART_PLOT = 'helix-chart-plot';
|
|
6
|
-
export const drawTooltip = (rows, at, tag, where) => {
|
|
6
|
+
export const drawTooltip = (rows, at, tag, where, slotOf) => {
|
|
7
7
|
const row = rows[at];
|
|
8
8
|
if (!row || rows.length === 0) {
|
|
9
9
|
return nothing;
|
|
@@ -35,14 +35,18 @@ export const drawTooltip = (rows, at, tag, where) => {
|
|
|
35
35
|
>
|
|
36
36
|
<div aria-hidden="true" slot="content">
|
|
37
37
|
<span part="tooltip-label">${row.label}</span>
|
|
38
|
-
${row.cells.map((cell, index) =>
|
|
39
|
-
|
|
38
|
+
${row.cells.map((cell, index) => {
|
|
39
|
+
const answer = slotOf === undefined ? seriesIndex(index) : slotOf(index);
|
|
40
|
+
const series = cell.value === undefined ? undefined : answer;
|
|
41
|
+
return html `<span
|
|
42
|
+
data-series=${series ?? nothing}
|
|
40
43
|
part="tooltip-cell"
|
|
41
|
-
style=${
|
|
44
|
+
style=${series === undefined ? nothing : `--chart-series: var(--chart-series-${series})`}
|
|
42
45
|
>
|
|
43
46
|
<span part="tooltip-name">${cell.name}</span>
|
|
44
47
|
<span part="tooltip-value">${cell.text}</span>
|
|
45
|
-
</span
|
|
48
|
+
</span>`;
|
|
49
|
+
})}
|
|
46
50
|
</div>
|
|
47
51
|
</${tag}>`;
|
|
48
52
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fusion.dev/helix-core",
|
|
3
3
|
"description": "Helix element primitives: base classes, mixins, decorators, utilities.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.41.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ross Sheppard <ross.sheppard@fusion.dev>",
|
|
7
7
|
"repository": {
|
|
@@ -34,12 +34,12 @@
|
|
|
34
34
|
"bugs": "https://github.com/project-fusion/fusion/issues",
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@floating-ui/dom": "^1.8.0",
|
|
37
|
-
"@fusion.dev/helix-icons": "0.
|
|
37
|
+
"@fusion.dev/helix-icons": "0.41.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@custom-elements-manifest/analyzer": "^0.11.0",
|
|
41
|
-
"@fusion.dev/helix-cem": "0.
|
|
42
|
-
"@fusion.dev/helix-testing": "0.
|
|
41
|
+
"@fusion.dev/helix-cem": "0.41.0",
|
|
42
|
+
"@fusion.dev/helix-testing": "0.41.0",
|
|
43
43
|
"lit": "^3.2.1"
|
|
44
44
|
},
|
|
45
45
|
"homepage": "https://fusion.dev",
|