@wcardinal/wcardinal-ui 0.386.0 → 0.388.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 (63) hide show
  1. package/dist/types/wcardinal/ui/d-button-select.d.ts +1 -1
  2. package/dist/types/wcardinal/ui/d-dialog-select.d.ts +14 -6
  3. package/dist/types/wcardinal/ui/d-dialog.d.ts +7 -3
  4. package/dist/types/wcardinal/ui/d-menu-opener.d.ts +2 -1
  5. package/dist/types/wcardinal/ui/index.d.ts +0 -2
  6. package/dist/types/wcardinal/ui/theme/dark/d-theme-dark-dialog-select.d.ts +2 -0
  7. package/dist/types/wcardinal/ui/theme/dark/d-theme-dark-en-us-dialog-select.d.ts +1 -0
  8. package/dist/types/wcardinal/ui/theme/dark/d-theme-dark-ja-jp-dialog-select.d.ts +1 -0
  9. package/dist/types/wcardinal/ui/theme/white/d-theme-white-dialog-select.d.ts +2 -0
  10. package/dist/types/wcardinal/ui/theme/white/d-theme-white-en-us-dialog-select.d.ts +1 -0
  11. package/dist/types/wcardinal/ui/theme/white/d-theme-white-ja-jp-dialog-select.d.ts +1 -0
  12. package/dist/types/wcardinal/ui/util/util-overlay.d.ts +1 -1
  13. package/dist/wcardinal/ui/d-button-select.js.map +1 -1
  14. package/dist/wcardinal/ui/d-dialog-select.js +77 -97
  15. package/dist/wcardinal/ui/d-dialog-select.js.map +1 -1
  16. package/dist/wcardinal/ui/d-dialog.js +6 -3
  17. package/dist/wcardinal/ui/d-dialog.js.map +1 -1
  18. package/dist/wcardinal/ui/d-menu-opener.js.map +1 -1
  19. package/dist/wcardinal/ui/d-menu.js +1 -1
  20. package/dist/wcardinal/ui/d-menu.js.map +1 -1
  21. package/dist/wcardinal/ui/index.js +0 -2
  22. package/dist/wcardinal/ui/index.js.map +1 -1
  23. package/dist/wcardinal/ui/theme/dark/d-theme-dark-dialog-select.js +3 -0
  24. package/dist/wcardinal/ui/theme/dark/d-theme-dark-dialog-select.js.map +1 -1
  25. package/dist/wcardinal/ui/theme/dark/d-theme-dark-en-us-dialog-select.js +3 -0
  26. package/dist/wcardinal/ui/theme/dark/d-theme-dark-en-us-dialog-select.js.map +1 -1
  27. package/dist/wcardinal/ui/theme/dark/d-theme-dark-ja-jp-dialog-select.js +3 -0
  28. package/dist/wcardinal/ui/theme/dark/d-theme-dark-ja-jp-dialog-select.js.map +1 -1
  29. package/dist/wcardinal/ui/theme/white/d-theme-white-dialog-select.js +3 -0
  30. package/dist/wcardinal/ui/theme/white/d-theme-white-dialog-select.js.map +1 -1
  31. package/dist/wcardinal/ui/theme/white/d-theme-white-en-us-dialog-select.js +3 -0
  32. package/dist/wcardinal/ui/theme/white/d-theme-white-en-us-dialog-select.js.map +1 -1
  33. package/dist/wcardinal/ui/theme/white/d-theme-white-ja-jp-dialog-select.js +3 -0
  34. package/dist/wcardinal/ui/theme/white/d-theme-white-ja-jp-dialog-select.js.map +1 -1
  35. package/dist/wcardinal/ui/util/util-overlay.js +6 -3
  36. package/dist/wcardinal/ui/util/util-overlay.js.map +1 -1
  37. package/dist/wcardinal-ui-theme-dark-en-us.js +7 -1
  38. package/dist/wcardinal-ui-theme-dark-en-us.min.js +2 -2
  39. package/dist/wcardinal-ui-theme-dark-en-us.min.js.map +1 -1
  40. package/dist/wcardinal-ui-theme-dark-ja-jp.js +7 -1
  41. package/dist/wcardinal-ui-theme-dark-ja-jp.min.js +2 -2
  42. package/dist/wcardinal-ui-theme-dark-ja-jp.min.js.map +1 -1
  43. package/dist/wcardinal-ui-theme-dark.js +7 -1
  44. package/dist/wcardinal-ui-theme-dark.min.js +2 -2
  45. package/dist/wcardinal-ui-theme-white-en-us.js +7 -1
  46. package/dist/wcardinal-ui-theme-white-en-us.min.js +2 -2
  47. package/dist/wcardinal-ui-theme-white-en-us.min.js.map +1 -1
  48. package/dist/wcardinal-ui-theme-white-ja-jp.js +7 -1
  49. package/dist/wcardinal-ui-theme-white-ja-jp.min.js +2 -2
  50. package/dist/wcardinal-ui-theme-white-ja-jp.min.js.map +1 -1
  51. package/dist/wcardinal-ui-theme-white.js +7 -1
  52. package/dist/wcardinal-ui-theme-white.min.js +2 -2
  53. package/dist/wcardinal-ui.cjs.js +108 -163
  54. package/dist/wcardinal-ui.js +90 -163
  55. package/dist/wcardinal-ui.min.js +2 -2
  56. package/dist/wcardinal-ui.min.js.map +1 -1
  57. package/package.json +1 -1
  58. package/dist/types/wcardinal/ui/d-dialog-select-search-dismissable-impl.d.ts +0 -14
  59. package/dist/types/wcardinal/ui/d-dialog-select-search-dismissable.d.ts +0 -11
  60. package/dist/wcardinal/ui/d-dialog-select-search-dismissable-impl.js +0 -61
  61. package/dist/wcardinal/ui/d-dialog-select-search-dismissable-impl.js.map +0 -1
  62. package/dist/wcardinal/ui/d-dialog-select-search-dismissable.js +0 -6
  63. package/dist/wcardinal/ui/d-dialog-select-search-dismissable.js.map +0 -1
@@ -7,7 +7,7 @@ import { DOnOptions } from "./d-on-options";
7
7
  * A dialog to select values.
8
8
  */
9
9
  export interface DButtonSelectDialog<VALUE> {
10
- readonly value: VALUE | null;
10
+ value: VALUE | null;
11
11
  open(opener?: DDialogOpener): Promise<unknown>;
12
12
  }
13
13
  /**
@@ -10,9 +10,9 @@ import { DListDataSelection } from "./d-list-data-selection";
10
10
  import { DNote, DNoteOptions } from "./d-note";
11
11
  import { DOnOptions } from "./d-on-options";
12
12
  import { DDialogSelectSearch } from "./d-dialog-select-search";
13
- import { DDialogSelectSearhDismissableOptions } from "./d-dialog-select-search-dismissable";
14
13
  import { DSelect, DSelectOptions } from "./d-select";
15
14
  import { DDialogSelectSearchFunction } from "./d-dialog-select-search-function";
15
+ import { DButton, DButtonOptions } from "./d-button";
16
16
  export interface DDialogSelectInputOpitons extends DInputSearchOptions {
17
17
  margin?: number;
18
18
  }
@@ -61,13 +61,19 @@ export interface DDialogSelectCategoryOptions<VALUE, CATEGORY_ID> extends DSelec
61
61
  */
62
62
  export interface DDialogSelectOnOptions<VALUE, EMITTER> extends Partial<DDialogSelectEvents<VALUE, EMITTER>>, DOnOptions {
63
63
  }
64
+ /**
65
+ * {@link DDialogSelect} "dismiss" options.
66
+ */
67
+ export interface DDialogSelectDismissableOptions extends DButtonOptions<string> {
68
+ enabled?: boolean;
69
+ }
64
70
  /**
65
71
  * {@link DDialogSelect} options.
66
72
  */
