@ts-core/angular 15.0.59 → 17.0.9

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 (239) hide show
  1. package/asset/AssetBackgroundDirective.d.ts +1 -1
  2. package/cookie/CookieService.d.ts +1 -3
  3. package/directive/AspectRatioResizeDirective.d.ts +1 -1
  4. package/directive/AutoScrollBottomDirective.d.ts +1 -1
  5. package/directive/ClickToCopyDirective.d.ts +1 -1
  6. package/directive/FocusDirective.d.ts +1 -1
  7. package/directive/HTMLContentTitleDirective.d.ts +1 -1
  8. package/directive/HTMLTitleDirective.d.ts +1 -1
  9. package/directive/InfiniteScrollDirective.d.ts +1 -1
  10. package/directive/ResizeDirective.d.ts +1 -1
  11. package/directive/ScrollCheckDirective.d.ts +1 -1
  12. package/directive/ScrollDirective.d.ts +1 -1
  13. package/esm2022/VIModule.mjs +190 -0
  14. package/esm2022/application/ApplicationBaseComponent.mjs +96 -0
  15. package/esm2022/application/ApplicationComponent.mjs +64 -0
  16. package/esm2022/application/MessageBaseComponent.mjs +60 -0
  17. package/esm2022/asset/AssetBackgroundDirective.mjs +152 -0
  18. package/{esm2020 → esm2022}/asset/AssetBackgroundPipe.mjs +4 -4
  19. package/{esm2020 → esm2022}/asset/AssetFilePipe.mjs +4 -4
  20. package/{esm2020 → esm2022}/asset/AssetIconPipe.mjs +4 -4
  21. package/{esm2020 → esm2022}/asset/AssetImagePipe.mjs +4 -4
  22. package/{esm2020 → esm2022}/asset/AssetModule.mjs +5 -5
  23. package/{esm2020 → esm2022}/asset/AssetSoundPipe.mjs +4 -4
  24. package/{esm2020 → esm2022}/asset/AssetVideoPipe.mjs +4 -4
  25. package/{esm2020 → esm2022}/cookie/CookieModule.mjs +5 -5
  26. package/{esm2020 → esm2022}/cookie/CookieOptions.mjs +7 -1
  27. package/esm2022/cookie/CookieService.mjs +71 -0
  28. package/esm2022/directive/AspectRatioResizeDirective.mjs +134 -0
  29. package/esm2022/directive/AutoScrollBottomDirective.mjs +122 -0
  30. package/esm2022/directive/ClickToCopyDirective.mjs +53 -0
  31. package/esm2022/directive/ClickToSelectDirective.mjs +55 -0
  32. package/esm2022/directive/FocusDirective.mjs +60 -0
  33. package/esm2022/directive/HTMLContentTitleDirective.mjs +74 -0
  34. package/esm2022/directive/HTMLTitleDirective.mjs +73 -0
  35. package/esm2022/directive/InfiniteScrollDirective.mjs +71 -0
  36. package/{esm2020 → esm2022}/directive/IsBrowserDirective.mjs +5 -5
  37. package/{esm2020 → esm2022}/directive/IsServerDirective.mjs +5 -5
  38. package/esm2022/directive/ResizeDirective.mjs +80 -0
  39. package/esm2022/directive/ScrollCheckDirective.mjs +104 -0
  40. package/esm2022/directive/ScrollDirective.mjs +120 -0
  41. package/esm2022/directive/SelectOnFocusDirective.mjs +48 -0
  42. package/esm2022/directive/StructureDirective.mjs +80 -0
  43. package/esm2022/language/LanguageDirective.mjs +102 -0
  44. package/esm2022/language/LanguageHasDirective.mjs +87 -0
  45. package/{esm2020 → esm2022}/language/LanguageModule.mjs +5 -5
  46. package/esm2022/language/LanguagePipe.mjs +88 -0
  47. package/esm2022/language/LanguagePipeHas.mjs +64 -0
  48. package/esm2022/language/LanguagePipeHasPure.mjs +41 -0
  49. package/esm2022/language/LanguagePipePure.mjs +40 -0
  50. package/esm2022/language/LanguageRequireResolver.mjs +37 -0
  51. package/{esm2020 → esm2022}/language/LanguageResolver.mjs +5 -5
  52. package/esm2022/list/ListItem.mjs +148 -0
  53. package/esm2022/list/ListItems.mjs +107 -0
  54. package/esm2022/list/select/RouterSelectListItems.mjs +60 -0
  55. package/esm2022/list/select/SelectListItem.mjs +67 -0
  56. package/esm2022/list/select/SelectListItems.mjs +130 -0
  57. package/esm2022/login/LoginBaseService.mjs +191 -0
  58. package/esm2022/login/LoginGuard.mjs +41 -0
  59. package/esm2022/login/LoginIfCanGuard.mjs +55 -0
  60. package/esm2022/login/LoginNotGuard.mjs +41 -0
  61. package/esm2022/login/LoginRequireResolver.mjs +40 -0
  62. package/{esm2020 → esm2022}/login/LoginResolver.mjs +6 -6
  63. package/esm2022/login/LoginTokenStorage.mjs +18 -0
  64. package/esm2022/manager/FocusManager.mjs +54 -0
  65. package/esm2022/manager/ResizeManager.mjs +90 -0
  66. package/esm2022/menu/MenuItem.mjs +20 -0
  67. package/esm2022/menu/MenuItemBase.mjs +56 -0
  68. package/esm2022/menu/MenuItems.mjs +111 -0
  69. package/esm2022/menu/NavigationMenuItem.mjs +20 -0
  70. package/esm2022/module/LazyModuleLoader.mjs +97 -0
  71. package/esm2022/notification/INotification.mjs +16 -0
  72. package/esm2022/notification/INotificationContent.mjs +141 -0
  73. package/esm2022/notification/NotificationConfig.mjs +27 -0
  74. package/{esm2020 → esm2022}/pipe/CamelCasePipe.mjs +4 -4
  75. package/esm2022/pipe/FinancePipe.mjs +53 -0
  76. package/esm2022/pipe/MomentDateAdaptivePipe.mjs +51 -0
  77. package/{esm2020 → esm2022}/pipe/MomentDateFromNowPipe.mjs +4 -4
  78. package/esm2022/pipe/MomentDatePipe.mjs +71 -0
  79. package/esm2022/pipe/MomentTimePipe.mjs +35 -0
  80. package/esm2022/pipe/NgModelErrorPipe.mjs +43 -0
  81. package/esm2022/pipe/PrettifyPipe.mjs +38 -0
  82. package/esm2022/pipe/SanitizePipe.mjs +48 -0
  83. package/{esm2020 → esm2022}/pipe/StartCasePipe.mjs +4 -4
  84. package/esm2022/pipe/TimePipe.mjs +38 -0
  85. package/{esm2020 → esm2022}/pipe/TruncatePipe.mjs +4 -4
  86. package/esm2022/public-api.mjs +138 -0
  87. package/esm2022/question/QuestionManager.mjs +107 -0
  88. package/esm2022/service/PipeBaseService.mjs +140 -0
  89. package/esm2022/service/PlatformService.mjs +45 -0
  90. package/esm2022/service/RouterBaseService.mjs +236 -0
  91. package/esm2022/storage/DateValueStorage.mjs +46 -0
  92. package/esm2022/storage/LocalStorageService.mjs +58 -0
  93. package/esm2022/storage/ValueStorage.mjs +75 -0
  94. package/{esm2020 → esm2022}/theme/ThemeAssetBackgroundDirective.mjs +5 -5
  95. package/esm2022/theme/ThemeAssetDirective.mjs +251 -0
  96. package/{esm2020 → esm2022}/theme/ThemeAssetIconDirective.mjs +5 -5
  97. package/{esm2020 → esm2022}/theme/ThemeAssetImageDirective.mjs +5 -5
  98. package/{esm2020 → esm2022}/theme/ThemeModule.mjs +15 -15
  99. package/esm2022/theme/ThemeStyleDirective.mjs +125 -0
  100. package/esm2022/theme/ThemeStyleHoverDirective.mjs +107 -0
  101. package/esm2022/theme/ThemeToggleDirective.mjs +63 -0
  102. package/esm2022/transport/TransportLazy.mjs +93 -0
  103. package/esm2022/transport/TransportLazyModule.mjs +30 -0
  104. package/esm2022/transport/TransportLazyModuleLoadedEvent.mjs +18 -0
  105. package/esm2022/user/IUser.mjs +9 -0
  106. package/esm2022/user/UserBaseService.mjs +124 -0
  107. package/esm2022/util/ViewUtil.mjs +589 -0
  108. package/esm2022/window/IWindow.mjs +31 -0
  109. package/esm2022/window/IWindowContent.mjs +142 -0
  110. package/esm2022/window/WindowBase.mjs +177 -0
  111. package/esm2022/window/WindowClosedError.mjs +19 -0
  112. package/esm2022/window/WindowConfig.mjs +218 -0
  113. package/{fesm2020 → fesm2022}/ts-core-angular.mjs +1118 -958
  114. package/fesm2022/ts-core-angular.mjs.map +1 -0
  115. package/language/LanguageDirective.d.ts +1 -1
  116. package/language/LanguageHasDirective.d.ts +1 -1
  117. package/module/LazyModuleLoader.d.ts +1 -1
  118. package/notification/INotificationContent.d.ts +1 -1
  119. package/notification/NotificationConfig.d.ts +1 -1
  120. package/notification/NotificationService.d.ts +1 -1
  121. package/package.json +20 -27
  122. package/pipe/MomentDatePipe.d.ts +1 -1
  123. package/public-api.d.ts +0 -2
  124. package/theme/ThemeAssetBackgroundDirective.d.ts +1 -1
  125. package/theme/ThemeAssetDirective.d.ts +1 -1
  126. package/theme/ThemeAssetIconDirective.d.ts +1 -1
  127. package/theme/ThemeAssetImageDirective.d.ts +1 -1
  128. package/theme/ThemeStyleDirective.d.ts +1 -1
  129. package/theme/ThemeStyleHoverDirective.d.ts +1 -1
  130. package/user/IUser.d.ts +1 -1
  131. package/util/ViewUtil.d.ts +1 -1
  132. package/window/IWindowContent.d.ts +2 -2
  133. package/window/WindowConfig.d.ts +1 -1
  134. package/window/WindowService.d.ts +1 -1
  135. package/esm2020/VIModule.mjs +0 -187
  136. package/esm2020/application/ApplicationBaseComponent.mjs +0 -88
  137. package/esm2020/application/ApplicationComponent.mjs +0 -58
  138. package/esm2020/application/MessageBaseComponent.mjs +0 -52
  139. package/esm2020/asset/AssetBackgroundDirective.mjs +0 -150
  140. package/esm2020/cookie/CookieService.mjs +0 -79
  141. package/esm2020/directive/AspectRatioResizeDirective.mjs +0 -131
  142. package/esm2020/directive/AutoScrollBottomDirective.mjs +0 -122
  143. package/esm2020/directive/ClickToCopyDirective.mjs +0 -49
  144. package/esm2020/directive/ClickToSelectDirective.mjs +0 -49
  145. package/esm2020/directive/FocusDirective.mjs +0 -54
  146. package/esm2020/directive/HTMLContentTitleDirective.mjs +0 -67
  147. package/esm2020/directive/HTMLTitleDirective.mjs +0 -66
  148. package/esm2020/directive/InfiniteScrollDirective.mjs +0 -74
  149. package/esm2020/directive/ResizeDirective.mjs +0 -79
  150. package/esm2020/directive/ScrollCheckDirective.mjs +0 -102
  151. package/esm2020/directive/ScrollDirective.mjs +0 -118
  152. package/esm2020/directive/SelectOnFocusDirective.mjs +0 -47
  153. package/esm2020/directive/StructureDirective.mjs +0 -71
  154. package/esm2020/form/FormElementAsync.mjs +0 -27
  155. package/esm2020/form/FormElementSync.mjs +0 -69
  156. package/esm2020/form/ValueAccessor.mjs +0 -62
  157. package/esm2020/form/validate.mjs +0 -59
  158. package/esm2020/language/LanguageDirective.mjs +0 -92
  159. package/esm2020/language/LanguageHasDirective.mjs +0 -80
  160. package/esm2020/language/LanguagePipe.mjs +0 -78
  161. package/esm2020/language/LanguagePipeHas.mjs +0 -56
  162. package/esm2020/language/LanguagePipeHasPure.mjs +0 -40
  163. package/esm2020/language/LanguagePipePure.mjs +0 -39
  164. package/esm2020/language/LanguageRequireResolver.mjs +0 -36
  165. package/esm2020/list/ListItem.mjs +0 -134
  166. package/esm2020/list/ListItems.mjs +0 -97
  167. package/esm2020/list/select/RouterSelectListItems.mjs +0 -53
  168. package/esm2020/list/select/SelectListItem.mjs +0 -59
  169. package/esm2020/list/select/SelectListItems.mjs +0 -121
  170. package/esm2020/login/LoginBaseService.mjs +0 -184
  171. package/esm2020/login/LoginGuard.mjs +0 -40
  172. package/esm2020/login/LoginIfCanGuard.mjs +0 -54
  173. package/esm2020/login/LoginNotGuard.mjs +0 -40
  174. package/esm2020/login/LoginRequireResolver.mjs +0 -39
  175. package/esm2020/login/LoginTokenStorage.mjs +0 -18
  176. package/esm2020/manager/FocusManager.mjs +0 -46
  177. package/esm2020/manager/ResizeManager.mjs +0 -81
  178. package/esm2020/menu/MenuItem.mjs +0 -13
  179. package/esm2020/menu/MenuItemBase.mjs +0 -46
  180. package/esm2020/menu/MenuItems.mjs +0 -102
  181. package/esm2020/menu/NavigationMenuItem.mjs +0 -14
  182. package/esm2020/module/LazyModuleLoader.mjs +0 -89
  183. package/esm2020/notification/INotification.mjs +0 -7
  184. package/esm2020/notification/INotificationContent.mjs +0 -132
  185. package/esm2020/notification/NotificationConfig.mjs +0 -16
  186. package/esm2020/pipe/FinancePipe.mjs +0 -53
  187. package/esm2020/pipe/MomentDateAdaptivePipe.mjs +0 -51
  188. package/esm2020/pipe/MomentDatePipe.mjs +0 -71
  189. package/esm2020/pipe/MomentTimePipe.mjs +0 -35
  190. package/esm2020/pipe/NgModelErrorPipe.mjs +0 -42
  191. package/esm2020/pipe/PrettifyPipe.mjs +0 -38
  192. package/esm2020/pipe/SanitizePipe.mjs +0 -47
  193. package/esm2020/pipe/TimePipe.mjs +0 -38
  194. package/esm2020/public-api.mjs +0 -141
  195. package/esm2020/question/QuestionManager.mjs +0 -93
  196. package/esm2020/service/PipeBaseService.mjs +0 -132
  197. package/esm2020/service/PlatformService.mjs +0 -38
  198. package/esm2020/service/RouterBaseService.mjs +0 -224
  199. package/esm2020/storage/DateValueStorage.mjs +0 -49
  200. package/esm2020/storage/LocalStorageService.mjs +0 -57
  201. package/esm2020/storage/ValueStorage.mjs +0 -67
  202. package/esm2020/theme/ThemeAssetDirective.mjs +0 -240
  203. package/esm2020/theme/ThemeStyleDirective.mjs +0 -115
  204. package/esm2020/theme/ThemeStyleHoverDirective.mjs +0 -107
  205. package/esm2020/theme/ThemeToggleDirective.mjs +0 -62
  206. package/esm2020/transport/TransportLazy.mjs +0 -92
  207. package/esm2020/transport/TransportLazyModule.mjs +0 -28
  208. package/esm2020/transport/TransportLazyModuleLoadedEvent.mjs +0 -18
  209. package/esm2020/user/IUser.mjs +0 -3
  210. package/esm2020/user/UserBaseService.mjs +0 -116
  211. package/esm2020/util/ViewUtil.mjs +0 -589
  212. package/esm2020/window/IWindow.mjs +0 -33
  213. package/esm2020/window/IWindowContent.mjs +0 -135
  214. package/esm2020/window/WindowBase.mjs +0 -177
  215. package/esm2020/window/WindowClosedError.mjs +0 -19
  216. package/esm2020/window/WindowConfig.mjs +0 -197
  217. package/fesm2015/ts-core-angular.mjs +0 -7015
  218. package/fesm2015/ts-core-angular.mjs.map +0 -1
  219. package/fesm2020/ts-core-angular.mjs.map +0 -1
  220. package/form/FormElementAsync.d.ts +0 -13
  221. package/form/FormElementSync.d.ts +0 -22
  222. package/form/ValueAccessor.d.ts +0 -16
  223. package/form/validate.d.ts +0 -9
  224. /package/{esm2020 → esm2022}/ApplicationInjector.mjs +0 -0
  225. /package/{esm2020 → esm2022}/bottomSheet/BottomSheetService.mjs +0 -0
  226. /package/{esm2020 → esm2022}/list/IListItem.mjs +0 -0
  227. /package/{esm2020 → esm2022}/list/select/ISelectListItem.mjs +0 -0
  228. /package/{esm2020 → esm2022}/notification/INotificationConfig.mjs +0 -0
  229. /package/{esm2020 → esm2022}/notification/NotificationService.mjs +0 -0
  230. /package/{esm2020 → esm2022}/notification/NotificationServiceEvent.mjs +0 -0
  231. /package/{esm2020 → esm2022}/question/IQuestion.mjs +0 -0
  232. /package/{esm2020 → esm2022}/service/route/CanDeactivateGuard.mjs +0 -0
  233. /package/{esm2020 → esm2022}/service/route/IRouterDeactivatable.mjs +0 -0
  234. /package/{esm2020 → esm2022}/storage/BooleanValueStorage.mjs +0 -0
  235. /package/{esm2020 → esm2022}/storage/IValueStorage.mjs +0 -0
  236. /package/{esm2020 → esm2022}/ts-core-angular.mjs +0 -0
  237. /package/{esm2020 → esm2022}/window/IWindowConfig.mjs +0 -0
  238. /package/{esm2020 → esm2022}/window/WindowService.mjs +0 -0
  239. /package/{esm2020 → esm2022}/window/WindowServiceEvent.mjs +0 -0
