techlify-inventory-common 18.50.0 → 22.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. package/fesm2022/techlify-inventory-common-category.module-Dtn1604q.mjs +842 -0
  2. package/fesm2022/techlify-inventory-common-category.module-Dtn1604q.mjs.map +1 -0
  3. package/fesm2022/techlify-inventory-common-location.service-C99J8Lje.mjs +50 -0
  4. package/fesm2022/techlify-inventory-common-location.service-C99J8Lje.mjs.map +1 -0
  5. package/fesm2022/techlify-inventory-common-material.module-ClupVm7-.mjs +190 -0
  6. package/fesm2022/techlify-inventory-common-material.module-ClupVm7-.mjs.map +1 -0
  7. package/fesm2022/techlify-inventory-common-measure.service-DvJUGa0i.mjs +38 -0
  8. package/fesm2022/techlify-inventory-common-measure.service-DvJUGa0i.mjs.map +1 -0
  9. package/fesm2022/techlify-inventory-common-product-category-badges.component-VnfnNhtV.mjs +133 -0
  10. package/fesm2022/techlify-inventory-common-product-category-badges.component-VnfnNhtV.mjs.map +1 -0
  11. package/fesm2022/techlify-inventory-common-product.module-MZoVK3bN.mjs +4278 -0
  12. package/fesm2022/techlify-inventory-common-product.module-MZoVK3bN.mjs.map +1 -0
  13. package/fesm2022/techlify-inventory-common-purchase-order-view.component-CjED8n4_.mjs +852 -0
  14. package/fesm2022/techlify-inventory-common-purchase-order-view.component-CjED8n4_.mjs.map +1 -0
  15. package/fesm2022/techlify-inventory-common-purchase-order.service-ztJ5RRH5.mjs +40 -0
  16. package/fesm2022/techlify-inventory-common-purchase-order.service-ztJ5RRH5.mjs.map +1 -0
  17. package/fesm2022/techlify-inventory-common-recipient.module-gxR77BIj.mjs +647 -0
  18. package/fesm2022/techlify-inventory-common-recipient.module-gxR77BIj.mjs.map +1 -0
  19. package/fesm2022/techlify-inventory-common-shared.module-DP-FVqea.mjs +102 -0
  20. package/fesm2022/techlify-inventory-common-shared.module-DP-FVqea.mjs.map +1 -0
  21. package/fesm2022/techlify-inventory-common-stock-allocation-list.component-Du-VCtbs.mjs +382 -0
  22. package/fesm2022/techlify-inventory-common-stock-allocation-list.component-Du-VCtbs.mjs.map +1 -0
  23. package/fesm2022/techlify-inventory-common-stock-issue-form.component-DfgbqIKn.mjs +486 -0
  24. package/fesm2022/techlify-inventory-common-stock-issue-form.component-DfgbqIKn.mjs.map +1 -0
  25. package/fesm2022/techlify-inventory-common-stock-issue-page.module-DX9n3X1T.mjs +2509 -0
  26. package/fesm2022/techlify-inventory-common-stock-issue-page.module-DX9n3X1T.mjs.map +1 -0
  27. package/fesm2022/techlify-inventory-common-stock-issue-product-view.component-D8aIc5Oh.mjs +208 -0
  28. package/fesm2022/techlify-inventory-common-stock-issue-product-view.component-D8aIc5Oh.mjs.map +1 -0
  29. package/fesm2022/techlify-inventory-common-stock-issue-product.service-BRbfc5KP.mjs +38 -0
  30. package/fesm2022/techlify-inventory-common-stock-issue-product.service-BRbfc5KP.mjs.map +1 -0
  31. package/fesm2022/techlify-inventory-common-stock-issue-view.component-Cp_0YkKh.mjs +239 -0
  32. package/fesm2022/techlify-inventory-common-stock-issue-view.component-Cp_0YkKh.mjs.map +1 -0
  33. package/fesm2022/techlify-inventory-common-stock-issue.service-CLHasWVp.mjs +38 -0
  34. package/fesm2022/techlify-inventory-common-stock-issue.service-CLHasWVp.mjs.map +1 -0
  35. package/fesm2022/techlify-inventory-common-stock-receipts.module-BPxUGNbD.mjs +4195 -0
  36. package/fesm2022/techlify-inventory-common-stock-receipts.module-BPxUGNbD.mjs.map +1 -0
  37. package/fesm2022/techlify-inventory-common-techlify-filter.module-BdRNWNHi.mjs +464 -0
  38. package/fesm2022/techlify-inventory-common-techlify-filter.module-BdRNWNHi.mjs.map +1 -0
  39. package/fesm2022/techlify-inventory-common-techlify-form-service-D9K3W2jt.mjs +13 -0
  40. package/fesm2022/techlify-inventory-common-techlify-form-service-D9K3W2jt.mjs.map +1 -0
  41. package/fesm2022/techlify-inventory-common.mjs +10803 -2
  42. package/fesm2022/techlify-inventory-common.mjs.map +1 -1
  43. package/package.json +9 -11
  44. package/types/techlify-inventory-common.d.ts +1792 -0
  45. package/esm2022/lib/inventory-common/category/category-form/category-form.component.mjs +0 -75
  46. package/esm2022/lib/inventory-common/category/category-form-button/category-form-button.component.mjs +0 -32
  47. package/esm2022/lib/inventory-common/category/category-list-page/category-list-page.component.mjs +0 -64
  48. package/esm2022/lib/inventory-common/category/category-routing.module.mjs +0 -29
  49. package/esm2022/lib/inventory-common/category/category-view/category-view.component.mjs +0 -46
  50. package/esm2022/lib/inventory-common/category/category.module.mjs +0 -62
  51. package/esm2022/lib/inventory-common/category/category.service.mjs +0 -18
  52. package/esm2022/lib/inventory-common/incident/incident-form/incident-form.component.mjs +0 -113
  53. package/esm2022/lib/inventory-common/incident/incident-form-button/incident-form-button.component.mjs +0 -45
  54. package/esm2022/lib/inventory-common/incident/incident-list/incident-list.component.mjs +0 -140
  55. package/esm2022/lib/inventory-common/incident/incident-routing.module.mjs +0 -24
  56. package/esm2022/lib/inventory-common/incident/incident.module.mjs +0 -22
  57. package/esm2022/lib/inventory-common/incident/incident.service.mjs +0 -18
  58. package/esm2022/lib/inventory-common/inventory-common-routing.module.mjs +0 -81
  59. package/esm2022/lib/inventory-common/inventory-common.module.mjs +0 -43
  60. package/esm2022/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.mjs +0 -44
  61. package/esm2022/lib/inventory-common/inventory-value-report.service.mjs +0 -21
  62. package/esm2022/lib/inventory-common/location/location-form/location-form.component.mjs +0 -63
  63. package/esm2022/lib/inventory-common/location/location-form-button/location-form-button.component.mjs +0 -47
  64. package/esm2022/lib/inventory-common/location/location-information/location-information.component.mjs +0 -36
  65. package/esm2022/lib/inventory-common/location/location-list/location-list.component.mjs +0 -81
  66. package/esm2022/lib/inventory-common/location/location-product-statistics/location-product-statistics.component.mjs +0 -80
  67. package/esm2022/lib/inventory-common/location/location-routing.module.mjs +0 -38
  68. package/esm2022/lib/inventory-common/location/location-status-changer/location-status-changer.component.mjs +0 -64
  69. package/esm2022/lib/inventory-common/location/location-view/location-view.component.mjs +0 -52
  70. package/esm2022/lib/inventory-common/location/location.module.mjs +0 -22
  71. package/esm2022/lib/inventory-common/location/location.service.mjs +0 -33
  72. package/esm2022/lib/inventory-common/location/shelf/shelf-form/shelf-form.component.mjs +0 -86
  73. package/esm2022/lib/inventory-common/location/shelf/shelf-form-button/shelf-form-button.component.mjs +0 -39
  74. package/esm2022/lib/inventory-common/location/shelf/shelf-list/shelf-list.component.mjs +0 -103
  75. package/esm2022/lib/inventory-common/location/shelf/shelf-routing.module.mjs +0 -24
  76. package/esm2022/lib/inventory-common/location/shelf/shelf.module.mjs +0 -22
  77. package/esm2022/lib/inventory-common/location/shelf/shelf.service.mjs +0 -20
  78. package/esm2022/lib/inventory-common/low-stock-report.service.mjs +0 -23
  79. package/esm2022/lib/inventory-common/material.module.mjs +0 -172
  80. package/esm2022/lib/inventory-common/measure/measure-form/measure-form.component.mjs +0 -63
  81. package/esm2022/lib/inventory-common/measure/measure-list/measure-list.component.mjs +0 -75
  82. package/esm2022/lib/inventory-common/measure/measure-routing.module.mjs +0 -24
  83. package/esm2022/lib/inventory-common/measure/measure.module.mjs +0 -43
  84. package/esm2022/lib/inventory-common/measure/measure.service.mjs +0 -18
  85. package/esm2022/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.component.mjs +0 -47
  86. package/esm2022/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.module.mjs +0 -22
  87. package/esm2022/lib/inventory-common/product/product-basic-info/product-basic-info.component.mjs +0 -58
  88. package/esm2022/lib/inventory-common/product/product-batch-update-form/product-batch-update-form.component.mjs +0 -54
  89. package/esm2022/lib/inventory-common/product/product-delete-button/product-delete-button.component.mjs +0 -54
  90. package/esm2022/lib/inventory-common/product/product-form/product-form.component.mjs +0 -258
  91. package/esm2022/lib/inventory-common/product/product-form-button/product-form-button.component.mjs +0 -15
  92. package/esm2022/lib/inventory-common/product/product-form.service.mjs +0 -17
  93. package/esm2022/lib/inventory-common/product/product-import-page/product-import-page.component.mjs +0 -66
  94. package/esm2022/lib/inventory-common/product/product-list/product-list.component.mjs +0 -177
  95. package/esm2022/lib/inventory-common/product/product-location/product-location-list/product-location-list.component.mjs +0 -61
  96. package/esm2022/lib/inventory-common/product/product-measure-form/product-measure-form.component.mjs +0 -101
  97. package/esm2022/lib/inventory-common/product/product-measures-list/product-measures-list.component.mjs +0 -145
  98. package/esm2022/lib/inventory-common/product/product-nav-bar/product-nav-bar.component.mjs +0 -12
  99. package/esm2022/lib/inventory-common/product/product-quick-search/product-quick-search.component.mjs +0 -69
  100. package/esm2022/lib/inventory-common/product/product-routing.module.mjs +0 -68
  101. package/esm2022/lib/inventory-common/product/product-search/product-search.component.mjs +0 -151
  102. package/esm2022/lib/inventory-common/product/product-search/product-search.module.mjs +0 -39
  103. package/esm2022/lib/inventory-common/product/product-statistics.service.mjs +0 -23
  104. package/esm2022/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.mjs +0 -57
  105. package/esm2022/lib/inventory-common/product/product-summary-chart/product-summary-chart.module.mjs +0 -18
  106. package/esm2022/lib/inventory-common/product/product-summary.service.mjs +0 -20
  107. package/esm2022/lib/inventory-common/product/product-view-page/product-view-page.component.mjs +0 -98
  108. package/esm2022/lib/inventory-common/product/product.module.mjs +0 -145
  109. package/esm2022/lib/inventory-common/product/product.service.mjs +0 -20
  110. package/esm2022/lib/inventory-common/product/widgets/product-category-badges/product-category-badges.component.mjs +0 -15
  111. package/esm2022/lib/inventory-common/product-batch.service.mjs +0 -20
  112. package/esm2022/lib/inventory-common/rating/rating-form/rating-form.component.mjs +0 -112
  113. package/esm2022/lib/inventory-common/rating/rating-form-button/rating-form-button.component.mjs +0 -45
  114. package/esm2022/lib/inventory-common/rating/rating-list/rating-list.component.mjs +0 -135
  115. package/esm2022/lib/inventory-common/rating/rating-routing.module.mjs +0 -23
  116. package/esm2022/lib/inventory-common/rating/rating.module.mjs +0 -22
  117. package/esm2022/lib/inventory-common/rating/rating.service.mjs +0 -18
  118. package/esm2022/lib/inventory-common/recipient/recipient-form/recipient-form.component.mjs +0 -59
  119. package/esm2022/lib/inventory-common/recipient/recipient-list/recipient-list.component.mjs +0 -49
  120. package/esm2022/lib/inventory-common/recipient/recipient-routing.module.mjs +0 -24
  121. package/esm2022/lib/inventory-common/recipient/recipient.module.mjs +0 -18
  122. package/esm2022/lib/inventory-common/recipient/recipient.service.mjs +0 -18
  123. package/esm2022/lib/inventory-common/reports/inventory-value-report/inventory-value-report.component.mjs +0 -152
  124. package/esm2022/lib/inventory-common/reports/low-stock-report/low-stock-report.component.mjs +0 -161
  125. package/esm2022/lib/inventory-common/reports/stock-issue-summary-report/stock-issue-product-data.service.mjs +0 -20
  126. package/esm2022/lib/inventory-common/reports/stock-issue-summary-report/stock-issue-summary-report.component.mjs +0 -98
  127. package/esm2022/lib/inventory-common/services/techlify-form-service.mjs +0 -11
  128. package/esm2022/lib/inventory-common/shared/export-to-excel-button/export-to-excel-button.component.mjs +0 -58
  129. package/esm2022/lib/inventory-common/shared.module.mjs +0 -67
  130. package/esm2022/lib/inventory-common/stock-allocation/stock-allocation-list/stock-allocation-list.component.mjs +0 -81
  131. package/esm2022/lib/inventory-common/stock-allocation/stock-allocation.service.mjs +0 -16
  132. package/esm2022/lib/inventory-common/stock-issue/stock-issue-form/stock-issue-form.component.mjs +0 -198
  133. package/esm2022/lib/inventory-common/stock-issue/stock-issue-import-page/stock-issue-import-page.component.mjs +0 -59
  134. package/esm2022/lib/inventory-common/stock-issue/stock-issue-list/stock-issue-list.component.mjs +0 -149
  135. package/esm2022/lib/inventory-common/stock-issue/stock-issue-page/stock-issue-page.component.mjs +0 -91
  136. package/esm2022/lib/inventory-common/stock-issue/stock-issue-page/stock-issue-page.module.mjs +0 -82
  137. package/esm2022/lib/inventory-common/stock-issue/stock-issue-product-form/stock-issue-product-form-button/stock-issue-product-form-button.component.mjs +0 -35
  138. package/esm2022/lib/inventory-common/stock-issue/stock-issue-product-form/stock-issue-product-form.component.mjs +0 -102
  139. package/esm2022/lib/inventory-common/stock-issue/stock-issue-product-view/stock-issue-product-view.component.mjs +0 -59
  140. package/esm2022/lib/inventory-common/stock-issue/stock-issue-product.service.mjs +0 -16
  141. package/esm2022/lib/inventory-common/stock-issue/stock-issue-products-list/stock-issue-products-list.component.mjs +0 -163
  142. package/esm2022/lib/inventory-common/stock-issue/stock-issue-routing.module.mjs +0 -51
  143. package/esm2022/lib/inventory-common/stock-issue/stock-issue-single-product-form/stock-issue-single-product-form.component.mjs +0 -201
  144. package/esm2022/lib/inventory-common/stock-issue/stock-issue-view/stock-issue-view.component.mjs +0 -64
  145. package/esm2022/lib/inventory-common/stock-issue/stock-issue.module.mjs +0 -47
  146. package/esm2022/lib/inventory-common/stock-issue/stock-issue.service.mjs +0 -18
  147. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form.component.mjs +0 -226
  148. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-import-page/stock-receipt-import-page.component.mjs +0 -74
  149. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-list/stock-receipt-list.component.mjs +0 -152
  150. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-form/stock-receipt-product-form-button/stock-receipt-product-form-button.component.mjs +0 -37
  151. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-form/stock-receipt-product-form.component.mjs +0 -80
  152. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-list/stock-receipt-product-list.component.mjs +0 -149
  153. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product-view/stock-receipt-product-view.component.mjs +0 -59
  154. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-product.service.mjs +0 -18
  155. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-single-product-form/stock-receipt-simple-form/stock-receipt-single-product-form.component.mjs +0 -181
  156. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt-view/stock-receipt-view.component.mjs +0 -54
  157. package/esm2022/lib/inventory-common/stock-receipts/stock-receipt.service.mjs +0 -18
  158. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-page/stock-receipts-page.component.mjs +0 -70
  159. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts-routing.module.mjs +0 -52
  160. package/esm2022/lib/inventory-common/stock-receipts/stock-receipts.module.mjs +0 -104
  161. package/esm2022/lib/inventory-common/stock-summary.service.mjs +0 -26
  162. package/esm2022/lib/inventory-common/stock-transfer/stock-transfer-form/stock-transfer-form.component.mjs +0 -98
  163. package/esm2022/lib/inventory-common/stock-transfer/stock-transfer-list/stock-transfer-list.component.mjs +0 -139
  164. package/esm2022/lib/inventory-common/stock-transfer/stock-transfer.service.mjs +0 -18
  165. package/esm2022/lib/inventory-common/supplier/payee-selector/payee-selector/payee-selector.component.mjs +0 -59
  166. package/esm2022/lib/inventory-common/supplier/payee-selector/payee-selector.module.mjs +0 -21
  167. package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-form/purchase-order-form.component.mjs +0 -156
  168. package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-listing/purchase-order-listing.component.mjs +0 -67
  169. package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form/purchase-order-product-form.component.mjs +0 -74
  170. package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form-button/purchase-order-product-form-button.component.mjs +0 -38
  171. package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-list.component.mjs +0 -61
  172. package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product.service.mjs +0 -20
  173. package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order-view/purchase-order-view.component.mjs +0 -64
  174. package/esm2022/lib/inventory-common/supplier/purchase-order/purchase-order.service.mjs +0 -20
  175. package/esm2022/lib/inventory-common/supplier/supplier-branch-delete-button/supplier-branch-delete-button.component.mjs +0 -63
  176. package/esm2022/lib/inventory-common/supplier/supplier-branch-form/supplier-branch-form-button/supplier-branch-form-button.component.mjs +0 -47
  177. package/esm2022/lib/inventory-common/supplier/supplier-branch-form/supplier-branch-form.component.mjs +0 -79
  178. package/esm2022/lib/inventory-common/supplier/supplier-branch.service.mjs +0 -18
  179. package/esm2022/lib/inventory-common/supplier/supplier-branches-list/supplier-branches-list.component.mjs +0 -79
  180. package/esm2022/lib/inventory-common/supplier/supplier-form/supplier-form.component.mjs +0 -94
  181. package/esm2022/lib/inventory-common/supplier/supplier-form/supplier-form.service.mjs +0 -17
  182. package/esm2022/lib/inventory-common/supplier/supplier-information/supplier-information.component.mjs +0 -73
  183. package/esm2022/lib/inventory-common/supplier/supplier-list/supplier-list.component.mjs +0 -68
  184. package/esm2022/lib/inventory-common/supplier/supplier-routing.module.mjs +0 -51
  185. package/esm2022/lib/inventory-common/supplier/supplier-type.service.mjs +0 -25
  186. package/esm2022/lib/inventory-common/supplier/supplier-view/supplier-view.component.mjs +0 -70
  187. package/esm2022/lib/inventory-common/supplier/supplier.component.mjs +0 -20
  188. package/esm2022/lib/inventory-common/supplier/supplier.module.mjs +0 -64
  189. package/esm2022/lib/inventory-common/supplier/supplier.service.mjs +0 -20
  190. package/esm2022/lib/inventory-common/techlify-filter/techlify-filter.component.mjs +0 -116
  191. package/esm2022/lib/inventory-common/techlify-filter/techlify-filter.module.mjs +0 -42
  192. package/esm2022/public-api.mjs +0 -71
  193. package/esm2022/techlify-inventory-common.mjs +0 -5
  194. package/fesm2022/techlify-inventory-common-category.module-CGzFP2S_.mjs +0 -288
  195. package/fesm2022/techlify-inventory-common-category.module-CGzFP2S_.mjs.map +0 -1
  196. package/fesm2022/techlify-inventory-common-purchase-order-view.component-5mLg0IvH.mjs +0 -227
  197. package/fesm2022/techlify-inventory-common-purchase-order-view.component-5mLg0IvH.mjs.map +0 -1
  198. package/fesm2022/techlify-inventory-common-recipient.module-DLoP6xI3.mjs +0 -147
  199. package/fesm2022/techlify-inventory-common-recipient.module-DLoP6xI3.mjs.map +0 -1
  200. package/fesm2022/techlify-inventory-common-stock-issue-form.component-MYEKRteU.mjs +0 -199
  201. package/fesm2022/techlify-inventory-common-stock-issue-form.component-MYEKRteU.mjs.map +0 -1
  202. package/fesm2022/techlify-inventory-common-stock-issue-product-view.component-C-c83FEn.mjs +0 -60
  203. package/fesm2022/techlify-inventory-common-stock-issue-product-view.component-C-c83FEn.mjs.map +0 -1
  204. package/fesm2022/techlify-inventory-common-stock-issue-view.component-Co7hXpDq.mjs +0 -66
  205. package/fesm2022/techlify-inventory-common-stock-issue-view.component-Co7hXpDq.mjs.map +0 -1
  206. package/fesm2022/techlify-inventory-common-techlify-inventory-common-CWxzlvVi.mjs +0 -7214
  207. package/fesm2022/techlify-inventory-common-techlify-inventory-common-CWxzlvVi.mjs.map +0 -1
  208. package/index.d.ts +0 -5
  209. package/lib/inventory-common/category/category-form/category-form.component.d.ts +0 -18
  210. package/lib/inventory-common/category/category-form-button/category-form-button.component.d.ts +0 -13
  211. package/lib/inventory-common/category/category-list-page/category-list-page.component.d.ts +0 -20
  212. package/lib/inventory-common/category/category-routing.module.d.ts +0 -7
  213. package/lib/inventory-common/category/category-view/category-view.component.d.ts +0 -16
  214. package/lib/inventory-common/category/category.module.d.ts +0 -20
  215. package/lib/inventory-common/category/category.service.d.ts +0 -7
  216. package/lib/inventory-common/incident/incident-form/incident-form.component.d.ts +0 -19
  217. package/lib/inventory-common/incident/incident-form-button/incident-form-button.component.d.ts +0 -15
  218. package/lib/inventory-common/incident/incident-list/incident-list.component.d.ts +0 -22
  219. package/lib/inventory-common/incident/incident-routing.module.d.ts +0 -7
  220. package/lib/inventory-common/incident/incident.module.d.ts +0 -8
  221. package/lib/inventory-common/incident/incident.service.d.ts +0 -7
  222. package/lib/inventory-common/inventory-common-routing.module.d.ts +0 -7
  223. package/lib/inventory-common/inventory-common.module.d.ts +0 -14
  224. package/lib/inventory-common/inventory-dashboard-page/inventory-dashboard-page.component.d.ts +0 -14
  225. package/lib/inventory-common/inventory-value-report.service.d.ts +0 -9
  226. package/lib/inventory-common/location/location-form/location-form.component.d.ts +0 -18
  227. package/lib/inventory-common/location/location-form-button/location-form-button.component.d.ts +0 -13
  228. package/lib/inventory-common/location/location-information/location-information.component.d.ts +0 -12
  229. package/lib/inventory-common/location/location-list/location-list.component.d.ts +0 -18
  230. package/lib/inventory-common/location/location-product-statistics/location-product-statistics.component.d.ts +0 -18
  231. package/lib/inventory-common/location/location-routing.module.d.ts +0 -7
  232. package/lib/inventory-common/location/location-status-changer/location-status-changer.component.d.ts +0 -17
  233. package/lib/inventory-common/location/location-view/location-view.component.d.ts +0 -16
  234. package/lib/inventory-common/location/location.module.d.ts +0 -8
  235. package/lib/inventory-common/location/location.service.d.ts +0 -15
  236. package/lib/inventory-common/location/shelf/shelf-form/shelf-form.component.d.ts +0 -18
  237. package/lib/inventory-common/location/shelf/shelf-form-button/shelf-form-button.component.d.ts +0 -13
  238. package/lib/inventory-common/location/shelf/shelf-list/shelf-list.component.d.ts +0 -19
  239. package/lib/inventory-common/location/shelf/shelf-routing.module.d.ts +0 -7
  240. package/lib/inventory-common/location/shelf/shelf.module.d.ts +0 -8
  241. package/lib/inventory-common/location/shelf/shelf.service.d.ts +0 -8
  242. package/lib/inventory-common/low-stock-report.service.d.ts +0 -10
  243. package/lib/inventory-common/material.module.d.ts +0 -40
  244. package/lib/inventory-common/measure/measure-form/measure-form.component.d.ts +0 -21
  245. package/lib/inventory-common/measure/measure-list/measure-list.component.d.ts +0 -19
  246. package/lib/inventory-common/measure/measure-routing.module.d.ts +0 -7
  247. package/lib/inventory-common/measure/measure.module.d.ts +0 -14
  248. package/lib/inventory-common/measure/measure.service.d.ts +0 -7
  249. package/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.component.d.ts +0 -13
  250. package/lib/inventory-common/product/low-stock-products-widget/low-stock-products-widget.module.d.ts +0 -12
  251. package/lib/inventory-common/product/product-basic-info/product-basic-info.component.d.ts +0 -21
  252. package/lib/inventory-common/product/product-batch-update-form/product-batch-update-form.component.d.ts +0 -17
  253. package/lib/inventory-common/product/product-delete-button/product-delete-button.component.d.ts +0 -26
  254. package/lib/inventory-common/product/product-form/product-form.component.d.ts +0 -46
  255. package/lib/inventory-common/product/product-form-button/product-form-button.component.d.ts +0 -7
  256. package/lib/inventory-common/product/product-form.service.d.ts +0 -7
  257. package/lib/inventory-common/product/product-import-page/product-import-page.component.d.ts +0 -10
  258. package/lib/inventory-common/product/product-list/product-list.component.d.ts +0 -34
  259. package/lib/inventory-common/product/product-location/product-location-list/product-location-list.component.d.ts +0 -18
  260. package/lib/inventory-common/product/product-measure-form/product-measure-form.component.d.ts +0 -33
  261. package/lib/inventory-common/product/product-measures-list/product-measures-list.component.d.ts +0 -43
  262. package/lib/inventory-common/product/product-nav-bar/product-nav-bar.component.d.ts +0 -5
  263. package/lib/inventory-common/product/product-quick-search/product-quick-search.component.d.ts +0 -15
  264. package/lib/inventory-common/product/product-routing.module.d.ts +0 -7
  265. package/lib/inventory-common/product/product-search/product-search.component.d.ts +0 -48
  266. package/lib/inventory-common/product/product-search/product-search.module.d.ts +0 -13
  267. package/lib/inventory-common/product/product-statistics.service.d.ts +0 -9
  268. package/lib/inventory-common/product/product-summary-chart/product-summary-chart.component.d.ts +0 -15
  269. package/lib/inventory-common/product/product-summary-chart/product-summary-chart.module.d.ts +0 -10
  270. package/lib/inventory-common/product/product-summary.service.d.ts +0 -8
  271. package/lib/inventory-common/product/product-view-page/product-view-page.component.d.ts +0 -44
  272. package/lib/inventory-common/product/product.module.d.ts +0 -31
  273. package/lib/inventory-common/product/product.service.d.ts +0 -8
  274. package/lib/inventory-common/product/widgets/product-category-badges/product-category-badges.component.d.ts +0 -6
  275. package/lib/inventory-common/product-batch.service.d.ts +0 -8
  276. package/lib/inventory-common/rating/rating-form/rating-form.component.d.ts +0 -19
  277. package/lib/inventory-common/rating/rating-form-button/rating-form-button.component.d.ts +0 -15
  278. package/lib/inventory-common/rating/rating-list/rating-list.component.d.ts +0 -22
  279. package/lib/inventory-common/rating/rating-routing.module.d.ts +0 -7
  280. package/lib/inventory-common/rating/rating.module.d.ts +0 -8
  281. package/lib/inventory-common/rating/rating.service.d.ts +0 -7
  282. package/lib/inventory-common/recipient/recipient-form/recipient-form.component.d.ts +0 -21
  283. package/lib/inventory-common/recipient/recipient-list/recipient-list.component.d.ts +0 -16
  284. package/lib/inventory-common/recipient/recipient-routing.module.d.ts +0 -7
  285. package/lib/inventory-common/recipient/recipient.module.d.ts +0 -9
  286. package/lib/inventory-common/recipient/recipient.service.d.ts +0 -7
  287. package/lib/inventory-common/reports/inventory-value-report/inventory-value-report.component.d.ts +0 -27
  288. package/lib/inventory-common/reports/low-stock-report/low-stock-report.component.d.ts +0 -25
  289. package/lib/inventory-common/reports/stock-issue-summary-report/stock-issue-product-data.service.d.ts +0 -8
  290. package/lib/inventory-common/reports/stock-issue-summary-report/stock-issue-summary-report.component.d.ts +0 -25
  291. package/lib/inventory-common/services/techlify-form-service.d.ts +0 -5
  292. package/lib/inventory-common/shared/export-to-excel-button/export-to-excel-button.component.d.ts +0 -12
  293. package/lib/inventory-common/shared.module.d.ts +0 -13
  294. package/lib/inventory-common/stock-allocation/stock-allocation-list/stock-allocation-list.component.d.ts +0 -19
  295. package/lib/inventory-common/stock-allocation/stock-allocation.service.d.ts +0 -7
  296. package/lib/inventory-common/stock-issue/stock-issue-form/stock-issue-form.component.d.ts +0 -45
  297. package/lib/inventory-common/stock-issue/stock-issue-import-page/stock-issue-import-page.component.d.ts +0 -10
  298. package/lib/inventory-common/stock-issue/stock-issue-list/stock-issue-list.component.d.ts +0 -33
  299. package/lib/inventory-common/stock-issue/stock-issue-page/stock-issue-page.component.d.ts +0 -30
  300. package/lib/inventory-common/stock-issue/stock-issue-page/stock-issue-page.module.d.ts +0 -18
  301. package/lib/inventory-common/stock-issue/stock-issue-product-form/stock-issue-product-form-button/stock-issue-product-form-button.component.d.ts +0 -12
  302. package/lib/inventory-common/stock-issue/stock-issue-product-form/stock-issue-product-form.component.d.ts +0 -21
  303. package/lib/inventory-common/stock-issue/stock-issue-product-view/stock-issue-product-view.component.d.ts +0 -19
  304. package/lib/inventory-common/stock-issue/stock-issue-product.service.d.ts +0 -7
  305. package/lib/inventory-common/stock-issue/stock-issue-products-list/stock-issue-products-list.component.d.ts +0 -40
  306. package/lib/inventory-common/stock-issue/stock-issue-routing.module.d.ts +0 -7
  307. package/lib/inventory-common/stock-issue/stock-issue-single-product-form/stock-issue-single-product-form.component.d.ts +0 -42
  308. package/lib/inventory-common/stock-issue/stock-issue-view/stock-issue-view.component.d.ts +0 -19
  309. package/lib/inventory-common/stock-issue/stock-issue.module.d.ts +0 -14
  310. package/lib/inventory-common/stock-issue/stock-issue.service.d.ts +0 -7
  311. package/lib/inventory-common/stock-receipts/stock-receipt-form/stock-receipt-form.component.d.ts +0 -48
  312. package/lib/inventory-common/stock-receipts/stock-receipt-import-page/stock-receipt-import-page.component.d.ts +0 -10
  313. package/lib/inventory-common/stock-receipts/stock-receipt-list/stock-receipt-list.component.d.ts +0 -30
  314. package/lib/inventory-common/stock-receipts/stock-receipt-product-form/stock-receipt-product-form-button/stock-receipt-product-form-button.component.d.ts +0 -12
  315. package/lib/inventory-common/stock-receipts/stock-receipt-product-form/stock-receipt-product-form.component.d.ts +0 -17
  316. package/lib/inventory-common/stock-receipts/stock-receipt-product-list/stock-receipt-product-list.component.d.ts +0 -31
  317. package/lib/inventory-common/stock-receipts/stock-receipt-product-view/stock-receipt-product-view.component.d.ts +0 -19
  318. package/lib/inventory-common/stock-receipts/stock-receipt-product.service.d.ts +0 -7
  319. package/lib/inventory-common/stock-receipts/stock-receipt-single-product-form/stock-receipt-simple-form/stock-receipt-single-product-form.component.d.ts +0 -33
  320. package/lib/inventory-common/stock-receipts/stock-receipt-view/stock-receipt-view.component.d.ts +0 -19
  321. package/lib/inventory-common/stock-receipts/stock-receipt.service.d.ts +0 -7
  322. package/lib/inventory-common/stock-receipts/stock-receipts-page/stock-receipts-page.component.d.ts +0 -21
  323. package/lib/inventory-common/stock-receipts/stock-receipts-routing.module.d.ts +0 -7
  324. package/lib/inventory-common/stock-receipts/stock-receipts.module.d.ts +0 -22
  325. package/lib/inventory-common/stock-summary.service.d.ts +0 -14
  326. package/lib/inventory-common/stock-transfer/stock-transfer-form/stock-transfer-form.component.d.ts +0 -19
  327. package/lib/inventory-common/stock-transfer/stock-transfer-list/stock-transfer-list.component.d.ts +0 -28
  328. package/lib/inventory-common/stock-transfer/stock-transfer.service.d.ts +0 -7
  329. package/lib/inventory-common/supplier/payee-selector/payee-selector/payee-selector.component.d.ts +0 -20
  330. package/lib/inventory-common/supplier/payee-selector/payee-selector.module.d.ts +0 -11
  331. package/lib/inventory-common/supplier/purchase-order/purchase-order-form/purchase-order-form.component.d.ts +0 -30
  332. package/lib/inventory-common/supplier/purchase-order/purchase-order-listing/purchase-order-listing.component.d.ts +0 -16
  333. package/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form/purchase-order-product-form.component.d.ts +0 -16
  334. package/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-form-button/purchase-order-product-form-button.component.d.ts +0 -12
  335. package/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product-list.component.d.ts +0 -15
  336. package/lib/inventory-common/supplier/purchase-order/purchase-order-product-list/purchase-order-product.service.d.ts +0 -8
  337. package/lib/inventory-common/supplier/purchase-order/purchase-order-view/purchase-order-view.component.d.ts +0 -19
  338. package/lib/inventory-common/supplier/purchase-order/purchase-order.service.d.ts +0 -8
  339. package/lib/inventory-common/supplier/supplier-branch-delete-button/supplier-branch-delete-button.component.d.ts +0 -18
  340. package/lib/inventory-common/supplier/supplier-branch-form/supplier-branch-form-button/supplier-branch-form-button.component.d.ts +0 -13
  341. package/lib/inventory-common/supplier/supplier-branch-form/supplier-branch-form.component.d.ts +0 -22
  342. package/lib/inventory-common/supplier/supplier-branch.service.d.ts +0 -7
  343. package/lib/inventory-common/supplier/supplier-branches-list/supplier-branches-list.component.d.ts +0 -18
  344. package/lib/inventory-common/supplier/supplier-form/supplier-form.component.d.ts +0 -25
  345. package/lib/inventory-common/supplier/supplier-form/supplier-form.service.d.ts +0 -7
  346. package/lib/inventory-common/supplier/supplier-information/supplier-information.component.d.ts +0 -18
  347. package/lib/inventory-common/supplier/supplier-list/supplier-list.component.d.ts +0 -20
  348. package/lib/inventory-common/supplier/supplier-routing.module.d.ts +0 -7
  349. package/lib/inventory-common/supplier/supplier-type.service.d.ts +0 -13
  350. package/lib/inventory-common/supplier/supplier-view/supplier-view.component.d.ts +0 -20
  351. package/lib/inventory-common/supplier/supplier.component.d.ts +0 -10
  352. package/lib/inventory-common/supplier/supplier.module.d.ts +0 -20
  353. package/lib/inventory-common/supplier/supplier.service.d.ts +0 -8
  354. package/lib/inventory-common/techlify-filter/techlify-filter.component.d.ts +0 -31
  355. package/lib/inventory-common/techlify-filter/techlify-filter.module.d.ts +0 -12
  356. package/public-api.d.ts +0 -67