67
73
  export interface DDialogSelectOptions<VALUE, CATEGORY_ID = unknown, THEME extends DThemeDialogSelect<VALUE, CATEGORY_ID> = DThemeDialogSelect<VALUE, CATEGORY_ID>, EMITTER = any> extends DDialogLayeredOptions<VALUE, THEME> {
68
74
  controller?: DDialogSelectController<VALUE, CATEGORY_ID>;
69
75
  category?: DDialogSelectCategoryOptions<VALUE, CATEGORY_ID>;
70
- dismiss?: DDialogSelectSearhDismissableOptions<VALUE, CATEGORY_ID>;
76
+ dismiss?: DDialogSelectDismissableOptions;
71
77
  input?: DDialogSelectInputOpitons;
72
78
  list?: DListOptions<VALUE>;
73
79
  note?: DDialogSelectNoteOptions;
@@ -78,13 +84,13 @@ export interface DDialogSelectOptions<VALUE, CATEGORY_ID = unknown, THEME extend
78
84
  */
79
85
  export interface DThemeDialogSelect<VALUE = unknown, CATEGORY_ID = unknown> extends DThemeDialogLayered {
80
86
  getInputMargin(): number;
87
+ isDismissable(): boolean;
88
+ getDismissLabel(): string;
81
89
  isCategoryDismissable(): boolean;
82
90
  getCategoryDismissLabel(): string;
83
91
  }
84
92
  export declare class DDialogSelect<VALUE = unknown, CATEGORY_ID = unknown, THEME extends DThemeDialogSelect<VALUE, CATEGORY_ID> = DThemeDialogSelect<VALUE, CATEGORY_ID>, OPTIONS extends DDialogSelectOptions<VALUE, CATEGORY_ID, THEME> = DDialogSelectOptions<VALUE, CATEGORY_ID, THEME>> extends DDialogLayered<VALUE | null, THEME, OPTIONS> {
85
93
  protected _value: VALUE | null;
86
- protected _spaceLeft?: DLayoutSpace;
87
- protected _spaceRight?: DLayoutSpace;
88
94
  protected _selectCategory?: DSelect<CATEGORY_ID | null>;
89
95
  protected _isCategoryFetched?: boolean;
90
96
  protected _categories: DDialogSelectCategory<CATEGORY_ID>[];
@@ -95,12 +101,11 @@ export declare class DDialogSelect<VALUE = unknown, CATEGORY_ID = unknown, THEME
95
101
  protected _noteError?: DNote | null;
96
102
  protected _noteNoItemsFound?: DNote | null;
97
103
  protected _noteSearching?: DNote | null;
104
+ protected _buttonDismiss?: DButton<string> | null;
98
105
  constructor(options?: OPTIONS);
99
106
  protected newContentChildren(theme: THEME, options?: OPTIONS): Array<DisplayObject | null>;
100
107
  protected get inputLayout(): DLayoutHorizontal;
101
108
  protected newInputLayout(): DLayoutHorizontal;
102
- protected get spaceLeft(): DLayoutSpace;
103
- protected get spaceRight(): DLayoutSpace;
104
109
  protected newSpace(): DLayoutSpace;
105
110
  protected get selectCategory(): DSelect<CATEGORY_ID | null>;
106
111
  protected newSelectCategory(): DSelect<CATEGORY_ID | null>;
@@ -124,6 +129,9 @@ export declare class DDialogSelect<VALUE = unknown, CATEGORY_ID = unknown, THEME
124
129
  protected toNoteOptions(parent: DBase, options?: DNoteOptions): DNoteOptions;
125
130
  protected get search(): DDialogSelectSearch<VALUE, CATEGORY_ID>;
126
131
  protected newSearch(): DDialogSelectSearch<VALUE, CATEGORY_ID>;
132
+ protected get buttonDismiss(): DButton<string> | null;
133
+ protected newButtonDismiss(): DButton<string> | null;
134
+ protected toButtonDismissOptions(options?: OPTIONS): DDialogSelectDismissableOptions;
127
135
  get value(): VALUE | null;
128
136
  protected onSearched(results: VALUE[]): void;
129
137
  protected getResolvedValue(): VALUE | null | PromiseLike<VALUE | null>;
@@ -11,6 +11,7 @@ import { DDialogMode } from "./d-dialog-mode";
11
11
  import { DOnOptions } from "./d-on-options";
12
12
  import { DPadding } from "./d-padding";
13
13
  import { UtilOverlay } from "./util/util-overlay";
14
+ import { DApplicationTarget } from "./d-application-like";
14
15
  /**
15
16
  * {@link DDialog} events.
16
17
  */
@@ -65,7 +66,7 @@ export interface DThemeDialog extends DThemeBase {
65
66
  getAlign(mode: DDialogMode): DDialogAlign | null;
66
67
  newAnimation(mode: DDialogMode): DAnimation<DBase> | null;
67
68
  }
68
- export interface DDialogOpener {
69
+ export interface DDialogOpener extends DApplicationTarget {
69
70
  getBounds(skipUpdate?: boolean, rect?: PIXI.Rectangle): Rectangle;
70
71
  }
71
72
  /**
@@ -73,8 +74,11 @@ export interface DDialogOpener {
73
74
  *
74
75
  * If multiple application instances are there, better to set the constructor
75
76
  * option `parent` to an `application.stage` so that the dialog picks a right
76
- * application. By default, the dialog assumes the last created application is
77
- * the one it belongs to at the time when it is created.
77
+ * application. `DDialog` searches applications in a following order:
78
+ *
79
+ * * To begin, `DDialog` tries to find applications which it belongs to.
80
+ * * If `DDialog` can't find applications, then `DDialog` tries to find applications which openers belong to.
81
+ * * If openers are not given, `DDialog` assumes the last created application at the very moment `DDialog` is instantiated is the one it belongs to.
78
82
  */
79
83
  export declare class DDialog<VALUE = void, THEME extends DThemeDialog = DThemeDialog, OPTIONS extends DDialogOptions<THEME> = DDialogOptions<THEME>> extends DBase<THEME, OPTIONS> {
80
84
  protected static WORK_BOUNDS?: Rectangle;
@@ -1,4 +1,5 @@
1
1
  import { Rectangle } from "pixi.js";
2
- export interface DMenuOpener {
2
+ import { DApplicationTarget } from "./d-application-like";
3
+ export interface DMenuOpener extends DApplicationTarget {
3
4
  getBounds(skipUpdate?: boolean, result?: Rectangle): Rectangle;
4
5
  }
@@ -293,8 +293,6 @@ export * from "./d-dialog-save-as";
293
293
  export * from "./d-dialog-select-list-item-updater";
294
294
  export * from "./d-dialog-select-list-item";
295
295
  export * from "./d-dialog-select-list";
296
- export * from "./d-dialog-select-search-dismissable-impl";
297
- export * from "./d-dialog-select-search-dismissable";
298
296
  export * from "./d-dialog-select-search-function";
299
297
  export * from "./d-dialog-select-search-impl";
300
298
  export * from "./d-dialog-select-search";
@@ -6,6 +6,8 @@ export declare abstract class DThemeDarkDialogSelect<VALUE> extends DThemeDarkDi
6
6
  getWidth(): DCoordinateSize;
7
7
  getFooter(): DDialogLayeredFooterOptions | undefined | null;
8
8
  getInputMargin(): number;
9
+ isDismissable(): boolean;
10
+ abstract getDismissLabel(): string;
9
11
  isCategoryDismissable(): boolean;
10
12
  abstract getCategoryDismissLabel(): string;
11
13
  }
@@ -1,4 +1,5 @@
1
1
  import { DThemeDarkDialogSelect } from "./d-theme-dark-dialog-select";
2
2
  export declare class DThemeDarkEnUsDialogSelect<VALUE> extends DThemeDarkDialogSelect<VALUE> {
3
+ getDismissLabel(): string;
3
4
  getCategoryDismissLabel(): string;
4
5
  }
@@ -1,4 +1,5 @@
1
1
  import { DThemeDarkDialogSelect } from "./d-theme-dark-dialog-select";
2
2
  export declare class DThemeDarkJaJpDialogSelect<VALUE> extends DThemeDarkDialogSelect<VALUE> {
3
+ getDismissLabel(): string;
3
4
  getCategoryDismissLabel(): string;
4
5
  }
@@ -6,6 +6,8 @@ export declare abstract class DThemeWhiteDialogSelect<VALUE> extends DThemeWhite
6
6
  getWidth(): DCoordinateSize;
7
7
  getFooter(): DDialogLayeredFooterOptions | undefined | null;
8
8
  getInputMargin(): number;
9
+ isDismissable(): boolean;
10
+ abstract getDismissLabel(): string;
9
11
  isCategoryDismissable(): boolean;
10
12
  abstract getCategoryDismissLabel(): string;
11
13
  }
@@ -1,4 +1,5 @@
1
1
  import { DThemeWhiteDialogSelect } from "./d-theme-white-dialog-select";
2
2
  export declare class DThemeWhiteEnUsDialogSelect<VALUE> extends DThemeWhiteDialogSelect<VALUE> {
3
+ getDismissLabel(): string;
3
4
  getCategoryDismissLabel(): string;
4
5
  }
@@ -1,4 +1,5 @@
1
1
  import { DThemeWhiteDialogSelect } from "./d-theme-white-dialog-select";
2
2
  export declare class DThemeWhiteJaJpDialogSelect<VALUE> extends DThemeWhiteDialogSelect<VALUE> {
3
+ getDismissLabel(): string;
3
4
  getCategoryDismissLabel(): string;
4
5
  }
@@ -7,5 +7,5 @@ export declare class UtilOverlay {
7
7
  parent?: unknown;
8
8
  });
9
9
  get picked(): DApplicationLayerLike | null;
10
- pick(target: DApplicationTarget): DApplicationLayerLike;
10
+ pick(owner: DApplicationTarget, opener?: DApplicationTarget): DApplicationLayerLike;
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"d-button-select.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-button-select.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAGH,OAAO,EAAE,OAAO,EAA+C,MAAM,YAAY,CAAC;AAElF,OAAO,EAAE,aAAa,EAAwB,MAAM,mBAAmB,CAAC;AA8ExE,IAAM,aAAa,GAAG,UAAC,MAAgC;IACtD,qCAAqC;IACrC,OAAO,MAAM,CAAC,KAAK,CAAC;AACrB,CAAC,CAAC;AAEF,IAAM,aAAa,GAAG;IACrB,aAAa;AACd,CAAC,CAAC;AAEF;IAaU,iCAAqC;IAK9C,uBAAY,OAAiB;;QAA7B,YACC,kBAAM,OAAO,CAAC,SAGd;QAFA,KAAI,CAAC,aAAa,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,mCAAI,aAAa,CAAC;QACtD,KAAI,CAAC,aAAa,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,mCAAI,aAAa,CAAC;;IACvD,CAAC;IAES,kCAAU,GAApB,UACC,CAA0E;QAD3E,iBAcC;;QAXA,iBAAM,UAAU,YAAC,CAAC,CAAC,CAAC;QACpB,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,kBAAkB,mCAAI,IAAI,CAAC;QACjD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YACtB,IAAM,QAAQ,GAAG,KAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,QAAQ,KAAK,QAAQ,EAAE;gBAC1B,KAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;gBACrB,KAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAI,CAAC,CAAC;aAC9C;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,sBAAI,iCAAM;aAAV;;YACC,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAC1B,IAAI,MAAM,IAAI,IAAI,EAAE;gBACnB,IAAM,OAAO,GAAG,MAAA,IAAI,CAAC,QAAQ,0CAAE,MAAM,CAAC;gBACtC,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,EAAE;oBACjC,MAAM,GAAG,OAAO,CAAC;iBACjB;qBAAM;oBACN,sEAAsE;oBACtE,MAAM,GAAG,IAAI,aAAa,CACzB,OAAO,CACU,CAAC;iBACnB;gBACD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;aACtB;YACD,OAAO,MAAM,CAAC;QACf,CAAC;;;OAAA;IAED,sBAAI,gCAAK;aAAT;;YACC,OAAO,MAAA,IAAI,CAAC,kBAAkB,mCAAI,IAAI,CAAC;QACxC,CAAC;aAED,UAAU,KAAmB;YAC5B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QACnB,CAAC;;;OAJA;IAMS,+BAAO,GAAjB;QACC,OAAO,eAAe,CAAC;IACxB,CAAC;IACF,oBAAC;AAAD,CAAC,AApED,CAaU,OAAO,GAuDhB","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { interaction } from \"pixi.js\";\nimport { DButton, DButtonEvents, DButtonOptions, DThemeButton } from \"./d-button\";\nimport { DDialogOpener } from \"./d-dialog\";\nimport { DDialogSelect, DDialogSelectOptions } from \"./d-dialog-select\";\nimport { DOnOptions } from \"./d-on-options\";\n\n/**\n * A dialog to select values.\n */\nexport interface DButtonSelectDialog<VALUE> {\n\treadonly value: VALUE | null;\n\topen(opener?: DDialogOpener): Promise<unknown>;\n}\n\n/**\n * A function to retrieve a selected value from a dialog.\n */\nexport type DButtonSelectGetter<VALUE, DIALOG> = (dialog: DIALOG) => VALUE | null;\n\n/**\n * A function to set a selecte value to a dialog.\n * Called before opening a dialog.\n */\nexport type DButtonSelectSetter<VALUE, DIALOG> = (dialog: DIALOG, value: VALUE | null) => void;\n\n/**\n * {@link DButtonSelect} events.\n */\nexport interface DButtonSelectEvents<VALUE, EMITTER> extends DButtonEvents<VALUE, EMITTER> {\n\t/**\n\t * Triggered when a selection is changed.\n\t *\n\t * @param newValue a newly selected value\n\t * @param oldValue a previously selected value\n\t * @param emitter an emitter\n\t */\n\tchange(newValue: VALUE | null, oldValue: VALUE | null, emitter: EMITTER): void;\n}\n\n/**\n * {@link DButtonSelect} \"on\" options.\n */\nexport interface DButtonSelectOnOptions<VALUE, EMITTER>\n\textends Partial<DButtonSelectEvents<VALUE, EMITTER>>,\n\t\tDOnOptions {}\n\n/**\n * {@link DButtonSelect} options.\n */\nexport interface DButtonSelectOptions<\n\tVALUE = unknown,\n\tDIALOG_VALUE = unknown,\n\tDIALOG_CATEGORY_ID = unknown,\n\tDIALOG extends DButtonSelectDialog<DIALOG_VALUE> = DButtonSelectDialog<DIALOG_VALUE>,\n\tTHEME extends DThemeButtonSelect<VALUE> = DThemeButtonSelect<VALUE>,\n\tEMITTER = any\n> extends DButtonOptions<VALUE | null, THEME, EMITTER> {\n\t/**\n\t * A function to retrieve a selected value from a dialog.\n\t */\n\tgetter?: DButtonSelectGetter<VALUE, DIALOG>;\n\n\t/**\n\t * A function to set a selected value to a dialog.\n\t * Called before opening a dialog.\n\t */\n\tsetter?: DButtonSelectSetter<VALUE, DIALOG>;\n\n\t/**\n\t * A dialog to select values.\n\t */\n\tdialog?: DDialogSelectOptions<DIALOG_VALUE, DIALOG_CATEGORY_ID> | DIALOG;\n\n\ton?: DButtonSelectOnOptions<VALUE, EMITTER>;\n}\n\n/**\n * {@link DButtonSelect} theme.\n */\nexport interface DThemeButtonSelect<VALUE = unknown> extends DThemeButton<VALUE | null> {}\n\nconst defaultGetter = (dialog: DButtonSelectDialog<any>): any => {\n\t// Assumes the dialog.value is VALUE.\n\treturn dialog.value;\n};\n\nconst defaultSetter = (): void => {\n\t// DO NOTHING\n};\n\nexport class DButtonSelect<\n\tVALUE = unknown,\n\tDIALOG_VALUE = unknown,\n\tDIALOG_CATEGORY_ID = unknown,\n\tDIALOG extends DButtonSelectDialog<DIALOG_VALUE> = DButtonSelectDialog<DIALOG_VALUE>,\n\tTHEME extends DThemeButtonSelect<VALUE> = DThemeButtonSelect<VALUE>,\n\tOPTIONS extends DButtonSelectOptions<\n\t\tVALUE,\n\t\tDIALOG_VALUE,\n\t\tDIALOG_CATEGORY_ID,\n\t\tDIALOG,\n\t\tTHEME\n\t> = DButtonSelectOptions<VALUE, DIALOG_VALUE, DIALOG_CATEGORY_ID, DIALOG, THEME>\n> extends DButton<VALUE | null, THEME, OPTIONS> {\n\tprotected _dialog?: DIALOG;\n\tprotected _dialogGetter: DButtonSelectGetter<VALUE, DIALOG>;\n\tprotected _dialogSetter: DButtonSelectSetter<VALUE, DIALOG>;\n\n\tconstructor(options?: OPTIONS) {\n\t\tsuper(options);\n\t\tthis._dialogGetter = options?.getter ?? defaultGetter;\n\t\tthis._dialogSetter = options?.setter ?? defaultSetter;\n\t}\n\n\tprotected onActivate(\n\t\te?: interaction.InteractionEvent | KeyboardEvent | MouseEvent | TouchEvent\n\t): void {\n\t\tsuper.onActivate(e);\n\t\tconst dialog = this.dialog;\n\t\tconst oldValue = this._textValueComputed ?? null;\n\t\tthis._dialogSetter(dialog, oldValue);\n\t\tdialog.open(this).then((): void => {\n\t\t\tconst newValue = this._dialogGetter(dialog);\n\t\t\tif (newValue !== oldValue) {\n\t\t\t\tthis.text = newValue;\n\t\t\t\tthis.emit(\"change\", newValue, oldValue, this);\n\t\t\t}\n\t\t});\n\t}\n\n\tget dialog(): DIALOG {\n\t\tlet dialog = this._dialog;\n\t\tif (dialog == null) {\n\t\t\tconst options = this._options?.dialog;\n\t\t\tif (options && \"open\" in options) {\n\t\t\t\tdialog = options;\n\t\t\t} else {\n\t\t\t\t// Assumes DIALOG === DDialogSelect<DIALOG_VALUE, DIALOG_CATEGORY_ID>.\n\t\t\t\tdialog = new DDialogSelect<DIALOG_VALUE, DIALOG_CATEGORY_ID>(\n\t\t\t\t\toptions\n\t\t\t\t) as any as DIALOG;\n\t\t\t}\n\t\t\tthis._dialog = dialog;\n\t\t}\n\t\treturn dialog;\n\t}\n\n\tget value(): VALUE | null {\n\t\treturn this._textValueComputed ?? null;\n\t}\n\n\tset value(value: VALUE | null) {\n\t\tthis.text = value;\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DButtonSelect\";\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-button-select.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-button-select.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAGH,OAAO,EAAE,OAAO,EAA+C,MAAM,YAAY,CAAC;AAElF,OAAO,EAAE,aAAa,EAAwB,MAAM,mBAAmB,CAAC;AA8ExE,IAAM,aAAa,GAAG,UAAC,MAAgC;IACtD,qCAAqC;IACrC,OAAO,MAAM,CAAC,KAAK,CAAC;AACrB,CAAC,CAAC;AAEF,IAAM,aAAa,GAAG;IACrB,aAAa;AACd,CAAC,CAAC;AAEF;IAaU,iCAAqC;IAK9C,uBAAY,OAAiB;;QAA7B,YACC,kBAAM,OAAO,CAAC,SAGd;QAFA,KAAI,CAAC,aAAa,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,mCAAI,aAAa,CAAC;QACtD,KAAI,CAAC,aAAa,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,mCAAI,aAAa,CAAC;;IACvD,CAAC;IAES,kCAAU,GAApB,UACC,CAA0E;QAD3E,iBAcC;;QAXA,iBAAM,UAAU,YAAC,CAAC,CAAC,CAAC;QACpB,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,kBAAkB,mCAAI,IAAI,CAAC;QACjD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YACtB,IAAM,QAAQ,GAAG,KAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,QAAQ,KAAK,QAAQ,EAAE;gBAC1B,KAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;gBACrB,KAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAI,CAAC,CAAC;aAC9C;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,sBAAI,iCAAM;aAAV;;YACC,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAC1B,IAAI,MAAM,IAAI,IAAI,EAAE;gBACnB,IAAM,OAAO,GAAG,MAAA,IAAI,CAAC,QAAQ,0CAAE,MAAM,CAAC;gBACtC,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,EAAE;oBACjC,MAAM,GAAG,OAAO,CAAC;iBACjB;qBAAM;oBACN,sEAAsE;oBACtE,MAAM,GAAG,IAAI,aAAa,CACzB,OAAO,CACU,CAAC;iBACnB;gBACD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;aACtB;YACD,OAAO,MAAM,CAAC;QACf,CAAC;;;OAAA;IAED,sBAAI,gCAAK;aAAT;;YACC,OAAO,MAAA,IAAI,CAAC,kBAAkB,mCAAI,IAAI,CAAC;QACxC,CAAC;aAED,UAAU,KAAmB;YAC5B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QACnB,CAAC;;;OAJA;IAMS,+BAAO,GAAjB;QACC,OAAO,eAAe,CAAC;IACxB,CAAC;IACF,oBAAC;AAAD,CAAC,AApED,CAaU,OAAO,GAuDhB","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { interaction } from \"pixi.js\";\nimport { DButton, DButtonEvents, DButtonOptions, DThemeButton } from \"./d-button\";\nimport { DDialogOpener } from \"./d-dialog\";\nimport { DDialogSelect, DDialogSelectOptions } from \"./d-dialog-select\";\nimport { DOnOptions } from \"./d-on-options\";\n\n/**\n * A dialog to select values.\n */\nexport interface DButtonSelectDialog<VALUE> {\n\tvalue: VALUE | null;\n\topen(opener?: DDialogOpener): Promise<unknown>;\n}\n\n/**\n * A function to retrieve a selected value from a dialog.\n */\nexport type DButtonSelectGetter<VALUE, DIALOG> = (dialog: DIALOG) => VALUE | null;\n\n/**\n * A function to set a selecte value to a dialog.\n * Called before opening a dialog.\n */\nexport type DButtonSelectSetter<VALUE, DIALOG> = (dialog: DIALOG, value: VALUE | null) => void;\n\n/**\n * {@link DButtonSelect} events.\n */\nexport interface DButtonSelectEvents<VALUE, EMITTER> extends DButtonEvents<VALUE, EMITTER> {\n\t/**\n\t * Triggered when a selection is changed.\n\t *\n\t * @param newValue a newly selected value\n\t * @param oldValue a previously selected value\n\t * @param emitter an emitter\n\t */\n\tchange(newValue: VALUE | null, oldValue: VALUE | null, emitter: EMITTER): void;\n}\n\n/**\n * {@link DButtonSelect} \"on\" options.\n */\nexport interface DButtonSelectOnOptions<VALUE, EMITTER>\n\textends Partial<DButtonSelectEvents<VALUE, EMITTER>>,\n\t\tDOnOptions {}\n\n/**\n * {@link DButtonSelect} options.\n */\nexport interface DButtonSelectOptions<\n\tVALUE = unknown,\n\tDIALOG_VALUE = unknown,\n\tDIALOG_CATEGORY_ID = unknown,\n\tDIALOG extends DButtonSelectDialog<DIALOG_VALUE> = DButtonSelectDialog<DIALOG_VALUE>,\n\tTHEME extends DThemeButtonSelect<VALUE> = DThemeButtonSelect<VALUE>,\n\tEMITTER = any\n> extends DButtonOptions<VALUE | null, THEME, EMITTER> {\n\t/**\n\t * A function to retrieve a selected value from a dialog.\n\t */\n\tgetter?: DButtonSelectGetter<VALUE, DIALOG>;\n\n\t/**\n\t * A function to set a selected value to a dialog.\n\t * Called before opening a dialog.\n\t */\n\tsetter?: DButtonSelectSetter<VALUE, DIALOG>;\n\n\t/**\n\t * A dialog to select values.\n\t */\n\tdialog?: DDialogSelectOptions<DIALOG_VALUE, DIALOG_CATEGORY_ID> | DIALOG;\n\n\ton?: DButtonSelectOnOptions<VALUE, EMITTER>;\n}\n\n/**\n * {@link DButtonSelect} theme.\n */\nexport interface DThemeButtonSelect<VALUE = unknown> extends DThemeButton<VALUE | null> {}\n\nconst defaultGetter = (dialog: DButtonSelectDialog<any>): any => {\n\t// Assumes the dialog.value is VALUE.\n\treturn dialog.value;\n};\n\nconst defaultSetter = (): void => {\n\t// DO NOTHING\n};\n\nexport class DButtonSelect<\n\tVALUE = unknown,\n\tDIALOG_VALUE = unknown,\n\tDIALOG_CATEGORY_ID = unknown,\n\tDIALOG extends DButtonSelectDialog<DIALOG_VALUE> = DButtonSelectDialog<DIALOG_VALUE>,\n\tTHEME extends DThemeButtonSelect<VALUE> = DThemeButtonSelect<VALUE>,\n\tOPTIONS extends DButtonSelectOptions<\n\t\tVALUE,\n\t\tDIALOG_VALUE,\n\t\tDIALOG_CATEGORY_ID,\n\t\tDIALOG,\n\t\tTHEME\n\t> = DButtonSelectOptions<VALUE, DIALOG_VALUE, DIALOG_CATEGORY_ID, DIALOG, THEME>\n> extends DButton<VALUE | null, THEME, OPTIONS> {\n\tprotected _dialog?: DIALOG;\n\tprotected _dialogGetter: DButtonSelectGetter<VALUE, DIALOG>;\n\tprotected _dialogSetter: DButtonSelectSetter<VALUE, DIALOG>;\n\n\tconstructor(options?: OPTIONS) {\n\t\tsuper(options);\n\t\tthis._dialogGetter = options?.getter ?? defaultGetter;\n\t\tthis._dialogSetter = options?.setter ?? defaultSetter;\n\t}\n\n\tprotected onActivate(\n\t\te?: interaction.InteractionEvent | KeyboardEvent | MouseEvent | TouchEvent\n\t): void {\n\t\tsuper.onActivate(e);\n\t\tconst dialog = this.dialog;\n\t\tconst oldValue = this._textValueComputed ?? null;\n\t\tthis._dialogSetter(dialog, oldValue);\n\t\tdialog.open(this).then((): void => {\n\t\t\tconst newValue = this._dialogGetter(dialog);\n\t\t\tif (newValue !== oldValue) {\n\t\t\t\tthis.text = newValue;\n\t\t\t\tthis.emit(\"change\", newValue, oldValue, this);\n\t\t\t}\n\t\t});\n\t}\n\n\tget dialog(): DIALOG {\n\t\tlet dialog = this._dialog;\n\t\tif (dialog == null) {\n\t\t\tconst options = this._options?.dialog;\n\t\t\tif (options && \"open\" in options) {\n\t\t\t\tdialog = options;\n\t\t\t} else {\n\t\t\t\t// Assumes DIALOG === DDialogSelect<DIALOG_VALUE, DIALOG_CATEGORY_ID>.\n\t\t\t\tdialog = new DDialogSelect<DIALOG_VALUE, DIALOG_CATEGORY_ID>(\n\t\t\t\t\toptions\n\t\t\t\t) as any as DIALOG;\n\t\t\t}\n\t\t\tthis._dialog = dialog;\n\t\t}\n\t\treturn dialog;\n\t}\n\n\tget value(): VALUE | null {\n\t\treturn this._textValueComputed ?? null;\n\t}\n\n\tset value(value: VALUE | null) {\n\t\tthis.text = value;\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DButtonSelect\";\n\t}\n}\n"]}
@@ -13,9 +13,9 @@ import { DNoteSmallError } from "./d-note-small-error";
13
13
  import { DNoteSmallNoItemsFound } from "./d-note-small-no-items-found";