@@ -1,33 +0,0 @@
1
- import { Destroyable } from '@ts-core/common';
2
- export class IWindow extends Destroyable {
3
- constructor() {
4
- // --------------------------------------------------------------------------
5
- //
6
- // Public Methods
7
- //
8
- // --------------------------------------------------------------------------
9
- super(...arguments);
10
- // --------------------------------------------------------------------------
11
- //
12
- // Public Properties
13
- //
14
- // --------------------------------------------------------------------------
15
- this.isOnTop = false;
16
- this.isDisabled = false;
17
- this.isMinimized = false;
18
- }
19
- }
20
- export var WindowEvent;
21
- (function (WindowEvent) {
22
- WindowEvent["OPENED"] = "OPENED";
23
- WindowEvent["CLOSED"] = "CLOSED";
24
- WindowEvent["CONTENT_READY"] = "CONTENT_READY";
25
- WindowEvent["MOVED"] = "MOVED";
26
- WindowEvent["RESIZED"] = "RESIZED";
27
- WindowEvent["DISABLED_CHANGED"] = "DISABLED_CHANGED";
28
- WindowEvent["MINIMIZED_CHANGED"] = "MINIMIZED_CHANGED";
29
- WindowEvent["IS_ON_TOP_CHANGED"] = "IS_ON_TOP_CHANGED";
30
- WindowEvent["EXPAND"] = "EXPAND";
31
- WindowEvent["SET_ON_TOP"] = "SET_ON_TOP";
32
- })(WindowEvent || (WindowEvent = {}));
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVdpbmRvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy93aW5kb3cvSVdpbmRvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJOUMsTUFBTSxPQUFnQixPQUFpQixTQUFRLFdBQVc7SUFBMUQ7UUFDSSw2RUFBNkU7UUFDN0UsRUFBRTtRQUNGLGtCQUFrQjtRQUNsQixFQUFFO1FBQ0YsNkVBQTZFOztRQXNCN0UsNkVBQTZFO1FBQzdFLEVBQUU7UUFDRixxQkFBcUI7UUFDckIsRUFBRTtRQUNGLDZFQUE2RTtRQUV0RSxZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7SUFTeEMsQ0FBQztDQUFBO0FBRUQsTUFBTSxDQUFOLElBQVksV0FhWDtBQWJELFdBQVksV0FBVztJQUNuQixnQ0FBaUIsQ0FBQTtJQUNqQixnQ0FBaUIsQ0FBQTtJQUNqQiw4Q0FBK0IsQ0FBQTtJQUUvQiw4QkFBZSxDQUFBO0lBQ2Ysa0NBQW1CLENBQUE7SUFDbkIsb0RBQXFDLENBQUE7SUFDckMsc0RBQXVDLENBQUE7SUFDdkMsc0RBQXVDLENBQUE7SUFFdkMsZ0NBQWlCLENBQUE7SUFDakIsd0NBQXlCLENBQUE7QUFDN0IsQ0FBQyxFQWJXLFdBQVcsS0FBWCxXQUFXLFFBYXRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGVzdHJveWFibGUgfSBmcm9tICdAdHMtY29yZS9jb21tb24nO1xuaW1wb3J0IHsgSVdpbmRvd0NvbnRlbnQgfSBmcm9tICcuL0lXaW5kb3dDb250ZW50JztcbmltcG9ydCB7IElXaW5kb3dDb25maWcgfSBmcm9tICcuL0lXaW5kb3dDb25maWcnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSVdpbmRvdzxUID0gYW55PiBleHRlbmRzIERlc3Ryb3lhYmxlIHtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gIFB1YmxpYyBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgYWJzdHJhY3QgY2xvc2UoKTogdm9pZDtcblxuICAgIGFic3RyYWN0IGJsaW5rKCk6IHZvaWQ7XG4gICAgYWJzdHJhY3Qgc2hha2UoKTogdm9pZDtcbiAgICBhYnN0cmFjdCBzZXRPblRvcCgpOiB2b2lkO1xuXG4gICAgYWJzdHJhY3QgZ2V0V2lkdGgoKTogbnVtYmVyO1xuICAgIGFic3RyYWN0IGdldEhlaWdodCgpOiBudW1iZXI7XG4gICAgYWJzdHJhY3Qgc2V0V2lkdGgodmFsdWU6IG51bWJlcik6IHZvaWQ7XG4gICAgYWJzdHJhY3Qgc2V0SGVpZ2h0KHZhbHVlOiBudW1iZXIpOiB2b2lkO1xuICAgIGFic3RyYWN0IHNldFNpemUod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiB2b2lkO1xuXG4gICAgYWJzdHJhY3QgZ2V0WCgpOiBudW1iZXI7XG4gICAgYWJzdHJhY3QgZ2V0WSgpOiBudW1iZXI7XG4gICAgYWJzdHJhY3Qgc2V0WCh2YWx1ZTogbnVtYmVyKTogdm9pZDtcbiAgICBhYnN0cmFjdCBzZXRZKHZhbHVlOiBudW1iZXIpOiB2b2lkO1xuICAgIGFic3RyYWN0IG1vdmUoeDogbnVtYmVyLCB5OiBudW1iZXIpOiB2b2lkO1xuXG4gICAgYWJzdHJhY3QgZW1pdChldmVudDogc3RyaW5nKTogdm9pZDtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyAgUHVibGljIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgaXNPblRvcDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzTWluaW1pemVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICByZWFkb25seSBldmVudHM6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICByZWFkb25seSBjb250YWluZXI6IEhUTUxFbGVtZW50O1xuICAgIHJlYWRvbmx5IHdyYXBwZXI6IEhUTUxFbGVtZW50O1xuICAgIHJlYWRvbmx5IGJhY2tkcm9wOiBIVE1MRWxlbWVudDtcblxuICAgIHJlYWRvbmx5IGNvbmZpZzogSVdpbmRvd0NvbmZpZzxUPjtcbiAgICByZWFkb25seSBjb250ZW50OiBJV2luZG93Q29udGVudDxUPjtcbn1cblxuZXhwb3J0IGVudW0gV2luZG93RXZlbnQge1xuICAgIE9QRU5FRCA9ICdPUEVORUQnLFxuICAgIENMT1NFRCA9ICdDTE9TRUQnLFxuICAgIENPTlRFTlRfUkVBRFkgPSAnQ09OVEVOVF9SRUFEWScsXG5cbiAgICBNT1ZFRCA9ICdNT1ZFRCcsXG4gICAgUkVTSVpFRCA9ICdSRVNJWkVEJyxcbiAgICBESVNBQkxFRF9DSEFOR0VEID0gJ0RJU0FCTEVEX0NIQU5HRUQnLFxuICAgIE1JTklNSVpFRF9DSEFOR0VEID0gJ01JTklNSVpFRF9DSEFOR0VEJyxcbiAgICBJU19PTl9UT1BfQ0hBTkdFRCA9ICdJU19PTl9UT1BfQ0hBTkdFRCcsXG5cbiAgICBFWFBBTkQgPSAnRVhQQU5EJyxcbiAgICBTRVRfT05fVE9QID0gJ1NFVF9PTl9UT1AnXG59XG4iXX0=
@@ -1,135 +0,0 @@
1
- import { ViewContainerRef, Inject, Optional, Component, InjectionToken, Input } from '@angular/core';
2
- import { DestroyableContainer } from '@ts-core/common';
3
- import { WindowEvent } from './IWindow';
4
- import * as _ from 'lodash';
5
- import * as i0 from "@angular/core";
6
- export class IWindowContent extends DestroyableContainer {
7
- // --------------------------------------------------------------------------
8
- //
9
- // Constructor
10
- //
11
- // --------------------------------------------------------------------------
12
- constructor(container) {
13
- super();
14
- this.container = container;
15
- }
16
- // --------------------------------------------------------------------------
17
- //
18
- // Private Methods
19
- //
20
- // --------------------------------------------------------------------------
21
- commitWindowProperties() {
22
- this.commitConfigProperties();
23
- }
24
- commitConfigProperties() { }
25
- // --------------------------------------------------------------------------
26
- //
27
- // Public Methods
28
- //
29
- // --------------------------------------------------------------------------
30
- ngAfterViewInit() {
31
- this.emit(WindowEvent.CONTENT_READY);
32
- }
33
- ngOnDestroy() {
34
- // do nothing, window will destroy content after closing
35
- if (_.isNil(this.window)) {
36
- super.ngOnDestroy();
37
- }
38
- }
39
- blink() {
40
- if (!_.isNil(this.window)) {
41
- this.window.blink();
42
- }
43
- }
44
- shake() {
45
- if (!_.isNil(this.window)) {
46
- this.window.shake();
47
- }
48
- }
49
- emit(event) {
50
- if (!_.isNil(this.window)) {
51
- this.window.emit(event);
52
- }
53
- }
54
- close() {
55
- if (!_.isNil(this.window)) {
56
- this.window.close();
57
- }
58
- }
59
- destroy() {
60
- if (this.isDestroyed) {
61
- return;
62
- }
63
- super.destroy();
64
- this.window = null;
65
- this.container = null;
66
- }
67
- // --------------------------------------------------------------------------
68
- //
69
- // Proxy Public Properties
70
- //
71
- // --------------------------------------------------------------------------
72
- get data() {
73
- return !_.isNil(this.config) ? this.config.data : null;
74
- }
75
- get isOnTop() {
76
- return !_.isNil(this.window) ? this.window.isOnTop : false;
77
- }
78
- get isMinimized() {
79
- return !_.isNil(this.window) ? this.window.isMinimized : false;
80
- }
81
- get events() {
82
- return !_.isNil(this.window) ? this.window.events : null;
83
- }
84
- get isDisabled() {
85
- return !_.isNil(this.window) ? this.window.isDisabled : false;
86
- }
87
- set isDisabled(value) {
88
- if (!_.isNil(this.window)) {
89
- this.window.isDisabled = value;
90
- }
91
- }
92
- // --------------------------------------------------------------------------
93
- //
94
- // Public Properties
95
- //
96
- // --------------------------------------------------------------------------
97
- get element() {
98
- if (_.isNil(this.container)) {
99
- return null;
100
- }
101
- return this.container instanceof ViewContainerRef ? this.container.element : this.container;
102
- }
103
- get config() {
104
- return !_.isNil(this.window) ? this.window.config : null;
105
- }
106
- get window() {
107
- return this._window;
108
- }
109
- set window(value) {
110
- if (value === this._window) {
111
- return;
112
- }
113
- this._window = value;
114
- if (!_.isNil(value)) {
115
- this.commitWindowProperties();
116
- }
117
- }
118
- }
119
- IWindowContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IWindowContent, deps: [{ token: WINDOW_CONTENT_CONTAINER, optional: true }], target: i0.ɵɵFactoryTarget.Component });
120
- IWindowContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: IWindowContent, selector: "ng-component", inputs: { isDisabled: "isDisabled", window: "window" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IWindowContent, decorators: [{
122
- type: Component,
123
- args: [{ template: '' }]
124
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
125
- type: Optional
126
- }, {
127
- type: Inject,
128
- args: [WINDOW_CONTENT_CONTAINER]
129
- }] }]; }, propDecorators: { isDisabled: [{
130
- type: Input
131
- }], window: [{
132
- type: Input
133
- }] } });
134
- export const WINDOW_CONTENT_CONTAINER = new InjectionToken('WINDOW_CONTENT_CONTAINER');
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVdpbmRvd0NvbnRlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd2luZG93L0lXaW5kb3dDb250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBNkIsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoSSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQVcsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWpELE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDOztBQUc1QixNQUFNLE9BQWdCLGNBQXdCLFNBQVEsb0JBQW9CO0lBU3RFLDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YsZUFBZTtJQUNmLEVBQUU7SUFDRiw2RUFBNkU7SUFFN0UsWUFBaUUsU0FBaUM7UUFDOUYsS0FBSyxFQUFFLENBQUM7UUFEcUQsY0FBUyxHQUFULFNBQVMsQ0FBd0I7SUFFbEcsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0YsbUJBQW1CO0lBQ25CLEVBQUU7SUFDRiw2RUFBNkU7SUFFbkUsc0JBQXNCO1FBQzVCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFUyxzQkFBc0IsS0FBVSxDQUFDO0lBRTNDLDZFQUE2RTtJQUM3RSxFQUFFO0lBQ0Ysa0JBQWtCO0lBQ2xCLEVBQUU7SUFDRiw2RUFBNkU7SUFFdEUsZUFBZTtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sV0FBVztRQUNkLHdEQUF3RDtRQUN4RCxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3RCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN2QjtJ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O1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxZQUFZLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNoRyxDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2IsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQ1csTUFBTSxDQUFDLEtBQWlCO1FBQy9CLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDeEIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDakIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDakM7SUFDTCxDQUFDOzs0R0EvSWlCLGNBQWMsa0JBZUEsd0JBQXdCO2dHQWZ0QyxjQUFjLG1JQURiLEVBQUU7NEZBQ0gsY0FBYztrQkFEbkMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7OzBCQWdCVixRQUFROzswQkFBSSxNQUFNOzJCQUFDLHdCQUF3Qjs0Q0E2RjdDLFVBQVU7c0JBRHBCLEtBQUs7Z0JBNEJLLE1BQU07c0JBRGhCLEtBQUs7O0FBYVYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQXlCLDBCQUEwQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBFbGVtZW50UmVmLCBWaWV3Q29udGFpbmVyUmVmLCBJbmplY3QsIE9wdGlvbmFsLCBDb21wb25lbnQsIEluamVjdGlvblRva2VuLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGVzdHJveWFibGVDb250YWluZXIgfSBmcm9tICdAdHMtY29yZS9jb21tb24nO1xuaW1wb3J0IHsgSVdpbmRvdywgV2luZG93RXZlbnQgfSBmcm9tICcuL0lXaW5kb3cnO1xuaW1wb3J0IHsgSVdpbmRvd0NvbmZpZyB9IGZyb20gJy4vSVdpbmRvd0NvbmZpZyc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbkBDb21wb25lbnQoeyB0ZW1wbGF0ZTogJycgfSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJV2luZG93Q29udGVudDxUID0gYW55PiBleHRlbmRzIERlc3Ryb3lhYmxlQ29udGFpbmVyIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vICBQcm9wZXJ0aWVzPVxuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBfd2luZG93OiBJV2luZG93PFQ+O1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vICBDb25zdHJ1Y3RvclxuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoV0lORE9XX0NPTlRFTlRfQ09OVEFJTkVSKSBwdWJsaWMgY29udGFpbmVyOiBXaW5kb3dDb250ZW50Q29udGFpbmVyKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vICBQcml2YXRlIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgY29tbWl0V2luZG93UHJvcGVydGllcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb21taXRDb25maWdQcm9wZXJ0aWVzKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbW1pdENvbmZpZ1Byb3BlcnRpZXMoKTogdm9pZCB7fVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vICBQdWJsaWMgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZW1pdChXaW5kb3dFdmVudC5DT05URU5UX1JFQURZKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vIGRvIG5vdGhpbmcsIHdpbmRvdyB3aWxsIGRlc3Ryb3kgY29udGVudCBhZnRlciBjbG9zaW5nXG4gICAgICAgIGlmIChfLmlzTmlsKHRoaXMud2luZG93KSkge1xuICAgICAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBibGluaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfLmlzTmlsKHRoaXMud2luZG93KSkge1xuICAgICAgICAgICAgdGhpcy53aW5kb3cuYmxpbmsoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzaGFrZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfLmlzTmlsKHRoaXMud2luZG93KSkge1xuICAgICAgICAgICAgdGhpcy53aW5kb3cuc2hha2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBlbWl0KGV2ZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfLmlzTmlsKHRoaXMud2luZG93KSkge1xuICAgICAgICAgICAgdGhpcy53aW5kb3cuZW1pdChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIGlmICghXy5pc05pbCh0aGlzLndpbmRvdykpIHtcbiAgICAgICAgICAgIHRoaXMud2luZG93LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5kZXN0cm95KCk7XG5cbiAgICAgICAgdGhpcy53aW5kb3cgPSBudWxsO1xuICAgICAgICB0aGlzLmNvbnRhaW5lciA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vICBQcm94eSBQdWJsaWMgUHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBnZXQgZGF0YSgpOiBUIHtcbiAgICAgICAgcmV0dXJuICFfLmlzTmlsKHRoaXMuY29uZmlnKSA/IHRoaXMuY29uZmlnLmRhdGEgOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNPblRvcCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFfLmlzTmlsKHRoaXMud2luZG93KSA/IHRoaXMud2luZG93LmlzT25Ub3AgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzTWluaW1pemVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIV8uaXNOaWwodGhpcy53aW5kb3cpID8gdGhpcy53aW5kb3cuaXNNaW5pbWl6ZWQgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGV2ZW50cygpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gIV8uaXNOaWwodGhpcy53aW5kb3cpID8gdGhpcy53aW5kb3cuZXZlbnRzIDogbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhXy5pc05pbCh0aGlzLndpbmRvdykgPyB0aGlzLndpbmRvdy5pc0Rpc2FibGVkIDogZmFsc2U7XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBpc0Rpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICghXy5pc05pbCh0aGlzLndpbmRvdykpIHtcbiAgICAgICAgICAgIHRoaXMud2luZG93LmlzRGlzYWJsZWQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyAgUHVibGljIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgZ2V0IGVsZW1lbnQoKTogRWxlbWVudFJlZiB7XG4gICAgICAgIGlmIChfLmlzTmlsKHRoaXMuY29udGFpbmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGFpbmVyIGluc3RhbmNlb2YgVmlld0NvbnRhaW5lclJlZiA/IHRoaXMuY29udGFpbmVyLmVsZW1lbnQgOiB0aGlzLmNvbnRhaW5lcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbmZpZygpOiBJV2luZG93Q29uZmlnPFQ+IHtcbiAgICAgICAgcmV0dXJuICFfLmlzTmlsKHRoaXMud2luZG93KSA/IHRoaXMud2luZG93LmNvbmZpZyA6IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB3aW5kb3coKTogSVdpbmRvdzxUPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl93aW5kb3c7XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCB3aW5kb3codmFsdWU6IElXaW5kb3c8VD4pIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl93aW5kb3cpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl93aW5kb3cgPSB2YWx1ZTtcbiAgICAgICAgaWYgKCFfLmlzTmlsKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5jb21taXRXaW5kb3dQcm9wZXJ0aWVzKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFdpbmRvd0NvbnRlbnRDb250YWluZXIgPSBFbGVtZW50UmVmIHwgVmlld0NvbnRhaW5lclJlZjtcbmV4cG9ydCBjb25zdCBXSU5ET1dfQ09OVEVOVF9DT05UQUlORVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48V2luZG93Q29udGVudENvbnRhaW5lcj4oJ1dJTkRPV19DT05URU5UX0NPTlRBSU5FUicpO1xuIl19
@@ -1,177 +0,0 @@
1
- import * as _ from 'lodash';
2
- import { DestroyableContainer } from '@ts-core/common';
3
- import { WindowAlign } from './IWindowConfig';
4
- import { ViewUtil } from '../util/ViewUtil';
5
- export class WindowBase extends DestroyableContainer {
6
- // --------------------------------------------------------------------------
7
- //
8
- // Constructor
9
- //
10
- // --------------------------------------------------------------------------
11
- constructor() {
12
- super();
13
- // --------------------------------------------------------------------------
14
- //
15
- // Properties
16
- //
17
- // --------------------------------------------------------------------------
18
- this._x = NaN;
19
- this._width = NaN;
20
- this._y = NaN;
21
- this._height = NaN;
22
- this.updatePosition = () => this.setPosition();
23
- }
24
- // --------------------------------------------------------------------------
25
- //
26
- // Static Methods
27
- //
28
- // --------------------------------------------------------------------------
29
- static parseX(value, config) {
30
- value = Math.max(value, config.elementMinX);
31
- value = Math.min(value, config.elementMaxX);
32
- return value;
33
- }
34
- static parseY(value, config) {
35
- value = Math.max(value, config.elementMinY);
36
- value = Math.min(value, config.elementMaxY);
37
- return value;
38
- }
39
- static parseWidth(value, config) {
40
- value = Math.max(value, config.elementMinWidth);
41
- value = Math.min(value, config.elementMaxWidth);
42
- return value;
43
- }
44
- static parseHeight(value, config) {
45
- value = Math.max(value, config.elementMinHeight);
46
- value = Math.min(value, config.elementMaxHeight);
47
- return value;
48
- }
49
- setProperties() {
50
- let config = this.getConfig();
51
- if (!_.isNaN(config.defaultWidth)) {
52
- this.width = config.defaultWidth;
53
- }
54
- if (!_.isNaN(config.defaultHeight)) {
55
- this.height = config.defaultHeight;
56
- }
57
- }
58
- setPosition() {
59
- let config = this.getConfig();
60
- switch (config.horizontalAlign) {
61
- case WindowAlign.START:
62
- this.x = !_.isNaN(this.paddingLeft) ? this.paddingLeft : 0;
63
- break;
64
- case WindowAlign.END:
65
- let value = ViewUtil.getStageWidth() - this.calculateWidth();
66
- if (!_.isNaN(this.paddingRight)) {
67
- value -= this.paddingRight;
68
- }
69
- this.x = value;
70
- break;
71
- default:
72
- this.x = (ViewUtil.getStageWidth() - this.calculateWidth()) / 2;
73
- break;
74
- }
75
- switch (config.verticalAlign) {
76
- case WindowAlign.START:
77
- this.y = !_.isNaN(this.paddingTop) ? this.paddingTop : 0;
78
- break;
79
- case WindowAlign.END:
80
- let value = ViewUtil.getStageHeight() - this.calculateHeight();
81
- if (!_.isNaN(this.paddingBottom)) {
82
- value -= this.paddingBottom;
83
- }
84
- this.y = value;
85
- break;
86
- default:
87
- this.y = (ViewUtil.getStageHeight() - this.calculateHeight()) / 2;
88
- break;
89
- }
90
- }
91
- clearSize() {
92
- this._x = NaN;
93
- this._y = NaN;
94
- this._width = NaN;
95
- this._height = NaN;
96
- }
97
- commitSizeProperties() { }
98
- commitPositionProperties() { }
99
- // --------------------------------------------------------------------------
100
- //
101
- // Public Methods
102
- //
103
- // --------------------------------------------------------------------------
104
- calculateWidth() {
105
- return !_.isNaN(this.width) ? this.width : ViewUtil.getWidth(this.getContainer());
106
- }
107
- calculateHeight() {
108
- return !_.isNaN(this.height) ? this.height : ViewUtil.getHeight(this.getContainer());
109
- }
110
- // --------------------------------------------------------------------------
111
- //
112
- // Private Properties
113
- //
114
- // --------------------------------------------------------------------------
115
- get width() {
116
- return this._width;
117
- }
118
- set width(value) {
119
- value = WindowBase.parseWidth(value, this.getConfig());
120
- if (value === this._width) {
121
- return;
122
- }
123
- this._width = value;
124
- this.commitSizeProperties();
125
- }
126
- get height() {
127
- return this._height;
128
- }
129
- set height(value) {
130
- value = WindowBase.parseWidth(value, this.getConfig());
131
- if (value === this._height) {
132
- return;
133
- }
134
- this._height = value;
135
- this.commitSizeProperties();
136
- }
137
- // --------------------------------------------------------------------------
138
- //
139
- // Public Properties
140
- //
141
- // --------------------------------------------------------------------------
142
- get x() {
143
- return this._x;
144
- }
145
- set x(value) {
146
- value = WindowBase.parseX(value, this.getConfig());
147
- if (value === this._x) {
148
- return;
149
- }
150
- this._x = value;
151
- this.commitPositionProperties();
152
- }
153
- get y() {
154
- return this._y;
155
- }
156
- set y(value) {
157
- value = WindowBase.parseY(value, this.getConfig());
158
- if (value === this._y) {
159
- return;
160
- }
161
- this._y = value;
162
- this.commitPositionProperties();
163
- }
164
- get paddingTop() {
165
- return this.getConfig().paddingTop;
166
- }
167
- get paddingLeft() {
168
- return this.getConfig().paddingLeft;
169
- }
170
- get paddingRight() {
171
- return this.getConfig().paddingRight;
172
- }
173
- get paddingBottom() {
174
- return this.getConfig().paddingBottom;
175
- }
176
- }
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2luZG93QmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy93aW5kb3cvV2luZG93QmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQWlCLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU1QyxNQUFNLE9BQWdCLFVBQW9CLFNBQVEsb0JBQW9CO0lBMkNsRSw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGVBQWU7SUFDZixFQUFFO0lBQ0YsNkVBQTZFO0lBRTdFO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFuQlosNkVBQTZFO1FBQzdFLEVBQUU7UUFDRixjQUFjO1FBQ2QsRUFBRTtRQUNGLDZFQUE2RTtRQUVuRSxPQUFFLEdBQVcsR0FBRyxDQUFDO1FBQ2pCLFdBQU0sR0FBVyxHQUFHLENBQUM7UUFFckIsT0FBRSxHQUFXLEdBQUcsQ0FBQztRQUNqQixZQUFPLEdBQVcsR0FBRyxDQUFDO1FBOEV0QixtQkFBYyxHQUFHLEdBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQXBFMUQsQ0FBQztJQWxERCw2RUFBNkU7SUFDN0UsRUFBRTtJQUNGLGtCQUFrQjtJQUNsQixFQUFFO0lBQ0YsNkVBQTZFO0lBRW5FLE1BQU0sQ0FBQyxNQUFNLENBQUksS0FBYSxFQUFFLE1BQXdCO1FBQzlELEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QyxPQUFPLEtBQUssQ0FB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U0FBUyxFQUFFLENBQUMsQ0FBQztRQUNuRCxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ25CLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFXLENBQUM7UUFDUixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQVcsQ0FBQyxDQUFDLEtBQWE7UUFDdEIsS0FBSyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDbkIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDaEIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxVQUFVLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxZQUFZLENBQUM7SUFDekMsQ0FBQztJQUVELElBQVcsYUFBYTtRQUNwQixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxhQUFhLENBQUM7SUFDMUMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRGVzdHJveWFibGVDb250YWluZXIgfSBmcm9tICdAdHMtY29yZS9jb21tb24nO1xuaW1wb3J0IHsgSVdpbmRvd0NvbmZpZywgV2luZG93QWxpZ24gfSBmcm9tICcuL0lXaW5kb3dDb25maWcnO1xuaW1wb3J0IHsgVmlld1V0aWwgfSBmcm9tICcuLi91dGlsL1ZpZXdVdGlsJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFdpbmRvd0Jhc2U8VCA9IGFueT4gZXh0ZW5kcyBEZXN0cm95YWJsZUNvbnRhaW5lciB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0U3RhdGljIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIHBhcnNlWDxUPih2YWx1ZTogbnVtYmVyLCBjb25maWc6IElXaW5kb3dDb25maWc8VD4pOiBudW1iZXIge1xuICAgICAgICB2YWx1ZSA9IE1hdGgubWF4KHZhbHVlLCBjb25maWcuZWxlbWVudE1pblgpO1xuICAgICAgICB2YWx1ZSA9IE1hdGgubWluKHZhbHVlLCBjb25maWcuZWxlbWVudE1heFgpO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBwYXJzZVk8VD4odmFsdWU6IG51bWJlciwgY29uZmlnOiBJV2luZG93Q29uZmlnPFQ+KTogbnVtYmVyIHtcbiAgICAgICAgdmFsdWUgPSBNYXRoLm1heCh2YWx1ZSwgY29uZmlnLmVsZW1lbnRNaW5ZKTtcbiAgICAgICAgdmFsdWUgPSBNYXRoLm1pbih2YWx1ZSwgY29uZmlnLmVsZW1lbnRNYXhZKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgcGFyc2VXaWR0aDxUPih2YWx1ZTogbnVtYmVyLCBjb25maWc6IElXaW5kb3dDb25maWc8VD4pOiBudW1iZXIge1xuICAgICAgICB2YWx1ZSA9IE1hdGgubWF4KHZhbHVlLCBjb25maWcuZWxlbWVudE1pbldpZHRoKTtcbiAgICAgICAgdmFsdWUgPSBNYXRoLm1pbih2YWx1ZSwgY29uZmlnLmVsZW1lbnRNYXhXaWR0aCk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RhdGljIHBhcnNlSGVpZ2h0PFQ+KHZhbHVlOiBudW1iZXIsIGNvbmZpZzogSVdpbmRvd0NvbmZpZzxUPik6IG51bWJlciB7XG4gICAgICAgIHZhbHVlID0gTWF0aC5tYXgodmFsdWUsIGNvbmZpZy5lbGVtZW50TWluSGVpZ2h0KTtcbiAgICAgICAgdmFsdWUgPSBNYXRoLm1pbih2YWx1ZSwgY29uZmlnLmVsZW1lbnRNYXhIZWlnaHQpO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHByb3RlY3RlZCBfeDogbnVtYmVyID0gTmFOO1xuICAgIHByb3RlY3RlZCBfd2lkdGg6IG51bWJlciA9IE5hTjtcblxuICAgIHByb3RlY3RlZCBfeTogbnVtYmVyID0gTmFOO1xuICAgIHByb3RlY3RlZCBfaGVpZ2h0OiBudW1iZXIgPSBOYU47XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRDb25zdHJ1Y3RvclxuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFByb3RlY3RlZCBNZXRob2RzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldENvbmZpZygpOiBJV2luZG93Q29uZmlnPFQ+O1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXRDb250YWluZXIoKTogSFRNTEVsZW1lbnQ7XG5cbiAgICBwcm90ZWN0ZWQgc2V0UHJvcGVydGllcygpOiB2b2lkIHtcbiAgICAgICAgbGV0IGNvbmZpZyA9IHRoaXMuZ2V0Q29uZmlnKCk7XG4gICAgICAgIGlmICghXy5pc05hTihjb25maWcuZGVmYXVsdFdpZHRoKSkge1xuICAgICAgICAgICAgdGhpcy53aWR0aCA9IGNvbmZpZy5kZWZhdWx0V2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFfLmlzTmFOKGNvbmZpZy5kZWZhdWx0SGVpZ2h0KSkge1xuICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSBjb25maWcuZGVmYXVsdEhlaWdodDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRQb3NpdGlvbigpOiB2b2lkIHtcbiAgICAgICAgbGV0IGNvbmZpZyA9IHRoaXMuZ2V0Q29uZmlnKCk7XG5cbiAgICAgICAgc3dpdGNoIChjb25maWcuaG9yaXpvbnRhbEFsaWduKSB7XG4gICAgICAgICAgICBjYXNlIFdpbmRvd0FsaWduLlNUQVJUOlxuICAgICAgICAgICAgICAgIHRoaXMueCA9ICFfLmlzTmFOKHRoaXMucGFkZGluZ0xlZnQpID8gdGhpcy5wYWRkaW5nTGVmdCA6IDA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFdpbmRvd0FsaWduLkVORDpcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBWaWV3VXRpbC5nZXRTdGFnZVdpZHRoKCkgLSB0aGlzLmNhbGN1bGF0ZVdpZHRoKCk7XG4gICAgICAgICAgICAgICAgaWYgKCFfLmlzTmFOKHRoaXMucGFkZGluZ1JpZ2h0KSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSAtPSB0aGlzLnBhZGRpbmdSaWdodDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy54ID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMueCA9IChWaWV3VXRpbC5nZXRTdGFnZVdpZHRoKCkgLSB0aGlzLmNhbGN1bGF0ZVdpZHRoKCkpIC8gMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoY29uZmlnLnZlcnRpY2FsQWxpZ24pIHtcbiAgICAgICAgICAgIGNhc2UgV2luZG93QWxpZ24uU1RBUlQ6XG4gICAgICAgICAgICAgICAgdGhpcy55ID0gIV8uaXNOYU4odGhpcy5wYWRkaW5nVG9wKSA/IHRoaXMucGFkZGluZ1RvcCA6IDA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFdpbmRvd0FsaWduLkVORDpcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBWaWV3VXRpbC5nZXRTdGFnZUhlaWdodCgpIC0gdGhpcy5jYWxjdWxhdGVIZWlnaHQoKTtcbiAgICAgICAgICAgICAgICBpZiAoIV8uaXNOYU4odGhpcy5wYWRkaW5nQm90dG9tKSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSAtPSB0aGlzLnBhZGRpbmdCb3R0b207XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMueSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLnkgPSAoVmlld1V0aWwuZ2V0U3RhZ2VIZWlnaHQoKSAtIHRoaXMuY2FsY3VsYXRlSGVpZ2h0KCkpIC8gMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjbGVhclNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ggPSBOYU47XG4gICAgICAgIHRoaXMuX3kgPSBOYU47XG4gICAgICAgIHRoaXMuX3dpZHRoID0gTmFOO1xuICAgICAgICB0aGlzLl9oZWlnaHQgPSBOYU47XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbW1pdFNpemVQcm9wZXJ0aWVzKCk6IHZvaWQge31cblxuICAgIHByb3RlY3RlZCBjb21taXRQb3NpdGlvblByb3BlcnRpZXMoKTogdm9pZCB7fVxuXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVBvc2l0aW9uID0gKCk6IHZvaWQgPT4gdGhpcy5zZXRQb3NpdGlvbigpO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHVibGljIE1ldGhvZHNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgY2FsY3VsYXRlV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICFfLmlzTmFOKHRoaXMud2lkdGgpID8gdGhpcy53aWR0aCA6IFZpZXdVdGlsLmdldFdpZHRoKHRoaXMuZ2V0Q29udGFpbmVyKCkpO1xuICAgIH1cbiAgICBwdWJsaWMgY2FsY3VsYXRlSGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAhXy5pc05hTih0aGlzLmhlaWdodCkgPyB0aGlzLmhlaWdodCA6IFZpZXdVdGlsLmdldEhlaWdodCh0aGlzLmdldENvbnRhaW5lcigpKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQcml2YXRlIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl93aWR0aDtcbiAgICB9XG4gICAgcHJvdGVjdGVkIHNldCB3aWR0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHZhbHVlID0gV2luZG93QmFzZS5wYXJzZVdpZHRoKHZhbHVlLCB0aGlzLmdldENvbmZpZygpKTtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl93aWR0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3dpZHRoID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY29tbWl0U2l6ZVByb3BlcnRpZXMoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVpZ2h0O1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgc2V0IGhlaWdodCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHZhbHVlID0gV2luZG93QmFzZS5wYXJzZVdpZHRoKHZhbHVlLCB0aGlzLmdldENvbmZpZygpKTtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl9oZWlnaHQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9oZWlnaHQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jb21taXRTaXplUHJvcGVydGllcygpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyBcdFB1YmxpYyBQcm9wZXJ0aWVzXG4gICAgLy9cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGdldCB4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl94O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgeCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHZhbHVlID0gV2luZG93QmFzZS5wYXJzZVgodmFsdWUsIHRoaXMuZ2V0Q29uZmlnKCkpO1xuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuX3gpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl94ID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY29tbWl0UG9zaXRpb25Qcm9wZXJ0aWVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB5KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl95O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgeSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHZhbHVlID0gV2luZG93QmFzZS5wYXJzZVkodmFsdWUsIHRoaXMuZ2V0Q29uZmlnKCkpO1xuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuX3kpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl95ID0gdmFsdWU7XG4gICAgICAgIHRoaXMuY29tbWl0UG9zaXRpb25Qcm9wZXJ0aWVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYWRkaW5nVG9wKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENvbmZpZygpLnBhZGRpbmdUb3A7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYWRkaW5nTGVmdCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDb25maWcoKS5wYWRkaW5nTGVmdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBhZGRpbmdSaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDb25maWcoKS5wYWRkaW5nUmlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYWRkaW5nQm90dG9tKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENvbmZpZygpLnBhZGRpbmdCb3R0b207XG4gICAgfVxufVxuIl19
@@ -1,19 +0,0 @@
1
- import { ExtendedError } from '@ts-core/common';
2
- export class WindowClosedError extends ExtendedError {
3
- // --------------------------------------------------------------------------
4
- //
5
- // Constructor
6
- //
7
- // --------------------------------------------------------------------------
8
- constructor(message = WindowClosedError.MESSAGE, code = WindowClosedError.CODE) {
9
- super(message, code);
10
- }
11
- }
12
- // --------------------------------------------------------------------------
13
- //
14
- // Static Methods
15
- //
16
- // --------------------------------------------------------------------------
17
- WindowClosedError.CODE = ExtendedError.DEFAULT_ERROR_CODE;
18
- WindowClosedError.MESSAGE = 'WINDOW_CLOSED';
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2luZG93Q2xvc2VkRXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd2luZG93L1dpbmRvd0Nsb3NlZEVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdoRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsYUFBMkI7SUFVOUQsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixlQUFlO0lBQ2YsRUFBRTtJQUNGLDZFQUE2RTtJQUU3RSxZQUFZLFVBQWtCLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxPQUFlLGlCQUFpQixDQUFDLElBQUk7UUFDMUYsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDOztBQWpCRCw2RUFBNkU7QUFDN0UsRUFBRTtBQUNGLGtCQUFrQjtBQUNsQixFQUFFO0FBQ0YsNkVBQTZFO0FBRS9ELHNCQUFJLEdBQUcsYUFBYSxDQUFDLGtCQUFrQixDQUFDO0FBQ3hDLHlCQUFPLEdBQUcsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXh0ZW5kZWRFcnJvciB9IGZyb20gJ0B0cy1jb3JlL2NvbW1vbic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBjbGFzcyBXaW5kb3dDbG9zZWRFcnJvciBleHRlbmRzIEV4dGVuZGVkRXJyb3I8dm9pZCwgbnVtYmVyPiB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vICBTdGF0aWMgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBzdGF0aWMgQ09ERSA9IEV4dGVuZGVkRXJyb3IuREVGQVVMVF9FUlJPUl9DT0RFO1xuICAgIHB1YmxpYyBzdGF0aWMgTUVTU0FHRSA9ICdXSU5ET1dfQ0xPU0VEJztcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy9cbiAgICAvLyAgQ29uc3RydWN0b3JcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcgPSBXaW5kb3dDbG9zZWRFcnJvci5NRVNTQUdFLCBjb2RlOiBudW1iZXIgPSBXaW5kb3dDbG9zZWRFcnJvci5DT0RFKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UsIGNvZGUpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,197 +0,0 @@
1
- import * as _ from 'lodash';
2
- import { IDestroyable } from '@ts-core/common';
3
- import { ViewUtil } from '../util/ViewUtil';
4
- export class WindowConfig {
5
- // --------------------------------------------------------------------------
6
- //
7
- // Constructor
8
- //
9
- // --------------------------------------------------------------------------
10
- constructor(isModal = false, isResizeable = false, width = NaN, height = NaN) {
11
- this.isModal = false;
12
- this.isExpandable = false;
13
- this.isResizeable = false;
14
- this.isMinimizable = false;
15
- this.isDisableClose = false;
16
- this.isContentDragable = true;
17
- this.x = NaN;
18
- this.y = NaN;
19
- this.defaultWidth = NaN;
20
- this.defaultMinWidth = NaN;
21
- this.defaultMaxWidth = NaN;
22
- this.defaultHeight = NaN;
23
- this.defaultMinHeight = NaN;
24
- this.defaultMaxHeight = NaN;
25
- this.paddingTop = NaN;
26
- this.paddingLeft = NaN;
27
- this.paddingRight = NaN;
28
- this.paddingBottom = NaN;
29
- this._elementMaxX = NaN;
30
- this._elementMinX = NaN;
31
- this._elementMaxY = NaN;
32
- this._elementMinY = NaN;
33
- this._elementMinWidth = NaN;
34
- this._elementMaxWidth = NaN;
35
- this._elementMinHeight = NaN;
36
- this._elementMaxHeight = NaN;
37
- this.isModal = isModal;
38
- this.isResizeable = isResizeable;
39
- if (!_.isNaN(width)) {
40
- this.defaultWidth = width;
41
- }
42
- if (!_.isNaN(height)) {
43
- this.defaultHeight = height;
44
- }
45
- }
46
- // --------------------------------------------------------------------------
47
- //
48
- // Public Methods
49
- //
50
- // --------------------------------------------------------------------------
51
- setDefaultProperties() {
52
- this.width = this.elementWidth;
53
- this.maxWidth = this.elementMaxWidth;
54
- this.minWidth = this.elementMinWidth;
55
- this.height = this.elementHeight;
56
- this.maxHeight = this.elementMaxHeight;
57
- this.minHeight = this.elementMinHeight;
58
- }
59
- destroy() {
60
- if (!_.isNil(this.data) && IDestroyable.instanceOf(this.data)) {
61
- this.data.destroy();
62
- }
63
- this.data = null;
64
- }
65
- // --------------------------------------------------------------------------
66
- //
67
- // Public Properties
68
- //
69
- // --------------------------------------------------------------------------
70
- get elementMinY() {
71
- if (!_.isNaN(this._elementMinY)) {
72
- return this._elementMinY;
73
- }
74
- this._elementMinY = 0 - ViewUtil.getStageHeight();
75
- if (!_.isNaN(this.paddingTop)) {
76
- this._elementMinY += this.paddingTop;
77
- }
78
- return this._elementMinY;
79
- }
80
- get elementMaxY() {
81
- if (!_.isNaN(this._elementMaxY)) {
82
- return this._elementMaxY;
83
- }
84
- this._elementMaxY = ViewUtil.getStageHeight();
85
- if (!_.isNaN(this.paddingBottom)) {
86
- this._elementMaxY -= this.paddingBottom;
87
- }
88
- return this._elementMaxY;
89
- }
90
- get elementMinX() {
91
- if (!_.isNaN(this._elementMinX)) {
92
- return this._elementMinX;
93
- }
94
- this._elementMinX = -ViewUtil.getStageWidth();
95
- if (!_.isNaN(this.paddingLeft)) {
96
- this._elementMinX += this.paddingLeft;
97
- }
98
- return this._elementMinX;
99
- }
100
- get elementMaxX() {
101
- if (!_.isNaN(this._elementMaxX)) {
102
- return this._elementMaxX;
103
- }
104
- this._elementMaxX = ViewUtil.getStageWidth();
105
- if (!_.isNaN(this.paddingRight)) {
106
- this._elementMaxX -= this.paddingRight;
107
- }
108
- return this._elementMaxX;
109
- }
110
- get elementWidth() {
111
- if (this._elementWidth) {
112
- return this._elementWidth;
113
- }
114
- this._elementWidth = 'auto';
115
- if (this.defaultWidth) {
116
- this._elementWidth = this.defaultWidth + 'px';
117
- }
118
- return this._elementWidth;
119
- }
120
- get elementMinWidth() {
121
- if (!_.isNaN(this._elementMinWidth)) {
122
- return this._elementMinWidth;
123
- }
124
- this._elementMinWidth = 0;
125
- if (!_.isNaN(this.defaultMinWidth)) {
126
- let value = ViewUtil.getStageWidth();
127
- if (!_.isNaN(this.paddingLeft)) {
128
- value -= this.paddingLeft;
129
- }
130
- if (!_.isNaN(this.paddingRight)) {
131
- value -= this.paddingRight;
132
- }
133
- this._elementMinWidth = Math.min(this.defaultMinWidth, value);
134
- }
135
- return this._elementMinWidth;
136
- }
137
- get elementMaxWidth() {
138
- if (!_.isNaN(this._elementMaxWidth)) {
139
- return this._elementMaxWidth;
140
- }
141
- this._elementMaxWidth = ViewUtil.getStageWidth();
142
- if (!_.isNaN(this.paddingLeft)) {
143
- this._elementMaxWidth -= this.paddingLeft;
144
- }
145
- if (!_.isNaN(this.paddingRight)) {
146
- this._elementMaxWidth -= this.paddingRight;
147
- }
148
- if (!_.isNaN(this.defaultMaxWidth)) {
149
- this._elementMaxWidth = Math.min(this.defaultMaxWidth, this._elementMaxWidth);
150
- }
151
- return this._elementMaxWidth;
152
- }
153
- get elementHeight() {
154
- if (this._elementHeight) {
155
- return this._elementHeight;
156
- }
157
- this._elementHeight = 'auto';
158
- if (this.defaultHeight) {
159
- this._elementHeight = this.defaultHeight + 'px';
160
- }
161
- return this._elementHeight;
162
- }
163
- get elementMinHeight() {
164
- if (!_.isNaN(this._elementMinHeight)) {
165
- return this._elementMinHeight;
166
- }
167
- this._elementMinHeight = 0;
168
- if (!_.isNaN(this.defaultMinHeight)) {
169
- let value = ViewUtil.getStageHeight();
170
- if (!_.isNaN(this.paddingTop)) {
171
- value -= this.paddingTop;
172
- }
173
- if (!_.isNaN(this.paddingBottom)) {
174
- value -= this.paddingBottom;
175
- }
176
- this._elementMinHeight = Math.min(this.defaultMinHeight, value);
177
- }
178
- return this._elementMinHeight;
179
- }
180
- get elementMaxHeight() {
181
- if (!_.isNaN(this._elementMaxHeight)) {
182
- return this._elementMaxHeight;
183
- }
184
- this._elementMaxHeight = ViewUtil.getStageHeight();
185
- if (!_.isNaN(this.paddingTop)) {
186
- this._elementMaxHeight -= this.paddingTop;
187
- }
188
- if (!_.isNaN(this.paddingBottom)) {
189
- this._elementMaxHeight -= this.paddingBottom;
190
- }
191
- if (!_.isNaN(this.defaultMaxHeight)) {
192
- this._elementMaxHeight = Math.min(this.defaultMaxHeight, this._elementMaxHeight);
193
- }
194
- return this._elementMaxHeight;
195
- }
196
- }
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2luZG93Q29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3dpbmRvdy9XaW5kb3dDb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU1QyxNQUFNLE9BQU8sWUFBWTtJQTREckIsNkVBQTZFO0lBQzdFLEVBQUU7SUFDRixlQUFlO0lBQ2YsRUFBRTtJQUNGLDZFQUE2RTtJQUU3RSxZQUFZLFVBQW1CLEtBQUssRUFBRSxlQUF3QixLQUFLLEVBQUUsUUFBZ0IsR0FBRyxFQUFFLFNBQWlCLEdBQUc7UUExRHZHLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDL0IsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDaEMsc0JBQWlCLEdBQVksSUFBSSxDQUFDO1FBRWxDLE1BQUMsR0FBVyxHQUFHLENBQUM7UUFDaEIsTUFBQyxHQUFXLEdBQUcsQ0FBQztRQU9oQixpQkFBWSxHQUFXLEdBQUcsQ0FBQztRQUMzQixvQkFBZSxHQUFXLEdBQUcsQ0FBQztRQUM5QixvQkFBZSxHQUFXLEdBQUcsQ0FBQztRQUs5QixrQkFBYSxHQUFXLEdBQUcsQ0FBQztRQUM1QixxQkFBZ0IsR0FBVyxHQUFHLENBQUM7UUFDL0IscUJBQWdCLEdBQVcsR0FBRyxDQUFDO1FBRS9CLGVBQVUsR0FBVyxHQUFHLENBQUM7UUFDekIsZ0JBQVcsR0FBVyxHQUFHLENBQUM7UUFDMUIsaUJBQVksR0FBVyxHQUFHLENBQUM7UUFDM0Isa0JBQWEsR0FBVyxHQUFHLENBQUM7UUFTekIsaUJBQVksR0FBVyxH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YUFBYSxDQUFDLEVBQUU7Z0JBQzlCLEtBQUssSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO2FBQy9CO1lBQ0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ25FO1FBQ0QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBQ3ZCLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDN0M7UUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDaEQ7UUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUNqQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDcEY7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNsQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBJRGVzdHJveWFibGUgfSBmcm9tICdAdHMtY29yZS9jb21tb24nO1xuaW1wb3J0IHsgSVdpbmRvd0NvbmZpZywgV2luZG93QWxpZ24gfSBmcm9tICcuL0lXaW5kb3dDb25maWcnO1xuaW1wb3J0IHsgVmlld1V0aWwgfSBmcm9tICcuLi91dGlsL1ZpZXdVdGlsJztcblxuZXhwb3J0IGNsYXNzIFdpbmRvd0NvbmZpZzxUID0gYW55PiBpbXBsZW1lbnRzIElXaW5kb3dDb25maWc8VD4sIElEZXN0cm95YWJsZSB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHJvcGVydGllc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBpZDogc3RyaW5nO1xuICAgIHB1YmxpYyBpc01vZGFsOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzRXhwYW5kYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc1Jlc2l6ZWFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNNaW5pbWl6YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0Rpc2FibGVDbG9zZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0NvbnRlbnREcmFnYWJsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBwdWJsaWMgeDogbnVtYmVyID0gTmFOO1xuICAgIHB1YmxpYyB5OiBudW1iZXIgPSBOYU47XG4gICAgcHVibGljIGRhdGE6IFQ7XG4gICAgcHVibGljIHByb3BlcnRpZXNJZDogc3RyaW5nO1xuXG4gICAgcHVibGljIHdpZHRoOiBzdHJpbmc7XG4gICAgcHVibGljIG1pbldpZHRoOiBudW1iZXI7XG4gICAgcHVibGljIG1heFdpZHRoOiBudW1iZXI7XG4gICAgcHVibGljIGRlZmF1bHRXaWR0aDogbnVtYmVyID0gTmFOO1xuICAgIHB1YmxpYyBkZWZhdWx0TWluV2lkdGg6IG51bWJlciA9IE5hTjtcbiAgICBwdWJsaWMgZGVmYXVsdE1heFdpZHRoOiBudW1iZXIgPSBOYU47XG5cbiAgICBwdWJsaWMgaGVpZ2h0OiBzdHJpbmc7XG4gICAgcHVibGljIG1pbkhlaWdodDogbnVtYmVyO1xuICAgIHB1YmxpYyBtYXhIZWlnaHQ6IG51bWJlcjtcbiAgICBwdWJsaWMgZGVmYXVsdEhlaWdodDogbnVtYmVyID0gTmFOO1xuICAgIHB1YmxpYyBkZWZhdWx0TWluSGVpZ2h0OiBudW1iZXIgPSBOYU47XG4gICAgcHVibGljIGRlZmF1bHRNYXhIZWlnaHQ6IG51bWJlciA9IE5hTjtcblxuICAgIHB1YmxpYyBwYWRkaW5nVG9wOiBudW1iZXIgPSBOYU47XG4gICAgcHVibGljIHBhZGRpbmdMZWZ0OiBudW1iZXIgPSBOYU47XG4gICAgcHVibGljIHBhZGRpbmdSaWdodDogbnVtYmVyID0gTmFOO1xuICAgIHB1YmxpYyBwYWRkaW5nQm90dG9tOiBudW1iZXIgPSBOYU47XG5cbiAgICBwdWJsaWMgYXV0b0ZvY3VzOiBzdHJpbmc7XG4gICAgcHVibGljIHJlc3RvcmVGb2N1czogYm9vbGVhbjtcbiAgICBwdWJsaWMgZGVsYXlGb2N1c1RyYXA6IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgdmVydGljYWxBbGlnbjogV2luZG93QWxpZ247XG4gICAgcHVibGljIGhvcml6b250YWxBbGlnbjogV2luZG93QWxpZ247XG5cbiAgICBwcm90ZWN0ZWQgX2VsZW1lbnRNYXhYOiBudW1iZXIgPSBOYU47XG4gICAgcHJvdGVjdGVkIF9lbGVtZW50TWluWDogbnVtYmVyID0gTmFOO1xuXG4gICAgcHJvdGVjdGVkIF9lbGVtZW50TWF4WTogbnVtYmVyID0gTmFOO1xuICAgIHByb3RlY3RlZCBfZWxlbWVudE1pblk6IG51bWJlciA9IE5hTjtcblxuICAgIHByb3RlY3RlZCBfZWxlbWVudFdpZHRoOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIF9lbGVtZW50TWluV2lkdGg6IG51bWJlciA9IE5hTjtcbiAgICBwcm90ZWN0ZWQgX2VsZW1lbnRNYXhXaWR0aDogbnVtYmVyID0gTmFOO1xuXG4gICAgcHJvdGVjdGVkIF9lbGVtZW50SGVpZ2h0OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIF9lbGVtZW50TWluSGVpZ2h0OiBudW1iZXIgPSBOYU47XG4gICAgcHJvdGVjdGVkIF9lbGVtZW50TWF4SGVpZ2h0OiBudW1iZXIgPSBOYU47XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRDb25zdHJ1Y3RvclxuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIGNvbnN0cnVjdG9yKGlzTW9kYWw6IGJvb2xlYW4gPSBmYWxzZSwgaXNSZXNpemVhYmxlOiBib29sZWFuID0gZmFsc2UsIHdpZHRoOiBudW1iZXIgPSBOYU4sIGhlaWdodDogbnVtYmVyID0gTmFOKSB7XG4gICAgICAgIHRoaXMuaXNNb2RhbCA9IGlzTW9kYWw7XG4gICAgICAgIHRoaXMuaXNSZXNpemVhYmxlID0gaXNSZXNpemVhYmxlO1xuICAgICAgICBpZiAoIV8uaXNOYU4od2lkdGgpKSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRXaWR0aCA9IHdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIGlmICghXy5pc05hTihoZWlnaHQpKSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRIZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vXG4gICAgLy8gXHRQdWJsaWMgTWV0aG9kc1xuICAgIC8vXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBzZXREZWZhdWx0UHJvcGVydGllcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53aWR0aCA9IHRoaXMuZWxlbWVudFdpZHRoO1xuICAgICAgICB0aGlzLm1heFdpZHRoID0gdGhpcy5lbGVtZW50TWF4V2lkdGg7XG4gICAgICAgIHRoaXMubWluV2lkdGggPSB0aGlzLmVsZW1lbnRNaW5XaWR0aDtcblxuICAgICAgICB0aGlzLmhlaWdodCA9IHRoaXMuZWxlbWVudEhlaWdodDtcbiAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSB0aGlzLmVsZW1lbnRNYXhIZWlnaHQ7XG4gICAgICAgIHRoaXMubWluSGVpZ2h0ID0gdGhpcy5lbGVtZW50TWluSGVpZ2h0O1xuICAgIH1cblxuICAgIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAoIV8uaXNOaWwodGhpcy5kYXRhKSAmJiBJRGVzdHJveWFibGUuaW5zdGFuY2VPZih0aGlzLmRhdGEpKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGEuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0YSA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvL1xuICAgIC8vIFx0UHVibGljIFByb3BlcnRpZXNcbiAgICAvL1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgZ2V0IGVsZW1lbnRNaW5ZKCk6IG51bWJlciB7XG4gICAgICAgIGlmICghXy5pc05hTih0aGlzLl9lbGVtZW50TWluWSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50TWluWTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9lbGVtZW50TWluWSA9IDAgLSBWaWV3VXRpbC5nZXRTdGFnZUhlaWdodCgpO1xuICAgICAgICBpZiAoIV8uaXNOYU4odGhpcy5wYWRkaW5nVG9wKSkge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudE1pblkgKz0gdGhpcy5wYWRkaW5nVG9wO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50TWluWTtcbiAgICB9XG4gICAgcHVibGljIGdldCBlbGVtZW50TWF4WSgpOiBudW1iZXIge1xuICAgICAgICBpZiAoIV8uaXNOYU4odGhpcy5fZWxlbWVudE1heFkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudE1heFk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZWxlbWVudE1heFkgPSBWaWV3VXRpbC5nZXRTdGFnZUhlaWdodCgpO1xuICAgICAgICBpZiAoIV8uaXNOYU4odGhpcy5wYWRkaW5nQm90dG9tKSkge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudE1heFkgLT0gdGhpcy5wYWRkaW5nQm90dG9tO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50TWF4WTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVsZW1lbnRNaW5YKCk6IG51bWJlciB7XG4gICAgICAgIGlmICghXy5pc05hTih0aGlzLl9lbGVtZW50TWluWCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50TWluWDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9lbGVtZW50TWluWCA9IC1WaWV3VXRpbC5nZXRTdGFnZVdpZHRoKCk7XG4gICAgICAgIGlmICghXy5pc05hTih0aGlzLnBhZGRpbmdMZWZ0KSkge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudE1pblggKz0gdGhpcy5wYWRkaW5nTGVmdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudE1pblg7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgZWxlbWVudE1heFgoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKCFfLmlzTmFOKHRoaXMuX2VsZW1lbnRNYXhYKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRNYXhYO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2VsZW1lbnRNYXhYID0gVmlld1V0aWwuZ2V0U3RhZ2VXaWR0aCgpO1xuICAgICAgICBpZiAoIV8uaXNOYU4odGhpcy5wYWRkaW5nUmlnaHQpKSB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50TWF4WCAtPSB0aGlzLnBhZGRpbmdSaWdodDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudE1heFg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlbGVtZW50V2lkdGgoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnRXaWR0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9lbGVtZW50V2lkdGggPSAnYXV0byc7XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudFdpZHRoID0gdGhpcy5kZWZhdWx0V2lkdGggKyAncHgnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50V2lkdGg7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgZWxlbWVudE1pbldpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIGlmICghXy5pc05hTih0aGlzLl9lbGVtZW50TWluV2lkdGgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudE1pbldpZHRoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2VsZW1lbnRNaW5XaWR0aCA9IDA7XG4gICAgICAgIGlmICghXy5pc05hTih0aGlzLmRlZmF1bHRNaW5XaWR0aCkpIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IFZpZXdVdGlsLmdldFN0YWdlV2lkdGgoKTtcbiAgICAgICAgICAgIGlmICghXy5pc05hTih0aGlzLnBhZGRpbmdMZWZ0KSkge1xuICAgICAgICAgICAgICAgIHZhbHVlIC09IHRoaXMucGFkZGluZ0xlZnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIV8uaXNOYU4odGhpcy5wYWRkaW5nUmlnaHQpKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgLT0gdGhpcy5wYWRkaW5nUmlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50TWluV2lkdGggPSBNYXRoLm1pbih0aGlzLmRlZmF1bHRNaW5XaWR0aCwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50TWluV2lkdGg7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgZWxlbWVudE1heFdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIGlmICghXy5pc05hTih0aGlzLl9lbGVtZW50TWF4V2lkdGgpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudE1heFdpZHRoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2VsZW1lbnRNYXhXaWR0aCA9IFZpZXdVdGlsLmdldFN0YWdlV2lkdGgoKTtcbiAgICAgICAgaWYgKCFfLmlzTmFOKHRoaXMucGFkZGluZ0xlZnQpKSB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50TWF4V2lkdGggLT0gdGhpcy5wYWRkaW5nTGVmdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIV8uaXNOYU4odGhpcy5wYWRkaW5nUmlnaHQpKSB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50TWF4V2lkdGggLT0gdGhpcy5wYWRkaW5nUmlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFfLmlzTmFOKHRoaXMuZGVmYXVsdE1heFdpZHRoKSkge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudE1heFdpZHRoID0gTWF0aC5taW4odGhpcy5kZWZhdWx0TWF4V2lkdGgsIHRoaXMuX2VsZW1lbnRNYXhXaWR0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRNYXhXaWR0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVsZW1lbnRIZWlnaHQoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnRIZWlnaHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50SGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2VsZW1lbnRIZWlnaHQgPSAnYXV0byc7XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRIZWlnaHQgPSB0aGlzLmRlZmF1bHRIZWlnaHQgKyAncHgnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50SGVpZ2h0O1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IGVsZW1lbnRNaW5IZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKCFfLmlzTmFOKHRoaXMuX2VsZW1lbnRNaW5IZWlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudE1pbkhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9lbGVtZW50TWluSGVpZ2h0ID0gMDtcbiAgICAgICAgaWYgKCFfLmlzTmFOKHRoaXMuZGVmYXVsdE1pbkhlaWdodCkpIHtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IFZpZXdVdGlsLmdldFN0YWdlSGVpZ2h0KCk7XG4gICAgICAgICAgICBpZiAoIV8uaXNOYU4odGhpcy5wYWRkaW5nVG9wKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlIC09IHRoaXMucGFkZGluZ1RvcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghXy5pc05hTih0aGlzLnBhZGRpbmdCb3R0b20pKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgLT0gdGhpcy5wYWRkaW5nQm90dG9tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fZWxlbWVudE1pbkhlaWdodCA9IE1hdGgubWluKHRoaXMuZGVmYXVsdE1pbkhlaWdodCwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50TWluSGVpZ2h0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWxlbWVudE1heEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBpZiAoIV8uaXNOYU4odGhpcy5fZWxlbWVudE1heEhlaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50TWF4SGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2VsZW1lbnRNYXhIZWlnaHQgPSBWaWV3VXRpbC5nZXRTdGFnZUhlaWdodCgpO1xuICAgICAgICBpZiAoIV8uaXNOYU4odGhpcy5wYWRkaW5nVG9wKSkge1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudE1heEhlaWdodCAtPSB0aGlzLnBhZGRpbmdUb3A7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFfLmlzTmFOKHRoaXMucGFkZGluZ0JvdHRvbSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRNYXhIZWlnaHQgLT0gdGhpcy5wYWRkaW5nQm90dG9tO1xuICAgICAgICB9XG4gICAgICAgIGlmICghXy5pc05hTih0aGlzLmRlZmF1bHRNYXhIZWlnaHQpKSB7XG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50TWF4SGVpZ2h0ID0gTWF0aC5taW4odGhpcy5kZWZhdWx0TWF4SGVpZ2h0LCB0aGlzLl9lbGVtZW50TWF4SGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudE1heEhlaWdodDtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFdpbmRvd0NvbmZpZ09wdGlvbnM8VCA9IGFueT4gPSB7IFtQIGluIGtleW9mIFdpbmRvd0NvbmZpZzxUPl0/OiBhbnkgfTtcbiJdfQ==