@yuuvis/client-framework 2.0.0-beta.0 → 2.0.0-beta.10

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 (389) hide show
  1. package/actions/lib/actions/delete-action/delete/delete.component.d.ts +3 -3
  2. package/actions/lib/actions/delete-action/delete-action.d.ts +1 -1
  3. package/actions/lib/actions.service.d.ts +7 -3
  4. package/actions/lib/components/contextmenu/contextmenu.component.d.ts +3 -1
  5. package/autocomplete/README.md +3 -0
  6. package/autocomplete/index.d.ts +3 -0
  7. package/autocomplete/lib/autocomplete.component.d.ts +72 -0
  8. package/autocomplete/lib/autocomplete.interface.d.ts +4 -0
  9. package/autocomplete/lib/autocomplete.module.d.ts +7 -0
  10. package/common/index.d.ts +4 -4
  11. package/common/lib/common.module.d.ts +19 -0
  12. package/common/lib/common.utils.d.ts +2 -0
  13. package/common/lib/components/confirm/confirm.component.d.ts +7 -0
  14. package/common/lib/components/confirm/confirm.interface.d.ts +7 -0
  15. package/common/lib/components/confirm/confirm.service.d.ts +9 -0
  16. package/common/lib/components/dialog/dialog.component.d.ts +6 -0
  17. package/common/lib/components/dialog/dialog.options.d.ts +7 -0
  18. package/common/lib/components/index.d.ts +5 -0
  19. package/common/lib/directives/autofocus-child.directive.d.ts +13 -0
  20. package/common/lib/directives/autofocus-delayed.directive.d.ts +18 -0
  21. package/common/lib/directives/drag-scroll.directive.d.ts +20 -0
  22. package/common/lib/directives/index.d.ts +8 -4
  23. package/common/lib/directives/noop-value-accessor.directive.d.ts +2 -2
  24. package/common/lib/mat-form-field.abstract.d.ts +41 -0
  25. package/common/lib/services/index.d.ts +1 -1
  26. package/common/lib/services/layout-settings/layout-settings.service.d.ts +18 -0
  27. package/datepicker/README.md +3 -0
  28. package/datepicker/index.d.ts +5 -0
  29. package/datepicker/lib/calendar/calendar.component.d.ts +72 -0
  30. package/datepicker/lib/date-input/date-input-element/date-input-element.component.d.ts +43 -0
  31. package/datepicker/lib/date-input/date-input-hour-element/date-input-hour-element.component.d.ts +11 -0
  32. package/datepicker/lib/date-input/date-input.component.d.ts +61 -0
  33. package/datepicker/lib/datepicker-calendar/datepicker-calendar-trigger.component.d.ts +7 -0
  34. package/datepicker/lib/datepicker-calendar/datepicker-calendar.component.d.ts +12 -0
  35. package/datepicker/lib/datepicker.component.d.ts +80 -0
  36. package/datepicker/lib/datepicker.interface.d.ts +34 -0
  37. package/datepicker/lib/datepicker.module.d.ts +9 -0
  38. package/datepicker/lib/datepicker.service.d.ts +46 -0
  39. package/datepicker/lib/datepicker.utils.d.ts +23 -0
  40. package/datepicker/lib/time-input/time-input.component.d.ts +36 -0
  41. package/datepicker/lib/time-input/time-input.interface.d.ts +6 -0
  42. package/fesm2022/yuuvis-client-framework-actions.mjs +147 -105
  43. package/fesm2022/yuuvis-client-framework-actions.mjs.map +1 -1
  44. package/fesm2022/yuuvis-client-framework-app-bar.mjs +7 -8
  45. package/fesm2022/yuuvis-client-framework-app-bar.mjs.map +1 -1
  46. package/fesm2022/yuuvis-client-framework-autocomplete.mjs +210 -0
  47. package/fesm2022/yuuvis-client-framework-autocomplete.mjs.map +1 -0
  48. package/fesm2022/yuuvis-client-framework-clipboard.mjs +9 -9
  49. package/fesm2022/yuuvis-client-framework-clipboard.mjs.map +1 -1
  50. package/fesm2022/yuuvis-client-framework-common.mjs +853 -780
  51. package/fesm2022/yuuvis-client-framework-common.mjs.map +1 -1
  52. package/fesm2022/yuuvis-client-framework-datepicker.mjs +1688 -0
  53. package/fesm2022/yuuvis-client-framework-datepicker.mjs.map +1 -0
  54. package/fesm2022/yuuvis-client-framework-forms.mjs +945 -1157
  55. package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
  56. package/fesm2022/yuuvis-client-framework-icons.mjs +85 -12
  57. package/fesm2022/yuuvis-client-framework-icons.mjs.map +1 -1
  58. package/fesm2022/yuuvis-client-framework-list.mjs +81 -45
  59. package/fesm2022/yuuvis-client-framework-list.mjs.map +1 -1
  60. package/fesm2022/yuuvis-client-framework-master-details.mjs +112 -0
  61. package/fesm2022/yuuvis-client-framework-master-details.mjs.map +1 -0
  62. package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs +60 -0
  63. package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs.map +1 -0
  64. package/fesm2022/yuuvis-client-framework-metadata-form.mjs +125 -100
  65. package/fesm2022/yuuvis-client-framework-metadata-form.mjs.map +1 -1
  66. package/fesm2022/yuuvis-client-framework-object-details.mjs +49 -59
  67. package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -1
  68. package/fesm2022/yuuvis-client-framework-object-flavor.mjs +188 -77
  69. package/fesm2022/yuuvis-client-framework-object-flavor.mjs.map +1 -1
  70. package/fesm2022/yuuvis-client-framework-object-form.mjs +99 -184
  71. package/fesm2022/yuuvis-client-framework-object-form.mjs.map +1 -1
  72. package/fesm2022/yuuvis-client-framework-object-preview.mjs +12 -12
  73. package/fesm2022/yuuvis-client-framework-object-preview.mjs.map +1 -1
  74. package/fesm2022/yuuvis-client-framework-object-summary.mjs +46 -42
  75. package/fesm2022/yuuvis-client-framework-object-summary.mjs.map +1 -1
  76. package/fesm2022/yuuvis-client-framework-overflow-menu.mjs +126 -0
  77. package/fesm2022/yuuvis-client-framework-overflow-menu.mjs.map +1 -0
  78. package/fesm2022/yuuvis-client-framework-pagination.mjs +7 -9
  79. package/fesm2022/yuuvis-client-framework-pagination.mjs.map +1 -1
  80. package/fesm2022/yuuvis-client-framework-panel.mjs +8 -7
  81. package/fesm2022/yuuvis-client-framework-panel.mjs.map +1 -1
  82. package/fesm2022/yuuvis-client-framework-popout.mjs +212 -0
  83. package/fesm2022/yuuvis-client-framework-popout.mjs.map +1 -0
  84. package/fesm2022/yuuvis-client-framework-renderer.mjs +99 -72
  85. package/fesm2022/yuuvis-client-framework-renderer.mjs.map +1 -1
  86. package/fesm2022/yuuvis-client-framework-sequence-list.mjs +29 -112
  87. package/fesm2022/yuuvis-client-framework-sequence-list.mjs.map +1 -1
  88. package/fesm2022/yuuvis-client-framework-simple-search.mjs +40 -21
  89. package/fesm2022/yuuvis-client-framework-simple-search.mjs.map +1 -1
  90. package/fesm2022/yuuvis-client-framework-split-view.mjs +188 -0
  91. package/fesm2022/yuuvis-client-framework-split-view.mjs.map +1 -0
  92. package/fesm2022/yuuvis-client-framework-tile-list.mjs +100 -93
  93. package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -1
  94. package/fesm2022/yuuvis-client-framework-tree.mjs +15 -15
  95. package/fesm2022/yuuvis-client-framework-tree.mjs.map +1 -1
  96. package/fesm2022/yuuvis-client-framework-upload-progress.mjs +16 -21
  97. package/fesm2022/yuuvis-client-framework-upload-progress.mjs.map +1 -1
  98. package/fesm2022/yuuvis-client-framework.mjs +4 -4
  99. package/fesm2022/yuuvis-client-framework.mjs.map +1 -1
  100. package/forms/index.d.ts +7 -1
  101. package/forms/lib/elements/catalog/catalog.component.d.ts +17 -56
  102. package/forms/lib/elements/data-grid/edit-table-data/edit-data.component.d.ts +5 -4
  103. package/forms/lib/elements/datetime/datetime.component.d.ts +19 -10
  104. package/forms/lib/elements/datetime-range/datetime-range.component.d.ts +12 -27
  105. package/forms/lib/elements/index.d.ts +0 -1
  106. package/forms/lib/elements/number/number.component.d.ts +21 -30
  107. package/forms/lib/elements/number-range/number-range.component.d.ts +12 -7
  108. package/forms/lib/elements/organization/organization.component.d.ts +23 -51
  109. package/forms/lib/elements/range-select-date/range-select-date.component.d.ts +12 -7
  110. package/forms/lib/elements/range-select-filesize/range-select-filesize.component.d.ts +12 -7
  111. package/forms/lib/elements/string/string.component.d.ts +15 -20
  112. package/forms/lib/forms.module.d.ts +8 -11
  113. package/icons/index.d.ts +1 -0
  114. package/icons/lib/icon.component.d.ts +20 -0
  115. package/lib/assets/i18n/de.json +7 -23
  116. package/lib/assets/i18n/en.json +10 -26
  117. package/list/index.d.ts +1 -0
  118. package/list/lib/list-item.directive.d.ts +5 -4
  119. package/list/lib/list.component.d.ts +6 -3
  120. package/list/lib/list.module.d.ts +8 -0
  121. package/master-details/README.md +3 -0
  122. package/master-details/index.d.ts +2 -0
  123. package/master-details/lib/master-details.component.d.ts +58 -0
  124. package/master-details/lib/master-details.interface.d.ts +7 -0
  125. package/master-details/lib/master-details.module.d.ts +7 -0
  126. package/metadata-form/index.d.ts +4 -1
  127. package/metadata-form/lib/metadata-form-field/metadata-form-field.component.d.ts +4 -17
  128. package/metadata-form/lib/metadata-form-field/metadata-form-field.interface.d.ts +11 -0
  129. package/metadata-form/lib/object-metadata-element-error.directive.d.ts +13 -0
  130. package/metadata-form/lib/object-metadata-element-label.directive.d.ts +10 -0
  131. package/metadata-form/lib/object-metadata-element-template.directive.d.ts +3 -3
  132. package/metadata-form-defaults/README.md +3 -0
  133. package/metadata-form-defaults/index.d.ts +2 -0
  134. package/metadata-form-defaults/lib/metadata-form-defaults.module.d.ts +7 -0
  135. package/object-details/lib/object-audit/object-audit.component.d.ts +3 -9
  136. package/object-details/lib/object-details.component.d.ts +0 -2
  137. package/object-details/lib/object-metadata/object-metadata.component.d.ts +4 -3
  138. package/object-details/lib/retention-badge/retention-badge.component.d.ts +0 -3
  139. package/object-flavor/index.d.ts +1 -0
  140. package/object-flavor/lib/abstract-apply-create-flavor/abstract-apply-create-flavor.component.d.ts +1 -2
  141. package/object-flavor/lib/abstract-apply-object-flavor/abstract-apply-object-flavor.component.d.ts +3 -2
  142. package/object-flavor/lib/default-apply-flavor/default-apply-flavor.component.d.ts +19 -0
  143. package/object-flavor/lib/flavor-chip/flavor-chip.component.d.ts +1 -1
  144. package/object-flavor/lib/object-flavor/object-flavor.component.d.ts +3 -6
  145. package/object-flavor/lib/object-flavor-picker/object-flavor-picker.component.d.ts +0 -1
  146. package/object-form/index.d.ts +1 -1
  147. package/object-form/lib/object-form-element/object-form-element.component.d.ts +2 -2
  148. package/object-form/lib/object-form-group/object-form-group.component.d.ts +1 -3
  149. package/object-form/lib/object-form.component.d.ts +2 -2
  150. package/object-form/lib/object-form.interface.d.ts +0 -44
  151. package/object-form/lib/object-form.module.d.ts +7 -0
  152. package/object-form/lib/object-form.service.d.ts +1 -2
  153. package/object-form/lib/object-form.utils.d.ts +1 -1
  154. package/object-summary/lib/object-summary/object-summary.component.d.ts +13 -15
  155. package/overflow-menu/README.md +3 -0
  156. package/overflow-menu/index.d.ts +3 -0
  157. package/overflow-menu/lib/overflow-menu.component.d.ts +31 -0
  158. package/overflow-menu/lib/overflow-menu.interface.d.ts +9 -0
  159. package/overflow-menu/lib/overflow-menu.module.d.ts +7 -0
  160. package/package.json +44 -70
  161. package/popout/README.md +3 -0
  162. package/popout/index.d.ts +3 -0
  163. package/popout/lib/popout.component.d.ts +58 -0
  164. package/popout/lib/popout.interface.d.ts +17 -0
  165. package/popout/lib/popout.module.d.ts +7 -0
  166. package/renderer/lib/property-renderer/abstract.renderer.d.ts +4 -4
  167. package/renderer/lib/property-renderer/icon.renderer.component.d.ts +2 -0
  168. package/renderer/lib/renderer.directive.d.ts +4 -3
  169. package/sequence-list/index.d.ts +0 -1
  170. package/sequence-list/lib/sequence-list.component.d.ts +0 -4
  171. package/simple-search/index.d.ts +0 -1
  172. package/simple-search/lib/simple-search/simple-search.component.d.ts +6 -10
  173. package/split-view/README.md +3 -0
  174. package/split-view/index.d.ts +4 -0
  175. package/split-view/lib/split-area.directive.d.ts +16 -0
  176. package/split-view/lib/split-view.component.d.ts +76 -0
  177. package/split-view/lib/split-view.interface.d.ts +10 -0
  178. package/split-view/lib/split-view.module.d.ts +8 -0
  179. package/styles/client-framework.scss +21 -67
  180. package/tile-list/lib/tile/tile.component.d.ts +1 -2
  181. package/tile-list/lib/tile-config/property-select/property-select.component.d.ts +0 -1
  182. package/tile-list/lib/tile-config/tile-config-trigger/tile-config-trigger.component.d.ts +1 -2
  183. package/tile-list/lib/tile-config/tile-config.component.d.ts +0 -3
  184. package/tile-list/lib/tile-list/tile-list.component.d.ts +5 -5
  185. package/upload-progress/lib/upload-progress/upload-progress-overlay/upload-progress-overlay.component.d.ts +0 -5
  186. package/upload-progress/lib/upload-progress/upload-progress.component.d.ts +0 -4
  187. package/common/lib/components/focus-indicator/focus-indicator.component.d.ts +0 -7
  188. package/common/lib/components/token-input/token-input.component.d.ts +0 -55
  189. package/common/lib/components/token-input/token-input.interface.d.ts +0 -8
  190. package/common/lib/services/error-messages/error-messages.service.d.ts +0 -7
  191. package/esm2022/actions/index.mjs +0 -7
  192. package/esm2022/actions/lib/actions/copy-action/copy-action.mjs +0 -31
  193. package/esm2022/actions/lib/actions/cut-action/cut-action.mjs +0 -30
  194. package/esm2022/actions/lib/actions/delete-action/delete/delete.component.mjs +0 -67
  195. package/esm2022/actions/lib/actions/delete-action/delete-action.mjs +0 -38
  196. package/esm2022/actions/lib/actions/download-action/download-action.mjs +0 -33
  197. package/esm2022/actions/lib/actions.icon.mjs +0 -8
  198. package/esm2022/actions/lib/actions.interface.mjs +0 -19
  199. package/esm2022/actions/lib/actions.module.mjs +0 -16
  200. package/esm2022/actions/lib/actions.service.mjs +0 -89
  201. package/esm2022/actions/lib/components/contextmenu/contextmenu.component.mjs +0 -27
  202. package/esm2022/actions/yuuvis-client-framework-actions.mjs +0 -5
  203. package/esm2022/app-bar/index.mjs +0 -2
  204. package/esm2022/app-bar/lib/app-bar.component.mjs +0 -89
  205. package/esm2022/app-bar/yuuvis-client-framework-app-bar.mjs +0 -5
  206. package/esm2022/clipboard/index.mjs +0 -2
  207. package/esm2022/clipboard/lib/clipboard.component.mjs +0 -48
  208. package/esm2022/clipboard/yuuvis-client-framework-clipboard.mjs +0 -5
  209. package/esm2022/common/index.mjs +0 -7
  210. package/esm2022/common/lib/components/focus-indicator/focus-indicator.component.mjs +0 -41
  211. package/esm2022/common/lib/components/token-input/token-input.component.mjs +0 -324
  212. package/esm2022/common/lib/components/token-input/token-input.interface.mjs +0 -2
  213. package/esm2022/common/lib/directives/busy-overlay.directive.mjs +0 -88
  214. package/esm2022/common/lib/directives/click-double.directive.mjs +0 -61
  215. package/esm2022/common/lib/directives/container-size.directive.mjs +0 -56
  216. package/esm2022/common/lib/directives/drag-select.directive.mjs +0 -114
  217. package/esm2022/common/lib/directives/file-drop-zone/file-drop-zone.directive.mjs +0 -153
  218. package/esm2022/common/lib/directives/file-drop-zone/file-drop-zone.interface.mjs +0 -2
  219. package/esm2022/common/lib/directives/focus-within.directive.mjs +0 -81
  220. package/esm2022/common/lib/directives/index.mjs +0 -9
  221. package/esm2022/common/lib/directives/light-dismiss.directive.mjs +0 -44
  222. package/esm2022/common/lib/directives/longpress.directive.mjs +0 -36
  223. package/esm2022/common/lib/directives/noop-value-accessor.directive.mjs +0 -42
  224. package/esm2022/common/lib/services/error-messages/error-messages.service.mjs +0 -68
  225. package/esm2022/common/lib/services/index.mjs +0 -2
  226. package/esm2022/common/yuuvis-client-framework-common.mjs +0 -5
  227. package/esm2022/forms/index.mjs +0 -24
  228. package/esm2022/forms/lib/elements/catalog/catalog.component.mjs +0 -118
  229. package/esm2022/forms/lib/elements/data-grid/data-grid/data-grid.component.mjs +0 -172
  230. package/esm2022/forms/lib/elements/data-grid/edit-table-data/edit-data.component.mjs +0 -95
  231. package/esm2022/forms/lib/elements/data-grid/model/data-grid.interface.mjs +0 -9
  232. package/esm2022/forms/lib/elements/datetime/datetime.component.mjs +0 -82
  233. package/esm2022/forms/lib/elements/datetime-range/datetime-range.component.mjs +0 -166
  234. package/esm2022/forms/lib/elements/index.mjs +0 -11
  235. package/esm2022/forms/lib/elements/number/number.component.mjs +0 -195
  236. package/esm2022/forms/lib/elements/number-range/number-range.component.mjs +0 -176
  237. package/esm2022/forms/lib/elements/organization/organization.component.mjs +0 -286
  238. package/esm2022/forms/lib/elements/range-select-date/date-range-picker/date-range-picker.component.mjs +0 -38
  239. package/esm2022/forms/lib/elements/range-select-date/range-select-date.component.mjs +0 -181
  240. package/esm2022/forms/lib/elements/range-select-date/range-select-date.interface.mjs +0 -2
  241. package/esm2022/forms/lib/elements/range-select-filesize/range-select-filesize.component.mjs +0 -98
  242. package/esm2022/forms/lib/elements/range-select-filesize/range-select-filesize.interface.mjs +0 -2
  243. package/esm2022/forms/lib/elements/string/string.component.mjs +0 -261
  244. package/esm2022/forms/lib/form-input/form-input.component.mjs +0 -88
  245. package/esm2022/forms/lib/forms.module.mjs +0 -58
  246. package/esm2022/forms/yuuvis-client-framework-forms.mjs +0 -5
  247. package/esm2022/icons/index.mjs +0 -4
  248. package/esm2022/icons/lib/icon.service.mjs +0 -59
  249. package/esm2022/icons/lib/icons.mjs +0 -32
  250. package/esm2022/icons/lib/object-type-icon/object-type-icon.component.mjs +0 -29
  251. package/esm2022/icons/yuuvis-client-framework-icons.mjs +0 -5
  252. package/esm2022/index.mjs +0 -2
  253. package/esm2022/lib/yuuvis-client-framework.module.mjs +0 -15
  254. package/esm2022/list/index.mjs +0 -3
  255. package/esm2022/list/lib/list-item.directive.mjs +0 -72
  256. package/esm2022/list/lib/list.component.mjs +0 -135
  257. package/esm2022/list/yuuvis-client-framework-list.mjs +0 -5
  258. package/esm2022/metadata-form/index.mjs +0 -4
  259. package/esm2022/metadata-form/lib/metadata-default-templates/metadata-default-templates.component.mjs +0 -32
  260. package/esm2022/metadata-form/lib/metadata-form-element-registry.service.mjs +0 -99
  261. package/esm2022/metadata-form/lib/metadata-form-field/metadata-form-field.component.mjs +0 -83
  262. package/esm2022/metadata-form/lib/object-metadata-element-template.directive.mjs +0 -52
  263. package/esm2022/metadata-form/yuuvis-client-framework-metadata-form.mjs +0 -5
  264. package/esm2022/object-details/index.mjs +0 -8
  265. package/esm2022/object-details/lib/object-audit/object-audit.component.mjs +0 -195
  266. package/esm2022/object-details/lib/object-details-shell/object-details-shell.component.mjs +0 -127
  267. package/esm2022/object-details/lib/object-details.component.mjs +0 -61
  268. package/esm2022/object-details/lib/object-metadata/form-section-group.pipe.mjs +0 -17
  269. package/esm2022/object-details/lib/object-metadata/object-metadata.component.mjs +0 -202
  270. package/esm2022/object-details/lib/object-metadata/object-metadata.interface.mjs +0 -2
  271. package/esm2022/object-details/lib/retention-badge/retention-badge.component.mjs +0 -27
  272. package/esm2022/object-details/yuuvis-client-framework-object-details.mjs +0 -5
  273. package/esm2022/object-flavor/index.mjs +0 -6
  274. package/esm2022/object-flavor/lib/abstract-apply-create-flavor/abstract-apply-create-flavor.component.mjs +0 -25
  275. package/esm2022/object-flavor/lib/abstract-apply-object-flavor/abstract-apply-object-flavor.component.mjs +0 -21
  276. package/esm2022/object-flavor/lib/flavor-chip/flavor-chip.component.mjs +0 -35
  277. package/esm2022/object-flavor/lib/object-flavor/object-flavor.component.mjs +0 -93
  278. package/esm2022/object-flavor/lib/object-flavor-picker/object-flavor-picker.component.mjs +0 -43
  279. package/esm2022/object-flavor/yuuvis-client-framework-object-flavor.mjs +0 -5
  280. package/esm2022/object-form/index.mjs +0 -5
  281. package/esm2022/object-form/lib/form-scripting.api.interface.mjs +0 -2
  282. package/esm2022/object-form/lib/form-scripting.service.mjs +0 -160
  283. package/esm2022/object-form/lib/object-form-element/object-form-element.component.mjs +0 -87
  284. package/esm2022/object-form/lib/object-form-extension.interface.mjs +0 -36
  285. package/esm2022/object-form/lib/object-form-group/object-form-group.component.mjs +0 -85
  286. package/esm2022/object-form/lib/object-form-script/form-scripting-element-extension/form-scripting-element-extension.component.mjs +0 -23
  287. package/esm2022/object-form/lib/object-form-script/object-form-script.service.mjs +0 -115
  288. package/esm2022/object-form/lib/object-form-script/object-form-scripting-scope.mjs +0 -251
  289. package/esm2022/object-form/lib/object-form-translate.service.mjs +0 -73
  290. package/esm2022/object-form/lib/object-form.component.mjs +0 -628
  291. package/esm2022/object-form/lib/object-form.interface.mjs +0 -9
  292. package/esm2022/object-form/lib/object-form.model.mjs +0 -20
  293. package/esm2022/object-form/lib/object-form.service.mjs +0 -130
  294. package/esm2022/object-form/lib/object-form.utils.mjs +0 -55
  295. package/esm2022/object-form/lib/object-form.validation.mjs +0 -48
  296. package/esm2022/object-form/yuuvis-client-framework-object-form.mjs +0 -5
  297. package/esm2022/object-preview/index.mjs +0 -3
  298. package/esm2022/object-preview/lib/components/index.mjs +0 -3
  299. package/esm2022/object-preview/lib/components/object-email-preview/object-email-preview.component.mjs +0 -45
  300. package/esm2022/object-preview/lib/components/object-preview/object-preview.component.mjs +0 -78
  301. package/esm2022/object-preview/lib/services/object-preview.service.mjs +0 -119
  302. package/esm2022/object-preview/yuuvis-client-framework-object-preview.mjs +0 -5
  303. package/esm2022/object-summary/index.mjs +0 -5
  304. package/esm2022/object-summary/lib/multi-object-summary/multi-object-summary.component.mjs +0 -33
  305. package/esm2022/object-summary/lib/object-summary/object-summary.component.mjs +0 -275
  306. package/esm2022/object-summary/lib/object-summary-data/object-summary-data.component.mjs +0 -80
  307. package/esm2022/object-summary/lib/object-summary.module.mjs +0 -15
  308. package/esm2022/object-summary/yuuvis-client-framework-object-summary.mjs +0 -5
  309. package/esm2022/pagination/index.mjs +0 -3
  310. package/esm2022/pagination/lib/pagination.component.mjs +0 -46
  311. package/esm2022/pagination/lib/pagination.interface.mjs +0 -2
  312. package/esm2022/pagination/yuuvis-client-framework-pagination.mjs +0 -5
  313. package/esm2022/panel/index.mjs +0 -2
  314. package/esm2022/panel/lib/panel.component.mjs +0 -20
  315. package/esm2022/panel/yuuvis-client-framework-panel.mjs +0 -5
  316. package/esm2022/renderer/index.mjs +0 -11
  317. package/esm2022/renderer/lib/property-renderer/abstract.renderer.mjs +0 -29
  318. package/esm2022/renderer/lib/property-renderer/datetime.renderer.mjs +0 -13
  319. package/esm2022/renderer/lib/property-renderer/decimal.renderer.component.mjs +0 -12
  320. package/esm2022/renderer/lib/property-renderer/filesize.renderer.component.mjs +0 -28
  321. package/esm2022/renderer/lib/property-renderer/icon.renderer.component.mjs +0 -23
  322. package/esm2022/renderer/lib/property-renderer/integer.renderer.component.mjs +0 -12
  323. package/esm2022/renderer/lib/property-renderer/organization.renderer.mjs +0 -19
  324. package/esm2022/renderer/lib/property-renderer/string.renderer.component.mjs +0 -12
  325. package/esm2022/renderer/lib/property-renderer/unknown.renderer.mjs +0 -12
  326. package/esm2022/renderer/lib/renderer.directive.mjs +0 -51
  327. package/esm2022/renderer/lib/services/renderer/renderer.interface.mjs +0 -2
  328. package/esm2022/renderer/lib/services/renderer/renderer.service.mjs +0 -84
  329. package/esm2022/renderer/yuuvis-client-framework-renderer.mjs +0 -5
  330. package/esm2022/sequence-list/index.mjs +0 -4
  331. package/esm2022/sequence-list/lib/due-date-picker/due-date-picker.component.mjs +0 -99
  332. package/esm2022/sequence-list/lib/sequence-list.component.mjs +0 -141
  333. package/esm2022/sequence-list/lib/sequence-list.interface.mjs +0 -2
  334. package/esm2022/sequence-list/yuuvis-client-framework-sequence-list.mjs +0 -5
  335. package/esm2022/simple-search/index.mjs +0 -3
  336. package/esm2022/simple-search/lib/simple-search/simple-search.component.mjs +0 -111
  337. package/esm2022/simple-search/lib/simple-search/simple-search.interface.mjs +0 -2
  338. package/esm2022/simple-search/yuuvis-client-framework-simple-search.mjs +0 -5
  339. package/esm2022/tile-list/index.mjs +0 -11
  340. package/esm2022/tile-list/lib/tile/tile.component.mjs +0 -53
  341. package/esm2022/tile-list/lib/tile-config/action-select/action-select.component.mjs +0 -25
  342. package/esm2022/tile-list/lib/tile-config/icon-select/icon-select.component.mjs +0 -33
  343. package/esm2022/tile-list/lib/tile-config/property-select/property-select.component.mjs +0 -91
  344. package/esm2022/tile-list/lib/tile-config/tile-config-tile/tile-config-tile.component.mjs +0 -66
  345. package/esm2022/tile-list/lib/tile-config/tile-config-trigger/tile-config-trigger.component.mjs +0 -46
  346. package/esm2022/tile-list/lib/tile-config/tile-config.component.mjs +0 -156
  347. package/esm2022/tile-list/lib/tile-extension/directive/tile-extension.directive.mjs +0 -37
  348. package/esm2022/tile-list/lib/tile-extension/extensions/email.extension.mjs +0 -42
  349. package/esm2022/tile-list/lib/tile-extension/tile-extension.service.mjs +0 -35
  350. package/esm2022/tile-list/lib/tile-list/tile-list.component.mjs +0 -510
  351. package/esm2022/tile-list/lib/tile-list/tile-list.interface.mjs +0 -2
  352. package/esm2022/tile-list/yuuvis-client-framework-tile-list.mjs +0 -5
  353. package/esm2022/token-search/index.mjs +0 -3
  354. package/esm2022/token-search/token-search.component.mjs +0 -78
  355. package/esm2022/token-search/token-search.interface.mjs +0 -2
  356. package/esm2022/token-search/yuuvis-client-framework-token-search.mjs +0 -5
  357. package/esm2022/tree/index.mjs +0 -3
  358. package/esm2022/tree/lib/tree-node/tree-node.component.mjs +0 -65
  359. package/esm2022/tree/lib/tree.component.mjs +0 -148
  360. package/esm2022/tree/lib/tree.interface.mjs +0 -2
  361. package/esm2022/tree/lib/tree.service.mjs +0 -95
  362. package/esm2022/tree/yuuvis-client-framework-tree.mjs +0 -5
  363. package/esm2022/upload-progress/index.mjs +0 -2
  364. package/esm2022/upload-progress/lib/upload-progress/upload-progress-overlay/upload-progress-overlay.component.mjs +0 -49
  365. package/esm2022/upload-progress/lib/upload-progress/upload-progress.component.mjs +0 -37
  366. package/esm2022/upload-progress/yuuvis-client-framework-upload-progress.mjs +0 -5
  367. package/esm2022/user-avatar/index.mjs +0 -3
  368. package/esm2022/user-avatar/lib/user-avatar.component.mjs +0 -69
  369. package/esm2022/user-avatar/lib/user-avatar.module.mjs +0 -24
  370. package/esm2022/user-avatar/yuuvis-client-framework-user-avatar.mjs +0 -5
  371. package/esm2022/yuuvis-client-framework.mjs +0 -5
  372. package/fesm2022/yuuvis-client-framework-token-search.mjs +0 -85
  373. package/fesm2022/yuuvis-client-framework-token-search.mjs.map +0 -1
  374. package/fesm2022/yuuvis-client-framework-user-avatar.mjs +0 -96
  375. package/fesm2022/yuuvis-client-framework-user-avatar.mjs.map +0 -1
  376. package/forms/lib/form-input/form-input.component.d.ts +0 -48
  377. package/object-form/lib/object-form-translate.service.d.ts +0 -15
  378. package/object-form/lib/object-form.model.d.ts +0 -18
  379. package/sequence-list/lib/due-date-picker/due-date-picker.component.d.ts +0 -28
  380. package/simple-search/lib/simple-search/simple-search.interface.d.ts +0 -4
  381. package/token-search/README.md +0 -3
  382. package/token-search/index.d.ts +0 -2
  383. package/token-search/token-search.component.d.ts +0 -22
  384. package/token-search/token-search.interface.d.ts +0 -4
  385. package/user-avatar/README.md +0 -3
  386. package/user-avatar/index.d.ts +0 -2
  387. package/user-avatar/lib/user-avatar.component.d.ts +0 -44
  388. package/user-avatar/lib/user-avatar.module.d.ts +0 -8
  389. /package/{metadata-form → metadata-form-defaults}/lib/metadata-default-templates/metadata-default-templates.component.d.ts +0 -0