@@ -1,258 +0,0 @@
1
- import { Component, Input, signal } from '@angular/core';
2
- import { FormControl, Validators } from '@angular/forms';
3
- import moment from 'moment';
4
- import { FormConfigurationUtilityService, TechlifyFormComponent } from 'ngx-techlify-core';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "ngx-techlify-core";
7
- import * as i2 from "@angular/forms";
8
- import * as i3 from "../product.service";
9
- import * as i4 from "@angular/router";
10
- import * as i5 from "@angular/common";
11
- import * as i6 from "@angular/material/button";
12
- import * as i7 from "@angular/material/checkbox";
13
- import * as i8 from "@angular/material/form-field";
14
- import * as i9 from "@angular/material/input";
15
- import * as i10 from "@angular/material/progress-spinner";
16
- import * as i11 from "@angular/material/card";
17
- import * as i12 from "@angular/material/datepicker";
18
- export class ProductFormComponent extends TechlifyFormComponent {
19
- fileService;
20
- fb;
21
- formValidatorService;
22
- service;
23
- activatedRoute;
24
- errorHandler;
25
- location;
26
- router;
27
- formConfigService;
28
- displayedFormFields = [
29
- 'name',
30
- 'product type',
31
- 'sku',
32
- 'color',
33
- 'description',
34
- 'product measure',
35
- 'reorder point',
36
- 'initial quantity',
37
- 'initial quantity date',
38
- 'sales price',
39
- 'minimum price',
40
- 'maximum price',
41
- 'income account',
42
- 'expense account',
43
- ];
44
- displayedFormSections = [
45
- 'basic information',
46
- 'inventory information',
47
- 'sales information',
48
- 'accounts information',
49
- ];
50
- product = signal(null);
51
- isFormSetup = signal(false);
52
- errorMessages = {
53
- type_id: {
54
- required: 'Please Enter Type',
55
- },
56
- name: {
57
- required: 'Please Enter Name',
58
- },
59
- sale_price: {
60
- required: 'Please Enter Sales Price',
61
- },
62
- minimum_price: {
63
- required: 'Please Enter Minimum Price',
64
- },
65
- reorder_point: {
66
- required: 'Please Enter Reorder Point',
67
- },
68
- color_id: {
69
- required: 'Please Select Color',
70
- },
71
- };
72
- isCreateAnother = new FormControl(false);
73
- savedCount = 0;
74
- formConfigurationUtilityService;
75
- fileConfig;
76
- viewerConfig;
77
- fileList = [];
78
- constructor(fileService, fb, formValidatorService, service, activatedRoute, errorHandler, location, router, formConfigService) {
79
- super(formValidatorService);
80
- this.fileService = fileService;
81
- this.fb = fb;
82
- this.formValidatorService = formValidatorService;
83
- this.service = service;
84
- this.activatedRoute = activatedRoute;
85
- this.errorHandler = errorHandler;
86
- this.location = location;
87
- this.router = router;
88
- this.formConfigService = formConfigService;
89
- this.formConfigurationUtilityService = new FormConfigurationUtilityService();
90
- }
91
- ngOnInit() {
92
- this.fileConfig = {
93
- fileId: 'productImageFile',
94
- containerId: 'productImageFileContainer',
95
- styles: {
96
- height: '200px'
97
- },
98
- multiple: false,
99
- acceptFile: 'image/*',
100
- maxSize: 10,
101
- acceptFileText: 'PNG, JPEG, and JPG only'
102
- };
103
- this.viewerConfig = {
104
- viewerStyle: {
105
- height: '50px',
106
- }
107
- };
108
- this.formConfigurationUtilityService
109
- .initialize(this.formConfigService, 'product')
110
- .subscribe({
111
- next: (response) => {
112
- this.form = this.fb.group({
113
- id: [''],
114
- type_id: [1, Validators.compose([Validators.required])],
115
- color_id: ['', this.formConfigurationUtilityService.getFieldRequired('color_id') ? Validators.required : null],
116
- sku: [''],
117
- name: ['', Validators.compose([Validators.required])],
118
- initial_quantity: [0],
119
- initial_quantity_date: [moment().format()],
120
- reorder_point: [10, Validators.compose([Validators.required])],
121
- description: [''],
122
- sale_price: [0, Validators.compose([Validators.required])],
123
- income_account_id: [''],
124
- expense_account_id: [''],
125
- measure_id: [1],
126
- minimum_price: ['', Validators.compose([Validators.required])],
127
- maximum_price: [''],
128
- condition_type_id: [1],
129
- current_quantity: [],
130
- category_ids: [''],
131
- image_file: [null],
132
- image_file_url: [null],
133
- });
134
- }, error: (error) => {
135
- this.errorHandler.handleError(error);
136
- }, complete: () => {
137
- this.isFormSetup.set(true);
138
- this.loadProduct();
139
- }
140
- });
141
- }
142
- loadProduct() {
143
- let id = this.activatedRoute.snapshot.params['id'];
144
- if (!id) {
145
- return;
146
- }
147
- this.isWorking = true;
148
- this.service?.show(id, {
149
- with: 'measure,categories',
150
- }).subscribe({
151
- next: (response) => {
152
- this.product.set(response?.item);
153
- this.isWorking = false;
154
- },
155
- error: (error) => {
156
- this.isWorking = false;
157
- this.errorHandler.handleError(error);
158
- },
159
- complete: () => {
160
- this.patchProduct();
161
- this.isWorking = false;
162
- }
163
- });
164
- }
165
- patchProduct() {
166
- this.isUpdate = true;
167
- let data = { ...this.product() };
168
- if (this.product()?.categories?.length > 0) {
169
- (data).category_ids = this.product().categories.map((category) => category?.id);
170
- }
171
- if (data?.initial_quantity_date) {
172
- data.initial_quantity_date = moment(data.initial_quantity_date).toISOString();
173
- }
174
- this.form.patchValue(data);
175
- }
176
- async save() {
177
- this.form.markAllAsTouched();
178
- if (this.form.invalid) {
179
- this.alertService.addAlert('Please Fill All Required Fields', 'warn');
180
- return;
181
- }
182
- let product = this.form.value;
183
- if (product.maximum_price <= 0 || !product.maximum_price) {
184
- product.maximum_price = product.minimum_price;
185
- }
186
- if (product?.initial_quantity_date) {
187
- product.initial_quantity_date = moment(product.initial_quantity_date).format('YYYY-MM-DD');
188
- }
189
- this.isWorking = true;
190
- let promise = product.id
191
- ? this.service.update(product)
192
- : this.service.store(product);
193
- promise.subscribe({
194
- next: () => {
195
- this.isWorking = false;
196
- this.alertService.addAlert('Product saved successfully!', 'success');
197
- },
198
- error: () => (this.isWorking = false),
199
- complete: () => {
200
- if (this.isCreateAnother.value && !this.isUpdate) {
201
- this.savedCount++;
202
- }
203
- else {
204
- this.router.navigate(['/inventory/products']);
205
- }
206
- }
207
- });
208
- }
209
- /**
210
- * Checks displayed Form Fields array for form field and returns boolean result
211
- */
212
- isFormFieldShown(fieldName) {
213
- return this.displayedFormFields.length > 0 && this.displayedFormFields.includes(fieldName);
214
- }
215
- /**
216
- * Checks displayed Form Section array for form section and returns boolean result
217
- */
218
- isFormSectionShown(sectionName) {
219
- return this.displayedFormSections.length > 0 && this.displayedFormSections.includes(sectionName);
220
- }
221
- async fileChanged(event) {
222
- this.fileList = event;
223
- if (this.fileList.length > 0) {
224
- const result = await this.fileService.uploadEntityFile(this.fileList[0], {
225
- entity_id: this.product()?.id,
226
- entity_type: 'product',
227
- sub_path: `${this.product()?.id}`
228
- });
229
- this.form.get('image_file')?.setValue(result.item.file);
230
- this.form.get('image_file_url')?.setValue(result.item.url);
231
- this.fileList = [];
232
- }
233
- }
234
- async removeFile() {
235
- if (this.form.value.image_file) {
236
- try {
237
- this.form.patchValue({
238
- image_file: '',
239
- image_file_url: ''
240
- });
241
- }
242
- catch (error) {
243
- this.alertService.addAlert('Unable to remove file, try later', 'warn');
244
- }
245
- }
246
- }
247
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProductFormComponent, deps: [{ token: i1.EntityFileService }, { token: i2.FormBuilder }, { token: i1.FormValidatorService }, { token: i3.ProductService }, { token: i4.ActivatedRoute }, { token: i1.ErrorHandlerService }, { token: i5.Location }, { token: i4.Router }, { token: i1.FormConfigurationFormService }], target: i0.ɵɵFactoryTarget.Component });
248
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ProductFormComponent, selector: "app-product-form", inputs: { displayedFormFields: "displayedFormFields", displayedFormSections: "displayedFormSections" }, usesInheritance: true, ngImport: i0, template: "@if (isFormSetup()) {\n<div class=\"d-flex flex-column gap-2\">\n <mat-card class='container'>\n <mat-card-content>\n <div class=\"d-flex justify-content-between align-items-center\">\n <span></span>\n <h3 class=\"text-center m-0\">Product Form</h3>\n <app-form-configuration-for-form formCode='product'></app-form-configuration-for-form>\n </div>\n </mat-card-content>\n </mat-card>\n <mat-card class='container'>\n <mat-card-content>\n <form [formGroup]=\"form\" (submit)=\"save()\">\n <div class=\"d-flex flex-column\">\n\n <div class=\"d-flex flex-column justify-content-center align-items-center\">\n <ng-template #fileUpload>\n <div class=\"w-100\">\n <app-file-dropper (fileChanged)=\"fileChanged($event)\" [config]=\"fileConfig\" [fileArray]=\"fileList\">\n </app-file-dropper>\n </div>\n </ng-template>\n <div *ngIf=\"form.get('image_file')?.value; else fileUpload;\" style='width: 200px;'\n class='justify-content-center align-items-center'>\n <app-document-viewer (remove)=\"removeFile()\" [config]=\"viewerConfig\"\n [fileUrl]=\"form.get('image_file_url')?.value\" [file]=\"form.get('image_file')?.value\">\n </app-document-viewer>\n </div>\n </div>\n\n <div class=\"d-flex flex-column mt-2\" *ngIf=\"isFormSectionShown('basic information')\">\n <h6>Basic Information</h6>\n <div class=\"d-flex gap-2\">\n\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('name')\">\n <mat-label>Name</mat-label>\n <input matInput placeholder=\"Name\" formControlName=\"name\" required />\n <mat-error *ngIf=\"isFieldValid('name')\">{{ getErrorMessage('name') }} </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('product type')\">\n <mat-label>Product Type</mat-label>\n <app-searchable-selector apiUrl=\"api/product-types\" formControlName=\"type_id\">\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('type_id')\">{{ getErrorMessage('type_id') }} </mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"d-flex gap-2\">\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('sku')\">\n <mat-label>SKU</mat-label>\n <input matInput placeholder=\"SKU\" formControlName=\"sku\" />\n <mat-error *ngIf=\"isFieldValid('sku')\">{{ getErrorMessage('sku') }} </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-50\">\n <mat-label>Category</mat-label>\n <app-searchable-selector apiUrl=\"api/product-categories\" formControlName=\"category_ids\"\n [multiple]=\"true\">\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('category_ids')\">\n {{ getErrorMessage('category_ids') }}\n </mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"d-flex gap-2\">\n <mat-form-field class=\"w-50 align-self-start\"\n *ngIf=\"isFormFieldShown('color') && formConfigurationUtilityService.getFieldEnabled('color_id')\">\n <mat-label>\n Color <sup *ngIf=\"formConfigurationUtilityService.getFieldRequired('color_id')\">*</sup>\n </mat-label>\n <app-searchable-selector apiUrl=\"api/attributes?type_code=color\"\n formControlName=\"color_id\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('color_id')\">{{getErrorMessage('color_id')}}</mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('description')\">\n <mat-label>Description</mat-label>\n <textarea matInput placeholder=\"Description\" formControlName=\"description\"></textarea>\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"d-flex flex-column\" *ngIf=\"isFormSectionShown('inventory information')\">\n <h6>Inventory Information</h6>\n <div class=\"d-flex gap-2\">\n\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('product measure')\">\n <mat-label>Measure</mat-label>\n <app-searchable-selector apiUrl=\"api/product-measures\" formControlName=\"measure_id\">\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('measure_id')\">{{ getErrorMessage('measure_id') }} </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('reorder point')\">\n <mat-label>Reorder Point</mat-label>\n <input matInput placeholder=\"Reorder Point\" formControlName=\"reorder_point\" type=\"number\" />\n <mat-error *ngIf=\"isFieldValid('reorder_point')\">{{ getErrorMessage('reorder_point') }} </mat-error>\n </mat-form-field>\n </div>\n <div class=\"d-flex gap-2\">\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('initial quantity')\">\n <mat-label>Initial Quantity</mat-label>\n <input matInput placeholder=\"Initial Quantity\" formControlName=\"initial_quantity\" />\n <mat-error *ngIf=\"isFieldValid('initial_quantity')\">{{ getErrorMessage('initial_quantity') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('initial quantity date')\">\n <mat-label>Initial Quantity Date</mat-label>\n <input matInput [matDatepicker]=\"pickerInitialQuantityDate\" placeholder=\"Initial Quantity Date\"\n formControlName=\"initial_quantity_date\" />\n <mat-datepicker-toggle matSuffix [for]=\"pickerInitialQuantityDate\"></mat-datepicker-toggle>\n <mat-datepicker #pickerInitialQuantityDate></mat-datepicker>\n <mat-error *ngIf=\"isFieldValid('initial_quantity_date')\">{{ getErrorMessage('initial_quantity_date') }}\n </mat-error>\n </mat-form-field>\n </div>\n </div>\n <div class=\"d-flex flex-column\" *ngIf=\"isFormSectionShown('sales information')\">\n <h6>Sale Information</h6>\n <div class=\"d-flex gap-2\">\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('sales price')\">\n <mat-label>Selling Price</mat-label>\n <input matInput placeholder=\"Selling Price\" formControlName=\"sale_price\" required type=\"number\"\n step=\"any\" />\n <mat-error *ngIf=\"isFieldValid('sale_price')\">{{ getErrorMessage('sale_price') }} </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('condition types')\">\n <mat-label>Condition</mat-label>\n <app-searchable-selector apiUrl=\"api/condition-types\"\n formControlName=\"condition_type_id\"></app-searchable-selector>\n </mat-form-field>\n </div>\n <div class=\"d-flex gap-2\">\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('minimum price')\">\n <mat-label>Minimum Price</mat-label>\n <input matInput placeholder=\"Minimum Price\" formControlName=\"minimum_price\" required type=\"number\"\n step=\"any\" />\n <mat-error *ngIf=\"isFieldValid('minimum_price')\">{{ getErrorMessage('minimum_price') }} </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('maximum price')\">\n <mat-label>Maximum Price</mat-label>\n <input matInput placeholder=\"Maximum Price\" formControlName=\"maximum_price\" type=\"number\" step=\"any\" />\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"w-100 d-flex justify-content-between\">\n @if (!isUpdate) {\n <mat-checkbox [formControl]=\"isCreateAnother\">Create Another\n <span *ngIf=\"savedCount > 0\">({{ savedCount }} items saved)</span>\n </mat-checkbox>\n } @else {\n <span class='d-flex flex-grow'></span>\n }\n\n <div class=\"d-flex flex-row gap-3 align-items-center justify-content-end\">\n <button [disabled]=\"isWorking\" mat-button class=\"mt-2\" type=\"button\" (click)=\"location.back()\">\n Cancel\n </button>\n <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" class=\"mt-2\" type=\"submit\">Save</button>\n </div>\n </div>\n </div>\n </form>\n </mat-card-content>\n </mat-card>\n</div>\n} @else {\n<mat-card-content class=\"d-flex vh-100 justify-content-center align-items-center\">\n <mat-spinner></mat-spinner>\n</mat-card-content>\n}", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "panelWidth", "focusSearchOnOpen", "isEmitInitialEvent", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange", "isItemsEmpty"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i11.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i11.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i12.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i12.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i12.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i1.FormConfigurationForFormComponent, selector: "app-form-configuration-for-form", inputs: ["formCode"] }, { kind: "component", type: i1.FileDropperComponent, selector: "app-file-dropper", inputs: ["fileArray", "config", "styles"], outputs: ["fileChanged"] }, { kind: "component", type: i1.DocumentViewerComponent, selector: "app-document-viewer", inputs: ["config", "file", "fileUrl", "disableEdit"], outputs: ["remove"] }], preserveWhitespaces: true });
249
- }
250
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProductFormComponent, decorators: [{
251
- type: Component,
252
- args: [{ selector: 'app-product-form', template: "@if (isFormSetup()) {\n<div class=\"d-flex flex-column gap-2\">\n <mat-card class='container'>\n <mat-card-content>\n <div class=\"d-flex justify-content-between align-items-center\">\n <span></span>\n <h3 class=\"text-center m-0\">Product Form</h3>\n <app-form-configuration-for-form formCode='product'></app-form-configuration-for-form>\n </div>\n </mat-card-content>\n </mat-card>\n <mat-card class='container'>\n <mat-card-content>\n <form [formGroup]=\"form\" (submit)=\"save()\">\n <div class=\"d-flex flex-column\">\n\n <div class=\"d-flex flex-column justify-content-center align-items-center\">\n <ng-template #fileUpload>\n <div class=\"w-100\">\n <app-file-dropper (fileChanged)=\"fileChanged($event)\" [config]=\"fileConfig\" [fileArray]=\"fileList\">\n </app-file-dropper>\n </div>\n </ng-template>\n <div *ngIf=\"form.get('image_file')?.value; else fileUpload;\" style='width: 200px;'\n class='justify-content-center align-items-center'>\n <app-document-viewer (remove)=\"removeFile()\" [config]=\"viewerConfig\"\n [fileUrl]=\"form.get('image_file_url')?.value\" [file]=\"form.get('image_file')?.value\">\n </app-document-viewer>\n </div>\n </div>\n\n <div class=\"d-flex flex-column mt-2\" *ngIf=\"isFormSectionShown('basic information')\">\n <h6>Basic Information</h6>\n <div class=\"d-flex gap-2\">\n\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('name')\">\n <mat-label>Name</mat-label>\n <input matInput placeholder=\"Name\" formControlName=\"name\" required />\n <mat-error *ngIf=\"isFieldValid('name')\">{{ getErrorMessage('name') }} </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('product type')\">\n <mat-label>Product Type</mat-label>\n <app-searchable-selector apiUrl=\"api/product-types\" formControlName=\"type_id\">\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('type_id')\">{{ getErrorMessage('type_id') }} </mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"d-flex gap-2\">\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('sku')\">\n <mat-label>SKU</mat-label>\n <input matInput placeholder=\"SKU\" formControlName=\"sku\" />\n <mat-error *ngIf=\"isFieldValid('sku')\">{{ getErrorMessage('sku') }} </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-50\">\n <mat-label>Category</mat-label>\n <app-searchable-selector apiUrl=\"api/product-categories\" formControlName=\"category_ids\"\n [multiple]=\"true\">\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('category_ids')\">\n {{ getErrorMessage('category_ids') }}\n </mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"d-flex gap-2\">\n <mat-form-field class=\"w-50 align-self-start\"\n *ngIf=\"isFormFieldShown('color') && formConfigurationUtilityService.getFieldEnabled('color_id')\">\n <mat-label>\n Color <sup *ngIf=\"formConfigurationUtilityService.getFieldRequired('color_id')\">*</sup>\n </mat-label>\n <app-searchable-selector apiUrl=\"api/attributes?type_code=color\"\n formControlName=\"color_id\"></app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('color_id')\">{{getErrorMessage('color_id')}}</mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('description')\">\n <mat-label>Description</mat-label>\n <textarea matInput placeholder=\"Description\" formControlName=\"description\"></textarea>\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"d-flex flex-column\" *ngIf=\"isFormSectionShown('inventory information')\">\n <h6>Inventory Information</h6>\n <div class=\"d-flex gap-2\">\n\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('product measure')\">\n <mat-label>Measure</mat-label>\n <app-searchable-selector apiUrl=\"api/product-measures\" formControlName=\"measure_id\">\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('measure_id')\">{{ getErrorMessage('measure_id') }} </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('reorder point')\">\n <mat-label>Reorder Point</mat-label>\n <input matInput placeholder=\"Reorder Point\" formControlName=\"reorder_point\" type=\"number\" />\n <mat-error *ngIf=\"isFieldValid('reorder_point')\">{{ getErrorMessage('reorder_point') }} </mat-error>\n </mat-form-field>\n </div>\n <div class=\"d-flex gap-2\">\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('initial quantity')\">\n <mat-label>Initial Quantity</mat-label>\n <input matInput placeholder=\"Initial Quantity\" formControlName=\"initial_quantity\" />\n <mat-error *ngIf=\"isFieldValid('initial_quantity')\">{{ getErrorMessage('initial_quantity') }}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('initial quantity date')\">\n <mat-label>Initial Quantity Date</mat-label>\n <input matInput [matDatepicker]=\"pickerInitialQuantityDate\" placeholder=\"Initial Quantity Date\"\n formControlName=\"initial_quantity_date\" />\n <mat-datepicker-toggle matSuffix [for]=\"pickerInitialQuantityDate\"></mat-datepicker-toggle>\n <mat-datepicker #pickerInitialQuantityDate></mat-datepicker>\n <mat-error *ngIf=\"isFieldValid('initial_quantity_date')\">{{ getErrorMessage('initial_quantity_date') }}\n </mat-error>\n </mat-form-field>\n </div>\n </div>\n <div class=\"d-flex flex-column\" *ngIf=\"isFormSectionShown('sales information')\">\n <h6>Sale Information</h6>\n <div class=\"d-flex gap-2\">\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('sales price')\">\n <mat-label>Selling Price</mat-label>\n <input matInput placeholder=\"Selling Price\" formControlName=\"sale_price\" required type=\"number\"\n step=\"any\" />\n <mat-error *ngIf=\"isFieldValid('sale_price')\">{{ getErrorMessage('sale_price') }} </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('condition types')\">\n <mat-label>Condition</mat-label>\n <app-searchable-selector apiUrl=\"api/condition-types\"\n formControlName=\"condition_type_id\"></app-searchable-selector>\n </mat-form-field>\n </div>\n <div class=\"d-flex gap-2\">\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('minimum price')\">\n <mat-label>Minimum Price</mat-label>\n <input matInput placeholder=\"Minimum Price\" formControlName=\"minimum_price\" required type=\"number\"\n step=\"any\" />\n <mat-error *ngIf=\"isFieldValid('minimum_price')\">{{ getErrorMessage('minimum_price') }} </mat-error>\n </mat-form-field>\n\n <mat-form-field class=\"w-50\" *ngIf=\"isFormFieldShown('maximum price')\">\n <mat-label>Maximum Price</mat-label>\n <input matInput placeholder=\"Maximum Price\" formControlName=\"maximum_price\" type=\"number\" step=\"any\" />\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"w-100 d-flex justify-content-between\">\n @if (!isUpdate) {\n <mat-checkbox [formControl]=\"isCreateAnother\">Create Another\n <span *ngIf=\"savedCount > 0\">({{ savedCount }} items saved)</span>\n </mat-checkbox>\n } @else {\n <span class='d-flex flex-grow'></span>\n }\n\n <div class=\"d-flex flex-row gap-3 align-items-center justify-content-end\">\n <button [disabled]=\"isWorking\" mat-button class=\"mt-2\" type=\"button\" (click)=\"location.back()\">\n Cancel\n </button>\n <button [disabled]=\"isWorking\" mat-raised-button color=\"primary\" class=\"mt-2\" type=\"submit\">Save</button>\n </div>\n </div>\n </div>\n </form>\n </mat-card-content>\n </mat-card>\n</div>\n} @else {\n<mat-card-content class=\"d-flex vh-100 justify-content-center align-items-center\">\n <mat-spinner></mat-spinner>\n</mat-card-content>\n}" }]
253
- }], ctorParameters: () => [{ type: i1.EntityFileService }, { type: i2.FormBuilder }, { type: i1.FormValidatorService }, { type: i3.ProductService }, { type: i4.ActivatedRoute }, { type: i1.ErrorHandlerService }, { type: i5.Location }, { type: i4.Router }, { type: i1.FormConfigurationFormService }], propDecorators: { displayedFormFields: [{
254
- type: Input
255
- }], displayedFormSections: [{
256
- type: Input
257
- }] } });
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludmVudG9yeS1jb21tb24vc3JjL2xpYi9pbnZlbnRvcnktY29tbW9uL3Byb2R1Y3QvcHJvZHVjdC1mb3JtL3Byb2R1Y3QtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9wcm9kdWN0L3Byb2R1Y3QtZm9ybS9wcm9kdWN0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBZSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFJTCwrQkFBK0IsRUFLL0IscUJBQXFCLEVBQ3RCLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBUzNCLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxxQkFBcUI7SUEwRG5EO0lBQ0E7SUFDVztJQUNBO0lBQ1g7SUFDQTtJQUNEO0lBQ0M7SUFDQTtJQWpFRCxtQkFBbUIsR0FBVTtRQUNwQyxNQUFNO1FBQ04sY0FBYztRQUNkLEtBQUs7UUFDTCxPQUFPO1FBQ1AsYUFBYTtRQUNiLGlCQUFpQjtRQUNqQixlQUFlO1FBQ2Ysa0JBQWtCO1FBQ2xCLHVCQUF1QjtRQUN2QixhQUFhO1FBQ2IsZUFBZTtRQUNmLGVBQWU7UUFDZixnQkFBZ0I7UUFDaEIsaUJBQWlCO0tBQ2xCLENBQUM7SUFFTyxxQkFBcUIsR0FBVTtRQUN0QyxtQkFBbUI7UUFDbkIsdUJBQXVCO1FBQ3ZCLG1CQUFtQjtRQUNuQixzQkFBc0I7S0FDdkIs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QUFDO1lBQ3pFLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzt3R0FuUFUsb0JBQW9COzRGQUFwQixvQkFBb0IsdUxDdEJqQyw0clNBaUxDOzs0RkQzSlksb0JBQW9CO2tCQUpoQyxTQUFTOytCQUNFLGtCQUFrQjtzVUFJbkIsbUJBQW1CO3NCQUEzQixLQUFLO2dCQWlCRyxxQkFBcUI7c0JBQTdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtcbiAgRXJyb3JIYW5kbGVyU2VydmljZSxcbiAgRm9ybVZhbGlkYXRvclNlcnZpY2UsXG4gIEZvcm1Db25maWd1cmF0aW9uRm9ybVNlcnZpY2UsXG4gIEZvcm1Db25maWd1cmF0aW9uVXRpbGl0eVNlcnZpY2UsXG4gIEZpbGVEcm9wcGVyQ29uZmlnLFxuICBWaWV3ZXJDb25maWcsXG4gIEh0dHBTZXJ2aWNlLFxuICBFbnRpdHlGaWxlU2VydmljZSxcbiAgVGVjaGxpZnlGb3JtQ29tcG9uZW50XG59IGZyb20gJ25neC10ZWNobGlmeS1jb3JlJztcbmltcG9ydCB7IFByb2R1Y3RTZXJ2aWNlIH0gZnJvbSAnLi4vcHJvZHVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZHVjdC1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtZm9ybS5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y3RGb3JtQ29tcG9uZW50IGV4dGVuZHMgVGVjaGxpZnlGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZGlzcGxheWVkRm9ybUZpZWxkczogYW55W10gPSBbXG4gICAgJ25hbWUnLFxuICAgICdwcm9kdWN0IHR5cGUnLFxuICAgICdza3UnLFxuICAgICdjb2xvcicsXG4gICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAncHJvZHVjdCBtZWFzdXJlJyxcbiAgICAncmVvcmRlciBwb2ludCcsXG4gICAgJ2luaXRpYWwgcXVhbnRpdHknLFxuICAgICdpbml0aWFsIHF1YW50aXR5IGRhdGUnLFxuICAgICdzYWxlcyBwcmljZScsXG4gICAgJ21pbmltdW0gcHJpY2UnLFxuICAgICdtYXhpbXVtIHByaWNlJyxcbiAgICAnaW5jb21lIGFjY291bnQnLFxuICAgICdleHBlbnNlIGFjY291bnQnLFxuICBdO1xuXG4gIEBJbnB1dCgpIGRpc3BsYXllZEZvcm1TZWN0aW9uczogYW55W10gPSBbXG4gICAgJ2Jhc2ljIGluZm9ybWF0aW9uJyxcbiAgICAnaW52ZW50b3J5IGluZm9ybWF0aW9uJyxcbiAgICAnc2FsZXMgaW5mb3JtYXRpb24nLFxuICAgICdhY2NvdW50cyBpbmZvcm1hdGlvbicsXG4gIF07XG5cbiAgcHJvZHVjdCA9IHNpZ25hbDxhbnk+KG51bGwpO1xuICBpc0Zvcm1TZXR1cCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgb3ZlcnJpZGUgZXJyb3JNZXNzYWdlczogYW55ID0ge1xuICAgIHR5cGVfaWQ6IHtcbiAgICAgIHJlcXVpcmVkOiAnUGxlYXNlIEVudGVyIFR5cGUnLFxuICAgIH0sXG4gICAgbmFtZToge1xuICAgICAgcmVxdWlyZWQ6ICdQbGVhc2UgRW50ZXIgTmFtZScsXG4gICAgfSxcbiAgICBzYWxlX3ByaWNlOiB7XG4gICAgICByZXF1aXJlZDogJ1BsZWFzZSBFbnRlciBTYWxlcyBQcmljZScsXG4gICAgfSxcbiAgICBtaW5pbXVtX3ByaWNlOiB7XG4gICAgICByZXF1aXJlZDogJ1BsZWFzZSBFbnRlciBNaW5pbXVtIFByaWNlJyxcbiAgICB9LFxuICAgIHJlb3JkZXJfcG9pbnQ6IHtcbiAgICAgIHJlcXVpcmVkOiAnUGxlYXNlIEVudGVyIFJlb3JkZXIgUG9pbnQnLFxuICAgIH0sXG4gICAgY29sb3JfaWQ6IHtcbiAgICAgIHJlcXVpcmVkOiAnUGxlYXNlIFNlbGVjdCBDb2xvcicsXG4gICAgfSxcbiAgfTtcblxuICBpc0NyZWF0ZUFub3RoZXIgPSBuZXcgRm9ybUNvbnRyb2woZmFsc2UpO1xuICBzYXZlZENvdW50ID0gMDtcbiAgcHVibGljIGZvcm1Db25maWd1cmF0aW9uVXRpbGl0eVNlcnZpY2U6IEZvcm1Db25maWd1cmF0aW9uVXRpbGl0eVNlcnZpY2U7XG5cbiAgZmlsZUNvbmZpZyE6IEZpbGVEcm9wcGVyQ29uZmlnO1xuICB2aWV3ZXJDb25maWchOiBWaWV3ZXJDb25maWc7XG4gIGZpbGVMaXN0OiBhbnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmlsZVNlcnZpY2U6IEVudGl0eUZpbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBmb3JtVmFsaWRhdG9yU2VydmljZTogRm9ybVZhbGlkYXRvclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHNlcnZpY2U6IFByb2R1Y3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGZvcm1Db25maWdTZXJ2aWNlOiBGb3JtQ29uZmlndXJhdGlvbkZvcm1TZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGZvcm1WYWxpZGF0b3JTZXJ2aWNlKTtcblxuICAgIHRoaXMuZm9ybUNvbmZpZ3VyYXRpb25VdGlsaXR5U2VydmljZSA9IG5ldyBGb3JtQ29uZmlndXJhdGlvblV0aWxpdHlTZXJ2aWNlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZpbGVDb25maWcgPSB7XG4gICAgICBmaWxlSWQ6ICdwcm9kdWN0SW1hZ2VGaWxlJyxcbiAgICAgIGNvbnRhaW5lcklkOiAncHJvZHVjdEltYWdlRmlsZUNvbnRhaW5lcicsXG4gICAgICBzdHlsZXM6IHtcbiAgICAgICAgaGVpZ2h0OiAnMjAwcHgnXG4gICAgICB9LFxuICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgYWNjZXB0RmlsZTogJ2ltYWdlLyonLFxuICAgICAgbWF4U2l6ZTogMTAsXG4gICAgICBhY2NlcHRGaWxlVGV4dDogJ1BORywgSlBFRywgYW5kIEpQRyBvbmx5J1xuICAgIH07XG5cbiAgICB0aGlzLnZpZXdlckNvbmZpZyA9IHtcbiAgICAgIHZpZXdlclN0eWxlOiB7XG4gICAgICAgIGhlaWdodDogJzUwcHgnLFxuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLmZvcm1Db25maWd1cmF0aW9uVXRpbGl0eVNlcnZpY2VcbiAgICAgIC5pbml0aWFsaXplKHRoaXMuZm9ybUNvbmZpZ1NlcnZpY2UsICdwcm9kdWN0JywpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgIGlkOiBbJyddLFxuICAgICAgICAgICAgdHlwZV9pZDogWzEsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXSxcbiAgICAgICAgICAgIGNvbG9yX2lkOiBbJycsIHRoaXMuZm9ybUNvbmZpZ3VyYXRpb25VdGlsaXR5U2VydmljZS5nZXRGaWVsZFJlcXVpcmVkKCdjb2xvcl9pZCcpID8gVmFsaWRhdG9ycy5yZXF1aXJlZCA6IG51bGxdLFxuICAgICAgICAgICAgc2t1OiBbJyddLFxuICAgICAgICAgICAgbmFtZTogWycnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKV0sXG4gICAgICAgICAgICBpbml0aWFsX3F1YW50aXR5OiBbMF0sXG4gICAgICAgICAgICBpbml0aWFsX3F1YW50aXR5X2RhdGU6IFttb21lbnQoKS5mb3JtYXQoKV0sXG4gICAgICAgICAgICByZW9yZGVyX3BvaW50OiBbMTAsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBbJyddLFxuICAgICAgICAgICAgc2FsZV9wcmljZTogWzAsIFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXSxcbiAgICAgICAgICAgIGluY29tZV9hY2NvdW50X2lkOiBbJyddLFxuICAgICAgICAgICAgZXhwZW5zZV9hY2NvdW50X2lkOiBbJyddLFxuICAgICAgICAgICAgbWVhc3VyZV9pZDogWzFdLFxuICAgICAgICAgICAgbWluaW11bV9wcmljZTogWycnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKV0sXG4gICAgICAgICAgICBtYXhpbXVtX3ByaWNlOiBbJyddLFxuICAgICAgICAgICAgY29uZGl0aW9uX3R5cGVfaWQ6IFsxXSxcbiAgICAgICAgICAgIGN1cnJlbnRfcXVhbnRpdHk6IFtdLFxuICAgICAgICAgICAgY2F0ZWdvcnlfaWRzOiBbJyddLFxuICAgICAgICAgICAgaW1hZ2VfZmlsZTogW251bGxdLFxuICAgICAgICAgICAgaW1hZ2VfZmlsZV91cmw6IFtudWxsXSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICB9LCBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNGb3JtU2V0dXAuc2V0KHRydWUpO1xuICAgICAgICAgIHRoaXMubG9hZFByb2R1Y3QoKTtcbiAgICAgICAgfVxuICAgICAgfSlcblxuXG4gIH1cblxuICBsb2FkUHJvZHVjdCgpIHtcbiAgICBsZXQgaWQgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmFtc1snaWQnXTtcbiAgICBpZiAoIWlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNXb3JraW5nID0gdHJ1ZTtcblxuICAgIHRoaXMuc2VydmljZT8uc2hvdyhpZCwge1xuICAgICAgd2l0aDogJ21lYXN1cmUsY2F0ZWdvcmllcycsXG4gICAgfSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucHJvZHVjdC5zZXQocmVzcG9uc2U/Lml0ZW0pO1xuICAgICAgICB0aGlzLmlzV29ya2luZyA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzV29ya2luZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICB9LFxuICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgdGhpcy5wYXRjaFByb2R1Y3QoKTtcbiAgICAgICAgdGhpcy5pc1dvcmtpbmcgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcGF0Y2hQcm9kdWN0KCkge1xuICAgIHRoaXMuaXNVcGRhdGUgPSB0cnVlO1xuICAgIGxldCBkYXRhID0geyAuLi50aGlzLnByb2R1Y3QoKSB9O1xuXG4gICAgaWYgKHRoaXMucHJvZHVjdCgpPy5jYXRlZ29yaWVzPy5sZW5ndGggPiAwKSB7XG4gICAgICAoZGF0YSkuY2F0ZWdvcnlfaWRzID0gKHRoaXMucHJvZHVjdCgpLmNhdGVnb3JpZXMgYXMgW10pLm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gY2F0ZWdvcnk/LmlkKTtcbiAgICB9XG4gICAgaWYgKGRhdGE/LmluaXRpYWxfcXVhbnRpdHlfZGF0ZSkge1xuICAgICAgZGF0YS5pbml0aWFsX3F1YW50aXR5X2RhdGUgPSBtb21lbnQoZGF0YS5pbml0aWFsX3F1YW50aXR5X2RhdGUpLnRvSVNPU3RyaW5nKCk7XG4gICAgfVxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKGRhdGEpO1xuICB9XG5cbiAgYXN5bmMgc2F2ZSgpIHtcbiAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkQWxlcnQoJ1BsZWFzZSBGaWxsIEFsbCBSZXF1aXJlZCBGaWVsZHMnLCAnd2FybicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgcHJvZHVjdCA9IHRoaXMuZm9ybS52YWx1ZTtcbiAgICBpZiAocHJvZHVjdC5tYXhpbXVtX3ByaWNlIDw9IDAgfHwgIXByb2R1Y3QubWF4aW11bV9wcmljZSkge1xuICAgICAgcHJvZHVjdC5tYXhpbXVtX3ByaWNlID0gcHJvZHVjdC5taW5pbXVtX3ByaWNlO1xuICAgIH1cblxuICAgIGlmIChwcm9kdWN0Py5pbml0aWFsX3F1YW50aXR5X2RhdGUpIHtcbiAgICAgIHByb2R1Y3QuaW5pdGlhbF9xdWFudGl0eV9kYXRlID0gbW9tZW50KHByb2R1Y3QuaW5pdGlhbF9xdWFudGl0eV9kYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbiAgICB9XG4gICAgdGhpcy5pc1dvcmtpbmcgPSB0cnVlO1xuXG4gICAgbGV0IHByb21pc2UgPSBwcm9kdWN0LmlkXG4gICAgICA/IHRoaXMuc2VydmljZS51cGRhdGUocHJvZHVjdClcbiAgICAgIDogdGhpcy5zZXJ2aWNlLnN0b3JlKHByb2R1Y3QpO1xuXG4gICAgcHJvbWlzZS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICB0aGlzLmlzV29ya2luZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydCgnUHJvZHVjdCBzYXZlZCBzdWNjZXNzZnVsbHkhJywgJ3N1Y2Nlc3MnKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4gKHRoaXMuaXNXb3JraW5nID0gZmFsc2UpLFxuICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNDcmVhdGVBbm90aGVyLnZhbHVlICYmICF0aGlzLmlzVXBkYXRlKSB7XG4gICAgICAgICAgdGhpcy5zYXZlZENvdW50Kys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvaW52ZW50b3J5L3Byb2R1Y3RzJ10pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGRpc3BsYXllZCBGb3JtIEZpZWxkcyBhcnJheSBmb3IgZm9ybSBmaWVsZCBhbmQgcmV0dXJucyBib29sZWFuIHJlc3VsdFxuICAgKi9cbiAgaXNGb3JtRmllbGRTaG93bihmaWVsZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXllZEZvcm1GaWVsZHMubGVuZ3RoID4gMCAmJiB0aGlzLmRpc3BsYXllZEZvcm1GaWVsZHMuaW5jbHVkZXMoZmllbGROYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgZGlzcGxheWVkIEZvcm0gU2VjdGlvbiBhcnJheSBmb3IgZm9ybSBzZWN0aW9uIGFuZCByZXR1cm5zIGJvb2xlYW4gcmVzdWx0XG4gICAqL1xuICBpc0Zvcm1TZWN0aW9uU2hvd24oc2VjdGlvbk5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXllZEZvcm1TZWN0aW9ucy5sZW5ndGggPiAwICYmIHRoaXMuZGlzcGxheWVkRm9ybVNlY3Rpb25zLmluY2x1ZGVzKHNlY3Rpb25OYW1lKTtcbiAgfVxuXG4gIGFzeW5jIGZpbGVDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZpbGVMaXN0ID0gZXZlbnQ7XG5cbiAgICBpZiAodGhpcy5maWxlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCByZXN1bHQ6IGFueSA9IGF3YWl0IHRoaXMuZmlsZVNlcnZpY2UudXBsb2FkRW50aXR5RmlsZSh0aGlzLmZpbGVMaXN0WzBdLCB7XG4gICAgICAgIGVudGl0eV9pZDogdGhpcy5wcm9kdWN0KCk/LmlkLFxuICAgICAgICBlbnRpdHlfdHlwZTogJ3Byb2R1Y3QnLFxuICAgICAgICBzdWJfcGF0aDogYCR7dGhpcy5wcm9kdWN0KCk/LmlkfWBcbiAgICAgIH0pO1xuICAgICAgdGhpcy5mb3JtLmdldCgnaW1hZ2VfZmlsZScpPy5zZXRWYWx1ZShyZXN1bHQuaXRlbS5maWxlKTtcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2ltYWdlX2ZpbGVfdXJsJyk/LnNldFZhbHVlKHJlc3VsdC5pdGVtLnVybCk7XG4gICAgICB0aGlzLmZpbGVMaXN0ID0gW107XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVtb3ZlRmlsZSgpIHtcbiAgICBpZiAodGhpcy5mb3JtLnZhbHVlLmltYWdlX2ZpbGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICBpbWFnZV9maWxlOiAnJyxcbiAgICAgICAgICBpbWFnZV9maWxlX3VybDogJydcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydCgnVW5hYmxlIHRvIHJlbW92ZSBmaWxlLCB0cnkgbGF0ZXInLCAnd2FybicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiQGlmIChpc0Zvcm1TZXR1cCgpKSB7XG48ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yXCI+XG4gIDxtYXQtY2FyZCBjbGFzcz0nY29udGFpbmVyJz5cbiAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgPGgzIGNsYXNzPVwidGV4dC1jZW50ZXIgbS0wXCI+UHJvZHVjdCBGb3JtPC9oMz5cbiAgICAgICAgPGFwcC1mb3JtLWNvbmZpZ3VyYXRpb24tZm9yLWZvcm0gZm9ybUNvZGU9J3Byb2R1Y3QnPjwvYXBwLWZvcm0tY29uZmlndXJhdGlvbi1mb3ItZm9ybT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgPC9tYXQtY2FyZD5cbiAgPG1hdC1jYXJkIGNsYXNzPSdjb250YWluZXInPlxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKHN1Ym1pdCk9XCJzYXZlKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtblwiPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmaWxlVXBsb2FkPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWZpbGUtZHJvcHBlciAoZmlsZUNoYW5nZWQpPVwiZmlsZUNoYW5nZWQoJGV2ZW50KVwiIFtjb25maWddPVwiZmlsZUNvbmZpZ1wiIFtmaWxlQXJyYXldPVwiZmlsZUxpc3RcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1maWxlLWRyb3BwZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmb3JtLmdldCgnaW1hZ2VfZmlsZScpPy52YWx1ZTsgZWxzZSBmaWxlVXBsb2FkO1wiIHN0eWxlPSd3aWR0aDogMjAwcHg7J1xuICAgICAgICAgICAgICBjbGFzcz0nanVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXInPlxuICAgICAgICAgICAgICA8YXBwLWRvY3VtZW50LXZpZXdlciAocmVtb3ZlKT1cInJlbW92ZUZpbGUoKVwiIFtjb25maWddPVwidmlld2VyQ29uZmlnXCJcbiAgICAgICAgICAgICAgICBbZmlsZVVybF09XCJmb3JtLmdldCgnaW1hZ2VfZmlsZV91cmwnKT8udmFsdWVcIiBbZmlsZV09XCJmb3JtLmdldCgnaW1hZ2VfZmlsZScpPy52YWx1ZVwiPlxuICAgICAgICAgICAgICA8L2FwcC1kb2N1bWVudC12aWV3ZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gbXQtMlwiICpuZ0lmPVwiaXNGb3JtU2VjdGlvblNob3duKCdiYXNpYyBpbmZvcm1hdGlvbicpXCI+XG4gICAgICAgICAgICA8aDY+QmFzaWMgSW5mb3JtYXRpb248L2g2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxuXG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctNTBcIiAqbmdJZj1cImlzRm9ybUZpZWxkU2hvd24oJ25hbWUnKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+TmFtZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cIk5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgcmVxdWlyZWQgLz5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCduYW1lJylcIj57eyBnZXRFcnJvck1lc3NhZ2UoJ25hbWUnKSB9fSA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTUwXCIgKm5nSWY9XCJpc0Zvcm1GaWVsZFNob3duKCdwcm9kdWN0IHR5cGUnKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+UHJvZHVjdCBUeXBlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGFwcC1zZWFyY2hhYmxlLXNlbGVjdG9yIGFwaVVybD1cImFwaS9wcm9kdWN0LXR5cGVzXCIgZm9ybUNvbnRyb2xOYW1lPVwidHlwZV9pZFwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRmllbGRWYWxpZCgndHlwZV9pZCcpXCI+e3sgZ2V0RXJyb3JNZXNzYWdlKCd0eXBlX2lkJykgfX0gPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTUwXCIgKm5nSWY9XCJpc0Zvcm1GaWVsZFNob3duKCdza3UnKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U0tVPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwiU0tVXCIgZm9ybUNvbnRyb2xOYW1lPVwic2t1XCIgLz5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdza3UnKVwiPnt7IGdldEVycm9yTWVzc2FnZSgnc2t1JykgfX0gPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy01MFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+Q2F0ZWdvcnk8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8YXBwLXNlYXJjaGFibGUtc2VsZWN0b3IgYXBpVXJsPVwiYXBpL3Byb2R1Y3QtY2F0ZWdvcmllc1wiIGZvcm1Db250cm9sTmFtZT1cImNhdGVnb3J5X2lkc1wiXG4gICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLXNlYXJjaGFibGUtc2VsZWN0b3I+XG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRmllbGRWYWxpZCgnY2F0ZWdvcnlfaWRzJylcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9yTWVzc2FnZSgnY2F0ZWdvcnlfaWRzJykgfX1cbiAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy01MCBhbGlnbi1zZWxmLXN0YXJ0XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJpc0Zvcm1GaWVsZFNob3duKCdjb2xvcicpICYmIGZvcm1Db25maWd1cmF0aW9uVXRpbGl0eVNlcnZpY2UuZ2V0RmllbGRFbmFibGVkKCdjb2xvcl9pZCcpXCI+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgQ29sb3IgPHN1cCAqbmdJZj1cImZvcm1Db25maWd1cmF0aW9uVXRpbGl0eVNlcnZpY2UuZ2V0RmllbGRSZXF1aXJlZCgnY29sb3JfaWQnKVwiPio8L3N1cD5cbiAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxhcHAtc2VhcmNoYWJsZS1zZWxlY3RvciBhcGlVcmw9XCJhcGkvYXR0cmlidXRlcz90eXBlX2NvZGU9Y29sb3JcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbG9yX2lkXCI+PC9hcHAtc2VhcmNoYWJsZS1zZWxlY3Rvcj5cbiAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRmllbGRWYWxpZCgnY29sb3JfaWQnKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKCdjb2xvcl9pZCcpfX08L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy01MFwiICpuZ0lmPVwiaXNGb3JtRmllbGRTaG93bignZGVzY3JpcHRpb24nKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+RGVzY3JpcHRpb248L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJEZXNjcmlwdGlvblwiIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtblwiICpuZ0lmPVwiaXNGb3JtU2VjdGlvblNob3duKCdpbnZlbnRvcnkgaW5mb3JtYXRpb24nKVwiPlxuICAgICAgICAgICAgPGg2PkludmVudG9yeSBJbmZvcm1hdGlvbjwvaDY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XG5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy01MFwiICpuZ0lmPVwiaXNGb3JtRmllbGRTaG93bigncHJvZHVjdCBtZWFzdXJlJylcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPk1lYXN1cmU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8YXBwLXNlYXJjaGFibGUtc2VsZWN0b3IgYXBpVXJsPVwiYXBpL3Byb2R1Y3QtbWVhc3VyZXNcIiBmb3JtQ29udHJvbE5hbWU9XCJtZWFzdXJlX2lkXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtc2VhcmNoYWJsZS1zZWxlY3Rvcj5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdtZWFzdXJlX2lkJylcIj57eyBnZXRFcnJvck1lc3NhZ2UoJ21lYXN1cmVfaWQnKSB9fSA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTUwXCIgKm5nSWY9XCJpc0Zvcm1GaWVsZFNob3duKCdyZW9yZGVyIHBvaW50JylcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlJlb3JkZXIgUG9pbnQ8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJSZW9yZGVyIFBvaW50XCIgZm9ybUNvbnRyb2xOYW1lPVwicmVvcmRlcl9wb2ludFwiIHR5cGU9XCJudW1iZXJcIiAvPlxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJpc0ZpZWxkVmFsaWQoJ3Jlb3JkZXJfcG9pbnQnKVwiPnt7IGdldEVycm9yTWVzc2FnZSgncmVvcmRlcl9wb2ludCcpIH19IDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctNTBcIiAqbmdJZj1cImlzRm9ybUZpZWxkU2hvd24oJ2luaXRpYWwgcXVhbnRpdHknKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+SW5pdGlhbCBRdWFudGl0eTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cIkluaXRpYWwgUXVhbnRpdHlcIiBmb3JtQ29udHJvbE5hbWU9XCJpbml0aWFsX3F1YW50aXR5XCIgLz5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdpbml0aWFsX3F1YW50aXR5JylcIj57eyBnZXRFcnJvck1lc3NhZ2UoJ2luaXRpYWxfcXVhbnRpdHknKSB9fVxuICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctNTBcIiAqbmdJZj1cImlzRm9ybUZpZWxkU2hvd24oJ2luaXRpYWwgcXVhbnRpdHkgZGF0ZScpXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Jbml0aWFsIFF1YW50aXR5IERhdGU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW21hdERhdGVwaWNrZXJdPVwicGlja2VySW5pdGlhbFF1YW50aXR5RGF0ZVwiIHBsYWNlaG9sZGVyPVwiSW5pdGlhbCBRdWFudGl0eSBEYXRlXCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImluaXRpYWxfcXVhbnRpdHlfZGF0ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwaWNrZXJJbml0aWFsUXVhbnRpdHlEYXRlXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNwaWNrZXJJbml0aWFsUXVhbnRpdHlEYXRlPjwvbWF0LWRhdGVwaWNrZXI+XG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRmllbGRWYWxpZCgnaW5pdGlhbF9xdWFudGl0eV9kYXRlJylcIj57eyBnZXRFcnJvck1lc3NhZ2UoJ2luaXRpYWxfcXVhbnRpdHlfZGF0ZScpIH19XG4gICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uXCIgKm5nSWY9XCJpc0Zvcm1TZWN0aW9uU2hvd24oJ3NhbGVzIGluZm9ybWF0aW9uJylcIj5cbiAgICAgICAgICAgIDxoNj5TYWxlIEluZm9ybWF0aW9uPC9oNj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy01MFwiICpuZ0lmPVwiaXNGb3JtRmllbGRTaG93bignc2FsZXMgcHJpY2UnKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U2VsbGluZyBQcmljZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cIlNlbGxpbmcgUHJpY2VcIiBmb3JtQ29udHJvbE5hbWU9XCJzYWxlX3ByaWNlXCIgcmVxdWlyZWQgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICBzdGVwPVwiYW55XCIgLz5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdzYWxlX3ByaWNlJylcIj57eyBnZXRFcnJvck1lc3NhZ2UoJ3NhbGVfcHJpY2UnKSB9fSA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTUwXCIgKm5nSWY9XCJpc0Zvcm1GaWVsZFNob3duKCdjb25kaXRpb24gdHlwZXMnKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+Q29uZGl0aW9uPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGFwcC1zZWFyY2hhYmxlLXNlbGVjdG9yIGFwaVVybD1cImFwaS9jb25kaXRpb24tdHlwZXNcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29uZGl0aW9uX3R5cGVfaWRcIj48L2FwcC1zZWFyY2hhYmxlLXNlbGVjdG9yPlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctNTBcIiAqbmdJZj1cImlzRm9ybUZpZWxkU2hvd24oJ21pbmltdW0gcHJpY2UnKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+TWluaW11bSBQcmljZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cIk1pbmltdW0gUHJpY2VcIiBmb3JtQ29udHJvbE5hbWU9XCJtaW5pbXVtX3ByaWNlXCIgcmVxdWlyZWQgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICBzdGVwPVwiYW55XCIgLz5cbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiaXNGaWVsZFZhbGlkKCdtaW5pbXVtX3ByaWNlJylcIj57eyBnZXRFcnJvck1lc3NhZ2UoJ21pbmltdW1fcHJpY2UnKSB9fSA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTUwXCIgKm5nSWY9XCJpc0Zvcm1GaWVsZFNob3duKCdtYXhpbXVtIHByaWNlJylcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPk1heGltdW0gUHJpY2U8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJNYXhpbXVtIFByaWNlXCIgZm9ybUNvbnRyb2xOYW1lPVwibWF4aW11bV9wcmljZVwiIHR5cGU9XCJudW1iZXJcIiBzdGVwPVwiYW55XCIgLz5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICAgICAgQGlmICghaXNVcGRhdGUpIHtcbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggW2Zvcm1Db250cm9sXT1cImlzQ3JlYXRlQW5vdGhlclwiPkNyZWF0ZSBBbm90aGVyXG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2F2ZWRDb3VudCA+IDBcIj4oe3sgc2F2ZWRDb3VudCB9fSBpdGVtcyBzYXZlZCk8L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9J2QtZmxleCBmbGV4LWdyb3cnPjwvc3Bhbj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBnYXAtMyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJpc1dvcmtpbmdcIiBtYXQtYnV0dG9uIGNsYXNzPVwibXQtMlwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibG9jYXRpb24uYmFjaygpXCI+XG4gICAgICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJpc1dvcmtpbmdcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cIm10LTJcIiB0eXBlPVwic3VibWl0XCI+U2F2ZTwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb3JtPlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgPC9tYXQtY2FyZD5cbjwvZGl2PlxufSBAZWxzZSB7XG48bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImQtZmxleCB2aC0xMDAganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgPG1hdC1zcGlubmVyPjwvbWF0LXNwaW5uZXI+XG48L21hdC1jYXJkLWNvbnRlbnQ+XG59Il19
@@ -1,15 +0,0 @@
1
- import { Component, input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/router";
4
- import * as i2 from "ngx-techlify-core";
5
- export class ProductFormButtonComponent {
6
- product = input(undefined);
7
- constructor() { }
8
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProductFormButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ProductFormButtonComponent, selector: "app-product-form-button", inputs: { product: { classPropertyName: "product", publicName: "product", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (product()) {\n<app-techlify-icon role='button' name='edit' [routerLink]=\"['/inventory/products/form', product().id]\"></app-techlify-icon>\n} @else {\n<app-techlify-icon role='button' name='add' routerLink=\"form\"></app-techlify-icon>\n}", styles: [""], dependencies: [{ kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i2.TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }], preserveWhitespaces: true });
10
- }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProductFormButtonComponent, decorators: [{
12
- type: Component,
13
- args: [{ selector: 'app-product-form-button', template: "@if (product()) {\n<app-techlify-icon role='button' name='edit' [routerLink]=\"['/inventory/products/form', product().id]\"></app-techlify-icon>\n} @else {\n<app-techlify-icon role='button' name='add' routerLink=\"form\"></app-techlify-icon>\n}" }]
14
- }], ctorParameters: () => [] });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1mb3JtLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9wcm9kdWN0L3Byb2R1Y3QtZm9ybS1idXR0b24vcHJvZHVjdC1mb3JtLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9wcm9kdWN0L3Byb2R1Y3QtZm9ybS1idXR0b24vcHJvZHVjdC1mb3JtLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQU9qRCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLE9BQU8sR0FBRyxLQUFLLENBQWtCLFNBQVMsQ0FBQyxDQUFDO0lBRTVDLGdCQUFnQixDQUFDO3dHQUhOLDBCQUEwQjs0RkFBMUIsMEJBQTBCLHlNQ1B2QyxzUEFJQzs7NEZER1ksMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXByb2R1Y3QtZm9ybS1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZHVjdC1mb3JtLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Byb2R1Y3QtZm9ybS1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdEZvcm1CdXR0b25Db21wb25lbnQge1xuICBwcm9kdWN0ID0gaW5wdXQ8YW55IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG59XG4iLCJAaWYgKHByb2R1Y3QoKSkge1xuPGFwcC10ZWNobGlmeS1pY29uIHJvbGU9J2J1dHRvbicgbmFtZT0nZWRpdCcgW3JvdXRlckxpbmtdPVwiWycvaW52ZW50b3J5L3Byb2R1Y3RzL2Zvcm0nLCBwcm9kdWN0KCkuaWRdXCI+PC9hcHAtdGVjaGxpZnktaWNvbj5cbn0gQGVsc2Uge1xuPGFwcC10ZWNobGlmeS1pY29uIHJvbGU9J2J1dHRvbicgbmFtZT0nYWRkJyByb3V0ZXJMaW5rPVwiZm9ybVwiPjwvYXBwLXRlY2hsaWZ5LWljb24+XG59Il19
@@ -1,17 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import TechlifyFormService from '../services/techlify-form-service';
3
- import * as i0 from "@angular/core";
4
- export class ProductFormService extends TechlifyFormService {
5
- constructor() {
6
- super();
7
- }
8
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProductFormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
9
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProductFormService, providedIn: 'root' });
10
- }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProductFormService, decorators: [{
12
- type: Injectable,
13
- args: [{
14
- providedIn: 'root',
15
- }]
16
- }], ctorParameters: () => [] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1mb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9wcm9kdWN0L3Byb2R1Y3QtZm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxtQkFBbUIsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFLcEUsTUFBTSxPQUFPLGtCQUFtQixTQUFRLG1CQUFtQjtJQUN6RDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQzt3R0FIVSxrQkFBa0I7NEdBQWxCLGtCQUFrQixjQUZqQixNQUFNOzs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IFRlY2hsaWZ5Rm9ybVNlcnZpY2UgZnJvbSAnLi4vc2VydmljZXMvdGVjaGxpZnktZm9ybS1zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y3RGb3JtU2VydmljZSBleHRlbmRzIFRlY2hsaWZ5Rm9ybVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG59XG4iXX0=
@@ -1,66 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "ngx-techlify-core";
4
- export class ProductImportPageComponent {
5
- importConfig = {
6
- apiUrl: 'api/products-import',
7
- title: 'Products',
8
- importType: 'product',
9
- properties: [
10
- {
11
- label: 'Name',
12
- value: 'name',
13
- type: 'text',
14
- },
15
- {
16
- label: 'SKU',
17
- value: 'sku',
18
- type: 'text',
19
- },
20
- {
21
- label: 'Initial Quantity',
22
- value: 'initial_quantity',
23
- type: 'number',
24
- },
25
- {
26
- label: 'Initial Quantity Date',
27
- value: 'initial_quantity_date',
28
- type: 'date',
29
- },
30
- {
31
- label: 'Reorder Point',
32
- value: 'reorder_point',
33
- type: 'number',
34
- },
35
- {
36
- label: 'Measure',
37
- value: 'measure',
38
- type: 'text',
39
- },
40
- {
41
- label: 'Categories',
42
- value: 'categories',
43
- type: 'text',
44
- },
45
- ],
46
- sampleFile: {
47
- name: 'Products Import',
48
- path: 'assets/product/product-import-sample.csv',
49
- },
50
- importHistory: {
51
- isEnabled: true,
52
- type: 'product',
53
- apiUrl: 'api/import-histories',
54
- },
55
- viewRouterLink: '/inventory/products/',
56
- };
57
- constructor() { }
58
- ngOnInit() { }
59
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProductImportPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
60
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ProductImportPageComponent, selector: "app-product-import-page", ngImport: i0, template: "<app-import-csv [config]=\"importConfig\"></app-import-csv>\n", styles: [""], dependencies: [{ kind: "component", type: i1.ImportCsvComponent, selector: "app-import-csv", inputs: ["config"] }], preserveWhitespaces: true });
61
- }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProductImportPageComponent, decorators: [{
63
- type: Component,
64
- args: [{ selector: 'app-product-import-page', template: "<app-import-csv [config]=\"importConfig\"></app-import-csv>\n" }]
65
- }], ctorParameters: () => [] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1pbXBvcnQtcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9wcm9kdWN0L3Byb2R1Y3QtaW1wb3J0LXBhZ2UvcHJvZHVjdC1pbXBvcnQtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZlbnRvcnktY29tbW9uL3NyYy9saWIvaW52ZW50b3J5LWNvbW1vbi9wcm9kdWN0L3Byb2R1Y3QtaW1wb3J0LXBhZ2UvcHJvZHVjdC1pbXBvcnQtcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7QUFRbEQsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUFZLEdBQW9CO1FBQzlCLE1BQU0sRUFBRSxxQkFBcUI7UUFDN0IsS0FBSyxFQUFFLFVBQVU7UUFDakIsVUFBVSxFQUFFLFNBQVM7UUFDckIsVUFBVSxFQUFFO1lBQ1Y7Z0JBQ0UsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsSUFBSSxFQUFFLE1BQU07YUFDYjtZQUNEO2dCQUNFLEtBQUssRUFBRSxLQUFLO2dCQUNaLEtBQUssRUFBRSxLQUFLO2dCQUNaLElBQUksRUFBRSxNQUFNO2FBQ2I7WUFDRDtnQkFDRSxLQUFLLEVBQUUsa0JBQWtCO2dCQUN6QixLQUFLLEVBQUUsa0JBQWtCO2dCQUN6QixJQUFJLEVBQUUsUUFBUTthQUNmO1lBQ0Q7Z0JBQ0UsS0FBSyxFQUFFLHVCQUF1QjtnQkFDOUIsS0FBSyxFQUFFLHVCQUF1QjtnQkFDOUIsSUFBSSxFQUFFLE1BQU07YUFDYjtZQUNEO2dCQUNFLEtBQUssRUFBRSxlQUFlO2dCQUN0QixLQUFLLEVBQUUsZUFBZTtnQkFDdEIsSUFBSSxFQUFFLFFBQVE7YUFDZjtZQUNEO2dCQUNFLEtBQUssRUFBRSxTQUFTO2dCQUNoQixLQUFLLEVBQUUsU0FBUztnQkFDaEIsSUFBSSxFQUFFLE1BQU07YUFDYjtZQUNEO2dCQUNFLEtBQUssRUFBRSxZQUFZO2dCQUNuQixLQUFLLEVBQUUsWUFBWTtnQkFDbkIsSUFBSSxFQUFFLE1BQU07YUFDYjtTQUNGO1FBQ0QsVUFBVSxFQUFFO1lBQ1YsSUFBSSxFQUFFLGlCQUFpQjtZQUN2QixJQUFJLEVBQUUsMENBQTBDO1NBQ2pEO1FBQ0QsYUFBYSxFQUFFO1lBQ2IsU0FBUyxFQUFFLElBQUk7WUFDZixJQUFJLEVBQUUsU0FBUztZQUNmLE1BQU0sRUFBRSxzQkFBc0I7U0FDL0I7UUFDRCxjQUFjLEVBQUUsc0JBQXNCO0tBQ3ZDLENBQUM7SUFFRixnQkFBZSxDQUFDO0lBRWhCLFFBQVEsS0FBVSxDQUFDO3dHQXhEUiwwQkFBMEI7NEZBQTFCLDBCQUEwQiwrRENSdkMsK0RBQ0E7OzRGRE9hLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW1wb3J0Q3N2Q29uZmlnIH0gZnJvbSAnbmd4LXRlY2hsaWZ5LWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZHVjdC1pbXBvcnQtcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LWltcG9ydC1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZHVjdC1pbXBvcnQtcGFnZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0SW1wb3J0UGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGltcG9ydENvbmZpZzogSW1wb3J0Q3N2Q29uZmlnID0ge1xuICAgIGFwaVVybDogJ2FwaS9wcm9kdWN0cy1pbXBvcnQnLFxuICAgIHRpdGxlOiAnUHJvZHVjdHMnLFxuICAgIGltcG9ydFR5cGU6ICdwcm9kdWN0JyxcbiAgICBwcm9wZXJ0aWVzOiBbXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAnTmFtZScsXG4gICAgICAgIHZhbHVlOiAnbmFtZScsXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAnU0tVJyxcbiAgICAgICAgdmFsdWU6ICdza3UnLFxuICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsYWJlbDogJ0luaXRpYWwgUXVhbnRpdHknLFxuICAgICAgICB2YWx1ZTogJ2luaXRpYWxfcXVhbnRpdHknLFxuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAnSW5pdGlhbCBRdWFudGl0eSBEYXRlJyxcbiAgICAgICAgdmFsdWU6ICdpbml0aWFsX3F1YW50aXR5X2RhdGUnLFxuICAgICAgICB0eXBlOiAnZGF0ZScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsYWJlbDogJ1Jlb3JkZXIgUG9pbnQnLFxuICAgICAgICB2YWx1ZTogJ3Jlb3JkZXJfcG9pbnQnLFxuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAnTWVhc3VyZScsXG4gICAgICAgIHZhbHVlOiAnbWVhc3VyZScsXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAnQ2F0ZWdvcmllcycsXG4gICAgICAgIHZhbHVlOiAnY2F0ZWdvcmllcycsXG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBzYW1wbGVGaWxlOiB7XG4gICAgICBuYW1lOiAnUHJvZHVjdHMgSW1wb3J0JyxcbiAgICAgIHBhdGg6ICdhc3NldHMvcHJvZHVjdC9wcm9kdWN0LWltcG9ydC1zYW1wbGUuY3N2JyxcbiAgICB9LFxuICAgIGltcG9ydEhpc3Rvcnk6IHtcbiAgICAgIGlzRW5hYmxlZDogdHJ1ZSxcbiAgICAgIHR5cGU6ICdwcm9kdWN0JyxcbiAgICAgIGFwaVVybDogJ2FwaS9pbXBvcnQtaGlzdG9yaWVzJyxcbiAgICB9LFxuICAgIHZpZXdSb3V0ZXJMaW5rOiAnL2ludmVudG9yeS9wcm9kdWN0cy8nLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XG59XG4iLCI8YXBwLWltcG9ydC1jc3YgW2NvbmZpZ109XCJpbXBvcnRDb25maWdcIj48L2FwcC1pbXBvcnQtY3N2PlxuIl19