@wcardinal/wcardinal-ui 0.350.0 → 0.352.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.
Files changed (44) hide show
  1. package/dist/types/wcardinal/ui/d-dialog.d.ts +1 -1
  2. package/dist/types/wcardinal/ui/d-dynamic-text.d.ts +1 -0
  3. package/dist/types/wcardinal/ui/d-menu-closeable.d.ts +4 -0
  4. package/dist/types/wcardinal/ui/d-menu-context.d.ts +9 -13
  5. package/dist/types/wcardinal/ui/d-menu-item.d.ts +3 -2
  6. package/dist/types/wcardinal/ui/d-menu-opener.d.ts +4 -0
  7. package/dist/types/wcardinal/ui/d-menu-sided.d.ts +3 -2
  8. package/dist/types/wcardinal/ui/d-menu.d.ts +8 -6
  9. package/dist/types/wcardinal/ui/index.d.ts +2 -0
  10. package/dist/types/wcardinal/ui/shape/e-shape.d.ts +3 -3
  11. package/dist/types/wcardinal/ui/shape/variant/e-shape-base.d.ts +3 -3
  12. package/dist/types/wcardinal/ui/util/dynamic-font-atlas-character.d.ts +1 -1
  13. package/dist/wcardinal/ui/d-dialog.js.map +1 -1
  14. package/dist/wcardinal/ui/d-dynamic-text.js +4 -0
  15. package/dist/wcardinal/ui/d-dynamic-text.js.map +1 -1
  16. package/dist/wcardinal/ui/d-menu-closeable.js +2 -0
  17. package/dist/wcardinal/ui/d-menu-closeable.js.map +1 -0
  18. package/dist/wcardinal/ui/d-menu-context.js.map +1 -1
  19. package/dist/wcardinal/ui/d-menu-item.js.map +1 -1
  20. package/dist/wcardinal/ui/d-menu-opener.js +2 -0
  21. package/dist/wcardinal/ui/d-menu-opener.js.map +1 -0
  22. package/dist/wcardinal/ui/d-menu-sided.js.map +1 -1
  23. package/dist/wcardinal/ui/d-menu.js +5 -2
  24. package/dist/wcardinal/ui/d-menu.js.map +1 -1
  25. package/dist/wcardinal/ui/index.js +2 -0
  26. package/dist/wcardinal/ui/index.js.map +1 -1
  27. package/dist/wcardinal/ui/shape/e-shape.js.map +1 -1
  28. package/dist/wcardinal/ui/shape/variant/e-shape-base.js +3 -0
  29. package/dist/wcardinal/ui/shape/variant/e-shape-base.js.map +1 -1
  30. package/dist/wcardinal/ui/util/dynamic-font-atlas-character.js +3 -3
  31. package/dist/wcardinal/ui/util/dynamic-font-atlas-character.js.map +1 -1
  32. package/dist/wcardinal/ui/util/dynamic-font-atlas.js +3 -2
  33. package/dist/wcardinal/ui/util/dynamic-font-atlas.js.map +1 -1
  34. package/dist/wcardinal/ui/util/dynamic-sdf-font-atlas.js +1 -1
  35. package/dist/wcardinal/ui/util/dynamic-sdf-font-atlas.js.map +1 -1
  36. package/dist/wcardinal-ui-theme-dark.js +1 -1
  37. package/dist/wcardinal-ui-theme-dark.min.js +1 -1
  38. package/dist/wcardinal-ui-theme-white.js +1 -1
  39. package/dist/wcardinal-ui-theme-white.min.js +1 -1
  40. package/dist/wcardinal-ui.cjs.js +19 -9
  41. package/dist/wcardinal-ui.js +19 -9
  42. package/dist/wcardinal-ui.min.js +2 -2
  43. package/dist/wcardinal-ui.min.js.map +1 -1
  44. package/package.json +1 -1
@@ -66,7 +66,7 @@ export interface DThemeDialog extends DThemeBase {
66
66
  newAnimation(mode: DDialogMode): DAnimation<DBase> | null;
67
67
  }
68
68
  export interface DDialogOpener {
69
- getBounds(skipUpdate: boolean, result: Rectangle): Rectangle;
69
+ getBounds(skipUpdate?: boolean, rect?: PIXI.Rectangle): Rectangle;
70
70
  }
