ngx-ode-ui 4.6.0-dev-produit.2 → 4.6.0-dev-integration.2

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 (226) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/bundles/ngx-ode-ui.umd.js +5804 -0
  3. package/bundles/ngx-ode-ui.umd.js.map +1 -0
  4. package/bundles/ngx-ode-ui.umd.min.js +17 -0
  5. package/bundles/ngx-ode-ui.umd.min.js.map +1 -0
  6. package/esm2015/lib/components/datepicker/datepicker.component.js +261 -0
  7. package/esm2015/lib/components/dropdown/dropdown.component.js +76 -0
  8. package/esm2015/lib/components/ellipsis/ellipsis.component.js +98 -0
  9. package/esm2015/lib/components/form-errors/form-errors.component.js +65 -0
  10. package/esm2015/lib/components/form-field/form-field.component.js +40 -0
  11. package/esm2015/lib/components/item-tree/item-tree.component.js +289 -0
  12. package/esm2015/lib/components/lightbox/lightbox.component.js +129 -0
  13. package/esm2015/lib/components/lightbox-confirm/lightbox-confirm.component.js +65 -0
  14. package/esm2015/lib/components/list/list.component.js +140 -0
  15. package/esm2015/lib/components/list-checkable/list-checkable.component.js +137 -0
  16. package/esm2015/lib/components/message-box/message-box.component.js +153 -0
  17. package/esm2015/lib/components/message-sticker/message-sticker.component.js +81 -0
  18. package/esm2015/lib/components/mono-select/mono-select.component.js +164 -0
  19. package/esm2015/lib/components/multi-combo/multi-combo.component.js +255 -0
  20. package/esm2015/lib/components/multi-select/multi-select.component.js +214 -0
  21. package/esm2015/lib/components/panel-section/panel-section.component.js +38 -0
  22. package/esm2015/lib/components/portal/portal.component.js +27 -0
  23. package/esm2015/lib/components/push-panel/push-panel.component.js +81 -0
  24. package/esm2015/lib/components/search-input/search-input.component.js +176 -0
  25. package/esm2015/lib/components/search-toolbar/search-toolbar.component.js +84 -0
  26. package/esm2015/lib/components/side-layout/side-layout.component.js +39 -0
  27. package/esm2015/lib/components/side-panel/side-panel.component.js +76 -0
  28. package/esm2015/lib/components/spinner-cube/spinner-cube.component.js +67 -0
  29. package/esm2015/lib/components/table/pager.component.js +95 -0
  30. package/esm2015/lib/components/tooltip/tooltip.component.js +172 -0
  31. package/esm2015/lib/components/upload-files/upload-files.component.js +112 -0
  32. package/esm2015/lib/components/value-editable/simple-select.component.js +57 -0
  33. package/esm2015/lib/components/wizard/wizard.component.js +225 -0
  34. package/esm2015/lib/directives/anchor.directive.js +34 -0
  35. package/esm2015/lib/directives/drag-and-drop-files.directive.js +126 -0
  36. package/esm2015/lib/directives/dynamic-component/component-descriptor.model.js +34 -0
  37. package/esm2015/lib/directives/dynamic-component/dynamic-component.directive.js +100 -0
  38. package/esm2015/lib/directives/dynamictemplate.directive.js +159 -0
  39. package/esm2015/lib/directives/object-url.directive.js +53 -0
  40. package/esm2015/lib/ngx-ode-ui.module.js +188 -0
  41. package/esm2015/lib/pipes/bytes.pipe.js +27 -0
  42. package/esm2015/lib/pipes/filter.pipe.js +141 -0
  43. package/esm2015/lib/pipes/flattenObjArray.pipe.js +52 -0
  44. package/esm2015/lib/pipes/keys.pipe.js +27 -0
  45. package/esm2015/lib/pipes/length.pipe.js +22 -0
  46. package/esm2015/lib/pipes/limit.pipe.js +24 -0
  47. package/esm2015/lib/pipes/localizedDate.pipe.js +44 -0
  48. package/esm2015/lib/pipes/orderBy.pipe.js +269 -0
  49. package/esm2015/lib/pipes/store.pipe.js +24 -0
  50. package/esm2015/lib/services/dynamicModuleImports.service.js +19 -0
  51. package/esm2015/lib/services/inputFile.service.js +80 -0
  52. package/esm2015/lib/services/labels.service.js +54 -0
  53. package/esm2015/lib/services/spinner.service.js +163 -0
  54. package/esm2015/lib/utils/math.js +49 -0
  55. package/esm2015/lib/utils/string.js +29 -0
  56. package/esm2015/lib/utils/testing.js +20 -0
  57. package/esm2015/ngx-ode-ui.js +12 -0
  58. package/esm2015/public-api.js +59 -0
  59. package/esm5/lib/components/datepicker/datepicker.component.js +292 -0
  60. package/esm5/lib/components/dropdown/dropdown.component.js +81 -0
  61. package/esm5/lib/components/ellipsis/ellipsis.component.js +106 -0
  62. package/esm5/lib/components/form-errors/form-errors.component.js +73 -0
  63. package/esm5/lib/components/form-field/form-field.component.js +41 -0
  64. package/esm5/lib/components/item-tree/item-tree.component.js +345 -0
  65. package/esm5/lib/components/lightbox/lightbox.component.js +141 -0
  66. package/esm5/lib/components/lightbox-confirm/lightbox-confirm.component.js +67 -0
  67. package/esm5/lib/components/list/list.component.js +146 -0
  68. package/esm5/lib/components/list-checkable/list-checkable.component.js +148 -0
  69. package/esm5/lib/components/message-box/message-box.component.js +190 -0
  70. package/esm5/lib/components/message-sticker/message-sticker.component.js +92 -0
  71. package/esm5/lib/components/mono-select/mono-select.component.js +192 -0
  72. package/esm5/lib/components/multi-combo/multi-combo.component.js +294 -0
  73. package/esm5/lib/components/multi-select/multi-select.component.js +258 -0
  74. package/esm5/lib/components/panel-section/panel-section.component.js +40 -0
  75. package/esm5/lib/components/portal/portal.component.js +28 -0
  76. package/esm5/lib/components/push-panel/push-panel.component.js +91 -0
  77. package/esm5/lib/components/search-input/search-input.component.js +199 -0
  78. package/esm5/lib/components/search-toolbar/search-toolbar.component.js +93 -0
  79. package/esm5/lib/components/side-layout/side-layout.component.js +41 -0
  80. package/esm5/lib/components/side-panel/side-panel.component.js +85 -0
  81. package/esm5/lib/components/spinner-cube/spinner-cube.component.js +76 -0
  82. package/esm5/lib/components/table/pager.component.js +113 -0
  83. package/esm5/lib/components/tooltip/tooltip.component.js +188 -0
  84. package/esm5/lib/components/upload-files/upload-files.component.js +133 -0
  85. package/esm5/lib/components/value-editable/simple-select.component.js +59 -0
  86. package/esm5/lib/components/wizard/wizard.component.js +161 -0
  87. package/esm5/lib/directives/anchor.directive.js +39 -0
  88. package/esm5/lib/directives/drag-and-drop-files.directive.js +146 -0
  89. package/esm5/lib/directives/dynamic-component/component-descriptor.model.js +44 -0
  90. package/esm5/lib/directives/dynamic-component/dynamic-component.directive.js +109 -0
  91. package/esm5/lib/directives/dynamictemplate.directive.js +175 -0
  92. package/esm5/lib/directives/object-url.directive.js +62 -0
  93. package/esm5/lib/ngx-ode-ui.module.js +199 -0
  94. package/esm5/lib/pipes/bytes.pipe.js +37 -0
  95. package/esm5/lib/pipes/filter.pipe.js +179 -0
  96. package/esm5/lib/pipes/flattenObjArray.pipe.js +62 -0
  97. package/esm5/lib/pipes/keys.pipe.js +36 -0
  98. package/esm5/lib/pipes/length.pipe.js +30 -0
  99. package/esm5/lib/pipes/limit.pipe.js +35 -0
  100. package/esm5/lib/pipes/localizedDate.pipe.js +49 -0
  101. package/esm5/lib/pipes/orderBy.pipe.js +280 -0
  102. package/esm5/lib/pipes/store.pipe.js +35 -0
  103. package/esm5/lib/services/dynamicModuleImports.service.js +21 -0
  104. package/esm5/lib/services/inputFile.service.js +98 -0
  105. package/esm5/lib/services/labels.service.js +68 -0
  106. package/esm5/lib/services/spinner.service.js +195 -0
  107. package/esm5/lib/utils/math.js +49 -0
  108. package/esm5/lib/utils/string.js +29 -0
  109. package/esm5/lib/utils/testing.js +20 -0
  110. package/esm5/ngx-ode-ui.js +12 -0
  111. package/esm5/public-api.js +59 -0
  112. package/fesm2015/ngx-ode-ui.js +5027 -0
  113. package/fesm2015/ngx-ode-ui.js.map +1 -0
  114. package/fesm5/ngx-ode-ui.js +5560 -0
  115. package/fesm5/ngx-ode-ui.js.map +1 -0
  116. package/lib/components/datepicker/datepicker.component.d.ts +2 -7
  117. package/lib/components/dropdown/dropdown.component.d.ts +0 -3
  118. package/lib/components/ellipsis/ellipsis.component.d.ts +1 -4
  119. package/lib/components/form-errors/form-errors.component.d.ts +0 -3
  120. package/lib/components/form-field/form-field.component.d.ts +0 -3
  121. package/lib/components/item-tree/item-tree.component.d.ts +1 -5
  122. package/lib/components/lightbox/lightbox.component.d.ts +1 -5
  123. package/lib/components/lightbox-confirm/lightbox-confirm.component.d.ts +0 -3
  124. package/lib/components/list/list.component.d.ts +1 -5
  125. package/lib/components/list-checkable/list-checkable.component.d.ts +1 -5
  126. package/lib/components/message-box/message-box.component.d.ts +4 -8
  127. package/lib/components/message-sticker/message-sticker.component.d.ts +0 -3
  128. package/lib/components/mono-select/mono-select.component.d.ts +0 -3
  129. package/lib/components/multi-combo/multi-combo.component.d.ts +1 -4
  130. package/lib/components/multi-select/multi-select.component.d.ts +0 -3
  131. package/lib/components/panel-section/panel-section.component.d.ts +0 -3
  132. package/lib/components/portal/portal.component.d.ts +0 -3
  133. package/lib/components/push-panel/push-panel.component.d.ts +1 -4
  134. package/lib/components/search-input/search-input.component.d.ts +1 -5
  135. package/lib/components/search-toolbar/search-toolbar.component.d.ts +0 -3
  136. package/lib/components/side-layout/side-layout.component.d.ts +0 -3
  137. package/lib/components/side-panel/side-panel.component.d.ts +1 -4
  138. package/lib/components/spinner-cube/spinner-cube.component.d.ts +1 -5
  139. package/lib/components/table/pager.component.d.ts +0 -3
  140. package/lib/components/tooltip/tooltip.component.d.ts +0 -3
  141. package/lib/components/upload-files/upload-files.component.d.ts +0 -3
  142. package/lib/components/value-editable/simple-select.component.d.ts +0 -3
  143. package/lib/components/wizard/wizard.component.d.ts +0 -5
  144. package/lib/directives/anchor.directive.d.ts +0 -3
  145. package/lib/directives/drag-and-drop-files.directive.d.ts +0 -3
  146. package/lib/directives/dynamic-component/dynamic-component.directive.d.ts +0 -3
  147. package/lib/directives/dynamictemplate.directive.d.ts +1 -4
  148. package/lib/directives/object-url.directive.d.ts +0 -3
  149. package/lib/ngx-ode-ui.module.d.ts +2 -53
  150. package/lib/pipes/bytes.pipe.d.ts +0 -3
  151. package/lib/pipes/filter.pipe.d.ts +0 -3
  152. package/lib/pipes/flattenObjArray.pipe.d.ts +0 -3
  153. package/lib/pipes/keys.pipe.d.ts +0 -3
  154. package/lib/pipes/length.pipe.d.ts +0 -3
  155. package/lib/pipes/limit.pipe.d.ts +0 -3
  156. package/lib/pipes/localizedDate.pipe.d.ts +0 -3
  157. package/lib/pipes/orderBy.pipe.d.ts +0 -3
  158. package/lib/pipes/store.pipe.d.ts +0 -3
  159. package/lib/services/dynamicModuleImports.service.d.ts +0 -3
  160. package/lib/services/inputFile.service.d.ts +0 -3
  161. package/lib/services/labels.service.d.ts +0 -3
  162. package/lib/services/spinner.service.d.ts +1 -4
  163. package/ngx-ode-ui.d.ts +6 -0
  164. package/ngx-ode-ui.metadata.json +1 -0
  165. package/package.json +17 -29
  166. package/public-api.d.ts +0 -3
  167. package/esm2020/lib/components/datepicker/datepicker.component.mjs +0 -148
  168. package/esm2020/lib/components/dropdown/dropdown.component.mjs +0 -55
  169. package/esm2020/lib/components/ellipsis/ellipsis.component.mjs +0 -53
  170. package/esm2020/lib/components/form-errors/form-errors.component.mjs +0 -35
  171. package/esm2020/lib/components/form-field/form-field.component.mjs +0 -24
  172. package/esm2020/lib/components/item-tree/item-tree.component.mjs +0 -170
  173. package/esm2020/lib/components/lightbox/lightbox.component.mjs +0 -70
  174. package/esm2020/lib/components/lightbox-confirm/lightbox-confirm.component.mjs +0 -43
  175. package/esm2020/lib/components/list/list.component.mjs +0 -88
  176. package/esm2020/lib/components/list-checkable/list-checkable.component.mjs +0 -79
  177. package/esm2020/lib/components/message-box/message-box.component.mjs +0 -92
  178. package/esm2020/lib/components/message-sticker/message-sticker.component.mjs +0 -51
  179. package/esm2020/lib/components/mono-select/mono-select.component.mjs +0 -83
  180. package/esm2020/lib/components/multi-combo/multi-combo.component.mjs +0 -166
  181. package/esm2020/lib/components/multi-select/multi-select.component.mjs +0 -104
  182. package/esm2020/lib/components/panel-section/panel-section.component.mjs +0 -23
  183. package/esm2020/lib/components/portal/portal.component.mjs +0 -15
  184. package/esm2020/lib/components/push-panel/push-panel.component.mjs +0 -43
  185. package/esm2020/lib/components/search-input/search-input.component.mjs +0 -87
  186. package/esm2020/lib/components/search-toolbar/search-toolbar.component.mjs +0 -56
  187. package/esm2020/lib/components/side-layout/side-layout.component.mjs +0 -23
  188. package/esm2020/lib/components/side-panel/side-panel.component.mjs +0 -41
  189. package/esm2020/lib/components/spinner-cube/spinner-cube.component.mjs +0 -31
  190. package/esm2020/lib/components/table/pager.component.mjs +0 -48
  191. package/esm2020/lib/components/tooltip/tooltip.component.mjs +0 -104
  192. package/esm2020/lib/components/upload-files/upload-files.component.mjs +0 -59
  193. package/esm2020/lib/components/value-editable/simple-select.component.mjs +0 -29
  194. package/esm2020/lib/components/wizard/wizard.component.mjs +0 -152
  195. package/esm2020/lib/directives/anchor.directive.mjs +0 -27
  196. package/esm2020/lib/directives/drag-and-drop-files.directive.mjs +0 -82
  197. package/esm2020/lib/directives/dynamic-component/component-descriptor.model.mjs +0 -15
  198. package/esm2020/lib/directives/dynamic-component/dynamic-component.directive.mjs +0 -58
  199. package/esm2020/lib/directives/dynamictemplate.directive.mjs +0 -83
  200. package/esm2020/lib/directives/object-url.directive.mjs +0 -28
  201. package/esm2020/lib/ngx-ode-ui.module.mjs +0 -282
  202. package/esm2020/lib/pipes/bytes.pipe.mjs +0 -20
  203. package/esm2020/lib/pipes/filter.pipe.mjs +0 -97
  204. package/esm2020/lib/pipes/flattenObjArray.pipe.mjs +0 -35
  205. package/esm2020/lib/pipes/keys.pipe.mjs +0 -20
  206. package/esm2020/lib/pipes/length.pipe.mjs +0 -17
  207. package/esm2020/lib/pipes/limit.pipe.mjs +0 -17
  208. package/esm2020/lib/pipes/localizedDate.pipe.mjs +0 -23
  209. package/esm2020/lib/pipes/orderBy.pipe.mjs +0 -161
  210. package/esm2020/lib/pipes/replace.pipe.mjs +0 -20
  211. package/esm2020/lib/pipes/store.pipe.mjs +0 -17
  212. package/esm2020/lib/services/dynamicModuleImports.service.mjs +0 -13
  213. package/esm2020/lib/services/inputFile.service.mjs +0 -56
  214. package/esm2020/lib/services/labels.service.mjs +0 -32
  215. package/esm2020/lib/services/spinner.service.mjs +0 -76
  216. package/esm2020/lib/utils/math.mjs +0 -19
  217. package/esm2020/lib/utils/string.mjs +0 -11
  218. package/esm2020/lib/utils/testing.mjs +0 -7
  219. package/esm2020/ngx-ode-ui.mjs +0 -5
  220. package/esm2020/public-api.mjs +0 -57
  221. package/fesm2015/ngx-ode-ui.mjs +0 -2954
  222. package/fesm2015/ngx-ode-ui.mjs.map +0 -1
  223. package/fesm2020/ngx-ode-ui.mjs +0 -2952
  224. package/fesm2020/ngx-ode-ui.mjs.map +0 -1
  225. package/index.d.ts +0 -5
  226. package/lib/pipes/replace.pipe.d.ts +0 -8