@@ -1,114 +0,0 @@
1
- import { computed, contentChildren, Directive, ElementRef, HostListener, inject, input, output } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class DragSelectDirective {
4
- constructor() {
5
- this.#selectStartX = 0;
6
- this.#selectStartY = 0;
7
- this.#selection = [];
8
- this.items = contentChildren(DragSelectItemDirective);
9
- this.#selectables = computed(() => this.items().map((item) => item.el));
10
- this.yuvDragSelect = input();
11
- this.dragSelectChange = output();
12
- this.dragSelect = output();
13
- this.#onPointerUp = () => {
14
- removeEventListener('pointermove', this.#resize);
15
- removeEventListener('pointerup', this.#onPointerUp);
16
- if (this.#selection.length)
17
- this.dragSelect.emit(this.#selection);
18
- if (this.#selector)
19
- this.#selector.remove();
20
- };
21
- this.#resize = (event) => {
22
- if (!this.#selector)
23
- return;
24
- const diffX = event.pageX - this.#selectStartX;
25
- const diffY = event.pageY - this.#selectStartY;
26
- this.#selector.style.left = diffX < 0 ? this.#selectStartX + diffX + 'px' : this.#selectStartX + 'px';
27
- this.#selector.style.top = diffY < 0 ? this.#selectStartY + diffY + 'px' : this.#selectStartY + 'px';
28
- this.#selector.style.height = Math.abs(diffY) + 'px';
29
- this.#selector.style.width = Math.abs(diffX) + 'px';
30
- this.#selector.style.border = `1px solid ${this.yuvDragSelect()?.selectorColor || 'var(--color-accent'}`;
31
- this.#checkSelected();
32
- };
33
- this.#checkSelected = () => {
34
- if (!this.#selector)
35
- return;
36
- const select = this.#selector.getBoundingClientRect();
37
- const { x, y, height, width } = select;
38
- if (!height || !width)
39
- return;
40
- const currSelectionLength = this.#selection.length;
41
- this.#selectables().forEach((selectable, idx) => {
42
- const r1 = { x: x + window.scrollX, y: y + window.scrollY, height, width };
43
- const r2 = selectable.getBoundingClientRect();
44
- this.#selection = this.#selection.filter((s) => s !== idx);
45
- if (this.#checkRectIntersection(r1, r2)) {
46
- this.#selection.push(idx);
47
- }
48
- });
49
- if (currSelectionLength !== this.#selection.length) {
50
- this.dragSelectChange.emit(this.#selection);
51
- }
52
- };
53
- this.#checkRectIntersection = (r1, r2) => {
54
- return !(r1.x + r1.width < r2.x || r2.x + r2.width < r1.x || r1.y + r1.height < r2.y || r2.y + r2.height < r1.y);
55
- };
56
- }
57
- #selector;
58
- #selectStartX;
59
- #selectStartY;
60
- #selection;
61
- onPointerDown(event) {
62
- if (this.yuvDragSelect()?.disabled || event.target.tagName === 'BUTTON')
63
- return;
64
- event.preventDefault();
65
- this.#selectStartX = event.pageX;
66
- this.#selectStartY = event.pageY;
67
- const div = document.createElement('div');
68
- div.style.position = 'absolute';
69
- div.style.width = '0';
70
- div.style.height = '0';
71
- div.style.left = this.#selectStartX + 'px';
72
- div.style.top = this.#selectStartY + 'px';
73
- div.classList.add('drag-select');
74
- this.#selector = div;
75
- document.body.append(this.#selector);
76
- this.#selection = [];
77
- addEventListener('pointermove', this.#resize);
78
- addEventListener('pointerup', this.#onPointerUp);
79
- }
80
- #selectables;
81
- #onPointerUp;
82
- #resize;
83
- #checkSelected;
84
- #checkRectIntersection;
85
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DragSelectDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
86
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: DragSelectDirective, isStandalone: true, selector: "[yuvDragSelect]", inputs: { yuvDragSelect: { classPropertyName: "yuvDragSelect", publicName: "yuvDragSelect", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dragSelectChange: "dragSelectChange", dragSelect: "dragSelect" }, host: { listeners: { "pointerdown": "onPointerDown($event)" } }, queries: [{ propertyName: "items", predicate: DragSelectItemDirective, isSignal: true }], ngImport: i0 }); }
87
- }
88
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DragSelectDirective, decorators: [{
89
- type: Directive,
90
- args: [{
91
- selector: '[yuvDragSelect]',
92
- standalone: true
93
- }]
94
- }], propDecorators: { onPointerDown: [{
95
- type: HostListener,
96
- args: ['pointerdown', ['$event']]
97
- }] } });
98
- export class DragSelectItemDirective {
99
- constructor() {
100
- this.#elRef = inject(ElementRef);
101
- this.el = this.#elRef.nativeElement;
102
- }
103
- #elRef;
104
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DragSelectItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
105
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DragSelectItemDirective, isStandalone: true, selector: "[yuvDragSelectItem]", ngImport: i0 }); }
106
- }
107
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DragSelectItemDirective, decorators: [{
108
- type: Directive,
109
- args: [{
110
- selector: '[yuvDragSelectItem]',
111
- standalone: true
112
- }]
113
- }] });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1zZWxlY3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWZyYW1ld29yay9jb21tb24vc3JjL2xpYi9kaXJlY3RpdmVzL2RyYWctc2VsZWN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFrQnRILE1BQU0sT0FBTyxtQkFBbUI7SUFKaEM7UUFNRSxrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUVsQixlQUFVLEdBQWEsRUFBRSxDQUFDO1FBdUIxQixVQUFLLEdBQUcsZUFBZSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDakQsaUJBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFbkUsa0JBQWEsR0FBRyxLQUFLLEVBQXFCLENBQUM7UUFDM0MscUJBQWdCLEdBQUcsTUFBTSxFQUFZLENBQUM7UUFDdEMsZUFBVSxHQUFHLE1BQU0sRUFBWSxDQUFDO1FBRWhDLGlCQUFZLEdBQUcsR0FBRyxFQUFFO1lBQ2xCLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakQsbUJBQW1CLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNwRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTTtnQkFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FB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QXVCOzs0RkFBdkIsdUJBQXVCO2tCQUpuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBjb250ZW50Q2hpbGRyZW4sIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBpbmplY3QsIGlucHV0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW50ZXJmYWNlIFNlbGVjdGFibGVSZWN0IHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHdpZHRoOiBudW1iZXI7XG4gIGhlaWdodDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERyYWdTZWxlY3RPcHRpb25zIHtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBzZWxlY3RvckNvbG9yPzogc3RyaW5nO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbeXV2RHJhZ1NlbGVjdF0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERyYWdTZWxlY3REaXJlY3RpdmUge1xuICAjc2VsZWN0b3I/OiBIVE1MRGl2RWxlbWVudDtcbiAgI3NlbGVjdFN0YXJ0WCA9IDA7XG4gICNzZWxlY3RTdGFydFkgPSAwO1xuXG4gICNzZWxlY3Rpb246IG51bWJlcltdID0gW107XG5cbiAgQEhvc3RMaXN0ZW5lcigncG9pbnRlcmRvd24nLCBbJyRldmVudCddKSBvblBvaW50ZXJEb3duKGV2ZW50OiBQb2ludGVyRXZlbnQpIHtcbiAgICBpZiAodGhpcy55dXZEcmFnU2VsZWN0KCk/LmRpc2FibGVkIHx8IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnRhZ05hbWUgPT09ICdCVVRUT04nKSByZXR1cm47XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLiNzZWxlY3RTdGFydFggPSBldmVudC5wYWdlWDtcbiAgICB0aGlzLiNzZWxlY3RTdGFydFkgPSBldmVudC5wYWdlWTtcblxuICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGRpdi5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgZGl2LnN0eWxlLndpZHRoID0gJzAnO1xuICAgIGRpdi5zdHlsZS5oZWlnaHQgPSAnMCc7XG4gICAgZGl2LnN0eWxlLmxlZnQgPSB0aGlzLiNzZWxlY3RTdGFydFggKyAncHgnO1xuICAgIGRpdi5zdHlsZS50b3AgPSB0aGlzLiNzZWxlY3RTdGFydFkgKyAncHgnO1xuICAgIGRpdi5jbGFzc0xpc3QuYWRkKCdkcmFnLXNlbGVjdCcpO1xuICAgIHRoaXMuI3NlbGVjdG9yID0gZGl2O1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKHRoaXMuI3NlbGVjdG9yKTtcblxuICAgIHRoaXMuI3NlbGVjdGlvbiA9IFtdO1xuICAgIGFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgdGhpcy4jcmVzaXplKTtcbiAgICBhZGRFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCB0aGlzLiNvblBvaW50ZXJVcCk7XG4gIH1cblxuICBpdGVtcyA9IGNvbnRlbnRDaGlsZHJlbihEcmFnU2VsZWN0SXRlbURpcmVjdGl2ZSk7XG4gICNzZWxlY3RhYmxlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaXRlbXMoKS5tYXAoKGl0ZW0pID0+IGl0ZW0uZWwpKTtcblxuICB5dXZEcmFnU2VsZWN0ID0gaW5wdXQ8RHJhZ1NlbGVjdE9wdGlvbnM+KCk7XG4gIGRyYWdTZWxlY3RDaGFuZ2UgPSBvdXRwdXQ8bnVtYmVyW10+KCk7XG4gIGRyYWdTZWxlY3QgPSBvdXRwdXQ8bnVtYmVyW10+KCk7XG5cbiAgI29uUG9pbnRlclVwID0gKCkgPT4ge1xuICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgdGhpcy4jcmVzaXplKTtcbiAgICByZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCB0aGlzLiNvblBvaW50ZXJVcCk7XG4gICAgaWYgKHRoaXMuI3NlbGVjdGlvbi5sZW5ndGgpIHRoaXMuZHJhZ1NlbGVjdC5lbWl0KHRoaXMuI3NlbGVjdGlvbik7XG4gICAgaWYgKHRoaXMuI3NlbGVjdG9yKSB0aGlzLiNzZWxlY3Rvci5yZW1vdmUoKTtcbiAgfTtcblxuICAjcmVzaXplID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICBpZiAoIXRoaXMuI3NlbGVjdG9yKSByZXR1cm47XG4gICAgY29uc3QgZGlmZlggPSBldmVudC5wYWdlWCAtIHRoaXMuI3NlbGVjdFN0YXJ0WDtcbiAgICBjb25zdCBkaWZmWSA9IGV2ZW50LnBhZ2VZIC0gdGhpcy4jc2VsZWN0U3RhcnRZO1xuICAgIHRoaXMuI3NlbGVjdG9yLnN0eWxlLmxlZnQgPSBkaWZmWCA8IDAgPyB0aGlzLiNzZWxlY3RTdGFydFggKyBkaWZmWCArICdweCcgOiB0aGlzLiNzZWxlY3RTdGFydFggKyAncHgnO1xuICAgIHRoaXMuI3NlbGVjdG9yLnN0eWxlLnRvcCA9IGRpZmZZIDwgMCA/IHRoaXMuI3NlbGVjdFN0YXJ0WSArIGRpZmZZICsgJ3B4JyA6IHRoaXMuI3NlbGVjdFN0YXJ0WSArICdweCc7XG4gICAgdGhpcy4jc2VsZWN0b3Iuc3R5bGUuaGVpZ2h0ID0gTWF0aC5hYnMoZGlmZlkpICsgJ3B4JztcbiAgICB0aGlzLiNzZWxlY3Rvci5zdHlsZS53aWR0aCA9IE1hdGguYWJzKGRpZmZYKSArICdweCc7XG5cbiAgICB0aGlzLiNzZWxlY3Rvci5zdHlsZS5ib3JkZXIgPSBgMXB4IHNvbGlkICR7dGhpcy55dXZEcmFnU2VsZWN0KCk/LnNlbGVjdG9yQ29sb3IgfHwgJ3ZhcigtLWNvbG9yLWFjY2VudCd9YDtcbiAgICB0aGlzLiNjaGVja1NlbGVjdGVkKCk7XG4gIH07XG5cbiAgI2NoZWNrU2VsZWN0ZWQgPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLiNzZWxlY3RvcikgcmV0dXJuO1xuICAgIGNvbnN0IHNlbGVjdCA9IHRoaXMuI3NlbGVjdG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHsgeCwgeSwgaGVpZ2h0LCB3aWR0aCB9ID0gc2VsZWN0O1xuICAgIGlmICghaGVpZ2h0IHx8ICF3aWR0aCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY3VyclNlbGVjdGlvbkxlbmd0aCA9IHRoaXMuI3NlbGVjdGlvbi5sZW5ndGg7XG4gICAgdGhpcy4jc2VsZWN0YWJsZXMoKS5mb3JFYWNoKChzZWxlY3RhYmxlLCBpZHgpID0+IHtcbiAgICAgIGNvbnN0IHIxOiBTZWxlY3RhYmxlUmVjdCA9IHsgeDogeCArIHdpbmRvdy5zY3JvbGxYLCB5OiB5ICsgd2luZG93LnNjcm9sbFksIGhlaWdodCwgd2lkdGggfTtcbiAgICAgIGNvbnN0IHIyOiBTZWxlY3RhYmxlUmVjdCA9IHNlbGVjdGFibGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB0aGlzLiNzZWxlY3Rpb24gPSB0aGlzLiNzZWxlY3Rpb24uZmlsdGVyKChzKSA9PiBzICE9PSBpZHgpO1xuICAgICAgaWYgKHRoaXMuI2NoZWNrUmVjdEludGVyc2VjdGlvbihyMSwgcjIpKSB7XG4gICAgICAgIHRoaXMuI3NlbGVjdGlvbi5wdXNoKGlkeCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoY3VyclNlbGVjdGlvbkxlbmd0aCAhPT0gdGhpcy4jc2VsZWN0aW9uLmxlbmd0aCkge1xuICAgICAgdGhpcy5kcmFnU2VsZWN0Q2hhbmdlLmVtaXQodGhpcy4jc2VsZWN0aW9uKTtcbiAgICB9XG4gIH07XG5cbiAgI2NoZWNrUmVjdEludGVyc2VjdGlvbiA9IChyMTogU2VsZWN0YWJsZVJlY3QsIHIyOiBTZWxlY3RhYmxlUmVjdCkgPT4ge1xuICAgIHJldHVybiAhKHIxLnggKyByMS53aWR0aCA8IHIyLnggfHwgcjIueCArIHIyLndpZHRoIDwgcjEueCB8fCByMS55ICsgcjEuaGVpZ2h0IDwgcjIueSB8fCByMi55ICsgcjIuaGVpZ2h0IDwgcjEueSk7XG4gIH07XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t5dXZEcmFnU2VsZWN0SXRlbV0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERyYWdTZWxlY3RJdGVtRGlyZWN0aXZlIHtcbiAgI2VsUmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBlbCA9IHRoaXMuI2VsUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG59XG4iXX0=
@@ -1,153 +0,0 @@
1
- import { Directive, ElementRef, HostListener, inject, input, output } from '@angular/core';
2
- import { Utils } from '@yuuvis/client-core';
3
- import * as i0 from "@angular/core";
4
- export class FileDropZoneDirective {
5
- constructor() {
6
- this.#elRef = inject(ElementRef);
7
- this.#fileOver = false;
8
- this.#defaultDragOverCoverStyles = {
9
- outline: '2px dashed var(--color-accent)',
10
- display: 'flex',
11
- transition: 'background-color .3s ease-in-out',
12
- 'z-index': '500',
13
- 'align-items': 'center',
14
- 'justify-content': 'center',
15
- 'outline-offset': '-2px',
16
- 'background-color': 'rgba(var(--color-accent-rgb), .5)'
17
- };
18
- this.#defaultDragOverCoverLabelStyles = {
19
- outline: '1px solid var(--color-accent)',
20
- padding: 'var(--app-pane-padding, 16px)',
21
- 'background-color': 'rgba(var(--color-accent-rgb), .9)',
22
- color: 'var(--color-accent-tone)'
23
- };
24
- this.yuvFileDropZone = input();
25
- this.fileDropDisabled = input(false);
26
- this.fileDrop = output();
27
- this.fileDropOver = output();
28
- }
29
- #elRef;
30
- #coverElement;
31
- #fileOver;
32
- set fileOver(fo) {
33
- if (fo !== this.#fileOver) {
34
- this.#fileOver = fo;
35
- this.fileDropOver.emit(fo);
36
- this.#toggleCover();
37
- }
38
- }
39
- get fileOver() {
40
- return this.#fileOver;
41
- }
42
- #defaultDragOverCoverStyles;
43
- #defaultDragOverCoverLabelStyles;
44
- onDrop(event) {
45
- if (this.fileDropDisabled())
46
- return;
47
- event.preventDefault();
48
- event.stopPropagation();
49
- this.fileOver = false;
50
- const dataTransfer = event.dataTransfer;
51
- if (dataTransfer) {
52
- if (dataTransfer?.items) {
53
- const files = [];
54
- for (let i = 0; i < dataTransfer.items.length; i++) {
55
- // If dropped items aren't files, reject them
56
- if (dataTransfer.items[i].kind === 'file') {
57
- const file = dataTransfer.items[i].getAsFile();
58
- if (file)
59
- files.push(file);
60
- }
61
- }
62
- dataTransfer.items.clear();
63
- this.fileDrop.emit(files);
64
- }
65
- else {
66
- const files = dataTransfer.files;
67
- dataTransfer.clearData();
68
- this.fileDrop.emit(Array.from(files));
69
- }
70
- }
71
- }
72
- onDragOver(event) {
73
- if (this.fileDropDisabled())
74
- return;
75
- event.stopPropagation();
76
- event.preventDefault();
77
- this.fileOver = true;
78
- }
79
- onDragLeave(event) {
80
- if (this.fileDropDisabled())
81
- return;
82
- if (event.target.getAttribute('id') === this.#coverElement?.getAttribute('id')) {
83
- this.fileOver = false;
84
- }
85
- }
86
- onBodyDragOver(event) {
87
- event.preventDefault();
88
- event.stopPropagation();
89
- }
90
- onBodyDrop(event) {
91
- event.preventDefault();
92
- }
93
- #toggleCover() {
94
- const el = this.#elRef.nativeElement;
95
- if (this.#coverElement) {
96
- el.style.position = 'initial';
97
- this.#coverElement.remove();
98
- this.#coverElement = undefined;
99
- }
100
- if (this.#fileOver) {
101
- el.style.position = 'relative';
102
- this.#coverElement = this.#createCoverElement();
103
- el.append(this.#coverElement);
104
- }
105
- }
106
- #createCoverElement() {
107
- const coverElement = document.createElement('div');
108
- coverElement.setAttribute('id', Utils.uuid());
109
- coverElement.style.position = 'absolute';
110
- coverElement.style.inset = '0';
111
- const styles = this.yuvFileDropZone()?.coverStyles || this.#defaultDragOverCoverStyles;
112
- Object.keys(styles).forEach((k) => {
113
- coverElement.style[k] = styles[k];
114
- });
115
- const label = this.yuvFileDropZone()?.label;
116
- if (label) {
117
- const coverLabelElement = document.createElement('div');
118
- coverLabelElement.innerText = label;
119
- const labelStyles = this.yuvFileDropZone()?.coverLabelStyles || this.#defaultDragOverCoverLabelStyles;
120
- Object.keys(labelStyles).forEach((k) => {
121
- coverLabelElement.style[k] = labelStyles[k];
122
- });
123
- coverLabelElement.style.pointerEvents = 'none';
124
- coverElement.append(coverLabelElement);
125
- }
126
- return coverElement;
127
- }
128
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileDropZoneDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
129
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: FileDropZoneDirective, isStandalone: true, selector: "[yuvFileDropZone]", inputs: { yuvFileDropZone: { classPropertyName: "yuvFileDropZone", publicName: "yuvFileDropZone", isSignal: true, isRequired: false, transformFunction: null }, fileDropDisabled: { classPropertyName: "fileDropDisabled", publicName: "fileDropDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fileDrop: "fileDrop", fileDropOver: "fileDropOver" }, host: { listeners: { "drop": "onDrop($event)", "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "body:dragover": "onBodyDragOver($event)", "body:drop": "onBodyDrop($event)" } }, ngImport: i0 }); }
130
- }
131
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileDropZoneDirective, decorators: [{
132
- type: Directive,
133
- args: [{
134
- selector: '[yuvFileDropZone]',
135
- standalone: true
136
- }]
137
- }], propDecorators: { onDrop: [{
138
- type: HostListener,
139
- args: ['drop', ['$event']]
140
- }], onDragOver: [{
141
- type: HostListener,
142
- args: ['dragover', ['$event']]
143
- }], onDragLeave: [{
144
- type: HostListener,
145
- args: ['dragleave', ['$event']]
146
- }], onBodyDragOver: [{
147
- type: HostListener,
148
- args: ['body:dragover', ['$event']]
149
- }], onBodyDrop: [{
150
- type: HostListener,
151
- args: ['body:drop', ['$event']]
152
- }] } });
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLXpvbmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWZyYW1ld29yay9jb21tb24vc3JjL2xpYi9kaXJlY3RpdmVzL2ZpbGUtZHJvcC16b25lL2ZpbGUtZHJvcC16b25lLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQU81QyxNQUFNLE9BQU8scUJBQXFCO0lBSmxDO1FBS0UsV0FBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUk1QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBWWxCLGdDQUEyQixHQUEyQjtZQUNwRCxPQUFPLEVBQUUsZ0NBQWdDO1lBQ3pDLE9BQU8sRUFBRSxNQUFNO1lBQ2YsVUFBVSxFQUFFLGtDQUFrQztZQUM5QyxTQUFTLEVBQUUsS0FBSztZQUNoQixhQUFhLEVBQUUsUUFBUTtZQUN2QixpQkFBaUIsRUFBRSxRQUFRO1lBQzNCLGdCQUFnQixFQUFFLE1BQU07WUFDeEIsa0JBQWtCLEVBQUUsbUNBQW1DO1NBQ3hELENBQUM7UUFFRixxQ0FBZ0MsR0FBMkI7WUFDekQsT0FBTyxFQUFFLCtCQUErQjtZQUV4QyxPQUFPLEVBQUUsK0JBQStCO1lBQ3hDLGtCQUFrQixFQUFFLG1DQUFtQztZQUN2RCxLQUFLLEVBQUUsMEJBQTBCO1NBQ2xDLENBQUM7UUFFRixvQkFBZSxHQUFHLEtBQUssRUFBdUIsQ0FBQztRQUMvQyxxQkFBZ0IsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFekMsYUFBUSxHQUFHLE1BQU0sRUFBVSxDQUFDO1FBQzVC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QkFTckMsY0FBYztzQkFEYixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFNekMsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBpbmplY3QsIGlucHV0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBGaWxlRHJvcFpvbmVPcHRpb25zIH0gZnJvbSAnLi9maWxlLWRyb3Atem9uZS5pbnRlcmZhY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbeXV2RmlsZURyb3Bab25lXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRmlsZURyb3Bab25lRGlyZWN0aXZlIHtcbiAgI2VsUmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICNjb3ZlckVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcblxuICAjZmlsZU92ZXIgPSBmYWxzZTtcbiAgc2V0IGZpbGVPdmVyKGZvOiBib29sZWFuKSB7XG4gICAgaWYgKGZvICE9PSB0aGlzLiNmaWxlT3Zlcikge1xuICAgICAgdGhpcy4jZmlsZU92ZXIgPSBmbztcbiAgICAgIHRoaXMuZmlsZURyb3BPdmVyLmVtaXQoZm8pO1xuICAgICAgdGhpcy4jdG9nZ2xlQ292ZXIoKTtcbiAgICB9XG4gIH1cbiAgZ2V0IGZpbGVPdmVyKCkge1xuICAgIHJldHVybiB0aGlzLiNmaWxlT3ZlcjtcbiAgfVxuXG4gICNkZWZhdWx0RHJhZ092ZXJDb3ZlclN0eWxlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBvdXRsaW5lOiAnMnB4IGRhc2hlZCB2YXIoLS1jb2xvci1hY2NlbnQpJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgdHJhbnNpdGlvbjogJ2JhY2tncm91bmQtY29sb3IgLjNzIGVhc2UtaW4tb3V0JyxcbiAgICAnei1pbmRleCc6ICc1MDAnLFxuICAgICdhbGlnbi1pdGVtcyc6ICdjZW50ZXInLFxuICAgICdqdXN0aWZ5LWNvbnRlbnQnOiAnY2VudGVyJyxcbiAgICAnb3V0bGluZS1vZmZzZXQnOiAnLTJweCcsXG4gICAgJ2JhY2tncm91bmQtY29sb3InOiAncmdiYSh2YXIoLS1jb2xvci1hY2NlbnQtcmdiKSwgLjUpJ1xuICB9O1xuXG4gICNkZWZhdWx0RHJhZ092ZXJDb3ZlckxhYmVsU3R5bGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tY29sb3ItYWNjZW50KScsXG5cbiAgICBwYWRkaW5nOiAndmFyKC0tYXBwLXBhbmUtcGFkZGluZywgMTZweCknLFxuICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJ3JnYmEodmFyKC0tY29sb3ItYWNjZW50LXJnYiksIC45KScsXG4gICAgY29sb3I6ICd2YXIoLS1jb2xvci1hY2NlbnQtdG9uZSknXG4gIH07XG5cbiAgeXV2RmlsZURyb3Bab25lID0gaW5wdXQ8RmlsZURyb3Bab25lT3B0aW9ucz4oKTtcbiAgZmlsZURyb3BEaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBmaWxlRHJvcCA9IG91dHB1dDxGaWxlW10+KCk7XG4gIGZpbGVEcm9wT3ZlciA9IG91dHB1dDxib29sZWFuPigpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGlmICh0aGlzLmZpbGVEcm9wRGlzYWJsZWQoKSkgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5maWxlT3ZlciA9IGZhbHNlO1xuXG4gICAgY29uc3QgZGF0YVRyYW5zZmVyOiBEYXRhVHJhbnNmZXIgfCBudWxsID0gZXZlbnQuZGF0YVRyYW5zZmVyO1xuXG4gICAgaWYgKGRhdGFUcmFuc2Zlcikge1xuICAgICAgaWYgKGRhdGFUcmFuc2Zlcj8uaXRlbXMpIHtcbiAgICAgICAgY29uc3QgZmlsZXM6IEZpbGVbXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIC8vIElmIGRyb3BwZWQgaXRlbXMgYXJlbid0IGZpbGVzLCByZWplY3QgdGhlbVxuICAgICAgICAgIGlmIChkYXRhVHJhbnNmZXIuaXRlbXNbaV0ua2luZCA9PT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlID0gZGF0YVRyYW5zZmVyLml0ZW1zW2ldLmdldEFzRmlsZSgpO1xuICAgICAgICAgICAgaWYgKGZpbGUpIGZpbGVzLnB1c2goZmlsZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRhdGFUcmFuc2Zlci5pdGVtcy5jbGVhcigpO1xuICAgICAgICB0aGlzLmZpbGVEcm9wLmVtaXQoZmlsZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBkYXRhVHJhbnNmZXIuZmlsZXM7XG4gICAgICAgIGRhdGFUcmFuc2Zlci5jbGVhckRhdGEoKTtcbiAgICAgICAgdGhpcy5maWxlRHJvcC5lbWl0KEFycmF5LmZyb20oZmlsZXMpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnb3ZlcicsIFsnJGV2ZW50J10pXG4gIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGlmICh0aGlzLmZpbGVEcm9wRGlzYWJsZWQoKSkgcmV0dXJuO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5maWxlT3ZlciA9IHRydWU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnLCBbJyRldmVudCddKVxuICBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgaWYgKHRoaXMuZmlsZURyb3BEaXNhYmxlZCgpKSByZXR1cm47XG4gICAgaWYgKChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmdldEF0dHJpYnV0ZSgnaWQnKSA9PT0gdGhpcy4jY292ZXJFbGVtZW50Py5nZXRBdHRyaWJ1dGUoJ2lkJykpIHtcbiAgICAgIHRoaXMuZmlsZU92ZXIgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdib2R5OmRyYWdvdmVyJywgWyckZXZlbnQnXSlcbiAgb25Cb2R5RHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cbiAgQEhvc3RMaXN0ZW5lcignYm9keTpkcm9wJywgWyckZXZlbnQnXSlcbiAgb25Cb2R5RHJvcChldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gICN0b2dnbGVDb3ZlcigpIHtcbiAgICBjb25zdCBlbDogSFRNTEVsZW1lbnQgPSB0aGlzLiNlbFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgaWYgKHRoaXMuI2NvdmVyRWxlbWVudCkge1xuICAgICAgZWwuc3R5bGUucG9zaXRpb24gPSAnaW5pdGlhbCc7XG4gICAgICB0aGlzLiNjb3ZlckVsZW1lbnQucmVtb3ZlKCk7XG4gICAgICB0aGlzLiNjb3ZlckVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLiNmaWxlT3Zlcikge1xuICAgICAgZWwuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgICAgdGhpcy4jY292ZXJFbGVtZW50ID0gdGhpcy4jY3JlYXRlQ292ZXJFbGVtZW50KCk7XG4gICAgICBlbC5hcHBlbmQodGhpcy4jY292ZXJFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICAjY3JlYXRlQ292ZXJFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBjb3ZlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBjb3ZlckVsZW1lbnQuc2V0QXR0cmlidXRlKCdpZCcsIFV0aWxzLnV1aWQoKSk7XG4gICAgY292ZXJFbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBjb3ZlckVsZW1lbnQuc3R5bGUuaW5zZXQgPSAnMCc7XG4gICAgY29uc3Qgc3R5bGVzID0gdGhpcy55dXZGaWxlRHJvcFpvbmUoKT8uY292ZXJTdHlsZXMgfHwgdGhpcy4jZGVmYXVsdERyYWdPdmVyQ292ZXJTdHlsZXM7XG4gICAgT2JqZWN0LmtleXMoc3R5bGVzKS5mb3JFYWNoKChrOiBzdHJpbmcpID0+IHtcbiAgICAgIChjb3ZlckVsZW1lbnQuc3R5bGUgYXMgYW55KVtrXSA9IHN0eWxlc1trXTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGxhYmVsID0gdGhpcy55dXZGaWxlRHJvcFpvbmUoKT8ubGFiZWw7XG4gICAgaWYgKGxhYmVsKSB7XG4gICAgICBjb25zdCBjb3ZlckxhYmVsRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgY292ZXJMYWJlbEVsZW1lbnQuaW5uZXJUZXh0ID0gbGFiZWw7XG4gICAgICBjb25zdCBsYWJlbFN0eWxlcyA9IHRoaXMueXV2RmlsZURyb3Bab25lKCk/LmNvdmVyTGFiZWxTdHlsZXMgfHwgdGhpcy4jZGVmYXVsdERyYWdPdmVyQ292ZXJMYWJlbFN0eWxlcztcbiAgICAgIE9iamVjdC5rZXlzKGxhYmVsU3R5bGVzKS5mb3JFYWNoKChrOiBzdHJpbmcpID0+IHtcbiAgICAgICAgKGNvdmVyTGFiZWxFbGVtZW50LnN0eWxlIGFzIGFueSlba10gPSBsYWJlbFN0eWxlc1trXTtcbiAgICAgIH0pO1xuICAgICAgY292ZXJMYWJlbEVsZW1lbnQuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgICAgIGNvdmVyRWxlbWVudC5hcHBlbmQoY292ZXJMYWJlbEVsZW1lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gY292ZXJFbGVtZW50O1xuICB9XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kcm9wLXpvbmUuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWZyYW1ld29yay9jb21tb24vc3JjL2xpYi9kaXJlY3RpdmVzL2ZpbGUtZHJvcC16b25lL2ZpbGUtZHJvcC16b25lLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBGaWxlRHJvcFpvbmVPcHRpb25zIHtcbiAgICAvLyBjc3MgY2xhc3MgdG8gYmUgYWRkZWQgd2hlbiBhIGZpbGUgaXMgZHJhZ2dlbmQgb3ZlciB0aGUgaG9zdCBjb21wb25lbnRcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICAvLyBzdHlsZXMgdG8gYmUgYXBwbGllZCB0byB0aGUgZmlsZU92ZXIgY292ZXIgZWxlbWVudFxuICAgIGNvdmVyU3R5bGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICAvLyBzdHlsZXMgdG8gYmUgYXBwbGllZCB0byB0aGUgbGFiZWwgZWxlbWVudCBvbiB0aGUgZmlsZU92ZXIgY292ZXIgZWxlbWVudFxuICAgIC8vIG9ubHkgYXBwbGllcyBpZiBhIGxhYmVsIGhhcyBiZWVuIHByb3ZpZGVkXG4gICAgY292ZXJMYWJlbFN0eWxlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59Il19
@@ -1,81 +0,0 @@
1
- import { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Directive keeping track of the focus beeing within a component. Once the component or
5
- * any of its child components gain focus, a class of `focusWithin` will be set on the
6
- * host component in order to allow styling it while beeing focused. Furthermore you can
7
- * register callbacks once the component gets or looses focus.
8
- *
9
- * @example
10
- * // just set the css class
11
- * <some-component yuvFocusWithin></some-component>
12
- * // set the css class and listen to focus changes
13
- * <some-component (yuvFocusWithin)="onFocusEnter()" (yuvFocusWithinBlur)="onFocusLeave()"></some-component>
14
- */
15
- export class FocusWithinDirective {
16
- onFocusIn(evt) {
17
- const hadFocusWithin = this.hasFocusWithin;
18
- this.hasFocusWithin = this.matchesFocusWithin();
19
- if (!hadFocusWithin && this.hasFocusWithin) {
20
- this.yuvFocusWithin.emit();
21
- }
22
- }
23
- onFocusOut(evt) {
24
- const hadFocusWithin = this.hasFocusWithin;
25
- this.hasFocusWithin = this.matchesFocusWithin();
26
- if (hadFocusWithin && !this.hasFocusWithin) {
27
- this.yuvFocusWithinBlur.emit();
28
- }
29
- }
30
- /**
31
- * @ignore
32
- */
33
- constructor(elRef) {
34
- this.elRef = elRef;
35
- this.eventCount = 0;
36
- this.hasFocusWithin = false;
37
- /**
38
- * Emitted once the component or any of its child components gains focus.
39
- */
40
- this.yuvFocusWithin = new EventEmitter();
41
- /**
42
- * Emitted once the component (incl. any of its child components) looses focus.
43
- */
44
- this.yuvFocusWithinBlur = new EventEmitter();
45
- }
46
- // Determine if the given node matches the given selector.
47
- // @see: https://www.bennadel.com/blog/3476-checking-to-see-if-an-element-has-a-css-pseudo-class-in-javascript.htm
48
- matchesFocusWithin() {
49
- const node = this.elRef.nativeElement;
50
- var nativeMatches = node.matches || node.msMatchesSelector;
51
- try {
52
- return nativeMatches.call(node, ':focus-within');
53
- }
54
- catch (error) {
55
- return false;
56
- }
57
- }
58
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FocusWithinDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
59
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FocusWithinDirective, isStandalone: true, selector: "[yuvFocusWithin]", outputs: { yuvFocusWithin: "yuvFocusWithin", yuvFocusWithinBlur: "yuvFocusWithinBlur" }, host: { listeners: { "focusin": "onFocusIn($event)", "focusout": "onFocusOut($event)" }, properties: { "class.focusWithin": "this.hasFocusWithin" } }, ngImport: i0 }); }
60
- }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FocusWithinDirective, decorators: [{
62
- type: Directive,
63
- args: [{
64
- selector: '[yuvFocusWithin]',
65
- standalone: true
66
- }]
67
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { hasFocusWithin: [{
68
- type: HostBinding,
69
- args: ['class.focusWithin']
70
- }], onFocusIn: [{
71
- type: HostListener,
72
- args: ['focusin', ['$event']]
73
- }], onFocusOut: [{
74
- type: HostListener,
75
- args: ['focusout', ['$event']]
76
- }], yuvFocusWithin: [{
77
- type: Output
78
- }], yuvFocusWithinBlur: [{
79
- type: Output
80
- }] } });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtd2l0aGluLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvY29tbW9uL3NyYy9saWIvZGlyZWN0aXZlcy9mb2N1cy13aXRoaW4uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFDdkc7Ozs7Ozs7Ozs7O0dBV0c7QUFLSCxNQUFNLE9BQU8sb0JBQW9CO0lBR00sU0FBUyxDQUFDLEdBQWU7UUFDNUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMzQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFDcUMsVUFBVSxDQUFDLEdBQWU7UUFDOUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMzQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ2hELElBQUksY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQVdEOztPQUVHO0lBRUgsWUFBb0IsS0FBaUI7UUFBakIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQTlCN0IsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNXLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBZ0J6RDs7V0FFRztRQUNPLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM5Qzs7V0FFRztRQUNPLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFNVCxDQUFDO0lBRTFDLDBEQUEwRDtJQUMxRCxrSEFBa0g7SUFDMUcsa0JBQWtCO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ3RDLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQzNELElBQUksQ0FBQztZQUNILE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDOytHQTNDVSxvQkFBb0I7bUdBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFKaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7K0VBR21DLGNBQWM7c0JBQS9DLFdBQVc7dUJBQUMsbUJBQW1CO2dCQUNLLFNBQVM7c0JBQTdDLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU9HLFVBQVU7c0JBQS9DLFlBQVk7dUJBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVcxQixjQUFjO3NCQUF2QixNQUFNO2dCQUlHLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbi8qKlxuICogRGlyZWN0aXZlIGtlZXBpbmcgdHJhY2sgb2YgdGhlIGZvY3VzIGJlZWluZyB3aXRoaW4gYSBjb21wb25lbnQuIE9uY2UgdGhlIGNvbXBvbmVudCBvclxuICogYW55IG9mIGl0cyBjaGlsZCBjb21wb25lbnRzIGdhaW4gZm9jdXMsIGEgY2xhc3Mgb2YgYGZvY3VzV2l0aGluYCB3aWxsIGJlIHNldCBvbiB0aGVcbiAqIGhvc3QgY29tcG9uZW50IGluIG9yZGVyIHRvIGFsbG93IHN0eWxpbmcgaXQgd2hpbGUgYmVlaW5nIGZvY3VzZWQuIEZ1cnRoZXJtb3JlIHlvdSBjYW5cbiAqIHJlZ2lzdGVyIGNhbGxiYWNrcyBvbmNlIHRoZSBjb21wb25lbnQgZ2V0cyBvciBsb29zZXMgZm9jdXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIGp1c3Qgc2V0IHRoZSBjc3MgY2xhc3NcbiAqIDxzb21lLWNvbXBvbmVudCB5dXZGb2N1c1dpdGhpbj48L3NvbWUtY29tcG9uZW50PlxuICogLy8gc2V0IHRoZSBjc3MgY2xhc3MgYW5kIGxpc3RlbiB0byBmb2N1cyBjaGFuZ2VzXG4gKiA8c29tZS1jb21wb25lbnQgKHl1dkZvY3VzV2l0aGluKT1cIm9uRm9jdXNFbnRlcigpXCIgKHl1dkZvY3VzV2l0aGluQmx1cik9XCJvbkZvY3VzTGVhdmUoKVwiPjwvc29tZS1jb21wb25lbnQ+XG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t5dXZGb2N1c1dpdGhpbl0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEZvY3VzV2l0aGluRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBldmVudENvdW50ID0gMDtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mb2N1c1dpdGhpbicpIGhhc0ZvY3VzV2l0aGluID0gZmFsc2U7XG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzaW4nLCBbJyRldmVudCddKSBvbkZvY3VzSW4oZXZ0OiBGb2N1c0V2ZW50KSB7XG4gICAgY29uc3QgaGFkRm9jdXNXaXRoaW4gPSB0aGlzLmhhc0ZvY3VzV2l0aGluO1xuICAgIHRoaXMuaGFzRm9jdXNXaXRoaW4gPSB0aGlzLm1hdGNoZXNGb2N1c1dpdGhpbigpO1xuICAgIGlmICghaGFkRm9jdXNXaXRoaW4gJiYgdGhpcy5oYXNGb2N1c1dpdGhpbikge1xuICAgICAgdGhpcy55dXZGb2N1c1dpdGhpbi5lbWl0KCk7XG4gICAgfVxuICB9XG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgWyckZXZlbnQnXSkgb25Gb2N1c091dChldnQ6IEZvY3VzRXZlbnQpIHtcbiAgICBjb25zdCBoYWRGb2N1c1dpdGhpbiA9IHRoaXMuaGFzRm9jdXNXaXRoaW47XG4gICAgdGhpcy5oYXNGb2N1c1dpdGhpbiA9IHRoaXMubWF0Y2hlc0ZvY3VzV2l0aGluKCk7XG4gICAgaWYgKGhhZEZvY3VzV2l0aGluICYmICF0aGlzLmhhc0ZvY3VzV2l0aGluKSB7XG4gICAgICB0aGlzLnl1dkZvY3VzV2l0aGluQmx1ci5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVtaXR0ZWQgb25jZSB0aGUgY29tcG9uZW50IG9yIGFueSBvZiBpdHMgY2hpbGQgY29tcG9uZW50cyBnYWlucyBmb2N1cy5cbiAgICovXG4gIEBPdXRwdXQoKSB5dXZGb2N1c1dpdGhpbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgb25jZSB0aGUgY29tcG9uZW50IChpbmNsLiBhbnkgb2YgaXRzIGNoaWxkIGNvbXBvbmVudHMpIGxvb3NlcyBmb2N1cy5cbiAgICovXG4gIEBPdXRwdXQoKSB5dXZGb2N1c1dpdGhpbkJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZikgeyB9XG5cbiAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiBub2RlIG1hdGNoZXMgdGhlIGdpdmVuIHNlbGVjdG9yLlxuICAvLyBAc2VlOiBodHRwczovL3d3dy5iZW5uYWRlbC5jb20vYmxvZy8zNDc2LWNoZWNraW5nLXRvLXNlZS1pZi1hbi1lbGVtZW50LWhhcy1hLWNzcy1wc2V1ZG8tY2xhc3MtaW4tamF2YXNjcmlwdC5odG1cbiAgcHJpdmF0ZSBtYXRjaGVzRm9jdXNXaXRoaW4oKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICB2YXIgbmF0aXZlTWF0Y2hlcyA9IG5vZGUubWF0Y2hlcyB8fCBub2RlLm1zTWF0Y2hlc1NlbGVjdG9yO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbmF0aXZlTWF0Y2hlcy5jYWxsKG5vZGUsICc6Zm9jdXMtd2l0aGluJyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,9 +0,0 @@
1
- export * from './busy-overlay.directive';
2
- export * from './focus-within.directive';
3
- export * from './file-drop-zone/file-drop-zone.directive';
4
- export * from './click-double.directive';
5
- export * from './light-dismiss.directive';
6
- export * from './container-size.directive';
7
- export * from './longpress.directive';
8
- export * from './drag-select.directive';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtZnJhbWV3b3JrL2NvbW1vbi9zcmMvbGliL2RpcmVjdGl2ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9idXN5LW92ZXJsYXkuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZm9jdXMtd2l0aGluLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUtZHJvcC16b25lL2ZpbGUtZHJvcC16b25lLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2NsaWNrLWRvdWJsZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWdodC1kaXNtaXNzLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRhaW5lci1zaXplLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xvbmdwcmVzcy5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmFnLXNlbGVjdC5kaXJlY3RpdmUnO1xuIl19
@@ -1,44 +0,0 @@
1
- import { Directive, ElementRef, HostListener, inject, output } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Directive for applying light dismiss actions. Adding this directive will trigger
5
- * the given function when the user clicks outside the component or hits escape.
6
- *
7
- * ```ts
8
- * <div class="notifications" (yuvLightDismiss)="close()">
9
- * ...
10
- * </div>
11
- * ```
12
- */
13
- export class LightDismissDirective {
14
- constructor() {
15
- this.elRef = inject(ElementRef);
16
- this.yuvLightDismiss = output();
17
- }
18
- onKeydownHandler(event) {
19
- if (!event.defaultPrevented) {
20
- this.yuvLightDismiss.emit();
21
- }
22
- }
23
- onMousedown(event) {
24
- if (!this.elRef.nativeElement.contains(event.target)) {
25
- this.yuvLightDismiss.emit();
26
- }
27
- }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LightDismissDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
29
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: LightDismissDirective, isStandalone: true, selector: "[yuvLightDismiss]", outputs: { yuvLightDismiss: "yuvLightDismiss" }, host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)", "document:mousedown": "onMousedown($event)" } }, ngImport: i0 }); }
30
- }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LightDismissDirective, decorators: [{
32
- type: Directive,
33
- args: [{
34
- selector: '[yuvLightDismiss]',
35
- standalone: true
36
- }]
37
- }], propDecorators: { onKeydownHandler: [{
38
- type: HostListener,
39
- args: ['document:keydown.escape', ['$event']]
40
- }], onMousedown: [{
41
- type: HostListener,
42
- args: ['document:mousedown', ['$event']]
43
- }] } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHQtZGlzbWlzcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtZnJhbWV3b3JrL2NvbW1vbi9zcmMvbGliL2RpcmVjdGl2ZXMvbGlnaHQtZGlzbWlzcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXBGOzs7Ozs7Ozs7R0FTRztBQUtILE1BQU0sT0FBTyxxQkFBcUI7SUFKbEM7UUFLVSxVQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBZ0JuQyxvQkFBZSxHQUFHLE1BQU0sRUFBRSxDQUFDO0tBQzVCO0lBZEMsZ0JBQWdCLENBQUMsS0FBb0I7UUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFHRCxXQUFXLENBQUMsS0FBaUI7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDOytHQWZVLHFCQUFxQjttR0FBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUpqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFLQyxnQkFBZ0I7c0JBRGYsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRbkQsV0FBVztzQkFEVixZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIGluamVjdCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogRGlyZWN0aXZlIGZvciBhcHBseWluZyBsaWdodCBkaXNtaXNzIGFjdGlvbnMuIEFkZGluZyB0aGlzIGRpcmVjdGl2ZSB3aWxsIHRyaWdnZXJcbiAqIHRoZSBnaXZlbiBmdW5jdGlvbiB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvdXRzaWRlIHRoZSBjb21wb25lbnQgb3IgaGl0cyBlc2NhcGUuXG4gKlxuICogYGBgdHNcbiAqIDxkaXYgY2xhc3M9XCJub3RpZmljYXRpb25zXCIgKHl1dkxpZ2h0RGlzbWlzcyk9XCJjbG9zZSgpXCI+XG4gKiAgIC4uLlxuICogPC9kaXY+XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3l1dkxpZ2h0RGlzbWlzc10nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIExpZ2h0RGlzbWlzc0RpcmVjdGl2ZSB7XG4gIHByaXZhdGUgZWxSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxuICBvbktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICB0aGlzLnl1dkxpZ2h0RGlzbWlzcy5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgb25Nb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICB0aGlzLnl1dkxpZ2h0RGlzbWlzcy5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgeXV2TGlnaHREaXNtaXNzID0gb3V0cHV0KCk7XG59XG4iXX0=
@@ -1,36 +0,0 @@
1
- import { Directive, ElementRef, inject, input, output } from '@angular/core';
2
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
- import { fromEvent, merge, of, timer } from 'rxjs';
4
- import { filter, map, switchMap } from 'rxjs/operators';
5
- import * as i0 from "@angular/core";
6
- export class LongPressDirective {
7
- constructor() {
8
- this.elRef = inject(ElementRef);
9
- this.threshold = 500;
10
- this.yuvLongPress = input({
11
- enabled: false
12
- });
13
- this.longpress = output();
14
- const mousedown = fromEvent(this.elRef.nativeElement, 'mousedown').pipe(takeUntilDestroyed(), filter((event) => event.button == 0), // Only allow left button (Primary button)
15
- map(() => true) // turn on threshold counter
16
- );
17
- const touchstart = fromEvent(this.elRef.nativeElement, 'touchstart').pipe(takeUntilDestroyed(), map(() => true));
18
- const touchEnd = fromEvent(this.elRef.nativeElement, 'touchend').pipe(takeUntilDestroyed(), map(() => false));
19
- const mouseup = fromEvent(window, 'mouseup').pipe(takeUntilDestroyed(), filter((event) => event.button == 0), // Only allow left button (Primary button)
20
- map(() => false) // reset threshold counter
21
- );
22
- merge(mousedown, mouseup, touchstart, touchEnd)
23
- .pipe(takeUntilDestroyed(), switchMap((state) => (state ? timer(this.threshold, 100) : of(null))), filter((value) => !!value))
24
- .subscribe(() => this.longpress.emit());
25
- }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LongPressDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
27
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: LongPressDirective, isStandalone: true, selector: "[yuvLongPress]", inputs: { yuvLongPress: { classPropertyName: "yuvLongPress", publicName: "yuvLongPress", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { longpress: "longpress" }, ngImport: i0 }); }
28
- }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LongPressDirective, decorators: [{
30
- type: Directive,
31
- args: [{
32
- selector: '[yuvLongPress]',
33
- standalone: true
34
- }]
35
- }], ctorParameters: () => [] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9uZ3ByZXNzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvY29tbW9uL3NyYy9saWIvZGlyZWN0aXZlcy9sb25ncHJlc3MuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBTXhELE1BQU0sT0FBTyxrQkFBa0I7SUFVN0I7UUFUUSxVQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRW5DLGNBQVMsR0FBRyxHQUFHLENBQUM7UUFFaEIsaUJBQVksR0FBRyxLQUFLLENBQTRCO1lBQzlDLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDO1FBQ0gsY0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBR25CLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBYSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ2pGLGtCQUFrQixFQUFFLEVBQ3BCLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsRUFBRSwwQ0FBMEM7UUFDaEYsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLDRCQUE0QjtTQUM3QyxDQUFDO1FBQ0YsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FDdkUsa0JBQWtCLEVBQUUsRUFDcEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUNoQixDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDbkUsa0JBQWtCLEVBQUUsRUFDcEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUNqQixDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFhLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQzNELGtCQUFrQixFQUFFLEVBQ3BCLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsRUFBRSwwQ0FBMEM7UUFDaEYsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLDBCQUEwQjtTQUM1QyxDQUFDO1FBQ0YsS0FBSyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQzthQUM1QyxJQUFJLENBQ0gsa0JBQWtCLEVBQUUsRUFDcEIsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ3JFLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUMzQjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQzsrR0FwQ1Usa0JBQWtCO21HQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIG9mLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3l1dkxvbmdQcmVzc10nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIExvbmdQcmVzc0RpcmVjdGl2ZSB7XG4gIHByaXZhdGUgZWxSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgdGhyZXNob2xkID0gNTAwO1xuXG4gIHl1dkxvbmdQcmVzcyA9IGlucHV0PExvbmdQcmVzc0RpcmVjdGl2ZU9wdGlvbnM+KHtcbiAgICBlbmFibGVkOiBmYWxzZVxuICB9KTtcbiAgbG9uZ3ByZXNzID0gb3V0cHV0KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgbW91c2Vkb3duID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgJ21vdXNlZG93bicpLnBpcGUoXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50LmJ1dHRvbiA9PSAwKSwgLy8gT25seSBhbGxvdyBsZWZ0IGJ1dHRvbiAoUHJpbWFyeSBidXR0b24pXG4gICAgICBtYXAoKCkgPT4gdHJ1ZSkgLy8gdHVybiBvbiB0aHJlc2hvbGQgY291bnRlclxuICAgICk7XG4gICAgY29uc3QgdG91Y2hzdGFydCA9IGZyb21FdmVudCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsICd0b3VjaHN0YXJ0JykucGlwZShcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgbWFwKCgpID0+IHRydWUpXG4gICAgKTtcbiAgICBjb25zdCB0b3VjaEVuZCA9IGZyb21FdmVudCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsICd0b3VjaGVuZCcpLnBpcGUoXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIG1hcCgoKSA9PiBmYWxzZSlcbiAgICApO1xuICAgIGNvbnN0IG1vdXNldXAgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4od2luZG93LCAnbW91c2V1cCcpLnBpcGUoXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50LmJ1dHRvbiA9PSAwKSwgLy8gT25seSBhbGxvdyBsZWZ0IGJ1dHRvbiAoUHJpbWFyeSBidXR0b24pXG4gICAgICBtYXAoKCkgPT4gZmFsc2UpIC8vIHJlc2V0IHRocmVzaG9sZCBjb3VudGVyXG4gICAgKTtcbiAgICBtZXJnZShtb3VzZWRvd24sIG1vdXNldXAsIHRvdWNoc3RhcnQsIHRvdWNoRW5kKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgICBzd2l0Y2hNYXAoKHN0YXRlKSA9PiAoc3RhdGUgPyB0aW1lcih0aGlzLnRocmVzaG9sZCwgMTAwKSA6IG9mKG51bGwpKSksXG4gICAgICAgIGZpbHRlcigodmFsdWUpID0+ICEhdmFsdWUpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMubG9uZ3ByZXNzLmVtaXQoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb25nUHJlc3NEaXJlY3RpdmVPcHRpb25zIHtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -1,42 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-unused-vars */
2
- /* eslint-disable @typescript-eslint/no-empty-function */
3
- import { Directive, forwardRef, inject } from '@angular/core';
4
- import { FormControlDirective, FormControlName, NG_VALUE_ACCESSOR, NgControl, NgModel } from '@angular/forms';
5
- import * as i0 from "@angular/core";
6
- // @see: https://netbasal.com/forwarding-form-controls-to-custom-control-components-in-angular-701e8406cc55
7
- export class NoopValueAccessorDirective {
8
- writeValue(obj) { }
9
- registerOnChange(fn) { }
10
- registerOnTouched(fn) { }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoopValueAccessorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
12
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: NoopValueAccessorDirective, isStandalone: true, providers: [
13
- {
14
- provide: NG_VALUE_ACCESSOR,
15
- multi: true,
16
- useExisting: forwardRef(() => NoopValueAccessorDirective),
17
- },
18
- ], ngImport: i0 }); }
19
- }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoopValueAccessorDirective, decorators: [{
21
- type: Directive,
22
- args: [{
23
- standalone: true,
24
- providers: [
25
- {
26
- provide: NG_VALUE_ACCESSOR,
27
- multi: true,
28
- useExisting: forwardRef(() => NoopValueAccessorDirective),
29
- },
30
- ],
31
- }]
32
- }] });
33
- export function injectNgControl() {
34
- const ngControl = inject(NgControl, { self: true, optional: true });
35
- if (!ngControl)
36
- throw new Error('...');
37
- if (ngControl instanceof FormControlDirective || ngControl instanceof FormControlName || ngControl instanceof NgModel) {
38
- return ngControl;
39
- }
40
- throw new Error('...');
41
- }
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9vcC12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtZnJhbWV3b3JrL2NvbW1vbi9zcmMvbGliL2RpcmVjdGl2ZXMvbm9vcC12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0RBQXNEO0FBQ3RELHlEQUF5RDtBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUF3QixvQkFBb0IsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUVwSSwyR0FBMkc7QUFXM0csTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxVQUFVLENBQUMsR0FBUSxJQUFTLENBQUM7SUFDN0IsZ0JBQWdCLENBQUMsRUFBTyxJQUFTLENBQUM7SUFDbEMsaUJBQWlCLENBQUMsRUFBTyxJQUFTLENBQUM7K0dBSHhCLDBCQUEwQjttR0FBMUIsMEJBQTBCLGlDQVIxQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLEtBQUssRUFBRSxJQUFJO2dCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMEJBQTBCLENBQUM7YUFDMUQ7U0FDRjs7NEZBRVUsMEJBQTBCO2tCQVZ0QyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsS0FBSyxFQUFFLElBQUk7NEJBQ1gsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsMkJBQTJCLENBQUM7eUJBQzFEO3FCQUNGO2lCQUNGOztBQU9ELE1BQU0sVUFBVSxlQUFlO0lBQzdCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXBFLElBQUksQ0FBQyxTQUFTO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUV2QyxJQUFJLFNBQVMsWUFBWSxvQkFBb0IsSUFBSSxTQUFTLFlBQVksZUFBZSxJQUFJLFNBQVMsWUFBWSxPQUFPLEVBQUUsQ0FBQztRQUN0SCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb24gKi9cbmltcG9ydCB7IERpcmVjdGl2ZSwgZm9yd2FyZFJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2xEaXJlY3RpdmUsIEZvcm1Db250cm9sTmFtZSwgTkdfVkFMVUVfQUNDRVNTT1IsIE5nQ29udHJvbCwgTmdNb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLy8gQHNlZTogaHR0cHM6Ly9uZXRiYXNhbC5jb20vZm9yd2FyZGluZy1mb3JtLWNvbnRyb2xzLXRvLWN1c3RvbS1jb250cm9sLWNvbXBvbmVudHMtaW4tYW5ndWxhci03MDFlODQwNmNjNTVcbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTm9vcFZhbHVlQWNjZXNzb3JEaXJlY3RpdmUpLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5vb3BWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7fVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHt9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHt9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROZ0NvbnRyb2woKSB7XG4gIGNvbnN0IG5nQ29udHJvbCA9IGluamVjdChOZ0NvbnRyb2wsIHsgc2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgaWYgKCFuZ0NvbnRyb2wpIHRocm93IG5ldyBFcnJvcignLi4uJyk7XG5cbiAgaWYgKG5nQ29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sRGlyZWN0aXZlIHx8IG5nQ29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sTmFtZSB8fCBuZ0NvbnRyb2wgaW5zdGFuY2VvZiBOZ01vZGVsKSB7XG4gICAgcmV0dXJuIG5nQ29udHJvbDtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcignLi4uJyk7XG59XG4iXX0=