14
14
  import { DNoteSmallSearching } from "./d-note-small-searching";
15
15
  import { UtilTransition } from "./util/util-transition";
16
- import { DDialogSelectSearhDismissableImpl } from "./d-dialog-select-search-dismissable-impl";
17
16
  import { DSelect } from "./d-select";
18
17
  import { DMenu } from "./d-menu";
18
+ import { DButton } from "./d-button";
19
19
  var DDialogSelect = /** @class */ (function (_super) {
20
20
  __extends(DDialogSelect, _super);
21
21
  function DDialogSelect(options) {
@@ -57,17 +57,13 @@ var DDialogSelect = /** @class */ (function (_super) {
57
57
  }
58
58
  DDialogSelect.prototype.newContentChildren = function (theme, options) {
59
59
  var result = _super.prototype.newContentChildren.call(this, theme, options);
60
- result.push(this.inputLayout, this.list);
60
+ result.push(this.inputLayout, this.list, this.buttonDismiss);
61
61
  return result;
62
62
  };
63
63
  Object.defineProperty(DDialogSelect.prototype, "inputLayout", {
64
64
  get: function () {
65
- var result = this._inputLayout;
66
- if (result == null) {
67
- result = this.newInputLayout();
68
- this._inputLayout = result;
69
- }
70
- return result;
65
+ var _a;
66
+ return ((_a = this._inputLayout) !== null && _a !== void 0 ? _a : (this._inputLayout = this.newInputLayout()));
71
67
  },
72
68
  enumerable: false,
73
69
  configurable: true
@@ -76,33 +72,9 @@ var DDialogSelect = /** @class */ (function (_super) {
76
72
  return new DLayoutHorizontal({
77
73
  width: "padding",
78
74
  height: "auto",
79
- children: [this.spaceLeft, this.selectCategory, this.input, this.spaceRight]
75
+ children: [this.selectCategory, this.input]
80
76
  });
81
77
  };
82
- Object.defineProperty(DDialogSelect.prototype, "spaceLeft", {
83
- get: function () {
84
- var result = this._spaceLeft;
85
- if (result == null) {
86
- result = this.newSpace();
87
- this._spaceLeft = result;
88
- }
89
- return result;
90
- },
91
- enumerable: false,
92
- configurable: true
93
- });
94
- Object.defineProperty(DDialogSelect.prototype, "spaceRight", {
95
- get: function () {
96
- var result = this._spaceRight;
97
- if (result == null) {
98
- result = this.newSpace();
99
- this._spaceRight = result;
100
- }
101
- return result;
102
- },
103
- enumerable: false,
104
- configurable: true
105
- });
106
78
  DDialogSelect.prototype.newSpace = function () {
107
79
  return new DLayoutSpace({
108
80
  width: this.toInputMargin(this.theme, this._options)
@@ -110,12 +82,8 @@ var DDialogSelect = /** @class */ (function (_super) {
110
82
  };
111
83
  Object.defineProperty(DDialogSelect.prototype, "selectCategory", {
112
84
  get: function () {
113
- var result = this._selectCategory;
114
- if (result == null) {
115
- result = this.newSelectCategory();
116
- this._selectCategory = result;
117
- }
118
- return result;
85
+ var _a;
86
+ return ((_a = this._selectCategory) !== null && _a !== void 0 ? _a : (this._selectCategory = this.newSelectCategory()));
119
87
  },
120
88
  enumerable: false,
121
89
  configurable: true
@@ -143,12 +111,8 @@ var DDialogSelect = /** @class */ (function (_super) {
143
111
  };
144
112
  Object.defineProperty(DDialogSelect.prototype, "input", {
145
113
  get: function () {
146
- var result = this._input;
147
- if (result == null) {
148
- result = this.newInput();
149
- this._input = result;
150
- }
151
- return result;
114
+ var _a;
115
+ return ((_a = this._input) !== null && _a !== void 0 ? _a : (this._input = this.newInput()));
152
116
  },
153
117
  enumerable: false,
154
118
  configurable: true
@@ -182,12 +146,8 @@ var DDialogSelect = /** @class */ (function (_super) {
182
146
  };
183
147
  Object.defineProperty(DDialogSelect.prototype, "list", {
184
148
  get: function () {
185
- var result = this._list;
186
- if (result == null) {
187
- result = this.newList();
188
- this._list = result;
189
- }
190
- return result;
149
+ var _a;
150
+ return ((_a = this._list) !== null && _a !== void 0 ? _a : (this._list = this.newList()));
191
151
  },
192
152
  enumerable: false,
193
153
  configurable: true
@@ -205,15 +165,6 @@ var DDialogSelect = /** @class */ (function (_super) {
205
165
  if (selected == null) {
206
166
  return;
207
167
  }
208
- var options = this._options;
209
- if (options) {
210
- var dismiss = options.dismiss;
211
- if (dismiss) {
212
- if (selected === dismiss.value) {
213
- selected = null;
214
- }
215
- }
216
- }
217
168
  this._value = selected;
218
169
  this.onOk(selected);
219
170
  };
@@ -226,12 +177,8 @@ var DDialogSelect = /** @class */ (function (_super) {
226
177
  };
227
178
  Object.defineProperty(DDialogSelect.prototype, "noteError", {
228
179
  get: function () {
229
- var result = this._noteError;
230
- if (result == null) {
231
- result = this.newNoteError();
232
- this._noteError = result;
233
- }
234
- return result;
180
+ var _a;
181
+ return ((_a = this._noteError) !== null && _a !== void 0 ? _a : (this._noteError = this.newNoteError()));
235
182
  },
236
183
  enumerable: false,
237
184
  configurable: true
@@ -246,12 +193,8 @@ var DDialogSelect = /** @class */ (function (_super) {
246
193
  };
247
194
  Object.defineProperty(DDialogSelect.prototype, "noteNoItemsFound", {
248
195
  get: function () {
249
- var result = this._noteNoItemsFound;
250
- if (result == null) {
251
- result = this.newNoteNoItemsFound();
252
- this._noteNoItemsFound = result;
253
- }
254
- return result;
196
+ var _a;
197
+ return ((_a = this._noteNoItemsFound) !== null && _a !== void 0 ? _a : (this._noteNoItemsFound = this.newNoteNoItemsFound()));
255
198
  },
256
199
  enumerable: false,
257
200
  configurable: true
@@ -266,12 +209,8 @@ var DDialogSelect = /** @class */ (function (_super) {
266
209
  };
267
210
  Object.defineProperty(DDialogSelect.prototype, "noteSearching", {
268
211
  get: function () {
269
- var result = this._noteSearching;
270
- if (result == null) {
271
- result = this.newNoteSearching();
272
- this._noteSearching = result;
273
- }
274
- return result;
212
+ var _a;
213
+ return ((_a = this._noteSearching) !== null && _a !== void 0 ? _a : (this._noteSearching = this.newNoteSearching()));
275
214
  },
276
215
  enumerable: false,
277
216
  configurable: true
@@ -304,12 +243,8 @@ var DDialogSelect = /** @class */ (function (_super) {
304
243
  };
305
244
  Object.defineProperty(DDialogSelect.prototype, "search", {
306
245
  get: function () {
307
- var result = this._search;
308
- if (result == null) {
309
- result = this.newSearch();
310
- this._search = result;
311
- }
312
- return result;
246
+ var _a;
247
+ return ((_a = this._search) !== null && _a !== void 0 ? _a : (this._search = this.newSearch()));
313
248
  },
314
249
  enumerable: false,
315
250
  configurable: true
@@ -319,28 +254,73 @@ var DDialogSelect = /** @class */ (function (_super) {
319
254
  if (options) {
320
255
  var controller = options.controller;
321
256
  if (controller) {
322
- var dismiss = options.dismiss;
323
257
  var search = controller.search;
324
258
  if ("create" in search) {
325
- if (dismiss != null) {
326
- return new DDialogSelectSearhDismissableImpl(search, dismiss);
327
- }
328
- else {
329
- return search;
330
- }
259
+ return search;
331
260
  }
332
261
  else {
333
- if (dismiss != null) {
334
- return new DDialogSelectSearhDismissableImpl(new DDialogSelectSearhImpl(search), dismiss);
335
- }
336
- else {
337
- return new DDialogSelectSearhImpl(search);
338
- }
262
+ return new DDialogSelectSearhImpl(search);
339
263
  }
340
264
  }
341
265
  }
342
266
  return new DDialogSelectSearhImpl();
343
267
  };
268
+ Object.defineProperty(DDialogSelect.prototype, "buttonDismiss", {
269
+ get: function () {
270
+ var result = this._buttonDismiss;
271
+ if (result === undefined) {
272
+ result = this.newButtonDismiss();
273
+ this._buttonDismiss = result;
274
+ }
275
+ return result;
276
+ },
277
+ enumerable: false,
278
+ configurable: true
279
+ });
280
+ DDialogSelect.prototype.newButtonDismiss = function () {
281
+ var _this = this;
282
+ var options = this.toButtonDismissOptions(this._options);
283
+ if (options.enabled === true) {
284
+ var result = new DButton(options);
285
+ result.on("active", function () {
286
+ _this._value = null;
287
+ _this.onOk(null);
288
+ });
289
+ return result;
290
+ }
291
+ return null;
292
+ };
293
+ DDialogSelect.prototype.toButtonDismissOptions = function (options) {
294
+ var theme = this.theme;
295
+ if (options != null) {
296
+ var dismiss = options.dismiss;
297
+ if (dismiss != null) {
298
+ if (dismiss.enabled === undefined) {
299
+ dismiss.enabled = theme.isDismissable();
300
+ }
301
+ if (dismiss.weight === undefined && dismiss.width === undefined) {
302
+ dismiss.width = "padding";
303
+ }
304
+ var text = dismiss.text;
305
+ if (text === undefined) {
306
+ dismiss.text = {
307
+ value: theme.getDismissLabel()
308
+ };
309
+ }
310
+ else if (text.value === undefined) {
311
+ text.value = theme.getDismissLabel();
312
+ }
313
+ return dismiss;
314
+ }
315
+ }
316
+ return {
317
+ width: "padding",
318
+ enabled: theme.isDismissable(),
319
+ text: {
320
+ value: theme.getDismissLabel()
321
+ }
322
+ };
323
+ };
344
324
  Object.defineProperty(DDialogSelect.prototype, "value", {
345
325
  get: function () {
346
326
  return this._value;
@@ -1 +1 @@
1
- {"version":3,"file":"d-dialog-select.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dialog-select.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 } from \"pixi.js\";\nimport { DBase } from \"./d-base\";\nimport {\n\tDDialogLayered,\n\tDDialogLayeredEvents,\n\tDDialogLayeredOptions,\n\tDThemeDialogLayered\n} from \"./d-dialog-layered\";\nimport { DDialogSelectList, DDialogSelectListOptions } from \"./d-dialog-select-list\";\nimport { DDialogSelectSearhImpl } from \"./d-dialog-select-search-impl\";\nimport { DInputSearch, DInputSearchOptions } from \"./d-input-search\";\nimport { DLayoutHorizontal } from \"./d-layout-horizontal\";\nimport { DLayoutSpace } from \"./d-layout-space\";\nimport { DListOptions } from \"./d-list\";\nimport { DListDataSelection } from \"./d-list-data-selection\";\nimport { DNote, DNoteOptions } from \"./d-note\";\nimport { DNoteSmallError } from \"./d-note-small-error\";\nimport { DNoteSmallNoItemsFound } from \"./d-note-small-no-items-found\";\nimport { DNoteSmallSearching } from \"./d-note-small-searching\";\nimport { DOnOptions } from \"./d-on-options\";\nimport { UtilTransition } from \"./util/util-transition\";\nimport { DDialogSelectSearch } from \"./d-dialog-select-search\";\nimport { DDialogSelectSearhDismissableOptions } from \"./d-dialog-select-search-dismissable\";\nimport { DDialogSelectSearhDismissableImpl } from \"./d-dialog-select-search-dismissable-impl\";\nimport { DSelect, DSelectOptions } from \"./d-select\";\nimport { DMenu } from \"./d-menu\";\nimport { DDialogSelectSearchFunction } from \"./d-dialog-select-search-function\";\n\nexport interface DDialogSelectInputOpitons extends DInputSearchOptions {\n\tmargin?: number;\n}\n\n/**\n * {@link DDialogSelect} controller.\n */\nexport interface DDialogSelectController<VALUE, CATEGORY_ID = unknown> {\n\tsearch:\n\t\t| DDialogSelectSearch<VALUE, CATEGORY_ID>\n\t\t| DDialogSelectSearchFunction<VALUE, CATEGORY_ID>;\n}\n\n/**\n * {@link DDialogSelect} note options.\n */\nexport interface DDialogSelectNoteOptions {\n\terror?: DNoteOptions | null;\n\tnoItemsFound?: DNoteOptions | null;\n\tsearching?: DNoteOptions | null;\n}\n\nexport type DDialogSelectItemToLabel<VALUE> = (result: VALUE, caller: any) => string;\n\nexport type DDialogSelectItemIsEqual<VALUE> = (a: VALUE, b: VALUE, caller: any) => boolean;\n\n/**\n * {@link DDialogSelect} events.\n */\nexport interface DDialogSelectEvents<VALUE, EMITTER> extends DDialogLayeredEvents<VALUE, EMITTER> {\n\tselect(value: VALUE, self: EMITTER): void;\n}\n\n/**\n * {@link DDialogSelect} category dismiss options.\n */\nexport interface DDialogSelectCategoryDismissOptions {\n\tenable?: boolean;\n\tlabel?: string;\n}\n\nexport interface DDialogSelectCategory<CATEGORY_ID> {\n\tid: CATEGORY_ID;\n\tlabel: string;\n}\n\n/**\n * {@link DDialogSelect} category options.\n */\nexport interface DDialogSelectCategoryOptions<VALUE, CATEGORY_ID>\n\textends DSelectOptions<CATEGORY_ID | null> {\n\tdismiss?: DDialogSelectCategoryDismissOptions;\n\titems?: DDialogSelectCategory<CATEGORY_ID>[];\n}\n\n/**\n * {@link DDialogSelect} \"on\" options.\n */\nexport interface DDialogSelectOnOptions<VALUE, EMITTER>\n\textends Partial<DDialogSelectEvents<VALUE, EMITTER>>,\n\t\tDOnOptions {}\n\n/**\n * {@link DDialogSelect} options.\n */\nexport interface DDialogSelectOptions<\n\tVALUE,\n\tCATEGORY_ID = unknown,\n\tTHEME extends DThemeDialogSelect<VALUE, CATEGORY_ID> = DThemeDialogSelect<VALUE, CATEGORY_ID>,\n\tEMITTER = any\n> extends DDialogLayeredOptions<VALUE, THEME> {\n\tcontroller?: DDialogSelectController<VALUE, CATEGORY_ID>;\n\tcategory?: DDialogSelectCategoryOptions<VALUE, CATEGORY_ID>;\n\tdismiss?: DDialogSelectSearhDismissableOptions<VALUE, CATEGORY_ID>;\n\tinput?: DDialogSelectInputOpitons;\n\tlist?: DListOptions<VALUE>;\n\tnote?: DDialogSelectNoteOptions;\n\ton?: DDialogSelectOnOptions<VALUE, EMITTER>;\n}\n\n/**\n * {@link DDialogSelect} theme.\n */\nexport interface DThemeDialogSelect<VALUE = unknown, CATEGORY_ID = unknown>\n\textends DThemeDialogLayered {\n\tgetInputMargin(): number;\n\tisCategoryDismissable(): boolean;\n\tgetCategoryDismissLabel(): string;\n}\n\nexport class DDialogSelect<\n\tVALUE = unknown,\n\tCATEGORY_ID = unknown,\n\tTHEME extends DThemeDialogSelect<VALUE, CATEGORY_ID> = DThemeDialogSelect<VALUE, CATEGORY_ID>,\n\tOPTIONS extends DDialogSelectOptions<VALUE, CATEGORY_ID, THEME> = DDialogSelectOptions<\n\t\tVALUE,\n\t\tCATEGORY_ID,\n\t\tTHEME\n\t>\n> extends DDialogLayered<VALUE | null, THEME, OPTIONS> {\n\tprotected _value: VALUE | null;\n\tprotected _spaceLeft?: DLayoutSpace;\n\tprotected _spaceRight?: DLayoutSpace;\n\tprotected _selectCategory?: DSelect<CATEGORY_ID | null>;\n\tprotected _isCategoryFetched?: boolean;\n\tprotected _categories: DDialogSelectCategory<CATEGORY_ID>[];\n\tprotected _input?: DInputSearch;\n\tprotected _inputLayout?: DLayoutHorizontal;\n\tprotected _list?: DDialogSelectList<VALUE>;\n\tprotected _search?: DDialogSelectSearch<VALUE, CATEGORY_ID>;\n\tprotected _noteError?: DNote | null;\n\tprotected _noteNoItemsFound?: DNote | null;\n\tprotected _noteSearching?: DNote | null;\n\n\tconstructor(options?: OPTIONS) {\n\t\tsuper(options);\n\n\t\t// Value\n\t\tthis._value = null;\n\n\t\t// Categories\n\t\tconst categories = options?.category?.items ?? [];\n\t\tthis._categories = categories;\n\t\tif (0 < categories.length) {\n\t\t\tthis.onCategoriesChange(categories);\n\t\t}\n\n\t\t// Controller binding\n\t\tconst transition = new UtilTransition();\n\t\tconst search = this.search;\n\t\tsearch.on(\"success\", (e: unknown, results: VALUE[]): void => {\n\t\t\tif (0 < results.length) {\n\t\t\t\ttransition.hide();\n\t\t\t} else {\n\t\t\t\ttransition.show(this.noteNoItemsFound);\n\t\t\t}\n\t\t\tthis.onSearched(results);\n\t\t});\n\t\tsearch.on(\"fail\", (): void => {\n\t\t\ttransition.show(this.noteError);\n\t\t\tthis.onSearched([]);\n\t\t});\n\t\tsearch.on(\"change\", (): void => {\n\t\t\tif (!search.isDone()) {\n\t\t\t\tconst noteSearching = this.noteSearching;\n\t\t\t\tif (noteSearching) {\n\t\t\t\t\ttransition.show(noteSearching);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected newContentChildren(theme: THEME, options?: OPTIONS): Array<DisplayObject | null> {\n\t\tconst result = super.newContentChildren(theme, options);\n\t\tresult.push(this.inputLayout, this.list);\n\t\treturn result;\n\t}\n\n\tprotected get inputLayout(): DLayoutHorizontal {\n\t\tlet result = this._inputLayout;\n\t\tif (result == null) {\n\t\t\tresult = this.newInputLayout();\n\t\t\tthis._inputLayout = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected newInputLayout(): DLayoutHorizontal {\n\t\treturn new DLayoutHorizontal({\n\t\t\twidth: \"padding\",\n\t\t\theight: \"auto\",\n\t\t\tchildren: [this.spaceLeft, this.selectCategory, this.input, this.spaceRight]\n\t\t});\n\t}\n\n\tprotected get spaceLeft(): DLayoutSpace {\n\t\tlet result = this._spaceLeft;\n\t\tif (result == null) {\n\t\t\tresult = this.newSpace();\n\t\t\tthis._spaceLeft = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected get spaceRight(): DLayoutSpace {\n\t\tlet result = this._spaceRight;\n\t\tif (result == null) {\n\t\t\tresult = this.newSpace();\n\t\t\tthis._spaceRight = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected newSpace(): DLayoutSpace {\n\t\treturn new DLayoutSpace({\n\t\t\twidth: this.toInputMargin(this.theme, this._options)\n\t\t});\n\t}\n\n\tprotected get selectCategory(): DSelect<CATEGORY_ID | null> {\n\t\tlet result = this._selectCategory;\n\t\tif (result == null) {\n\t\t\tresult = this.newSelectCategory();\n\t\t\tthis._selectCategory = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected newSelectCategory(): DSelect<CATEGORY_ID | null> {\n\t\tconst result = new DSelect<CATEGORY_ID | null>(\n\t\t\tthis.toSelectCategoryOptions(this.theme, this._options)\n\t\t);\n\t\tresult.on(\"change\", (value: CATEGORY_ID) => {\n\t\t\tthis.onSelectCategoryChange(value);\n\t\t});\n\t\treturn result;\n\t}\n\n\tprotected toSelectCategoryOptions(\n\t\ttheme: THEME,\n\t\toptions?: OPTIONS\n\t): DSelectOptions<CATEGORY_ID | null> {\n\t\tconst result = options?.category || {};\n\t\tif (result.width === undefined && result.weight === undefined) {\n\t\t\tresult.width = 140;\n\t\t}\n\t\tif (result.visible === undefined) {\n\t\t\tresult.visible = false;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected onSelectCategoryChange(categoryId: CATEGORY_ID): void {\n\t\tthis.search.create([this.input.value, categoryId]);\n\t}\n\n\tget input(): DInputSearch {\n\t\tlet result = this._input;\n\t\tif (result == null) {\n\t\t\tresult = this.newInput();\n\t\t\tthis._input = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected newInput(): DInputSearch {\n\t\tconst result = new DInputSearch(this.toInputOptions(this.theme, this._options));\n\t\tresult.on(\"input\", (value: string): void => {\n\t\t\tthis.onInputInput(value);\n\t\t});\n\t\treturn result;\n\t}\n\n\tprotected toInputOptions(theme: THEME, options?: OPTIONS): DInputSearchOptions {\n\t\tconst result = options?.input || {};\n\t\tif (result.width === undefined && result.weight === undefined) {\n\t\t\tresult.weight = 1;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected toInputMargin(theme: THEME, options?: OPTIONS): number {\n\t\treturn options?.input?.margin ?? theme.getInputMargin();\n\t}\n\n\tprotected onInputInput(value: string): void {\n\t\tif (0 < this._categories.length) {\n\t\t\tthis.search.create([value, this.selectCategory.value]);\n\t\t} else {\n\t\t\tthis.search.create([value]);\n\t\t}\n\t}\n\n\tget list(): DDialogSelectList<VALUE> {\n\t\tlet result = this._list;\n\t\tif (result == null) {\n\t\t\tresult = this.newList();\n\t\t\tthis._list = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected newList(): DDialogSelectList<VALUE> {\n\t\tconst result = new DDialogSelectList<VALUE>(this.toListOptions(this.theme, this._options));\n\t\tresult.selection.on(\"change\", (selection: DListDataSelection<VALUE>): void => {\n\t\t\tthis.onListSelectionChange(selection);\n\t\t});\n\t\treturn result;\n\t}\n\n\tprotected onListSelectionChange(selection: DListDataSelection<VALUE>): void {\n\t\tlet selected = selection.first;\n\t\tif (selected == null) {\n\t\t\treturn;\n\t\t}\n\t\tconst options = this._options;\n\t\tif (options) {\n\t\t\tconst dismiss = options.dismiss;\n\t\t\tif (dismiss) {\n\t\t\t\tif (selected === dismiss.value) {\n\t\t\t\t\tselected = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis._value = selected;\n\t\tthis.onOk(selected);\n\t}\n\n\tprotected toListOptions(theme: THEME, options?: OPTIONS): DDialogSelectListOptions<VALUE> {\n\t\tconst result = options?.list || {};\n\t\tif (result.width === undefined) {\n\t\t\tresult.width = \"padding\";\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected get noteError(): DNote | null {\n\t\tlet result = this._noteError;\n\t\tif (result == null) {\n\t\t\tresult = this.newNoteError();\n\t\t\tthis._noteError = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected newNoteError(): DNote | null {\n\t\tconst error = this._options?.note?.error;\n\t\tif (error !== null) {\n\t\t\treturn new DNoteSmallError(this.toNoteOptions(this.list, error));\n\t\t}\n\t\treturn null;\n\t}\n\n\tprotected get noteNoItemsFound(): DNote | null {\n\t\tlet result = this._noteNoItemsFound;\n\t\tif (result == null) {\n\t\t\tresult = this.newNoteNoItemsFound();\n\t\t\tthis._noteNoItemsFound = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected newNoteNoItemsFound(): DNote | null {\n\t\tconst noItemsFound = this._options?.note?.noItemsFound;\n\t\tif (noItemsFound !== null) {\n\t\t\treturn new DNoteSmallNoItemsFound(this.toNoteOptions(this.list, noItemsFound));\n\t\t}\n\t\treturn null;\n\t}\n\n\tprotected get noteSearching(): DNote | null {\n\t\tlet result = this._noteSearching;\n\t\tif (result == null) {\n\t\t\tresult = this.newNoteSearching();\n\t\t\tthis._noteSearching = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected newNoteSearching(): DNote | null {\n\t\tconst searching = this._options?.note?.searching;\n\t\t// Because the `searching` note is disabled by default,\n\t\t// if options.searching is missing, i.e., if its value is undefined,\n\t\t// this method returns null. This is why `!=` is used here instead of `!==`.\n\t\tif (searching != null) {\n\t\t\treturn new DNoteSmallSearching(this.toNoteOptions(this.list, searching));\n\t\t}\n\t\treturn null;\n\t}\n\n\tprotected toNoteOptions(parent: DBase, options?: DNoteOptions): DNoteOptions {\n\t\tif (options != null) {\n\t\t\tif (options.parent == null) {\n\t\t\t\toptions.parent = parent;\n\t\t\t}\n\t\t\tif (options.visible == null) {\n\t\t\t\toptions.visible = false;\n\t\t\t}\n\t\t\treturn options;\n\t\t}\n\t\treturn {\n\t\t\tparent,\n\t\t\tvisible: false\n\t\t};\n\t}\n\n\tprotected get search(): DDialogSelectSearch<VALUE, CATEGORY_ID> {\n\t\tlet result = this._search;\n\t\tif (result == null) {\n\t\t\tresult = this.newSearch();\n\t\t\tthis._search = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected newSearch(): DDialogSelectSearch<VALUE, CATEGORY_ID> {\n\t\tconst options = this._options;\n\t\tif (options) {\n\t\t\tconst controller = options.controller;\n\t\t\tif (controller) {\n\t\t\t\tconst dismiss = options.dismiss;\n\t\t\t\tconst search = controller.search;\n\t\t\t\tif (\"create\" in search) {\n\t\t\t\t\tif (dismiss != null) {\n\t\t\t\t\t\treturn new DDialogSelectSearhDismissableImpl(search, dismiss);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn search;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (dismiss != null) {\n\t\t\t\t\t\treturn new DDialogSelectSearhDismissableImpl(\n\t\t\t\t\t\t\tnew DDialogSelectSearhImpl(search),\n\t\t\t\t\t\t\tdismiss\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn new DDialogSelectSearhImpl(search);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn new DDialogSelectSearhImpl();\n\t}\n\n\tget value(): VALUE | null {\n\t\treturn this._value;\n\t}\n\n\tprotected onSearched(results: VALUE[]): void {\n\t\tthis.list.data.items = results;\n\t}\n\n\tprotected getResolvedValue(): VALUE | null | PromiseLike<VALUE | null> {\n\t\treturn this._value;\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DDialogSelect\";\n\t}\n\n\tprotected onOpen(): void {\n\t\tsuper.onOpen();\n\t\tthis.list.selection.clear();\n\t\tif (0 < this._categories.length) {\n\t\t\tthis.search.create([this.input.value, this.selectCategory.value]);\n\t\t} else {\n\t\t\tthis.search.create([this.input.value]);\n\t\t}\n\t}\n\n\tget categories(): DDialogSelectCategory<CATEGORY_ID>[] {\n\t\treturn this._categories;\n\t}\n\n\tset categories(categories: DDialogSelectCategory<CATEGORY_ID>[]) {\n\t\tthis._categories = categories;\n\t\tthis.onCategoriesChange(categories);\n\t}\n\n\tprotected onCategoriesChange(categories: DDialogSelectCategory<CATEGORY_ID>[]): void {\n\t\tconst selectCategory = this.selectCategory;\n\t\tif (0 < categories.length) {\n\t\t\tconst items = [];\n\t\t\tconst theme = this.theme;\n\t\t\tconst options = this.options?.category?.dismiss ?? {};\n\t\t\tif (options.enable ?? theme.isCategoryDismissable()) {\n\t\t\t\titems.push({\n\t\t\t\t\tvalue: null,\n\t\t\t\t\ttext: {\n\t\t\t\t\t\tvalue: options.label ?? theme.getCategoryDismissLabel()\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tfor (let i = 0, imax = categories.length; i < imax; ++i) {\n\t\t\t\tconst category = categories[i];\n\t\t\t\titems.push({\n\t\t\t\t\tvalue: category.id,\n\t\t\t\t\ttext: {\n\t\t\t\t\t\tvalue: category.label\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tselectCategory.menu = new DMenu<CATEGORY_ID | null>({\n\t\t\t\tfit: true,\n\t\t\t\titems\n\t\t\t});\n\t\t\tselectCategory.show();\n\t\t} else {\n\t\t\tselectCategory.hide();\n\t\t}\n\t}\n\n\tprotected onOk(value: VALUE | null | PromiseLike<VALUE | null>): void {\n\t\tthis.emit(\"select\", value, this);\n\t\tsuper.onOk(value);\n\t}\n\n\tdestroy(): void {\n\t\tconst input = this._input;\n\t\tif (input) {\n\t\t\tinput.destroy();\n\t\t}\n\t\tconst noteError = this._noteError;\n\t\tif (noteError) {\n\t\t\tnoteError.destroy();\n\t\t}\n\t\tconst noteNoItemsFound = this._noteNoItemsFound;\n\t\tif (noteNoItemsFound) {\n\t\t\tnoteNoItemsFound?.destroy();\n\t\t}\n\t\tconst noteSearching = this._noteSearching;\n\t\tif (noteSearching) {\n\t\t\tnoteSearching?.destroy();\n\t\t}\n\t\tconst list = this._list;\n\t\tif (list) {\n\t\t\tlist.destroy();\n\t\t}\n\t\tsuper.destroy();\n\t}\n}\n"]}
1
+ {"version":3,"file":"d-dialog-select.js","sourceRoot":"","sources":["../../../src/main/typescript/wcardinal/ui/d-dialog-select.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAIH,OAAO,EACN,cAAc,EAId,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAA4B,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAuB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIhD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,OAAO,EAAkB,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,OAAO,EAAE,OAAO,EAAkB,MAAM,YAAY,CAAC;AAqGrD;IASU,iCAA4C;IAcrD,uBAAY,OAAiB;;QAA7B,YACC,kBAAM,OAAO,CAAC,SAmCd;QAjCA,QAAQ;QACR,KAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,aAAa;QACb,IAAM,UAAU,GAAG,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,0CAAE,KAAK,mCAAI,EAAE,CAAC;QAClD,KAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE;YAC1B,KAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;SACpC;QAED,qBAAqB;QACrB,IAAM,UAAU,GAAG,IAAI,cAAc,EAAE,CAAC;QACxC,IAAM,MAAM,GAAG,KAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,CAAU,EAAE,OAAgB;YACjD,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE;gBACvB,UAAU,CAAC,IAAI,EAAE,CAAC;aAClB;iBAAM;gBACN,UAAU,CAAC,IAAI,CAAC,KAAI,CAAC,gBAAgB,CAAC,CAAC;aACvC;YACD,KAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE;YACjB,UAAU,CAAC,IAAI,CAAC,KAAI,CAAC,SAAS,CAAC,CAAC;YAChC,KAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;YACnB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;gBACrB,IAAM,aAAa,GAAG,KAAI,CAAC,aAAa,CAAC;gBACzC,IAAI,aAAa,EAAE;oBAClB,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBAC/B;aACD;QACF,CAAC,CAAC,CAAC;;IACJ,CAAC;IAES,0CAAkB,GAA5B,UAA6B,KAAY,EAAE,OAAiB;QAC3D,IAAM,MAAM,GAAG,iBAAM,kBAAkB,YAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC;IACf,CAAC;IAED,sBAAc,sCAAW;aAAzB;;YACC,OAAO,OAAC,IAAI,CAAC,YAAY,oCAAjB,IAAI,CAAC,YAAY,GAAK,IAAI,CAAC,cAAc,EAAE,EAAC,CAAC;QACtD,CAAC;;;OAAA;IAES,sCAAc,GAAxB;QACC,OAAO,IAAI,iBAAiB,CAAC;YAC5B,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC;SAC3C,CAAC,CAAC;IACJ,CAAC;IAES,gCAAQ,GAAlB;QACC,OAAO,IAAI,YAAY,CAAC;YACvB,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;SACpD,CAAC,CAAC;IACJ,CAAC;IAED,sBAAc,yCAAc;aAA5B;;YACC,OAAO,OAAC,IAAI,CAAC,eAAe,oCAApB,IAAI,CAAC,eAAe,GAAK,IAAI,CAAC,iBAAiB,EAAE,EAAC,CAAC;QAC5D,CAAC;;;OAAA;IAES,yCAAiB,GAA3B;QAAA,iBAQC;QAPA,IAAM,MAAM,GAAG,IAAI,OAAO,CACzB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CACvD,CAAC;QACF,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAC,KAAkB;YACtC,KAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IACf,CAAC;IAES,+CAAuB,GAAjC,UACC,KAAY,EACZ,OAAiB;QAEjB,IAAM,MAAM,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,KAAI,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;YAC9D,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;SACnB;QACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE;YACjC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;SACvB;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAES,8CAAsB,GAAhC,UAAiC,UAAuB;QACvD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,sBAAI,gCAAK;aAAT;;YACC,OAAO,OAAC,IAAI,CAAC,MAAM,oCAAX,IAAI,CAAC,MAAM,GAAK,IAAI,CAAC,QAAQ,EAAE,EAAC,CAAC;QAC1C,CAAC;;;OAAA;IAES,gCAAQ,GAAlB;QAAA,iBAMC;QALA,IAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,KAAa;YAChC,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IACf,CAAC;IAES,sCAAc,GAAxB,UAAyB,KAAY,EAAE,OAAiB;QACvD,IAAM,MAAM,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,KAAI,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;YAC9D,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;SAClB;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAES,qCAAa,GAAvB,UAAwB,KAAY,EAAE,OAAiB;;QACtD,OAAO,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,MAAM,mCAAI,KAAK,CAAC,cAAc,EAAE,CAAC;IACzD,CAAC;IAES,oCAAY,GAAtB,UAAuB,KAAa;QACnC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YAChC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;SACvD;aAAM;YACN,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;SAC5B;IACF,CAAC;IAED,sBAAI,+BAAI;aAAR;;YACC,OAAO,OAAC,IAAI,CAAC,KAAK,oCAAV,IAAI,CAAC,KAAK,GAAK,IAAI,CAAC,OAAO,EAAE,EAAC,CAAC;QACxC,CAAC;;;OAAA;IAES,+BAAO,GAAjB;QAAA,iBAMC;QALA,IAAM,MAAM,GAAG,IAAI,iBAAiB,CAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3F,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAC,SAAoC;YAClE,KAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IACf,CAAC;IAES,6CAAqB,GAA/B,UAAgC,SAAoC;QACnE,IAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC;QACjC,IAAI,QAAQ,IAAI,IAAI,EAAE;YACrB,OAAO;SACP;QACD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC;IAES,qCAAa,GAAvB,UAAwB,KAAY,EAAE,OAAiB;QACtD,IAAM,MAAM,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,KAAI,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC/B,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;SACzB;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,sBAAc,oCAAS;aAAvB;;YACC,OAAO,OAAC,IAAI,CAAC,UAAU,oCAAf,IAAI,CAAC,UAAU,GAAK,IAAI,CAAC,YAAY,EAAE,EAAC,CAAC;QAClD,CAAC;;;OAAA;IAES,oCAAY,GAAtB;;QACC,IAAM,KAAK,GAAG,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,0CAAE,KAAK,CAAC;QACzC,IAAI,KAAK,KAAK,IAAI,EAAE;YACnB,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;SACjE;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,sBAAc,2CAAgB;aAA9B;;YACC,OAAO,OAAC,IAAI,CAAC,iBAAiB,oCAAtB,IAAI,CAAC,iBAAiB,GAAK,IAAI,CAAC,mBAAmB,EAAE,EAAC,CAAC;QAChE,CAAC;;;OAAA;IAES,2CAAmB,GAA7B;;QACC,IAAM,YAAY,GAAG,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,0CAAE,YAAY,CAAC;QACvD,IAAI,YAAY,KAAK,IAAI,EAAE;YAC1B,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;SAC/E;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,sBAAc,wCAAa;aAA3B;;YACC,OAAO,OAAC,IAAI,CAAC,cAAc,oCAAnB,IAAI,CAAC,cAAc,GAAK,IAAI,CAAC,gBAAgB,EAAE,EAAC,CAAC;QAC1D,CAAC;;;OAAA;IAES,wCAAgB,GAA1B;;QACC,IAAM,SAAS,GAAG,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,0CAAE,SAAS,CAAC;QACjD,uDAAuD;QACvD,oEAAoE;QACpE,4EAA4E;QAC5E,IAAI,SAAS,IAAI,IAAI,EAAE;YACtB,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;SACzE;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAES,qCAAa,GAAvB,UAAwB,MAAa,EAAE,OAAsB;QAC5D,IAAI,OAAO,IAAI,IAAI,EAAE;YACpB,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE;gBAC3B,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;aACxB;YACD,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,EAAE;gBAC5B,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;aACxB;YACD,OAAO,OAAO,CAAC;SACf;QACD,OAAO;YACN,MAAM,QAAA;YACN,OAAO,EAAE,KAAK;SACd,CAAC;IACH,CAAC;IAED,sBAAc,iCAAM;aAApB;;YACC,OAAO,OAAC,IAAI,CAAC,OAAO,oCAAZ,IAAI,CAAC,OAAO,GAAK,IAAI,CAAC,SAAS,EAAE,EAAC,CAAC;QAC5C,CAAC;;;OAAA;IAES,iCAAS,GAAnB;QACC,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,OAAO,EAAE;YACZ,IAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACtC,IAAI,UAAU,EAAE;gBACf,IAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;gBACjC,IAAI,QAAQ,IAAI,MAAM,EAAE;oBACvB,OAAO,MAAM,CAAC;iBACd;qBAAM;oBACN,OAAO,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC;iBAC1C;aACD;SACD;QACD,OAAO,IAAI,sBAAsB,EAAE,CAAC;IACrC,CAAC;IAED,sBAAc,wCAAa;aAA3B;YACC,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC;YACjC,IAAI,MAAM,KAAK,SAAS,EAAE;gBACzB,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACjC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;aAC7B;YACD,OAAO,MAAM,CAAC;QACf,CAAC;;;OAAA;IAES,wCAAgB,GAA1B;QAAA,iBAWC;QAVA,IAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE;YAC7B,IAAM,MAAM,GAAG,IAAI,OAAO,CAAS,OAAO,CAAC,CAAC;YAC5C,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;gBACnB,KAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAES,8CAAsB,GAAhC,UAAiC,OAAiB;QACjD,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,OAAO,IAAI,IAAI,EAAE;YACpB,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAChC,IAAI,OAAO,IAAI,IAAI,EAAE;gBACpB,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;oBAClC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;iBACxC;gBACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE;oBAChE,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;iBAC1B;gBACD,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBAC1B,IAAI,IAAI,KAAK,SAAS,EAAE;oBACvB,OAAO,CAAC,IAAI,GAAG;wBACd,KAAK,EAAE,KAAK,CAAC,eAAe,EAAE;qBAC9B,CAAC;iBACF;qBAAM,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;oBACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;iBACrC;gBACD,OAAO,OAAO,CAAC;aACf;SACD;QACD,OAAO;YACN,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,KAAK,CAAC,aAAa,EAAE;YAC9B,IAAI,EAAE;gBACL,KAAK,EAAE,KAAK,CAAC,eAAe,EAAE;aAC9B;SACD,CAAC;IACH,CAAC;IAED,sBAAI,gCAAK;aAAT;YACC,OAAO,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;;;OAAA;IAES,kCAAU,GAApB,UAAqB,OAAgB;QACpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;IAChC,CAAC;IAES,wCAAgB,GAA1B;QACC,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAES,+BAAO,GAAjB;QACC,OAAO,eAAe,CAAC;IACxB,CAAC;IAES,8BAAM,GAAhB;QACC,iBAAM,MAAM,WAAE,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YAChC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;SAClE;aAAM;YACN,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;SACvC;IACF,CAAC;IAED,sBAAI,qCAAU;aAAd;YACC,OAAO,IAAI,CAAC,WAAW,CAAC;QACzB,CAAC;aAED,UAAe,UAAgD;YAC9D,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;YAC9B,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;;;OALA;IAOS,0CAAkB,GAA5B,UAA6B,UAAgD;;QAC5E,IAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC3C,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE;YAC1B,IAAM,KAAK,GAAG,EAAE,CAAC;YACjB,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,IAAM,OAAO,GAAG,MAAA,MAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,QAAQ,0CAAE,OAAO,mCAAI,EAAE,CAAC;YACtD,IAAI,MAAA,OAAO,CAAC,MAAM,mCAAI,KAAK,CAAC,qBAAqB,EAAE,EAAE;gBACpD,KAAK,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,IAAI;oBACX,IAAI,EAAE;wBACL,KAAK,EAAE,MAAA,OAAO,CAAC,KAAK,mCAAI,KAAK,CAAC,uBAAuB,EAAE;qBACvD;iBACD,CAAC,CAAC;aACH;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;gBACxD,IAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,QAAQ,CAAC,EAAE;oBAClB,IAAI,EAAE;wBACL,KAAK,EAAE,QAAQ,CAAC,KAAK;qBACrB;iBACD,CAAC,CAAC;aACH;YACD,cAAc,CAAC,IAAI,GAAG,IAAI,KAAK,CAAqB;gBACnD,GAAG,EAAE,IAAI;gBACT,KAAK,OAAA;aACL,CAAC,CAAC;YACH,cAAc,CAAC,IAAI,EAAE,CAAC;SACtB;aAAM;YACN,cAAc,CAAC,IAAI,EAAE,CAAC;SACtB;IACF,CAAC;IAES,4BAAI,GAAd,UAAe,KAA+C;QAC7D,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACjC,iBAAM,IAAI,YAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAED,+BAAO,GAAP;QACC,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,KAAK,EAAE;YACV,KAAK,CAAC,OAAO,EAAE,CAAC;SAChB;QACD,IAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,SAAS,EAAE;YACd,SAAS,CAAC,OAAO,EAAE,CAAC;SACpB;QACD,IAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAChD,IAAI,gBAAgB,EAAE;YACrB,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,OAAO,EAAE,CAAC;SAC5B;QACD,IAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,aAAa,EAAE;YAClB,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,EAAE,CAAC;SACzB;QACD,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,IAAI,EAAE;YACT,IAAI,CAAC,OAAO,EAAE,CAAC;SACf;QACD,iBAAM,OAAO,WAAE,CAAC;IACjB,CAAC;IACF,oBAAC;AAAD,CAAC,AAlZD,CASU,cAAc,GAyYvB","sourcesContent":["/*\n * Copyright (C) 2019 Toshiba Corporation\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { DisplayObject } from \"pixi.js\";\nimport { DBase } from \"./d-base\";\nimport {\n\tDDialogLayered,\n\tDDialogLayeredEvents,\n\tDDialogLayeredOptions,\n\tDThemeDialogLayered\n} from \"./d-dialog-layered\";\nimport { DDialogSelectList, DDialogSelectListOptions } from \"./d-dialog-select-list\";\nimport { DDialogSelectSearhImpl } from \"./d-dialog-select-search-impl\";\nimport { DInputSearch, DInputSearchOptions } from \"./d-input-search\";\nimport { DLayoutHorizontal } from \"./d-layout-horizontal\";\nimport { DLayoutSpace } from \"./d-layout-space\";\nimport { DListOptions } from \"./d-list\";\nimport { DListDataSelection } from \"./d-list-data-selection\";\nimport { DNote, DNoteOptions } from \"./d-note\";\nimport { DNoteSmallError } from \"./d-note-small-error\";\nimport { DNoteSmallNoItemsFound } from \"./d-note-small-no-items-found\";\nimport { DNoteSmallSearching } from \"./d-note-small-searching\";\nimport { DOnOptions } from \"./d-on-options\";\nimport { UtilTransition } from \"./util/util-transition\";\nimport { DDialogSelectSearch } from \"./d-dialog-select-search\";\nimport { DSelect, DSelectOptions } from \"./d-select\";\nimport { DMenu } from \"./d-menu\";\nimport { DDialogSelectSearchFunction } from \"./d-dialog-select-search-function\";\nimport { DButton, DButtonOptions } from \"./d-button\";\n\nexport interface DDialogSelectInputOpitons extends DInputSearchOptions {\n\tmargin?: number;\n}\n\n/**\n * {@link DDialogSelect} controller.\n */\nexport interface DDialogSelectController<VALUE, CATEGORY_ID = unknown> {\n\tsearch:\n\t\t| DDialogSelectSearch<VALUE, CATEGORY_ID>\n\t\t| DDialogSelectSearchFunction<VALUE, CATEGORY_ID>;\n}\n\n/**\n * {@link DDialogSelect} note options.\n */\nexport interface DDialogSelectNoteOptions {\n\terror?: DNoteOptions | null;\n\tnoItemsFound?: DNoteOptions | null;\n\tsearching?: DNoteOptions | null;\n}\n\nexport type DDialogSelectItemToLabel<VALUE> = (result: VALUE, caller: any) => string;\n\nexport type DDialogSelectItemIsEqual<VALUE> = (a: VALUE, b: VALUE, caller: any) => boolean;\n\n/**\n * {@link DDialogSelect} events.\n */\nexport interface DDialogSelectEvents<VALUE, EMITTER> extends DDialogLayeredEvents<VALUE, EMITTER> {\n\tselect(value: VALUE, self: EMITTER): void;\n}\n\n/**\n * {@link DDialogSelect} category dismiss options.\n */\nexport interface DDialogSelectCategoryDismissOptions {\n\tenable?: boolean;\n\tlabel?: string;\n}\n\nexport interface DDialogSelectCategory<CATEGORY_ID> {\n\tid: CATEGORY_ID;\n\tlabel: string;\n}\n\n/**\n * {@link DDialogSelect} category options.\n */\nexport interface DDialogSelectCategoryOptions<VALUE, CATEGORY_ID>\n\textends DSelectOptions<CATEGORY_ID | null> {\n\tdismiss?: DDialogSelectCategoryDismissOptions;\n\titems?: DDialogSelectCategory<CATEGORY_ID>[];\n}\n\n/**\n * {@link DDialogSelect} \"on\" options.\n */\nexport interface DDialogSelectOnOptions<VALUE, EMITTER>\n\textends Partial<DDialogSelectEvents<VALUE, EMITTER>>,\n\t\tDOnOptions {}\n\n/**\n * {@link DDialogSelect} \"dismiss\" options.\n */\nexport interface DDialogSelectDismissableOptions extends DButtonOptions<string> {\n\tenabled?: boolean;\n}\n\n/**\n * {@link DDialogSelect} options.\n */\nexport interface DDialogSelectOptions<\n\tVALUE,\n\tCATEGORY_ID = unknown,\n\tTHEME extends DThemeDialogSelect<VALUE, CATEGORY_ID> = DThemeDialogSelect<VALUE, CATEGORY_ID>,\n\tEMITTER = any\n> extends DDialogLayeredOptions<VALUE, THEME> {\n\tcontroller?: DDialogSelectController<VALUE, CATEGORY_ID>;\n\tcategory?: DDialogSelectCategoryOptions<VALUE, CATEGORY_ID>;\n\tdismiss?: DDialogSelectDismissableOptions;\n\tinput?: DDialogSelectInputOpitons;\n\tlist?: DListOptions<VALUE>;\n\tnote?: DDialogSelectNoteOptions;\n\ton?: DDialogSelectOnOptions<VALUE, EMITTER>;\n}\n\n/**\n * {@link DDialogSelect} theme.\n */\nexport interface DThemeDialogSelect<VALUE = unknown, CATEGORY_ID = unknown>\n\textends DThemeDialogLayered {\n\tgetInputMargin(): number;\n\tisDismissable(): boolean;\n\tgetDismissLabel(): string;\n\tisCategoryDismissable(): boolean;\n\tgetCategoryDismissLabel(): string;\n}\n\nexport class DDialogSelect<\n\tVALUE = unknown,\n\tCATEGORY_ID = unknown,\n\tTHEME extends DThemeDialogSelect<VALUE, CATEGORY_ID> = DThemeDialogSelect<VALUE, CATEGORY_ID>,\n\tOPTIONS extends DDialogSelectOptions<VALUE, CATEGORY_ID, THEME> = DDialogSelectOptions<\n\t\tVALUE,\n\t\tCATEGORY_ID,\n\t\tTHEME\n\t>\n> extends DDialogLayered<VALUE | null, THEME, OPTIONS> {\n\tprotected _value: VALUE | null;\n\tprotected _selectCategory?: DSelect<CATEGORY_ID | null>;\n\tprotected _isCategoryFetched?: boolean;\n\tprotected _categories: DDialogSelectCategory<CATEGORY_ID>[];\n\tprotected _input?: DInputSearch;\n\tprotected _inputLayout?: DLayoutHorizontal;\n\tprotected _list?: DDialogSelectList<VALUE>;\n\tprotected _search?: DDialogSelectSearch<VALUE, CATEGORY_ID>;\n\tprotected _noteError?: DNote | null;\n\tprotected _noteNoItemsFound?: DNote | null;\n\tprotected _noteSearching?: DNote | null;\n\tprotected _buttonDismiss?: DButton<string> | null;\n\n\tconstructor(options?: OPTIONS) {\n\t\tsuper(options);\n\n\t\t// Value\n\t\tthis._value = null;\n\n\t\t// Categories\n\t\tconst categories = options?.category?.items ?? [];\n\t\tthis._categories = categories;\n\t\tif (0 < categories.length) {\n\t\t\tthis.onCategoriesChange(categories);\n\t\t}\n\n\t\t// Controller binding\n\t\tconst transition = new UtilTransition();\n\t\tconst search = this.search;\n\t\tsearch.on(\"success\", (e: unknown, results: VALUE[]): void => {\n\t\t\tif (0 < results.length) {\n\t\t\t\ttransition.hide();\n\t\t\t} else {\n\t\t\t\ttransition.show(this.noteNoItemsFound);\n\t\t\t}\n\t\t\tthis.onSearched(results);\n\t\t});\n\t\tsearch.on(\"fail\", (): void => {\n\t\t\ttransition.show(this.noteError);\n\t\t\tthis.onSearched([]);\n\t\t});\n\t\tsearch.on(\"change\", (): void => {\n\t\t\tif (!search.isDone()) {\n\t\t\t\tconst noteSearching = this.noteSearching;\n\t\t\t\tif (noteSearching) {\n\t\t\t\t\ttransition.show(noteSearching);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected newContentChildren(theme: THEME, options?: OPTIONS): Array<DisplayObject | null> {\n\t\tconst result = super.newContentChildren(theme, options);\n\t\tresult.push(this.inputLayout, this.list, this.buttonDismiss);\n\t\treturn result;\n\t}\n\n\tprotected get inputLayout(): DLayoutHorizontal {\n\t\treturn (this._inputLayout ??= this.newInputLayout());\n\t}\n\n\tprotected newInputLayout(): DLayoutHorizontal {\n\t\treturn new DLayoutHorizontal({\n\t\t\twidth: \"padding\",\n\t\t\theight: \"auto\",\n\t\t\tchildren: [this.selectCategory, this.input]\n\t\t});\n\t}\n\n\tprotected newSpace(): DLayoutSpace {\n\t\treturn new DLayoutSpace({\n\t\t\twidth: this.toInputMargin(this.theme, this._options)\n\t\t});\n\t}\n\n\tprotected get selectCategory(): DSelect<CATEGORY_ID | null> {\n\t\treturn (this._selectCategory ??= this.newSelectCategory());\n\t}\n\n\tprotected newSelectCategory(): DSelect<CATEGORY_ID | null> {\n\t\tconst result = new DSelect<CATEGORY_ID | null>(\n\t\t\tthis.toSelectCategoryOptions(this.theme, this._options)\n\t\t);\n\t\tresult.on(\"change\", (value: CATEGORY_ID) => {\n\t\t\tthis.onSelectCategoryChange(value);\n\t\t});\n\t\treturn result;\n\t}\n\n\tprotected toSelectCategoryOptions(\n\t\ttheme: THEME,\n\t\toptions?: OPTIONS\n\t): DSelectOptions<CATEGORY_ID | null> {\n\t\tconst result = options?.category || {};\n\t\tif (result.width === undefined && result.weight === undefined) {\n\t\t\tresult.width = 140;\n\t\t}\n\t\tif (result.visible === undefined) {\n\t\t\tresult.visible = false;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected onSelectCategoryChange(categoryId: CATEGORY_ID): void {\n\t\tthis.search.create([this.input.value, categoryId]);\n\t}\n\n\tget input(): DInputSearch {\n\t\treturn (this._input ??= this.newInput());\n\t}\n\n\tprotected newInput(): DInputSearch {\n\t\tconst result = new DInputSearch(this.toInputOptions(this.theme, this._options));\n\t\tresult.on(\"input\", (value: string): void => {\n\t\t\tthis.onInputInput(value);\n\t\t});\n\t\treturn result;\n\t}\n\n\tprotected toInputOptions(theme: THEME, options?: OPTIONS): DInputSearchOptions {\n\t\tconst result = options?.input || {};\n\t\tif (result.width === undefined && result.weight === undefined) {\n\t\t\tresult.weight = 1;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected toInputMargin(theme: THEME, options?: OPTIONS): number {\n\t\treturn options?.input?.margin ?? theme.getInputMargin();\n\t}\n\n\tprotected onInputInput(value: string): void {\n\t\tif (0 < this._categories.length) {\n\t\t\tthis.search.create([value, this.selectCategory.value]);\n\t\t} else {\n\t\t\tthis.search.create([value]);\n\t\t}\n\t}\n\n\tget list(): DDialogSelectList<VALUE> {\n\t\treturn (this._list ??= this.newList());\n\t}\n\n\tprotected newList(): DDialogSelectList<VALUE> {\n\t\tconst result = new DDialogSelectList<VALUE>(this.toListOptions(this.theme, this._options));\n\t\tresult.selection.on(\"change\", (selection: DListDataSelection<VALUE>): void => {\n\t\t\tthis.onListSelectionChange(selection);\n\t\t});\n\t\treturn result;\n\t}\n\n\tprotected onListSelectionChange(selection: DListDataSelection<VALUE>): void {\n\t\tconst selected = selection.first;\n\t\tif (selected == null) {\n\t\t\treturn;\n\t\t}\n\t\tthis._value = selected;\n\t\tthis.onOk(selected);\n\t}\n\n\tprotected toListOptions(theme: THEME, options?: OPTIONS): DDialogSelectListOptions<VALUE> {\n\t\tconst result = options?.list || {};\n\t\tif (result.width === undefined) {\n\t\t\tresult.width = \"padding\";\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected get noteError(): DNote | null {\n\t\treturn (this._noteError ??= this.newNoteError());\n\t}\n\n\tprotected newNoteError(): DNote | null {\n\t\tconst error = this._options?.note?.error;\n\t\tif (error !== null) {\n\t\t\treturn new DNoteSmallError(this.toNoteOptions(this.list, error));\n\t\t}\n\t\treturn null;\n\t}\n\n\tprotected get noteNoItemsFound(): DNote | null {\n\t\treturn (this._noteNoItemsFound ??= this.newNoteNoItemsFound());\n\t}\n\n\tprotected newNoteNoItemsFound(): DNote | null {\n\t\tconst noItemsFound = this._options?.note?.noItemsFound;\n\t\tif (noItemsFound !== null) {\n\t\t\treturn new DNoteSmallNoItemsFound(this.toNoteOptions(this.list, noItemsFound));\n\t\t}\n\t\treturn null;\n\t}\n\n\tprotected get noteSearching(): DNote | null {\n\t\treturn (this._noteSearching ??= this.newNoteSearching());\n\t}\n\n\tprotected newNoteSearching(): DNote | null {\n\t\tconst searching = this._options?.note?.searching;\n\t\t// Because the `searching` note is disabled by default,\n\t\t// if options.searching is missing, i.e., if its value is undefined,\n\t\t// this method returns null. This is why `!=` is used here instead of `!==`.\n\t\tif (searching != null) {\n\t\t\treturn new DNoteSmallSearching(this.toNoteOptions(this.list, searching));\n\t\t}\n\t\treturn null;\n\t}\n\n\tprotected toNoteOptions(parent: DBase, options?: DNoteOptions): DNoteOptions {\n\t\tif (options != null) {\n\t\t\tif (options.parent == null) {\n\t\t\t\toptions.parent = parent;\n\t\t\t}\n\t\t\tif (options.visible == null) {\n\t\t\t\toptions.visible = false;\n\t\t\t}\n\t\t\treturn options;\n\t\t}\n\t\treturn {\n\t\t\tparent,\n\t\t\tvisible: false\n\t\t};\n\t}\n\n\tprotected get search(): DDialogSelectSearch<VALUE, CATEGORY_ID> {\n\t\treturn (this._search ??= this.newSearch());\n\t}\n\n\tprotected newSearch(): DDialogSelectSearch<VALUE, CATEGORY_ID> {\n\t\tconst options = this._options;\n\t\tif (options) {\n\t\t\tconst controller = options.controller;\n\t\t\tif (controller) {\n\t\t\t\tconst search = controller.search;\n\t\t\t\tif (\"create\" in search) {\n\t\t\t\t\treturn search;\n\t\t\t\t} else {\n\t\t\t\t\treturn new DDialogSelectSearhImpl(search);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn new DDialogSelectSearhImpl();\n\t}\n\n\tprotected get buttonDismiss(): DButton<string> | null {\n\t\tlet result = this._buttonDismiss;\n\t\tif (result === undefined) {\n\t\t\tresult = this.newButtonDismiss();\n\t\t\tthis._buttonDismiss = result;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected newButtonDismiss(): DButton<string> | null {\n\t\tconst options = this.toButtonDismissOptions(this._options);\n\t\tif (options.enabled === true) {\n\t\t\tconst result = new DButton<string>(options);\n\t\t\tresult.on(\"active\", () => {\n\t\t\t\tthis._value = null;\n\t\t\t\tthis.onOk(null);\n\t\t\t});\n\t\t\treturn result;\n\t\t}\n\t\treturn null;\n\t}\n\n\tprotected toButtonDismissOptions(options?: OPTIONS): DDialogSelectDismissableOptions {\n\t\tconst theme = this.theme;\n\t\tif (options != null) {\n\t\t\tconst dismiss = options.dismiss;\n\t\t\tif (dismiss != null) {\n\t\t\t\tif (dismiss.enabled === undefined) {\n\t\t\t\t\tdismiss.enabled = theme.isDismissable();\n\t\t\t\t}\n\t\t\t\tif (dismiss.weight === undefined && dismiss.width === undefined) {\n\t\t\t\t\tdismiss.width = \"padding\";\n\t\t\t\t}\n\t\t\t\tconst text = dismiss.text;\n\t\t\t\tif (text === undefined) {\n\t\t\t\t\tdismiss.text = {\n\t\t\t\t\t\tvalue: theme.getDismissLabel()\n\t\t\t\t\t};\n\t\t\t\t} else if (text.value === undefined) {\n\t\t\t\t\ttext.value = theme.getDismissLabel();\n\t\t\t\t}\n\t\t\t\treturn dismiss;\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\twidth: \"padding\",\n\t\t\tenabled: theme.isDismissable(),\n\t\t\ttext: {\n\t\t\t\tvalue: theme.getDismissLabel()\n\t\t\t}\n\t\t};\n\t}\n\n\tget value(): VALUE | null {\n\t\treturn this._value;\n\t}\n\n\tprotected onSearched(results: VALUE[]): void {\n\t\tthis.list.data.items = results;\n\t}\n\n\tprotected getResolvedValue(): VALUE | null | PromiseLike<VALUE | null> {\n\t\treturn this._value;\n\t}\n\n\tprotected getType(): string {\n\t\treturn \"DDialogSelect\";\n\t}\n\n\tprotected onOpen(): void {\n\t\tsuper.onOpen();\n\t\tthis.list.selection.clear();\n\t\tif (0 < this._categories.length) {\n\t\t\tthis.search.create([this.input.value, this.selectCategory.value]);\n\t\t} else {\n\t\t\tthis.search.create([this.input.value]);\n\t\t}\n\t}\n\n\tget categories(): DDialogSelectCategory<CATEGORY_ID>[] {\n\t\treturn this._categories;\n\t}\n\n\tset categories(categories: DDialogSelectCategory<CATEGORY_ID>[]) {\n\t\tthis._categories = categories;\n\t\tthis.onCategoriesChange(categories);\n\t}\n\n\tprotected onCategoriesChange(categories: DDialogSelectCategory<CATEGORY_ID>[]): void {\n\t\tconst selectCategory = this.selectCategory;\n\t\tif (0 < categories.length) {\n\t\t\tconst items = [];\n\t\t\tconst theme = this.theme;\n\t\t\tconst options = this.options?.category?.dismiss ?? {};\n\t\t\tif (options.enable ?? theme.isCategoryDismissable()) {\n\t\t\t\titems.push({\n\t\t\t\t\tvalue: null,\n\t\t\t\t\ttext: {\n\t\t\t\t\t\tvalue: options.label ?? theme.getCategoryDismissLabel()\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tfor (let i = 0, imax = categories.length; i < imax; ++i) {\n\t\t\t\tconst category = categories[i];\n\t\t\t\titems.push({\n\t\t\t\t\tvalue: category.id,\n\t\t\t\t\ttext: {\n\t\t\t\t\t\tvalue: category.label\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tselectCategory.menu = new DMenu<CATEGORY_ID | null>({\n\t\t\t\tfit: true,\n\t\t\t\titems\n\t\t\t});\n\t\t\tselectCategory.show();\n\t\t} else {\n\t\t\tselectCategory.hide();\n\t\t}\n\t}\n\n\tprotected onOk(value: VALUE | null | PromiseLike<VALUE | null>): void {\n\t\tthis.emit(\"select\", value, this);\n\t\tsuper.onOk(value);\n\t}\n\n\tdestroy(): void {\n\t\tconst input = this._input;\n\t\tif (input) {\n\t\t\tinput.destroy();\n\t\t}\n\t\tconst noteError = this._noteError;\n\t\tif (noteError) {\n\t\t\tnoteError.destroy();\n\t\t}\n\t\tconst noteNoItemsFound = this._noteNoItemsFound;\n\t\tif (noteNoItemsFound) {\n\t\t\tnoteNoItemsFound?.destroy();\n\t\t}\n\t\tconst noteSearching = this._noteSearching;\n\t\tif (noteSearching) {\n\t\t\tnoteSearching?.destroy();\n\t\t}\n\t\tconst list = this._list;\n\t\tif (list) {\n\t\t\tlist.destroy();\n\t\t}\n\t\tsuper.destroy();\n\t}\n}\n"]}