@@ -0,0 +1,106 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * Generated from: lib/components/ellipsis/ellipsis.component.ts
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
+ */
6
+ import * as tslib_1 from "tslib";
7
+ import { OdeComponent } from 'ngx-ode-core';
8
+ import { Component, ElementRef, Input, Injector } from '@angular/core';
9
+ /**
10
+ * A simple ellipsis component that switches text-overflow on click.
11
+ * Add an ellipsis={'hide'| 'expand'} attirubute on your element.
12
+ * Default behavior is 'hide', so that it's the same than the raw CSS
13
+ */
14
+ var EllipsisComponent = /** @class */ (function (_super) {
15
+ tslib_1.__extends(EllipsisComponent, _super);
16
+ function EllipsisComponent(eltRef, injector) {
17
+ var _this = _super.call(this, injector) || this;
18
+ _this.eltRef = eltRef;
19
+ _this._ellipsis = 'hide';
20
+ _this.isExpanded = false;
21
+ _this.initialStyle = Object.assign({}, _this.eltRef.nativeElement.style);
22
+ return _this;
23
+ }
24
+ Object.defineProperty(EllipsisComponent.prototype, "ellipsis", {
25
+ set: /**
26
+ * @param {?} value
27
+ * @return {?}
28
+ */
29
+ function (value) {
30
+ if (!!value) {
31
+ this._ellipsis = value;
32
+ if (this._ellipsis == 'expand') {
33
+ this.eltRef.nativeElement.className = 'expand';
34
+ }
35
+ }
36
+ },
37
+ enumerable: true,
38
+ configurable: true
39
+ });
40
+ /**
41
+ * @return {?}
42
+ */
43
+ EllipsisComponent.prototype.onClick = /**
44
+ * @return {?}
45
+ */
46
+ function () {
47
+ if (this._ellipsis == 'hide') {
48
+ return;
49
+ }
50
+ if (!this.isExpanded) {
51
+ this.isExpanded = true;
52
+ Object.assign(this.eltRef.nativeElement.style, {
53
+ textOverflow: 'clip',
54
+ overflow: 'auto',
55
+ whiteSpace: 'normal',
56
+ });
57
+ }
58
+ else {
59
+ this.isExpanded = false;
60
+ this.eltRef.nativeElement.style = this.initialStyle;
61
+ }
62
+ };
63
+ EllipsisComponent.decorators = [
64
+ { type: Component, args: [{
65
+ selector: '[ellipsis]',
66
+ template: "<ng-content></ng-content>",
67
+ host: {
68
+ '(click)': 'onClick()',
69
+ },
70
+ styles: [":host{display:block;width:8em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host.expand{cursor:pointer}"]
71
+ }] }
72
+ ];
73
+ /** @nocollapse */
74
+ EllipsisComponent.ctorParameters = function () { return [
75
+ { type: ElementRef },
76
+ { type: Injector }
77
+ ]; };
78
+ EllipsisComponent.propDecorators = {
79
+ ellipsis: [{ type: Input }]
80
+ };
81
+ return EllipsisComponent;
82
+ }(OdeComponent));
83
+ export { EllipsisComponent };
84
+ if (false) {
85
+ /**
86
+ * @type {?}
87
+ * @private
88
+ */
89
+ EllipsisComponent.prototype._ellipsis;
90
+ /**
91
+ * @type {?}
92
+ * @private
93
+ */
94
+ EllipsisComponent.prototype.isExpanded;
95
+ /**
96
+ * @type {?}
97
+ * @private
98
+ */
99
+ EllipsisComponent.prototype.initialStyle;
100
+ /**
101
+ * @type {?}
102
+ * @private
103
+ */
104
+ EllipsisComponent.prototype.eltRef;
105
+ }
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxsaXBzaXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LW9kZS11aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2VsbGlwc2lzL2VsbGlwc2lzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVN2RTtJQVF1Qyw2Q0FBWTtJQUMvQywyQkFBb0IsTUFBa0IsRUFBRSxRQUFrQjtRQUExRCxZQUNJLGtCQUFNLFFBQVEsQ0FBQyxTQUNsQjtRQUZtQixZQUFNLEdBQU4sTUFBTSxDQUFZO1FBSTlCLGVBQVMsR0FBc0IsTUFBTSxDQUFDO1FBV3RDLGdCQUFVLEdBQUcsS0FBSyxDQUFDO1FBRW5CLGtCQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7O0lBZjFFLENBQUM7SUFHRCxzQkFDSSx1Q0FBUTs7Ozs7UUFEWixVQUNhLEtBQXVCO1lBQ2hDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFDVCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLFFBQVEsRUFBRTtvQkFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztpQkFDbEQ7YUFDSjtRQUNMLENBQUM7OztPQUFBOzs7O0lBS0QsbUNBQU87OztJQUFQO1FBQ0ksSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLE1BQU0sRUFBRTtZQUMxQixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRTtnQkFDM0MsWUFBWSxFQUFFLE1BQU07Z0JBQ3BCLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixVQUFVLEVBQUUsUUFBUTthQUN2QixDQUFDLENBQUM7U0FDTjthQUFNO1lBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDdkQ7SUFFTCxDQUFDOztnQkEzQ0osU0FBUyxTQUFDO29CQUNQLFFBQVEsRUFBRSxZQUFZO29CQUN0QixRQUFRLEVBQUUsMkJBQTJCO29CQUVyQyxJQUFJLEVBQUU7d0JBQ0YsU0FBUyxFQUFFLFdBQVc7cUJBQ3pCOztpQkFDSjs7OztnQkFoQm1CLFVBQVU7Z0JBQVMsUUFBUTs7OzJCQXVCMUMsS0FBSzs7SUErQlYsd0JBQUM7Q0FBQSxBQTdDRCxDQVF1QyxZQUFZLEdBcUNsRDtTQXJDWSxpQkFBaUI7Ozs7OztJQUsxQixzQ0FBOEM7Ozs7O0lBVzlDLHVDQUEyQjs7Ozs7SUFFM0IseUNBQTBFOzs7OztJQWpCOUQsbUNBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2RlQ29tcG9uZW50IH0gZnJvbSAnbmd4LW9kZS1jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbnR5cGUgRWxsaXBzaXNCZWhhdmlvciA9ICdleHBhbmQnIHwgJ2hpZGUnO1xuXG4vKipcbiAqIEEgc2ltcGxlIGVsbGlwc2lzIGNvbXBvbmVudCB0aGF0IHN3aXRjaGVzIHRleHQtb3ZlcmZsb3cgb24gY2xpY2suXG4gKiBBZGQgYW4gZWxsaXBzaXM9eydoaWRlJ3wgJ2V4cGFuZCd9IGF0dGlydWJ1dGUgb24geW91ciBlbGVtZW50LlxuICogRGVmYXVsdCBiZWhhdmlvciBpcyAnaGlkZScsIHNvIHRoYXQgaXQncyB0aGUgc2FtZSB0aGFuIHRoZSByYXcgQ1NTXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnW2VsbGlwc2lzXScsXG4gICAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcbiAgICBzdHlsZVVybHM6IFsnLi9lbGxpcHNpcy5jb21wb25lbnQuc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhjbGljayknOiAnb25DbGljaygpJyxcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEVsbGlwc2lzQ29tcG9uZW50IGV4dGVuZHMgT2RlQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsdFJlZjogRWxlbWVudFJlZiwgaW5qZWN0b3I6IEluamVjdG9yICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZWxsaXBzaXM6IEVsbGlwc2lzQmVoYXZpb3IgID0gJ2hpZGUnO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGVsbGlwc2lzKHZhbHVlOiBFbGxpcHNpc0JlaGF2aW9yKSB7XG4gICAgICAgIGlmICghIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9lbGxpcHNpcyA9IHZhbHVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2VsbGlwc2lzID09ICdleHBhbmQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbHRSZWYubmF0aXZlRWxlbWVudC5jbGFzc05hbWUgPSAnZXhwYW5kJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNFeHBhbmRlZCA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBpbml0aWFsU3R5bGUgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmVsdFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlKTtcbiAgICBvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZWxsaXBzaXMgPT0gJ2hpZGUnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNFeHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuZWx0UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUsIHtcbiAgICAgICAgICAgICAgICB0ZXh0T3ZlcmZsb3c6ICdjbGlwJyxcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ2F1dG8nLFxuICAgICAgICAgICAgICAgIHdoaXRlU3BhY2U6ICdub3JtYWwnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZWx0UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUgPSB0aGlzLmluaXRpYWxTdHlsZTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG4iXX0=
@@ -0,0 +1,73 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * Generated from: lib/components/form-errors/form-errors.component.ts
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
+ */
6
+ import * as tslib_1 from "tslib";
7
+ import { OdeComponent } from 'ngx-ode-core';
8
+ import { Component, Input, Injector } from '@angular/core';
9
+ import { AbstractControl } from '@angular/forms';
10
+ import { LabelsService } from '../../services/labels.service';
11
+ var FormErrorsComponent = /** @class */ (function (_super) {
12
+ tslib_1.__extends(FormErrorsComponent, _super);
13
+ function FormErrorsComponent(labelsService, injector) {
14
+ var _this = _super.call(this, injector) || this;
15
+ _this.labelsService = labelsService;
16
+ return _this;
17
+ }
18
+ /**
19
+ * @return {?}
20
+ */
21
+ FormErrorsComponent.prototype.getErrorsArray = /**
22
+ * @return {?}
23
+ */
24
+ function () {
25
+ /** @type {?} */
26
+ var errorsArray = [];
27
+ for (var prop in this.ref.errors) {
28
+ errorsArray.push({ name: prop, value: this.ref.errors[prop] });
29
+ }
30
+ return errorsArray;
31
+ };
32
+ /**
33
+ * @param {?} label
34
+ * @return {?}
35
+ */
36
+ FormErrorsComponent.prototype.labels = /**
37
+ * @param {?} label
38
+ * @return {?}
39
+ */
40
+ function (label) {
41
+ return this.labelsService.getLabel(label);
42
+ };
43
+ FormErrorsComponent.decorators = [
44
+ { type: Component, args: [{
45
+ selector: 'ode-form-errors',
46
+ template: "<div *ngIf=\"ref && ref.errors && (ref.dirty || ref.touched)\" class=\"form-errors\">\n <div *ngFor=\"let error of getErrorsArray()\">\n <span>{{ 'form.error.' + error.name | translate: error.value }}</span>\n <span *ngIf=\"error.name == 'pattern'\">{{expectedPatternMsg}}</span>\n </div>\n</div>\n",
47
+ styles: [".form-errors{font-size:.8em;color:#dc143c;font-style:italic}"]
48
+ }] }
49
+ ];
50
+ /** @nocollapse */
51
+ FormErrorsComponent.ctorParameters = function () { return [
52
+ { type: LabelsService },
53
+ { type: Injector }
54
+ ]; };
55
+ FormErrorsComponent.propDecorators = {
56
+ ref: [{ type: Input, args: ['control',] }],
57
+ expectedPatternMsg: [{ type: Input, args: ['expectedPatternMsg',] }]
58
+ };
59
+ return FormErrorsComponent;
60
+ }(OdeComponent));
61
+ export { FormErrorsComponent };
62
+ if (false) {
63
+ /** @type {?} */
64
+ FormErrorsComponent.prototype.ref;
65
+ /** @type {?} */
66
+ FormErrorsComponent.prototype.expectedPatternMsg;
67
+ /**
68
+ * @type {?}
69
+ * @private
70
+ */
71
+ FormErrorsComponent.prototype.labelsService;
72
+ }
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LW9kZS11aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2Zvcm0tZXJyb3JzL2Zvcm0tZXJyb3JzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBRTVEO0lBS3lDLCtDQUFZO0lBQ2pELDZCQUFvQixhQUE0QixFQUFFLFFBQWtCO1FBQXBFLFlBQ0ksa0JBQU0sUUFBUSxDQUFDLFNBQ2xCO1FBRm1CLG1CQUFhLEdBQWIsYUFBYSxDQUFlOztJQUVoRCxDQUFDOzs7O0lBU0QsNENBQWM7OztJQUFkOztZQUNVLFdBQVcsR0FBRyxFQUFFO1FBQ3RCLEtBQUssSUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUU7WUFDaEMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQztTQUNqRTtRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7Ozs7O0lBRUQsb0NBQU07Ozs7SUFBTixVQUFPLEtBQUs7UUFDUixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7O2dCQTNCSixTQUFTLFNBQUM7b0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsOFRBQTJDOztpQkFFOUM7Ozs7Z0JBTk8sYUFBYTtnQkFITSxRQUFROzs7c0JBZTlCLEtBQUssU0FBQyxTQUFTO3FDQUdmLEtBQUssU0FBQyxvQkFBb0I7O0lBZS9CLDBCQUFDO0NBQUEsQUE1QkQsQ0FLeUMsWUFBWSxHQXVCcEQ7U0F2QlksbUJBQW1COzs7SUFLNUIsa0NBQ3FCOztJQUVyQixpREFDMkI7Ozs7O0lBUmYsNENBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2RlQ29tcG9uZW50IH0gZnJvbSAnbmd4LW9kZS1jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0xhYmVsc1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xhYmVscy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdvZGUtZm9ybS1lcnJvcnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWVycm9ycy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9ybS1lcnJvcnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRXJyb3JzQ29tcG9uZW50IGV4dGVuZHMgT2RlQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxhYmVsc1NlcnZpY2U6IExhYmVsc1NlcnZpY2UsIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgQElucHV0KCdjb250cm9sJylcbiAgICByZWY6IEFic3RyYWN0Q29udHJvbDtcblxuICAgIEBJbnB1dCgnZXhwZWN0ZWRQYXR0ZXJuTXNnJylcbiAgICBleHBlY3RlZFBhdHRlcm5Nc2c6IHN0cmluZztcblxuXG4gICAgZ2V0RXJyb3JzQXJyYXkoKSB7XG4gICAgICAgIGNvbnN0IGVycm9yc0FycmF5ID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcHJvcCBpbiB0aGlzLnJlZi5lcnJvcnMpIHtcbiAgICAgICAgICAgIGVycm9yc0FycmF5LnB1c2goeyBuYW1lOiBwcm9wLCB2YWx1ZTogdGhpcy5yZWYuZXJyb3JzW3Byb3BdfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVycm9yc0FycmF5O1xuICAgIH1cblxuICAgIGxhYmVscyhsYWJlbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYWJlbHNTZXJ2aWNlLmdldExhYmVsKGxhYmVsKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * Generated from: lib/components/form-field/form-field.component.ts
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
+ */
6
+ import * as tslib_1 from "tslib";
7
+ import { Component, Input, Injector } from '@angular/core';
8
+ import { OdeComponent } from 'ngx-ode-core';
9
+ var FormFieldComponent = /** @class */ (function (_super) {
10
+ tslib_1.__extends(FormFieldComponent, _super);
11
+ function FormFieldComponent(injector) {
12
+ return _super.call(this, injector) || this;
13
+ }
14
+ FormFieldComponent.decorators = [
15
+ { type: Component, args: [{
16
+ selector: 'ode-form-field',
17
+ template: "<div class=\"form-field\">\n <label>\n {{ label | translate }}\n <span *ngIf=\"required\" class=\"asterisque\">*</span>\n <ode-message-sticker *ngIf=\"help\"\n [type]=\"'info'\"\n [messages]=\"[help]\">\n </ode-message-sticker>\n </label>\n <ng-content></ng-content>\n</div>\n",
18
+ styles: ["div.form-field{display:flex;align-items:center}div.form-field>>>>*{flex:1;margin-left:5px}div.form-field>:first-child{flex:0 0 200px;margin-left:0}div.form-field message-sticker{font-size:1.3em}div.form-field .asterisque{color:#dc143c}"]
19
+ }] }
20
+ ];
21
+ /** @nocollapse */
22
+ FormFieldComponent.ctorParameters = function () { return [
23
+ { type: Injector }
24
+ ]; };
25
+ FormFieldComponent.propDecorators = {
26
+ label: [{ type: Input }],
27
+ help: [{ type: Input }],
28
+ required: [{ type: Input }]
29
+ };
30
+ return FormFieldComponent;
31
+ }(OdeComponent));
32
+ export { FormFieldComponent };
33
+ if (false) {
34
+ /** @type {?} */
35
+ FormFieldComponent.prototype.label;
36
+ /** @type {?} */
37
+ FormFieldComponent.prototype.help;
38
+ /** @type {?} */
39
+ FormFieldComponent.prototype.required;
40
+ }
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtb2RlLXVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU1QztJQUt3Qyw4Q0FBWTtJQUtsRCw0QkFBWSxRQUFrQjtlQUM1QixrQkFBTSxRQUFRLENBQUM7SUFDakIsQ0FBQzs7Z0JBWkYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLHVWQUEwQzs7aUJBRTNDOzs7O2dCQVAwQixRQUFROzs7d0JBU2hDLEtBQUs7dUJBQ0wsS0FBSzsyQkFDTCxLQUFLOztJQUtSLHlCQUFDO0NBQUEsQUFiRCxDQUt3QyxZQUFZLEdBUW5EO1NBUlksa0JBQWtCOzs7SUFDN0IsbUNBQXVCOztJQUN2QixrQ0FBc0I7O0lBQ3RCLHNDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPZGVDb21wb25lbnQgfSBmcm9tICduZ3gtb2RlLWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZGUtZm9ybS1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1maWVsZC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZENvbXBvbmVudCBleHRlbmRzIE9kZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGhlbHA6IHN0cmluZztcbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,345 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * Generated from: lib/components/item-tree/item-tree.component.ts
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
+ */
6
+ import * as tslib_1 from "tslib";
7
+ import { OdeComponent } from 'ngx-ode-core';
8
+ import { Component, EventEmitter, Input, Output, ViewChild, TemplateRef, Injector } from '@angular/core';
9
+ /**
10
+ * @template T
11
+ */
12
+ var ItemTreeComponent = /** @class */ (function (_super) {
13
+ tslib_1.__extends(ItemTreeComponent, _super);
14
+ function ItemTreeComponent(injector) {
15
+ var _this = _super.call(this, injector) || this;
16
+ /**
17
+ * * Inputs ***
18
+ */
19
+ // Items
20
+ _this.items = [];
21
+ // Property containing the list of child objects.
22
+ _this.childrenProperty = 'children';
23
+ // Property to display in the list
24
+ _this.displayProperty = 'label';
25
+ // Filter pipe argument
26
+ _this.filter = '';
27
+ // OrderBy pipe argument
28
+ _this.order = [];
29
+ // Reverse the order pipe
30
+ _this.reverse = false;
31
+ _this._flattenProps = [];
32
+ // Disable the opener icon
33
+ _this.disableOpener = false;
34
+ // Use checkboxes instead of selecting items
35
+ _this.checkboxMode = false;
36
+ /**
37
+ * * Outputs ***
38
+ */
39
+ _this.onSelect = new EventEmitter();
40
+ _this.onCheck = new EventEmitter();
41
+ _this._depth = 0;
42
+ _this.unfolded = [];
43
+ return _this;
44
+ }
45
+ Object.defineProperty(ItemTreeComponent.prototype, "flatten", {
46
+ get: /**
47
+ * @return {?}
48
+ */
49
+ function () {
50
+ return this._flattenProps;
51
+ },
52
+ // Flatten the tree on the specified properties
53
+ set:
54
+ // Flatten the tree on the specified properties
55
+ /**
56
+ * @param {?} flattenProps
57
+ * @return {?}
58
+ */
59
+ function (flattenProps) {
60
+ if (!this.isFlattened() && flattenProps.length > 0) {
61
+ this._selectedItem = this._lastSelectedItem;
62
+ }
63
+ else if (this.isFlattened && flattenProps.length < 1) {
64
+ this.flagIfParent();
65
+ }
66
+ this._flattenProps = flattenProps;
67
+ },
68
+ enumerable: true,
69
+ configurable: true
70
+ });
71
+ /**
72
+ * @return {?}
73
+ */
74
+ ItemTreeComponent.prototype.ngOnInit = /**
75
+ * @return {?}
76
+ */
77
+ function () {
78
+ _super.prototype.ngOnInit.call(this);
79
+ this.flagIfParent();
80
+ };
81
+ /**
82
+ * @param {?} item
83
+ * @return {?}
84
+ */
85
+ ItemTreeComponent.prototype.selectItem = /**
86
+ * @param {?} item
87
+ * @return {?}
88
+ */
89
+ function (item) {
90
+ this._selectedItem = item;
91
+ if (this.childItemTree) {
92
+ delete this.childItemTree._selectedItem;
93
+ }
94
+ /** @type {?} */
95
+ var idx = this.unfolded.indexOf(item);
96
+ if (!this.disableOpener && idx < 0) {
97
+ this.unfolded.push(item);
98
+ }
99
+ else {
100
+ this.unfolded.splice(idx, 1);
101
+ }
102
+ this.bubbleSelect(item);
103
+ };
104
+ /**
105
+ * @param {?} item
106
+ * @return {?}
107
+ */
108
+ ItemTreeComponent.prototype.checkItem = /**
109
+ * @param {?} item
110
+ * @return {?}
111
+ */
112
+ function (item) {
113
+ this.onCheck.emit(item);
114
+ };
115
+ /**
116
+ * @param {?} item
117
+ * @return {?}
118
+ */
119
+ ItemTreeComponent.prototype.bubbleSelect = /**
120
+ * @param {?} item
121
+ * @return {?}
122
+ */
123
+ function (item) {
124
+ this._lastSelectedItem = item;
125
+ this.onSelect.emit(item);
126
+ };
127
+ /**
128
+ * @param {?} item
129
+ * @return {?}
130
+ */
131
+ ItemTreeComponent.prototype.isSelected = /**
132
+ * @param {?} item
133
+ * @return {?}
134
+ */
135
+ function (item) {
136
+ return (this.disableOpener ? this._selectedItem : this._lastSelectedItem) === item;
137
+ };
138
+ /**
139
+ * @param {?} event
140
+ * @param {?} item
141
+ * @return {?}
142
+ */
143
+ ItemTreeComponent.prototype.toggleFold = /**
144
+ * @param {?} event
145
+ * @param {?} item
146
+ * @return {?}
147
+ */
148
+ function (event, item) {
149
+ event.stopPropagation();
150
+ /** @type {?} */
151
+ var idx = this.unfolded.indexOf(item);
152
+ if (idx < 0) {
153
+ this.unfolded.push(item);
154
+ }
155
+ else {
156
+ this.unfolded.splice(idx, 1);
157
+ }
158
+ };
159
+ /**
160
+ * @param {?} item
161
+ * @return {?}
162
+ */
163
+ ItemTreeComponent.prototype.isFolded = /**
164
+ * @param {?} item
165
+ * @return {?}
166
+ */
167
+ function (item) {
168
+ return this.disableOpener ? !this.isSelected(item) : this.unfolded.indexOf(item) < 0;
169
+ };
170
+ /**
171
+ * @param {?} item
172
+ * @return {?}
173
+ */
174
+ ItemTreeComponent.prototype.display = /**
175
+ * @param {?} item
176
+ * @return {?}
177
+ */
178
+ function (item) {
179
+ return this.displayProperty && item[this.displayProperty];
180
+ };
181
+ /**
182
+ * @param {?} item
183
+ * @return {?}
184
+ */
185
+ ItemTreeComponent.prototype.getChildren = /**
186
+ * @param {?} item
187
+ * @return {?}
188
+ */
189
+ function (item) {
190
+ return item[this.childrenProperty] || [];
191
+ };
192
+ /**
193
+ * @param {?} item
194
+ * @return {?}
195
+ */
196
+ ItemTreeComponent.prototype.hasChildren = /**
197
+ * @param {?} item
198
+ * @return {?}
199
+ */
200
+ function (item) {
201
+ return this.getChildren(item).length > 0;
202
+ };
203
+ /**
204
+ * @return {?}
205
+ */
206
+ ItemTreeComponent.prototype.isFlattened = /**
207
+ * @return {?}
208
+ */
209
+ function () {
210
+ return this._flattenProps.length;
211
+ };
212
+ /**
213
+ * @private
214
+ * @return {?}
215
+ */
216
+ ItemTreeComponent.prototype.flagIfParent = /**
217
+ * @private
218
+ * @return {?}
219
+ */
220
+ function () {
221
+ var _this = this;
222
+ if (!this._lastSelectedItem) {
223
+ return;
224
+ }
225
+ /** @type {?} */
226
+ var findSubItem = (/**
227
+ * @param {?} item
228
+ * @param {?} target
229
+ * @return {?}
230
+ */
231
+ function (item, target) {
232
+ if (item === target) {
233
+ return true;
234
+ }
235
+ if (_this.hasChildren(item)) {
236
+ return _this.getChildren(item).find((/**
237
+ * @param {?} subItem
238
+ * @return {?}
239
+ */
240
+ function (subItem) {
241
+ return findSubItem(subItem, target);
242
+ }));
243
+ }
244
+ return false;
245
+ });
246
+ for (var i in this.items) {
247
+ /** @type {?} */
248
+ var item = this.items[i];
249
+ if (item === this._lastSelectedItem ||
250
+ findSubItem(item, this._lastSelectedItem)) {
251
+ this._selectedItem = item;
252
+ this.unfolded = [item];
253
+ break;
254
+ }
255
+ }
256
+ this.changeDetector.markForCheck();
257
+ };
258
+ ItemTreeComponent.decorators = [
259
+ { type: Component, args: [{
260
+ selector: 'ode-item-tree',
261
+ template: "<ul [ngClass]=\"{ flattened: isFlattened() }\">\n <li *ngFor=\"let item of (items | flattenObjArray: flatten | filter: filter | orderBy: order:reverse)\"\n [ngClass]=\"{ selected: isSelected(item), unfolded: !isFolded(item), parent: hasChildren(item), root: _depth === 0 }\">\n <a href=\"javascript:void(0)\" (click)=\"selectItem(item)\" *ngIf=\"!checkboxMode\">\n <i class=\"opener\" (click)=\"toggleFold($event, item)\"\n *ngIf=\"!isFlattened() && hasChildren(item) && !disableOpener\"></i>\n <span *ngIf=\"displayProperty\">{{ display(item) }}</span>\n <span *ngIf=\"displayTemplate\">\n <ng-template [ngTemplateOutlet]=\"displayTemplate\" [ngTemplateOutletContext]=\"{$implicit: item}\"></ng-template>\n </span>\n </a>\n <div class=\"checkbox__item\" *ngIf=\"checkboxMode\">\n <input id=\"all\" type=\"checkbox\" [(ngModel)]=\"item.check\" ngDefaultControl>\n <label *ngIf=\"displayProperty\" for=\"all\" (click)=\"checkItem(item)\">{{display(item)}}</label>\n <span *ngIf=\"displayTemplate\">\n <ng-template [ngTemplateOutlet]=\"displayTemplate\" [ngTemplateOutletContext]=\"{$implicit: item}\"></ng-template>\n </span>\n </div>\n <ode-item-tree\n [items]=\"getChildren(item)\"\n [children]=\"childrenProperty\"\n [display]=\"displayProperty\"\n [displayTemplate]=\"displayTemplate\"\n [filter]=\"filter\"\n [order]=\"order\"\n [reverse]=\"reverse\"\n [lastSelected]=\"_lastSelectedItem\"\n [depth]=\"_depth + 1\"\n [disableOpener]=\"disableOpener\"\n [checkboxMode]=\"checkboxMode\"\n (onSelect)=\"bubbleSelect($event)\"\n (onCheck)=\"checkItem($event)\"\n *ngIf=\"(checkboxMode && hasChildren(item)) || (!isFlattened() && hasChildren(item) && !isFolded(item))\">\n </ode-item-tree>\n </li>\n</ul>\n"
262
+ }] }
263
+ ];
264
+ /** @nocollapse */
265
+ ItemTreeComponent.ctorParameters = function () { return [
266
+ { type: Injector }
267
+ ]; };
268
+ ItemTreeComponent.propDecorators = {
269
+ items: [{ type: Input }],
270
+ childrenProperty: [{ type: Input, args: ['children',] }],
271
+ displayProperty: [{ type: Input, args: ['display',] }],
272
+ displayTemplate: [{ type: Input }],
273
+ filter: [{ type: Input }],
274
+ order: [{ type: Input }],
275
+ reverse: [{ type: Input }],
276
+ flatten: [{ type: Input }],
277
+ disableOpener: [{ type: Input }],
278
+ checkboxMode: [{ type: Input }],
279
+ onSelect: [{ type: Output }],
280
+ onCheck: [{ type: Output }],
281
+ childItemTree: [{ type: ViewChild, args: [ItemTreeComponent, { static: false },] }],
282
+ _lastSelectedItem: [{ type: Input, args: ['lastSelected',] }],
283
+ _depth: [{ type: Input, args: ['depth',] }]
284
+ };
285
+ return ItemTreeComponent;
286
+ }(OdeComponent));
287
+ export { ItemTreeComponent };
288
+ if (false) {
289
+ /**
290
+ * * Inputs ***
291
+ * @type {?}
292
+ */
293
+ ItemTreeComponent.prototype.items;
294
+ /** @type {?} */
295
+ ItemTreeComponent.prototype.childrenProperty;
296
+ /** @type {?} */
297
+ ItemTreeComponent.prototype.displayProperty;
298
+ /** @type {?} */
299
+ ItemTreeComponent.prototype.displayTemplate;
300
+ /** @type {?} */
301
+ ItemTreeComponent.prototype.filter;
302
+ /** @type {?} */
303
+ ItemTreeComponent.prototype.order;
304
+ /** @type {?} */
305
+ ItemTreeComponent.prototype.reverse;
306
+ /**
307
+ * @type {?}
308
+ * @private
309
+ */
310
+ ItemTreeComponent.prototype._flattenProps;
311
+ /** @type {?} */
312
+ ItemTreeComponent.prototype.disableOpener;
313
+ /** @type {?} */
314
+ ItemTreeComponent.prototype.checkboxMode;
315
+ /**
316
+ * * Outputs ***
317
+ * @type {?}
318
+ */
319
+ ItemTreeComponent.prototype.onSelect;
320
+ /** @type {?} */
321
+ ItemTreeComponent.prototype.onCheck;
322
+ /**
323
+ * * View ***
324
+ * @type {?}
325
+ */
326
+ ItemTreeComponent.prototype.childItemTree;
327
+ /**
328
+ * * Internal Logic ***
329
+ * @type {?}
330
+ */
331
+ ItemTreeComponent.prototype._lastSelectedItem;
332
+ /**
333
+ * @type {?}
334
+ * @private
335
+ */
336
+ ItemTreeComponent.prototype._selectedItem;
337
+ /** @type {?} */
338
+ ItemTreeComponent.prototype._depth;
339
+ /**
340
+ * @type {?}
341
+ * @private
342
+ */
343
+ ItemTreeComponent.prototype.unfolded;
344
+ }
345
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS10cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1vZGUtdWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9pdGVtLXRyZWUvaXRlbS10cmVlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFnQixXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBRS9IO0lBSTBDLDZDQUFZO0lBRWxELDJCQUFZLFFBQWtCO1FBQTlCLFlBQ0ksa0JBQU0sUUFBUSxDQUFDLFNBQ2xCOzs7OztRQUtRLFdBQUssR0FBZSxFQUFFLENBQUM7O1FBR2Isc0JBQWdCLEdBQUcsVUFBVSxDQUFDOztRQUUvQixxQkFBZSxHQUFHLE9BQU8sQ0FBQzs7UUFHbkMsWUFBTSxHQUFpQyxFQUFFLENBQUM7O1FBRTFDLFdBQUssR0FBcUMsRUFBRSxDQUFDOztRQUU3QyxhQUFPLEdBQVEsS0FBSyxDQUFDO1FBY3RCLG1CQUFhLEdBQWtCLEVBQUUsQ0FBQzs7UUFHakMsbUJBQWEsR0FBRyxLQUFLLENBQUM7O1FBR3RCLGtCQUFZLEdBQUcsS0FBSyxDQUFDOzs7O1FBSXBCLGNBQVEsR0FBb0IsSUFBSSxZQUFZLEVBQUssQ0FBQztRQUVsRCxhQUFPLEdBQW9CLElBQUksWUFBWSxFQUFLLENBQUM7UUFVM0MsWUFBTSxHQUFHLENBQUMsQ0FBQztRQUNuQixjQUFRLEdBQVEsRUFBRSxDQUFDOztJQXREM0IsQ0FBQztJQW1CRCxzQkFDSSxzQ0FBTzs7OztRQVFYO1lBQ0ksT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzlCLENBQUM7UUFaRCwrQ0FBK0M7Ozs7Ozs7UUFDL0MsVUFDWSxZQUEyQjtZQUNuQyxJQUFJLENBQUMsSUFBSSxD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Q0FBQztnQkFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2QixNQUFNO2FBQ1Q7U0FDSjtRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkMsQ0FBQzs7Z0JBM0pKLFNBQVMsU0FBQztvQkFDUCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsazFEQUF5QztpQkFDNUM7Ozs7Z0JBTDhGLFFBQVE7Ozt3QkFlbEcsS0FBSzttQ0FHTCxLQUFLLFNBQUMsVUFBVTtrQ0FFaEIsS0FBSyxTQUFDLFNBQVM7a0NBQ2YsS0FBSzt5QkFFTCxLQUFLO3dCQUVMLEtBQUs7MEJBRUwsS0FBSzswQkFFTCxLQUFLO2dDQWVMLEtBQUs7K0JBR0wsS0FBSzsyQkFJTCxNQUFNOzBCQUVOLE1BQU07Z0NBSU4sU0FBUyxTQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtvQ0FJOUMsS0FBSyxTQUFDLGNBQWM7eUJBRXBCLEtBQUssU0FBQyxPQUFPOztJQWdHbEIsd0JBQUM7Q0FBQSxBQTdKRCxDQUkwQyxZQUFZLEdBeUpyRDtTQXpKWSxpQkFBaUI7Ozs7OztJQVMxQixrQ0FBZ0M7O0lBR2hDLDZDQUFpRDs7SUFFakQsNENBQTRDOztJQUM1Qyw0Q0FBMkM7O0lBRTNDLG1DQUFtRDs7SUFFbkQsa0NBQXNEOztJQUV0RCxvQ0FBOEI7Ozs7O0lBYzlCLDBDQUEwQzs7SUFHMUMsMENBQStCOztJQUcvQix5Q0FBOEI7Ozs7O0lBSTlCLHFDQUE0RDs7SUFFNUQsb0NBQTJEOzs7OztJQUkzRCwwQ0FBcUY7Ozs7O0lBSXJGLDhDQUE0Qzs7Ozs7SUFDNUMsMENBQXlCOztJQUN6QixtQ0FBMkI7Ozs7O0lBQzNCLHFDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9kZUNvbXBvbmVudCB9IGZyb20gJ25neC1vZGUtY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIENvbnRlbnRDaGlsZCwgVGVtcGxhdGVSZWYsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnb2RlLWl0ZW0tdHJlZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2l0ZW0tdHJlZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgSXRlbVRyZWVDb21wb25lbnQ8VD4gZXh0ZW5kcyBPZGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICAvKioqKiBJbnB1dHMgKioqKi9cblxuICAgIC8vIEl0ZW1zXG4gICAgQElucHV0KCkgaXRlbXM6IEFycmF5PGFueT4gPSBbXTtcblxuICAgIC8vIFByb3BlcnR5IGNvbnRhaW5pbmcgdGhlIGxpc3Qgb2YgY2hpbGQgb2JqZWN0cy5cbiAgICBASW5wdXQoJ2NoaWxkcmVuJykgY2hpbGRyZW5Qcm9wZXJ0eSA9ICdjaGlsZHJlbic7XG4gICAgLy8gUHJvcGVydHkgdG8gZGlzcGxheSBpbiB0aGUgbGlzdFxuICAgIEBJbnB1dCgnZGlzcGxheScpIGRpc3BsYXlQcm9wZXJ0eSA9ICdsYWJlbCc7XG4gICAgQElucHV0KCkgZGlzcGxheVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8vIEZpbHRlciBwaXBlIGFyZ3VtZW50XG4gICAgQElucHV0KCkgZmlsdGVyOiAoT2JqZWN0IHwgc3RyaW5nIHwgRnVuY3Rpb24pID0gJyc7XG4gICAgLy8gT3JkZXJCeSBwaXBlIGFyZ3VtZW50XG4gICAgQElucHV0KCkgb3JkZXI6IChBcnJheTxhbnk+IHwgc3RyaW5nIHwgRnVuY3Rpb24pID0gW107XG4gICAgLy8gUmV2ZXJzZSB0aGUgb3JkZXIgcGlwZVxuICAgIEBJbnB1dCgpIHJldmVyc2U6IGFueSA9IGZhbHNlO1xuICAgIC8vIEZsYXR0ZW4gdGhlIHRyZWUgb24gdGhlIHNwZWNpZmllZCBwcm9wZXJ0aWVzXG4gICAgQElucHV0KClcbiAgICBzZXQgZmxhdHRlbihmbGF0dGVuUHJvcHM6IEFycmF5PHN0cmluZz4pIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRmxhdHRlbmVkKCkgJiYgZmxhdHRlblByb3BzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbSA9IHRoaXMuX2xhc3RTZWxlY3RlZEl0ZW07XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0ZsYXR0ZW5lZCAmJiBmbGF0dGVuUHJvcHMubGVuZ3RoIDwgMSkge1xuICAgICAgICAgICAgdGhpcy5mbGFnSWZQYXJlbnQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9mbGF0dGVuUHJvcHMgPSBmbGF0dGVuUHJvcHM7XG4gICAgfVxuICAgIGdldCBmbGF0dGVuKCk6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmxhdHRlblByb3BzO1xuICAgIH1cbiAgICBwcml2YXRlIF9mbGF0dGVuUHJvcHM6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICAgIC8vIERpc2FibGUgdGhlIG9wZW5lciBpY29uXG4gICAgQElucHV0KCkgZGlzYWJsZU9wZW5lciA9IGZhbHNlO1xuXG4gICAgLy8gVXNlIGNoZWNrYm94ZXMgaW5zdGVhZCBvZiBzZWxlY3RpbmcgaXRlbXNcbiAgICBASW5wdXQoKSBjaGVja2JveE1vZGUgPSBmYWxzZTtcblxuICAgIC8qKioqIE91dHB1dHMgKioqKi9cblxuICAgIEBPdXRwdXQoKSBvblNlbGVjdDogRXZlbnRFbWl0dGVyPFQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuXG4gICAgQE91dHB1dCgpIG9uQ2hlY2s6IEV2ZW50RW1pdHRlcjxUPiA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICAgIC8qKioqIFZpZXcgKioqKi9cblxuICAgIEBWaWV3Q2hpbGQoSXRlbVRyZWVDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBjaGlsZEl0ZW1UcmVlOiBJdGVtVHJlZUNvbXBvbmVudDxUPjtcblxuICAgIC8qKioqIEludGVybmFsIExvZ2ljICoqKiovXG5cbiAgICBASW5wdXQoJ2xhc3RTZWxlY3RlZCcpIF9sYXN0U2VsZWN0ZWRJdGVtOiBUO1xuICAgIHByaXZhdGUgX3NlbGVjdGVkSXRlbTogVDtcbiAgICBASW5wdXQoJ2RlcHRoJykgX2RlcHRoID0gMDtcbiAgICBwcml2YXRlIHVuZm9sZGVkOiBUW10gPSBbXTtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmZsYWdJZlBhcmVudCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3RJdGVtKGl0ZW06IFQpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtID0gaXRlbTtcbiAgICAgICAgaWYgKHRoaXMuY2hpbGRJdGVtVHJlZSkge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuY2hpbGRJdGVtVHJlZS5fc2VsZWN0ZWRJdGVtO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMudW5mb2xkZWQuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVPcGVuZXIgJiYgaWR4IDwgMCkge1xuICAgICAgICAgICAgdGhpcy51bmZvbGRlZC5wdXNoKGl0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudW5mb2xkZWQuc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5idWJibGVTZWxlY3QoaXRlbSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNoZWNrSXRlbShpdGVtOiBUKSB7XG4gICAgICAgIHRoaXMub25DaGVjay5lbWl0KGl0ZW0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBidWJibGVTZWxlY3QoaXRlbTogVCkge1xuICAgICAgICB0aGlzLl9sYXN0U2VsZWN0ZWRJdGVtID0gaXRlbTtcbiAgICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KGl0ZW0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1NlbGVjdGVkKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmRpc2FibGVPcGVuZXIgPyB0aGlzLl9zZWxlY3RlZEl0ZW0gOiB0aGlzLl9sYXN0U2VsZWN0ZWRJdGVtKSA9PT0gaXRlbTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlRm9sZChldmVudDogRXZlbnQsIGl0ZW06IFQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMudW5mb2xkZWQuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgaWYgKGlkeCA8IDApIHtcbiAgICAgICAgICAgIHRoaXMudW5mb2xkZWQucHVzaChpdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudW5mb2xkZWQuc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaXNGb2xkZWQoaXRlbTogVCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlT3BlbmVyID8gIXRoaXMuaXNTZWxlY3RlZChpdGVtKSA6IHRoaXMudW5mb2xkZWQuaW5kZXhPZihpdGVtKSA8IDA7XG4gICAgfVxuXG4gICAgcHVibGljIGRpc3BsYXkoaXRlbTogVCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5UHJvcGVydHkgJiYgaXRlbVt0aGlzLmRpc3BsYXlQcm9wZXJ0eV07XG4gICAgfVxuXG4gICAgcHVibGljIGdldENoaWxkcmVuKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1bdGhpcy5jaGlsZHJlblByb3BlcnR5XSB8fCBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzQ2hpbGRyZW4oaXRlbSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDaGlsZHJlbihpdGVtKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIGlzRmxhdHRlbmVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmxhdHRlblByb3BzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZsYWdJZlBhcmVudCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9sYXN0U2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaW5kU3ViSXRlbSA9IChpdGVtLCB0YXJnZXQpID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtID09PSB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuKGl0ZW0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2hpbGRyZW4oaXRlbSkuZmluZChzdWJJdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbmRTdWJJdGVtKHN1Ykl0ZW0sIHRhcmdldCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG5cbiAgICAgICAgZm9yIChjb25zdCBpIGluIHRoaXMuaXRlbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zW2ldO1xuXG4gICAgICAgICAgICBpZiAoaXRlbSA9PT0gdGhpcy5fbGFzdFNlbGVjdGVkSXRlbSB8fFxuICAgICAgICAgICAgICAgICAgICBmaW5kU3ViSXRlbShpdGVtLCB0aGlzLl9sYXN0U2VsZWN0ZWRJdGVtKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbSA9IGl0ZW07XG4gICAgICAgICAgICAgICAgdGhpcy51bmZvbGRlZCA9IFtpdGVtXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG59XG4iXX0=