hudini 0.18.1 → 0.20.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 +58 -27
- package/dist/components/badge/badge.d.ts +94 -0
- package/dist/components/badge/badge.d.ts.map +1 -0
- package/dist/components/badge/badge.js +180 -0
- package/dist/components/badge/badge.js.map +1 -0
- package/dist/components/badge/badge.spec.d.ts +2 -0
- package/dist/components/badge/badge.spec.d.ts.map +1 -0
- package/dist/components/badge/badge.spec.js +195 -0
- package/dist/components/badge/badge.spec.js.map +1 -0
- package/dist/components/badge/index.d.ts +2 -0
- package/dist/components/badge/index.d.ts.map +1 -0
- package/dist/components/badge/index.js +2 -0
- package/dist/components/badge/index.js.map +1 -0
- package/dist/components/icon-button/icon-button.d.ts +2 -8
- package/dist/components/icon-button/icon-button.d.ts.map +1 -1
- package/dist/components/icon-button/icon-button.js +10 -86
- package/dist/components/icon-button/icon-button.js.map +1 -1
- package/dist/components/index.d.ts +1 -4
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -4
- package/dist/components/index.js.map +1 -1
- package/dist/components/panel/panel.d.ts +8 -8
- package/dist/components/panel/panel.d.ts.map +1 -1
- package/dist/components/panel/panel.js +29 -30
- package/dist/components/panel/panel.js.map +1 -1
- package/dist/components/text/text.d.ts +21 -4
- package/dist/components/text/text.d.ts.map +1 -1
- package/dist/components/text/text.js +14 -14
- package/dist/components/text/text.js.map +1 -1
- package/dist/components/text-button/text-button.d.ts +9 -18
- package/dist/components/text-button/text-button.d.ts.map +1 -1
- package/dist/components/text-button/text-button.js +38 -81
- package/dist/components/text-button/text-button.js.map +1 -1
- package/dist/components/text-button/text-button.spec.js +55 -9
- package/dist/components/text-button/text-button.spec.js.map +1 -1
- package/dist/hudini.js +2375 -3881
- package/dist/hudini.min.js +1 -1
- package/dist/loaders/load-fonts.d.ts +29 -0
- package/dist/loaders/load-fonts.d.ts.map +1 -1
- package/dist/loaders/load-fonts.js +20 -1
- package/dist/loaders/load-fonts.js.map +1 -1
- package/dist/scene/index.d.ts +1 -0
- package/dist/scene/index.d.ts.map +1 -1
- package/dist/scene/index.js +1 -0
- package/dist/scene/index.js.map +1 -1
- package/dist/scene/scene-with-hudini.d.ts +24 -1
- package/dist/scene/scene-with-hudini.d.ts.map +1 -1
- package/dist/scene/scene-with-hudini.js +24 -1
- package/dist/scene/scene-with-hudini.js.map +1 -1
- package/dist/scene/with-hudini.d.ts +35 -0
- package/dist/scene/with-hudini.d.ts.map +1 -0
- package/dist/scene/with-hudini.js +33 -0
- package/dist/scene/with-hudini.js.map +1 -0
- package/dist/utils/button-style.d.ts +16 -0
- package/dist/utils/button-style.d.ts.map +1 -0
- package/dist/utils/button-style.js +35 -0
- package/dist/utils/button-style.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/number-to-rgb.d.ts +16 -0
- package/dist/utils/number-to-rgb.d.ts.map +1 -0
- package/dist/utils/number-to-rgb.js +20 -0
- package/dist/utils/number-to-rgb.js.map +1 -0
- package/package.json +2 -2
- package/dist/components/flat-icon-button/flat-icon-button.d.ts +0 -60
- package/dist/components/flat-icon-button/flat-icon-button.d.ts.map +0 -1
- package/dist/components/flat-icon-button/flat-icon-button.js +0 -279
- package/dist/components/flat-icon-button/flat-icon-button.js.map +0 -1
- package/dist/components/flat-icon-button/index.d.ts +0 -2
- package/dist/components/flat-icon-button/index.d.ts.map +0 -1
- package/dist/components/flat-icon-button/index.js +0 -2
- package/dist/components/flat-icon-button/index.js.map +0 -1
- package/dist/components/flat-section-header/flat-section-header.d.ts +0 -143
- package/dist/components/flat-section-header/flat-section-header.d.ts.map +0 -1
- package/dist/components/flat-section-header/flat-section-header.js +0 -275
- package/dist/components/flat-section-header/flat-section-header.js.map +0 -1
- package/dist/components/flat-section-header/flat-section-header.spec.d.ts +0 -2
- package/dist/components/flat-section-header/flat-section-header.spec.d.ts.map +0 -1
- package/dist/components/flat-section-header/flat-section-header.spec.js +0 -255
- package/dist/components/flat-section-header/flat-section-header.spec.js.map +0 -1
- package/dist/components/flat-section-header/index.d.ts +0 -2
- package/dist/components/flat-section-header/index.d.ts.map +0 -1
- package/dist/components/flat-section-header/index.js +0 -2
- package/dist/components/flat-section-header/index.js.map +0 -1
- package/dist/components/flat-text-button/flat-text-button.d.ts +0 -165
- package/dist/components/flat-text-button/flat-text-button.d.ts.map +0 -1
- package/dist/components/flat-text-button/flat-text-button.js +0 -325
- package/dist/components/flat-text-button/flat-text-button.js.map +0 -1
- package/dist/components/flat-text-button/flat-text-button.spec.d.ts +0 -2
- package/dist/components/flat-text-button/flat-text-button.spec.d.ts.map +0 -1
- package/dist/components/flat-text-button/flat-text-button.spec.js +0 -243
- package/dist/components/flat-text-button/flat-text-button.spec.js.map +0 -1
- package/dist/components/flat-text-button/index.d.ts +0 -2
- package/dist/components/flat-text-button/index.d.ts.map +0 -1
- package/dist/components/flat-text-button/index.js +0 -2
- package/dist/components/flat-text-button/index.js.map +0 -1
- package/dist/components/section-header/index.d.ts +0 -2
- package/dist/components/section-header/index.d.ts.map +0 -1
- package/dist/components/section-header/index.js +0 -2
- package/dist/components/section-header/index.js.map +0 -1
- package/dist/components/section-header/section-header.d.ts +0 -149
- package/dist/components/section-header/section-header.d.ts.map +0 -1
- package/dist/components/section-header/section-header.js +0 -292
- package/dist/components/section-header/section-header.js.map +0 -1
- package/dist/components/section-header/section-header.spec.d.ts +0 -2
- package/dist/components/section-header/section-header.spec.d.ts.map +0 -1
- package/dist/components/section-header/section-header.spec.js +0 -264
- package/dist/components/section-header/section-header.spec.js.map +0 -1
|
@@ -1,8 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options for {@link loadFonts}.
|
|
3
|
+
*
|
|
4
|
+
* @property fontAwesomeUrl - Optional override for the Font Awesome stylesheet URL.
|
|
5
|
+
* When omitted, `font-awesome-for-phaser` uses its own default.
|
|
6
|
+
* @property baseFont - Stylesheet URL for the base HUD font. Defaults to
|
|
7
|
+
* Google Fonts' Fredoka (variable, weights 300..700).
|
|
8
|
+
* @property baseFontFamily - Font-family name matching the stylesheet above.
|
|
9
|
+
* Must be the exact name the browser knows the font by. Defaults to `'Fredoka'`.
|
|
10
|
+
*/
|
|
1
11
|
type LoadFontsOptions = {
|
|
2
12
|
fontAwesomeUrl?: string;
|
|
3
13
|
baseFont?: string;
|
|
4
14
|
baseFontFamily?: string;
|
|
5
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* Loads the fonts Hudini needs at runtime: Font Awesome (for the icon
|
|
18
|
+
* components) and a base HUD font (used by text-based components).
|
|
19
|
+
*
|
|
20
|
+
* By default it pulls Fredoka from Google Fonts. Pass `baseFont` + `baseFontFamily`
|
|
21
|
+
* to swap it for any other web font — just make sure both point to the same
|
|
22
|
+
* font-family name the browser will see.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* // Use the defaults (Font Awesome + Fredoka)
|
|
26
|
+
* await loadFonts();
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* // Use a custom base font
|
|
30
|
+
* await loadFonts({
|
|
31
|
+
* baseFont: 'https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap',
|
|
32
|
+
* baseFontFamily: 'Inter',
|
|
33
|
+
* });
|
|
34
|
+
*/
|
|
6
35
|
export declare const loadFonts: (options?: LoadFontsOptions) => Promise<void>;
|
|
7
36
|
export {};
|
|
8
37
|
//# sourceMappingURL=load-fonts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-fonts.d.ts","sourceRoot":"","sources":["../../src/loaders/load-fonts.ts"],"names":[],"mappings":"AAEA,KAAK,gBAAgB,GAAG;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAiCF,eAAO,MAAM,SAAS,GAAU,UAAU,gBAAgB,KAAG,OAAO,CAAC,IAAI,CAexE,CAAC"}
|
|
1
|
+
{"version":3,"file":"load-fonts.d.ts","sourceRoot":"","sources":["../../src/loaders/load-fonts.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,KAAK,gBAAgB,GAAG;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAiCF;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,SAAS,GAAU,UAAU,gBAAgB,KAAG,OAAO,CAAC,IAAI,CAexE,CAAC"}
|
|
@@ -26,8 +26,27 @@ const ensureBaseFontReady = async (fontFamily) => {
|
|
|
26
26
|
await Promise.all(loads);
|
|
27
27
|
await document['fonts'].ready;
|
|
28
28
|
};
|
|
29
|
+
/**
|
|
30
|
+
* Loads the fonts Hudini needs at runtime: Font Awesome (for the icon
|
|
31
|
+
* components) and a base HUD font (used by text-based components).
|
|
32
|
+
*
|
|
33
|
+
* By default it pulls Fredoka from Google Fonts. Pass `baseFont` + `baseFontFamily`
|
|
34
|
+
* to swap it for any other web font — just make sure both point to the same
|
|
35
|
+
* font-family name the browser will see.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* // Use the defaults (Font Awesome + Fredoka)
|
|
39
|
+
* await loadFonts();
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* // Use a custom base font
|
|
43
|
+
* await loadFonts({
|
|
44
|
+
* baseFont: 'https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap',
|
|
45
|
+
* baseFontFamily: 'Inter',
|
|
46
|
+
* });
|
|
47
|
+
*/
|
|
29
48
|
export const loadFonts = async (options) => {
|
|
30
|
-
const { fontAwesomeUrl, baseFont = 'https://fonts.googleapis.com/css2?family=
|
|
49
|
+
const { fontAwesomeUrl, baseFont = 'https://fonts.googleapis.com/css2?family=Fredoka:wght@300..700&display=swap', baseFontFamily = 'Fredoka', } = options ?? {};
|
|
31
50
|
try {
|
|
32
51
|
await loadFontAwesomeForPhaser(fontAwesomeUrl);
|
|
33
52
|
await loadStylesheet(baseFont);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-fonts.js","sourceRoot":"","sources":["../../src/loaders/load-fonts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"load-fonts.js","sourceRoot":"","sources":["../../src/loaders/load-fonts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAkB/E,MAAM,cAAc,GAAG,CAAC,GAAW,EAAiB,EAAE;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAQ,EAAE;QAC3C,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;QACnE,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,GAAS,EAAE;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,GAAS,EAAE;YACxB,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,EAAE,UAAkB,EAAiB,EAAE;IACtE,MAAM,KAAK,GAAG;QACZ,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,UAAU,GAAG,EAAE,GAAG,CAAC;QACpD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,UAAU,GAAG,EAAE,GAAG,CAAC;KACrD,CAAC;IACF,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,MAAO,QAA2D,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;AACpF,CAAC,CAAC;AAGF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,OAA0B,EAAiB,EAAE;IAC3E,MAAM,EACJ,cAAc,EACd,QAAQ,GAAG,6EAA6E,EACxF,cAAc,GAAG,SAAS,GAC3B,GAAG,OAAO,IAAI,EAAE,CAAC;IAElB,IAAI,CAAC;QACH,MAAM,wBAAwB,CAAC,cAAc,CAAC,CAAC;QAC/C,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC/B,MAAM,mBAAmB,CAAC,cAAc,CAAC,CAAC;QAC1C,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrG,CAAC;AACH,CAAC,CAAC"}
|
package/dist/scene/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scene/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scene/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC"}
|
package/dist/scene/index.js
CHANGED
package/dist/scene/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scene/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scene/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC"}
|
|
@@ -1,8 +1,31 @@
|
|
|
1
1
|
import { BaseThemeConfig, SceneWithPhaserWind } from 'phaser-wind';
|
|
2
2
|
import { HudiniPlugin } from '../plugin/plugin';
|
|
3
|
+
/**
|
|
4
|
+
* @deprecated Use {@link withHudini} instead.
|
|
5
|
+
*
|
|
6
|
+
* Forces single inheritance, which conflicts with any user-defined `BaseScene`
|
|
7
|
+
* or other libraries that ship their own scene base class. It also relies on a
|
|
8
|
+
* non-null assertion (`hudini!`) that lies to TypeScript about when the plugin
|
|
9
|
+
* is available — touching `this.hudini` before the plugin mounts throws at
|
|
10
|
+
* runtime.
|
|
11
|
+
*
|
|
12
|
+
* Prefer the `withHudini(scene)` accessor:
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { withHudini } from 'hudini';
|
|
16
|
+
* import type { ThemeType } from './theme';
|
|
17
|
+
*
|
|
18
|
+
* class MyScene extends Phaser.Scene {
|
|
19
|
+
* create() {
|
|
20
|
+
* const hudini = withHudini<ThemeType>(this);
|
|
21
|
+
* }
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* Kept exported to avoid breaking existing consumers.
|
|
26
|
+
*/
|
|
3
27
|
export declare abstract class SceneWithHudini<T extends BaseThemeConfig = BaseThemeConfig> extends SceneWithPhaserWind<T> {
|
|
4
28
|
/**
|
|
5
|
-
*
|
|
6
29
|
* @param config The scene key or scene specific configuration settings.
|
|
7
30
|
*/
|
|
8
31
|
constructor(config?: string | Phaser.Types.Scenes.SettingsConfig);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-with-hudini.d.ts","sourceRoot":"","sources":["../../src/scene/scene-with-hudini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,8BAAsB,eAAe,CACnC,CAAC,SAAS,eAAe,GAAG,eAAe,CAC3C,SAAQ,mBAAmB,CAAC,CAAC,CAAC;IAC9B
|
|
1
|
+
{"version":3,"file":"scene-with-hudini.d.ts","sourceRoot":"","sources":["../../src/scene/scene-with-hudini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,8BAAsB,eAAe,CACnC,CAAC,SAAS,eAAe,GAAG,eAAe,CAC3C,SAAQ,mBAAmB,CAAC,CAAC,CAAC;IAC9B;;OAEG;gBACS,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc;IAIzD,MAAM,EAAG,YAAY,CAAC,CAAC,CAAC,CAAC;CACjC"}
|
|
@@ -1,7 +1,30 @@
|
|
|
1
1
|
import { SceneWithPhaserWind } from 'phaser-wind';
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated Use {@link withHudini} instead.
|
|
4
|
+
*
|
|
5
|
+
* Forces single inheritance, which conflicts with any user-defined `BaseScene`
|
|
6
|
+
* or other libraries that ship their own scene base class. It also relies on a
|
|
7
|
+
* non-null assertion (`hudini!`) that lies to TypeScript about when the plugin
|
|
8
|
+
* is available — touching `this.hudini` before the plugin mounts throws at
|
|
9
|
+
* runtime.
|
|
10
|
+
*
|
|
11
|
+
* Prefer the `withHudini(scene)` accessor:
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { withHudini } from 'hudini';
|
|
15
|
+
* import type { ThemeType } from './theme';
|
|
16
|
+
*
|
|
17
|
+
* class MyScene extends Phaser.Scene {
|
|
18
|
+
* create() {
|
|
19
|
+
* const hudini = withHudini<ThemeType>(this);
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* Kept exported to avoid breaking existing consumers.
|
|
25
|
+
*/
|
|
2
26
|
export class SceneWithHudini extends SceneWithPhaserWind {
|
|
3
27
|
/**
|
|
4
|
-
*
|
|
5
28
|
* @param config The scene key or scene specific configuration settings.
|
|
6
29
|
*/
|
|
7
30
|
constructor(config) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-with-hudini.js","sourceRoot":"","sources":["../../src/scene/scene-with-hudini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAInE,MAAM,OAAgB,eAEpB,SAAQ,mBAAsB;IAC9B
|
|
1
|
+
{"version":3,"file":"scene-with-hudini.js","sourceRoot":"","sources":["../../src/scene/scene-with-hudini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAInE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAgB,eAEpB,SAAQ,mBAAsB;IAC9B;;OAEG;IACH,YAAY,MAAoD;QAC9D,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAEM,MAAM,CAAmB;CACjC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Scene } from 'phaser';
|
|
2
|
+
import type { BaseThemeConfig } from 'phaser-wind';
|
|
3
|
+
import { HudiniPlugin } from '../plugin/plugin';
|
|
4
|
+
/**
|
|
5
|
+
* Accessor for the Hudini plugin from within a Phaser scene.
|
|
6
|
+
*
|
|
7
|
+
* Preferred over {@link SceneWithHudini} (inheritance) and over module
|
|
8
|
+
* augmentation of `Phaser.Scene`, because it:
|
|
9
|
+
* - Composes with any existing base scene (no forced inheritance).
|
|
10
|
+
* - Keeps the theme type explicit at the call site (no silent `any`).
|
|
11
|
+
* - Doesn't rely on non-null assertions that lie about lifecycle.
|
|
12
|
+
*
|
|
13
|
+
* Call it inside `create()` / `update()` (after the plugin has been installed).
|
|
14
|
+
*
|
|
15
|
+
* @typeParam T - The theme config type. Pass your `ThemeType` to get
|
|
16
|
+
* type-narrowed access to your custom tokens (through `hudini.pw`).
|
|
17
|
+
* @param scene - The Phaser scene instance.
|
|
18
|
+
* @returns The Hudini plugin instance bound to the given theme type.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* import { withHudini } from 'hudini';
|
|
23
|
+
* import type { ThemeType } from './theme';
|
|
24
|
+
*
|
|
25
|
+
* class MyScene extends Phaser.Scene {
|
|
26
|
+
* create() {
|
|
27
|
+
* const hudini = withHudini<ThemeType>(this);
|
|
28
|
+
* const pw = hudini.pw;
|
|
29
|
+
* this.cameras.main.setBackgroundColor(pw.color.rgb('background'));
|
|
30
|
+
* }
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare const withHudini: <T extends BaseThemeConfig = BaseThemeConfig>(scene: Scene) => HudiniPlugin<T>;
|
|
35
|
+
//# sourceMappingURL=with-hudini.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-hudini.d.ts","sourceRoot":"","sources":["../../src/scene/with-hudini.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAc,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,eAAe,GAAG,eAAe,EACpE,OAAO,KAAK,KACX,YAAY,CAAC,CAAC,CAC4C,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { HUDINI_KEY } from '../plugin/plugin';
|
|
2
|
+
/**
|
|
3
|
+
* Accessor for the Hudini plugin from within a Phaser scene.
|
|
4
|
+
*
|
|
5
|
+
* Preferred over {@link SceneWithHudini} (inheritance) and over module
|
|
6
|
+
* augmentation of `Phaser.Scene`, because it:
|
|
7
|
+
* - Composes with any existing base scene (no forced inheritance).
|
|
8
|
+
* - Keeps the theme type explicit at the call site (no silent `any`).
|
|
9
|
+
* - Doesn't rely on non-null assertions that lie about lifecycle.
|
|
10
|
+
*
|
|
11
|
+
* Call it inside `create()` / `update()` (after the plugin has been installed).
|
|
12
|
+
*
|
|
13
|
+
* @typeParam T - The theme config type. Pass your `ThemeType` to get
|
|
14
|
+
* type-narrowed access to your custom tokens (through `hudini.pw`).
|
|
15
|
+
* @param scene - The Phaser scene instance.
|
|
16
|
+
* @returns The Hudini plugin instance bound to the given theme type.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { withHudini } from 'hudini';
|
|
21
|
+
* import type { ThemeType } from './theme';
|
|
22
|
+
*
|
|
23
|
+
* class MyScene extends Phaser.Scene {
|
|
24
|
+
* create() {
|
|
25
|
+
* const hudini = withHudini<ThemeType>(this);
|
|
26
|
+
* const pw = hudini.pw;
|
|
27
|
+
* this.cameras.main.setBackgroundColor(pw.color.rgb('background'));
|
|
28
|
+
* }
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export const withHudini = (scene) => scene.plugins.get(HUDINI_KEY);
|
|
33
|
+
//# sourceMappingURL=with-hudini.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-hudini.js","sourceRoot":"","sources":["../../src/scene/with-hudini.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAgB,MAAM,kBAAkB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,KAAY,EACK,EAAE,CACnB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAA+B,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** Thickness of the outline stroke around a button's text or icon glyph. */
|
|
2
|
+
export declare const BUTTON_STROKE_THICKNESS = 3;
|
|
3
|
+
/**
|
|
4
|
+
* Compute the outline (stroke) color for the text or icon of a button, given
|
|
5
|
+
* the button's own color input.
|
|
6
|
+
*
|
|
7
|
+
* - Palette-based color (family like `'blue'` or a full token like
|
|
8
|
+
* `'blue-500'`): a darker shade in the same palette family via
|
|
9
|
+
* {@link Color.shift}.
|
|
10
|
+
* - Arbitrary CSS color (`'#3B82F6'`, `'rgb(...)'`): soft translucent black.
|
|
11
|
+
*
|
|
12
|
+
* Shared between {@link TextButton} and {@link IconButton} so both render
|
|
13
|
+
* with the same outline style.
|
|
14
|
+
*/
|
|
15
|
+
export declare const getButtonStrokeColor: (colorInput: string) => string;
|
|
16
|
+
//# sourceMappingURL=button-style.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button-style.d.ts","sourceRoot":"","sources":["../../src/utils/button-style.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAkBzC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,GAAI,YAAY,MAAM,KAAG,MAMzD,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Color, isColorKey, Opacity } from 'phaser-wind';
|
|
2
|
+
/** Thickness of the outline stroke around a button's text or icon glyph. */
|
|
3
|
+
export const BUTTON_STROKE_THICKNESS = 3;
|
|
4
|
+
/**
|
|
5
|
+
* Amount added to the palette shade to derive the button's stroke color.
|
|
6
|
+
* `blue-500` + 400 → `blue-900` — a darker outline that still lives in the
|
|
7
|
+
* same palette family, so it never clashes with the fill.
|
|
8
|
+
*/
|
|
9
|
+
const STROKE_DARKER_SHIFT = 400;
|
|
10
|
+
/**
|
|
11
|
+
* Opacity token used for the fallback stroke when the button color isn't a
|
|
12
|
+
* palette reference. Solid black chapado is too harsh against many fills;
|
|
13
|
+
* ~60% translucent black keeps the outline readable while blending in.
|
|
14
|
+
*/
|
|
15
|
+
const FALLBACK_STROKE_OPACITY_KEY = '60';
|
|
16
|
+
const blackWithAlpha = (alpha) => `rgba(0, 0, 0, ${alpha})`;
|
|
17
|
+
/**
|
|
18
|
+
* Compute the outline (stroke) color for the text or icon of a button, given
|
|
19
|
+
* the button's own color input.
|
|
20
|
+
*
|
|
21
|
+
* - Palette-based color (family like `'blue'` or a full token like
|
|
22
|
+
* `'blue-500'`): a darker shade in the same palette family via
|
|
23
|
+
* {@link Color.shift}.
|
|
24
|
+
* - Arbitrary CSS color (`'#3B82F6'`, `'rgb(...)'`): soft translucent black.
|
|
25
|
+
*
|
|
26
|
+
* Shared between {@link TextButton} and {@link IconButton} so both render
|
|
27
|
+
* with the same outline style.
|
|
28
|
+
*/
|
|
29
|
+
export const getButtonStrokeColor = (colorInput) => {
|
|
30
|
+
const isPaletteColor = isColorKey(colorInput) || Color.isValidColorToken(colorInput);
|
|
31
|
+
return isPaletteColor
|
|
32
|
+
? Color.rgb(Color.shift(colorInput, STROKE_DARKER_SHIFT))
|
|
33
|
+
: blackWithAlpha(Opacity.value(FALLBACK_STROKE_OPACITY_KEY));
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=button-style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button-style.js","sourceRoot":"","sources":["../../src/utils/button-style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AAExE,4EAA4E;AAC5E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAEzC;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC;;;;GAIG;AACH,MAAM,2BAA2B,GAAG,IAAa,CAAC;AAElD,MAAM,cAAc,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,iBAAiB,KAAK,GAAG,CAAC;AAE5E;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,UAAkB,EAAU,EAAE;IACjE,MAAM,cAAc,GAClB,UAAU,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAChE,OAAO,cAAc;QACnB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,UAAsB,EAAE,mBAAmB,CAAC,CAAC;QACrE,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;AACjE,CAAC,CAAC"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC"}
|
package/dist/utils/index.js
CHANGED
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert a `0xRRGGBB` color number into a CSS `rgb(r, g, b)` string.
|
|
3
|
+
*
|
|
4
|
+
* Handy when a numeric Phaser color (e.g. produced by `pw.color.hex(...)` or
|
|
5
|
+
* `getColorVariant(...)`) needs to feed a `Phaser.GameObjects.Text` style
|
|
6
|
+
* field like `color`, `stroke` or `shadow.color`, which expect strings.
|
|
7
|
+
*
|
|
8
|
+
* @param color - Color as a 24-bit integer (`0xRRGGBB`).
|
|
9
|
+
* @returns CSS `rgb(r, g, b)` string.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* const dark = getColorVariant('blue-500', 400, 0); // number
|
|
13
|
+
* text.setStroke(numberToRgb(dark), 3);
|
|
14
|
+
*/
|
|
15
|
+
export declare const numberToRgb: (color: number) => string;
|
|
16
|
+
//# sourceMappingURL=number-to-rgb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-to-rgb.d.ts","sourceRoot":"","sources":["../../src/utils/number-to-rgb.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAG3C,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import Phaser from 'phaser';
|
|
2
|
+
/**
|
|
3
|
+
* Convert a `0xRRGGBB` color number into a CSS `rgb(r, g, b)` string.
|
|
4
|
+
*
|
|
5
|
+
* Handy when a numeric Phaser color (e.g. produced by `pw.color.hex(...)` or
|
|
6
|
+
* `getColorVariant(...)`) needs to feed a `Phaser.GameObjects.Text` style
|
|
7
|
+
* field like `color`, `stroke` or `shadow.color`, which expect strings.
|
|
8
|
+
*
|
|
9
|
+
* @param color - Color as a 24-bit integer (`0xRRGGBB`).
|
|
10
|
+
* @returns CSS `rgb(r, g, b)` string.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* const dark = getColorVariant('blue-500', 400, 0); // number
|
|
14
|
+
* text.setStroke(numberToRgb(dark), 3);
|
|
15
|
+
*/
|
|
16
|
+
export const numberToRgb = (color) => {
|
|
17
|
+
const c = Phaser.Display.Color.ValueToColor(color);
|
|
18
|
+
return `rgb(${c.red}, ${c.green}, ${c.blue})`;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=number-to-rgb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-to-rgb.js","sourceRoot":"","sources":["../../src/utils/number-to-rgb.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAa,EAAU,EAAE;IACnD,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnD,OAAO,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC;AAChD,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hudini",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"description": "🎩 Magical Phaser UI components - Reusable HUD elements for game development. Is magic, like a wizard",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"vitest": "^3.2.4"
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
|
65
|
-
"phaser-wind": "0.
|
|
65
|
+
"phaser-wind": "0.11.0",
|
|
66
66
|
"font-awesome-for-phaser": "0.10.0"
|
|
67
67
|
},
|
|
68
68
|
"peerDependencies": {
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { IconText, type IconKey, type IconStyle } from 'font-awesome-for-phaser';
|
|
2
|
-
import { GameObjects, Scene } from 'phaser';
|
|
3
|
-
import { type ColorKey, type FontSizeKey } from 'phaser-wind';
|
|
4
|
-
export type FlatIconButtonParams = {
|
|
5
|
-
scene: Scene;
|
|
6
|
-
x: number;
|
|
7
|
-
y: number;
|
|
8
|
-
icon: IconKey;
|
|
9
|
-
iconStyle?: IconStyle;
|
|
10
|
-
size?: FontSizeKey | number;
|
|
11
|
-
backgroundColor?: ColorKey | string;
|
|
12
|
-
iconColor?: ColorKey | string;
|
|
13
|
-
onClick?: () => void;
|
|
14
|
-
borderRadius?: string | number;
|
|
15
|
-
backgroundOpacity?: number;
|
|
16
|
-
iconOpacity?: number;
|
|
17
|
-
};
|
|
18
|
-
export declare class FlatIconButton extends GameObjects.Container {
|
|
19
|
-
backgroundSprite: GameObjects.Sprite;
|
|
20
|
-
whiteBorderSprite: GameObjects.Sprite;
|
|
21
|
-
iconText: IconText;
|
|
22
|
-
private pw;
|
|
23
|
-
private baseSizePx;
|
|
24
|
-
private borderRadiusPx;
|
|
25
|
-
private backgroundColorValue;
|
|
26
|
-
private iconColorValue;
|
|
27
|
-
private backgroundOpacityValue;
|
|
28
|
-
private iconOpacityValue;
|
|
29
|
-
constructor({ scene, x, y, icon, iconStyle, size, backgroundColor, iconColor, onClick, borderRadius, backgroundOpacity, iconOpacity, }: FlatIconButtonParams);
|
|
30
|
-
setBackgroundColor(color: ColorKey | string): this;
|
|
31
|
-
setIconColor(color: ColorKey | string): this;
|
|
32
|
-
setBackgroundOpacity(opacity: number): this;
|
|
33
|
-
setIconOpacity(opacity: number): this;
|
|
34
|
-
setBorderRadius(borderRadius: string | number): this;
|
|
35
|
-
setIcon(icon: IconKey, opts?: {
|
|
36
|
-
iconStyle?: IconStyle;
|
|
37
|
-
}): this;
|
|
38
|
-
setButtonSize(size: FontSizeKey | number): this;
|
|
39
|
-
private updateSize;
|
|
40
|
-
private createWhiteBorderSprite;
|
|
41
|
-
private createBackgroundSprite;
|
|
42
|
-
private regenerateBackgroundTexture;
|
|
43
|
-
private createWhiteBorderTexture;
|
|
44
|
-
private createBackgroundTexture;
|
|
45
|
-
private createIconText;
|
|
46
|
-
private setupContainer;
|
|
47
|
-
private setupInteractivity;
|
|
48
|
-
/**
|
|
49
|
-
* Gets the interactive sprite of the icon button
|
|
50
|
-
* @returns The interactive sprite
|
|
51
|
-
*/
|
|
52
|
-
get interactive(): Pick<GameObjects.Sprite, 'on' | 'off' | 'setInteractive' | 'setInteractive' | 'once'>;
|
|
53
|
-
/**
|
|
54
|
-
* Gets the bounds of the flat icon button for layout calculations
|
|
55
|
-
* @param output Optional rectangle to store the result
|
|
56
|
-
* @returns Rectangle with the button bounds
|
|
57
|
-
*/
|
|
58
|
-
getBounds(output?: Phaser.Geom.Rectangle): Phaser.Geom.Rectangle;
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=flat-icon-button.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flat-icon-button.d.ts","sourceRoot":"","sources":["../../../src/components/flat-icon-button/flat-icon-button.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,KAAK,OAAO,EACZ,KAAK,SAAS,EACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,WAAW,EAEjB,MAAM,aAAa,CAAC;AAIrB,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,KAAK,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACpC,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AA4BF,qBAAa,cAAe,SAAQ,WAAW,CAAC,SAAS;IAChD,gBAAgB,EAAG,WAAW,CAAC,MAAM,CAAC;IACtC,iBAAiB,EAAG,WAAW,CAAC,MAAM,CAAC;IACvC,QAAQ,EAAG,QAAQ,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAuB;IAEjC,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,oBAAoB,CAAU;IACtC,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,gBAAgB,CAAK;gBAEjB,EACV,KAAK,EACL,CAAC,EACD,CAAC,EACD,IAAI,EACJ,SAAmB,EACnB,IAAI,EACJ,eAA4B,EAC5B,SAAmB,EACnB,OAAO,EACP,YAAmB,EACnB,iBAAqB,EACrB,WAAe,GAChB,EAAE,oBAAoB;IA6BhB,kBAAkB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI;IAMlD,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI;IAQ5C,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM3C,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOrC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAkBpD,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,SAAS,CAAA;KAAE,GAAG,IAAI;IAK9D,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI;IAiBtD,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,2BAA2B;IAQnC,OAAO,CAAC,wBAAwB;IA8BhC,OAAO,CAAC,uBAAuB;IAsC/B,OAAO,CAAC,cAAc;IAiCtB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,kBAAkB;IA+C1B;;;OAGG;IACH,IAAW,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,GAAG,KAAK,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,MAAM,CAAC,CAQ9G;IAED;;;;OAIG;IACa,SAAS,CACvB,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,GAC7B,MAAM,CAAC,IAAI,CAAC,SAAS;CAoBzB"}
|