@fundamental-ngx/cdk 0.43.2 → 0.44.0-rc.1

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 (303) hide show
  1. package/data-source/data-source.directive.d.ts +1 -1
  2. package/esm2022/data-source/base/base-data-source.class.mjs +112 -0
  3. package/{esm2020 → esm2022}/data-source/data-source.directive.mjs +4 -4
  4. package/{esm2020 → esm2022}/data-source/data-source.module.mjs +5 -5
  5. package/{esm2020 → esm2022}/forms/cva/cva-control.class.mjs +4 -4
  6. package/{esm2020 → esm2022}/forms/cva/cva.directive.mjs +4 -4
  7. package/{esm2020 → esm2022}/forms/forms.module.mjs +5 -5
  8. package/{esm2020 → esm2022}/fundamental-ngx.module.mjs +5 -5
  9. package/{esm2020 → esm2022}/utils/abstract-fd-ngx-class.mjs +4 -4
  10. package/{esm2020 → esm2022}/utils/components/dynamic-portal/dynamic-portal.component.mjs +4 -4
  11. package/esm2022/utils/directives/auto-complete/auto-complete.directive.mjs +136 -0
  12. package/{esm2020 → esm2022}/utils/directives/auto-complete/auto-complete.module.mjs +5 -5
  13. package/{esm2020 → esm2022}/utils/directives/breakpoints/breakpoint.directive.mjs +8 -8
  14. package/{esm2020 → esm2022}/utils/directives/clicked/clicked-behavior.module.mjs +5 -5
  15. package/{esm2020 → esm2022}/utils/directives/clicked/clicked-event.plugin.mjs +4 -4
  16. package/esm2022/utils/directives/clicked/clicked.directive.mjs +51 -0
  17. package/{esm2020 → esm2022}/utils/directives/clicked/fdk-clicked-provider.service.mjs +4 -4
  18. package/esm2022/utils/directives/disabled/disabled-behavior.directive.mjs +114 -0
  19. package/{esm2020 → esm2022}/utils/directives/disabled/disabled-behavior.module.mjs +5 -5
  20. package/{esm2020 → esm2022}/utils/directives/disabled/disabled.observer.mjs +4 -4
  21. package/{esm2020 → esm2022}/utils/directives/disabled/fdk-disabled-provider.service.mjs +4 -4
  22. package/{esm2020 → esm2022}/utils/directives/focus-key-manager/focus-key-manager-helpers.module.mjs +11 -11
  23. package/esm2022/utils/directives/focus-key-manager/focus-key-manager-item.directive.mjs +98 -0
  24. package/esm2022/utils/directives/focus-key-manager/focus-key-manager-list.directive.mjs +114 -0
  25. package/{esm2020 → esm2022}/utils/directives/focusable-grid/focusable-grid.directive.mjs +10 -10
  26. package/{esm2020 → esm2022}/utils/directives/focusable-grid/focusable-grid.module.mjs +5 -5
  27. package/esm2022/utils/directives/focusable-item/focusable-item.directive.mjs +217 -0
  28. package/{esm2020 → esm2022}/utils/directives/focusable-item/focusable-item.module.mjs +5 -5
  29. package/{esm2020 → esm2022}/utils/directives/focusable-item/focusable.observer.mjs +4 -4
  30. package/esm2022/utils/directives/focusable-list/focusable-list.directive.mjs +330 -0
  31. package/{esm2020 → esm2022}/utils/directives/focusable-list/focusable-list.module.mjs +5 -5
  32. package/esm2022/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.mjs +79 -0
  33. package/{esm2020 → esm2022}/utils/directives/ignore-click-on-selection/ignore-click-on-selection.module.mjs +5 -5
  34. package/esm2022/utils/directives/initial-focus/initial-focus.directive.mjs +152 -0
  35. package/{esm2020 → esm2022}/utils/directives/initial-focus/initial-focus.module.mjs +5 -5
  36. package/{esm2020 → esm2022}/utils/directives/intersection-spy/intersection-spy.directive.mjs +4 -4
  37. package/esm2022/utils/directives/line-clamp/line-clamp.directive.mjs +262 -0
  38. package/{esm2020 → esm2022}/utils/directives/line-clamp/line-clamp.module.mjs +11 -11
  39. package/esm2022/utils/directives/only-digits/only-digits.directive.mjs +218 -0
  40. package/{esm2020 → esm2022}/utils/directives/only-digits/only-digits.module.mjs +5 -5
  41. package/esm2022/utils/directives/overflow-list/overflow-list-item.directive.mjs +42 -0
  42. package/esm2022/utils/directives/overflow-list/overflow-list.directive.mjs +142 -0
  43. package/{esm2020 → esm2022}/utils/directives/overflow-list/overflow-list.module.mjs +11 -11
  44. package/{esm2020 → esm2022}/utils/directives/readonly/fdk-readonly-provider.service.mjs +4 -4
  45. package/esm2022/utils/directives/readonly/readonly-behavior.directive.mjs +97 -0
  46. package/{esm2020 → esm2022}/utils/directives/readonly/readonly-behavior.module.mjs +5 -5
  47. package/{esm2020 → esm2022}/utils/directives/readonly/readonly.observer.mjs +4 -4
  48. package/esm2022/utils/directives/repeat/repeat.directive.mjs +65 -0
  49. package/{esm2020 → esm2022}/utils/directives/repeat/repeat.module.mjs +5 -5
  50. package/esm2022/utils/directives/resize/resize-handle.directive.mjs +42 -0
  51. package/esm2022/utils/directives/resize/resize.directive.mjs +231 -0
  52. package/{esm2020 → esm2022}/utils/directives/resize/resize.module.mjs +5 -5
  53. package/{esm2020 → esm2022}/utils/directives/selectable-list/selectable-item.directive.mjs +12 -12
  54. package/{esm2020 → esm2022}/utils/directives/selectable-list/selectable-list.directive.mjs +10 -10
  55. package/{esm2020 → esm2022}/utils/directives/selectable-list/selectable-list.module.mjs +5 -5
  56. package/{esm2020 → esm2022}/utils/directives/selectable-list/selection.service.mjs +4 -4
  57. package/esm2022/utils/directives/template/template.directive.mjs +49 -0
  58. package/{esm2020 → esm2022}/utils/directives/template/template.module.mjs +5 -5
  59. package/esm2022/utils/directives/truncate/truncate.directive.mjs +96 -0
  60. package/{esm2020 → esm2022}/utils/directives/truncate/truncate.module.mjs +5 -5
  61. package/esm2022/utils/drag-and-drop/dnd-item/dnd-item.directive.mjs +274 -0
  62. package/{esm2020 → esm2022}/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.mjs +4 -4
  63. package/{esm2020 → esm2022}/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.mjs +4 -4
  64. package/{esm2020 → esm2022}/utils/drag-and-drop/dnd-list/dnd-list.directive.mjs +4 -4
  65. package/{esm2020 → esm2022}/utils/drag-and-drop/drag-and-drop.module.mjs +5 -5
  66. package/{esm2020 → esm2022}/utils/dynamic-component/dynamic-component.service.mjs +4 -4
  67. package/esm2022/utils/functions/get-document-font-size.mjs +9 -0
  68. package/{esm2020 → esm2022}/utils/pipes/async-or-sync.pipe.mjs +4 -4
  69. package/{esm2020 → esm2022}/utils/pipes/displayFn.pipe.mjs +4 -4
  70. package/{esm2020 → esm2022}/utils/pipes/filter-strings.pipe.mjs +4 -4
  71. package/{esm2020 → esm2022}/utils/pipes/is-compact.pipe.mjs +4 -4
  72. package/{esm2020 → esm2022}/utils/pipes/make-async.pipe.mjs +4 -4
  73. package/{esm2020 → esm2022}/utils/pipes/pipe.module.mjs +23 -23
  74. package/{esm2020 → esm2022}/utils/pipes/safe.pipe.mjs +4 -4
  75. package/esm2022/utils/pipes/search-highlight.pipe.mjs +32 -0
  76. package/{esm2020 → esm2022}/utils/pipes/truncate.pipe.mjs +4 -4
  77. package/{esm2020 → esm2022}/utils/pipes/two-digits.pipe.mjs +4 -4
  78. package/{esm2020 → esm2022}/utils/pipes/value-by-path.pipe.mjs +4 -4
  79. package/{esm2020 → esm2022}/utils/services/content-density.service.mjs +4 -4
  80. package/{esm2020 → esm2022}/utils/services/destroyed.service.mjs +4 -4
  81. package/{esm2020 → esm2022}/utils/services/focus-trap.service.mjs +4 -4
  82. package/{esm2020 → esm2022}/utils/services/keyboard-support/keyboard-support.service.mjs +4 -4
  83. package/{esm2020 → esm2022}/utils/services/local-storage.service.mjs +4 -4
  84. package/{esm2020 → esm2022}/utils/services/observers/attribute.observer.mjs +4 -4
  85. package/{esm2020 → esm2022}/utils/services/resize-observer.service.mjs +7 -7
  86. package/{esm2020 → esm2022}/utils/services/rtl.service.mjs +4 -4
  87. package/{esm2020 → esm2022}/utils/services/tabbable-element.service.mjs +4 -4
  88. package/{esm2020 → esm2022}/utils/services/themes.service.mjs +4 -4
  89. package/esm2022/utils/toast/base-toast-positions.mjs +108 -0
  90. package/{esm2020 → esm2022}/utils/toast/base-toast.service.mjs +4 -4
  91. package/{esm2020 → esm2022}/utils/toast/classes/base-toast-animated-container.component.mjs +4 -4
  92. package/{esm2020 → esm2022}/utils/toast/classes/base-toast-container.component.mjs +4 -4
  93. package/{esm2020 → esm2022}/utils/toast/classes/base-toast-overlay-container.mjs +4 -4
  94. package/{esm2020 → esm2022}/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-container.component.mjs +4 -4
  95. package/{esm2020 → esm2022}/utils/utils.module.mjs +77 -77
  96. package/{fesm2020 → fesm2022}/fundamental-ngx-cdk-data-source.mjs +11 -11
  97. package/{fesm2020 → fesm2022}/fundamental-ngx-cdk-data-source.mjs.map +1 -1
  98. package/{fesm2020 → fesm2022}/fundamental-ngx-cdk-forms.mjs +10 -10
  99. package/{fesm2020 → fesm2022}/fundamental-ngx-cdk-forms.mjs.map +1 -1
  100. package/{fesm2020 → fesm2022}/fundamental-ngx-cdk-utils.mjs +662 -657
  101. package/fesm2022/fundamental-ngx-cdk-utils.mjs.map +1 -0
  102. package/{fesm2015 → fesm2022}/fundamental-ngx-cdk.mjs +4 -4
  103. package/fesm2022/fundamental-ngx-cdk.mjs.map +1 -0
  104. package/forms/cva/cva.directive.d.ts +1 -1
  105. package/fundamental-ngx-cdk-v0.44.0-rc.1.tgz +0 -0
  106. package/package.json +23 -35
  107. package/utils/abstract-fd-ngx-class.d.ts +1 -1
  108. package/utils/components/dynamic-portal/dynamic-portal.component.d.ts +1 -1
  109. package/utils/directives/auto-complete/auto-complete.directive.d.ts +2 -2
  110. package/utils/directives/breakpoints/breakpoint.directive.d.ts +1 -1
  111. package/utils/directives/clicked/clicked.directive.d.ts +2 -2
  112. package/utils/directives/disabled/disabled-behavior.directive.d.ts +2 -2
  113. package/utils/directives/focus-key-manager/focus-key-manager-item.directive.d.ts +2 -2
  114. package/utils/directives/focus-key-manager/focus-key-manager-list.directive.d.ts +2 -2
  115. package/utils/directives/focusable-grid/focusable-grid.directive.d.ts +1 -1
  116. package/utils/directives/focusable-item/focusable-item.directive.d.ts +2 -2
  117. package/utils/directives/focusable-list/focusable-list.directive.d.ts +2 -2
  118. package/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.d.ts +2 -2
  119. package/utils/directives/initial-focus/initial-focus.directive.d.ts +2 -2
  120. package/utils/directives/intersection-spy/intersection-spy.directive.d.ts +1 -1
  121. package/utils/directives/line-clamp/line-clamp.directive.d.ts +4 -4
  122. package/utils/directives/only-digits/only-digits.directive.d.ts +2 -2
  123. package/utils/directives/overflow-list/overflow-list-item.directive.d.ts +2 -2
  124. package/utils/directives/overflow-list/overflow-list.directive.d.ts +2 -2
  125. package/utils/directives/readonly/readonly-behavior.directive.d.ts +2 -2
  126. package/utils/directives/repeat/repeat.directive.d.ts +2 -2
  127. package/utils/directives/resize/resize-handle.directive.d.ts +2 -2
  128. package/utils/directives/resize/resize.directive.d.ts +2 -2
  129. package/utils/directives/selectable-list/selectable-item.directive.d.ts +1 -1
  130. package/utils/directives/selectable-list/selectable-list.directive.d.ts +1 -1
  131. package/utils/directives/template/template.directive.d.ts +2 -2
  132. package/utils/directives/truncate/truncate.directive.d.ts +2 -2
  133. package/utils/drag-and-drop/dnd-item/dnd-item.directive.d.ts +1 -1
  134. package/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.d.ts +1 -1
  135. package/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.d.ts +1 -1
  136. package/utils/drag-and-drop/dnd-list/dnd-list.directive.d.ts +1 -1
  137. package/utils/toast/classes/base-toast-animated-container.component.d.ts +1 -1
  138. package/utils/toast/classes/base-toast-container.component.d.ts +1 -1
  139. package/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-container.component.d.ts +1 -1
  140. package/esm2020/data-source/base/base-data-source.class.mjs +0 -112
  141. package/esm2020/utils/directives/auto-complete/auto-complete.directive.mjs +0 -136
  142. package/esm2020/utils/directives/clicked/clicked.directive.mjs +0 -51
  143. package/esm2020/utils/directives/disabled/disabled-behavior.directive.mjs +0 -114
  144. package/esm2020/utils/directives/focus-key-manager/focus-key-manager-item.directive.mjs +0 -98
  145. package/esm2020/utils/directives/focus-key-manager/focus-key-manager-list.directive.mjs +0 -114
  146. package/esm2020/utils/directives/focusable-item/focusable-item.directive.mjs +0 -217
  147. package/esm2020/utils/directives/focusable-list/focusable-list.directive.mjs +0 -330
  148. package/esm2020/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.mjs +0 -79
  149. package/esm2020/utils/directives/initial-focus/initial-focus.directive.mjs +0 -152
  150. package/esm2020/utils/directives/line-clamp/line-clamp.directive.mjs +0 -262
  151. package/esm2020/utils/directives/only-digits/only-digits.directive.mjs +0 -218
  152. package/esm2020/utils/directives/overflow-list/overflow-list-item.directive.mjs +0 -42
  153. package/esm2020/utils/directives/overflow-list/overflow-list.directive.mjs +0 -142
  154. package/esm2020/utils/directives/readonly/readonly-behavior.directive.mjs +0 -97
  155. package/esm2020/utils/directives/repeat/repeat.directive.mjs +0 -65
  156. package/esm2020/utils/directives/resize/resize-handle.directive.mjs +0 -42
  157. package/esm2020/utils/directives/resize/resize.directive.mjs +0 -231
  158. package/esm2020/utils/directives/template/template.directive.mjs +0 -49
  159. package/esm2020/utils/directives/truncate/truncate.directive.mjs +0 -96
  160. package/esm2020/utils/drag-and-drop/dnd-item/dnd-item.directive.mjs +0 -272
  161. package/esm2020/utils/functions/get-document-font-size.mjs +0 -5
  162. package/esm2020/utils/pipes/search-highlight.pipe.mjs +0 -32
  163. package/esm2020/utils/toast/base-toast-positions.mjs +0 -108
  164. package/fesm2015/fundamental-ngx-cdk-data-source.mjs +0 -405
  165. package/fesm2015/fundamental-ngx-cdk-data-source.mjs.map +0 -1
  166. package/fesm2015/fundamental-ngx-cdk-forms.mjs +0 -398
  167. package/fesm2015/fundamental-ngx-cdk-forms.mjs.map +0 -1
  168. package/fesm2015/fundamental-ngx-cdk-utils.mjs +0 -7611
  169. package/fesm2015/fundamental-ngx-cdk-utils.mjs.map +0 -1
  170. package/fesm2015/fundamental-ngx-cdk.mjs.map +0 -1
  171. package/fesm2020/fundamental-ngx-cdk-utils.mjs.map +0 -1
  172. package/fesm2020/fundamental-ngx-cdk.mjs +0 -29
  173. package/fesm2020/fundamental-ngx-cdk.mjs.map +0 -1
  174. package/fundamental-ngx-cdk-v0.43.2.tgz +0 -0
  175. /package/{esm2020 → esm2022}/data-source/base/abstract-data-provider.class.mjs +0 -0
  176. /package/{esm2020 → esm2022}/data-source/fundamental-ngx-cdk-data-source.mjs +0 -0
  177. /package/{esm2020 → esm2022}/data-source/helpers/apply-datasource-directive.mjs +0 -0
  178. /package/{esm2020 → esm2022}/data-source/helpers/common.mjs +0 -0
  179. /package/{esm2020 → esm2022}/data-source/helpers/is-datasource.mjs +0 -0
  180. /package/{esm2020 → esm2022}/data-source/index.mjs +0 -0
  181. /package/{esm2020 → esm2022}/data-source/models/data-source-provider.mjs +0 -0
  182. /package/{esm2020 → esm2022}/data-source/models/data-source.mjs +0 -0
  183. /package/{esm2020 → esm2022}/data-source/models/index.mjs +0 -0
  184. /package/{esm2020 → esm2022}/data-source/models/matching-strategy.mjs +0 -0
  185. /package/{esm2020 → esm2022}/data-source/tokens.mjs +0 -0
  186. /package/{esm2020 → esm2022}/forms/fundamental-ngx-cdk-forms.mjs +0 -0
  187. /package/{esm2020 → esm2022}/forms/helpers/state.mjs +0 -0
  188. /package/{esm2020 → esm2022}/forms/index.mjs +0 -0
  189. /package/{esm2020 → esm2022}/forms/models/cva.mjs +0 -0
  190. /package/{esm2020 → esm2022}/forms/models/form-error.mjs +0 -0
  191. /package/{esm2020 → esm2022}/forms/models/form-field.mjs +0 -0
  192. /package/{esm2020 → esm2022}/forms/models/form-state.mjs +0 -0
  193. /package/{esm2020 → esm2022}/forms/models/select-item.mjs +0 -0
  194. /package/{esm2020 → esm2022}/forms/tokens/form-field-control.token.mjs +0 -0
  195. /package/{esm2020 → esm2022}/forms/tokens/form-field.token.mjs +0 -0
  196. /package/{esm2020 → esm2022}/fundamental-ngx-cdk.mjs +0 -0
  197. /package/{esm2020 → esm2022}/index.mjs +0 -0
  198. /package/{esm2020 → esm2022}/utils/async-strategy/function-strategy.class.mjs +0 -0
  199. /package/{esm2020 → esm2022}/utils/async-strategy/index.mjs +0 -0
  200. /package/{esm2020 → esm2022}/utils/async-strategy/observable-strategy.class.mjs +0 -0
  201. /package/{esm2020 → esm2022}/utils/async-strategy/promise-strategy.class.mjs +0 -0
  202. /package/{esm2020 → esm2022}/utils/async-strategy/select-strategy.class.mjs +0 -0
  203. /package/{esm2020 → esm2022}/utils/async-strategy/subscription-strategy.interface.mjs +0 -0
  204. /package/{esm2020 → esm2022}/utils/async-strategy/value-strategy.class.mjs +0 -0
  205. /package/{esm2020 → esm2022}/utils/coercion/array.mjs +0 -0
  206. /package/{esm2020 → esm2022}/utils/components/index.mjs +0 -0
  207. /package/{esm2020 → esm2022}/utils/consts/error-messages.mjs +0 -0
  208. /package/{esm2020 → esm2022}/utils/consts/index.mjs +0 -0
  209. /package/{esm2020 → esm2022}/utils/consts/overflow-priority-score.mjs +0 -0
  210. /package/{esm2020 → esm2022}/utils/consts/unicode-letters.regex.mjs +0 -0
  211. /package/{esm2020 → esm2022}/utils/consts/unicode-numbers.regex.mjs +0 -0
  212. /package/{esm2020 → esm2022}/utils/datatypes/color-accent.datatype.mjs +0 -0
  213. /package/{esm2020 → esm2022}/utils/datatypes/hash.datatype.mjs +0 -0
  214. /package/{esm2020 → esm2022}/utils/datatypes/index.mjs +0 -0
  215. /package/{esm2020 → esm2022}/utils/datatypes/size.datatype.mjs +0 -0
  216. /package/{esm2020 → esm2022}/utils/decorators/apply-css-class.decorator.mjs +0 -0
  217. /package/{esm2020 → esm2022}/utils/decorators/apply-css-style.decorator.mjs +0 -0
  218. /package/{esm2020 → esm2022}/utils/decorators/coerce-boolean.mjs +0 -0
  219. /package/{esm2020 → esm2022}/utils/decorators/coerce-css-pixel.mjs +0 -0
  220. /package/{esm2020 → esm2022}/utils/decorators/index.mjs +0 -0
  221. /package/{esm2020 → esm2022}/utils/decorators/setter-alternator.mjs +0 -0
  222. /package/{esm2020 → esm2022}/utils/deprecated-selector.class.mjs +0 -0
  223. /package/{esm2020 → esm2022}/utils/directives/breakpoints/responsive-breakpoints.mjs +0 -0
  224. /package/{esm2020 → esm2022}/utils/directives/clicked/index.mjs +0 -0
  225. /package/{esm2020 → esm2022}/utils/directives/disabled/default-disabled-view-modifier.mjs +0 -0
  226. /package/{esm2020 → esm2022}/utils/directives/disabled/disabled-behavior.interface.mjs +0 -0
  227. /package/{esm2020 → esm2022}/utils/directives/disabled/disabled-view-modifier.interface.mjs +0 -0
  228. /package/{esm2020 → esm2022}/utils/directives/disabled/fdk-disabled.token.mjs +0 -0
  229. /package/{esm2020 → esm2022}/utils/directives/disabled/index.mjs +0 -0
  230. /package/{esm2020 → esm2022}/utils/directives/disabled/set-disabled-state.mjs +0 -0
  231. /package/{esm2020 → esm2022}/utils/directives/focus-key-manager/focus-key-manager.tokens.mjs +0 -0
  232. /package/{esm2020 → esm2022}/utils/directives/focus-key-manager/index.mjs +0 -0
  233. /package/{esm2020 → esm2022}/utils/directives/focusable-grid/focusable-grid.tokens.mjs +0 -0
  234. /package/{esm2020 → esm2022}/utils/directives/focusable-grid/index.mjs +0 -0
  235. /package/{esm2020 → esm2022}/utils/directives/focusable-item/focusable-item.tokens.mjs +0 -0
  236. /package/{esm2020 → esm2022}/utils/directives/focusable-item/index.mjs +0 -0
  237. /package/{esm2020 → esm2022}/utils/directives/focusable-item/is-element-focusable-by-default.mjs +0 -0
  238. /package/{esm2020 → esm2022}/utils/directives/focusable-list/focusable-list.tokens.mjs +0 -0
  239. /package/{esm2020 → esm2022}/utils/directives/focusable-list/index.mjs +0 -0
  240. /package/{esm2020 → esm2022}/utils/directives/focusable-list/scroll.mjs +0 -0
  241. /package/{esm2020 → esm2022}/utils/directives/ignore-click-on-selection/tokens.mjs +0 -0
  242. /package/{esm2020 → esm2022}/utils/directives/index.mjs +0 -0
  243. /package/{esm2020 → esm2022}/utils/directives/readonly/default-readonly-view-modifier.mjs +0 -0
  244. /package/{esm2020 → esm2022}/utils/directives/readonly/fdk-readonly.token.mjs +0 -0
  245. /package/{esm2020 → esm2022}/utils/directives/readonly/index.mjs +0 -0
  246. /package/{esm2020 → esm2022}/utils/directives/readonly/readonly-behavior.interface.mjs +0 -0
  247. /package/{esm2020 → esm2022}/utils/directives/readonly/readonly-view-modifier.interface.mjs +0 -0
  248. /package/{esm2020 → esm2022}/utils/directives/readonly/set-readonly-state.mjs +0 -0
  249. /package/{esm2020 → esm2022}/utils/directives/selectable-list/index.mjs +0 -0
  250. /package/{esm2020 → esm2022}/utils/directives/selectable-list/select-component-root.token.mjs +0 -0
  251. /package/{esm2020 → esm2022}/utils/directives/selectable-list/selectable-item.token.mjs +0 -0
  252. /package/{esm2020 → esm2022}/utils/directives/selectable-list/selectable-list.tokens.mjs +0 -0
  253. /package/{esm2020 → esm2022}/utils/drag-and-drop/dnd.interfaces.mjs +0 -0
  254. /package/{esm2020 → esm2022}/utils/drag-and-drop/index.mjs +0 -0
  255. /package/{esm2020 → esm2022}/utils/drag-and-drop/tokens.mjs +0 -0
  256. /package/{esm2020 → esm2022}/utils/dynamic-component/dynamic-component-config.mjs +0 -0
  257. /package/{esm2020 → esm2022}/utils/dynamic-component/dynamic-component-container.mjs +0 -0
  258. /package/{esm2020 → esm2022}/utils/dynamic-component/dynamic-component-injector.mjs +0 -0
  259. /package/{esm2020 → esm2022}/utils/dynamic-component/index.mjs +0 -0
  260. /package/{esm2020 → esm2022}/utils/functions/consumer-provider-factory.mjs +0 -0
  261. /package/{esm2020 → esm2022}/utils/functions/element-size.mjs +0 -0
  262. /package/{esm2020 → esm2022}/utils/functions/index.mjs +0 -0
  263. /package/{esm2020 → esm2022}/utils/functions/intersection-observable.mjs +0 -0
  264. /package/{esm2020 → esm2022}/utils/functions/is-compact-density.mjs +0 -0
  265. /package/{esm2020 → esm2022}/utils/functions/is-odd.mjs +0 -0
  266. /package/{esm2020 → esm2022}/utils/functions/key-util.mjs +0 -0
  267. /package/{esm2020 → esm2022}/utils/functions/module-deprecations-provider.mjs +0 -0
  268. /package/{esm2020 → esm2022}/utils/functions/parser-file-size.mjs +0 -0
  269. /package/{esm2020 → esm2022}/utils/functions/random-color-accent.mjs +0 -0
  270. /package/{esm2020 → esm2022}/utils/functions/resize-observable.mjs +0 -0
  271. /package/{esm2020 → esm2022}/utils/functions/scroll.mjs +0 -0
  272. /package/{esm2020 → esm2022}/utils/functions/uuidv4-generator.mjs +0 -0
  273. /package/{esm2020 → esm2022}/utils/fundamental-ngx-cdk-utils.mjs +0 -0
  274. /package/{esm2020 → esm2022}/utils/helpers/get-native-element.mjs +0 -0
  275. /package/{esm2020 → esm2022}/utils/helpers/index.mjs +0 -0
  276. /package/{esm2020 → esm2022}/utils/helpers/range-selector.mjs +0 -0
  277. /package/{esm2020 → esm2022}/utils/index.mjs +0 -0
  278. /package/{esm2020 → esm2022}/utils/interfaces/content-density.mjs +0 -0
  279. /package/{esm2020 → esm2022}/utils/interfaces/css-class-builder.interface.mjs +0 -0
  280. /package/{esm2020 → esm2022}/utils/interfaces/css-style-builder.interface.mjs +0 -0
  281. /package/{esm2020 → esm2022}/utils/interfaces/has-element-ref.interface.mjs +0 -0
  282. /package/{esm2020 → esm2022}/utils/interfaces/index.mjs +0 -0
  283. /package/{esm2020 → esm2022}/utils/interfaces/keyboard-support-item.interface.mjs +0 -0
  284. /package/{esm2020 → esm2022}/utils/interfaces/module-deprecation.interface.mjs +0 -0
  285. /package/{esm2020 → esm2022}/utils/interfaces/require.interface.mjs +0 -0
  286. /package/{esm2020 → esm2022}/utils/list-item/list-item-utils.mjs +0 -0
  287. /package/{esm2020 → esm2022}/utils/models/nullable.mjs +0 -0
  288. /package/{esm2020 → esm2022}/utils/pipes/index.mjs +0 -0
  289. /package/{esm2020 → esm2022}/utils/services/index.mjs +0 -0
  290. /package/{esm2020 → esm2022}/utils/toast/base-toast-animations.mjs +0 -0
  291. /package/{esm2020 → esm2022}/utils/toast/classes/action-dismissible/base-toast-action-dismissible-ref.mjs +0 -0
  292. /package/{esm2020 → esm2022}/utils/toast/classes/base-toast-config.mjs +0 -0
  293. /package/{esm2020 → esm2022}/utils/toast/classes/base-toast-ref.mjs +0 -0
  294. /package/{esm2020 → esm2022}/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-config.mjs +0 -0
  295. /package/{esm2020 → esm2022}/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-ref.mjs +0 -0
  296. /package/{esm2020 → esm2022}/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible.service.mjs +0 -0
  297. /package/{esm2020 → esm2022}/utils/toast/index.mjs +0 -0
  298. /package/{esm2020 → esm2022}/utils/toast/interfaces/toast-container-component.interface.mjs +0 -0
  299. /package/{esm2020 → esm2022}/utils/toast/interfaces/toast-duration-dismissible-container-component.interface.mjs +0 -0
  300. /package/{esm2020 → esm2022}/utils/toast/interfaces/toast-text-component.interface.mjs +0 -0
  301. /package/{esm2020 → esm2022}/utils/tokens/module-deprecations.token.mjs +0 -0
  302. /package/{esm2020 → esm2022}/utils/tokens/viewport-size.observable.mjs +0 -0
  303. /package/{esm2020 → esm2022}/utils/typecheck.mjs +0 -0
