@fusion.dev/helix-core 0.205.2 → 0.207.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/README.md +22 -13
- package/custom-elements.json +1 -37171
- package/dist/controllers/aria-forward-controller/aria-forward-controller.js +5 -6
- package/dist/controllers/category-axis-controller/category-axis-controller.d.ts +75 -0
- package/dist/controllers/category-axis-controller/category-axis-controller.js +128 -0
- package/dist/controllers/source-controller/source-controller.d.ts +2 -0
- package/dist/controllers/source-controller/source-controller.js +5 -2
- package/dist/controllers/virtualize-controller/virtualize-controller.d.ts +9 -0
- package/dist/controllers/virtualize-controller/virtualize-controller.js +10 -8
- package/dist/helix-element/helix-element.js +3 -21
- package/dist/helix-element/react-bridge.d.ts +17 -0
- package/dist/helix-element/react-bridge.js +54 -0
- package/dist/index.d.ts +8 -2
- package/dist/index.js +8 -2
- package/dist/mixins/mixin-chart-source/mixin-chart-source.d.ts +28 -0
- package/dist/mixins/mixin-chart-source/mixin-chart-source.js +76 -9
- package/dist/mixins/mixin-field/mixin-field.js +2 -0
- package/dist/mixins/mixin-tokens/mixin-tokens.js +2 -1
- package/dist/mixins/mixin-viewport/mixin-viewport.js +3 -2
- package/dist/utils/audit-children/audit-children.d.ts +1 -0
- package/dist/utils/audit-children/audit-children.js +2 -2
- package/dist/utils/audit-name/audit-name.js +2 -2
- package/dist/utils/audit-number/audit-number-off.d.ts +12 -0
- package/dist/utils/audit-number/audit-number-off.js +2 -0
- package/dist/utils/audit-number/audit-number.d.ts +23 -0
- package/dist/utils/audit-number/audit-number.js +21 -0
- package/dist/utils/category-labels/category-labels.d.ts +74 -0
- package/dist/utils/category-labels/category-labels.js +230 -0
- package/dist/utils/closest-name/closest-name.d.ts +11 -0
- package/dist/utils/closest-name/closest-name.js +35 -0
- package/dist/utils/custom-element/custom-element.js +11 -6
- package/dist/utils/draw-tooltip/draw-tooltip.js +3 -2
- package/dist/utils/host-words/host-words.js +2 -1
- package/dist/utils/how-to-register/how-to-register.d.ts +20 -0
- package/dist/utils/how-to-register/how-to-register.js +3 -0
- package/dist/utils/labels-of/labels-of.d.ts +23 -0
- package/dist/utils/labels-of/labels-of.js +8 -0
- package/dist/utils/line-path/line-path.d.ts +18 -0
- package/dist/utils/line-path/line-path.js +36 -0
- package/dist/utils/locale-of/locale-of.d.ts +40 -2
- package/dist/utils/locale-of/locale-of.js +30 -16
- package/dist/utils/number-converter/number-converter.d.ts +44 -0
- package/dist/utils/number-converter/number-converter.js +34 -0
- package/dist/utils/read-data/read-data.d.ts +1 -1
- package/dist/utils/read-data/read-data.js +23 -10
- package/dist/utils/read-series/read-series.js +9 -2
- package/dist/utils/report-runtime/report-runtime.d.ts +8 -0
- package/dist/utils/scale/scale.d.ts +7 -1
- package/dist/utils/scale/scale.js +9 -4
- package/dist/utils/scroll-item-into-view/scroll-item-into-view.d.ts +5 -0
- package/dist/utils/scroll-item-into-view/scroll-item-into-view.js +3 -2
- package/dist/utils/watch-labels/watch-labels.d.ts +4 -2
- package/dist/utils/watch-labels/watch-labels.js +14 -14
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/words/held.d.ts +11 -3
- package/dist/words/words-locale.js +20 -8
- package/dist/words/words.js +10 -5
- package/package.json +16 -4
package/dist/words/held.d.ts
CHANGED
|
@@ -5,6 +5,12 @@ export type Pack = Record<string, Record<string, Message | MessageTable>>;
|
|
|
5
5
|
export type Speaker = Element & {
|
|
6
6
|
locale?: string | undefined;
|
|
7
7
|
};
|
|
8
|
+
/**
|
|
9
|
+
* What an element's locale is worked out from: its `locale`, then the `lang`
|
|
10
|
+
* read for it or `null` for none, and on a server or while hydrating, the
|
|
11
|
+
* default. See `sourceOf` in `words-locale.ts`.
|
|
12
|
+
*/
|
|
13
|
+
export type LocaleSource = readonly [own: string, lang: string | null, fallback?: string];
|
|
8
14
|
/** What the page has registered, kept on `globalThis`. */
|
|
9
15
|
interface Held {
|
|
10
16
|
/** Each locale's words, under its lowercase tag. */
|
|
@@ -19,8 +25,10 @@ interface Held {
|
|
|
19
25
|
observed?: boolean;
|
|
20
26
|
/** Finds a registered word for an element, set by the first `registerWords`. */
|
|
21
27
|
find?: (host: Speaker, tag: string, name: string) => [Message | MessageTable, string] | undefined;
|
|
22
|
-
/** Reads
|
|
23
|
-
|
|
28
|
+
/** Reads what an element's locale is worked out from, set where `wordsLocale` is loaded. */
|
|
29
|
+
source?: (host: Speaker) => LocaleSource;
|
|
30
|
+
/** Works out the locale from what `source` read. */
|
|
31
|
+
from?: (source: LocaleSource) => string;
|
|
24
32
|
}
|
|
25
33
|
/**
|
|
26
34
|
* The page's words, held on `globalThis`.
|
|
@@ -32,7 +40,7 @@ interface Held {
|
|
|
32
40
|
* **What every element reads, and nothing more.** An element with a word
|
|
33
41
|
* property reads its English until a page registers words, so the lookup and
|
|
34
42
|
* the locale chain arrive with `registerWords`, which puts its lookup in
|
|
35
|
-
* `find`, and the locale with `wordsLocale`, which puts
|
|
43
|
+
* `find`, and the locale with `wordsLocale`, which puts its reads in `source` and `from`. A
|
|
36
44
|
* page that registers no words and formats no numbers ships neither: measured
|
|
37
45
|
* on Button, 474 bytes of its 13,437 compressed.
|
|
38
46
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { localeOf, runtimeLocale } from '../utils/locale-of/locale-of.js';
|
|
1
|
+
import { localeOf, nearestLang, runtimeLocale, usableLocale } from '../utils/locale-of/locale-of.js';
|
|
2
2
|
import { held, watchLang } from './held.js';
|
|
3
3
|
const checked = new Map();
|
|
4
4
|
const tagOf = (written) => {
|
|
@@ -14,18 +14,30 @@ const tagOf = (written) => {
|
|
|
14
14
|
}
|
|
15
15
|
return found;
|
|
16
16
|
};
|
|
17
|
-
export const wordsLocale = (element) =>
|
|
17
|
+
export const wordsLocale = (element) => localeFrom(sourceOf(element));
|
|
18
|
+
const sourceOf = (element) => {
|
|
18
19
|
watchLang();
|
|
19
|
-
const own =
|
|
20
|
-
if (own) {
|
|
21
|
-
return own;
|
|
20
|
+
const own = element.locale || '';
|
|
21
|
+
if (tagOf(own)) {
|
|
22
|
+
return [own, null];
|
|
22
23
|
}
|
|
23
24
|
if (typeof element.closest !== 'function' || element.hydrating) {
|
|
24
|
-
return
|
|
25
|
+
return [own, element.getAttribute?.('lang') ?? '', held.fallback];
|
|
25
26
|
}
|
|
26
|
-
return
|
|
27
|
+
return [own, nearestLang(element) ?? null];
|
|
27
28
|
};
|
|
28
|
-
|
|
29
|
+
const localeFrom = ([own, lang, fallback]) => {
|
|
30
|
+
const tag = tagOf(own);
|
|
31
|
+
if (tag) {
|
|
32
|
+
return tag;
|
|
33
|
+
}
|
|
34
|
+
if (fallback !== undefined) {
|
|
35
|
+
return tagOf(lang ?? '') || fallback;
|
|
36
|
+
}
|
|
37
|
+
return (lang === null ? '' : usableLocale(lang)) || runtimeLocale();
|
|
38
|
+
};
|
|
39
|
+
held.source = sourceOf;
|
|
40
|
+
held.from = localeFrom;
|
|
29
41
|
export const handedLocale = (element) => {
|
|
30
42
|
const own = typeof element.locale === 'string' ? element.locale : '';
|
|
31
43
|
return element.hydrating ? own : localeOf(element, own);
|
package/dist/words/words.js
CHANGED
|
@@ -39,17 +39,22 @@ const recheck = (host) => {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
|
+
const localeMoved = (before, after) => before !== undefined &&
|
|
43
|
+
after !== undefined &&
|
|
44
|
+
(before.length !== after.length || before.some((one, at) => one !== after[at])) &&
|
|
45
|
+
held.from?.(before) !== held.from?.(after);
|
|
42
46
|
const watcher = (host) => {
|
|
43
47
|
let stop;
|
|
44
|
-
let
|
|
48
|
+
let source;
|
|
45
49
|
return {
|
|
46
50
|
hostConnected: () => {
|
|
47
|
-
|
|
51
|
+
source = held.source?.(host);
|
|
48
52
|
stop = watchWords(() => {
|
|
49
53
|
recheck(host);
|
|
50
|
-
const now = held.
|
|
51
|
-
|
|
52
|
-
|
|
54
|
+
const now = held.source?.(host);
|
|
55
|
+
const moved = localeMoved(source, now);
|
|
56
|
+
source = now;
|
|
57
|
+
if (moved) {
|
|
53
58
|
host.requestUpdate();
|
|
54
59
|
}
|
|
55
60
|
});
|
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.207.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ross Sheppard <ross.sheppard@fusion.dev>",
|
|
7
7
|
"repository": {
|
|
@@ -35,6 +35,12 @@
|
|
|
35
35
|
"helix-development": "./dist/utils/audit-nesting/audit-nesting.js",
|
|
36
36
|
"default": "./dist/utils/audit-nesting/audit-nesting-off.js"
|
|
37
37
|
},
|
|
38
|
+
"./audits/number": {
|
|
39
|
+
"types": "./dist/utils/audit-number/audit-number.d.ts",
|
|
40
|
+
"development": "./dist/utils/audit-number/audit-number.js",
|
|
41
|
+
"helix-development": "./dist/utils/audit-number/audit-number.js",
|
|
42
|
+
"default": "./dist/utils/audit-number/audit-number-off.js"
|
|
43
|
+
},
|
|
38
44
|
"./audits/react": {
|
|
39
45
|
"types": "./dist/helix-element/react-audit.d.ts",
|
|
40
46
|
"development": "./dist/helix-element/react-audit.js",
|
|
@@ -54,6 +60,7 @@
|
|
|
54
60
|
"default": "./dist/utils/audit-source/audit-source-off.js"
|
|
55
61
|
},
|
|
56
62
|
"./custom-elements.json": "./custom-elements.json",
|
|
63
|
+
"./package.json": "./package.json",
|
|
57
64
|
"./words": {
|
|
58
65
|
"types": "./dist/words/index.d.ts",
|
|
59
66
|
"default": "./dist/words/index.js"
|
|
@@ -74,12 +81,12 @@
|
|
|
74
81
|
"bugs": "https://github.com/project-fusion/fusion/issues",
|
|
75
82
|
"dependencies": {
|
|
76
83
|
"@floating-ui/dom": "^1.8.0",
|
|
77
|
-
"@fusion.dev/helix-icons": "0.
|
|
84
|
+
"@fusion.dev/helix-icons": "0.207.0",
|
|
78
85
|
"tslib": "^2.8.1"
|
|
79
86
|
},
|
|
80
87
|
"devDependencies": {
|
|
81
|
-
"@fusion.dev/helix-cem": "0.
|
|
82
|
-
"@fusion.dev/helix-testing": "0.
|
|
88
|
+
"@fusion.dev/helix-cem": "0.207.0",
|
|
89
|
+
"@fusion.dev/helix-testing": "0.207.0",
|
|
83
90
|
"@lit-labs/ssr": "^4.1.0",
|
|
84
91
|
"lit": "^3.2.1"
|
|
85
92
|
},
|
|
@@ -100,6 +107,11 @@
|
|
|
100
107
|
"helix-development": "./src/utils/audit-nesting/audit-nesting.ts",
|
|
101
108
|
"default": "./src/utils/audit-nesting/audit-nesting-off.ts"
|
|
102
109
|
},
|
|
110
|
+
"#audit-number": {
|
|
111
|
+
"development": "./src/utils/audit-number/audit-number.ts",
|
|
112
|
+
"helix-development": "./src/utils/audit-number/audit-number.ts",
|
|
113
|
+
"default": "./src/utils/audit-number/audit-number-off.ts"
|
|
114
|
+
},
|
|
103
115
|
"#audit-served": {
|
|
104
116
|
"development": "./src/utils/audit-served/audit-served.ts",
|
|
105
117
|
"helix-development": "./src/utils/audit-served/audit-served.ts",
|