@kurot/ui 1.1.7 → 1.1.8
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/README.md +44 -0
- package/dist/kurot/binding/Binding.d.ts +5 -13
- package/dist/kurot/binding/Binding.d.ts.map +1 -1
- package/dist/kurot/binding/Binding.js +7 -15
- package/dist/kurot/binding/Binding.js.map +1 -1
- package/dist/kurot/binding/Watcher.d.ts +11 -28
- package/dist/kurot/binding/Watcher.d.ts.map +1 -1
- package/dist/kurot/binding/Watcher.js +25 -46
- package/dist/kurot/binding/Watcher.js.map +1 -1
- package/dist/kurot/components/Skin.d.ts +6 -0
- package/dist/kurot/components/Skin.d.ts.map +1 -1
- package/dist/kurot/components/Skin.js +8 -0
- package/dist/kurot/components/Skin.js.map +1 -1
- package/dist/kurot/core/DefaultAssetAdapter.d.ts +1 -2
- package/dist/kurot/core/DefaultAssetAdapter.d.ts.map +1 -1
- package/dist/kurot/core/DefaultAssetAdapter.js +1 -2
- package/dist/kurot/core/DefaultAssetAdapter.js.map +1 -1
- package/dist/kurot/core/DefaultThemeAdapter.d.ts +1 -1
- package/dist/kurot/core/DefaultThemeAdapter.js +1 -1
- package/dist/kurot/core/IAssetAdapter.d.ts +3 -6
- package/dist/kurot/core/IAssetAdapter.d.ts.map +1 -1
- package/dist/kurot/core/IDisplayText.d.ts +1 -3
- package/dist/kurot/core/IDisplayText.d.ts.map +1 -1
- package/dist/kurot/core/IItemRenderer.d.ts +1 -1
- package/dist/kurot/core/IThemeAdapter.d.ts +2 -6
- package/dist/kurot/core/IThemeAdapter.d.ts.map +1 -1
- package/dist/kurot/core/IUIComponent.d.ts +3 -5
- package/dist/kurot/core/IUIComponent.d.ts.map +1 -1
- package/dist/kurot/core/IViewport.d.ts +1 -1
- package/dist/kurot/core/Theme.d.ts +9 -14
- package/dist/kurot/core/Theme.d.ts.map +1 -1
- package/dist/kurot/core/Theme.js +10 -16
- package/dist/kurot/core/Theme.js.map +1 -1
- package/dist/kurot/core/UIComponent.d.ts.map +1 -1
- package/dist/kurot/core/UIComponent.js +0 -2
- package/dist/kurot/core/UIComponent.js.map +1 -1
- package/dist/kurot/core/UIState.d.ts +5 -7
- package/dist/kurot/core/UIState.d.ts.map +1 -1
- package/dist/kurot/core/UIState.js +6 -13
- package/dist/kurot/core/UIState.js.map +1 -1
- package/dist/kurot/core/Validator.d.ts +4 -10
- package/dist/kurot/core/Validator.d.ts.map +1 -1
- package/dist/kurot/core/Validator.js +4 -19
- package/dist/kurot/core/Validator.js.map +1 -1
- package/dist/kurot/events/CollectionEvent.d.ts +25 -0
- package/dist/kurot/events/CollectionEvent.d.ts.map +1 -1
- package/dist/kurot/events/CollectionEvent.js +25 -0
- package/dist/kurot/events/CollectionEvent.js.map +1 -1
- package/dist/kurot/events/ItemTapEvent.d.ts +16 -0
- package/dist/kurot/events/ItemTapEvent.d.ts.map +1 -1
- package/dist/kurot/events/ItemTapEvent.js +16 -0
- package/dist/kurot/events/ItemTapEvent.js.map +1 -1
- package/dist/kurot/events/PropertyEvent.d.ts +10 -0
- package/dist/kurot/events/PropertyEvent.d.ts.map +1 -1
- package/dist/kurot/events/PropertyEvent.js +10 -0
- package/dist/kurot/events/PropertyEvent.js.map +1 -1
- package/dist/kurot/events/ScrollerThrowEvent.d.ts +9 -5
- package/dist/kurot/events/ScrollerThrowEvent.d.ts.map +1 -1
- package/dist/kurot/events/ScrollerThrowEvent.js +9 -5
- package/dist/kurot/events/ScrollerThrowEvent.js.map +1 -1
- package/dist/kurot/events/UIEvent.d.ts +5 -1
- package/dist/kurot/events/UIEvent.d.ts.map +1 -1
- package/dist/kurot/events/UIEvent.js +5 -1
- package/dist/kurot/events/UIEvent.js.map +1 -1
- package/dist/kurot/layouts/BasicLayout.d.ts +3 -3
- package/dist/kurot/layouts/BasicLayout.d.ts.map +1 -1
- package/dist/kurot/layouts/BasicLayout.js +3 -4
- package/dist/kurot/layouts/BasicLayout.js.map +1 -1
- package/dist/kurot/layouts/HorizontalLayout.d.ts +3 -7
- package/dist/kurot/layouts/HorizontalLayout.d.ts.map +1 -1
- package/dist/kurot/layouts/HorizontalLayout.js +3 -14
- package/dist/kurot/layouts/HorizontalLayout.js.map +1 -1
- package/dist/kurot/layouts/ILayoutTarget.d.ts +1 -2
- package/dist/kurot/layouts/ILayoutTarget.d.ts.map +1 -1
- package/dist/kurot/layouts/LayoutBase.d.ts +14 -2
- package/dist/kurot/layouts/LayoutBase.d.ts.map +1 -1
- package/dist/kurot/layouts/LayoutBase.js +14 -2
- package/dist/kurot/layouts/LayoutBase.js.map +1 -1
- package/dist/kurot/layouts/LinearLayoutBase.d.ts +1 -13
- package/dist/kurot/layouts/LinearLayoutBase.d.ts.map +1 -1
- package/dist/kurot/layouts/LinearLayoutBase.js +1 -14
- package/dist/kurot/layouts/LinearLayoutBase.js.map +1 -1
- package/dist/kurot/layouts/TileLayout.d.ts +4 -3
- package/dist/kurot/layouts/TileLayout.d.ts.map +1 -1
- package/dist/kurot/layouts/TileLayout.js +4 -3
- package/dist/kurot/layouts/TileLayout.js.map +1 -1
- package/dist/kurot/layouts/VerticalLayout.d.ts +3 -7
- package/dist/kurot/layouts/VerticalLayout.d.ts.map +1 -1
- package/dist/kurot/layouts/VerticalLayout.js +3 -15
- package/dist/kurot/layouts/VerticalLayout.js.map +1 -1
- package/package.json +15 -8
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Kelvin
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -245,6 +245,50 @@ class MyButtonSkin extends Skin {
|
|
|
245
245
|
| `UIEvent.CLOSING` | `Panel` | Close button tapped (cancelable) |
|
|
246
246
|
| `UIEvent.CREATION_COMPLETE` | Any `Component` | First `createChildren` completed |
|
|
247
247
|
|
|
248
|
+
## UI Benchmark
|
|
249
|
+
|
|
250
|
+
The UI package includes three deterministic browser workloads: a 400-node
|
|
251
|
+
static skin, transform/alpha animation across 240 UI nodes, and a 10,000-record
|
|
252
|
+
virtual list. They measure frame/render time, draw calls, validation-phase
|
|
253
|
+
activity, and ItemRenderer creation/reuse.
|
|
254
|
+
|
|
255
|
+
Validation counters cover measured frames. Renderer creation/reuse and maximum
|
|
256
|
+
live-renderer counts cover the complete scenario, including warmup, so the
|
|
257
|
+
report can distinguish a stable pool from per-frame renderer churn.
|
|
258
|
+
|
|
259
|
+
The first complete Chromium run used 60 warmup frames and 300 measured frames:
|
|
260
|
+
|
|
261
|
+
| Workload | Setup | Frame P95 | Render P95 | Draw calls | UI lifecycle result |
|
|
262
|
+
| -------- | ----: | --------: | ---------: | ---------: | ------------------- |
|
|
263
|
+
| 400-node static image UI | 8.50 ms | 10.20 ms | 0.20 ms | 1 | No repeated validation after stabilization |
|
|
264
|
+
| 240-node transform/alpha animation | 3.90 ms | 10.00 ms | 0.30 ms | 1 | No measure or display-list validation |
|
|
265
|
+
| 10,000-record virtual list | 6.90 ms | 9.90 ms | 0.50 ms | 5 | 19 renderers created and at most 19 live |
|
|
266
|
+
|
|
267
|
+
The transform workload recorded 72,000 `commitProperties` calls: 240 moving UI
|
|
268
|
+
nodes × 300 measured frames. Multiple property changes on the same component
|
|
269
|
+
were coalesced to one property commit per frame. Under the current UI contract,
|
|
270
|
+
position changes participate in parent layout/content-bound invalidation, so
|
|
271
|
+
this is expected bookkeeping rather than 72,000 measurements, layouts, texture
|
|
272
|
+
uploads, or draw calls. The workload still remained one draw call and triggered
|
|
273
|
+
zero `measure` and zero `updateDisplayList` calls during measurement.
|
|
274
|
+
|
|
275
|
+
These results show that the core batching path reaches the UI layer, stable UI
|
|
276
|
+
does not continue validating, and virtual layout bounds renderer population by
|
|
277
|
+
the visible window. They are scoped results from one Chromium environment, not
|
|
278
|
+
a cross-device performance guarantee or a comparison with another UI framework.
|
|
279
|
+
|
|
280
|
+
```sh
|
|
281
|
+
pnpm benchmark
|
|
282
|
+
pnpm benchmark:smoke
|
|
283
|
+
pnpm benchmark:compare
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
`benchmark` starts the visual page at `/benchmark/`. `benchmark:smoke` verifies
|
|
287
|
+
all scenarios quickly, while `benchmark:compare` runs 60 warmup and 300 measured
|
|
288
|
+
frames per scenario and writes local JSON/Markdown results under
|
|
289
|
+
`examples/benchmark/results/`. This is a Kurot UI self-baseline, not a
|
|
290
|
+
cross-framework ranking.
|
|
291
|
+
|
|
248
292
|
## Differences from Egret EUI
|
|
249
293
|
|
|
250
294
|
| | Egret EUI | @kurot/ui |
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { Watcher } from './Watcher.js';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* - `bindProperty(host, chain, target, prop)` — binds `host.chain` → `target.prop`
|
|
6
|
-
* - `bindHandler(host, chain, handler, thisObject)` — calls `handler(value)` on change
|
|
7
|
-
* - `bindProperties(host, templates, chainIndex, target, prop)` — template-string binding
|
|
3
|
+
* Creates reactive property-chain bindings.
|
|
4
|
+
* Binding hosts must dispatch property-change events for observed properties.
|
|
8
5
|
*/
|
|
9
6
|
export declare class Binding {
|
|
10
7
|
/**
|
|
@@ -12,7 +9,6 @@ export declare class Binding {
|
|
|
12
9
|
*
|
|
13
10
|
* ```ts
|
|
14
11
|
* Binding.bindProperty(user, ['name'], label, 'text');
|
|
15
|
-
* // label.text === user.name; auto-updates when user dispatches PropertyChange
|
|
16
12
|
* ```
|
|
17
13
|
*/
|
|
18
14
|
static bindProperty(host: unknown, chain: string[], target: unknown, prop: string): Watcher | undefined;
|
|
@@ -20,18 +16,14 @@ export declare class Binding {
|
|
|
20
16
|
* Binds a property chain on `host` to a handler function.
|
|
21
17
|
*
|
|
22
18
|
* ```ts
|
|
23
|
-
* Binding.bindHandler(user, ['name'],
|
|
19
|
+
* Binding.bindHandler(user, ['name'], value => console.log(value), undefined);
|
|
24
20
|
* ```
|
|
25
21
|
*/
|
|
26
22
|
static bindHandler(host: unknown, chain: string[], handler: (value: unknown) => void, thisObject: unknown): Watcher | undefined;
|
|
27
23
|
/**
|
|
28
|
-
*
|
|
24
|
+
* Binds a mixture of literal values and property chains to a string property.
|
|
29
25
|
*
|
|
30
|
-
* `
|
|
31
|
-
* `chainIndex` marks which entries are dynamic (property chains).
|
|
32
|
-
*
|
|
33
|
-
* The result is the string concatenation of all template values, written
|
|
34
|
-
* to `target[prop]`.
|
|
26
|
+
* `chainIndex` identifies entries in `templates` that contain property chains.
|
|
35
27
|
*/
|
|
36
28
|
static bindProperties(host: unknown, templates: unknown[], chainIndex: number[], target: unknown, prop: string): Watcher | undefined;
|
|
37
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Binding.d.ts","sourceRoot":"","sources":["../../../src/kurot/binding/Binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC
|
|
1
|
+
{"version":3,"file":"Binding.d.ts","sourceRoot":"","sources":["../../../src/kurot/binding/Binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC;;;GAGG;AACH,qBAAa,OAAO;IACnB;;;;;;OAMG;WACW,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAY9G;;;;;;OAMG;WACW,WAAW,CACxB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,EACjC,UAAU,EAAE,OAAO,GACjB,OAAO,GAAG,SAAS;IAQtB;;;;OAIG;WACW,cAAc,CAC3B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,OAAO,EAAE,EACpB,UAAU,EAAE,MAAM,EAAE,EACpB,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,MAAM,GACV,OAAO,GAAG,SAAS;CAgCtB"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { Watcher } from './Watcher.js';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* - `bindProperty(host, chain, target, prop)` — binds `host.chain` → `target.prop`
|
|
6
|
-
* - `bindHandler(host, chain, handler, thisObject)` — calls `handler(value)` on change
|
|
7
|
-
* - `bindProperties(host, templates, chainIndex, target, prop)` — template-string binding
|
|
3
|
+
* Creates reactive property-chain bindings.
|
|
4
|
+
* Binding hosts must dispatch property-change events for observed properties.
|
|
8
5
|
*/
|
|
9
6
|
export class Binding {
|
|
10
7
|
/**
|
|
@@ -12,11 +9,10 @@ export class Binding {
|
|
|
12
9
|
*
|
|
13
10
|
* ```ts
|
|
14
11
|
* Binding.bindProperty(user, ['name'], label, 'text');
|
|
15
|
-
* // label.text === user.name; auto-updates when user dispatches PropertyChange
|
|
16
12
|
* ```
|
|
17
13
|
*/
|
|
18
14
|
static bindProperty(host, chain, target, prop) {
|
|
19
|
-
const watcher = Watcher.watch(host, chain
|
|
15
|
+
const watcher = Watcher.watch(host, chain);
|
|
20
16
|
if (watcher) {
|
|
21
17
|
const assign = (value) => {
|
|
22
18
|
target[prop] = value;
|
|
@@ -30,7 +26,7 @@ export class Binding {
|
|
|
30
26
|
* Binds a property chain on `host` to a handler function.
|
|
31
27
|
*
|
|
32
28
|
* ```ts
|
|
33
|
-
* Binding.bindHandler(user, ['name'],
|
|
29
|
+
* Binding.bindHandler(user, ['name'], value => console.log(value), undefined);
|
|
34
30
|
* ```
|
|
35
31
|
*/
|
|
36
32
|
static bindHandler(host, chain, handler, thisObject) {
|
|
@@ -41,13 +37,9 @@ export class Binding {
|
|
|
41
37
|
return watcher;
|
|
42
38
|
}
|
|
43
39
|
/**
|
|
44
|
-
*
|
|
40
|
+
* Binds a mixture of literal values and property chains to a string property.
|
|
45
41
|
*
|
|
46
|
-
* `
|
|
47
|
-
* `chainIndex` marks which entries are dynamic (property chains).
|
|
48
|
-
*
|
|
49
|
-
* The result is the string concatenation of all template values, written
|
|
50
|
-
* to `target[prop]`.
|
|
42
|
+
* `chainIndex` identifies entries in `templates` that contain property chains.
|
|
51
43
|
*/
|
|
52
44
|
static bindProperties(host, templates, chainIndex, target, prop) {
|
|
53
45
|
if (templates.length === 1 && chainIndex.length === 1) {
|
|
@@ -61,7 +53,7 @@ export class Binding {
|
|
|
61
53
|
const element = templates[index];
|
|
62
54
|
let watcher;
|
|
63
55
|
if (typeof element === 'string') {
|
|
64
|
-
watcher = Watcher.watch(host, element.split('.')
|
|
56
|
+
watcher = Watcher.watch(host, element.split('.'));
|
|
65
57
|
}
|
|
66
58
|
else if (element instanceof Watcher) {
|
|
67
59
|
watcher = element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Binding.js","sourceRoot":"","sources":["../../../src/kurot/binding/Binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC
|
|
1
|
+
{"version":3,"file":"Binding.js","sourceRoot":"","sources":["../../../src/kurot/binding/Binding.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,48 +1,32 @@
|
|
|
1
1
|
import type { IEventDispatcher } from '@kurot/core';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* read by arbitrary property name (i.e. it is a record of named bindable values).
|
|
5
|
-
*
|
|
6
|
-
* This is the minimal contract a binding host must satisfy. In practice every
|
|
7
|
-
* host is an {@link EventDispatcher} subclass (Skin, Component, Group, …) whose
|
|
8
|
-
* own properties are mutated and then announced via
|
|
9
|
-
* {@link PropertyEvent.dispatchPropertyEvent}. The index signature models that
|
|
10
|
-
* dynamic access without forcing every host through `as unknown as Record<…>`.
|
|
3
|
+
* Event dispatcher whose properties can be observed by name.
|
|
11
4
|
*/
|
|
12
5
|
export type Bindable = IEventDispatcher & Record<string, unknown>;
|
|
13
6
|
/**
|
|
14
|
-
*
|
|
15
|
-
* When the property changes (via {@link PropertyEvent}), the registered
|
|
16
|
-
* handler is invoked with the new value.
|
|
7
|
+
* Observes a property chain and reports changes to its leaf value.
|
|
17
8
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
9
|
+
* Each object in the chain must dispatch
|
|
10
|
+
* {@link PropertyEvent.PROPERTY_CHANGE} when an observed property changes.
|
|
20
11
|
*/
|
|
21
12
|
export declare class Watcher {
|
|
22
|
-
private _host?;
|
|
23
13
|
private readonly _property;
|
|
14
|
+
private readonly _next?;
|
|
15
|
+
private _host?;
|
|
24
16
|
private _handler?;
|
|
25
17
|
private _thisObject;
|
|
26
|
-
private readonly _next?;
|
|
27
18
|
private _isExecuting;
|
|
28
|
-
|
|
19
|
+
private _onPropertyChange;
|
|
20
|
+
constructor(property: string, handler?: (value: unknown) => void, thisObject?: unknown, next?: Watcher);
|
|
29
21
|
/**
|
|
30
22
|
* Creates and starts a Watcher for a property chain.
|
|
23
|
+
* Returns `undefined` when the chain is empty.
|
|
31
24
|
*
|
|
32
25
|
* ```ts
|
|
33
|
-
*
|
|
34
|
-
* Watcher.watch(host, ['a', 'b', 'c'], (value) => { ... }, this);
|
|
26
|
+
* Watcher.watch(host, ['profile', 'name'], value => updateName(value));
|
|
35
27
|
* ```
|
|
36
|
-
*
|
|
37
|
-
* @param host Root object hosting the chain. Must dispatch
|
|
38
|
-
* `PropertyEvent.PROPERTY_CHANGE` when its bindable
|
|
39
|
-
* properties change (i.e. implement `IEventDispatcher`).
|
|
40
|
-
* @param chain Property names forming the chain, e.g. `['a','b','c']`.
|
|
41
|
-
* @param handler Called with the new leaf value whenever the chain changes.
|
|
42
|
-
* @param thisObject `this` context for the handler.
|
|
43
|
-
* @returns The head Watcher, or `undefined` if `chain` is empty.
|
|
44
28
|
*/
|
|
45
|
-
static watch(host: IEventDispatcher | undefined, chain: string[], handler
|
|
29
|
+
static watch(host: IEventDispatcher | undefined, chain: string[], handler?: (value: unknown) => void, thisObject?: unknown): Watcher | undefined;
|
|
46
30
|
getValue(): unknown;
|
|
47
31
|
setHandler(handler: (value: unknown) => void, thisObject: unknown): void;
|
|
48
32
|
/**
|
|
@@ -52,6 +36,5 @@ export declare class Watcher {
|
|
|
52
36
|
reset(newHost: IEventDispatcher | undefined): void;
|
|
53
37
|
unwatch(): void;
|
|
54
38
|
private _getHostPropertyValue;
|
|
55
|
-
private _onPropertyChange;
|
|
56
39
|
}
|
|
57
40
|
//# sourceMappingURL=Watcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Watcher.d.ts","sourceRoot":"","sources":["../../../src/kurot/binding/Watcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG3D
|
|
1
|
+
{"version":3,"file":"Watcher.d.ts","sourceRoot":"","sources":["../../../src/kurot/binding/Watcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG3D;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAElE;;;;;GAKG;AACH,qBAAa,OAAO;IAGnB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAU;IAEpC,OAAO,CAAC,KAAK,CAAC,CAAW;IACzB,OAAO,CAAC,QAAQ,CAAC,CAA2B;IAC5C,OAAO,CAAC,WAAW,CAAU;IAC1B,OAAO,CAAC,YAAY,CAAS;IAEhC,OAAO,CAAC,iBAAiB,CAcvB;gBAKD,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,EAClC,UAAU,CAAC,EAAE,OAAO,EACpB,IAAI,CAAC,EAAE,OAAO;IAUf;;;;;;;OAOG;WACW,KAAK,CAClB,IAAI,EAAE,gBAAgB,GAAG,SAAS,EAClC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,EAClC,UAAU,CAAC,EAAE,OAAO,GAClB,OAAO,GAAG,SAAS;IAUf,QAAQ,IAAI,OAAO;IAKnB,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;IAM/E;;;OAGG;IACI,KAAK,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,GAAG,IAAI;IAgBlD,OAAO,IAAI,IAAI;IAQtB,OAAO,CAAC,qBAAqB;CAG7B"}
|
|
@@ -1,20 +1,36 @@
|
|
|
1
1
|
import { PropertyEvent } from '../events/PropertyEvent.js';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* When the property changes (via {@link PropertyEvent}), the registered
|
|
5
|
-
* handler is invoked with the new value.
|
|
3
|
+
* Observes a property chain and reports changes to its leaf value.
|
|
6
4
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* Each object in the chain must dispatch
|
|
6
|
+
* {@link PropertyEvent.PROPERTY_CHANGE} when an observed property changes.
|
|
9
7
|
*/
|
|
10
8
|
export class Watcher {
|
|
11
9
|
// ── Instance fields ───────────────────────────────────────────────────
|
|
12
|
-
_host;
|
|
13
10
|
_property;
|
|
11
|
+
_next;
|
|
12
|
+
_host;
|
|
14
13
|
_handler;
|
|
15
14
|
_thisObject;
|
|
16
|
-
_next;
|
|
17
15
|
_isExecuting = false;
|
|
16
|
+
_onPropertyChange = (event) => {
|
|
17
|
+
if (!(event instanceof PropertyEvent))
|
|
18
|
+
return;
|
|
19
|
+
if (event.property !== this._property || this._isExecuting)
|
|
20
|
+
return;
|
|
21
|
+
try {
|
|
22
|
+
this._isExecuting = true;
|
|
23
|
+
if (this._next) {
|
|
24
|
+
this._next.reset(this._getHostPropertyValue());
|
|
25
|
+
}
|
|
26
|
+
if (this._handler) {
|
|
27
|
+
this._handler.call(this._thisObject, this.getValue());
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
finally {
|
|
31
|
+
this._isExecuting = false;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
18
34
|
// ── Constructor ───────────────────────────────────────────────────────
|
|
19
35
|
constructor(property, handler, thisObject, next) {
|
|
20
36
|
this._property = property;
|
|
@@ -25,19 +41,11 @@ export class Watcher {
|
|
|
25
41
|
// ── Public methods ────────────────────────────────────────────────────
|
|
26
42
|
/**
|
|
27
43
|
* Creates and starts a Watcher for a property chain.
|
|
44
|
+
* Returns `undefined` when the chain is empty.
|
|
28
45
|
*
|
|
29
46
|
* ```ts
|
|
30
|
-
*
|
|
31
|
-
* Watcher.watch(host, ['a', 'b', 'c'], (value) => { ... }, this);
|
|
47
|
+
* Watcher.watch(host, ['profile', 'name'], value => updateName(value));
|
|
32
48
|
* ```
|
|
33
|
-
*
|
|
34
|
-
* @param host Root object hosting the chain. Must dispatch
|
|
35
|
-
* `PropertyEvent.PROPERTY_CHANGE` when its bindable
|
|
36
|
-
* properties change (i.e. implement `IEventDispatcher`).
|
|
37
|
-
* @param chain Property names forming the chain, e.g. `['a','b','c']`.
|
|
38
|
-
* @param handler Called with the new leaf value whenever the chain changes.
|
|
39
|
-
* @param thisObject `this` context for the handler.
|
|
40
|
-
* @returns The head Watcher, or `undefined` if `chain` is empty.
|
|
41
49
|
*/
|
|
42
50
|
static watch(host, chain, handler, thisObject) {
|
|
43
51
|
if (chain.length === 0)
|
|
@@ -68,12 +76,6 @@ export class Watcher {
|
|
|
68
76
|
if (this._host) {
|
|
69
77
|
this._host.removeEventListener(PropertyEvent.PROPERTY_CHANGE, this._onPropertyChange);
|
|
70
78
|
}
|
|
71
|
-
// The cast is unavoidable: `IEventDispatcher` (core) is not generic over
|
|
72
|
-
// a property map, so TS cannot know the host also exposes bindable own
|
|
73
|
-
// properties by name. `Bindable` only adds an index signature on top of
|
|
74
|
-
// `IEventDispatcher` — it models what every real host (Skin, Component,
|
|
75
|
-
// Group) already does at runtime. This is the single place the engine
|
|
76
|
-
// bridges the event-dispatcher contract and dynamic property access.
|
|
77
79
|
this._host = newHost;
|
|
78
80
|
if (this._host) {
|
|
79
81
|
this._host.addEventListener(PropertyEvent.PROPERTY_CHANGE, this._onPropertyChange);
|
|
@@ -92,28 +94,5 @@ export class Watcher {
|
|
|
92
94
|
_getHostPropertyValue() {
|
|
93
95
|
return this._host ? this._host[this._property] : undefined;
|
|
94
96
|
}
|
|
95
|
-
_onPropertyChange = (e) => {
|
|
96
|
-
// `e` arrives as `Event` because the listener is registered through the
|
|
97
|
-
// `IEventDispatcher` interface, whose signature is not generic over an
|
|
98
|
-
// EventMap (core 1.0 limitation). The dispatcher always uses
|
|
99
|
-
// `PropertyEvent.dispatchPropertyEvent`, which constructs a
|
|
100
|
-
// `PropertyEvent`, so the runtime type is guaranteed.
|
|
101
|
-
if (!(e instanceof PropertyEvent))
|
|
102
|
-
return;
|
|
103
|
-
if (e.property !== this._property || this._isExecuting)
|
|
104
|
-
return;
|
|
105
|
-
try {
|
|
106
|
-
this._isExecuting = true;
|
|
107
|
-
if (this._next) {
|
|
108
|
-
this._next.reset(this._getHostPropertyValue());
|
|
109
|
-
}
|
|
110
|
-
if (this._handler) {
|
|
111
|
-
this._handler.call(this._thisObject, this.getValue());
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
finally {
|
|
115
|
-
this._isExecuting = false;
|
|
116
|
-
}
|
|
117
|
-
};
|
|
118
97
|
}
|
|
119
98
|
//# sourceMappingURL=Watcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Watcher.js","sourceRoot":"","sources":["../../../src/kurot/binding/Watcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"Watcher.js","sourceRoot":"","sources":["../../../src/kurot/binding/Watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,12 @@ export declare class Skin extends EventDispatcher<SkinEvents> {
|
|
|
49
49
|
* Get a skin part by name. Used by Component to bind parts.
|
|
50
50
|
*/
|
|
51
51
|
getPart(name: string): unknown;
|
|
52
|
+
/**
|
|
53
|
+
* Set a skin part by name. Write-side counterpart to {@link getPart},
|
|
54
|
+
* used by programmatic materializers to install parts whose names come
|
|
55
|
+
* from authored data and therefore cannot be declared as class fields.
|
|
56
|
+
*/
|
|
57
|
+
setPart(name: string, value: DisplayObject): void;
|
|
52
58
|
/**
|
|
53
59
|
* Unwatch every binding created from this skin.
|
|
54
60
|
* Called by the host component when the skin is detached or replaced
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Skin.d.ts","sourceRoot":"","sources":["../../../src/kurot/components/Skin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAS,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,QAAQ;IAC3C,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC;CAC/C;AAED;;;;;;;;;;GAUG;AACH,qBAAa,IAAK,SAAQ,eAAe,CAAC,UAAU,CAAC;IAG7C,SAAS,EAAE,MAAM,EAAE,CAAM;IACzB,KAAK,EAAE,MAAM,CAAO;IACpB,MAAM,EAAE,MAAM,CAAO;IACrB,QAAQ,EAAE,MAAM,CAAK;IACrB,QAAQ,EAAE,MAAM,CAAU;IAC1B,SAAS,EAAE,MAAM,CAAK;IACtB,SAAS,EAAE,MAAM,CAAU;IAC3B,MAAM,EAAE,KAAK,EAAE,CAAM;IAE5B;;;;OAIG;IACI,SAAS,EAAE,OAAO,EAAE,CAAM;IAEjC,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,cAAc,CAAC,CAAY;IACnC,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,iBAAiB,CAAS;IAIlC,IAAW,eAAe,IAAI,aAAa,EAAE,CAE5C;IAED,IAAW,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,EAEhD;IAED,IAAW,aAAa,IAAI,SAAS,GAAG,SAAS,CAEhD;IAED,IAAW,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,EAuBpD;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,MAAM,EAOpC;IAID;;OAEG;IACI,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC;;;;OAIG;IACI,UAAU,IAAI,IAAI;IASlB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAM3C,OAAO,CAAC,mBAAmB,CAEzB;IAEF,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,YAAY;CAOpB"}
|
|
1
|
+
{"version":3,"file":"Skin.d.ts","sourceRoot":"","sources":["../../../src/kurot/components/Skin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAS,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,QAAQ;IAC3C,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC;CAC/C;AAED;;;;;;;;;;GAUG;AACH,qBAAa,IAAK,SAAQ,eAAe,CAAC,UAAU,CAAC;IAG7C,SAAS,EAAE,MAAM,EAAE,CAAM;IACzB,KAAK,EAAE,MAAM,CAAO;IACpB,MAAM,EAAE,MAAM,CAAO;IACrB,QAAQ,EAAE,MAAM,CAAK;IACrB,QAAQ,EAAE,MAAM,CAAU;IAC1B,SAAS,EAAE,MAAM,CAAK;IACtB,SAAS,EAAE,MAAM,CAAU;IAC3B,MAAM,EAAE,KAAK,EAAE,CAAM;IAE5B;;;;OAIG;IACI,SAAS,EAAE,OAAO,EAAE,CAAM;IAEjC,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,cAAc,CAAC,CAAY;IACnC,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,iBAAiB,CAAS;IAIlC,IAAW,eAAe,IAAI,aAAa,EAAE,CAE5C;IAED,IAAW,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,EAEhD;IAED,IAAW,aAAa,IAAI,SAAS,GAAG,SAAS,CAEhD;IAED,IAAW,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,EAuBpD;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,MAAM,EAOpC;IAID;;OAEG;IACI,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC;;;;OAIG;IACI,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI;IAIxD;;;;OAIG;IACI,UAAU,IAAI,IAAI;IASlB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAM3C,OAAO,CAAC,mBAAmB,CAEzB;IAEF,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,YAAY;CAOpB"}
|
|
@@ -82,6 +82,14 @@ export class Skin extends EventDispatcher {
|
|
|
82
82
|
getPart(name) {
|
|
83
83
|
return this[name];
|
|
84
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Set a skin part by name. Write-side counterpart to {@link getPart},
|
|
87
|
+
* used by programmatic materializers to install parts whose names come
|
|
88
|
+
* from authored data and therefore cannot be declared as class fields.
|
|
89
|
+
*/
|
|
90
|
+
setPart(name, value) {
|
|
91
|
+
this[name] = value;
|
|
92
|
+
}
|
|
85
93
|
/**
|
|
86
94
|
* Unwatch every binding created from this skin.
|
|
87
95
|
* Called by the host component when the skin is detached or replaced
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Skin.js","sourceRoot":"","sources":["../../../src/kurot/components/Skin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Skin.js","sourceRoot":"","sources":["../../../src/kurot/components/Skin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Texture } from '@kurot/core';
|
|
2
2
|
import type { IAssetAdapter } from './IAssetAdapter.js';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
* resolves them to Texture instances.
|
|
4
|
+
* Loads image assets as textures with {@link ImageLoader}.
|
|
6
5
|
*/
|
|
7
6
|
export declare class DefaultAssetAdapter implements IAssetAdapter {
|
|
8
7
|
getAsset(source: string, callback: (content: Texture | undefined, source: string) => void): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultAssetAdapter.d.ts","sourceRoot":"","sources":["../../../src/kurot/core/DefaultAssetAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAsB,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD
|
|
1
|
+
{"version":3,"file":"DefaultAssetAdapter.d.ts","sourceRoot":"","sources":["../../../src/kurot/core/DefaultAssetAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAsB,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IAGjD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;CAavG"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Texture, ImageLoader, Event } from '@kurot/core';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* resolves them to Texture instances.
|
|
3
|
+
* Loads image assets as textures with {@link ImageLoader}.
|
|
5
4
|
*/
|
|
6
5
|
export class DefaultAssetAdapter {
|
|
7
6
|
// ── Public methods ────────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultAssetAdapter.js","sourceRoot":"","sources":["../../../src/kurot/core/DefaultAssetAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAG1D
|
|
1
|
+
{"version":3,"file":"DefaultAssetAdapter.js","sourceRoot":"","sources":["../../../src/kurot/core/DefaultAssetAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAG1D;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAC/B,yEAAyE;IAElE,QAAQ,CAAC,MAAc,EAAE,QAAgE;QAC/F,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAS,EAAE;YAClD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAClB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC5B,OAAO;YACR,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;YAC9B,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;CACD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { IThemeAdapter } from './IThemeAdapter.js';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Loads theme configuration files with `fetch`.
|
|
4
4
|
*/
|
|
5
5
|
export declare class DefaultThemeAdapter implements IThemeAdapter {
|
|
6
6
|
getTheme(url: string, onSuccess: (data: unknown) => void, onError: (err: unknown) => void): void;
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import type { Texture } from '@kurot/core';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* Implement this interface and pass it to `setAssetAdapter()` to customize asset loading.
|
|
3
|
+
* Resolves asset identifiers to textures.
|
|
5
4
|
*/
|
|
6
5
|
export interface IAssetAdapter {
|
|
7
6
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* @param callback Called with the resolved content and original source when done.
|
|
11
|
-
* `content` is `undefined` when the asset could not be loaded.
|
|
7
|
+
* Resolves an asset and reports `undefined` when it cannot be loaded.
|
|
8
|
+
* The callback receives the original source so callers can correlate requests.
|
|
12
9
|
*/
|
|
13
10
|
getAsset(source: string, callback: (content: Texture | undefined, source: string) => void): void;
|
|
14
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IAssetAdapter.d.ts","sourceRoot":"","sources":["../../../src/kurot/core/IAssetAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C
|
|
1
|
+
{"version":3,"file":"IAssetAdapter.d.ts","sourceRoot":"","sources":["../../../src/kurot/core/IAssetAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;CACjG"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* Implemented by Label, EditableText, and by composite components that
|
|
4
|
-
* expose a `text` property (Button, TextInput, ComboBox).
|
|
2
|
+
* UI component that exposes displayed text.
|
|
5
3
|
*/
|
|
6
4
|
export interface IDisplayText {
|
|
7
5
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IDisplayText.d.ts","sourceRoot":"","sources":["../../../src/kurot/core/IDisplayText.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"IDisplayText.d.ts","sourceRoot":"","sources":["../../../src/kurot/core/IDisplayText.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACb"}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* Implement this and pass it to `Theme` constructor to customize how .thm.js files are fetched.
|
|
2
|
+
* Loads theme configuration data for {@link Theme}.
|
|
4
3
|
*/
|
|
5
4
|
export interface IThemeAdapter {
|
|
6
5
|
/**
|
|
7
|
-
*
|
|
8
|
-
* @param url Path to the theme file (e.g. "resource/default.thm.js")
|
|
9
|
-
* @param onSuccess Called with the parsed theme data on success.
|
|
10
|
-
* @param onError Called on failure.
|
|
6
|
+
* Loads a theme URL and reports either its data or the loading error.
|
|
11
7
|
*/
|
|
12
8
|
getTheme(url: string, onSuccess: (data: unknown) => void, onError: (err: unknown) => void): void;
|
|
13
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IThemeAdapter.d.ts","sourceRoot":"","sources":["../../../src/kurot/core/IThemeAdapter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"IThemeAdapter.d.ts","sourceRoot":"","sources":["../../../src/kurot/core/IThemeAdapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;CACjG"}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
import type { IEventDispatcher, Rectangle } from '@kurot/core';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* Defines the layout contract: constraint properties, invalidation cycle,
|
|
5
|
-
* and bounds query methods used by layout classes.
|
|
3
|
+
* Layout, measurement, and validation contract implemented by UI components.
|
|
6
4
|
*/
|
|
7
5
|
export interface IUIComponent extends IEventDispatcher {
|
|
8
6
|
/**
|
|
9
|
-
* Whether this component participates in parent layout.
|
|
7
|
+
* Whether this component participates in its parent's layout.
|
|
10
8
|
*/
|
|
11
9
|
includeInLayout: boolean;
|
|
12
10
|
/**
|
|
13
|
-
* Distance from the left edge of the parent container
|
|
11
|
+
* Distance from the left edge of the parent container.
|
|
14
12
|
*/
|
|
15
13
|
left: number | string;
|
|
16
14
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IUIComponent.d.ts","sourceRoot":"","sources":["../../../src/kurot/core/IUIComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE/D
|
|
1
|
+
{"version":3,"file":"IUIComponent.d.ts","sourceRoot":"","sources":["../../../src/kurot/core/IUIComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACrD;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IAGzB;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB;;OAEG;IACH,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB;;OAEG;IACH,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB;;OAEG;IACH,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC;;OAEG;IACH,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC;IAGhC;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAGtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAGlB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACrD,oBAAoB,IAAI,IAAI,CAAC;IAC7B,kBAAkB,IAAI,IAAI,CAAC;IAC3B,cAAc,IAAI,IAAI,CAAC;IACvB,YAAY,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACxC,qBAAqB,IAAI,IAAI,CAAC;IAC9B,mBAAmB,IAAI,IAAI,CAAC;IAC5B,WAAW,IAAI,IAAI,CAAC;IAGpB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrE,uBAAuB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpD,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzC,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;CAC5C"}
|