@@ -1,152 +0,0 @@
1
- import { Directive, ElementRef, inject, Input, NgZone } from '@angular/core';
2
- import { BehaviorSubject } from 'rxjs';
3
- import { distinctUntilChanged, filter, take, takeUntil } from 'rxjs/operators';
4
- import { DeprecatedSelector, FD_DEPRECATED_DIRECTIVE_SELECTOR, getDeprecatedModel } from '../../deprecated-selector.class';
5
- import { DestroyedService } from '../../services';
6
- import { TabbableElementService } from '../../services/tabbable-element.service';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "../../services/tabbable-element.service";
9
- export class DeprecatedInitialFocusDirective extends DeprecatedSelector {
10
- constructor() {
11
- super(...arguments);
12
- /** @hidden */
13
- this._initialFocusDirective = inject(InitialFocusDirective, { host: true });
14
- }
15
- /**
16
- * CSS selector of an element that should be focused.
17
- */
18
- set initialFocusTarget(value) {
19
- this._initialFocusDirective.fdkInitialFocus = value;
20
- }
21
- }
22
- DeprecatedInitialFocusDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DeprecatedInitialFocusDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
23
- DeprecatedInitialFocusDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: DeprecatedInitialFocusDirective, isStandalone: true, selector: "[fdInitialFocus], [fd-initial-focus]", inputs: { initialFocusTarget: ["fd-initial-focus", "initialFocusTarget"] }, providers: [
24
- {
25
- provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
26
- useValue: getDeprecatedModel('[fdkInitialFocus]', '[fdInitialFocus], [fd-initial-focus]')
27
- }
28
- ], usesInheritance: true, ngImport: i0 });
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DeprecatedInitialFocusDirective, decorators: [{
30
- type: Directive,
31
- args: [{
32
- // eslint-disable-next-line @angular-eslint/directive-selector
33
- selector: '[fdInitialFocus], [fd-initial-focus]',
34
- standalone: true,
35
- providers: [
36
- {
37
- provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
38
- useValue: getDeprecatedModel('[fdkInitialFocus]', '[fdInitialFocus], [fd-initial-focus]')
39
- }
40
- ]
41
- }]
42
- }], propDecorators: { initialFocusTarget: [{
43
- type: Input,
44
- args: ['fd-initial-focus']
45
- }] } });
46
- export class InitialFocusDirective {
47
- /**
48
- * Whether initial focus enabled for a current element.
49
- */
50
- set enabled(value) {
51
- if (value === this.enabled) {
52
- return;
53
- }
54
- this._enabled$.next(value);
55
- }
56
- get enabled() {
57
- return this._enabled$.getValue();
58
- }
59
- /** @hidden */
60
- constructor(_elmRef, _ngZone, _tabbableService) {
61
- this._elmRef = _elmRef;
62
- this._ngZone = _ngZone;
63
- this._tabbableService = _tabbableService;
64
- /**
65
- * CSS selector of an element that should be focused.
66
- */
67
- this.fdkInitialFocus = '.fd-initial-focus-item';
68
- /** @hidden */
69
- this._destroy$ = inject(DestroyedService);
70
- /** @hidden */
71
- this._enabled$ = new BehaviorSubject(true);
72
- /**
73
- * Whether to focus last element in a found array of elements.
74
- */
75
- this.focusLastElement = false;
76
- }
77
- /** @hidden */
78
- ngAfterViewInit() {
79
- this._enabled$
80
- .pipe(distinctUntilChanged(), filter((enabled) => enabled), takeUntil(this._destroy$))
81
- .subscribe(() => {
82
- this._executeOnEmpty(() => this._focus());
83
- });
84
- }
85
- /**
86
- * @hidden
87
- * Executes a function when the zone is stable.
88
- */
89
- _executeOnEmpty(fn) {
90
- if (!this._ngZone.hasPendingMicrotasks) {
91
- fn();
92
- }
93
- else {
94
- this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(fn);
95
- }
96
- }
97
- /**
98
- * @hidden
99
- * Searches for an appropriate focusable element
100
- */
101
- _getFocusableElement() {
102
- if (!this.fdkInitialFocus) {
103
- return this._tabbableService.getTabbableElement(this._elmRef.nativeElement, this.focusLastElement);
104
- }
105
- const autoFocusableItems = this._elmRef.nativeElement.querySelectorAll(this.fdkInitialFocus);
106
- console.log(autoFocusableItems);
107
- if (autoFocusableItems.length > 0) {
108
- return !this.focusLastElement ? autoFocusableItems[0] : autoFocusableItems[autoFocusableItems.length - 1];
109
- }
110
- // If no elements found, fallback to a first tabbable element.
111
- return this._tabbableService.getTabbableElement(this._elmRef.nativeElement, this.focusLastElement);
112
- }
113
- /** @hidden */
114
- _focus() {
115
- if (!this.enabled) {
116
- return;
117
- }
118
- const elm = this._getFocusableElement();
119
- elm?.focus();
120
- }
121
- }
122
- InitialFocusDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: InitialFocusDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.TabbableElementService }], target: i0.ɵɵFactoryTarget.Directive });
123
- InitialFocusDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: InitialFocusDirective, isStandalone: true, selector: "[fdkInitialFocus], [fdInitialFocus], [fd-initial-focus]", inputs: { fdkInitialFocus: "fdkInitialFocus", enabled: "enabled", focusLastElement: "focusLastElement" }, providers: [
124
- DestroyedService,
125
- TabbableElementService,
126
- {
127
- provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
128
- useValue: getDeprecatedModel('[fdkInitialFocus]', '[fdInitialFocus], [fd-initial-focus]')
129
- }
130
- ], ngImport: i0 });
131
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: InitialFocusDirective, decorators: [{
132
- type: Directive,
133
- args: [{
134
- selector: '[fdkInitialFocus], [fdInitialFocus], [fd-initial-focus]',
135
- standalone: true,
136
- providers: [
137
- DestroyedService,
138
- TabbableElementService,
139
- {
140
- provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
141
- useValue: getDeprecatedModel('[fdkInitialFocus]', '[fdInitialFocus], [fd-initial-focus]')
142
- }
143
- ]
144
- }]
145
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.TabbableElementService }]; }, propDecorators: { fdkInitialFocus: [{
146
- type: Input
147
- }], enabled: [{
148
- type: Input
149
- }], focusLastElement: [{
150
- type: Input
151
- }] } });
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbC1mb2N1cy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvaW5pdGlhbC1mb2N1cy9pbml0aWFsLWZvY3VzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGdDQUFnQyxFQUNoQyxrQkFBa0IsRUFDckIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7O0FBYWpGLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSxrQkFBa0I7SUFYdkU7O1FBWUksY0FBYztRQUNOLDJCQUFzQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBU2xGO0lBUEc7O09BRUc7SUFDSCxJQUNJLGtCQUFrQixDQUFDLEtBQWE7UUFDaEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDeEQsQ0FBQzs7NEhBVlEsK0JBQStCO2dIQUEvQiwrQkFBK0IsK0pBUDdCO1FBQ1A7WUFDSSxPQUFPLEVBQUUsZ0NBQWdDO1lBQ3pDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxzQ0FBc0MsQ0FB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a0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzdHO1FBRUQsOERBQThEO1FBQzlELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFFRCxjQUFjO0lBQ04sTUFBTTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2YsT0FBTztTQUNWO1FBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDeEMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2pCLENBQUM7O2tIQS9GUSxxQkFBcUI7c0dBQXJCLHFCQUFxQixnTkFUbkI7UUFDUCxnQkFBZ0I7UUFDaEIsc0JBQXNCO1FBQ3RCO1lBQ0ksT0FBTyxFQUFFLGdDQUFnQztZQUN6QyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsbUJBQW1CLEVBQUUsc0NBQXNDLENBQUM7U0FDNUY7S0FDSjsyRkFFUSxxQkFBcUI7a0JBWmpDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHlEQUF5RDtvQkFDbkUsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDUCxnQkFBZ0I7d0JBQ2hCLHNCQUFzQjt3QkFDdEI7NEJBQ0ksT0FBTyxFQUFFLGdDQUFnQzs0QkFDekMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLG1CQUFtQixFQUFFLHNDQUFzQyxDQUFDO3lCQUM1RjtxQkFDSjtpQkFDSjsySkFNRyxlQUFlO3NCQURkLEtBQUs7Z0JBT0YsT0FBTztzQkFEVixLQUFLO2dCQXNCTixnQkFBZ0I7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgRGVwcmVjYXRlZFNlbGVjdG9yLFxuICAgIEZEX0RFUFJFQ0FURURfRElSRUNUSVZFX1NFTEVDVE9SLFxuICAgIGdldERlcHJlY2F0ZWRNb2RlbFxufSBmcm9tICcuLi8uLi9kZXByZWNhdGVkLXNlbGVjdG9yLmNsYXNzJztcbmltcG9ydCB7IERlc3Ryb3llZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBUYWJiYWJsZUVsZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGFiYmFibGUtZWxlbWVudC5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1tmZEluaXRpYWxGb2N1c10sIFtmZC1pbml0aWFsLWZvY3VzXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRfREVQUkVDQVRFRF9ESVJFQ1RJVkVfU0VMRUNUT1IsXG4gICAgICAgICAgICB1c2VWYWx1ZTogZ2V0RGVwcmVjYXRlZE1vZGVsKCdbZmRrSW5pdGlhbEZvY3VzXScsICdbZmRJbml0aWFsRm9jdXNdLCBbZmQtaW5pdGlhbC1mb2N1c10nKVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEZXByZWNhdGVkSW5pdGlhbEZvY3VzRGlyZWN0aXZlIGV4dGVuZHMgRGVwcmVjYXRlZFNlbGVjdG9yIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxGb2N1c0RpcmVjdGl2ZSA9IGluamVjdChJbml0aWFsRm9jdXNEaXJlY3RpdmUsIHsgaG9zdDogdHJ1ZSB9KTtcblxuICAgIC8qKlxuICAgICAqIENTUyBzZWxlY3RvciBvZiBhbiBlbGVtZW50IHRoYXQgc2hvdWxkIGJlIGZvY3VzZWQuXG4gICAgICovXG4gICAgQElucHV0KCdmZC1pbml0aWFsLWZvY3VzJylcbiAgICBzZXQgaW5pdGlhbEZvY3VzVGFyZ2V0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbEZvY3VzRGlyZWN0aXZlLmZka0luaXRpYWxGb2N1cyA9IHZhbHVlO1xuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrSW5pdGlhbEZvY3VzXSwgW2ZkSW5pdGlhbEZvY3VzXSwgW2ZkLWluaXRpYWwtZm9jdXNdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBEZXN0cm95ZWRTZXJ2aWNlLFxuICAgICAgICBUYWJiYWJsZUVsZW1lbnRTZXJ2aWNlLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9ERVBSRUNBVEVEX0RJUkVDVElWRV9TRUxFQ1RPUixcbiAgICAgICAgICAgIHVzZVZhbHVlOiBnZXREZXByZWNhdGVkTW9kZWwoJ1tmZGtJbml0aWFsRm9jdXNdJywgJ1tmZEluaXRpYWxGb2N1c10sIFtmZC1pbml0aWFsLWZvY3VzXScpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEluaXRpYWxGb2N1c0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIC8qKlxuICAgICAqIENTUyBzZWxlY3RvciBvZiBhbiBlbGVtZW50IHRoYXQgc2hvdWxkIGJlIGZvY3VzZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBmZGtJbml0aWFsRm9jdXMgPSAnLmZkLWluaXRpYWwtZm9jdXMtaXRlbSc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGluaXRpYWwgZm9jdXMgZW5hYmxlZCBmb3IgYSBjdXJyZW50IGVsZW1lbnQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuZW5hYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2VuYWJsZWQkLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIGdldCBlbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW5hYmxlZCQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gaW5qZWN0KERlc3Ryb3llZFNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbmFibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGZvY3VzIGxhc3QgZWxlbWVudCBpbiBhIGZvdW5kIGFycmF5IG9mIGVsZW1lbnRzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9jdXNMYXN0RWxlbWVudCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZWxtUmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmJhYmxlU2VydmljZTogVGFiYmFibGVFbGVtZW50U2VydmljZVxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9lbmFibGVkJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGVuYWJsZWQpID0+IGVuYWJsZWQpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2V4ZWN1dGVPbkVtcHR5KCgpID0+IHRoaXMuX2ZvY3VzKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEV4ZWN1dGVzIGEgZnVuY3Rpb24gd2hlbiB0aGUgem9uZSBpcyBzdGFibGUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZXhlY3V0ZU9uRW1wdHkoZm46ICgpID0+IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX25nWm9uZS5oYXNQZW5kaW5nTWljcm90YXNrcykge1xuICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX25nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGZuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBTZWFyY2hlcyBmb3IgYW4gYXBwcm9wcmlhdGUgZm9jdXNhYmxlIGVsZW1lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9nZXRGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIGlmICghdGhpcy5mZGtJbml0aWFsRm9jdXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl90YWJiYWJsZVNlcnZpY2UuZ2V0VGFiYmFibGVFbGVtZW50KHRoaXMuX2VsbVJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLmZvY3VzTGFzdEVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXV0b0ZvY3VzYWJsZUl0ZW1zID0gdGhpcy5fZWxtUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgIHRoaXMuZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICkgYXMgTm9kZUxpc3RPZjxIVE1MRWxlbWVudD47XG4gICAgICAgIGNvbnNvbGUubG9nKGF1dG9Gb2N1c2FibGVJdGVtcyk7XG5cbiAgICAgICAgaWYgKGF1dG9Gb2N1c2FibGVJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuZm9jdXNMYXN0RWxlbWVudCA/IGF1dG9Gb2N1c2FibGVJdGVtc1swXSA6IGF1dG9Gb2N1c2FibGVJdGVtc1thdXRvRm9jdXNhYmxlSXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiBubyBlbGVtZW50cyBmb3VuZCwgZmFsbGJhY2sgdG8gYSBmaXJzdCB0YWJiYWJsZSBlbGVtZW50LlxuICAgICAgICByZXR1cm4gdGhpcy5fdGFiYmFibGVTZXJ2aWNlLmdldFRhYmJhYmxlRWxlbWVudCh0aGlzLl9lbG1SZWYubmF0aXZlRWxlbWVudCwgdGhpcy5mb2N1c0xhc3RFbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZW5hYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVsbSA9IHRoaXMuX2dldEZvY3VzYWJsZUVsZW1lbnQoKTtcbiAgICAgICAgZWxtPy5mb2N1cygpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,262 +0,0 @@
1
- import { coerceNumberProperty } from '@angular/cdk/coercion';
2
- import { Directive, ElementRef, EventEmitter, Input, Output, Renderer2, ChangeDetectorRef } from '@angular/core';
3
- import { fromEvent } from 'rxjs';
4
- import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
5
- import { DeprecatedSelector, FD_DEPRECATED_DIRECTIVE_SELECTOR, getDeprecatedModel } from '../../deprecated-selector.class';
6
- import * as i0 from "@angular/core";
7
- export class DeprecatedLineClampTargetDirective extends DeprecatedSelector {
8
- }
9
- DeprecatedLineClampTargetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DeprecatedLineClampTargetDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
10
- DeprecatedLineClampTargetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: DeprecatedLineClampTargetDirective, isStandalone: true, selector: "[fdLineClampTarget], [fd-lineclamp-target]", providers: [
11
- {
12
- provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
13
- useValue: getDeprecatedModel('[fdkLineClampTarget]', '[fdLineClampTarget], [fd-lineclamp-target]')
14
- }
15
- ], usesInheritance: true, ngImport: i0 });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DeprecatedLineClampTargetDirective, decorators: [{
17
- type: Directive,
18
- args: [{
19
- // eslint-disable-next-line @angular-eslint/directive-selector
20
- selector: '[fdLineClampTarget], [fd-lineclamp-target]',
21
- standalone: true,
22
- providers: [
23
- {
24
- provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
25
- useValue: getDeprecatedModel('[fdkLineClampTarget]', '[fdLineClampTarget], [fd-lineclamp-target]')
26
- }
27
- ]
28
- }]
29
- }] });
30
- export class DeprecatedLineClampDirective extends DeprecatedSelector {
31
- }
32
- DeprecatedLineClampDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DeprecatedLineClampDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
33
- DeprecatedLineClampDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: DeprecatedLineClampDirective, isStandalone: true, selector: "[fdLineClamp], [fd-lineclamp]", providers: [
34
- {
35
- provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
36
- useValue: getDeprecatedModel('[fdkLineClampTarget]', '[fdLineClamp], [fd-lineclamp]')
37
- }
38
- ], usesInheritance: true, ngImport: i0 });
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DeprecatedLineClampDirective, decorators: [{
40
- type: Directive,
41
- args: [{
42
- // eslint-disable-next-line @angular-eslint/directive-selector
43
- selector: '[fdLineClamp], [fd-lineclamp]',
44
- standalone: true,
45
- providers: [
46
- {
47
- provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
48
- useValue: getDeprecatedModel('[fdkLineClampTarget]', '[fdLineClamp], [fd-lineclamp]')
49
- }
50
- ]
51
- }]
52
- }] });
53
- export class LineClampTargetDirective {
54
- /** @hidden */
55
- constructor(_elementRef) {
56
- this._elementRef = _elementRef;
57
- /**
58
- * Event with target instance for clamping
59
- */
60
- this.update = new EventEmitter();
61
- }
62
- /**
63
- * Native element of clamping target
64
- */
65
- get targetElement() {
66
- return this._elementRef.nativeElement;
67
- }
68
- /** @hidden */
69
- ngOnChanges() {
70
- this.update.emit(this);
71
- }
72
- /** @hidden */
73
- ngAfterViewInit() {
74
- this.update.emit(this);
75
- }
76
- }
77
- LineClampTargetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LineClampTargetDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
78
- LineClampTargetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: LineClampTargetDirective, isStandalone: true, selector: "[fdkLineClampTarget], [fdLineClampTarget], [fd-lineclamp-target]", inputs: { fdLineClampTargetText: "fdLineClampTargetText" }, outputs: { update: "update" }, exportAs: ["fdLineClampTarget"], usesOnChanges: true, ngImport: i0 });
79
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LineClampTargetDirective, decorators: [{
80
- type: Directive,
81
- args: [{
82
- selector: '[fdkLineClampTarget], [fdLineClampTarget], [fd-lineclamp-target]',
83
- exportAs: 'fdLineClampTarget',
84
- standalone: true
85
- }]
86
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { fdLineClampTargetText: [{
87
- type: Input
88
- }], update: [{
89
- type: Output
90
- }] } });
91
- export class LineClampDirective {
92
- /**
93
- * Count lines for clamping
94
- */
95
- set fdLineClampLines(value) {
96
- this._lineCount = coerceNumberProperty(value);
97
- }
98
- /** @hidden */
99
- /**
100
- * Root native element of clamping box
101
- */
102
- get rootElement() {
103
- return this._elementRef.nativeElement;
104
- }
105
- /** @hidden */
106
- constructor(_elementRef, _renderer, _cdRef) {
107
- this._elementRef = _elementRef;
108
- this._renderer = _renderer;
109
- this._cdRef = _cdRef;
110
- /**
111
- * Clamping state
112
- */
113
- this.fdLineclampState = false;
114
- /**
115
- * Event return count of lines from the target
116
- */
117
- this.lineCountUpdate = new EventEmitter();
118
- /** @hidden */
119
- this._isNativeSupport = true;
120
- }
121
- /** @hidden */
122
- ngAfterViewInit() {
123
- this._isNativeSupport = typeof this.rootElement.style.webkitLineClamp !== 'undefined';
124
- // need to use setTimeout to force recheck of parent elements
125
- setTimeout(() => {
126
- this._checkLineCount();
127
- });
128
- this.windowResize$ = fromEvent(window, 'resize')
129
- .pipe(distinctUntilChanged(), debounceTime(200))
130
- .subscribe({
131
- next: () => this._checkLineCount()
132
- });
133
- }
134
- /** @hidden */
135
- ngOnDestroy() {
136
- if (this.windowResize$) {
137
- this.windowResize$.unsubscribe();
138
- }
139
- }
140
- /** @hidden */
141
- ngOnChanges() {
142
- this.reset();
143
- this.refreshClamp();
144
- }
145
- /** @hidden */
146
- reset() {
147
- if (this._lineClampTarget && this._originalText) {
148
- this._lineClampTarget.textContent = this._originalText;
149
- }
150
- if (this._isNativeSupport) {
151
- this._resetNative();
152
- }
153
- }
154
- /** @hidden */
155
- refreshTarget(event) {
156
- this._lineClampTarget = event.targetElement;
157
- this._originalText = event.fdLineClampTargetText;
158
- this._checkLineCount();
159
- }
160
- /** @hidden */
161
- refreshClamp() {
162
- if (this.fdLineclampState && this._lineCount) {
163
- this.native();
164
- if (!this._isNativeSupport) {
165
- this._truncate();
166
- }
167
- }
168
- }
169
- /** @hidden
170
- * Truncate text in the target box, if browser not support lineclamp style
171
- */
172
- _truncate() {
173
- if (!this._lineClampTarget) {
174
- return;
175
- }
176
- const lineClampHeight = Math.ceil(this.getLineHeight() * this._lineCount);
177
- const ellipsisTextArray = this._originalText.split(' ');
178
- const ellipsisText = () => {
179
- if (this.rootElement.scrollHeight > lineClampHeight) {
180
- ellipsisTextArray.pop();
181
- this._lineClampTarget.textContent = ellipsisTextArray.join(' ') + '...';
182
- ellipsisText.call(this);
183
- }
184
- };
185
- ellipsisText();
186
- }
187
- /** @hidden
188
- * Get lineheight for rootelement, if browser not support lineclamp style
189
- */
190
- getLineHeight() {
191
- const lineHeight = window.getComputedStyle(this.rootElement, null).getPropertyValue('line-height');
192
- if (lineHeight === 'normal') {
193
- return parseInt(window.getComputedStyle(this.rootElement, null).getPropertyValue('font-size'), 10) * 1.25;
194
- }
195
- return parseFloat(lineHeight);
196
- }
197
- /** @hidden
198
- * Setup native styles for lineclamp text
199
- */
200
- native() {
201
- if (this._isNativeSupport) {
202
- this._renderer.setStyle(this.rootElement, 'display', '-webkit-box');
203
- this._renderer.setStyle(this.rootElement, 'overflow', 'hidden');
204
- this._renderer.setStyle(this.rootElement, 'text-overflow', 'ellipsis');
205
- this._renderer.setStyle(this.rootElement, '-webkit-box-orient', 'vertical');
206
- this._renderer.setStyle(this.rootElement, '-webkit-line-clamp', `${this._lineCount}`);
207
- }
208
- }
209
- /** @hidden
210
- * Reset native styles for lineclamp text
211
- */
212
- _resetNative() {
213
- if (this._isNativeSupport) {
214
- this._renderer.setStyle(this.rootElement, 'display', '');
215
- this._renderer.setStyle(this.rootElement, 'overflow', '');
216
- this._renderer.setStyle(this.rootElement, 'text-overflow', '');
217
- this._renderer.setStyle(this.rootElement, '-webkit-box-orient', '');
218
- this._renderer.setStyle(this.rootElement, '-webkit-line-clamp', '');
219
- }
220
- }
221
- /** @hidden */
222
- _checkLineCount() {
223
- if (!this.rootElement) {
224
- return;
225
- }
226
- const style = window.getComputedStyle(this.rootElement, null);
227
- this.reset();
228
- const fontSize = parseInt(style.getPropertyValue('font-size'), 10);
229
- const boxSizing = style.getPropertyValue('box-sizing');
230
- let height = parseInt(style.getPropertyValue('height'), 10);
231
- let lineHeight = parseFloat(style.getPropertyValue('line-height'));
232
- if (isNaN(lineHeight)) {
233
- lineHeight = fontSize * 1.2;
234
- }
235
- if (boxSizing === 'border-box') {
236
- const padding_top = parseInt(style.getPropertyValue('padding-top'), 10);
237
- const padding_bottom = parseInt(style.getPropertyValue('padding-bottom'), 10);
238
- const border_top = parseInt(style.getPropertyValue('border-top-width'), 10);
239
- const border_bottom = parseInt(style.getPropertyValue('border-bottom-width'), 10);
240
- height = height - padding_top - padding_bottom - border_top - border_bottom;
241
- }
242
- this.refreshClamp();
243
- this.lineCountUpdate.emit(Math.ceil(height / lineHeight));
244
- }
245
- }
246
- LineClampDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LineClampDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
247
- LineClampDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: LineClampDirective, isStandalone: true, selector: "[fdkLineClamp], [fdLineClamp], [fd-lineclamp]", inputs: { fdLineClampLines: "fdLineClampLines", fdLineclampState: "fdLineclampState" }, outputs: { lineCountUpdate: "lineCountUpdate" }, exportAs: ["fdLineClamp"], usesOnChanges: true, ngImport: i0 });
248
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LineClampDirective, decorators: [{
249
- type: Directive,
250
- args: [{
251
- selector: '[fdkLineClamp], [fdLineClamp], [fd-lineclamp]',
252
- exportAs: 'fdLineClamp',
253
- standalone: true
254
- }]
255
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { fdLineClampLines: [{
256
- type: Input
257
- }], fdLineclampState: [{
258
- type: Input
259
- }], lineCountUpdate: [{
260
- type: Output
261
- }] } });
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jbGFtcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvbGluZS1jbGFtcC9saW5lLWNsYW1wLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGdDQUFnQyxFQUNoQyxrQkFBa0IsRUFDckIsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFhekMsTUFBTSxPQUFPLGtDQUFtQyxTQUFRLGtCQUFrQjs7K0hBQTdELGtDQUFrQzttSEFBbEMsa0NBQWtDLHlGQVBoQztRQUNQO1lBQ0ksT0FBTyxFQUFFLGdDQUFnQztZQUN6QyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsc0JBQXNCLEVBQUUsNENBQTRDLENBQUM7U0FDckc7S0FDSjsyRkFFUSxrQ0FBa0M7a0JBWDlDLFNBQVM7bUJBQUM7b0JBQ1AsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsNENBQTRDO29CQUN0RCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxnQ0FBZ0M7NEJBQ3pDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSw0Q0FBNEMsQ0FBQzt5QkFDckc7cUJBQ0o7aUJBQ0o7O0FBY0QsTUFBTSxPQUFPLDRCQUE2QixT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UUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDOzsrR0F6TFEsa0JBQWtCO21HQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFMOUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsK0NBQStDO29CQUN6RCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsVUFBVSxFQUFFLElBQUk7aUJBQ25CO3lKQU1PLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFTTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFPTixlQUFlO3NCQURkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvbnVsbGFibGUnO1xuaW1wb3J0IHtcbiAgICBEZXByZWNhdGVkU2VsZWN0b3IsXG4gICAgRkRfREVQUkVDQVRFRF9ESVJFQ1RJVkVfU0VMRUNUT1IsXG4gICAgZ2V0RGVwcmVjYXRlZE1vZGVsXG59IGZyb20gJy4uLy4uL2RlcHJlY2F0ZWQtc2VsZWN0b3IuY2xhc3MnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnW2ZkTGluZUNsYW1wVGFyZ2V0XSwgW2ZkLWxpbmVjbGFtcC10YXJnZXRdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9ERVBSRUNBVEVEX0RJUkVDVElWRV9TRUxFQ1RPUixcbiAgICAgICAgICAgIHVzZVZhbHVlOiBnZXREZXByZWNhdGVkTW9kZWwoJ1tmZGtMaW5lQ2xhbXBUYXJnZXRdJywgJ1tmZExpbmVDbGFtcFRhcmdldF0sIFtmZC1saW5lY2xhbXAtdGFyZ2V0XScpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIERlcHJlY2F0ZWRMaW5lQ2xhbXBUYXJnZXREaXJlY3RpdmUgZXh0ZW5kcyBEZXByZWNhdGVkU2VsZWN0b3Ige31cblxuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1tmZExpbmVDbGFtcF0sIFtmZC1saW5lY2xhbXBdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9ERVBSRUNBVEVEX0RJUkVDVElWRV9TRUxFQ1RPUixcbiAgICAgICAgICAgIHVzZVZhbHVlOiBnZXREZXByZWNhdGVkTW9kZWwoJ1tmZGtMaW5lQ2xhbXBUYXJnZXRdJywgJ1tmZExpbmVDbGFtcF0sIFtmZC1saW5lY2xhbXBdJylcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRGVwcmVjYXRlZExpbmVDbGFtcERpcmVjdGl2ZSBleHRlbmRzIERlcHJlY2F0ZWRTZWxlY3RvciB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtMaW5lQ2xhbXBUYXJnZXRdLCBbZmRMaW5lQ2xhbXBUYXJnZXRdLCBbZmQtbGluZWNsYW1wLXRhcmdldF0nLFxuICAgIGV4cG9ydEFzOiAnZmRMaW5lQ2xhbXBUYXJnZXQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTGluZUNsYW1wVGFyZ2V0RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgICAvKipcbiAgICAgKiBUYXJnZXQgdGV4dCBmb3IgY2xhbXBpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZkTGluZUNsYW1wVGFyZ2V0VGV4dDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgd2l0aCB0YXJnZXQgaW5zdGFuY2UgZm9yIGNsYW1waW5nXG4gICAgICovXG4gICAgQE91dHB1dCgpIHVwZGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8TGluZUNsYW1wVGFyZ2V0RGlyZWN0aXZlPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgLyoqXG4gICAgICogTmF0aXZlIGVsZW1lbnQgb2YgY2xhbXBpbmcgdGFyZ2V0XG4gICAgICovXG4gICAgZ2V0IHRhcmdldEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlLmVtaXQodGhpcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlLmVtaXQodGhpcyk7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtMaW5lQ2xhbXBdLCBbZmRMaW5lQ2xhbXBdLCBbZmQtbGluZWNsYW1wXScsXG4gICAgZXhwb3J0QXM6ICdmZExpbmVDbGFtcCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBMaW5lQ2xhbXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogQ291bnQgbGluZXMgZm9yIGNsYW1waW5nXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgZmRMaW5lQ2xhbXBMaW5lcyh2YWx1ZTogTnVsbGFibGU8bnVtYmVyPikge1xuICAgICAgICB0aGlzLl9saW5lQ291bnQgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xhbXBpbmcgc3RhdGVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZkTGluZWNsYW1wU3RhdGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHJldHVybiBjb3VudCBvZiBsaW5lcyBmcm9tIHRoZSB0YXJnZXRcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBsaW5lQ291bnRVcGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGluZUNsYW1wVGFyZ2V0OiBIVE1MRWxlbWVudDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX29yaWdpbmFsVGV4dDogc3RyaW5nO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSB3aW5kb3dSZXNpemUkOiBTdWJzY3JpcHRpb247XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc05hdGl2ZVN1cHBvcnQgPSB0cnVlO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGluZUNvdW50OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIC8qKlxuICAgICAqIFJvb3QgbmF0aXZlIGVsZW1lbnQgb2YgY2xhbXBpbmcgYm94XG4gICAgICovXG4gICAgZ2V0IHJvb3RFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNOYXRpdmVTdXBwb3J0ID0gdHlwZW9mIHRoaXMucm9vdEVsZW1lbnQuc3R5bGUud2Via2l0TGluZUNsYW1wICE9PSAndW5kZWZpbmVkJztcblxuICAgICAgICAvLyBuZWVkIHRvIHVzZSBzZXRUaW1lb3V0IHRvIGZvcmNlIHJlY2hlY2sgb2YgcGFyZW50IGVsZW1lbnRzXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2hlY2tMaW5lQ291bnQoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy53aW5kb3dSZXNpemUkID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBkZWJvdW5jZVRpbWUoMjAwKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+IHRoaXMuX2NoZWNrTGluZUNvdW50KClcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLndpbmRvd1Jlc2l6ZSQpIHtcbiAgICAgICAgICAgIHRoaXMud2luZG93UmVzaXplJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICB0aGlzLnJlZnJlc2hDbGFtcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVzZXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9saW5lQ2xhbXBUYXJnZXQgJiYgdGhpcy5fb3JpZ2luYWxUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLl9saW5lQ2xhbXBUYXJnZXQudGV4dENvbnRlbnQgPSB0aGlzLl9vcmlnaW5hbFRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2lzTmF0aXZlU3VwcG9ydCkge1xuICAgICAgICAgICAgdGhpcy5fcmVzZXROYXRpdmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVmcmVzaFRhcmdldChldmVudDogTGluZUNsYW1wVGFyZ2V0RGlyZWN0aXZlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpbmVDbGFtcFRhcmdldCA9IGV2ZW50LnRhcmdldEVsZW1lbnQ7XG4gICAgICAgIHRoaXMuX29yaWdpbmFsVGV4dCA9IGV2ZW50LmZkTGluZUNsYW1wVGFyZ2V0VGV4dDtcbiAgICAgICAgdGhpcy5fY2hlY2tMaW5lQ291bnQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZnJlc2hDbGFtcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZmRMaW5lY2xhbXBTdGF0ZSAmJiB0aGlzLl9saW5lQ291bnQpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzTmF0aXZlU3VwcG9ydCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RydW5jYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIFRydW5jYXRlIHRleHQgaW4gdGhlIHRhcmdldCBib3gsIGlmIGJyb3dzZXIgbm90IHN1cHBvcnQgbGluZWNsYW1wIHN0eWxlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdHJ1bmNhdGUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fbGluZUNsYW1wVGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGluZUNsYW1wSGVpZ2h0ID0gTWF0aC5jZWlsKHRoaXMuZ2V0TGluZUhlaWdodCgpICogdGhpcy5fbGluZUNvdW50KTtcbiAgICAgICAgY29uc3QgZWxsaXBzaXNUZXh0QXJyYXkgPSB0aGlzLl9vcmlnaW5hbFRleHQuc3BsaXQoJyAnKTtcbiAgICAgICAgY29uc3QgZWxsaXBzaXNUZXh0ID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucm9vdEVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gbGluZUNsYW1wSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgZWxsaXBzaXNUZXh0QXJyYXkucG9wKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGluZUNsYW1wVGFyZ2V0LnRleHRDb250ZW50ID0gZWxsaXBzaXNUZXh0QXJyYXkuam9pbignICcpICsgJy4uLic7XG4gICAgICAgICAgICAgICAgZWxsaXBzaXNUZXh0LmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGVsbGlwc2lzVGV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogR2V0IGxpbmVoZWlnaHQgZm9yIHJvb3RlbGVtZW50LCBpZiBicm93c2VyIG5vdCBzdXBwb3J0IGxpbmVjbGFtcCBzdHlsZVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0TGluZUhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBsaW5lSGVpZ2h0ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5yb290RWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnbGluZS1oZWlnaHQnKTtcbiAgICAgICAgaWYgKGxpbmVIZWlnaHQgPT09ICdub3JtYWwnKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5yb290RWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnZm9udC1zaXplJyksIDEwKSAqIDEuMjU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChsaW5lSGVpZ2h0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlblxuICAgICAqIFNldHVwIG5hdGl2ZSBzdHlsZXMgZm9yIGxpbmVjbGFtcCB0ZXh0XG4gICAgICovXG4gICAgcHJpdmF0ZSBuYXRpdmUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pc05hdGl2ZVN1cHBvcnQpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMucm9vdEVsZW1lbnQsICdkaXNwbGF5JywgJy13ZWJraXQtYm94Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJvb3RFbGVtZW50LCAnb3ZlcmZsb3cnLCAnaGlkZGVuJyk7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJvb3RFbGVtZW50LCAndGV4dC1vdmVyZmxvdycsICdlbGxpcHNpcycpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yb290RWxlbWVudCwgJy13ZWJraXQtYm94LW9yaWVudCcsICd2ZXJ0aWNhbCcpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yb290RWxlbWVudCwgJy13ZWJraXQtbGluZS1jbGFtcCcsIGAke3RoaXMuX2xpbmVDb3VudH1gKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuXG4gICAgICogUmVzZXQgbmF0aXZlIHN0eWxlcyBmb3IgbGluZWNsYW1wIHRleHRcbiAgICAgKi9cbiAgICBwcml2YXRlIF9yZXNldE5hdGl2ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzTmF0aXZlU3VwcG9ydCkge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUodGhpcy5yb290RWxlbWVudCwgJ2Rpc3BsYXknLCAnJyk7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJvb3RFbGVtZW50LCAnb3ZlcmZsb3cnLCAnJyk7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJvb3RFbGVtZW50LCAndGV4dC1vdmVyZmxvdycsICcnKTtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMucm9vdEVsZW1lbnQsICctd2Via2l0LWJveC1vcmllbnQnLCAnJyk7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnJvb3RFbGVtZW50LCAnLXdlYmtpdC1saW5lLWNsYW1wJywgJycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jaGVja0xpbmVDb3VudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvb3RFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnJvb3RFbGVtZW50LCBudWxsKTtcblxuICAgICAgICB0aGlzLnJlc2V0KCk7XG5cbiAgICAgICAgY29uc3QgZm9udFNpemUgPSBwYXJzZUludChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdmb250LXNpemUnKSwgMTApO1xuICAgICAgICBjb25zdCBib3hTaXppbmcgPSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdib3gtc2l6aW5nJyk7XG4gICAgICAgIGxldCBoZWlnaHQgPSBwYXJzZUludChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdoZWlnaHQnKSwgMTApO1xuICAgICAgICBsZXQgbGluZUhlaWdodCA9IHBhcnNlRmxvYXQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnbGluZS1oZWlnaHQnKSk7XG4gICAgICAgIGlmIChpc05hTihsaW5lSGVpZ2h0KSkge1xuICAgICAgICAgICAgbGluZUhlaWdodCA9IGZvbnRTaXplICogMS4yO1xuICAgICAgICB9XG4gICAgICAgIGlmIChib3hTaXppbmcgPT09ICdib3JkZXItYm94Jykge1xuICAgICAgICAgICAgY29uc3QgcGFkZGluZ190b3AgPSBwYXJzZUludChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLXRvcCcpLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBwYWRkaW5nX2JvdHRvbSA9IHBhcnNlSW50KHN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctYm90dG9tJyksIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IGJvcmRlcl90b3AgPSBwYXJzZUludChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItdG9wLXdpZHRoJyksIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IGJvcmRlcl9ib3R0b20gPSBwYXJzZUludChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItYm90dG9tLXdpZHRoJyksIDEwKTtcbiAgICAgICAgICAgIGhlaWdodCA9IGhlaWdodCAtIHBhZGRpbmdfdG9wIC0gcGFkZGluZ19ib3R0b20gLSBib3JkZXJfdG9wIC0gYm9yZGVyX2JvdHRvbTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlZnJlc2hDbGFtcCgpO1xuICAgICAgICB0aGlzLmxpbmVDb3VudFVwZGF0ZS5lbWl0KE1hdGguY2VpbChoZWlnaHQgLyBsaW5lSGVpZ2h0KSk7XG4gICAgfVxufVxuIl19