71
71
  /**
72
72
  * A dialog class.
@@ -24,6 +24,7 @@ export declare class DDynamicText extends Mesh {
24
24
  protected _isGeometryDirty: boolean;
25
25
  protected _atlas: DynamicFontAtlas | null;
26
26
  protected _atlasRevisionUpdated: number;
27
+ protected _onAtlasTextureUpdateBound: () => void;
27
28
  protected _width: number;
28
29
  protected _height: number;
29
30
  protected _modifier: DDynamicTextModifier;
@@ -0,0 +1,4 @@
1
+ import { DisplayObject } from "pixi.js";
2
+ export interface DMenuCloseable extends DisplayObject {
3
+ close(): void;
4
+ }
@@ -1,20 +1,16 @@
1
- import { DisplayObject } from "pixi.js";
2
- export interface Owner {
3
- focus(): void;
1
+ import { DMenuCloseable } from "./d-menu-closeable";
2
+ export interface DMenuContextOwner {
4
3
  }
5
- export interface Parent {
4
+ export interface DMenuContextParent {
6
5
  parent: unknown;
7
6
  }
8
- export interface Closeable extends DisplayObject {
9
- close(): void;
10
- }
11
7
  export declare class DMenuContext {
12
- protected _owner: Owner;
13
- protected _closeables: Closeable[];
14
- constructor(owner: Owner);
8
+ protected _owner: DMenuContextOwner;
9
+ protected _closeables: DMenuCloseable[];
10
+ constructor(owner: DMenuContextOwner);
15
11
  protected indexOf(target: unknown): number;
16
12
  protected close(index: number): void;
17
- add(closeable: Closeable): void;
18
- trim(closeable: Closeable | null): void;
19
- remove(closeable: Closeable): void;
13
+ add(closeable: DMenuCloseable): void;
14
+ trim(closeable: DMenuCloseable | null): void;
15
+ remove(closeable: DMenuCloseable): void;
20
16
  }
@@ -1,4 +1,5 @@
1
- import { Closeable, DMenuContext } from "./d-menu-context";
1
+ import { DMenuCloseable } from "./d-menu-closeable";
2
+ import { DMenuContext } from "./d-menu-context";
2
3
  import { DMenuItemBase, DMenuItemBaseOptions, DThemeMenuItemBase } from "./d-menu-item-base";
3
4
  export interface DMenuItemOptions<VALUE = unknown, THEME extends DThemeMenuItem = DThemeMenuItem> extends DMenuItemBaseOptions<VALUE, THEME> {
4
5
  }
@@ -6,6 +7,6 @@ export interface DThemeMenuItem extends DThemeMenuItemBase {
6
7
  }
7
8
  export declare class DMenuItem<VALUE = unknown, THEME extends DThemeMenuItem = DThemeMenuItem, OPTIONS extends DMenuItemOptions<VALUE, THEME> = DMenuItemOptions<VALUE, THEME>> extends DMenuItemBase<VALUE, THEME, OPTIONS> {
8
9
  getContext(): DMenuContext | null;
9
- getCloseable(): Closeable | null;
10
+ getCloseable(): DMenuCloseable | null;
10
11
  protected getType(): string;
11
12
  }
@@ -0,0 +1,4 @@
1
+ import { Rectangle } from "pixi.js";
2
+ export interface DMenuOpener {
3
+ getBounds(skipUpdate?: boolean, result?: Rectangle): Rectangle;
4
+ }
@@ -1,10 +1,11 @@
1
1
  import { DisplayObject } from "pixi.js";
2
2
  import { DBase, DBaseOptions } from "./d-base";
3
- import { Closeable, DMenuContext } from "./d-menu-context";
3
+ import { DMenuContext } from "./d-menu-context";
4
4
  import { DMenuItemOptionsUnion } from "./d-menu-item-options-union";
5
5
  import { DMenuSidedContentOptions } from "./d-menu-sided-content";
6
6
  import { DMenuSidedSelection, DMenuSidedSelectionOptions } from "./d-menu-sided-selection";
7
7
  import { DPane, DPaneOptions, DThemePane } from "./d-pane";
8
+ import { DMenuCloseable } from "./d-menu-closeable";
8
9
  export interface DMenuSidedOptions<VALUE = unknown, THEME extends DThemeMenuSided = DThemeMenuSided, CONTENT_OPTIONS extends DBaseOptions = DMenuSidedContentOptions> extends DPaneOptions<THEME, CONTENT_OPTIONS> {
9
10
  items?: Array<DMenuItemOptionsUnion<VALUE> | DisplayObject>;
10
11
  sticky?: boolean;
@@ -22,7 +23,7 @@ export declare class DMenuSided<VALUE = unknown, THEME extends DThemeMenuSided =
22
23
  protected newContent(options?: CONTENT_OPTIONS): DBase;
23
24
  get selection(): DMenuSidedSelection<VALUE>;
24
25
  getContext(): DMenuContext | null;
25
- getCloseable(): Closeable | null;
26
+ getCloseable(): DMenuCloseable | null;
26
27
  open(): void;
27
28
  close(): void;
28
29
  protected onKeyDown(e: KeyboardEvent): boolean;
@@ -1,12 +1,13 @@
1
- import { DisplayObject, Point } from "pixi.js";
2
- import { DBase } from "./d-base";
1
+ import { DisplayObject, Point, Rectangle } from "pixi.js";
3
2
  import { DFocusable } from "./d-controller-focus";
4
3
  import { DLayoutVertical, DLayoutVerticalOptions, DThemeLayoutVertical } from "./d-layout-vertical";
5
4
  import { DMenuAlign } from "./d-menu-align";
6
- import { Closeable, DMenuContext } from "./d-menu-context";
5
+ import { DMenuContext } from "./d-menu-context";
7
6
  import { DMenuItem } from "./d-menu-item";
8
7
  import { DMenuItemOptionsUnion } from "./d-menu-item-options-union";
9
8
  import { UtilOverlay } from "./util/util-overlay";
9
+ import { DMenuOpener } from "./d-menu-opener";
10
+ import { DMenuCloseable } from "./d-menu-closeable";
10
11
  export interface DMenuOptions<VALUE = unknown, THEME extends DThemeMenu = DThemeMenu> extends DLayoutVerticalOptions<THEME> {
11
12
  align?: keyof typeof DMenuAlign | DMenuAlign;
12
13
  fit?: boolean;
@@ -18,11 +19,12 @@ export interface DThemeMenu extends DThemeLayoutVertical {
18
19
  getOffsetY(): number;
19
20
  }
20
21
  export declare class DMenu<VALUE, THEME extends DThemeMenu = DThemeMenu, OPTIONS extends DMenuOptions<VALUE, THEME> = DMenuOptions<VALUE, THEME>> extends DLayoutVertical<THEME, OPTIONS> {
22
+ protected static WORK_BOUNDS?: Rectangle;
21
23
  protected _align: DMenuAlign;
22
24
  protected _fit: boolean;
23
25
  protected _sticky: boolean;
24
26
  protected _sub: boolean;
25
- protected _owner: DBase<any, any> | null;
27
+ protected _owner: DMenuOpener | null;
26
28
  protected _context: DMenuContext | null;
27
29
  protected _overlay: UtilOverlay;
28
30
  protected _onPrerenderBound: () => void;
@@ -31,8 +33,8 @@ export declare class DMenu<VALUE, THEME extends DThemeMenu = DThemeMenu, OPTIONS
31
33
  findItem(value: VALUE): DMenuItem<VALUE> | null;
32
34
  protected getType(): string;
33
35
  getContext(): DMenuContext | null;
34
- getCloseable(): Closeable | null;
35
- open(owner: DBase<any, any>, closeable?: Closeable | null, context?: DMenuContext | null): this;
36
+ getCloseable(): DMenuCloseable | null;
37
+ open(owner: DMenuOpener, closeable?: DMenuCloseable | null, context?: DMenuContext | null): this;
36
38
  protected onPrerender(): void;
37
39
  close(): this;
38
40
  protected onKeyDown(e: KeyboardEvent): boolean;
@@ -387,6 +387,7 @@ export * from "./d-map-tile";
387
387
  export * from "./d-menu-align";
388
388
  export * from "./d-menu-bar-item";
389
389
  export * from "./d-menu-bar";
390
+ export * from "./d-menu-closeable";
390
391
  export * from "./d-menu-context";
391
392
  export * from "./d-menu-item-base-selection";
392
393
  export * from "./d-menu-item-base";
@@ -415,6 +416,7 @@ export * from "./d-menu-item-space-is-compatible";
415
416
  export * from "./d-menu-item-space";
416
417
  export * from "./d-menu-item-text";
417
418
  export * from "./d-menu-item";
419
+ export * from "./d-menu-opener";
418
420
  export * from "./d-menu-sided-content";
419
421
  export * from "./d-menu-sided-item-check";
420
422
  export * from "./d-menu-sided-item-expandable-item-check";
@@ -93,7 +93,7 @@ export interface EShape extends utils.EventEmitter {
93
93
  containsAbsBBox(x: number, y: number, ax: number, ay: number): boolean;
94
94
  toGlobal(position: IPoint, result: Point, skipUpdate?: boolean): Point;
95
95
  toLocal(position: IPoint, from?: DisplayObject, result?: Point, skipUpdate?: boolean): Point;
96
- getBounds(skipUpdate: boolean, result: Rectangle): Rectangle;
97
- getBoundsInternal(skipUpdate: boolean, result: Rectangle): Rectangle;
98
- getBoundsLocal(skipUpdate: boolean, result: Rectangle): Rectangle;
96
+ getBounds(skipUpdate?: boolean, result?: Rectangle): Rectangle;
97
+ getBoundsInternal(skipUpdate?: boolean, result?: Rectangle): Rectangle;
98
+ getBoundsLocal(skipUpdate?: boolean, result?: Rectangle): Rectangle;
99
99
  }
@@ -121,9 +121,9 @@ export declare abstract class EShapeBase extends utils.EventEmitter implements E
121
121
  select(point: Point): boolean;
122
122
  toGlobal(position: IPoint, result: Point, skipUpdate?: boolean): Point;
123
123
  toLocal(position: IPoint, from?: DisplayObject, result?: Point, skipUpdate?: boolean): Point;
124
- getBounds(skipUpdate: boolean, result: Rectangle): Rectangle;
125
- getBoundsInternal(skipUpdate: boolean, result: Rectangle): Rectangle;
126
- getBoundsLocal(skipUpdate: boolean, result: Rectangle): Rectangle;
124
+ getBounds(skipUpdate?: boolean, result?: Rectangle): Rectangle;
125
+ getBoundsInternal(skipUpdate?: boolean, result?: Rectangle): Rectangle;
126
+ getBoundsLocal(skipUpdate?: boolean, result?: Rectangle): Rectangle;
127
127
  protected getBoundsSize(): IPoint;
128
128
  protected getBounds_(transform: Matrix, result: Rectangle): Rectangle;
129
129
  destroy(): void;
@@ -11,5 +11,5 @@ export declare class DynamicFontAtlasCharacter {
11
11
  advance: number;
12
12
  origin: DynamicFontAtlasCharacterOrigin;
13
13
  type: DynamicFontAtlasCharacterType;
14
- constructor(character: string, advance: number, width: number, height: number, type: DynamicFontAtlasCharacterType);
14
+ constructor(type: DynamicFontAtlasCharacterType, character: string, x: number, y: number, width: number, height: number, advance: number);
15
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"d-dialog.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dialog.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Point, Rectangle } from \"pixi.js\";\nimport { DAnimation } from \"./d-animation\";\nimport { DApplicationLayerLike } from \"./d-application-layer-like\";\nimport { DApplications } from \"./d-applications\";\nimport { DBase, DBaseEvents, DBaseOptions, DThemeBase } from \"./d-base\";\nimport { DBaseState } from \"./d-base-state\";\nimport { DControllerFocus, DFocusable } from \"./d-controller-focus\";\nimport { DDialogAlign } from \"./d-dialog-align\";\nimport { DDialogCloseOn } from \"./d-dialog-close-on\";\nimport { DDialogGesture, DDialogGestureOptions } from \"./d-dialog-gesture\";\nimport { DDialogGestureImpl } from \"./d-dialog-gesture-impl\";\nimport { DDialogGestureMode } from \"./d-dialog-gesture-mode\";\nimport { DDialogMode } from \"./d-dialog-mode\";\nimport { DDialogState } from \"./d-dialog-state\";\nimport { DOnOptions } from \"./d-on-options\";\nimport { DPadding } from \"./d-padding\";\nimport { isArray } from \"./util/is-array\";\nimport { isString } from \"./util/is-string\";\nimport { toEnum } from \"./util/to-enum\";\nimport { UtilAttach } from \"./util/util-attach\";\nimport { UtilClickOutside } from \"./util/util-click-outside\";\nimport { UtilKeyboardEvent } from \"./util/util-keyboard-event\";\nimport { UtilOverlay } from \"./util/util-overlay\";\n\n/**\n * {@link DDialog} events.\n */\nexport interface DDialogEvents<EMITTER> extends DBaseEvents<EMITTER> {\n\t/**\n\t * Triggered when a dialog is opened.\n\t *\n\t * @param emitter this\n\t */\n\topen(emitter: EMITTER): void;\n\n\t/**\n\t * Triggered when a dialog is closed.\n\t *\n\t * @param emitter this\n\t */\n\tclose(emitter: EMITTER): void;\n}\n\n/**\n * {@link DDialog} `on` options.\n */\nexport interface DDialogOnOptions<EMITTER> extends Partial<DDialogEvents<EMITTER>>, DOnOptions {}\n\n/**\n * {@link DDialog} options.\n */\nexport interface DDialogOptions<THEME extends DThemeDialog = DThemeDialog, EMITTER = any>\n\textends DBaseOptions<THEME> {\n\tcloseOn?: DDialogCloseOn | Array<keyof typeof DDialogCloseOn> | keyof typeof DDialogCloseOn;\n\n\tanimation?: DAnimation<DBase>;\n\n\t/**\n\t * A dialog mode.\n\t */\n\tmode?: DDialogMode | keyof typeof DDialogMode;\n\n\tsticky?: boolean;\n\n\tgesture?: boolean | DDialogGestureOptions;\n\n\talign?: DDialogAlign | null | keyof typeof DDialogAlign;\n\n\t/**\n\t * Mappings of event names and handlers.\n\t */\n\ton?: DDialogOnOptions<EMITTER>;\n}\n\n/**\n * {@link DDialog} theme.\n */\nexport interface DThemeDialog extends DThemeBase {\n\tgetMode(): DDialogMode;\n\tcloseOn(mode: DDialogMode): DDialogCloseOn;\n\tisSticky(mode: DDialogMode): boolean;\n\tisGestureEnabled(mode: DDialogMode): boolean;\n\tgetGestureMode(mode: DDialogMode): DDialogGestureMode;\n\tgetOffsetX(mode: DDialogMode): number;\n\tgetOffsetY(mode: DDialogMode): number;\n\tgetAlign(mode: DDialogMode): DDialogAlign | null;\n\tnewAnimation(mode: DDialogMode): DAnimation<DBase> | null;\n}\n\nexport interface DDialogOpener {\n\tgetBounds(skipUpdate: boolean, result: Rectangle): Rectangle;\n}\n\n/**\n * A dialog class.\n *\n * If multiple application instances are there, better to set the constructor\n * option `parent` to an `application.stage` so that the dialog picks a right\n * application. By default, the dialog assumes the last created application is\n * the one it belongs to at the time when it is created.\n */\nexport class DDialog<\n\tVALUE = void,\n\tTHEME extends DThemeDialog = DThemeDialog,\n\tOPTIONS extends DDialogOptions<THEME> = DDialogOptions<THEME>\n> extends DBase<THEME, OPTIONS> {\n\tprotected static WORK_BOUNDS?: Rectangle;\n\n\tprotected _promise?: Promise<VALUE>;\n\tprotected _resolve?: (value: VALUE | PromiseLike<VALUE>) => void;\n\tprotected _reject?: (reason?: any) => void;\n\n\tprotected _animation?: DAnimation<DBase> | null;\n\tprotected _closeOn!: DDialogCloseOn;\n\tprotected _focused?: DFocusable | null;\n\tprotected _overlay!: UtilOverlay;\n\tprotected _mode!: DDialogMode;\n\tprotected _sticky!: boolean;\n\tprotected _onPrerenderBound!: () => void;\n\tprotected _align!: DDialogAlign | null;\n\tprotected _opener?: DDialogOpener | null;\n\n\tprotected _gesture!: DDialogGesture<this>;\n\tprotected _layer!: DApplicationLayerLike | null;\n\n\tprotected init(options?: OPTIONS): void {\n\t\tsuper.init(options);\n\n\t\tthis._onPrerenderBound = (): void => {\n\t\t\tthis.onPrerender();\n\t\t};\n\t\tthis._layer = null;\n\n\t\t// Mode\n\t\tconst theme = this.theme;\n\t\tconst mode = toEnum(options?.mode ?? theme.getMode(), DDialogMode);\n\t\tthis._mode = mode;\n\n\t\t// Sticky\n\t\tthis._sticky = options?.sticky ?? theme.isSticky(mode);\n\n\t\t// Close On\n\t\tconst closeOn = this.toCloseOn(mode, theme, options);\n\t\tthis._closeOn = closeOn;\n\n\t\t// Align\n\t\tthis._align = this.toAlign(mode, theme, options);\n\n\t\t// Overlay\n\t\tthis._overlay = new UtilOverlay();\n\n\t\t// Gesture\n\t\tthis._gesture = new DDialogGestureImpl(this, this.toGestureOptions(mode, theme, options));\n\n\t\t// Visibility\n\t\tthis.visible = false;\n\n\t\t// State\n\t\tswitch (mode) {\n\t\t\tcase DDialogMode.MODAL:\n\t\t\t\tthis.state.addAll(DBaseState.FOCUS_ROOT, DDialogState.MODAL);\n\t\t\t\tbreak;\n\t\t\tcase DDialogMode.MODELESS:\n\t\t\t\tthis.state.add(DDialogState.MODELESS);\n\t\t\t\tbreak;\n\t\t\tcase DDialogMode.MENU:\n\t\t\t\tthis.state.addAll(DBaseState.FOCUS_ROOT, DDialogState.MENU);\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Outside-click handling\n\t\tif (closeOn & DDialogCloseOn.CLICK_OUTSIDE) {\n\t\t\tUtilClickOutside.apply(this, (): void => {\n\t\t\t\tthis.onCloseOn();\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected toCloseOn(mode: DDialogMode, theme: THEME, options?: OPTIONS): DDialogCloseOn {\n\t\tconst closeOn = options?.closeOn;\n\t\tif (closeOn == null) {\n\t\t\treturn theme.closeOn(mode);\n\t\t} else if (isArray(closeOn)) {\n\t\t\tlet result = DDialogCloseOn.NONE;\n\t\t\tfor (let i = 0, imax = closeOn.length; i < imax; ++i) {\n\t\t\t\tresult |= DDialogCloseOn[closeOn[i]];\n\t\t\t}\n\t\t\treturn result;\n\t\t} else if (isString(closeOn)) {\n\t\t\treturn DDialogCloseOn[closeOn];\n\t\t}\n\t\treturn closeOn;\n\t}\n\n\tprotected toAlign(mode: DDialogMode, theme: THEME, options?: OPTIONS): DDialogAlign | null {\n\t\tconst align = options?.align;\n\t\tif (align === null) {\n\t\t\treturn null;\n\t\t} else if (align === undefined) {\n\t\t\treturn theme.getAlign(mode);\n\t\t} else {\n\t\t\treturn toEnum(align, DDialogAlign);\n\t\t}\n\t}\n\n\tget mode(): DDialogMode {\n\t\treturn this._mode;\n\t}\n\n\tget align(): DDialogAlign | null {\n\t\treturn this._align;\n\t}\n\n\tset algin(align: DDialogAlign | null) {\n\t\tthis._align = align;\n\t}\n\n\tget gesture(): DDialogGesture<this> {\n\t\treturn this._gesture;\n\t}\n\n\tget layer(): DApplicationLayerLike | null {\n\t\treturn this._layer;\n\t}\n\n\tprotected toGestureOptions(\n\t\tmode: DDialogMode,\n\t\ttheme: THEME,\n\t\toptions?: OPTIONS\n\t): DDialogGestureOptions {\n\t\tconst gesture = options?.gesture;\n\t\tif (gesture === true) {\n\t\t\treturn {\n\t\t\t\tenable: true,\n\t\t\t\tmode: theme.getGestureMode(mode)\n\t\t\t};\n\t\t} else if (gesture === false) {\n\t\t\treturn {\n\t\t\t\tenable: false,\n\t\t\t\tmode: theme.getGestureMode(mode)\n\t\t\t};\n\t\t} else if (gesture != null) {\n\t\t\tif (gesture.enable === undefined) {\n\t\t\t\tgesture.enable = theme.isGestureEnabled(mode);\n\t\t\t}\n\t\t\tif (gesture.mode === undefined) {\n\t\t\t\tgesture.mode = theme.getGestureMode(mode);\n\t\t\t}\n\t\t\treturn gesture;\n\t\t}\n\t\treturn {\n\t\t\tenable: theme.isGestureEnabled(mode),\n\t\t\tmode: theme.getGestureMode(mode)\n\t\t};\n\t}\n\n\tonParentResize(parentWidth: number, parentHeight: number, parentPadding: DPadding): void {\n\t\tif (this.isOpened()) {\n\t\t\tconst layer = this._layer;\n\t\t\tif (layer != null) {\n\t\t\t\tconst gesture = this._gesture;\n\t\t\t\tif (gesture.isDirty()) {\n\t\t\t\t\tconst position = this.position;\n\t\t\t\t\tgesture.constraint(this, layer, position.x, position.y);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tsuper.onParentResize(parentWidth, parentHeight, parentPadding);\n\t}\n\n\tprotected getAnimation(): DAnimation | null {\n\t\tlet result = this._animation;\n\t\tif (result === undefined) {\n\t\t\tresult = this._options?.animation ?? this.theme.newAnimation(this._mode);\n\t\t\tif (result) {\n\t\t\t\tresult.target = this;\n\t\t\t\tresult.on(\"end\", (isReverse: boolean): void => {\n\t\t\t\t\tthis.onAnimationEnd(isReverse);\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis._animation = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected onAnimationEnd(isReverse: boolean): void {\n\t\tif (isReverse) {\n\t\t\tif (this._mode === DDialogMode.MODELESS) {\n\t\t\t\tthis.hide();\n\t\t\t} else {\n\t\t\t\tconst parent = this.parent;\n\t\t\t\tif (parent) {\n\t\t\t\t\tparent.removeChild(this);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconst layer = DApplications.getLayer(this);\n\t\t\tif (layer) {\n\t\t\t\tconst focusController = layer.getFocusController();\n\t\t\t\tthis._focused = focusController.get();\n\t\t\t\tfocusController.focus(this.findFirstFocusable(focusController) || this);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected findFirstFocusable(focusController: DControllerFocus): DFocusable | null {\n\t\treturn focusController.find(this, false, true, true);\n\t}\n\n\t/**\n\t * Opens a dialog.\n\t *\n\t * @param opener An opener of a dialog.\n\t * The dialog position is determined based on a position and a size of the opener.\n\t * If the opener is undefined, the dialog is placed at the center of the screen.\n\t *\n\t * @returns a value of this dialog\n\t */\n\topen(opener?: DDialogOpener): Promise<VALUE> {\n\t\tlet result = this._promise;\n\t\tif (result == null) {\n\t\t\tresult = new Promise<VALUE>((resolve, reject): void => {\n\t\t\t\tthis._resolve = resolve;\n\t\t\t\tthis._reject = reject;\n\t\t\t});\n\t\t\tthis._promise = result;\n\n\t\t\tthis._opener = opener;\n\n\t\t\t// Attach to a layer\n\t\t\tlet layer: DApplicationLayerLike | null = null;\n\t\t\tswitch (this._mode) {\n\t\t\t\tcase DDialogMode.MODAL:\n\t\t\t\tcase DDialogMode.MENU:\n\t\t\t\t\tlayer = this._overlay.pick(this);\n\t\t\t\t\tlayer.stage.addChild(this);\n\t\t\t\t\tbreak;\n\t\t\t\tcase DDialogMode.MODELESS:\n\t\t\t\t\tlayer = DApplications.getLayer(this);\n\t\t\t\t\tthis.show();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis._layer = layer;\n\n\t\t\t// Position & size\n\t\t\tconst gesture = this._gesture;\n\t\t\tif (gesture.mode === DDialogGestureMode.CLEAN) {\n\t\t\t\tgesture.toClean();\n\t\t\t}\n\t\t\tif (layer != null) {\n\t\t\t\tif (gesture.isClean()) {\n\t\t\t\t\tconst renderer = layer.renderer;\n\t\t\t\t\tconst onPrerenderBound = this._onPrerenderBound;\n\t\t\t\t\tif (this._sticky) {\n\t\t\t\t\t\trenderer.on(\"prerender\", onPrerenderBound);\n\t\t\t\t\t} else {\n\t\t\t\t\t\trenderer.once(\"prerender\", onPrerenderBound);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst position = this.position;\n\t\t\t\t\tgesture.constraint(this, layer, position.x, position.y);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Done\n\t\t\tthis.onOpen();\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected onPrerender(): void {\n\t\tconst layer = this._layer;\n\t\tif (layer == null) {\n\t\t\treturn;\n\t\t}\n\t\tconst align = this._align;\n\t\tconst opener = this._opener;\n\t\tif (align != null && opener != null) {\n\t\t\tconst mode = this._mode;\n\t\t\tconst bounds = opener.getBounds(false, (DDialog.WORK_BOUNDS ??= new Rectangle()));\n\t\t\tconst theme = this.theme;\n\t\t\tUtilAttach.attach(\n\t\t\t\tthis,\n\t\t\t\tbounds,\n\t\t\t\ttheme.getOffsetX(mode),\n\t\t\t\ttheme.getOffsetY(mode),\n\t\t\t\tlayer.width,\n\t\t\t\tlayer.height,\n\t\t\t\talign\n\t\t\t);\n\t\t} else {\n\t\t\tthis.position.set((layer.width - this.width) * 0.5, (layer.height - this.height) * 0.5);\n\t\t}\n\t}\n\n\tprotected onOpen(): void {\n\t\tthis.emit(\"open\", this);\n\n\t\t// Animation\n\t\tconst animation = this.getAnimation();\n\t\tif (animation) {\n\t\t\tanimation.start();\n\t\t} else if (this._mode === DDialogMode.MENU) {\n\t\t\tthis.visible = true;\n\t\t\tthis.onAnimationEnd(false);\n\t\t}\n\t}\n\n\tisOpened(): boolean {\n\t\treturn this._promise != null;\n\t}\n\n\tclose(): void {\n\t\tthis.doReject();\n\t}\n\n\tprotected doResolve(value: VALUE | PromiseLike<VALUE>): void {\n\t\tconst resolve = this._resolve;\n\t\tif (resolve) {\n\t\t\tthis._promise = undefined;\n\t\t\tthis._resolve = undefined;\n\t\t\tthis._reject = undefined;\n\n\t\t\tthis.onClose();\n\n\t\t\tresolve(value);\n\t\t}\n\t}\n\n\tprotected doReject(reason?: any): void {\n\t\tconst reject = this._reject;\n\t\tif (reject) {\n\t\t\tthis._promise = undefined;\n\t\t\tthis._resolve = undefined;\n\t\t\tthis._reject = undefined;\n\n\t\t\tthis.onClose();\n\n\t\t\treject(reason);\n\t\t}\n\t}\n\n\tprotected onClose(): void {\n\t\t// Focus\n\t\tconst layer = this._layer;\n\t\tconst focused = this._focused;\n\t\tif (focused != null) {\n\t\t\tthis._focused = null;\n\t\t\tif (layer) {\n\t\t\t\tconst focusedLayer = DApplications.getLayer(focused);\n\t\t\t\tif (focusedLayer != null && layer !== focusedLayer) {\n\t\t\t\t\tfocusedLayer.view.focus();\n\t\t\t\t}\n\t\t\t\tlayer.getFocusController().focus(focused);\n\t\t\t} else {\n\t\t\t\tthis.blur(true);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.blur(true);\n\t\t}\n\n\t\t// Remove the prerender event handler and forget the layer\n\t\tif (layer) {\n\t\t\tlayer.renderer.off(\"prerender\", this._onPrerenderBound);\n\t\t\tthis._layer = null;\n\t\t}\n\n\t\t// Forget the opener\n\t\tthis._opener = null;\n\n\t\t// Animation\n\t\tconst animation = this.getAnimation();\n\t\tif (animation) {\n\t\t\tanimation.start(true);\n\t\t} else {\n\t\t\tthis.visible = false;\n\t\t\tthis.onAnimationEnd(true);\n\t\t}\n\n\t\tthis.emit(\"close\", this);\n\t}\n\n\tprotected onKeyDown(e: KeyboardEvent): boolean {\n\t\tif (this._closeOn & DDialogCloseOn.ESC) {\n\t\t\tif (UtilKeyboardEvent.isCancelKey(e)) {\n\t\t\t\tthis.onCloseOn();\n\t\t\t}\n\t\t}\n\t\treturn super.onKeyDown(e);\n\t}\n\n\tprotected onCloseOn(): void {\n\t\tthis.close();\n\t}\n\n\tprotected containsGlobalPoint(point: Point): boolean {\n\t\tswitch (this._mode) {\n\t\t\tcase DDialogMode.MODAL:\n\t\t\tcase DDialogMode.MENU:\n\t\t\t\treturn true;\n\t\t\tcase DDialogMode.MODELESS:\n\t\t\t\treturn super.containsGlobalPoint(point);\n\t\t}\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DDialog\";\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-dialog.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dialog.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Point, Rectangle } from \"pixi.js\";\nimport { DAnimation } from \"./d-animation\";\nimport { DApplicationLayerLike } from \"./d-application-layer-like\";\nimport { DApplications } from \"./d-applications\";\nimport { DBase, DBaseEvents, DBaseOptions, DThemeBase } from \"./d-base\";\nimport { DBaseState } from \"./d-base-state\";\nimport { DControllerFocus, DFocusable } from \"./d-controller-focus\";\nimport { DDialogAlign } from \"./d-dialog-align\";\nimport { DDialogCloseOn } from \"./d-dialog-close-on\";\nimport { DDialogGesture, DDialogGestureOptions } from \"./d-dialog-gesture\";\nimport { DDialogGestureImpl } from \"./d-dialog-gesture-impl\";\nimport { DDialogGestureMode } from \"./d-dialog-gesture-mode\";\nimport { DDialogMode } from \"./d-dialog-mode\";\nimport { DDialogState } from \"./d-dialog-state\";\nimport { DOnOptions } from \"./d-on-options\";\nimport { DPadding } from \"./d-padding\";\nimport { isArray } from \"./util/is-array\";\nimport { isString } from \"./util/is-string\";\nimport { toEnum } from \"./util/to-enum\";\nimport { UtilAttach } from \"./util/util-attach\";\nimport { UtilClickOutside } from \"./util/util-click-outside\";\nimport { UtilKeyboardEvent } from \"./util/util-keyboard-event\";\nimport { UtilOverlay } from \"./util/util-overlay\";\n\n/**\n * {@link DDialog} events.\n */\nexport interface DDialogEvents<EMITTER> extends DBaseEvents<EMITTER> {\n\t/**\n\t * Triggered when a dialog is opened.\n\t *\n\t * @param emitter this\n\t */\n\topen(emitter: EMITTER): void;\n\n\t/**\n\t * Triggered when a dialog is closed.\n\t *\n\t * @param emitter this\n\t */\n\tclose(emitter: EMITTER): void;\n}\n\n/**\n * {@link DDialog} `on` options.\n */\nexport interface DDialogOnOptions<EMITTER> extends Partial<DDialogEvents<EMITTER>>, DOnOptions {}\n\n/**\n * {@link DDialog} options.\n */\nexport interface DDialogOptions<THEME extends DThemeDialog = DThemeDialog, EMITTER = any>\n\textends DBaseOptions<THEME> {\n\tcloseOn?: DDialogCloseOn | Array<keyof typeof DDialogCloseOn> | keyof typeof DDialogCloseOn;\n\n\tanimation?: DAnimation<DBase>;\n\n\t/**\n\t * A dialog mode.\n\t */\n\tmode?: DDialogMode | keyof typeof DDialogMode;\n\n\tsticky?: boolean;\n\n\tgesture?: boolean | DDialogGestureOptions;\n\n\talign?: DDialogAlign | null | keyof typeof DDialogAlign;\n\n\t/**\n\t * Mappings of event names and handlers.\n\t */\n\ton?: DDialogOnOptions<EMITTER>;\n}\n\n/**\n * {@link DDialog} theme.\n */\nexport interface DThemeDialog extends DThemeBase {\n\tgetMode(): DDialogMode;\n\tcloseOn(mode: DDialogMode): DDialogCloseOn;\n\tisSticky(mode: DDialogMode): boolean;\n\tisGestureEnabled(mode: DDialogMode): boolean;\n\tgetGestureMode(mode: DDialogMode): DDialogGestureMode;\n\tgetOffsetX(mode: DDialogMode): number;\n\tgetOffsetY(mode: DDialogMode): number;\n\tgetAlign(mode: DDialogMode): DDialogAlign | null;\n\tnewAnimation(mode: DDialogMode): DAnimation<DBase> | null;\n}\n\nexport interface DDialogOpener {\n\tgetBounds(skipUpdate?: boolean, rect?: PIXI.Rectangle): Rectangle;\n}\n\n/**\n * A dialog class.\n *\n * If multiple application instances are there, better to set the constructor\n * option `parent` to an `application.stage` so that the dialog picks a right\n * application. By default, the dialog assumes the last created application is\n * the one it belongs to at the time when it is created.\n */\nexport class DDialog<\n\tVALUE = void,\n\tTHEME extends DThemeDialog = DThemeDialog,\n\tOPTIONS extends DDialogOptions<THEME> = DDialogOptions<THEME>\n> extends DBase<THEME, OPTIONS> {\n\tprotected static WORK_BOUNDS?: Rectangle;\n\n\tprotected _promise?: Promise<VALUE>;\n\tprotected _resolve?: (value: VALUE | PromiseLike<VALUE>) => void;\n\tprotected _reject?: (reason?: any) => void;\n\n\tprotected _animation?: DAnimation<DBase> | null;\n\tprotected _closeOn!: DDialogCloseOn;\n\tprotected _focused?: DFocusable | null;\n\tprotected _overlay!: UtilOverlay;\n\tprotected _mode!: DDialogMode;\n\tprotected _sticky!: boolean;\n\tprotected _onPrerenderBound!: () => void;\n\tprotected _align!: DDialogAlign | null;\n\tprotected _opener?: DDialogOpener | null;\n\n\tprotected _gesture!: DDialogGesture<this>;\n\tprotected _layer!: DApplicationLayerLike | null;\n\n\tprotected init(options?: OPTIONS): void {\n\t\tsuper.init(options);\n\n\t\tthis._onPrerenderBound = (): void => {\n\t\t\tthis.onPrerender();\n\t\t};\n\t\tthis._layer = null;\n\n\t\t// Mode\n\t\tconst theme = this.theme;\n\t\tconst mode = toEnum(options?.mode ?? theme.getMode(), DDialogMode);\n\t\tthis._mode = mode;\n\n\t\t// Sticky\n\t\tthis._sticky = options?.sticky ?? theme.isSticky(mode);\n\n\t\t// Close On\n\t\tconst closeOn = this.toCloseOn(mode, theme, options);\n\t\tthis._closeOn = closeOn;\n\n\t\t// Align\n\t\tthis._align = this.toAlign(mode, theme, options);\n\n\t\t// Overlay\n\t\tthis._overlay = new UtilOverlay();\n\n\t\t// Gesture\n\t\tthis._gesture = new DDialogGestureImpl(this, this.toGestureOptions(mode, theme, options));\n\n\t\t// Visibility\n\t\tthis.visible = false;\n\n\t\t// State\n\t\tswitch (mode) {\n\t\t\tcase DDialogMode.MODAL:\n\t\t\t\tthis.state.addAll(DBaseState.FOCUS_ROOT, DDialogState.MODAL);\n\t\t\t\tbreak;\n\t\t\tcase DDialogMode.MODELESS:\n\t\t\t\tthis.state.add(DDialogState.MODELESS);\n\t\t\t\tbreak;\n\t\t\tcase DDialogMode.MENU:\n\t\t\t\tthis.state.addAll(DBaseState.FOCUS_ROOT, DDialogState.MENU);\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Outside-click handling\n\t\tif (closeOn & DDialogCloseOn.CLICK_OUTSIDE) {\n\t\t\tUtilClickOutside.apply(this, (): void => {\n\t\t\t\tthis.onCloseOn();\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected toCloseOn(mode: DDialogMode, theme: THEME, options?: OPTIONS): DDialogCloseOn {\n\t\tconst closeOn = options?.closeOn;\n\t\tif (closeOn == null) {\n\t\t\treturn theme.closeOn(mode);\n\t\t} else if (isArray(closeOn)) {\n\t\t\tlet result = DDialogCloseOn.NONE;\n\t\t\tfor (let i = 0, imax = closeOn.length; i < imax; ++i) {\n\t\t\t\tresult |= DDialogCloseOn[closeOn[i]];\n\t\t\t}\n\t\t\treturn result;\n\t\t} else if (isString(closeOn)) {\n\t\t\treturn DDialogCloseOn[closeOn];\n\t\t}\n\t\treturn closeOn;\n\t}\n\n\tprotected toAlign(mode: DDialogMode, theme: THEME, options?: OPTIONS): DDialogAlign | null {\n\t\tconst align = options?.align;\n\t\tif (align === null) {\n\t\t\treturn null;\n\t\t} else if (align === undefined) {\n\t\t\treturn theme.getAlign(mode);\n\t\t} else {\n\t\t\treturn toEnum(align, DDialogAlign);\n\t\t}\n\t}\n\n\tget mode(): DDialogMode {\n\t\treturn this._mode;\n\t}\n\n\tget align(): DDialogAlign | null {\n\t\treturn this._align;\n\t}\n\n\tset algin(align: DDialogAlign | null) {\n\t\tthis._align = align;\n\t}\n\n\tget gesture(): DDialogGesture<this> {\n\t\treturn this._gesture;\n\t}\n\n\tget layer(): DApplicationLayerLike | null {\n\t\treturn this._layer;\n\t}\n\n\tprotected toGestureOptions(\n\t\tmode: DDialogMode,\n\t\ttheme: THEME,\n\t\toptions?: OPTIONS\n\t): DDialogGestureOptions {\n\t\tconst gesture = options?.gesture;\n\t\tif (gesture === true) {\n\t\t\treturn {\n\t\t\t\tenable: true,\n\t\t\t\tmode: theme.getGestureMode(mode)\n\t\t\t};\n\t\t} else if (gesture === false) {\n\t\t\treturn {\n\t\t\t\tenable: false,\n\t\t\t\tmode: theme.getGestureMode(mode)\n\t\t\t};\n\t\t} else if (gesture != null) {\n\t\t\tif (gesture.enable === undefined) {\n\t\t\t\tgesture.enable = theme.isGestureEnabled(mode);\n\t\t\t}\n\t\t\tif (gesture.mode === undefined) {\n\t\t\t\tgesture.mode = theme.getGestureMode(mode);\n\t\t\t}\n\t\t\treturn gesture;\n\t\t}\n\t\treturn {\n\t\t\tenable: theme.isGestureEnabled(mode),\n\t\t\tmode: theme.getGestureMode(mode)\n\t\t};\n\t}\n\n\tonParentResize(parentWidth: number, parentHeight: number, parentPadding: DPadding): void {\n\t\tif (this.isOpened()) {\n\t\t\tconst layer = this._layer;\n\t\t\tif (layer != null) {\n\t\t\t\tconst gesture = this._gesture;\n\t\t\t\tif (gesture.isDirty()) {\n\t\t\t\t\tconst position = this.position;\n\t\t\t\t\tgesture.constraint(this, layer, position.x, position.y);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tsuper.onParentResize(parentWidth, parentHeight, parentPadding);\n\t}\n\n\tprotected getAnimation(): DAnimation | null {\n\t\tlet result = this._animation;\n\t\tif (result === undefined) {\n\t\t\tresult = this._options?.animation ?? this.theme.newAnimation(this._mode);\n\t\t\tif (result) {\n\t\t\t\tresult.target = this;\n\t\t\t\tresult.on(\"end\", (isReverse: boolean): void => {\n\t\t\t\t\tthis.onAnimationEnd(isReverse);\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis._animation = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected onAnimationEnd(isReverse: boolean): void {\n\t\tif (isReverse) {\n\t\t\tif (this._mode === DDialogMode.MODELESS) {\n\t\t\t\tthis.hide();\n\t\t\t} else {\n\t\t\t\tconst parent = this.parent;\n\t\t\t\tif (parent) {\n\t\t\t\t\tparent.removeChild(this);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconst layer = DApplications.getLayer(this);\n\t\t\tif (layer) {\n\t\t\t\tconst focusController = layer.getFocusController();\n\t\t\t\tthis._focused = focusController.get();\n\t\t\t\tfocusController.focus(this.findFirstFocusable(focusController) || this);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected findFirstFocusable(focusController: DControllerFocus): DFocusable | null {\n\t\treturn focusController.find(this, false, true, true);\n\t}\n\n\t/**\n\t * Opens a dialog.\n\t *\n\t * @param opener An opener of a dialog.\n\t * The dialog position is determined based on a position and a size of the opener.\n\t * If the opener is undefined, the dialog is placed at the center of the screen.\n\t *\n\t * @returns a value of this dialog\n\t */\n\topen(opener?: DDialogOpener): Promise<VALUE> {\n\t\tlet result = this._promise;\n\t\tif (result == null) {\n\t\t\tresult = new Promise<VALUE>((resolve, reject): void => {\n\t\t\t\tthis._resolve = resolve;\n\t\t\t\tthis._reject = reject;\n\t\t\t});\n\t\t\tthis._promise = result;\n\n\t\t\tthis._opener = opener;\n\n\t\t\t// Attach to a layer\n\t\t\tlet layer: DApplicationLayerLike | null = null;\n\t\t\tswitch (this._mode) {\n\t\t\t\tcase DDialogMode.MODAL:\n\t\t\t\tcase DDialogMode.MENU:\n\t\t\t\t\tlayer = this._overlay.pick(this);\n\t\t\t\t\tlayer.stage.addChild(this);\n\t\t\t\t\tbreak;\n\t\t\t\tcase DDialogMode.MODELESS:\n\t\t\t\t\tlayer = DApplications.getLayer(this);\n\t\t\t\t\tthis.show();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis._layer = layer;\n\n\t\t\t// Position & size\n\t\t\tconst gesture = this._gesture;\n\t\t\tif (gesture.mode === DDialogGestureMode.CLEAN) {\n\t\t\t\tgesture.toClean();\n\t\t\t}\n\t\t\tif (layer != null) {\n\t\t\t\tif (gesture.isClean()) {\n\t\t\t\t\tconst renderer = layer.renderer;\n\t\t\t\t\tconst onPrerenderBound = this._onPrerenderBound;\n\t\t\t\t\tif (this._sticky) {\n\t\t\t\t\t\trenderer.on(\"prerender\", onPrerenderBound);\n\t\t\t\t\t} else {\n\t\t\t\t\t\trenderer.once(\"prerender\", onPrerenderBound);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst position = this.position;\n\t\t\t\t\tgesture.constraint(this, layer, position.x, position.y);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Done\n\t\t\tthis.onOpen();\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected onPrerender(): void {\n\t\tconst layer = this._layer;\n\t\tif (layer == null) {\n\t\t\treturn;\n\t\t}\n\t\tconst align = this._align;\n\t\tconst opener = this._opener;\n\t\tif (align != null && opener != null) {\n\t\t\tconst mode = this._mode;\n\t\t\tconst bounds = opener.getBounds(false, (DDialog.WORK_BOUNDS ??= new Rectangle()));\n\t\t\tconst theme = this.theme;\n\t\t\tUtilAttach.attach(\n\t\t\t\tthis,\n\t\t\t\tbounds,\n\t\t\t\ttheme.getOffsetX(mode),\n\t\t\t\ttheme.getOffsetY(mode),\n\t\t\t\tlayer.width,\n\t\t\t\tlayer.height,\n\t\t\t\talign\n\t\t\t);\n\t\t} else {\n\t\t\tthis.position.set((layer.width - this.width) * 0.5, (layer.height - this.height) * 0.5);\n\t\t}\n\t}\n\n\tprotected onOpen(): void {\n\t\tthis.emit(\"open\", this);\n\n\t\t// Animation\n\t\tconst animation = this.getAnimation();\n\t\tif (animation) {\n\t\t\tanimation.start();\n\t\t} else if (this._mode === DDialogMode.MENU) {\n\t\t\tthis.visible = true;\n\t\t\tthis.onAnimationEnd(false);\n\t\t}\n\t}\n\n\tisOpened(): boolean {\n\t\treturn this._promise != null;\n\t}\n\n\tclose(): void {\n\t\tthis.doReject();\n\t}\n\n\tprotected doResolve(value: VALUE | PromiseLike<VALUE>): void {\n\t\tconst resolve = this._resolve;\n\t\tif (resolve) {\n\t\t\tthis._promise = undefined;\n\t\t\tthis._resolve = undefined;\n\t\t\tthis._reject = undefined;\n\n\t\t\tthis.onClose();\n\n\t\t\tresolve(value);\n\t\t}\n\t}\n\n\tprotected doReject(reason?: any): void {\n\t\tconst reject = this._reject;\n\t\tif (reject) {\n\t\t\tthis._promise = undefined;\n\t\t\tthis._resolve = undefined;\n\t\t\tthis._reject = undefined;\n\n\t\t\tthis.onClose();\n\n\t\t\treject(reason);\n\t\t}\n\t}\n\n\tprotected onClose(): void {\n\t\t// Focus\n\t\tconst layer = this._layer;\n\t\tconst focused = this._focused;\n\t\tif (focused != null) {\n\t\t\tthis._focused = null;\n\t\t\tif (layer) {\n\t\t\t\tconst focusedLayer = DApplications.getLayer(focused);\n\t\t\t\tif (focusedLayer != null && layer !== focusedLayer) {\n\t\t\t\t\tfocusedLayer.view.focus();\n\t\t\t\t}\n\t\t\t\tlayer.getFocusController().focus(focused);\n\t\t\t} else {\n\t\t\t\tthis.blur(true);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.blur(true);\n\t\t}\n\n\t\t// Remove the prerender event handler and forget the layer\n\t\tif (layer) {\n\t\t\tlayer.renderer.off(\"prerender\", this._onPrerenderBound);\n\t\t\tthis._layer = null;\n\t\t}\n\n\t\t// Forget the opener\n\t\tthis._opener = null;\n\n\t\t// Animation\n\t\tconst animation = this.getAnimation();\n\t\tif (animation) {\n\t\t\tanimation.start(true);\n\t\t} else {\n\t\t\tthis.visible = false;\n\t\t\tthis.onAnimationEnd(true);\n\t\t}\n\n\t\tthis.emit(\"close\", this);\n\t}\n\n\tprotected onKeyDown(e: KeyboardEvent): boolean {\n\t\tif (this._closeOn & DDialogCloseOn.ESC) {\n\t\t\tif (UtilKeyboardEvent.isCancelKey(e)) {\n\t\t\t\tthis.onCloseOn();\n\t\t\t}\n\t\t}\n\t\treturn super.onKeyDown(e);\n\t}\n\n\tprotected onCloseOn(): void {\n\t\tthis.close();\n\t}\n\n\tprotected containsGlobalPoint(point: Point): boolean {\n\t\tswitch (this._mode) {\n\t\t\tcase DDialogMode.MODAL:\n\t\t\tcase DDialogMode.MENU:\n\t\t\t\treturn true;\n\t\t\tcase DDialogMode.MODELESS:\n\t\t\t\treturn super.containsGlobalPoint(point);\n\t\t}\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DDialog\";\n\t}\n}\n"]}
@@ -26,6 +26,9 @@ var DDynamicText = /** @class */ (function (_super) {
26
26
  _this._isGeometryDirty = true;
27
27
  _this._atlas = null;
28
28
  _this._atlasRevisionUpdated = 0;
29
+ _this._onAtlasTextureUpdateBound = function () {
30
+ DApplications.update(_this);
31
+ };
29
32
  _this._width = 0;
30
33
  _this._height = 0;
31
34
  _this._modifier = {
@@ -144,6 +147,7 @@ var DDynamicText = /** @class */ (function (_super) {
144
147
  this._atlasRevisionUpdated = atlas.getRevisionUpdate();
145
148
  this._atlas = atlas;
146
149
  this.texture = atlas.texture;
150
+ this.texture.on("update", this._onAtlasTextureUpdateBound);
147
151
  this._isGeometryDirty = true;
148
152
  }
149
153
  }
@@ -1 +1 @@
1
- {"version":3,"file":"d-dynamic-text.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dynamic-text.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Mesh, MeshMaterial, Renderer, Texture } from \"pixi.js\";\nimport { DApplications } from \"./d-applications\";\nimport { DBase } from \"./d-base\";\nimport { DDynamicTextGeometry } from \"./d-dynamic-text-geometry\";\nimport { DDynamicTextStyle, DDynamicTextStyleOptions } from \"./d-dynamic-text-style\";\nimport { DDynamicTextStyleWordWrap } from \"./d-dynamic-text-style-word-wrap\";\nimport { DynamicFontAtlas } from \"./util/dynamic-font-atlas\";\nimport { UtilFont } from \"./util/util-font\";\n\nexport interface DDynamicTextClippingDelta {\n\twidth: number;\n\theight: number;\n}\n\nexport interface DDynamicTextModifier {\n\tclipping: boolean;\n\tfitting: boolean;\n\twordWrap: DDynamicTextStyleWordWrap;\n\twidth: number;\n\theight: number;\n\tlineHeight: number;\n\tdelta: DDynamicTextClippingDelta;\n}\n\nexport class DDynamicText extends Mesh {\n\tprotected _style: DDynamicTextStyle;\n\tprotected _text: string;\n\tprotected _textApproved: string;\n\tprotected _isDirty: boolean;\n\tprotected _isGeometryDirty: boolean;\n\tprotected _atlas: DynamicFontAtlas | null;\n\tprotected _atlasRevisionUpdated: number;\n\tprotected _width: number;\n\tprotected _height: number;\n\tprotected _modifier: DDynamicTextModifier;\n\n\treadonly geometry!: DDynamicTextGeometry;\n\n\tconstructor(text: string, options?: DDynamicTextStyleOptions) {\n\t\tsuper(new DDynamicTextGeometry(), new MeshMaterial(Texture.EMPTY));\n\n\t\tthis._style = new DDynamicTextStyle(options, (): void => {\n\t\t\tthis._isDirty = true;\n\t\t\tthis._isGeometryDirty = true;\n\t\t\tthis._atlas = null;\n\t\t\tthis.update_();\n\t\t});\n\t\tthis._text = text;\n\t\tthis._textApproved = \"\";\n\t\tthis._isDirty = true;\n\t\tthis._isGeometryDirty = true;\n\t\tthis._atlas = null;\n\t\tthis._atlasRevisionUpdated = 0;\n\t\tthis._width = 0;\n\t\tthis._height = 0;\n\t\tthis._modifier = {\n\t\t\tclipping: false,\n\t\t\tfitting: false,\n\t\t\twordWrap: DDynamicTextStyleWordWrap.NONE,\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\tlineHeight: 0,\n\t\t\tdelta: {\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t}\n\t\t};\n\t\tthis.update_();\n\t}\n\n\tprotected update_(): void {\n\t\tconst layer = DApplications.getLayer(this);\n\t\tif (layer) {\n\t\t\tconst style = this._style;\n\t\t\tif (this._isDirty) {\n\t\t\t\tthis._isDirty = false;\n\n\t\t\t\tconst text = this._text;\n\t\t\t\tconst textApproved = this._textApproved;\n\t\t\t\tthis._textApproved = text;\n\t\t\t\tconst fontId = style.fontId;\n\t\t\t\tconst fontIdApproved = style.fontIdApproved;\n\t\t\t\tconst fontIdFontSize = style.fontIdFontSize;\n\t\t\t\tconst fill = style.fill;\n\t\t\t\tconst fillApproved = style.fillApproved;\n\t\t\t\tstyle.approve();\n\n\t\t\t\tconst atlases = layer.getDynamicFontAtlases();\n\t\t\t\tif (text !== textApproved || fontId !== fontIdApproved || fill !== fillApproved) {\n\t\t\t\t\tatlases.add(fontId, fontIdFontSize, fill, text);\n\t\t\t\t\tatlases.remove(fontIdApproved, fillApproved, textApproved);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tget text(): string {\n\t\treturn this._text;\n\t}\n\n\tset text(text: string) {\n\t\tif (this._text !== text) {\n\t\t\tthis._text = text;\n\t\t\tif (!this._style.unfit()) {\n\t\t\t\tthis._isDirty = true;\n\t\t\t\tthis._isGeometryDirty = true;\n\t\t\t\tthis.update_();\n\t\t\t}\n\t\t}\n\t}\n\n\t// @ts-ignore\n\tget width(): number {\n\t\tthis.update();\n\t\treturn Math.abs(this.scale.x) * this.geometry.width;\n\t}\n\n\tset width(width: number) {\n\t\tthis.update();\n\t\tconst geometryWidth = this.geometry.width;\n\t\tif (+1e-4 < geometryWidth) {\n\t\t\tconst newScale = width / geometryWidth;\n\t\t\tthis.scale.x = 0 <= this.scale.x ? +newScale : -newScale;\n\t\t}\n\t}\n\n\t// @ts-ignore\n\tget height(): number {\n\t\tthis.update();\n\t\treturn Math.abs(this.scale.y) * this.geometry.height;\n\t}\n\n\tset height(height: number) {\n\t\tthis.update();\n\t\tconst geometryHeight = this.geometry.height;\n\t\tif (+1e-4 < geometryHeight) {\n\t\t\tconst newScale = height / geometryHeight;\n\t\t\tthis.scale.y = 0 <= this.scale.y ? +newScale : -newScale;\n\t\t}\n\t}\n\n\tget clipped(): boolean {\n\t\treturn this.geometry.clipped;\n\t}\n\n\tget style(): DDynamicTextStyle {\n\t\treturn this._style;\n\t}\n\n\tupdate(): void {\n\t\tthis.update_();\n\n\t\tconst style = this._style;\n\t\tlet atlas = this._atlas;\n\t\tif (atlas == null) {\n\t\t\tconst layer = DApplications.getLayer(this);\n\t\t\tif (layer) {\n\t\t\t\tatlas = layer.getDynamicFontAtlases().get(style.fontId, style.fill);\n\t\t\t\tif (atlas != null) {\n\t\t\t\t\tthis._atlasRevisionUpdated = atlas.getRevisionUpdate();\n\t\t\t\t\tthis._atlas = atlas;\n\t\t\t\t\tthis.texture = atlas.texture;\n\t\t\t\t\tthis._isGeometryDirty = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconst revisionUpdate = atlas.getRevisionUpdate();\n\t\t\tif (revisionUpdate !== this._atlasRevisionUpdated) {\n\t\t\t\tthis._atlasRevisionUpdated = revisionUpdate;\n\t\t\t\tthis._isGeometryDirty = true;\n\t\t\t}\n\t\t}\n\n\t\tconst modifier = this._modifier;\n\t\tif (this.updateClipping(style, modifier)) {\n\t\t\tthis._isGeometryDirty = true;\n\t\t}\n\n\t\tif (this._isGeometryDirty) {\n\t\t\tthis._isGeometryDirty = false;\n\t\t\tconst geometry = this.geometry;\n\t\t\tgeometry.update(this._text, atlas, modifier);\n\n\t\t\tif (modifier.fitting && !style.isFontFitted && geometry.scaled) {\n\t\t\t\tconst oldScale = geometry.scale;\n\t\t\t\tconst oldFontSize = style.fontSize;\n\t\t\t\tconst newFontId = style.toFontId(Math.ceil(oldFontSize * oldScale * 1000) / 1000);\n\t\t\t\tconst newFontSize = UtilFont.toSize(newFontId);\n\t\t\t\tconst newScale = newFontSize / oldFontSize;\n\t\t\t\tconst newLineHeight = style.lineHeight * newScale;\n\t\t\t\tif (style.fit(newFontSize, newLineHeight)) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tDApplications.update(this);\n\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected updateClipping(style: DDynamicTextStyle, modifier: DDynamicTextModifier): boolean {\n\t\tlet isChanged = false;\n\n\t\tconst styleClipping = style.clipping;\n\t\tif (modifier.clipping !== styleClipping) {\n\t\t\tmodifier.clipping = styleClipping;\n\t\t\tisChanged = true;\n\t\t}\n\n\t\tconst styleFitting = style.fitting;\n\t\tif (modifier.fitting !== styleFitting) {\n\t\t\tmodifier.fitting = styleFitting;\n\t\t\tisChanged = true;\n\t\t}\n\n\t\tconst styleWordWrap = style.wordWrap;\n\t\tif (modifier.wordWrap !== styleWordWrap) {\n\t\t\tmodifier.wordWrap = styleWordWrap;\n\t\t\tisChanged = true;\n\t\t}\n\n\t\tconst styleLineHeight = styleFitting ? style.lineHeightFitted : style.lineHeight;\n\t\tif (modifier.lineHeight !== styleLineHeight) {\n\t\t\tmodifier.lineHeight = styleLineHeight;\n\t\t\tisChanged = true;\n\t\t}\n\n\t\tif (styleClipping || styleFitting || styleWordWrap) {\n\t\t\tconst parent = this.parent;\n\t\t\tif (parent instanceof DBase) {\n\t\t\t\tconst width =\n\t\t\t\t\tparent.width -\n\t\t\t\t\tparent.padding.getLeft() -\n\t\t\t\t\tparent.padding.getRight() -\n\t\t\t\t\tmodifier.delta.width;\n\t\t\t\tif (modifier.width !== width) {\n\t\t\t\t\tmodifier.width = width;\n\t\t\t\t\tisChanged = true;\n\t\t\t\t}\n\n\t\t\t\tconst height =\n\t\t\t\t\tparent.height -\n\t\t\t\t\tparent.padding.getTop() -\n\t\t\t\t\tparent.padding.getBottom() -\n\t\t\t\t\tmodifier.delta.height;\n\t\t\t\tif (modifier.height !== height) {\n\t\t\t\t\tmodifier.height = height;\n\t\t\t\t\tisChanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn isChanged;\n\t}\n\n\tsetClippingDelta(width: number, height: number): void {\n\t\tconst delta = this._modifier.delta;\n\t\tdelta.width = width;\n\t\tdelta.height = height;\n\t}\n\n\tprotected _calculateBounds(): void {\n\t\tthis.update();\n\t\tsuper._calculateBounds();\n\t}\n\n\tprotected _render(renderer?: Renderer): void {\n\t\tthis.update();\n\t\tsuper._render(renderer!);\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-dynamic-text.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dynamic-text.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Mesh, MeshMaterial, Renderer, Texture } from \"pixi.js\";\nimport { DApplications } from \"./d-applications\";\nimport { DBase } from \"./d-base\";\nimport { DDynamicTextGeometry } from \"./d-dynamic-text-geometry\";\nimport { DDynamicTextStyle, DDynamicTextStyleOptions } from \"./d-dynamic-text-style\";\nimport { DDynamicTextStyleWordWrap } from \"./d-dynamic-text-style-word-wrap\";\nimport { DynamicFontAtlas } from \"./util/dynamic-font-atlas\";\nimport { UtilFont } from \"./util/util-font\";\n\nexport interface DDynamicTextClippingDelta {\n\twidth: number;\n\theight: number;\n}\n\nexport interface DDynamicTextModifier {\n\tclipping: boolean;\n\tfitting: boolean;\n\twordWrap: DDynamicTextStyleWordWrap;\n\twidth: number;\n\theight: number;\n\tlineHeight: number;\n\tdelta: DDynamicTextClippingDelta;\n}\n\nexport class DDynamicText extends Mesh {\n\tprotected _style: DDynamicTextStyle;\n\tprotected _text: string;\n\tprotected _textApproved: string;\n\tprotected _isDirty: boolean;\n\tprotected _isGeometryDirty: boolean;\n\tprotected _atlas: DynamicFontAtlas | null;\n\tprotected _atlasRevisionUpdated: number;\n\tprotected _onAtlasTextureUpdateBound: () => void;\n\tprotected _width: number;\n\tprotected _height: number;\n\tprotected _modifier: DDynamicTextModifier;\n\n\treadonly geometry!: DDynamicTextGeometry;\n\n\tconstructor(text: string, options?: DDynamicTextStyleOptions) {\n\t\tsuper(new DDynamicTextGeometry(), new MeshMaterial(Texture.EMPTY));\n\n\t\tthis._style = new DDynamicTextStyle(options, (): void => {\n\t\t\tthis._isDirty = true;\n\t\t\tthis._isGeometryDirty = true;\n\t\t\tthis._atlas = null;\n\t\t\tthis.update_();\n\t\t});\n\t\tthis._text = text;\n\t\tthis._textApproved = \"\";\n\t\tthis._isDirty = true;\n\t\tthis._isGeometryDirty = true;\n\t\tthis._atlas = null;\n\t\tthis._atlasRevisionUpdated = 0;\n\t\tthis._onAtlasTextureUpdateBound = () => {\n\t\t\tDApplications.update(this);\n\t\t};\n\t\tthis._width = 0;\n\t\tthis._height = 0;\n\t\tthis._modifier = {\n\t\t\tclipping: false,\n\t\t\tfitting: false,\n\t\t\twordWrap: DDynamicTextStyleWordWrap.NONE,\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\tlineHeight: 0,\n\t\t\tdelta: {\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t}\n\t\t};\n\t\tthis.update_();\n\t}\n\n\tprotected update_(): void {\n\t\tconst layer = DApplications.getLayer(this);\n\t\tif (layer) {\n\t\t\tconst style = this._style;\n\t\t\tif (this._isDirty) {\n\t\t\t\tthis._isDirty = false;\n\n\t\t\t\tconst text = this._text;\n\t\t\t\tconst textApproved = this._textApproved;\n\t\t\t\tthis._textApproved = text;\n\t\t\t\tconst fontId = style.fontId;\n\t\t\t\tconst fontIdApproved = style.fontIdApproved;\n\t\t\t\tconst fontIdFontSize = style.fontIdFontSize;\n\t\t\t\tconst fill = style.fill;\n\t\t\t\tconst fillApproved = style.fillApproved;\n\t\t\t\tstyle.approve();\n\n\t\t\t\tconst atlases = layer.getDynamicFontAtlases();\n\t\t\t\tif (text !== textApproved || fontId !== fontIdApproved || fill !== fillApproved) {\n\t\t\t\t\tatlases.add(fontId, fontIdFontSize, fill, text);\n\t\t\t\t\tatlases.remove(fontIdApproved, fillApproved, textApproved);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tget text(): string {\n\t\treturn this._text;\n\t}\n\n\tset text(text: string) {\n\t\tif (this._text !== text) {\n\t\t\tthis._text = text;\n\t\t\tif (!this._style.unfit()) {\n\t\t\t\tthis._isDirty = true;\n\t\t\t\tthis._isGeometryDirty = true;\n\t\t\t\tthis.update_();\n\t\t\t}\n\t\t}\n\t}\n\n\t// @ts-ignore\n\tget width(): number {\n\t\tthis.update();\n\t\treturn Math.abs(this.scale.x) * this.geometry.width;\n\t}\n\n\tset width(width: number) {\n\t\tthis.update();\n\t\tconst geometryWidth = this.geometry.width;\n\t\tif (+1e-4 < geometryWidth) {\n\t\t\tconst newScale = width / geometryWidth;\n\t\t\tthis.scale.x = 0 <= this.scale.x ? +newScale : -newScale;\n\t\t}\n\t}\n\n\t// @ts-ignore\n\tget height(): number {\n\t\tthis.update();\n\t\treturn Math.abs(this.scale.y) * this.geometry.height;\n\t}\n\n\tset height(height: number) {\n\t\tthis.update();\n\t\tconst geometryHeight = this.geometry.height;\n\t\tif (+1e-4 < geometryHeight) {\n\t\t\tconst newScale = height / geometryHeight;\n\t\t\tthis.scale.y = 0 <= this.scale.y ? +newScale : -newScale;\n\t\t}\n\t}\n\n\tget clipped(): boolean {\n\t\treturn this.geometry.clipped;\n\t}\n\n\tget style(): DDynamicTextStyle {\n\t\treturn this._style;\n\t}\n\n\tupdate(): void {\n\t\tthis.update_();\n\n\t\tconst style = this._style;\n\t\tlet atlas = this._atlas;\n\t\tif (atlas == null) {\n\t\t\tconst layer = DApplications.getLayer(this);\n\t\t\tif (layer) {\n\t\t\t\tatlas = layer.getDynamicFontAtlases().get(style.fontId, style.fill);\n\t\t\t\tif (atlas != null) {\n\t\t\t\t\tthis._atlasRevisionUpdated = atlas.getRevisionUpdate();\n\t\t\t\t\tthis._atlas = atlas;\n\t\t\t\t\tthis.texture = atlas.texture;\n\t\t\t\t\tthis.texture.on(\"update\", this._onAtlasTextureUpdateBound);\n\t\t\t\t\tthis._isGeometryDirty = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconst revisionUpdate = atlas.getRevisionUpdate();\n\t\t\tif (revisionUpdate !== this._atlasRevisionUpdated) {\n\t\t\t\tthis._atlasRevisionUpdated = revisionUpdate;\n\t\t\t\tthis._isGeometryDirty = true;\n\t\t\t}\n\t\t}\n\n\t\tconst modifier = this._modifier;\n\t\tif (this.updateClipping(style, modifier)) {\n\t\t\tthis._isGeometryDirty = true;\n\t\t}\n\n\t\tif (this._isGeometryDirty) {\n\t\t\tthis._isGeometryDirty = false;\n\t\t\tconst geometry = this.geometry;\n\t\t\tgeometry.update(this._text, atlas, modifier);\n\n\t\t\tif (modifier.fitting && !style.isFontFitted && geometry.scaled) {\n\t\t\t\tconst oldScale = geometry.scale;\n\t\t\t\tconst oldFontSize = style.fontSize;\n\t\t\t\tconst newFontId = style.toFontId(Math.ceil(oldFontSize * oldScale * 1000) / 1000);\n\t\t\t\tconst newFontSize = UtilFont.toSize(newFontId);\n\t\t\t\tconst newScale = newFontSize / oldFontSize;\n\t\t\t\tconst newLineHeight = style.lineHeight * newScale;\n\t\t\t\tif (style.fit(newFontSize, newLineHeight)) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tDApplications.update(this);\n\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected updateClipping(style: DDynamicTextStyle, modifier: DDynamicTextModifier): boolean {\n\t\tlet isChanged = false;\n\n\t\tconst styleClipping = style.clipping;\n\t\tif (modifier.clipping !== styleClipping) {\n\t\t\tmodifier.clipping = styleClipping;\n\t\t\tisChanged = true;\n\t\t}\n\n\t\tconst styleFitting = style.fitting;\n\t\tif (modifier.fitting !== styleFitting) {\n\t\t\tmodifier.fitting = styleFitting;\n\t\t\tisChanged = true;\n\t\t}\n\n\t\tconst styleWordWrap = style.wordWrap;\n\t\tif (modifier.wordWrap !== styleWordWrap) {\n\t\t\tmodifier.wordWrap = styleWordWrap;\n\t\t\tisChanged = true;\n\t\t}\n\n\t\tconst styleLineHeight = styleFitting ? style.lineHeightFitted : style.lineHeight;\n\t\tif (modifier.lineHeight !== styleLineHeight) {\n\t\t\tmodifier.lineHeight = styleLineHeight;\n\t\t\tisChanged = true;\n\t\t}\n\n\t\tif (styleClipping || styleFitting || styleWordWrap) {\n\t\t\tconst parent = this.parent;\n\t\t\tif (parent instanceof DBase) {\n\t\t\t\tconst width =\n\t\t\t\t\tparent.width -\n\t\t\t\t\tparent.padding.getLeft() -\n\t\t\t\t\tparent.padding.getRight() -\n\t\t\t\t\tmodifier.delta.width;\n\t\t\t\tif (modifier.width !== width) {\n\t\t\t\t\tmodifier.width = width;\n\t\t\t\t\tisChanged = true;\n\t\t\t\t}\n\n\t\t\t\tconst height =\n\t\t\t\t\tparent.height -\n\t\t\t\t\tparent.padding.getTop() -\n\t\t\t\t\tparent.padding.getBottom() -\n\t\t\t\t\tmodifier.delta.height;\n\t\t\t\tif (modifier.height !== height) {\n\t\t\t\t\tmodifier.height = height;\n\t\t\t\t\tisChanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn isChanged;\n\t}\n\n\tsetClippingDelta(width: number, height: number): void {\n\t\tconst delta = this._modifier.delta;\n\t\tdelta.width = width;\n\t\tdelta.height = height;\n\t}\n\n\tprotected _calculateBounds(): void {\n\t\tthis.update();\n\t\tsuper._calculateBounds();\n\t}\n\n\tprotected _render(renderer?: Renderer): void {\n\t\tthis.update();\n\t\tsuper._render(renderer!);\n\t}\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=d-menu-closeable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"d-menu-closeable.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-menu-closeable.ts"],"names":[],"mappings":"","sourcesContent":["import { DisplayObject } from \"pixi.js\";\n\nexport interface DMenuCloseable extends DisplayObject {\n\tclose(): void;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"d-menu-context.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-menu-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH;IAIC,sBAAY,KAAY;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACvB,CAAC;IAES,8BAAO,GAAjB,UAAkB,MAAe;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAa,CAAC,CAAC;IAChD,CAAC;IAES,4BAAK,GAAf,UAAgB,KAAa;QAC5B,IAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;YACnD,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;SACtB;IACF,CAAC;IAED,0BAAG,GAAH,UAAI,SAAoB;QACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,2BAAI,GAAJ,UAAK,SAA2B;QAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,6BAAM,GAAN,UAAO,SAAoB;QAC1B,IAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,KAAK,EAAE;YACf,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SAClC;IACF,CAAC;IACF,mBAAC;AAAD,CAAC,AApCD,IAoCC","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DisplayObject } from \"pixi.js\";\n\nexport interface Owner {\n\tfocus(): void;\n}\n\nexport interface Parent {\n\tparent: unknown;\n}\n\nexport interface Closeable extends DisplayObject {\n\tclose(): void;\n}\n\nexport class DMenuContext {\n\tprotected _owner: Owner;\n\tprotected _closeables: Closeable[];\n\n\tconstructor(owner: Owner) {\n\t\tthis._owner = owner;\n\t\tthis._closeables = [];\n\t}\n\n\tprotected indexOf(target: unknown): number {\n\t\treturn this._closeables.indexOf(target as any);\n\t}\n\n\tprotected close(index: number): void {\n\t\tconst closeables = this._closeables;\n\t\tconst imin = Math.max(0, index);\n\t\tfor (let i = closeables.length - 1; imin <= i; --i) {\n\t\t\tcloseables[i].close();\n\t\t}\n\t}\n\n\tadd(closeable: Closeable): void {\n\t\tthis._closeables.push(closeable);\n\t}\n\n\ttrim(closeable: Closeable | null): void {\n\t\tthis.close(this.indexOf(closeable) + 1);\n\t}\n\n\tremove(closeable: Closeable): void {\n\t\tconst index = this.indexOf(closeable);\n\t\tif (0 <= index) {\n\t\t\tthis.close(index + 1);\n\t\t\tthis._closeables.splice(index, 1);\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-menu-context.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-menu-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH;IAIC,sBAAY,KAAwB;QACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACvB,CAAC;IAES,8BAAO,GAAjB,UAAkB,MAAe;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAa,CAAC,CAAC;IAChD,CAAC;IAES,4BAAK,GAAf,UAAgB,KAAa;QAC5B,IAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;YACnD,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;SACtB;IACF,CAAC;IAED,0BAAG,GAAH,UAAI,SAAyB;QAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,2BAAI,GAAJ,UAAK,SAAgC;QACpC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,6BAAM,GAAN,UAAO,SAAyB;QAC/B,IAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,KAAK,EAAE;YACf,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SAClC;IACF,CAAC;IACF,mBAAC;AAAD,CAAC,AApCD,IAoCC","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DMenuCloseable } from \"./d-menu-closeable\";\n\nexport interface DMenuContextOwner {\n\t// focus(): void;\n}\n\nexport interface DMenuContextParent {\n\tparent: unknown;\n}\n\nexport class DMenuContext {\n\tprotected _owner: DMenuContextOwner;\n\tprotected _closeables: DMenuCloseable[];\n\n\tconstructor(owner: DMenuContextOwner) {\n\t\tthis._owner = owner;\n\t\tthis._closeables = [];\n\t}\n\n\tprotected indexOf(target: unknown): number {\n\t\treturn this._closeables.indexOf(target as any);\n\t}\n\n\tprotected close(index: number): void {\n\t\tconst closeables = this._closeables;\n\t\tconst imin = Math.max(0, index);\n\t\tfor (let i = closeables.length - 1; imin <= i; --i) {\n\t\t\tcloseables[i].close();\n\t\t}\n\t}\n\n\tadd(closeable: DMenuCloseable): void {\n\t\tthis._closeables.push(closeable);\n\t}\n\n\ttrim(closeable: DMenuCloseable | null): void {\n\t\tthis.close(this.indexOf(closeable) + 1);\n\t}\n\n\tremove(closeable: DMenuCloseable): void {\n\t\tconst index = this.indexOf(closeable);\n\t\tif (0 <= index) {\n\t\t\tthis.close(index + 1);\n\t\t\tthis._closeables.splice(index, 1);\n\t\t}\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"d-menu-item.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-menu-item.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAGH,OAAO,EAAE,aAAa,EAA4C,MAAM,oBAAoB,CAAC;AAO7F;IAIU,6BAAoC;IAJ9C;;IA8BA,CAAC;IAzBA,8BAAU,GAAV;QACC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAa,CAAC;QAChC,OAAO,MAAM,EAAE;YACd,IAAI,MAAM,CAAC,UAAU,EAAE;gBACtB,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;aAC3B;YACD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;SACvB;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,gCAAY,GAAZ;QACC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAa,CAAC;QAChC,OAAO,MAAM,EAAE;YACd,IAAI,MAAM,CAAC,YAAY,EAAE;gBACxB,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;aAC7B;YACD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;SACvB;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAES,2BAAO,GAAjB;QACC,OAAO,WAAW,CAAC;IACpB,CAAC;IACF,gBAAC;AAAD,CAAC,AA9BD,CAIU,aAAa,GA0BtB","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Closeable, DMenuContext } from \"./d-menu-context\";\nimport { DMenuItemBase, DMenuItemBaseOptions, DThemeMenuItemBase } from \"./d-menu-item-base\";\n\nexport interface DMenuItemOptions<VALUE = unknown, THEME extends DThemeMenuItem = DThemeMenuItem>\n\textends DMenuItemBaseOptions<VALUE, THEME> {}\n\nexport interface DThemeMenuItem extends DThemeMenuItemBase {}\n\nexport class DMenuItem<\n\tVALUE = unknown,\n\tTHEME extends DThemeMenuItem = DThemeMenuItem,\n\tOPTIONS extends DMenuItemOptions<VALUE, THEME> = DMenuItemOptions<VALUE, THEME>\n> extends DMenuItemBase<VALUE, THEME, OPTIONS> {\n\tgetContext(): DMenuContext | null {\n\t\tlet parent = this.parent as any;\n\t\twhile (parent) {\n\t\t\tif (parent.getContext) {\n\t\t\t\treturn parent.getContext();\n\t\t\t}\n\t\t\tparent = parent.parent;\n\t\t}\n\t\treturn null;\n\t}\n\n\tgetCloseable(): Closeable | null {\n\t\tlet parent = this.parent as any;\n\t\twhile (parent) {\n\t\t\tif (parent.getCloseable) {\n\t\t\t\treturn parent.getCloseable();\n\t\t\t}\n\t\t\tparent = parent.parent;\n\t\t}\n\t\treturn null;\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DMenuItem\";\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-menu-item.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-menu-item.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAIH,OAAO,EAAE,aAAa,EAA4C,MAAM,oBAAoB,CAAC;AAO7F;IAIU,6BAAoC;IAJ9C;;IA8BA,CAAC;IAzBA,8BAAU,GAAV;QACC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAa,CAAC;QAChC,OAAO,MAAM,EAAE;YACd,IAAI,MAAM,CAAC,UAAU,EAAE;gBACtB,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;aAC3B;YACD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;SACvB;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,gCAAY,GAAZ;QACC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAa,CAAC;QAChC,OAAO,MAAM,EAAE;YACd,IAAI,MAAM,CAAC,YAAY,EAAE;gBACxB,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;aAC7B;YACD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;SACvB;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAES,2BAAO,GAAjB;QACC,OAAO,WAAW,CAAC;IACpB,CAAC;IACF,gBAAC;AAAD,CAAC,AA9BD,CAIU,aAAa,GA0BtB","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DMenuCloseable } from \"./d-menu-closeable\";\nimport { DMenuContext } from \"./d-menu-context\";\nimport { DMenuItemBase, DMenuItemBaseOptions, DThemeMenuItemBase } from \"./d-menu-item-base\";\n\nexport interface DMenuItemOptions<VALUE = unknown, THEME extends DThemeMenuItem = DThemeMenuItem>\n\textends DMenuItemBaseOptions<VALUE, THEME> {}\n\nexport interface DThemeMenuItem extends DThemeMenuItemBase {}\n\nexport class DMenuItem<\n\tVALUE = unknown,\n\tTHEME extends DThemeMenuItem = DThemeMenuItem,\n\tOPTIONS extends DMenuItemOptions<VALUE, THEME> = DMenuItemOptions<VALUE, THEME>\n> extends DMenuItemBase<VALUE, THEME, OPTIONS> {\n\tgetContext(): DMenuContext | null {\n\t\tlet parent = this.parent as any;\n\t\twhile (parent) {\n\t\t\tif (parent.getContext) {\n\t\t\t\treturn parent.getContext();\n\t\t\t}\n\t\t\tparent = parent.parent;\n\t\t}\n\t\treturn null;\n\t}\n\n\tgetCloseable(): DMenuCloseable | null {\n\t\tlet parent = this.parent as any;\n\t\twhile (parent) {\n\t\t\tif (parent.getCloseable) {\n\t\t\t\treturn parent.getCloseable();\n\t\t\t}\n\t\t\tparent = parent.parent;\n\t\t}\n\t\treturn null;\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DMenuItem\";\n\t}\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=d-menu-opener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"d-menu-opener.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-menu-opener.ts"],"names":[],"mappings":"","sourcesContent":["import { Rectangle } from \"pixi.js\";\n\nexport interface DMenuOpener {\n\tgetBounds(skipUpdate?: boolean, result?: Rectangle): Rectangle;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"d-menu-sided.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-menu-sided.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAIH,OAAO,EAAa,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAA4B,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAA8B,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAA4B,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAc/D;IASU,8BAAsC;IAI/C,oBAAY,OAAiB;QAA7B,iBAgBC;;gBAfA,kBAAM,OAAO,CAAC;QAEd,IAAM,OAAO,GAAG,IAAI,YAAY,CAAC,KAAI,CAAC,CAAC;QACvC,KAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAI,CAAC,CAAC;QAElB,IAAM,KAAK,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC;QAC7B,IAAI,KAAK,IAAI,IAAI,EAAE;YAClB,IAAM,MAAM,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,mCAAI,KAAK,CAAC;YACxC,KAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SAC7B;QAED,IAAM,SAAS,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAC;QACrC,KAAI,CAAC,UAAU;YACd,SAAS,YAAY,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;;IACtF,CAAC;IAES,iCAAY,GAAtB,UAAuB,OAAoC;QAC1D,OAAO,IAAI,mBAAmB,CAAQ,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAES,qCAAgB,GAA1B;QACC,IAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,SAAS,IAAI,IAAI,EAAE;YACtB,SAAS,CAAC,OAAO,EAAE,CAAC;SACpB;QACD,iBAAM,gBAAgB,WAAE,CAAC;IAC1B,CAAC;IAES,6BAAQ,GAAlB,UACC,KAA0D,EAC1D,MAAe;QAEf,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAES,+BAAU,GAApB,UAAqB,OAAyB;QAC7C,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,sBAAI,iCAAS;aAAb;YACC,OAAO,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;;;OAAA;IAED,+BAAU,GAAV;QACC,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,iCAAY,GAAZ;QACC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,yBAAI,GAAJ;QACC,aAAa;IACd,CAAC;IAED,0BAAK,GAAL;QACC,aAAa;IACd,CAAC;IAES,8BAAS,GAAnB,UAAoB,CAAgB;QACnC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/C,OAAO,iBAAM,SAAS,YAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAES,4BAAO,GAAjB;QACC,OAAO,YAAY,CAAC;IACrB,CAAC;IACF,iBAAC;AAAD,CAAC,AAlFD,CASU,KAAK,GAyEd","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DisplayObject } from \"pixi.js\";\nimport { DBase, DBaseOptions } from \"./d-base\";\nimport { Closeable, DMenuContext } from \"./d-menu-context\";\nimport { DMenuItemOptionsUnion } from \"./d-menu-item-options-union\";\nimport { DMenuSidedContent, DMenuSidedContentOptions } from \"./d-menu-sided-content\";\nimport { DMenuSidedSelection, DMenuSidedSelectionOptions } from \"./d-menu-sided-selection\";\nimport { DMenuSideds } from \"./d-menu-sideds\";\nimport { DPane, DPaneOptions, DThemePane } from \"./d-pane\";\nimport { UtilKeyboardEvent } from \"./util/util-keyboard-event\";\n\nexport interface DMenuSidedOptions<\n\tVALUE = unknown,\n\tTHEME extends DThemeMenuSided = DThemeMenuSided,\n\tCONTENT_OPTIONS extends DBaseOptions = DMenuSidedContentOptions\n> extends DPaneOptions<THEME, CONTENT_OPTIONS> {\n\titems?: Array<DMenuItemOptionsUnion<VALUE> | DisplayObject>;\n\tsticky?: boolean;\n\tselection?: DMenuSidedSelectionOptions | DMenuSidedSelection<VALUE>;\n}\n\nexport interface DThemeMenuSided extends DThemePane {}\n\nexport class DMenuSided<\n\tVALUE = unknown,\n\tTHEME extends DThemeMenuSided = DThemeMenuSided,\n\tCONTENT_OPTIONS extends DMenuSidedContentOptions = DMenuSidedContentOptions,\n\tOPTIONS extends DMenuSidedOptions<VALUE, THEME, CONTENT_OPTIONS> = DMenuSidedOptions<\n\t\tVALUE,\n\t\tTHEME,\n\t\tCONTENT_OPTIONS\n\t>\n> extends DPane<THEME, CONTENT_OPTIONS, OPTIONS> {\n\tprotected _context: DMenuContext | null;\n\tprotected _selection: DMenuSidedSelection<VALUE>;\n\n\tconstructor(options?: OPTIONS) {\n\t\tsuper(options);\n\n\t\tconst context = new DMenuContext(this);\n\t\tthis._context = context;\n\t\tcontext.add(this);\n\n\t\tconst items = options?.items;\n\t\tif (items != null) {\n\t\t\tconst sticky = options?.sticky ?? false;\n\t\t\tthis.newItems(items, sticky);\n\t\t}\n\n\t\tconst selection = options?.selection;\n\t\tthis._selection =\n\t\t\tselection instanceof DMenuSidedSelection ? selection : this.newSelection(selection);\n\t}\n\n\tprotected newSelection(options?: DMenuSidedSelectionOptions): DMenuSidedSelection<VALUE> {\n\t\treturn new DMenuSidedSelection<VALUE>(this.content, options);\n\t}\n\n\tprotected onHierarchyDirty(): void {\n\t\tconst selection = this._selection;\n\t\tif (selection != null) {\n\t\t\tselection.toDirty();\n\t\t}\n\t\tsuper.onHierarchyDirty();\n\t}\n\n\tprotected newItems(\n\t\titems: Array<DMenuItemOptionsUnion<VALUE> | DisplayObject>,\n\t\tsticky: boolean\n\t): void {\n\t\tDMenuSideds.newItems(this.content, items, sticky);\n\t}\n\n\tprotected newContent(options?: CONTENT_OPTIONS): DBase {\n\t\treturn new DMenuSidedContent(options);\n\t}\n\n\tget selection(): DMenuSidedSelection<VALUE> {\n\t\treturn this._selection;\n\t}\n\n\tgetContext(): DMenuContext | null {\n\t\treturn this._context;\n\t}\n\n\tgetCloseable(): Closeable | null {\n\t\treturn this;\n\t}\n\n\topen(): void {\n\t\t// DO NOTHING\n\t}\n\n\tclose(): void {\n\t\t// DO NOTHING\n\t}\n\n\tprotected onKeyDown(e: KeyboardEvent): boolean {\n\t\tUtilKeyboardEvent.moveFocusVertically(e, this);\n\t\treturn super.onKeyDown(e);\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DMenuSided\";\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-menu-sided.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-menu-sided.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAA4B,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAA8B,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAA4B,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAe/D;IASU,8BAAsC;IAI/C,oBAAY,OAAiB;QAA7B,iBAgBC;;gBAfA,kBAAM,OAAO,CAAC;QAEd,IAAM,OAAO,GAAG,IAAI,YAAY,CAAC,KAAI,CAAC,CAAC;QACvC,KAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAI,CAAC,CAAC;QAElB,IAAM,KAAK,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC;QAC7B,IAAI,KAAK,IAAI,IAAI,EAAE;YAClB,IAAM,MAAM,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,mCAAI,KAAK,CAAC;YACxC,KAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SAC7B;QAED,IAAM,SAAS,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAC;QACrC,KAAI,CAAC,UAAU;YACd,SAAS,YAAY,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;;IACtF,CAAC;IAES,iCAAY,GAAtB,UAAuB,OAAoC;QAC1D,OAAO,IAAI,mBAAmB,CAAQ,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAES,qCAAgB,GAA1B;QACC,IAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,SAAS,IAAI,IAAI,EAAE;YACtB,SAAS,CAAC,OAAO,EAAE,CAAC;SACpB;QACD,iBAAM,gBAAgB,WAAE,CAAC;IAC1B,CAAC;IAES,6BAAQ,GAAlB,UACC,KAA0D,EAC1D,MAAe;QAEf,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAES,+BAAU,GAApB,UAAqB,OAAyB;QAC7C,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,sBAAI,iCAAS;aAAb;YACC,OAAO,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC;;;OAAA;IAED,+BAAU,GAAV;QACC,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,iCAAY,GAAZ;QACC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,yBAAI,GAAJ;QACC,aAAa;IACd,CAAC;IAED,0BAAK,GAAL;QACC,aAAa;IACd,CAAC;IAES,8BAAS,GAAnB,UAAoB,CAAgB;QACnC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/C,OAAO,iBAAM,SAAS,YAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAES,4BAAO,GAAjB;QACC,OAAO,YAAY,CAAC;IACrB,CAAC;IACF,iBAAC;AAAD,CAAC,AAlFD,CASU,KAAK,GAyEd","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DisplayObject } from \"pixi.js\";\nimport { DBase, DBaseOptions } from \"./d-base\";\nimport { DMenuContext } from \"./d-menu-context\";\nimport { DMenuItemOptionsUnion } from \"./d-menu-item-options-union\";\nimport { DMenuSidedContent, DMenuSidedContentOptions } from \"./d-menu-sided-content\";\nimport { DMenuSidedSelection, DMenuSidedSelectionOptions } from \"./d-menu-sided-selection\";\nimport { DMenuSideds } from \"./d-menu-sideds\";\nimport { DPane, DPaneOptions, DThemePane } from \"./d-pane\";\nimport { UtilKeyboardEvent } from \"./util/util-keyboard-event\";\nimport { DMenuCloseable } from \"./d-menu-closeable\";\n\nexport interface DMenuSidedOptions<\n\tVALUE = unknown,\n\tTHEME extends DThemeMenuSided = DThemeMenuSided,\n\tCONTENT_OPTIONS extends DBaseOptions = DMenuSidedContentOptions\n> extends DPaneOptions<THEME, CONTENT_OPTIONS> {\n\titems?: Array<DMenuItemOptionsUnion<VALUE> | DisplayObject>;\n\tsticky?: boolean;\n\tselection?: DMenuSidedSelectionOptions | DMenuSidedSelection<VALUE>;\n}\n\nexport interface DThemeMenuSided extends DThemePane {}\n\nexport class DMenuSided<\n\tVALUE = unknown,\n\tTHEME extends DThemeMenuSided = DThemeMenuSided,\n\tCONTENT_OPTIONS extends DMenuSidedContentOptions = DMenuSidedContentOptions,\n\tOPTIONS extends DMenuSidedOptions<VALUE, THEME, CONTENT_OPTIONS> = DMenuSidedOptions<\n\t\tVALUE,\n\t\tTHEME,\n\t\tCONTENT_OPTIONS\n\t>\n> extends DPane<THEME, CONTENT_OPTIONS, OPTIONS> {\n\tprotected _context: DMenuContext | null;\n\tprotected _selection: DMenuSidedSelection<VALUE>;\n\n\tconstructor(options?: OPTIONS) {\n\t\tsuper(options);\n\n\t\tconst context = new DMenuContext(this);\n\t\tthis._context = context;\n\t\tcontext.add(this);\n\n\t\tconst items = options?.items;\n\t\tif (items != null) {\n\t\t\tconst sticky = options?.sticky ?? false;\n\t\t\tthis.newItems(items, sticky);\n\t\t}\n\n\t\tconst selection = options?.selection;\n\t\tthis._selection =\n\t\t\tselection instanceof DMenuSidedSelection ? selection : this.newSelection(selection);\n\t}\n\n\tprotected newSelection(options?: DMenuSidedSelectionOptions): DMenuSidedSelection<VALUE> {\n\t\treturn new DMenuSidedSelection<VALUE>(this.content, options);\n\t}\n\n\tprotected onHierarchyDirty(): void {\n\t\tconst selection = this._selection;\n\t\tif (selection != null) {\n\t\t\tselection.toDirty();\n\t\t}\n\t\tsuper.onHierarchyDirty();\n\t}\n\n\tprotected newItems(\n\t\titems: Array<DMenuItemOptionsUnion<VALUE> | DisplayObject>,\n\t\tsticky: boolean\n\t): void {\n\t\tDMenuSideds.newItems(this.content, items, sticky);\n\t}\n\n\tprotected newContent(options?: CONTENT_OPTIONS): DBase {\n\t\treturn new DMenuSidedContent(options);\n\t}\n\n\tget selection(): DMenuSidedSelection<VALUE> {\n\t\treturn this._selection;\n\t}\n\n\tgetContext(): DMenuContext | null {\n\t\treturn this._context;\n\t}\n\n\tgetCloseable(): DMenuCloseable | null {\n\t\treturn this;\n\t}\n\n\topen(): void {\n\t\t// DO NOTHING\n\t}\n\n\tclose(): void {\n\t\t// DO NOTHING\n\t}\n\n\tprotected onKeyDown(e: KeyboardEvent): boolean {\n\t\tUtilKeyboardEvent.moveFocusVertically(e, this);\n\t\treturn super.onKeyDown(e);\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DMenuSided\";\n\t}\n}\n"]}
@@ -3,6 +3,7 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import { __extends } from "tslib";
6
+ import { Rectangle } from "pixi.js";
6
7
  import { DApplications } from "./d-applications";
7
8
  import { DBase } from "./d-base";
8
9
  import { DBaseState } from "./d-base-state";
@@ -70,6 +71,7 @@ var DMenu = /** @class */ (function (_super) {
70
71
  return this;
71
72
  };
72
73
  DMenu.prototype.open = function (owner, closeable, context) {
74
+ var _a;
73
75
  if (this.isHidden()) {
74
76
  var layer = this._overlay.pick(this);
75
77
  this._owner = owner;
@@ -91,7 +93,7 @@ var DMenu = /** @class */ (function (_super) {
91
93
  renderer.once("prerender", onPrerenderBound);
92
94
  }
93
95
  if (this._fit) {
94
- var bounds = owner.getBounds();
96
+ var bounds = owner.getBounds(false, ((_a = DMenu.WORK_BOUNDS) !== null && _a !== void 0 ? _a : (DMenu.WORK_BOUNDS = new Rectangle())));
95
97
  if (bounds != null) {
96
98
  this.width = bounds.width;
97
99
  }
@@ -117,9 +119,10 @@ var DMenu = /** @class */ (function (_super) {
117
119
  return this;
118
120
  };
119
121
  DMenu.prototype.onPrerender = function () {
122
+ var _a;
120
123
  var owner = this._owner;
121
124
  if (owner) {
122
- var bounds = owner.getBounds();
125
+ var bounds = owner.getBounds(false, ((_a = DMenu.WORK_BOUNDS) !== null && _a !== void 0 ? _a : (DMenu.WORK_BOUNDS = new Rectangle())));
123
126
  if (bounds) {
124
127
  if (this._fit) {
125
128
  this.width = bounds.width;
@@ -1 +1 @@
1
- {"version":3,"file":"d-menu.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-menu.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DisplayObject, Point } from \"pixi.js\";\nimport { DApplications } from \"./d-applications\";\nimport { DBase } from \"./d-base\";\nimport { DBaseState } from \"./d-base-state\";\nimport { DFocusable } from \"./d-controller-focus\";\nimport { DLayoutVertical, DLayoutVerticalOptions, DThemeLayoutVertical } from \"./d-layout-vertical\";\nimport { DMenuAlign } from \"./d-menu-align\";\nimport { Closeable, DMenuContext } from \"./d-menu-context\";\nimport { DMenuItem } from \"./d-menu-item\";\nimport { DMenuItemOptionsUnion } from \"./d-menu-item-options-union\";\nimport { DMenus } from \"./d-menus\";\nimport { toEnum } from \"./util/to-enum\";\nimport { UtilAttach } from \"./util/util-attach\";\nimport { UtilClickOutside } from \"./util/util-click-outside\";\nimport { UtilKeyboardEvent } from \"./util/util-keyboard-event\";\nimport { UtilOverlay } from \"./util/util-overlay\";\n\nexport interface DMenuOptions<VALUE = unknown, THEME extends DThemeMenu = DThemeMenu>\n\textends DLayoutVerticalOptions<THEME> {\n\talign?: keyof typeof DMenuAlign | DMenuAlign;\n\tfit?: boolean;\n\tsticky?: boolean;\n\titems?: Array<DMenuItemOptionsUnion<VALUE> | DisplayObject | null | undefined>;\n}\n\nexport interface DThemeMenu extends DThemeLayoutVertical {\n\tgetOffsetX(): number;\n\tgetOffsetY(): number;\n}\n\nexport class DMenu<\n\tVALUE,\n\tTHEME extends DThemeMenu = DThemeMenu,\n\tOPTIONS extends DMenuOptions<VALUE, THEME> = DMenuOptions<VALUE, THEME>\n> extends DLayoutVertical<THEME, OPTIONS> {\n\tprotected _align!: DMenuAlign;\n\tprotected _fit!: boolean;\n\tprotected _sticky!: boolean;\n\tprotected _sub!: boolean;\n\tprotected _owner!: DBase<any, any> | null;\n\tprotected _context!: DMenuContext | null;\n\tprotected _overlay!: UtilOverlay;\n\tprotected _onPrerenderBound!: () => void;\n\tprotected _focused?: DFocusable | null;\n\n\tprotected init(options?: OPTIONS): void {\n\t\tsuper.init(options);\n\n\t\tthis._onPrerenderBound = (): void => {\n\t\t\tthis.onPrerender();\n\t\t};\n\n\t\tthis._align = toEnum(options?.align ?? DMenuAlign.BOTTOM, DMenuAlign);\n\t\tthis._fit = options?.fit ?? false;\n\t\tthis._sticky = options?.sticky ?? false;\n\t\tthis._sub = false;\n\t\tthis._owner = null;\n\t\tthis._context = null;\n\t\tthis.visible = false;\n\n\t\t// Event handlers\n\t\tUtilClickOutside.apply(this, (): void => {\n\t\t\tthis.close();\n\t\t});\n\n\t\tthis.on(\"select\", (): void => {\n\t\t\tthis.close();\n\t\t});\n\n\t\t// Items\n\t\tconst items = options?.items;\n\t\tif (items) {\n\t\t\tDMenus.newItems(this, items, this._sticky);\n\t\t}\n\n\t\t// Overlay\n\t\tthis._overlay = new UtilOverlay(options);\n\t}\n\n\tfindItem(value: VALUE): DMenuItem<VALUE> | null {\n\t\tconst children = this.children;\n\t\tfor (let i = 0, imax = children.length; i < imax; ++i) {\n\t\t\tconst child = children[i];\n\t\t\tif (child instanceof DMenuItem && child.value === value) {\n\t\t\t\treturn child;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DMenu\";\n\t}\n\n\tgetContext(): DMenuContext | null {\n\t\treturn this._context;\n\t}\n\n\tgetCloseable(): Closeable | null {\n\t\treturn this;\n\t}\n\n\topen(\n\t\towner: DBase<any, any>,\n\t\tcloseable?: Closeable | null,\n\t\tcontext?: DMenuContext | null\n\t): this {\n\t\tif (this.isHidden()) {\n\t\t\tconst layer = this._overlay.pick(this);\n\t\t\tthis._owner = owner;\n\n\t\t\t// States\n\t\t\tconst children = this.children;\n\t\t\tfor (let i = 0, imax = children.length; i < imax; ++i) {\n\t\t\t\tconst child = children[i];\n\t\t\t\tif (child instanceof DBase) {\n\t\t\t\t\tchild.state.removeAll(DBaseState.FOCUSED, DBaseState.HOVERED);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Position & size\n\t\t\tconst renderer = layer.renderer;\n\t\t\tconst onPrerenderBound = this._onPrerenderBound;\n\t\t\tif (this._sticky) {\n\t\t\t\trenderer.on(\"prerender\", onPrerenderBound);\n\t\t\t} else {\n\t\t\t\trenderer.once(\"prerender\", onPrerenderBound);\n\t\t\t}\n\t\t\tif (this._fit) {\n\t\t\t\tconst bounds = owner.getBounds();\n\t\t\t\tif (bounds != null) {\n\t\t\t\t\tthis.width = bounds.width;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Target\n\t\t\tthis._sub = context != null;\n\t\t\tcontext = context || new DMenuContext(owner);\n\t\t\tif (closeable != null) {\n\t\t\t\tcontext.trim(closeable);\n\t\t\t}\n\t\t\tcontext.add(this);\n\t\t\tthis._context = context;\n\n\t\t\t// Stage\n\t\t\tlayer.stage.addChild(this);\n\n\t\t\t// Focus\n\t\t\tthis._focused = layer.getFocusController().get();\n\t\t\tthis.focus();\n\n\t\t\t// Show\n\t\t\tsuper.show();\n\n\t\t\t// Event\n\t\t\tthis.emit(\"open\", this);\n\t\t}\n\t\treturn this;\n\t}\n\n\tprotected onPrerender(): void {\n\t\tconst owner = this._owner;\n\t\tif (owner) {\n\t\t\tconst bounds = owner.getBounds();\n\t\t\tif (bounds) {\n\t\t\t\tif (this._fit) {\n\t\t\t\t\tthis.width = bounds.width;\n\t\t\t\t}\n\t\t\t\tconst layer = this._overlay.picked;\n\t\t\t\tif (layer) {\n\t\t\t\t\tconst theme = this.theme;\n\t\t\t\t\tUtilAttach.attach(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\tbounds,\n\t\t\t\t\t\ttheme.getOffsetX(),\n\t\t\t\t\t\ttheme.getOffsetY(),\n\t\t\t\t\t\tlayer.width,\n\t\t\t\t\t\tlayer.height,\n\t\t\t\t\t\tthis._align\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tclose(): this {\n\t\tif (this.isShown()) {\n\t\t\t// Remove from the context\n\t\t\tconst context = this._context;\n\t\t\tif (context) {\n\t\t\t\tcontext.remove(this);\n\t\t\t}\n\n\t\t\t// Remove the prerender event handler\n\t\t\tconst layer = this._overlay.picked;\n\t\t\tif (layer) {\n\t\t\t\tlayer.renderer.off(\"prerender\", this._onPrerenderBound);\n\t\t\t}\n\n\t\t\t// Forget the owner\n\t\t\tthis._owner = null;\n\n\t\t\t// Restore the focus\n\t\t\tconst focused = this._focused;\n\t\t\tif (focused != null) {\n\t\t\t\tthis._focused = null;\n\t\t\t\tif (layer) {\n\t\t\t\t\tconst focusedLayer = DApplications.getLayer(focused);\n\t\t\t\t\tif (focusedLayer != null && layer !== focusedLayer) {\n\t\t\t\t\t\tfocusedLayer.view.focus();\n\t\t\t\t\t}\n\t\t\t\t\tlayer.getFocusController().focus(focused);\n\t\t\t\t} else {\n\t\t\t\t\tthis.blur(true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.blur(true);\n\t\t\t}\n\n\t\t\t// Visibility\n\t\t\tsuper.hide();\n\n\t\t\t// Remove from the tree\n\t\t\tconst parent = this.parent;\n\t\t\tif (parent) {\n\t\t\t\tparent.removeChild(this);\n\t\t\t}\n\n\t\t\t// Emit the event\n\t\t\tthis.emit(\"close\", this);\n\t\t}\n\t\treturn this;\n\t}\n\n\tprotected onKeyDown(e: KeyboardEvent): boolean {\n\t\tUtilKeyboardEvent.moveFocusVertically(e, this, this._overlay);\n\t\tif (\n\t\t\tthis.state.isActionable &&\n\t\t\t(UtilKeyboardEvent.isArrowLeftKey(e) || UtilKeyboardEvent.isCancelKey(e))\n\t\t) {\n\t\t\tthis.close();\n\t\t}\n\t\treturn super.onKeyDown(e);\n\t}\n\n\tprotected containsGlobalPoint(point: Point): boolean {\n\t\treturn !this._sub;\n\t}\n}\n\nDMenus.setMenuCreator((options?: DMenuOptions<any>) => new DMenu<any>(options));\n"]}
1
+ {"version":3,"file":"d-menu.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-menu.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DisplayObject, Point, Rectangle } from \"pixi.js\";\nimport { DApplications } from \"./d-applications\";\nimport { DBase } from \"./d-base\";\nimport { DBaseState } from \"./d-base-state\";\nimport { DFocusable } from \"./d-controller-focus\";\nimport { DLayoutVertical, DLayoutVerticalOptions, DThemeLayoutVertical } from \"./d-layout-vertical\";\nimport { DMenuAlign } from \"./d-menu-align\";\nimport { DMenuContext } from \"./d-menu-context\";\nimport { DMenuItem } from \"./d-menu-item\";\nimport { DMenuItemOptionsUnion } from \"./d-menu-item-options-union\";\nimport { DMenus } from \"./d-menus\";\nimport { toEnum } from \"./util/to-enum\";\nimport { UtilAttach } from \"./util/util-attach\";\nimport { UtilClickOutside } from \"./util/util-click-outside\";\nimport { UtilKeyboardEvent } from \"./util/util-keyboard-event\";\nimport { UtilOverlay } from \"./util/util-overlay\";\nimport { DMenuOpener } from \"./d-menu-opener\";\nimport { DMenuCloseable } from \"./d-menu-closeable\";\n\nexport interface DMenuOptions<VALUE = unknown, THEME extends DThemeMenu = DThemeMenu>\n\textends DLayoutVerticalOptions<THEME> {\n\talign?: keyof typeof DMenuAlign | DMenuAlign;\n\tfit?: boolean;\n\tsticky?: boolean;\n\titems?: Array<DMenuItemOptionsUnion<VALUE> | DisplayObject | null | undefined>;\n}\n\nexport interface DThemeMenu extends DThemeLayoutVertical {\n\tgetOffsetX(): number;\n\tgetOffsetY(): number;\n}\n\nexport class DMenu<\n\tVALUE,\n\tTHEME extends DThemeMenu = DThemeMenu,\n\tOPTIONS extends DMenuOptions<VALUE, THEME> = DMenuOptions<VALUE, THEME>\n> extends DLayoutVertical<THEME, OPTIONS> {\n\tprotected static WORK_BOUNDS?: Rectangle;\n\n\tprotected _align!: DMenuAlign;\n\tprotected _fit!: boolean;\n\tprotected _sticky!: boolean;\n\tprotected _sub!: boolean;\n\tprotected _owner!: DMenuOpener | null;\n\tprotected _context!: DMenuContext | null;\n\tprotected _overlay!: UtilOverlay;\n\tprotected _onPrerenderBound!: () => void;\n\tprotected _focused?: DFocusable | null;\n\n\tprotected init(options?: OPTIONS): void {\n\t\tsuper.init(options);\n\n\t\tthis._onPrerenderBound = (): void => {\n\t\t\tthis.onPrerender();\n\t\t};\n\n\t\tthis._align = toEnum(options?.align ?? DMenuAlign.BOTTOM, DMenuAlign);\n\t\tthis._fit = options?.fit ?? false;\n\t\tthis._sticky = options?.sticky ?? false;\n\t\tthis._sub = false;\n\t\tthis._owner = null;\n\t\tthis._context = null;\n\t\tthis.visible = false;\n\n\t\t// Event handlers\n\t\tUtilClickOutside.apply(this, (): void => {\n\t\t\tthis.close();\n\t\t});\n\n\t\tthis.on(\"select\", (): void => {\n\t\t\tthis.close();\n\t\t});\n\n\t\t// Items\n\t\tconst items = options?.items;\n\t\tif (items) {\n\t\t\tDMenus.newItems(this, items, this._sticky);\n\t\t}\n\n\t\t// Overlay\n\t\tthis._overlay = new UtilOverlay(options);\n\t}\n\n\tfindItem(value: VALUE): DMenuItem<VALUE> | null {\n\t\tconst children = this.children;\n\t\tfor (let i = 0, imax = children.length; i < imax; ++i) {\n\t\t\tconst child = children[i];\n\t\t\tif (child instanceof DMenuItem && child.value === value) {\n\t\t\t\treturn child;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DMenu\";\n\t}\n\n\tgetContext(): DMenuContext | null {\n\t\treturn this._context;\n\t}\n\n\tgetCloseable(): DMenuCloseable | null {\n\t\treturn this;\n\t}\n\n\topen(\n\t\towner: DMenuOpener,\n\t\tcloseable?: DMenuCloseable | null,\n\t\tcontext?: DMenuContext | null\n\t): this {\n\t\tif (this.isHidden()) {\n\t\t\tconst layer = this._overlay.pick(this);\n\t\t\tthis._owner = owner;\n\n\t\t\t// States\n\t\t\tconst children = this.children;\n\t\t\tfor (let i = 0, imax = children.length; i < imax; ++i) {\n\t\t\t\tconst child = children[i];\n\t\t\t\tif (child instanceof DBase) {\n\t\t\t\t\tchild.state.removeAll(DBaseState.FOCUSED, DBaseState.HOVERED);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Position & size\n\t\t\tconst renderer = layer.renderer;\n\t\t\tconst onPrerenderBound = this._onPrerenderBound;\n\t\t\tif (this._sticky) {\n\t\t\t\trenderer.on(\"prerender\", onPrerenderBound);\n\t\t\t} else {\n\t\t\t\trenderer.once(\"prerender\", onPrerenderBound);\n\t\t\t}\n\t\t\tif (this._fit) {\n\t\t\t\tconst bounds = owner.getBounds(false, (DMenu.WORK_BOUNDS ??= new Rectangle()));\n\t\t\t\tif (bounds != null) {\n\t\t\t\t\tthis.width = bounds.width;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Target\n\t\t\tthis._sub = context != null;\n\t\t\tcontext = context || new DMenuContext(owner);\n\t\t\tif (closeable != null) {\n\t\t\t\tcontext.trim(closeable);\n\t\t\t}\n\t\t\tcontext.add(this);\n\t\t\tthis._context = context;\n\n\t\t\t// Stage\n\t\t\tlayer.stage.addChild(this);\n\n\t\t\t// Focus\n\t\t\tthis._focused = layer.getFocusController().get();\n\t\t\tthis.focus();\n\n\t\t\t// Show\n\t\t\tsuper.show();\n\n\t\t\t// Event\n\t\t\tthis.emit(\"open\", this);\n\t\t}\n\t\treturn this;\n\t}\n\n\tprotected onPrerender(): void {\n\t\tconst owner = this._owner;\n\t\tif (owner) {\n\t\t\tconst bounds = owner.getBounds(false, (DMenu.WORK_BOUNDS ??= new Rectangle()));\n\t\t\tif (bounds) {\n\t\t\t\tif (this._fit) {\n\t\t\t\t\tthis.width = bounds.width;\n\t\t\t\t}\n\t\t\t\tconst layer = this._overlay.picked;\n\t\t\t\tif (layer) {\n\t\t\t\t\tconst theme = this.theme;\n\t\t\t\t\tUtilAttach.attach(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\tbounds,\n\t\t\t\t\t\ttheme.getOffsetX(),\n\t\t\t\t\t\ttheme.getOffsetY(),\n\t\t\t\t\t\tlayer.width,\n\t\t\t\t\t\tlayer.height,\n\t\t\t\t\t\tthis._align\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tclose(): this {\n\t\tif (this.isShown()) {\n\t\t\t// Remove from the context\n\t\t\tconst context = this._context;\n\t\t\tif (context) {\n\t\t\t\tcontext.remove(this);\n\t\t\t}\n\n\t\t\t// Remove the prerender event handler\n\t\t\tconst layer = this._overlay.picked;\n\t\t\tif (layer) {\n\t\t\t\tlayer.renderer.off(\"prerender\", this._onPrerenderBound);\n\t\t\t}\n\n\t\t\t// Forget the owner\n\t\t\tthis._owner = null;\n\n\t\t\t// Restore the focus\n\t\t\tconst focused = this._focused;\n\t\t\tif (focused != null) {\n\t\t\t\tthis._focused = null;\n\t\t\t\tif (layer) {\n\t\t\t\t\tconst focusedLayer = DApplications.getLayer(focused);\n\t\t\t\t\tif (focusedLayer != null && layer !== focusedLayer) {\n\t\t\t\t\t\tfocusedLayer.view.focus();\n\t\t\t\t\t}\n\t\t\t\t\tlayer.getFocusController().focus(focused);\n\t\t\t\t} else {\n\t\t\t\t\tthis.blur(true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.blur(true);\n\t\t\t}\n\n\t\t\t// Visibility\n\t\t\tsuper.hide();\n\n\t\t\t// Remove from the tree\n\t\t\tconst parent = this.parent;\n\t\t\tif (parent) {\n\t\t\t\tparent.removeChild(this);\n\t\t\t}\n\n\t\t\t// Emit the event\n\t\t\tthis.emit(\"close\", this);\n\t\t}\n\t\treturn this;\n\t}\n\n\tprotected onKeyDown(e: KeyboardEvent): boolean {\n\t\tUtilKeyboardEvent.moveFocusVertically(e, this, this._overlay);\n\t\tif (\n\t\t\tthis.state.isActionable &&\n\t\t\t(UtilKeyboardEvent.isArrowLeftKey(e) || UtilKeyboardEvent.isCancelKey(e))\n\t\t) {\n\t\t\tthis.close();\n\t\t}\n\t\treturn super.onKeyDown(e);\n\t}\n\n\tprotected containsGlobalPoint(point: Point): boolean {\n\t\treturn !this._sub;\n\t}\n}\n\nDMenus.setMenuCreator((options?: DMenuOptions<any>) => new DMenu<any>(options));\n"]}