@acorex/platform 18.0.2 → 18.0.4

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 (232) hide show
  1. package/common/lib/app/application.types.d.ts +43 -26
  2. package/common/lib/common.module.d.ts +6 -5
  3. package/common/lib/data/data-provider.types.d.ts +1 -1
  4. package/common/lib/data/dexie-storage.service.d.ts +15 -0
  5. package/common/lib/data/entity-data-provider.d.ts +14 -0
  6. package/common/lib/data/index.d.ts +3 -0
  7. package/common/lib/data/storage-service.d.ts +22 -0
  8. package/common/lib/schema/entity/entity.class.d.ts +3 -0
  9. package/common/lib/utils/data-generator.d.ts +2 -0
  10. package/esm2022/common/lib/app/application.types.mjs +1 -1
  11. package/esm2022/common/lib/common.module.mjs +19 -2
  12. package/esm2022/common/lib/data/data-provider.types.mjs +1 -1
  13. package/esm2022/common/lib/data/dexie-storage.service.mjs +36 -0
  14. package/esm2022/common/lib/data/entity-data-provider.mjs +26 -0
  15. package/esm2022/common/lib/data/index.mjs +4 -1
  16. package/esm2022/common/lib/data/storage-service.mjs +5 -0
  17. package/esm2022/common/lib/schema/entity/entity-registery.service.mjs +2 -2
  18. package/esm2022/common/lib/schema/entity/entity.class.mjs +1 -1
  19. package/esm2022/common/lib/utils/data-generator.mjs +22 -1
  20. package/esm2022/common/lib/workflows/common.workflow.mjs +3 -3
  21. package/esm2022/layout/builder/lib/builder/builder.service.mjs +7 -2
  22. package/esm2022/layout/builder/lib/builder/widget.types.mjs +5 -1
  23. package/esm2022/layout/entity/lib/entity-detail-list.viewmodel.mjs +9 -8
  24. package/esm2022/layout/entity/lib/entity-master-create.viewmodel.mjs +34 -21
  25. package/esm2022/layout/entity/lib/entity-master-list.viewmodel.mjs +23 -15
  26. package/esm2022/layout/entity/lib/entity-master-single.viewmodel.mjs +46 -49
  27. package/esm2022/layout/entity/lib/entity-master-update.viewmodel.mjs +9 -7
  28. package/esm2022/layout/entity/lib/entity-registery.service.mjs +2 -2
  29. package/esm2022/layout/entity/lib/entity.module.mjs +13 -4
  30. package/esm2022/layout/entity/lib/entity.viewmodel.mjs +7 -6
  31. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.mjs +127 -39
  32. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.component.mjs +83 -37
  33. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.viewmodel.mjs +34 -23
  34. package/esm2022/layout/entity/lib/workflows/create-entity.workflow.mjs +17 -20
  35. package/esm2022/layout/entity/lib/workflows/delete-entity.workflow.mjs +17 -15
  36. package/esm2022/layout/entity/lib/workflows/modify-section.workflow.mjs +11 -23
  37. package/esm2022/layout/entity/lib/workflows/show-details.workflow.mjs +3 -3
  38. package/esm2022/layout/entity/lib/workflows/show-list.workflow.mjs +35 -0
  39. package/esm2022/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.component.mjs +3 -3
  40. package/esm2022/layouts/lib/admin/entity-layout/workflows/delete-entity.workflow.mjs +2 -2
  41. package/esm2022/layouts/lib/layout.module.mjs +3 -3
  42. package/esm2022/themes/default/lib/default.module.mjs +3 -3
  43. package/esm2022/themes/default/lib/entity-reuse.strategy.mjs +2 -2
  44. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.mjs +2 -2
  45. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/{entity-list-view.component.mjs → entity-master-list-view.component.mjs} +8 -2
  46. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-sorting/list-view-option-sorting.component.mjs +2 -1
  47. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.mjs +1 -1
  48. package/esm2022/widgets/lib/editors/date-time-box-widget/date-time-box-widget-column.component.mjs +2 -2
  49. package/esm2022/widgets/lib/editors/date-time-box-widget/date-time-box-widget-edit.component.mjs +21 -12
  50. package/esm2022/widgets/lib/editors/date-time-box-widget/date-time-box-widget-view.component.mjs +3 -2
  51. package/esm2022/widgets/lib/editors/number-box-widget/number-box-widget-column.component.mjs +2 -2
  52. package/esm2022/widgets/lib/editors/number-box-widget/number-box-widget-view.component.mjs +2 -2
  53. package/esm2022/workflow/lib/actions/start-workflow.action.mjs +28 -0
  54. package/esm2022/workflow/lib/workflow.module.mjs +7 -2
  55. package/esm2022/workflow/lib/workflow.service.mjs +53 -6
  56. package/esm2022/workflow/lib/workflow.types.mjs +12 -6
  57. package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-DAmNXjDm.mjs → acorex-platform-common-avatar-widget-edit.component-B-of5ssU.mjs} +3 -2
  58. package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-DAmNXjDm.mjs.map → acorex-platform-common-avatar-widget-edit.component-B-of5ssU.mjs.map} +1 -1
  59. package/fesm2022/{acorex-platform-common-avatar-widget-view.component-BlA_cFkP.mjs → acorex-platform-common-avatar-widget-view.component-CJvrSkTv.mjs} +4 -3
  60. package/fesm2022/acorex-platform-common-avatar-widget-view.component-CJvrSkTv.mjs.map +1 -0
  61. package/fesm2022/{acorex-platform-common-boolean-widget-filter.component-CEqibiML.mjs → acorex-platform-common-boolean-widget-filter.component-BTcOjuUm.mjs} +4 -3
  62. package/fesm2022/acorex-platform-common-boolean-widget-filter.component-BTcOjuUm.mjs.map +1 -0
  63. package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-BiUHPDqV.mjs → acorex-platform-common-checkbox-widget-column.component-X9d1iY_F.mjs} +4 -3
  64. package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-BiUHPDqV.mjs.map → acorex-platform-common-checkbox-widget-column.component-X9d1iY_F.mjs.map} +1 -1
  65. package/fesm2022/{acorex-platform-common-checkbox-widget-edit.component-BVG9_XXh.mjs → acorex-platform-common-checkbox-widget-edit.component-_jtT03Vn.mjs} +4 -3
  66. package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-_jtT03Vn.mjs.map +1 -0
  67. package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-CfGkMcDi.mjs → acorex-platform-common-checkbox-widget-view.component-nYmtb8bK.mjs} +4 -3
  68. package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-CfGkMcDi.mjs.map → acorex-platform-common-checkbox-widget-view.component-nYmtb8bK.mjs.map} +1 -1
  69. package/fesm2022/{acorex-platform-common-dateTime-widget-column.component-BlXTU887.mjs → acorex-platform-common-dateTime-widget-column.component-5ljYmtHI.mjs} +4 -3
  70. package/fesm2022/acorex-platform-common-dateTime-widget-column.component-5ljYmtHI.mjs.map +1 -0
  71. package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-B0s6FN-g.mjs → acorex-platform-common-dateTime-widget-edit.component-D8FSiqAo.mjs} +4 -3
  72. package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-B0s6FN-g.mjs.map → acorex-platform-common-dateTime-widget-edit.component-D8FSiqAo.mjs.map} +1 -1
  73. package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-B7KBCsUt.mjs → acorex-platform-common-dateTime-widget-filter.component-Df0DuDtw.mjs} +4 -3
  74. package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-B7KBCsUt.mjs.map → acorex-platform-common-dateTime-widget-filter.component-Df0DuDtw.mjs.map} +1 -1
  75. package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-Dy7pAkGG.mjs → acorex-platform-common-dateTime-widget-view.component-CjVjQkPh.mjs} +4 -3
  76. package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-Dy7pAkGG.mjs.map → acorex-platform-common-dateTime-widget-view.component-CjVjQkPh.mjs.map} +1 -1
  77. package/fesm2022/{acorex-platform-common-email-widget-column.component-D_UNn2dW.mjs → acorex-platform-common-email-widget-column.component-BgNdL62k.mjs} +4 -3
  78. package/fesm2022/acorex-platform-common-email-widget-column.component-BgNdL62k.mjs.map +1 -0
  79. package/fesm2022/{acorex-platform-common-email-widget-edit.component-DWT24mCM.mjs → acorex-platform-common-email-widget-edit.component-CgHPGccx.mjs} +4 -3
  80. package/fesm2022/{acorex-platform-common-email-widget-edit.component-DWT24mCM.mjs.map → acorex-platform-common-email-widget-edit.component-CgHPGccx.mjs.map} +1 -1
  81. package/fesm2022/{acorex-platform-common-email-widget-view.component-B6puyycL.mjs → acorex-platform-common-email-widget-view.component-C2aQ14k-.mjs} +4 -3
  82. package/fesm2022/{acorex-platform-common-email-widget-view.component-B6puyycL.mjs.map → acorex-platform-common-email-widget-view.component-C2aQ14k-.mjs.map} +1 -1
  83. package/fesm2022/{acorex-platform-common-file-widget-column.component-C1faGR4K.mjs → acorex-platform-common-file-widget-column.component-CwFzLLHt.mjs} +4 -3
  84. package/fesm2022/acorex-platform-common-file-widget-column.component-CwFzLLHt.mjs.map +1 -0
  85. package/fesm2022/{acorex-platform-common-file-widget-edit.component-CTvS9ls8.mjs → acorex-platform-common-file-widget-edit.component-DxoQR4CU.mjs} +4 -3
  86. package/fesm2022/{acorex-platform-common-file-widget-edit.component-CTvS9ls8.mjs.map → acorex-platform-common-file-widget-edit.component-DxoQR4CU.mjs.map} +1 -1
  87. package/fesm2022/{acorex-platform-common-file-widget-filter.component-D4AMg5M0.mjs → acorex-platform-common-file-widget-filter.component-BvG0iaKU.mjs} +4 -3
  88. package/fesm2022/acorex-platform-common-file-widget-filter.component-BvG0iaKU.mjs.map +1 -0
  89. package/fesm2022/{acorex-platform-common-file-widget-view.component-CHI4VCvt.mjs → acorex-platform-common-file-widget-view.component-BC9l3YrO.mjs} +4 -3
  90. package/fesm2022/{acorex-platform-common-file-widget-view.component-CHI4VCvt.mjs.map → acorex-platform-common-file-widget-view.component-BC9l3YrO.mjs.map} +1 -1
  91. package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-CAOctYzV.mjs → acorex-platform-common-gallery-widget-edit.component-BihOIJ9T.mjs} +4 -3
  92. package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-CAOctYzV.mjs.map → acorex-platform-common-gallery-widget-edit.component-BihOIJ9T.mjs.map} +1 -1
  93. package/fesm2022/{acorex-platform-common-gallery-widget-filter.component-lgaYDZeD.mjs → acorex-platform-common-gallery-widget-filter.component-DS1PCIJp.mjs} +4 -3
  94. package/fesm2022/acorex-platform-common-gallery-widget-filter.component-DS1PCIJp.mjs.map +1 -0
  95. package/fesm2022/{acorex-platform-common-gallery-widget-view.component-Ci50jeO5.mjs → acorex-platform-common-gallery-widget-view.component-CnQONVdg.mjs} +4 -3
  96. package/fesm2022/{acorex-platform-common-gallery-widget-view.component-Ci50jeO5.mjs.map → acorex-platform-common-gallery-widget-view.component-CnQONVdg.mjs.map} +1 -1
  97. package/fesm2022/{acorex-platform-common-largetext-widget-edit.component-DFKG-kum.mjs → acorex-platform-common-largetext-widget-edit.component-BCtGkz1a.mjs} +4 -3
  98. package/fesm2022/acorex-platform-common-largetext-widget-edit.component-BCtGkz1a.mjs.map +1 -0
  99. package/fesm2022/{acorex-platform-common-lookup-widget-column.component-CFzCGcqA.mjs → acorex-platform-common-lookup-widget-column.component-Cl-vO5XW.mjs} +4 -3
  100. package/fesm2022/acorex-platform-common-lookup-widget-column.component-Cl-vO5XW.mjs.map +1 -0
  101. package/fesm2022/{acorex-platform-common-lookup-widget-edit.component-CYTSeEOq.mjs → acorex-platform-common-lookup-widget-edit.component-D9UhViUG.mjs} +4 -3
  102. package/fesm2022/acorex-platform-common-lookup-widget-edit.component-D9UhViUG.mjs.map +1 -0
  103. package/fesm2022/{acorex-platform-common-lookup-widget-filter.component-BkxT9_Hh.mjs → acorex-platform-common-lookup-widget-filter.component-RWweQQaO.mjs} +4 -3
  104. package/fesm2022/acorex-platform-common-lookup-widget-filter.component-RWweQQaO.mjs.map +1 -0
  105. package/fesm2022/{acorex-platform-common-lookup-widget-view.component-5YeixMp7.mjs → acorex-platform-common-lookup-widget-view.component-mXo8VADX.mjs} +4 -3
  106. package/fesm2022/acorex-platform-common-lookup-widget-view.component-mXo8VADX.mjs.map +1 -0
  107. package/fesm2022/{acorex-platform-common-map-widget-edit.component-CE3QQBmX.mjs → acorex-platform-common-map-widget-edit.component-SSrR3xxv.mjs} +4 -3
  108. package/fesm2022/acorex-platform-common-map-widget-edit.component-SSrR3xxv.mjs.map +1 -0
  109. package/fesm2022/{acorex-platform-common-map-widget-view.component-Cv4OCTxz.mjs → acorex-platform-common-map-widget-view.component-DrGG3gzg.mjs} +4 -3
  110. package/fesm2022/acorex-platform-common-map-widget-view.component-DrGG3gzg.mjs.map +1 -0
  111. package/fesm2022/{acorex-platform-common-messenger-widget-column.component-CJdh6TKb.mjs → acorex-platform-common-messenger-widget-column.component-BJ_XzNKc.mjs} +4 -3
  112. package/fesm2022/acorex-platform-common-messenger-widget-column.component-BJ_XzNKc.mjs.map +1 -0
  113. package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-kiEHxJia.mjs → acorex-platform-common-messenger-widget-edit.component-B_FG_n0O.mjs} +4 -3
  114. package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-kiEHxJia.mjs.map → acorex-platform-common-messenger-widget-edit.component-B_FG_n0O.mjs.map} +1 -1
  115. package/fesm2022/{acorex-platform-common-messenger-widget-view.component-DzbjgZA7.mjs → acorex-platform-common-messenger-widget-view.component-EBiPO9ds.mjs} +4 -3
  116. package/fesm2022/{acorex-platform-common-messenger-widget-view.component-DzbjgZA7.mjs.map → acorex-platform-common-messenger-widget-view.component-EBiPO9ds.mjs.map} +1 -1
  117. package/fesm2022/{acorex-platform-common-number-widget-edit.component-BRuIP96Y.mjs → acorex-platform-common-number-widget-edit.component-B1XXga-9.mjs} +4 -3
  118. package/fesm2022/acorex-platform-common-number-widget-edit.component-B1XXga-9.mjs.map +1 -0
  119. package/fesm2022/{acorex-platform-common-number-widget-filter.component-jQ4DaFQH.mjs → acorex-platform-common-number-widget-filter.component-B2JCpDjU.mjs} +4 -3
  120. package/fesm2022/{acorex-platform-common-number-widget-filter.component-jQ4DaFQH.mjs.map → acorex-platform-common-number-widget-filter.component-B2JCpDjU.mjs.map} +1 -1
  121. package/fesm2022/{acorex-platform-common-number-widget-view.component-BzUWjT8m.mjs → acorex-platform-common-number-widget-view.component-DD0tkoc4.mjs} +4 -3
  122. package/fesm2022/acorex-platform-common-number-widget-view.component-DD0tkoc4.mjs.map +1 -0
  123. package/fesm2022/{acorex-platform-common-password-widget-column.component-BRzyuK5c.mjs → acorex-platform-common-password-widget-column.component-eyqgQlAt.mjs} +4 -3
  124. package/fesm2022/{acorex-platform-common-password-widget-column.component-BRzyuK5c.mjs.map → acorex-platform-common-password-widget-column.component-eyqgQlAt.mjs.map} +1 -1
  125. package/fesm2022/{acorex-platform-common-password-widget-edit.component-q6R2dw5k.mjs → acorex-platform-common-password-widget-edit.component-C2yNb9Pl.mjs} +4 -3
  126. package/fesm2022/acorex-platform-common-password-widget-edit.component-C2yNb9Pl.mjs.map +1 -0
  127. package/fesm2022/{acorex-platform-common-password-widget-view.component-CKaQItON.mjs → acorex-platform-common-password-widget-view.component-o9S7pwJW.mjs} +4 -3
  128. package/fesm2022/{acorex-platform-common-password-widget-view.component-CKaQItON.mjs.map → acorex-platform-common-password-widget-view.component-o9S7pwJW.mjs.map} +1 -1
  129. package/fesm2022/{acorex-platform-common-phone-widget-column.component-BD7BScjW.mjs → acorex-platform-common-phone-widget-column.component-BL9Xl2XH.mjs} +4 -3
  130. package/fesm2022/{acorex-platform-common-phone-widget-column.component-BD7BScjW.mjs.map → acorex-platform-common-phone-widget-column.component-BL9Xl2XH.mjs.map} +1 -1
  131. package/fesm2022/{acorex-platform-common-phone-widget-edit.component-D8tGKfNj.mjs → acorex-platform-common-phone-widget-edit.component-DSh9zoZj.mjs} +4 -3
  132. package/fesm2022/{acorex-platform-common-phone-widget-edit.component-D8tGKfNj.mjs.map → acorex-platform-common-phone-widget-edit.component-DSh9zoZj.mjs.map} +1 -1
  133. package/fesm2022/{acorex-platform-common-phone-widget-view.component-CFiMsGOB.mjs → acorex-platform-common-phone-widget-view.component-Br3xbaDd.mjs} +4 -3
  134. package/fesm2022/{acorex-platform-common-phone-widget-view.component-CFiMsGOB.mjs.map → acorex-platform-common-phone-widget-view.component-Br3xbaDd.mjs.map} +1 -1
  135. package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-BPzwY_8L.mjs → acorex-platform-common-rich-text-widget-column.component-DDT58tca.mjs} +4 -3
  136. package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-BPzwY_8L.mjs.map → acorex-platform-common-rich-text-widget-column.component-DDT58tca.mjs.map} +1 -1
  137. package/fesm2022/{acorex-platform-common-rich-text-widget-edit.component-CA2xRfVg.mjs → acorex-platform-common-rich-text-widget-edit.component-Dz1toc21.mjs} +4 -3
  138. package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-Dz1toc21.mjs.map +1 -0
  139. package/fesm2022/{acorex-platform-common-rich-text-widget-view.component-DYfTZ64H.mjs → acorex-platform-common-rich-text-widget-view.component-CxTPcEIQ.mjs} +4 -3
  140. package/fesm2022/acorex-platform-common-rich-text-widget-view.component-CxTPcEIQ.mjs.map +1 -0
  141. package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-_MglaOmo.mjs → acorex-platform-common-selection-list-widget-column.component-BCCmg8MI.mjs} +4 -3
  142. package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-_MglaOmo.mjs.map → acorex-platform-common-selection-list-widget-column.component-BCCmg8MI.mjs.map} +1 -1
  143. package/fesm2022/{acorex-platform-common-selection-list-widget-edit.component-QKw_tyOd.mjs → acorex-platform-common-selection-list-widget-edit.component-B5eUdN2R.mjs} +4 -3
  144. package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-B5eUdN2R.mjs.map +1 -0
  145. package/fesm2022/{acorex-platform-common-selection-list-widget-filter.component-DRToTnHQ.mjs → acorex-platform-common-selection-list-widget-filter.component-DPpZq1TB.mjs} +4 -3
  146. package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-DPpZq1TB.mjs.map +1 -0
  147. package/fesm2022/{acorex-platform-common-selection-list-widget-view.component-CjDiuUdj.mjs → acorex-platform-common-selection-list-widget-view.component-Bxvd_AKZ.mjs} +4 -3
  148. package/fesm2022/acorex-platform-common-selection-list-widget-view.component-Bxvd_AKZ.mjs.map +1 -0
  149. package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-DF29uWl2.mjs → acorex-platform-common-signature-pad-widget-edit.component-CNjYCEi6.mjs} +4 -3
  150. package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-DF29uWl2.mjs.map → acorex-platform-common-signature-pad-widget-edit.component-CNjYCEi6.mjs.map} +1 -1
  151. package/fesm2022/{acorex-platform-common-signature-pad-widget-view.component-BWzoR4HM.mjs → acorex-platform-common-signature-pad-widget-view.component-CsiBv_7i.mjs} +4 -3
  152. package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-CsiBv_7i.mjs.map +1 -0
  153. package/fesm2022/{acorex-platform-common-string-widget-filter.component-Di_GFHme.mjs → acorex-platform-common-string-widget-filter.component-CrGt6Bov.mjs} +4 -3
  154. package/fesm2022/acorex-platform-common-string-widget-filter.component-CrGt6Bov.mjs.map +1 -0
  155. package/fesm2022/{acorex-platform-common-text-widget-column.component-BSYd1CbC.mjs → acorex-platform-common-text-widget-column.component-qXusAevm.mjs} +4 -3
  156. package/fesm2022/{acorex-platform-common-text-widget-column.component-BSYd1CbC.mjs.map → acorex-platform-common-text-widget-column.component-qXusAevm.mjs.map} +1 -1
  157. package/fesm2022/{acorex-platform-common-text-widget-edit.component-K9z9N1qw.mjs → acorex-platform-common-text-widget-edit.component-ed0MUYnD.mjs} +4 -3
  158. package/fesm2022/{acorex-platform-common-text-widget-edit.component-K9z9N1qw.mjs.map → acorex-platform-common-text-widget-edit.component-ed0MUYnD.mjs.map} +1 -1
  159. package/fesm2022/{acorex-platform-common-text-widget-view.component-WbZtm_bf.mjs → acorex-platform-common-text-widget-view.component-BpxTaeQW.mjs} +4 -3
  160. package/fesm2022/{acorex-platform-common-text-widget-view.component-WbZtm_bf.mjs.map → acorex-platform-common-text-widget-view.component-BpxTaeQW.mjs.map} +1 -1
  161. package/fesm2022/{acorex-platform-common-toggle-widget-column.component-ZCBSYMuz.mjs → acorex-platform-common-toggle-widget-column.component-BqiUQrmV.mjs} +4 -3
  162. package/fesm2022/{acorex-platform-common-toggle-widget-column.component-ZCBSYMuz.mjs.map → acorex-platform-common-toggle-widget-column.component-BqiUQrmV.mjs.map} +1 -1
  163. package/fesm2022/{acorex-platform-common-toggle-widget-edit.component-rkDfLA-J.mjs → acorex-platform-common-toggle-widget-edit.component-CDG62BJN.mjs} +4 -3
  164. package/fesm2022/acorex-platform-common-toggle-widget-edit.component-CDG62BJN.mjs.map +1 -0
  165. package/fesm2022/{acorex-platform-common-toggle-widget-view.component-DLDIrci1.mjs → acorex-platform-common-toggle-widget-view.component-DWYcIPTd.mjs} +4 -3
  166. package/fesm2022/{acorex-platform-common-toggle-widget-view.component-DLDIrci1.mjs.map → acorex-platform-common-toggle-widget-view.component-DWYcIPTd.mjs.map} +1 -1
  167. package/fesm2022/acorex-platform-common.mjs +252 -149
  168. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  169. package/fesm2022/acorex-platform-layout-builder.mjs +10 -1
  170. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  171. package/fesm2022/acorex-platform-layout-entity.mjs +445 -261
  172. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  173. package/fesm2022/{acorex-platform-layouts-entity-create-view.component-BmSMt95H.mjs → acorex-platform-layouts-entity-create-view.component-fkKPKxlb.mjs} +3 -3
  174. package/fesm2022/acorex-platform-layouts-entity-create-view.component-fkKPKxlb.mjs.map +1 -0
  175. package/fesm2022/acorex-platform-layouts.mjs +4 -4
  176. package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
  177. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-Buanq4is.mjs → acorex-platform-themes-default-entity-master-create-view.component-BxYT9KhH.mjs} +2 -2
  178. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-BxYT9KhH.mjs.map +1 -0
  179. package/fesm2022/acorex-platform-themes-default.mjs +13 -6
  180. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  181. package/fesm2022/acorex-platform-widgets.mjs +50 -42
  182. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  183. package/fesm2022/acorex-platform-workflow.mjs +184 -104
  184. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  185. package/layout/builder/lib/builder/widget.types.d.ts +3 -0
  186. package/layout/entity/lib/entity-master-create.viewmodel.d.ts +6 -5
  187. package/layout/entity/lib/entity-master-list.viewmodel.d.ts +4 -0
  188. package/layout/entity/lib/entity-master-single.viewmodel.d.ts +10 -5
  189. package/layout/entity/lib/entity-master-update.viewmodel.d.ts +0 -1
  190. package/layout/entity/lib/entity.viewmodel.d.ts +3 -3
  191. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.d.ts +18 -3
  192. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.component.d.ts +8 -1
  193. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.viewmodel.d.ts +10 -3
  194. package/layout/entity/lib/workflows/create-entity.workflow.d.ts +0 -2
  195. package/layout/entity/lib/workflows/delete-entity.workflow.d.ts +2 -4
  196. package/layout/entity/lib/workflows/modify-section.workflow.d.ts +2 -5
  197. package/layout/entity/lib/workflows/show-list.workflow.d.ts +10 -0
  198. package/package.json +1 -1
  199. package/widgets/lib/editors/date-time-box-widget/date-time-box-widget-edit.component.d.ts +4 -0
  200. package/workflow/lib/actions/start-workflow.action.d.ts +10 -0
  201. package/workflow/lib/workflow.service.d.ts +4 -2
  202. package/workflow/lib/workflow.types.d.ts +3 -1
  203. package/fesm2022/acorex-platform-common-avatar-widget-view.component-BlA_cFkP.mjs.map +0 -1
  204. package/fesm2022/acorex-platform-common-boolean-widget-filter.component-CEqibiML.mjs.map +0 -1
  205. package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-BVG9_XXh.mjs.map +0 -1
  206. package/fesm2022/acorex-platform-common-dateTime-widget-column.component-BlXTU887.mjs.map +0 -1
  207. package/fesm2022/acorex-platform-common-email-widget-column.component-D_UNn2dW.mjs.map +0 -1
  208. package/fesm2022/acorex-platform-common-file-widget-column.component-C1faGR4K.mjs.map +0 -1
  209. package/fesm2022/acorex-platform-common-file-widget-filter.component-D4AMg5M0.mjs.map +0 -1
  210. package/fesm2022/acorex-platform-common-gallery-widget-filter.component-lgaYDZeD.mjs.map +0 -1
  211. package/fesm2022/acorex-platform-common-largetext-widget-edit.component-DFKG-kum.mjs.map +0 -1
  212. package/fesm2022/acorex-platform-common-lookup-widget-column.component-CFzCGcqA.mjs.map +0 -1
  213. package/fesm2022/acorex-platform-common-lookup-widget-edit.component-CYTSeEOq.mjs.map +0 -1
  214. package/fesm2022/acorex-platform-common-lookup-widget-filter.component-BkxT9_Hh.mjs.map +0 -1
  215. package/fesm2022/acorex-platform-common-lookup-widget-view.component-5YeixMp7.mjs.map +0 -1
  216. package/fesm2022/acorex-platform-common-map-widget-edit.component-CE3QQBmX.mjs.map +0 -1
  217. package/fesm2022/acorex-platform-common-map-widget-view.component-Cv4OCTxz.mjs.map +0 -1
  218. package/fesm2022/acorex-platform-common-messenger-widget-column.component-CJdh6TKb.mjs.map +0 -1
  219. package/fesm2022/acorex-platform-common-number-widget-edit.component-BRuIP96Y.mjs.map +0 -1
  220. package/fesm2022/acorex-platform-common-number-widget-view.component-BzUWjT8m.mjs.map +0 -1
  221. package/fesm2022/acorex-platform-common-password-widget-edit.component-q6R2dw5k.mjs.map +0 -1
  222. package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-CA2xRfVg.mjs.map +0 -1
  223. package/fesm2022/acorex-platform-common-rich-text-widget-view.component-DYfTZ64H.mjs.map +0 -1
  224. package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-QKw_tyOd.mjs.map +0 -1
  225. package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-DRToTnHQ.mjs.map +0 -1
  226. package/fesm2022/acorex-platform-common-selection-list-widget-view.component-CjDiuUdj.mjs.map +0 -1
  227. package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-BWzoR4HM.mjs.map +0 -1
  228. package/fesm2022/acorex-platform-common-string-widget-filter.component-Di_GFHme.mjs.map +0 -1
  229. package/fesm2022/acorex-platform-common-toggle-widget-edit.component-rkDfLA-J.mjs.map +0 -1
  230. package/fesm2022/acorex-platform-layouts-entity-create-view.component-BmSMt95H.mjs.map +0 -1
  231. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Buanq4is.mjs.map +0 -1
  232. /package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/{entity-list-view.component.d.ts → entity-master-list-view.component.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-layouts.mjs","sources":["../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/components/entity-custom-view/entity-custom-view.component.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/components/entity-custom-view/entity-custom-view.component.html","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/components/list-view-option-columns/list-view-option-columns.component.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/components/list-view-option-columns/list-view-option-columns.component.html","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-conditions.component.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-conditions.component.html","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-filter-operator.component.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/components/list-view-option-sorting/list-view-option-sorting.component.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/components/list-view-option-sorting/list-view-option-sorting.component.html","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-create-view/entity-create-view.config.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/workflows/create-entity.workflow.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/workflows/delete-entity.workflow.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/entity-list-view.component.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/entity-list-view.component.html","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/list-view.module.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/list-view.config.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-quick-view/entity-quick-view.component.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-quick-view/entity-quick-view.component.html","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-modify-view/entity-modify-view.config.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/workflows/modify-entity.workflow.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/workflows/show-quick-view.workflow.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/workflows/show-details.workflow.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/workflows/show-list.workflow.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-details-view/entity-details-view.component.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-details-view/entity-details-view.component.html","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-details-view/detail-view.config.ts","../../../../libs/platform/layouts/src/lib/admin/custom-reuse.strategy.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/workflows/modify-section.workflow.ts","../../../../libs/platform/layouts/src/lib/admin/admin.module.ts","../../../../libs/platform/layouts/src/lib/admin/entity.resolver.ts","../../../../libs/platform/layouts/src/lib/admin/admin.routes.ts","../../../../libs/platform/layouts/src/lib/layout.module.ts","../../../../libs/platform/layouts/src/acorex-platform-layouts.ts"],"sourcesContent":["import { AXLocation, AXStyleColorType, AXValueChangedEvent } from '@acorex/components/common';\r\nimport { AXDialogService } from '@acorex/components/dialog';\r\nimport { AXBasePageComponent } from '@acorex/components/page';\r\nimport { AXToastService } from '@acorex/components/toast';\r\nimport { AXUnsubscriber } from '@acorex/core/utils';\r\nimport { AXPEntityListConditionConfig, AXPEntityListDisplayColumnConfig, AXPEntityListSortConfig, AXPEntityPropertyConfig, AXPFilterOperator, AXPSchemaRegistryService, EQ_OPER } from '@acorex/platform/common';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n Signal,\r\n WritableSignal,\r\n computed,\r\n inject,\r\n signal,\r\n} from '@angular/core';\r\nimport { cloneDeep } from 'lodash-es';\r\n\r\nimport { AXPListViewLoader } from '../../list-view.config';\r\n\r\n@Component({\r\n templateUrl: './entity-custom-view.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: AXUnsubscriber,\r\n },\r\n ],\r\n})\r\nexport class AXPEntityCreateCustomViewComponent extends AXBasePageComponent {\r\n private schemaRegistry = inject(AXPSchemaRegistryService);\r\n private toastService = inject(AXToastService);\r\n private dialogService = inject(AXDialogService);\r\n private subscriber = inject(AXUnsubscriber);\r\n\r\n @Input() loader!: AXPListViewLoader;\r\n @Input() mode: 'edit' | 'create' = 'create';\r\n @Input() selectedView: any = {};\r\n\r\n protected showNameInput: WritableSignal<boolean> = signal(false);\r\n protected props: WritableSignal<AXPEntityPropertyConfig[]> = signal([]);\r\n\r\n protected columns: WritableSignal<AXPEntityListDisplayColumnConfig[]> = signal([]);\r\n protected visibleColumns: Signal<AXPEntityListDisplayColumnConfig[]> = computed(() =>\r\n this.columns().filter((c) => c.visible)\r\n );\r\n protected conditions: WritableSignal<AXPEntityListConditionConfig[]> = signal([]);\r\n protected sorts: WritableSignal<AXPEntityListSortConfig[]> = signal([]);\r\n\r\n protected selectedConditionNames: string[] = [];\r\n protected viewNames: string[] = [];\r\n\r\n protected override ngOnInit(): void {\r\n this.props.set(cloneDeep(this.loader.entity.properties));\r\n this.columns.set(cloneDeep(this.selectedView.columns));\r\n this.conditions.set(cloneDeep(this.selectedView.conditions));\r\n this.sorts.set(cloneDeep(this.selectedView.sorts));\r\n this.loader.views$.pipe(this.subscriber.takeUntilDestroy).subscribe((views) => {\r\n this.viewNames = views.map((v) => v.name);\r\n });\r\n }\r\n\r\n //****************** Columns ******************//\r\n updateColumnItem(event: AXValueChangedEvent, colName: string) {\r\n if (event.isUserInteraction) {\r\n this.columns.update((prevCols) =>\r\n prevCols.map((col) => (col.name === colName ? { ...col, visible: event.value } : col))\r\n );\r\n }\r\n }\r\n\r\n //****************** Sorts ******************//\r\n updateSortItem(item: AXPEntityListSortConfig) {\r\n this.sorts.update((prevSorts) =>\r\n prevSorts.map((sort) => (sort.name === item.name ? { ...sort, dir: sort.dir == 'asc' ? 'desc' : 'asc' } : sort))\r\n );\r\n }\r\n addSortItem() {\r\n const sortNames = this.sorts().map((p) => p.name);\r\n console.log(this.props(), sortNames);\r\n const name = this.props().find((c) => !sortNames.includes(c.name))?.name || this.props()[0].name;\r\n this.sorts.update((prevSorts) => [...prevSorts, { name, dir: 'asc' } as AXPEntityListSortConfig]);\r\n }\r\n\r\n removeSortItem(item: AXPEntityListSortConfig) {\r\n this.sorts.update((prevSorts) => prevSorts.filter((sort) => item.name != sort.name));\r\n }\r\n\r\n //****************** Conditions ******************//\r\n protected getSchema(name: string) {\r\n return this.props().find((c) => c.name == name)?.schema ?? '';\r\n }\r\n\r\n protected getOperators(name: string): AXPFilterOperator[] {\r\n const schemaName = this.props().find((c) => c.name == name)?.schema ?? '';\r\n return this.schemaRegistry.resolve(schemaName)?.filterOptions?.operators ?? [];\r\n }\r\n\r\n protected getDefaultOperator(name: string): AXPFilterOperator {\r\n const schemaName = this.props().find((c) => c.name == name)?.schema ?? '';\r\n return this.schemaRegistry.resolve(schemaName)?.filterOptions?.default ?? EQ_OPER;\r\n }\r\n\r\n protected getOperatorTitle(schemaName: string, oprName: string): string {\r\n return this.getOperators(schemaName).find((c) => c.name == oprName)?.title || '';\r\n }\r\n protected resetSelectedFieldNames() {\r\n this.selectedConditionNames = this.conditions().map((c) => c.name);\r\n }\r\n protected addCondition() {\r\n const conditions = this.selectedConditionNames.map((c) => {\r\n const opr = this.getDefaultOperator(c);\r\n return {\r\n name: c,\r\n operator: opr.name,\r\n };\r\n });\r\n this.conditions.set(conditions as any);\r\n }\r\n\r\n removeCondition(item: AXPEntityListConditionConfig) {\r\n this.conditions.update((prevConditions) => prevConditions.filter((con) => con.name != item.name));\r\n }\r\n\r\n //****************** Common ******************//\r\n protected drop(type: 'columns' | 'conditions' | 'sorts', event: CdkDragDrop<unknown[]>) {\r\n switch (type) {\r\n case 'columns':\r\n this.columns.update((prevCols) => {\r\n const columns = prevCols;\r\n moveItemInArray(columns, event.previousIndex, event.currentIndex);\r\n return columns;\r\n });\r\n break;\r\n case 'sorts':\r\n this.sorts.update((prevSorts) => {\r\n const sorts = prevSorts;\r\n moveItemInArray(sorts, event.previousIndex, event.currentIndex);\r\n return sorts;\r\n });\r\n break;\r\n case 'conditions':\r\n this.conditions.update((prevConditions) => {\r\n const conditions = prevConditions;\r\n moveItemInArray(conditions, event.previousIndex, event.currentIndex);\r\n return conditions;\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n changeViewNameToggle() {\r\n this.showNameInput.update((prev) => !prev);\r\n }\r\n\r\n generateViewName(title: string) {\r\n return title.replace(/\\s+/g, '-').toLowerCase();\r\n }\r\n\r\n handleApplyClick() {\r\n const updatedView = {\r\n ...this.selectedView,\r\n name: this.generateViewName(this.selectedView.title),\r\n conditions: this.conditions(),\r\n columns: this.columns(),\r\n sorts: this.sorts(),\r\n };\r\n if (this.viewNames.includes(updatedView.name) && this.mode == 'create') {\r\n this.toastService.show({\r\n title: 'Invalid Title',\r\n content: 'The title you have chosen already exists. Please choose a different title for your custom view.',\r\n color: 'danger' as AXStyleColorType,\r\n location: 'bottom-center' as AXLocation,\r\n closeButton: true,\r\n timeOut: 3000,\r\n });\r\n } else {\r\n this.close({ save: true, updatedView });\r\n }\r\n }\r\n\r\n handleResetClick() {\r\n this.conditions.set(cloneDeep(this.selectedView.conditions));\r\n this.columns.set(cloneDeep(this.selectedView.columns));\r\n this.sorts.set(cloneDeep(this.selectedView.sorts));\r\n }\r\n handleDiscardClick() {\r\n this.close({ save: false });\r\n }\r\n handleCancelClick() {\r\n this.close({ save: false });\r\n }\r\n handleDeleteClick() {\r\n this.dialogService\r\n .confirm('Warning', 'Are you sure want to delete this view?', 'danger', 'horizontal')\r\n .then((data) => {\r\n if (data.result) {\r\n this.close({ delete: true, viewName: this.selectedView.name });\r\n }\r\n });\r\n }\r\n}\r\n","<ax-header class=\"ax-p-4 ax-flex ax-justify-between ax-border-b\">\r\n <div class=\"ax-flex ax-items-center\">\r\n @if (showNameInput() && mode==='create') {\r\n <div class=\"ax-w-60\">\r\n <ax-text-box class=\"ax-sm\" [(ngModel)]=\"selectedView.title\">\r\n @if(showNameInput()){\r\n <ax-suffix>\r\n <ax-button (onClick)=\"changeViewNameToggle()\" look=\"default\">\r\n <ax-icon class=\"fa-sodild fas fa-check ax-text-sm\"> </ax-icon>\r\n </ax-button>\r\n </ax-suffix>\r\n }\r\n </ax-text-box>\r\n </div>\r\n }@else {\r\n <span class=\"ax-text-lg ax-font-semibold\">{{ selectedView.title }}</span>\r\n } @if (mode===\"create\") {\r\n <ax-button class=\"ax-xs\" (onClick)=\"changeViewNameToggle()\" color=\"default\">\r\n @if(!showNameInput() ){\r\n <ax-icon class=\"fa-regular fa-pen ax-text-sm ax-text-neutral-600\"> </ax-icon>\r\n }\r\n </ax-button>\r\n }\r\n </div>\r\n <ax-close-button></ax-close-button>\r\n</ax-header>\r\n<div class=\"ax-p-4\">\r\n <ax-tabs [content]=\"contents\" look=\"with-line\">\r\n <ax-tab-item text=\"Columns\">\r\n <ax-suffix>\r\n <ax-badge [text]=\"visibleColumns().length.toString()\" color=\"primary\"> </ax-badge>\r\n </ax-suffix>\r\n <ax-content>\r\n <div\r\n class=\"ax-flex ax-flex-col ax-gap-4 ax-p-4 ax-select-none ax-h-[400px]\"\r\n cdkDropList\r\n (cdkDropListDropped)=\"drop('columns', $event)\"\r\n >\r\n <div class=\"ax-flex ax-flex-col ax-gap-3 ax-w-full ax-sorted-list ax-overflow-auto ax-pe-2\">\r\n <ng-container *ngFor=\"let item of columns()\">\r\n <div class=\"ax-flex ax-py-1 ax-items-center ax-justify-between\" cdkDrag cdkDragBoundary=\".ax-sorted-list\">\r\n <div class=\"ax-flex ax-items-center ax-gap-3\" cdkDragHandle>\r\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\"></ax-icon>\r\n <p class=\"ax-font-medium ax-text-sm\">{{ item.title }}</p>\r\n </div>\r\n <ax-switch\r\n class=\"ax-sm\"\r\n [(ngModel)]=\"item.visible\"\r\n (onValueChanged)=\"updateColumnItem($event, item.name)\"\r\n ></ax-switch>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ax-content>\r\n </ax-tab-item>\r\n <ax-tab-item text=\"Conditions\">\r\n <ax-suffix>\r\n <ax-badge [text]=\"conditions().length.toString()\" color=\"primary\"> </ax-badge>\r\n </ax-suffix>\r\n <ax-content>\r\n <div\r\n class=\"ax-flex ax-flex-col ax-justify-start ax-gap-4 ax-py-4 ax-select-none ax-h-[400px]\"\r\n [class.ax-justify-center]=\"!conditions().length\"\r\n >\r\n @if(!conditions().length){\r\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center\">\r\n <ax-image src=\"assets/documents.svg\"></ax-image>\r\n <p class=\"ax-mt-6 ax-mb-1 ax-font-bold\">No Filters Selected</p>\r\n <span class=\"ax-text-neutral-400 ax-text-sm md:ax-text-md\"\r\n >Please select field(s) that you want to filter</span\r\n >\r\n </div>\r\n } @else {\r\n <div class=\"ax-sorted-list ax-px-4 ax-py-1 ax-overflow-auto\">\r\n <div cdkDropList (cdkDropListDropped)=\"drop('conditions', $event)\" class=\"ax-flex ax-flex-col ax-gap-2\">\r\n @for(item of conditions(); track item.name ){\r\n <div cdkDrag cdkDragBoundary=\".ax-sorted-list\">\r\n <div class=\"ax-ms-4 ax-flex ax-items-start ax-gap-2\">\r\n <ax-label>{{ loader.getProp(item.name)?.title }}</ax-label>\r\n @if(getOperatorTitle(item.name,item.operator)){\r\n <ax-badge\r\n class=\"ax-text-xs\"\r\n color=\"primary\"\r\n [look]=\"'twotone'\"\r\n [text]=\"getOperatorTitle(item.name, item.operator)\"\r\n ></ax-badge>\r\n }\r\n </div>\r\n <div class=\"ax-flex ax-group ax-items-center ax-gap-2\">\r\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\" cdkDragHandle></ax-icon>\r\n <div class=\"ax-w-full\">\r\n <axp-widget-filter-renderer\r\n [schema]=\"getSchema(item.name)\"\r\n [prop]=\"loader.getProp(item.name)\"\r\n [(value)]=\"item.value\"\r\n [(operator)]=\"item.operator\"\r\n >\r\n </axp-widget-filter-renderer>\r\n </div>\r\n <ax-button look=\"blank\" color=\"danger\" class=\"ax-sm\" (onClick)=\"removeCondition(item)\">\r\n <ax-icon class=\"fa-solid fa-trash-can\"></ax-icon>\r\n </ax-button>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n <div class=\"ax-flex ax-gap-2\">\r\n <div class=\"ax-w-full\" #addField>\r\n @if(conditions().length){\r\n <ax-button color=\"primary\" text=\"Add field\" look=\"blank\" class=\"ax-sm\"></ax-button>\r\n }@else {\r\n <div class=\"ax-flex ax-justify-center ax-w-full\">\r\n <ax-button color=\"primary\" text=\"Add field\" look=\"outline\" class=\"ax-md ax-w-56\"></ax-button>\r\n </div>\r\n }\r\n <ax-popover\r\n #conditionsPopover\r\n [target]=\"addField\"\r\n [placement]=\"conditions().length ? 'bottom-start' : 'bottom'\"\r\n [offsetY]=\"8\"\r\n [openOn]=\"'toggle'\"\r\n [closeOn]=\"'clickOut'\"\r\n [adaptivityEnabled]=\"true\"\r\n (onOpened)=\"resetSelectedFieldNames()\"\r\n >\r\n <div\r\n class=\"ax-bg-surface ax-border ax-border-default ax-rounded-md ax-shadow-md ax-w-full ax-min-w-[250px]\"\r\n >\r\n <div class=\"ax-border-b-[1px] ax-pb-2 ax-mb-2 ax-p-3\">\r\n <ax-title class=\"ax-font-bold\">Fields</ax-title>\r\n </div>\r\n <div class=\"ax-max-h-48 ax-overflow-auto\">\r\n <ax-selection-list\r\n [valueField]=\"'name'\"\r\n [textField]=\"'title'\"\r\n [(ngModel)]=\"selectedConditionNames\"\r\n [direction]=\"'vertical'\"\r\n [items]=\"props()\"\r\n [multiple]=\"true\"\r\n ></ax-selection-list>\r\n </div>\r\n <div class=\"ax-flex ax-justify-end ax-border-t-[1px] ax-p-3\">\r\n <ax-button\r\n (onClick)=\"addCondition(); conditionsPopover.close()\"\r\n class=\"ax-sm\"\r\n text=\"Confirm\"\r\n color=\"primary\"\r\n >\r\n </ax-button>\r\n </div>\r\n </div>\r\n </ax-popover>\r\n </div>\r\n </div>\r\n </div>\r\n </ax-content>\r\n </ax-tab-item>\r\n <ax-tab-item text=\"Sorting\">\r\n <ax-suffix>\r\n <ax-badge [text]=\"sorts().length.toString()\" color=\"primary\"> </ax-badge>\r\n </ax-suffix>\r\n <ax-content>\r\n <div\r\n class=\"ax-flex ax-p-4 ax-flex-col ax-justify-start ax-gap-4 ax-select-none ax-overflow-auto ax-h-[400px]\"\r\n [class.ax-justify-center]=\"!sorts().length\"\r\n >\r\n @if(!sorts().length){\r\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center\">\r\n <ax-image src=\"assets/documents.svg\"></ax-image>\r\n <p class=\"ax-mt-6 ax-mb-1 ax-font-bold\">No Sorts Selected</p>\r\n <span class=\"ax-text-neutral-400 ax-text-sm md:ax-text-md\"\r\n >Please select field(s) that you want to sort</span\r\n >\r\n </div>\r\n }@else {\r\n <div\r\n cdkDropList\r\n (cdkDropListDropped)=\"drop('sorts', $event)\"\r\n class=\"ax-flex ax-flex-col ax-gap-3 ax-w-full ax-sorted-list ax-py-1 ax-overflow-auto\"\r\n >\r\n <ng-container *ngFor=\"let item of sorts()\">\r\n <div class=\"ax-flex ax-gap-2 ax-items-center\" cdkDrag cdkDragBoundary=\".ax-sorted-list\">\r\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\" cdkDragHandle></ax-icon>\r\n <ax-select-box [dataSource]=\"props()\" valueField=\"name\" textField=\"title\" [(ngModel)]=\"item.name\">\r\n </ax-select-box>\r\n <ax-button [color]=\"'default'\" class=\"ax-sm\" (click)=\"updateSortItem(item)\">\r\n <ax-icon\r\n [class.ax-text-primary]=\"item.dir == 'asc'\"\r\n class=\"fa-solid fa-arrow-up-long ax-text-neutral-400\"\r\n ></ax-icon>\r\n <ax-icon\r\n [class.ax-text-primary]=\"item.dir == 'desc'\"\r\n class=\"fa-solid fa-arrow-down-long ax-text-neutral-400\"\r\n ></ax-icon>\r\n </ax-button>\r\n\r\n <ax-button look=\"blank\" (onClick)=\"removeSortItem(item)\">\r\n <ax-icon class=\"fa-solid fa-trash-can ax-text-danger-500\"></ax-icon>\r\n </ax-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n }\r\n\r\n <div class=\"ax-flex ax-gap-2\">\r\n <div class=\"ax-w-full\" #addField>\r\n @if(sorts().length){\r\n <ax-button\r\n (onClick)=\"addSortItem()\"\r\n color=\"primary\"\r\n text=\"Add field\"\r\n look=\"blank\"\r\n class=\"ax-sm\"\r\n ></ax-button>\r\n }@else {\r\n <div class=\"ax-flex ax-justify-center ax-w-full\">\r\n <ax-button\r\n (onClick)=\"addSortItem()\"\r\n color=\"primary\"\r\n text=\"Add field\"\r\n look=\"outline\"\r\n class=\"ax-md ax-w-56\"\r\n ></ax-button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </ax-content>\r\n </ax-tab-item>\r\n </ax-tabs>\r\n <ng-template [axTabContent] #contents=\"axTabContent\"> </ng-template>\r\n</div>\r\n<ax-footer class=\"!ax-justify-end\">\r\n @if (mode===\"edit\") {\r\n <ax-dropdown-button text=\"Discard\" (onClick)=\"handleDiscardClick()\">\r\n <ax-button-item-list>\r\n <ax-button-item text=\"Reset\" (onClick)=\"handleResetClick()\">\r\n <ax-prefix>\r\n <ax-icon icon=\"fa-solid fa-rotate-left fa-flip-horizontal\"></ax-icon>\r\n </ax-prefix>\r\n </ax-button-item>\r\n <ax-button-item class=\"ax-text-danger\" text=\"Delete\" (onClick)=\"handleDeleteClick()\">\r\n <ax-prefix> <ax-icon icon=\"fas fa-trash fa-flip-horizontal\"></ax-icon> </ax-prefix\r\n ></ax-button-item>\r\n </ax-button-item-list>\r\n </ax-dropdown-button>\r\n } @else {\r\n <ax-button text=\"Cancel\" look=\"outline\" (onClick)=\"handleCancelClick()\"></ax-button>\r\n }\r\n <ax-button\r\n [text]=\"mode === 'create' ? 'Save' : 'Save Changes'\"\r\n color=\"primary\"\r\n (onClick)=\"handleApplyClick()\"\r\n ></ax-button>\r\n</ax-footer>\r\n","import { AXValueChangedEvent } from '@acorex/components/common';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { Component, EventEmitter, Input, OnInit, Output, inject } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable, first, of } from 'rxjs';\r\nimport { AXPListViewLoader } from '../../list-view.config';\r\nimport { AXPAdminLayoutState, AXPEntityListDisplayColumnConfig, isSmallScreen } from '@acorex/platform/common';\r\n\r\n@Component({\r\n selector: 'axp-list-view-option-columns',\r\n templateUrl: './list-view-option-columns.component.html',\r\n})\r\nexport class AXPListViewOptionsColumnsComponent implements OnInit {\r\n private store = inject(Store<AXPAdminLayoutState>);\r\n\r\n @Input()\r\n public loader!: AXPListViewLoader;\r\n protected isSM = this.store.select(isSmallScreen());\r\n protected columns$: Observable<AXPEntityListDisplayColumnConfig[]> = of([]);\r\n\r\n @Output()\r\n public onClosed = new EventEmitter<void>();\r\n\r\n ngOnInit(): void {\r\n this.columns$ = this.loader.displayColumns$;\r\n }\r\n\r\n handleVisibilityChange(e: AXValueChangedEvent<boolean>, name: string) {\r\n if (e.isUserInteraction) {\r\n this.loader.setColumnVisibility(name, e.value!);\r\n }\r\n }\r\n\r\n protected drop(event: CdkDragDrop<unknown[]>) {\r\n this.columns$.pipe(first()).subscribe((columns) => {\r\n moveItemInArray(columns, event.previousIndex, event.currentIndex);\r\n });\r\n }\r\n\r\n protected handleClose() {\r\n this.onClosed.emit();\r\n }\r\n protected handleResetClick() {\r\n this.loader.resetColumns();\r\n }\r\n\r\n protected handleApplyClick() {\r\n this.columns$.pipe(first()).subscribe((data) => {\r\n this.loader.updateColumns(data);\r\n });\r\n this.onClosed.emit();\r\n }\r\n}\r\n","<ax-header class=\"ax-flex ax-items-center\">\r\n <h2 class=\"ax-text-xl ax-font-bold\">Columns</h2>\r\n <ax-button (onClick)=\"handleClose()\" [look]=\"'blank'\">\r\n <ax-icon class=\"fa-solid fa-close ax-text-neutral-400 ax-text-xl\"> </ax-icon>\r\n </ax-button>\r\n</ax-header>\r\n<div class=\"ax-flex ax-flex-col ax-gap-4 ax-p-4 ax-select-none\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div class=\"ax-flex ax-flex-col ax-gap-3 ax-w-full ax-sorted-list ax-max-h-[calc(100vh-280px)] ax-overflow-auto\">\r\n <ng-container *ngFor=\"let item of columns$ | async\">\r\n <div class=\"ax-flex ax-py-1 ax-items-center ax-justify-between\" cdkDrag cdkDragBoundary=\".ax-sorted-list\">\r\n <div class=\"ax-flex ax-items-center ax-gap-3\" cdkDragHandle>\r\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\"></ax-icon>\r\n <p class=\"ax-font-medium ax-text-sm\">{{ item.title }}</p>\r\n </div>\r\n <ax-switch\r\n class=\"ax-sm\"\r\n [ngModel]=\"item.visible\"\r\n (onValueChanged)=\"handleVisibilityChange($event, item.name)\"\r\n ></ax-switch>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n<ax-footer class=\"!ax-justify-start ax-absolute ax-bottom-0 ax-w-full\">\r\n <ax-button text=\"Apply\" color=\"primary\" (onClick)=\"handleApplyClick()\"></ax-button>\r\n <ax-button text=\"Reset\" color=\"ghost\" (onClick)=\"handleResetClick()\"></ax-button>\r\n</ax-footer>\r\n","import { AXPopupService } from '@acorex/components/popup';\r\nimport { AXPEntityListConditionConfig, AXPEntityPropertyConfig, AXPFilterOperator, AXPSchemaRegistryService, EQ_OPER } from '@acorex/platform/common';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewEncapsulation,\r\n inject,\r\n} from '@angular/core';\r\nimport { Observable, first, map, of } from 'rxjs';\r\nimport { AXPListViewLoader } from '../../list-view.config';\r\n\r\n@Component({\r\n selector: 'axp-list-view-option-conditions',\r\n templateUrl: './list-view-option-conditions.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AXPListViewOptionConditionsComponent {\r\n constructor() { }\r\n\r\n @Output()\r\n public onClosed = new EventEmitter<void>();\r\n\r\n private schemaRegistery = inject(AXPSchemaRegistryService);\r\n private popopService: AXPopupService = inject(AXPopupService);\r\n\r\n protected isSM = false;\r\n\r\n @Input()\r\n public loader!: AXPListViewLoader;\r\n\r\n protected props$: Observable<AXPEntityPropertyConfig[]> = of([]);\r\n protected props: AXPEntityPropertyConfig[] = [];\r\n protected conditions$: Observable<AXPEntityListConditionConfig[]> = of([]);\r\n\r\n protected selectedFieldNames: string[] = [];\r\n\r\n onNameChange(item: any) {\r\n console.log('onName changed!', item);\r\n }\r\n ngOnInit() {\r\n this.props$ = this.loader.properties$.pipe(\r\n map((sorts) => sorts.filter((s) => s.canFilter != false))\r\n );\r\n this.conditions$ = this.loader.conditions$;\r\n this.conditions$.pipe(first()).subscribe((initialConditions) => {\r\n this.selectedFieldNames = initialConditions.map((i) => i.name);\r\n });\r\n\r\n this.props$.pipe(first()).subscribe((data) => {\r\n this.props = data;\r\n });\r\n }\r\n\r\n protected getOperators(name: string): AXPFilterOperator[] {\r\n const schemaName = this.props.find((c) => c.name == name)?.schema ?? '';\r\n return this.schemaRegistery.resolve(schemaName)?.filterOptions?.operators ?? [];\r\n }\r\n\r\n protected getDefaultOperator(name: string): AXPFilterOperator {\r\n const schemaName = this.props.find((c) => c.name == name)?.schema ?? '';\r\n return this.schemaRegistery.resolve(schemaName)?.filterOptions?.default ?? EQ_OPER;\r\n }\r\n\r\n protected getOperatorTitle(schemaName: string, oprName: string): string {\r\n return this.getOperators(schemaName).find((c) => c.name == oprName)?.title || '';\r\n }\r\n\r\n protected getSchema(name: string) {\r\n return this.props.find((c) => c.name == name)?.schema ?? '';\r\n }\r\n\r\n protected drop(event: CdkDragDrop<unknown[]>) {\r\n this.conditions$.pipe(first()).subscribe((conditions) => {\r\n console.log('conditions: ', conditions);\r\n moveItemInArray(conditions, event.previousIndex, event.currentIndex);\r\n });\r\n }\r\n\r\n protected handleClose() {\r\n this.onClosed.emit();\r\n }\r\n\r\n protected handleRemoveCondition(item: AXPEntityListConditionConfig) {\r\n this.selectedFieldNames = this.selectedFieldNames.filter((i) => i !== item.name);\r\n this.loader.removeCondition(item);\r\n }\r\n\r\n protected resetSelectedFieldNames() {\r\n this.conditions$.pipe(first()).subscribe((initialConditions) => {\r\n this.selectedFieldNames = initialConditions.map((i) => i.name);\r\n });\r\n }\r\n\r\n protected handleResetClick() {\r\n this.loader.resetConditions();\r\n }\r\n\r\n protected onConfirmFields() {\r\n const fileds = this.selectedFieldNames.map((c) => {\r\n const opr = this.getDefaultOperator(c);\r\n return {\r\n name: c,\r\n opr: opr.name,\r\n };\r\n });\r\n this.loader.addCondition(fileds);\r\n }\r\n\r\n protected handleApplyClick() {\r\n this.conditions$.pipe(first()).subscribe((data) => {\r\n console.log(data);\r\n this.loader.updateConditions(data);\r\n });\r\n this.onClosed.emit();\r\n }\r\n}\r\n","<ax-header class=\"ax-flex ax-items-center\">\r\n <h2 class=\"ax-text-xl ax-font-bold\">Filters</h2>\r\n <ax-button (onClick)=\"handleClose()\" [look]=\"'blank'\">\r\n <ax-icon class=\"fa-solid fa-close ax-text-neutral-400 ax-text-xl\"> </ax-icon>\r\n </ax-button>\r\n</ax-header>\r\n<div\r\n class=\"ax-flex ax-flex-col ax-justify-center ax-gap-4 ax-py-4 ax-select-none\"\r\n [class.ax-h-[calc(100vh-310px)]]=\"!(conditions$ | async)?.length\"\r\n>\r\n @if(!(conditions$ | async)?.length){\r\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center\">\r\n <ax-image src=\"assets/documents.svg\"></ax-image>\r\n <p class=\"ax-mt-6 ax-mb-1 ax-font-bold\">No Filters Selected</p>\r\n <span class=\"ax-text-neutral-400 ax-text-sm md:ax-text-md\">Please select field(s) that you want to filter</span>\r\n </div>\r\n } @else {\r\n <div class=\"ax-sorted-list ax-max-h-[calc(100vh-310px)] ax-px-4 ax-py-1 ax-overflow-auto\">\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" class=\"ax-flex ax-flex-col ax-gap-2\">\r\n @for(item of conditions$ | async; track item.name ){\r\n <div cdkDrag cdkDragBoundary=\".ax-sorted-list\">\r\n <div class=\"ax-ms-4 ax-flex ax-items-start ax-gap-2\">\r\n <ax-label>{{ loader.getProp(item.name)?.title }}</ax-label>\r\n @if(getOperatorTitle(item.name,item.operator)){\r\n <ax-badge\r\n class=\"ax-text-xs\"\r\n color=\"primary\"\r\n [look]=\"'twotone'\"\r\n [text]=\"getOperatorTitle(item.name, item.operator)\"\r\n ></ax-badge>\r\n }\r\n </div>\r\n <div class=\"ax-flex ax-group ax-items-center ax-gap-2\">\r\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\" cdkDragHandle></ax-icon>\r\n <div class=\"ax-w-full\">\r\n <!-- <ax-text-box [(ngModel)]=\"item.value\"></ax-text-box> -->\r\n <axp-widget-filter-renderer\r\n [schema]=\"getSchema(item.name)\"\r\n [prop]=\"loader.getProp(item.name)\"\r\n [(value)]=\"item.value\"\r\n [(operator)]=\"item.operator\"\r\n >\r\n </axp-widget-filter-renderer>\r\n </div>\r\n <ax-button look=\"blank\" color=\"danger\" class=\"ax-sm\" (onClick)=\"handleRemoveCondition(item)\">\r\n <ax-icon class=\"fa-solid fa-trash-can\"></ax-icon>\r\n </ax-button>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n <div class=\"ax-flex ax-gap-2\">\r\n <div class=\"ax-w-full\" #addField>\r\n @if((conditions$ | async)?.length){\r\n <ax-button color=\"primary\" text=\"Add field\" look=\"blank\" class=\"ax-sm\"></ax-button>\r\n }@else {\r\n <div class=\"ax-flex ax-justify-center ax-w-full\">\r\n <ax-button color=\"primary\" text=\"Add field\" look=\"outline\" class=\"ax-md ax-w-56\"></ax-button>\r\n </div>\r\n }\r\n </div>\r\n <ax-popover\r\n #fieldsPopover\r\n [target]=\"addField\"\r\n [openOn]=\"'toggle'\"\r\n [closeOn]=\"'clickOut'\"\r\n [adaptivityEnabled]=\"true\"\r\n (onOpened)=\"resetSelectedFieldNames()\"\r\n [offsetX]=\"15\"\r\n >\r\n <div class=\"ax-bg-surface ax-border ax-border-default ax-rounded-md ax-shadow-md ax-w-full ax-min-w-[250px]\">\r\n <div class=\"ax-border-b-[1px] ax-pb-2 ax-mb-2 ax-p-3\">\r\n <ax-title class=\"ax-font-bold\">Fields</ax-title>\r\n </div>\r\n <div class=\"ax-max-h-72 2xl:ax-max-h-80 ax-overflow-auto\">\r\n <ax-selection-list\r\n [valueField]=\"'name'\"\r\n [textField]=\"'title'\"\r\n [(ngModel)]=\"selectedFieldNames\"\r\n [direction]=\"'vertical'\"\r\n [items]=\"props\"\r\n [multiple]=\"true\"\r\n ></ax-selection-list>\r\n </div>\r\n <div class=\"ax-flex ax-justify-end ax-border-t-[1px] ax-p-3\">\r\n <ax-button (onClick)=\"onConfirmFields(); fieldsPopover.close()\" class=\"ax-sm\" text=\"Confirm\" color=\"primary\">\r\n </ax-button>\r\n </div>\r\n </div>\r\n </ax-popover>\r\n </div>\r\n</div>\r\n<ax-footer class=\"!ax-justify-start ax-absolute ax-bottom-0 ax-w-full\">\r\n <ax-button text=\"Apply\" color=\"primary\" (onClick)=\"handleApplyClick()\"></ax-button>\r\n <ax-button text=\"Reset\" color=\"ghost\" (onClick)=\"handleResetClick()\"></ax-button>\r\n</ax-footer>\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewChild,\r\n inject,\r\n} from '@angular/core';\r\n\r\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\r\nimport { AXPFilterOperator } from '@acorex/platform/common';\r\n\r\n@Component({\r\n selector: 'axp-list-view-option-filter-operator',\r\n template: `\r\n <ax-select-box\r\n valueField=\"name\"\r\n [dataSource]=\"items\"\r\n textField=\"title\"\r\n [(ngModel)]=\"value\"\r\n *ngIf=\"visible\"\r\n >\r\n </ax-select-box>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display: contents;' },\r\n})\r\nexport class AXPListViewOptionFilterOperatorComponent {\r\n @ViewChild(AXSelectBoxComponent)\r\n selectBox!: AXSelectBoxComponent;\r\n protected visible = false;\r\n\r\n private cdr = inject(ChangeDetectorRef);\r\n\r\n private _items: AXPFilterOperator[] = [];\r\n @Input()\r\n public get items(): AXPFilterOperator[] {\r\n return this._items;\r\n }\r\n public set items(v: AXPFilterOperator[]) {\r\n this.visible = false;\r\n this._items = v;\r\n setTimeout(() => {\r\n this.visible = true;\r\n this.cdr.markForCheck();\r\n setTimeout(() => {\r\n if (this.selectBox) {\r\n //this.selectBox.defaultValue = this.items[0]?.name;\r\n }\r\n });\r\n });\r\n }\r\n\r\n @Output()\r\n valueChange: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n private _value!: string;\r\n @Input()\r\n public get value(): string {\r\n return this._value;\r\n }\r\n public set value(v: string) {\r\n this._value = v;\r\n this.valueChange.emit(v);\r\n }\r\n}\r\n","import { AXPEntityListSortConfig, AXPEntityPropertyConfig } from '@acorex/platform/common';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { Observable, first, map, of } from 'rxjs';\r\nimport { AXPListViewLoader } from '../../list-view.config';\r\n\r\n@Component({\r\n selector: 'axp-list-view-option-sorting',\r\n templateUrl: './list-view-option-sorting.component.html',\r\n})\r\nexport class AXPListViewOptionSortingComponent {\r\n protected isSM = false;\r\n\r\n @Output()\r\n public onClosed = new EventEmitter<void>();\r\n\r\n @Input()\r\n public loader!: AXPListViewLoader;\r\n\r\n protected props$: Observable<AXPEntityPropertyConfig[]> = of([]);\r\n protected sorts$: Observable<AXPEntityListSortConfig[]> = of([]);\r\n\r\n ngOnInit(): void {\r\n this.props$ = this.loader.properties$.pipe(map((sorts) => sorts.filter((s) => s.canSort != false)));\r\n this.loader.sorts$.subscribe((data) => {});\r\n this.sorts$ = this.loader.sorts$;\r\n }\r\n\r\n protected drop(event: CdkDragDrop<unknown[]>) {\r\n this.sorts$.pipe(first()).subscribe((sorts) => {\r\n moveItemInArray(sorts, event.previousIndex, event.currentIndex);\r\n });\r\n }\r\n\r\n protected changeItemSort(item: AXPEntityListSortConfig) {\r\n item.dir = item.dir == 'asc' ? 'desc' : 'asc';\r\n }\r\n\r\n protected handleClose() {\r\n this.onClosed.emit();\r\n }\r\n protected handleResetClick() {\r\n this.loader.resetSort();\r\n }\r\n\r\n protected handleApplyClick() {\r\n this.sorts$.pipe(first()).subscribe((data) => {\r\n this.loader.updateSort(data);\r\n });\r\n this.onClosed.emit();\r\n }\r\n}\r\n","<ax-header class=\"ax-flex ax-items-center\">\r\n <h2 class=\"ax-text-xl ax-font-bold\">Sorts</h2>\r\n <ax-button (onClick)=\"handleClose()\" [look]=\"'blank'\">\r\n <ax-icon class=\"fa-solid fa-close ax-text-neutral-400 ax-text-xl\"> </ax-icon>\r\n </ax-button>\r\n</ax-header>\r\n<div\r\n class=\"ax-flex ax-p-4 ax-flex-col ax-justify-center ax-gap-4 ax-select-none\"\r\n [class.ax-h-[calc(100vh-310px)]]=\"!(sorts$ | async)?.length\"\r\n>\r\n @if(!(sorts$ | async)?.length){\r\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center\">\r\n <ax-image src=\"assets/documents.svg\"></ax-image>\r\n <p class=\"ax-mt-6 ax-mb-1 ax-font-bold\">No Sorts Selected</p>\r\n <span class=\"ax-text-neutral-400 ax-text-sm md:ax-text-md\">Please select field(s) that you want to sort</span>\r\n </div>\r\n }\r\n <div\r\n cdkDropList\r\n (cdkDropListDropped)=\"drop($event)\"\r\n class=\"ax-flex ax-flex-col ax-gap-3 ax-w-full ax-sorted-list ax-py-1 ax-max-h-[calc(100vh-310px)] ax-overflow-auto\"\r\n >\r\n <ng-container *ngFor=\"let item of sorts$ | async\">\r\n <div class=\"ax-flex ax-gap-2 ax-items-center\" cdkDrag cdkDragBoundary=\".ax-sorted-list\">\r\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\" cdkDragHandle></ax-icon>\r\n <ax-select-box\r\n [dataSource]=\"(props$ | async) ?? []\"\r\n valueField=\"name\"\r\n textField=\"title\"\r\n [(ngModel)]=\"item.name\"\r\n >\r\n </ax-select-box>\r\n <ax-button [color]=\"'default'\" class=\"ax-sm\" (click)=\"changeItemSort(item)\">\r\n <ax-icon\r\n [class.ax-text-primary]=\"item.dir == 'asc'\"\r\n class=\"fa-solid fa-arrow-up-long ax-text-neutral-400\"\r\n ></ax-icon>\r\n <ax-icon\r\n [class.ax-text-primary]=\"item.dir == 'desc'\"\r\n class=\"fa-solid fa-arrow-down-long ax-text-neutral-400\"\r\n ></ax-icon>\r\n </ax-button>\r\n\r\n <ax-button look=\"blank\" (onClick)=\"loader.removeSort(item)\">\r\n <ax-icon class=\"fa-solid fa-trash-can ax-text-danger-500\"></ax-icon>\r\n </ax-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"ax-flex ax-gap-2\">\r\n <div class=\"ax-w-full\" #addField>\r\n @if((sorts$ | async)?.length){\r\n <ax-button (onClick)=\"loader.addSort()\" color=\"primary\" text=\"Add field\" look=\"blank\" class=\"ax-sm\"></ax-button>\r\n }@else {\r\n <div class=\"ax-flex ax-justify-center ax-w-full\">\r\n <ax-button\r\n (onClick)=\"loader.addSort()\"\r\n color=\"primary\"\r\n text=\"Add field\"\r\n look=\"outline\"\r\n class=\"ax-md ax-w-56\"\r\n ></ax-button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n<ax-footer class=\"!ax-justify-start ax-absolute ax-bottom-0 ax-w-full\">\r\n <ax-button text=\"Apply\" color=\"primary\" (onClick)=\"handleApplyClick()\"></ax-button>\r\n <ax-button text=\"Reset\" color=\"ghost\" (onClick)=\"handleResetClick()\"></ax-button>\r\n</ax-footer>\r\n","import { AXFormatService } from '@acorex/core/format';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { cloneDeep } from 'lodash-es';\r\nimport { BehaviorSubject, Observable, defaultIfEmpty, map, of, switchMap } from 'rxjs';\r\n\r\nimport { AXPLayoutService } from '@acorex/platform/common';\r\nimport { AXPEntityConfig, AXPEntityPropertyConfig, AXPEntityRegistryService, AXPEntityViewChildSectionConfig, AXPEntityViewConfig } from '@acorex/platform/common';\r\n\r\nexport interface AXPEntityCreateViewLoader {\r\n get entity(): AXPEntityConfig;\r\n get data(): any;\r\n\r\n get sections$(): Observable<AXPEntityViewChildSectionConfig[]>;\r\n get hasSections$(): Observable<boolean>;\r\n get isLast$(): Observable<boolean>;\r\n get isFirst$(): Observable<boolean>;\r\n get currentIndex$(): Observable<number>;\r\n get section$(): Observable<AXPEntityViewChildSectionConfig>;\r\n setSection(name: string): void;\r\n next(): Promise<void>;\r\n back(): Promise<void>;\r\n\r\n getProp(name: string): AXPEntityPropertyConfig | undefined;\r\n isRequired(name: string): boolean;\r\n}\r\n\r\nexport class AXPEntityCreateLoaderDefault implements AXPEntityCreateViewLoader {\r\n private _config!: AXPEntityConfig;\r\n private _data: any = {};\r\n private _currentSection = 'default';\r\n\r\n constructor(private config: AXPEntityConfig, private store: Store, private formatService: AXFormatService) {\r\n this._currentSection = this.sections[0]?.name || 'default';\r\n }\r\n\r\n get entity(): AXPEntityConfig {\r\n if (!this._config) {\r\n this._config = cloneDeep(this.config);\r\n }\r\n return this._config;\r\n }\r\n\r\n get data(): any {\r\n return this._data;\r\n }\r\n\r\n private get view(): AXPEntityViewConfig {\r\n return this.entity.views.createView as AXPEntityViewConfig;\r\n }\r\n\r\n //****************** Sections ******************//\r\n\r\n private get sections(): AXPEntityViewChildSectionConfig[] {\r\n return this.view.root.sections?.length\r\n ? this.view.root.sections\r\n : [\r\n {\r\n name: 'default',\r\n title: 'Default',\r\n properties: this.view.root.properties,\r\n },\r\n ];\r\n }\r\n\r\n private _sections$ = new BehaviorSubject<AXPEntityViewChildSectionConfig[]>(this.sections);\r\n\r\n public get sections$(): Observable<AXPEntityViewChildSectionConfig[]> {\r\n return this._sections$.pipe(defaultIfEmpty([]));\r\n }\r\n\r\n public get section$(): Observable<AXPEntityViewChildSectionConfig> {\r\n return this.sections$.pipe(\r\n switchMap((sections) => {\r\n const section = sections.find((c) => c.name === this._currentSection) ?? this.sections[0];\r\n if (!section.sections?.length) {\r\n section.sections = [\r\n {\r\n name: 'default',\r\n title: 'Details',\r\n properties: section.properties,\r\n },\r\n ];\r\n }\r\n return of(section);\r\n })\r\n );\r\n }\r\n\r\n public get hasSections$(): Observable<boolean> {\r\n return this.sections$.pipe(map((c) => c.length > 1));\r\n }\r\n\r\n public get isLast$(): Observable<boolean> {\r\n return this.sections$.pipe(\r\n map((c) => this.sections.length - this.sections.findIndex((c) => c.name == this._currentSection) == 1)\r\n );\r\n }\r\n\r\n public get isFirst$(): Observable<boolean> {\r\n return this.sections$.pipe(map((c) => this.sections.findIndex((c) => c.name == this._currentSection) == 0));\r\n }\r\n\r\n public get currentIndex$(): Observable<number> {\r\n return this.sections$.pipe(map((c) => this.sections.findIndex((c) => c.name == this._currentSection)));\r\n }\r\n\r\n public setSection(name: string) {\r\n this._currentSection = name ?? 'default';\r\n const updatedSection = this.sections.find((c) => c.name === this._currentSection) || {\r\n name: 'default',\r\n title: 'Default',\r\n properties: this.view.root.properties,\r\n };\r\n const currentSections = this._sections$.value;\r\n const updatedSections = currentSections.map((section) => {\r\n if (section.name === updatedSection.name) {\r\n return updatedSection;\r\n } else {\r\n return section;\r\n }\r\n });\r\n this._sections$.next(updatedSections);\r\n }\r\n\r\n public next() {\r\n const nextIndex = this.sections.findIndex((c) => c.name == this._currentSection) + 1;\r\n if (nextIndex >= this.sections.length) {\r\n return Promise.resolve();\r\n } else {\r\n this.setSection(this.sections[nextIndex].name);\r\n return Promise.resolve();\r\n }\r\n }\r\n\r\n public back() {\r\n const prevIndex = this.sections.findIndex((c) => c.name == this._currentSection) - 1;\r\n if (prevIndex < 0) {\r\n return Promise.resolve();\r\n } else {\r\n this.setSection(this.sections[prevIndex].name);\r\n return Promise.resolve();\r\n }\r\n }\r\n\r\n //****************** Properties ******************//\r\n public getProp = (name: string): AXPEntityPropertyConfig | undefined => this.entity.properties.find((c) => c.name == name);\r\n public isRequired = (name: string): boolean => this.getProp(name)?.validationRules?.some(c => c.rule == 'required') || false;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXPEntityCreateViewLoaderFactory {\r\n private entityService = inject(AXPEntityRegistryService);\r\n private formatService = inject(AXFormatService);\r\n private layout = inject(AXPLayoutService);\r\n private store = inject(Store);\r\n\r\n public async create(moduleName: string, entityName: string): Promise<AXPEntityCreateViewLoader> {\r\n const config = await this.entityService.resolve(moduleName, entityName);\r\n this.layout.setNavigationLoading(true);\r\n if (config.dataSource.byKey) {\r\n this.layout.setNavigationLoading(false);\r\n return new AXPEntityCreateLoaderDefault(config, this.store, this.formatService);\r\n }\r\n return Promise.reject('cannot fetch ');\r\n }\r\n}\r\n","import { AXPopupService } from '@acorex/components/popup';\r\nimport { AXPlatform } from '@acorex/core/platform';\r\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext, createWorkFlowEvent } from '@acorex/platform/workflow';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { AXPEntityCreateViewLoaderFactory } from '../entity-create-view/entity-create-view.config';\r\nimport { AXPEntityRegistryService } from '@acorex/platform/common';\r\n\r\nexport const AXPEntityCreateEvent = createWorkFlowEvent<{ module: string; entity: string }>('[Entity] Created!');\r\n\r\n@Injectable()\r\nexport class AXPEntityCreatePopupAction extends AXPWorkflowAction {\r\n private entityRegistery = inject(AXPEntityRegistryService);\r\n private popupService = inject(AXPopupService);\r\n private platform = inject(AXPlatform);\r\n private entityCreateFactory = inject(AXPEntityCreateViewLoaderFactory);\r\n\r\n async execute(context: AXPWorkflowContext): Promise<void> {\r\n const { module, entity: entityName } = context.getVariable('payload');\r\n const entity = await this.entityRegistery.resolve(module, entityName);\r\n\r\n const com = await import('../entity-create-view/entity-create-view.component');\r\n const result = await this.popupService.open(com.AXPEntityCreateViewComponent, {\r\n title: `Create New ${entity.title}`,\r\n size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',\r\n data: {\r\n loader: await this.entityCreateFactory.create(module, entityName),\r\n entity,\r\n },\r\n });\r\n if (result.data?.save) {\r\n context.setOutput('popupResult', true);\r\n context.setVariable('redirect', result.data.redirect);\r\n context.setVariable('id', result.data.recordId);\r\n }\r\n }\r\n}\r\n\r\nexport class AXPEntityCreateSubmittedAction extends AXPWorkflowAction {\r\n async execute(context: AXPWorkflowContext): Promise<void> {\r\n const { module, entity: entity } = context.getVariable('payload');\r\n this.dispatch(AXPEntityCreateEvent({ entity, module }));\r\n }\r\n}\r\n\r\nexport const AXPCreateEntityWorkflow: AXPWorkflow = {\r\n startStepId: 'createPopup',\r\n steps: {\r\n createPopup: {\r\n id: 'createPopup',\r\n action: 'AXPEntityCreatePopupAction',\r\n nextSteps: [\r\n {\r\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"popupResult\") == true' }],\r\n nextStepId: 'successToast',\r\n },\r\n ],\r\n },\r\n successToast: {\r\n id: 'successToast',\r\n action: 'AXPToastAction',\r\n input: {\r\n color: 'success',\r\n title: 'Entity Created',\r\n content: 'New Record has been successfully created.',\r\n },\r\n nextSteps: [\r\n {\r\n conditions: [],\r\n nextStepId: 'createSubmitted',\r\n },\r\n ],\r\n },\r\n createSubmitted: {\r\n id: 'createSubmitted',\r\n action: 'AXPEntityCreateSubmittedAction',\r\n nextSteps: [\r\n {\r\n conditions: [{ type: 'SINGLE', expression: 'context.getVariable(\"redirect\") == true' }],\r\n nextStepId: 'showDetailView',\r\n },\r\n ],\r\n },\r\n showDetailView: {\r\n id: 'showDetailView',\r\n action: 'AXPShowDetailViewAction',\r\n },\r\n },\r\n};\r\n","import { AXDialogService } from '@acorex/components/dialog';\r\nimport { AXLoadingDialogService } from '@acorex/components/loading-dialog';\r\nimport { AXPEntityRegistryService } from '@acorex/platform/common';\r\nimport {\r\n AXPWorkflow,\r\n AXPWorkflowAction,\r\n AXPWorkflowContext,\r\n AXPWorkflowFunction,\r\n createWorkFlowEvent,\r\n} from '@acorex/platform/workflow';\r\nimport { Injectable, inject } from '@angular/core';\r\n\r\nexport const AXPEntityDeletedEvent = createWorkFlowEvent<{ module: string; entity: string; id: string }>(\r\n '[Entity] Deleted'\r\n);\r\n\r\n@Injectable()\r\nexport class AXPEntityPerformDeleteAction extends AXPWorkflowAction {\r\n private entityRegistery = inject(AXPEntityRegistryService);\r\n private dialogService = inject(AXDialogService);\r\n private loadingDialog = inject(AXLoadingDialogService);\r\n\r\n async execute(context: AXPWorkflowContext): Promise<void> {\r\n const moduleName = context.getVariable('module');\r\n const entityName = context.getVariable('entity');\r\n const ids = context.getVariable('ids');\r\n const entity = await this.entityRegistery.resolve(moduleName, entityName);\r\n let deletedCount = 0;\r\n context.setVariable('deleteSuccessful', false);\r\n const dialog = this.loadingDialog.show({\r\n title: 'Deleting Record...',\r\n mode: 'determinate',\r\n status: 'Deleting...',\r\n progressValue: 0,\r\n text: `0/${ids.length}`,\r\n buttons: [\r\n {\r\n text: 'Cancel',\r\n color: 'danger',\r\n onClick: () => {\r\n dialog.close();\r\n },\r\n },\r\n ],\r\n });\r\n\r\n if (entity.commands?.delete != null) {\r\n const wrappedPromises = (ids as any[])\r\n .map((id, i) => {\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve(entity.commands?.delete?.(id));\r\n }, i * 200);\r\n });\r\n })\r\n .map((p) =>\r\n p?.then(\r\n (value) => {\r\n deletedCount++;\r\n dialog.setProgressText(`${deletedCount}/${ids.length}`);\r\n dialog.setProgressValue((deletedCount / ids.length) * 100);\r\n return { status: 'fulfilled', value };\r\n },\r\n (reason) => ({ status: 'rejected', reason })\r\n )\r\n );\r\n\r\n const results = await Promise.all(wrappedPromises);\r\n const successfulPromises = results.filter((result) => result?.status === 'fulfilled').length;\r\n const failedPromises = results.filter((result) => result?.status === 'rejected').length;\r\n setTimeout(() => {\r\n dialog.close();\r\n }, 300);\r\n\r\n // Handle different scenarios for alerts\r\n if (successfulPromises > 0 && failedPromises === 0) {\r\n // All items deleted successfully\r\n await this.dialogService.alert(\r\n 'Deletion Successful',\r\n `${successfulPromises} item(s) has been deleted.`,\r\n 'success'\r\n );\r\n // Dispatch actions\r\n this.dispatch(AXPEntityDeletedEvent({ module: moduleName, entity: entityName, id: ids }));\r\n } else if (successfulPromises > 0 && failedPromises > 0) {\r\n // Some items deleted successfully, some failed\r\n await this.dialogService.alert(\r\n 'Partial Deletion Completed',\r\n `${successfulPromises} item(s) deleted successfully. However, ${failedPromises} item(s) could not be deleted.`,\r\n 'warning'\r\n );\r\n // Dispatch actions\r\n this.dispatch(AXPEntityDeletedEvent({ module: moduleName, entity: entityName, id: ids }));\r\n } else if (successfulPromises === 0 && failedPromises > 0) {\r\n // No items deleted, all failed\r\n await this.dialogService.alert(\r\n 'Deletion Failed',\r\n `No items were deleted. ${failedPromises} item(s) failed to delete.`,\r\n 'danger'\r\n );\r\n } else {\r\n // No items to delete (no successful or failed promises)\r\n await this.dialogService.alert('No Deletion Needed', 'No items were available to delete.', 'info');\r\n }\r\n } else {\r\n throw new Error(\r\n `The delete operation cannot be performed on ${entity.title}. This action might be restricted or not applicable for the selected item.`\r\n );\r\n }\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class AXPMyCustomFunc extends AXPWorkflowFunction {\r\n private entityRegistery = inject(AXPEntityRegistryService);\r\n private dialogService = inject(AXDialogService);\r\n\r\n async execute(val: string): Promise<boolean> {\r\n return val == 'abc';\r\n }\r\n}\r\n\r\nexport const AXPDeleteEntityWorkflow: AXPWorkflow = {\r\n startStepId: 'confirmDelete',\r\n steps: {\r\n confirmDelete: {\r\n id: 'confirmDelete',\r\n action: 'AXPDialogConfirmAction',\r\n input: {\r\n title: 'Warning',\r\n message: `Are you sure want to delete selected item(s)?`,\r\n type: 'danger',\r\n },\r\n nextSteps: [\r\n {\r\n conditions: [\r\n {\r\n type: 'AND',\r\n conditions: [\r\n { type: 'SINGLE', expression: 'context.getOutput(\"deleteConfirmed\") == true' },\r\n { type: 'SINGLE', expression: 'await test(\"abc\")' },\r\n ],\r\n },\r\n ],\r\n nextStepId: 'performDelete',\r\n },\r\n ],\r\n },\r\n performDelete: {\r\n id: 'performDelete',\r\n action: 'AXPEntityPerformDeleteAction',\r\n },\r\n },\r\n};\r\n","import { AXActionSheetService } from '@acorex/components/action-sheet';\r\nimport { AXDataTableComponent, AXRowCommandItem, AXRowCommandItemClickEvent } from '@acorex/components/data-table';\r\nimport { AXDrawerComponent } from '@acorex/components/drawer';\r\nimport { AXPopupService } from '@acorex/components/popup';\r\nimport { AXPlatform } from '@acorex/core/platform';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport { AXClickEvent, AXValueChangedEvent } from '@acorex/components/common';\r\nimport { AXDataTableRowDbClick } from '@acorex/components/data-table/lib/base-data-table.class';\r\nimport { AXUnsubscriber } from '@acorex/core/utils';\r\nimport { AXPAdminLayoutState, AXPLayoutChildDrawerToggle, AXPLayoutService, AXP_MENU_LOADER } from '@acorex/platform/common';\r\nimport { AXPWorkflowService, ofType } from '@acorex/platform/workflow';\r\nimport { AXPEntityCreateEvent } from '../../entity-layout/workflows/create-entity.workflow';\r\nimport { AXPEntityDeletedEvent } from '../../entity-layout/workflows/delete-entity.workflow';\r\nimport { AXPEntityCreateCustomViewComponent } from './components/entity-custom-view/entity-custom-view.component';\r\nimport { AXPListViewLoader } from './list-view.config';\r\nimport { convertPropertiesToColumns } from '@acorex/platform/common';\r\n\r\n@Component({\r\n templateUrl: 'entity-list-view.component.html',\r\n styleUrls: ['entity-list-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [AXUnsubscriber],\r\n})\r\nexport class AXPEntityListViewComponent {\r\n private store = inject(Store<AXPAdminLayoutState>);\r\n private workflow = inject(AXPWorkflowService);\r\n private layout = inject(AXPLayoutService);\r\n private route = inject(ActivatedRoute);\r\n private manuLoader = inject(AXP_MENU_LOADER);\r\n\r\n protected loader = this.route.snapshot.data['loader'] as AXPListViewLoader;\r\n protected title: string = '';\r\n protected searchValue: string = '';\r\n protected searchBoxPlaceholder: string = '';\r\n protected searchBoxTitle: string = '';\r\n protected searchBoxCollapsed: boolean = true;\r\n\r\n protected publicViews$ = this.loader.publicViews$;\r\n protected customViews$ = this.loader.customViews$;\r\n protected hasCustomViews$ = this.loader.hasCustomViews$;\r\n protected view$ = this.loader.view$;\r\n //\r\n protected conditions$ = this.loader.conditions$;\r\n protected conditionsCount$ = this.loader.conditionsCount$;\r\n //\r\n protected columns$ = this.loader.displayColumns$;\r\n protected columnsCount$ = this.loader.displayColumnsCount$;\r\n //\r\n protected sort$ = this.loader.sorts$;\r\n protected sortCount$ = this.loader.sortsCount$;\r\n //\r\n protected dataSource = this.loader.dataSource;\r\n //\r\n protected canDelete = this.loader.entity.editOptions?.delete ?? true;\r\n protected canCreate = this.loader.entity.editOptions?.create ?? true;\r\n protected canUpdate = this.loader.entity.editOptions?.update ?? true;\r\n //\r\n protected focusedRow: any;\r\n //\r\n @ViewChild('viewsTemplate') viewsTemplate!: TemplateRef<unknown>;\r\n // @ViewChild('grid') grid!: AXDataTableComponent;\r\n @ViewChild('grid') grid!: AXDataTableComponent;\r\n @ViewChild('entityViewDrawer') entityViewDrawer!: AXDrawerComponent;\r\n\r\n private popupService = inject(AXPopupService);\r\n\r\n constructor(\r\n private actionSheetService: AXActionSheetService,\r\n private unsubscriber: AXUnsubscriber,\r\n protected platform: AXPlatform,\r\n protected cdr: ChangeDetectorRef\r\n ) {\r\n //TODO: namespace, module name issues\r\n this.title = this.manuLoader.currentMenuItem()?.text ?? this.loader.entity.formats?.list ?? this.loader.entity.formats?.default ?? 'Title';\r\n //\r\n\r\n this.workflow.events$.pipe(ofType(AXPEntityDeletedEvent, AXPEntityCreateEvent), this.unsubscriber.takeUntilDestroy).subscribe((event) => {\r\n if (event.payload.entity == this.loader.entity.name && event.payload.module == this.loader.entity.module) {\r\n this.grid.selectedRows = [];\r\n this.grid?.refresh();\r\n }\r\n });\r\n //\r\n this.dataSource.onLoadingChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe((value) => {\r\n this.layout.setNavigationLoading(value);\r\n });\r\n this._getInlineConditionTitles();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.loader.setDefaultView();\r\n }\r\n\r\n _getInlineConditionTitles() {\r\n const titles = this.loader.getInlineFilterTitles();\r\n this.searchBoxTitle = titles.join(', ');\r\n if (titles.length > 2) this.searchBoxPlaceholder = titles.slice(0, 2).join(', ') + ' ...';\r\n else this.searchBoxPlaceholder = titles.join(', ');\r\n }\r\n\r\n _handleViewsPopover() {\r\n this.actionSheetService.open({ content: this.viewsTemplate });\r\n }\r\n\r\n handleDrawerClick() {\r\n this.store.dispatch(AXPLayoutChildDrawerToggle());\r\n }\r\n\r\n toggleSearchBox() {\r\n this.searchBoxCollapsed = !this.searchBoxCollapsed;\r\n }\r\n\r\n private dropdownRowItems: AXRowCommandItem[] = [\r\n {\r\n text: 'Details',\r\n icon: 'fa-solid fa-eye',\r\n name: 'edit',\r\n divided: true,\r\n },\r\n {\r\n text: 'Delete',\r\n icon: 'fa-solid fa-trash-can',\r\n name: 'delete',\r\n color: 'danger',\r\n disabled: !this.canDelete,\r\n },\r\n ];\r\n\r\n private inlineRowItems: AXRowCommandItem[] = [\r\n {\r\n text: 'View',\r\n icon: 'fa-solid fa-eye',\r\n name: 'view',\r\n divided: true,\r\n },\r\n ];\r\n\r\n protected getDropdownRowItems = (rowData: unknown): Promise<AXRowCommandItem[]> => {\r\n return Promise.resolve(this.dropdownRowItems);\r\n };\r\n\r\n protected getInlineRowItems = (rowData: unknown): AXRowCommandItem[] => {\r\n return this.inlineRowItems;\r\n };\r\n\r\n protected handleRowDbClick(e: AXDataTableRowDbClick) {\r\n const d: AXRowCommandItemClickEvent = {\r\n component: e.component,\r\n name: this.dropdownRowItems[0].name,\r\n data: e.data,\r\n };\r\n this.handleRowCommandClick(d);\r\n }\r\n\r\n protected async handleRowCommandClick(e: AXRowCommandItemClickEvent) {\r\n switch (e.name) {\r\n case 'view': {\r\n await this.workflow.execute('show-quick-view', {\r\n payload: {\r\n module: this.loader.entity.module,\r\n entity: this.loader.entity.name,\r\n data: e.data,\r\n },\r\n });\r\n break;\r\n }\r\n case 'edit': {\r\n await this.workflow.execute('show-details', {\r\n payload: {\r\n module: this.loader.entity.module,\r\n entity: this.loader.entity.name,\r\n },\r\n id: e.data.id,\r\n });\r\n break;\r\n }\r\n case 'delete': {\r\n await this.workflow.execute('delete-entity', {\r\n module: this.loader.entity.module,\r\n entity: this.loader.entity.name,\r\n ids: [e.data.id],\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n\r\n protected handleCreateClick() {\r\n this.workflow.execute('create-entity', {\r\n payload: {\r\n module: this.loader.entity.module,\r\n entity: this.loader.entity.name,\r\n },\r\n });\r\n }\r\n\r\n protected handleCommandClick(command: string) {\r\n switch (command) {\r\n case 'delete':\r\n this.workflow.execute('delete-entity', {\r\n module: this.loader.entity.module,\r\n entity: this.loader.entity.name,\r\n ids: this.grid.selectedRows.map((c) => (c as any)['id']),\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n protected clearSelectedItems() {\r\n this.grid.selectedRows = [];\r\n }\r\n\r\n protected closeDrawer(name: string, collapsed: boolean) {\r\n if (collapsed != false) {\r\n switch (name) {\r\n case 'conditions':\r\n this.loader.resetConditions();\r\n break;\r\n case 'columns':\r\n this.loader.resetColumns();\r\n break;\r\n case 'sorts':\r\n this.loader.resetSort();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n\r\n handleChangeSearchValue(e: AXValueChangedEvent) {\r\n if (e.isUserInteraction) {\r\n this.loader.handleInlineSearch(e.value);\r\n }\r\n }\r\n\r\n protected async addCustomViewPopup() {\r\n const newView = {\r\n name: 'custom-view',\r\n title: 'Custom View',\r\n fixed: false,\r\n sorts: [],\r\n columns: convertPropertiesToColumns(...this.loader.entity.properties),\r\n conditions: [],\r\n };\r\n\r\n const popup = await this.popupService.open(AXPEntityCreateCustomViewComponent, {\r\n title: 'Create Custom View',\r\n size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',\r\n closeOnBackdropClick: true,\r\n draggable: false,\r\n data: {\r\n loader: this.loader,\r\n selectedView: newView,\r\n mode: 'create',\r\n },\r\n });\r\n if (popup.data?.save == true) {\r\n console.log('updatedView: ', popup.data.updatedView);\r\n this.loader.createView(popup.data.updatedView);\r\n }\r\n }\r\n protected async updateViewPopup(e: AXClickEvent, selectedView: any) {\r\n // (e.nativeEvent as UIEvent).stopPropagation();\r\n const popup = await this.popupService.open(AXPEntityCreateCustomViewComponent, {\r\n title: 'Modify Custom View',\r\n size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',\r\n closeOnBackdropClick: true,\r\n draggable: false,\r\n data: {\r\n loader: this.loader,\r\n selectedView,\r\n mode: 'edit',\r\n },\r\n });\r\n if (popup.data?.delete == true) {\r\n this.loader.deleteView(popup.data.viewName);\r\n }\r\n if (popup.data?.save == true) {\r\n console.log('updatedView: ', popup.data.updatedView);\r\n this.loader.updateView(popup.data.updatedView);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.dataSource.reset();\r\n }\r\n}\r\n","<ax-drawer-container>\r\n <!-- <ax-drawer #drawer location=\"start\" [collapsed]=\"true\" [mode]=\"platform.is('SM') ? 'overlay' : 'push'\">\r\n <ax-content class=\"ax-w-64 ax-border-e\">\r\n <div class=\"ax-p-6 ax-py-4 ax-gap-6 ax-flex ax-flex-col\">\r\n <p class=\"ax-text-2xl ax-font-bold\">Folders</p>\r\n <ax-side-menu>\r\n <ng-container *ngFor=\"let node of menuItems\" [ngTemplateOutlet]=\"sideMenu\"\r\n [ngTemplateOutletContext]=\"{ $implicit: node }\">\r\n </ng-container>\r\n </ax-side-menu>\r\n <ng-template #sideMenu let-item>\r\n <ax-side-menu-item [text]=\"item.text\">\r\n <ax-prefix>\r\n <ax-icon class=\"fa-solid fa-folder ax-text-warning-500\"></ax-icon>\r\n </ax-prefix>\r\n <ng-container *ngIf=\"item.children\">\r\n <ng-container *ngFor=\"let child of item.children\" [ngTemplateOutlet]=\"sideMenu\"\r\n [ngTemplateOutletContext]=\"{ $implicit: child }\">\r\n </ng-container>\r\n </ng-container>\r\n </ax-side-menu-item>\r\n </ng-template>\r\n </div>\r\n </ax-content>\r\n </ax-drawer> -->\r\n <ax-content class=\"ax-flex ax-flex-col ax-overflow-hidden\">\r\n <div\r\n class=\"ax-flex ax-flex-col ax-gap-0 md:ax-gap-4 ax-px-4 ax-py-3 md:ax-py-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\">\r\n @if(platform.is('MD')){\r\n <div class=\"ax-flex ax-justify-between ax-mb-4\">\r\n @if(this.grid?.selectedRows?.length==0){\r\n <div class=\"ax-text-xl ax-font-bold\">{{ title }}</div>\r\n <div class=\"ax-flex ax-items-center ax-gap-2\">\r\n @if(canCreate)\r\n {\r\n <ax-button color=\"primary\" class=\"ax-sm\" (onClick)=\"handleCreateClick()\">\r\n <ax-icon class=\"fa-solid fa-add\"></ax-icon>\r\n </ax-button>\r\n }\r\n <ax-button color=\"ghost\" class=\"ax-sm\" #more>\r\n <ax-icon class=\"fa-solid fa-ellipsis-vertical\"> </ax-icon>\r\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\r\n <ax-button-item-list>\r\n <ax-button-item text=\"Export\" class=\"ax-font-semibold\">\r\n <ax-prefix>\r\n <ax-icon icon=\"fa-solid fa-file-export\"> </ax-icon>\r\n </ax-prefix>\r\n </ax-button-item>\r\n </ax-button-item-list>\r\n </ax-dropdown-panel>\r\n </ax-button>\r\n </div>\r\n }@else {\r\n <div class=\"ax-flex ax-items-center ax-gap-3\">\r\n <span class=\"ax-text-xl ax-font-bold\"> {{ this.grid?.selectedRows?.length }} Items Selected </span>\r\n <span (click)=\"clearSelectedItems()\"\r\n class=\"ax-text-sm ax-text-primary dark:ax-text-primary-300 ax-underline ax-cursor-pointer\">Clear\r\n Items</span>\r\n </div>\r\n <div class=\"ax-flex ax-items-center ax-gap-2\">\r\n @if(canDelete)\r\n {\r\n <ax-button color=\"danger\" class=\"ax-sm\" (onClick)=\"handleCommandClick('delete')\">\r\n <ax-icon class=\"fa-solid fa-trash\"> </ax-icon>\r\n </ax-button>\r\n }\r\n <ax-button color=\"ghost\" class=\"ax-sm\" #more>\r\n <ax-icon class=\"fa-solid fa-ellipsis-vertical\"> </ax-icon>\r\n </ax-button>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"ax-flex ax-items-center ax-justify-between\">\r\n <ax-button [disabled]=\"this.grid?.selectedRows?.length != 0\" [text]=\"(view$ | async)?.title\" color=\"ghost\">\r\n <ax-icon class=\"fa-solid fa-eye ax-text-neutral-400\"> </ax-icon>\r\n <ax-suffix>\r\n <i class=\"fa-solid fa-caret-down\"></i>\r\n </ax-suffix>\r\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\r\n <ax-button-item-list class=\"ax-bg-surface\">\r\n <ax-title class=\"ax-font-bold ax-opacity-100\">Public Views</ax-title>\r\n <ax-button-item *ngFor=\"let v of publicViews$ | async\" [text]=\"v.title\"\r\n [class.ax-bg-on-surface]=\"(view$ | async) == v\" (onClick)=\"loader.setView(v.name)\"></ax-button-item>\r\n <ax-title class=\"ax-font-bold ax-opacity-100\" *ngIf=\"hasCustomViews$ | async\">Created by me</ax-title>\r\n <ax-button-item *ngFor=\"let v of customViews$ | async\" [text]=\"v.title\"\r\n [class.ax-bg-on-surface]=\"(view$ | async) == v\" (onClick)=\"loader.setView(v.name)\"></ax-button-item>\r\n <ng-container *feature=\"'axp-entity-list-custom-view'\">\r\n <ax-divider></ax-divider>\r\n <ax-button-item (onClick)=\"addCustomViewPopup()\" text=\"Add Custom View\"\r\n class=\"ax-font-semibold ax-text-primary\"></ax-button-item>\r\n </ng-container>\r\n </ax-button-item-list>\r\n </ax-dropdown-panel>\r\n </ax-button>\r\n <div class=\"ax-flex ax-gap-2\">\r\n @if(searchBoxTitle){\r\n <ax-button *feature=\"'axp-entity-list-quick-search'\" (onClick)=\"toggleSearchBox()\"\r\n [disabled]=\"this.grid?.selectedRows?.length != 0\" color=\"ghost\">\r\n <ax-icon class=\"fa-solid fa-search ax-text-neutral-400\"> </ax-icon>\r\n </ax-button>\r\n }\r\n <ax-button [disabled]=\"this.grid?.selectedRows?.length != 0\" color=\"ghost\" (onClick)=\"columnsDrawer.open()\">\r\n <ax-icon class=\"fa-solid fa-bars ax-text-neutral-400\"> </ax-icon>\r\n </ax-button>\r\n <ax-button [disabled]=\"this.grid?.selectedRows?.length != 0\" color=\"ghost\"\r\n (onClick)=\"conditionsDrawer.open()\">\r\n <ax-icon class=\"fa-solid fa-sliders ax-text-neutral-400\"> </ax-icon>\r\n @if ((conditionsCount$ | async)) {\r\n <ax-suffix>\r\n <ax-badge [color]=\"'primary'\"></ax-badge>\r\n </ax-suffix>\r\n }\r\n </ax-button>\r\n <ax-button [disabled]=\"this.grid?.selectedRows?.length != 0\" color=\"ghost\" (onClick)=\"sortsDrawer.open()\">\r\n <ax-icon class=\"fa-solid fa-bars-sort ax-text-neutral-400\"> </ax-icon>\r\n @if ((sortCount$ | async)) {\r\n <ax-suffix>\r\n <ax-badge [color]=\"'primary'\"></ax-badge>\r\n </ax-suffix>\r\n }\r\n </ax-button>\r\n </div>\r\n </div>\r\n <div *feature=\"'axp-entity-list-quick-search'\" [class.collapsed-search-box]=\"searchBoxCollapsed\"\r\n class=\"ax-transition-all ax-mt-4\">\r\n <ax-search-box [title]=\"searchBoxTitle\"\r\n [placeholder]=\"'Search on ' + searchBoxPlaceholder\"><ax-clear-button></ax-clear-button></ax-search-box>\r\n </div>\r\n } @else {\r\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-3\">\r\n <div class=\"ax-text-xl md:ax-text-3xl ax-font-bold ax-mb-2\">{{ title }}</div>\r\n @if(this.grid?.selectedRows?.length==0){\r\n <div class=\"ax-flex ax-gap-3\">\r\n @if(canCreate)\r\n {\r\n <ax-button text=\"Create New\" color=\"primary\" (onClick)=\"handleCreateClick()\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-add\"></i>\r\n </ax-prefix>\r\n </ax-button>\r\n }\r\n <ax-button text=\"Actions\" color=\"ghost\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\r\n </ax-prefix>\r\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\r\n <ax-button-item-list>\r\n <ax-button-item text=\"Export\" class=\"ax-font-semibold\">\r\n <ax-prefix>\r\n <ax-icon icon=\"fa-solid fa-file-export\"> </ax-icon>\r\n </ax-prefix>\r\n </ax-button-item>\r\n </ax-button-item-list>\r\n </ax-dropdown-panel>\r\n </ax-button>\r\n </div>\r\n }@else {\r\n <div class=\"ax-flex ax-gap-3\">\r\n @if(canDelete)\r\n {\r\n <ax-button text=\"Delete Items\" color=\"danger\" (onClick)=\"handleCommandClick('delete')\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-trash\"></i>\r\n </ax-prefix>\r\n </ax-button>\r\n }\r\n <ax-button text=\"Actions\" color=\"ghost\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\r\n </ax-prefix>\r\n </ax-button>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"ax-flex ax-items-center ax-justify-between\">\r\n <!----------------------- View Mode --------------------->\r\n @if(this.grid?.selectedRows?.length==0) {\r\n <div class=\"ax-flex ax-w-full ax-justify-between ax-gap-3\">\r\n <div class=\"ax-flex ax-gap-3\">\r\n <ax-button [text]=\"(view$ | async)?.title\" #views color=\"ghost\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-eye\"></i>\r\n </ax-prefix>\r\n <ax-suffix>\r\n <i class=\"fa-solid fa-caret-down\"></i>\r\n </ax-suffix>\r\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\r\n <ax-button-item-list class=\"ax-bg-surface\">\r\n <ax-title class=\"ax-font-bold ax-opacity-100\">Public Views</ax-title>\r\n <ax-button-item *ngFor=\"let v of publicViews$ | async\" [text]=\"v.title\"\r\n [class.ax-bg-on-surface]=\"(view$ | async) == v\" (onClick)=\"loader.setView(v.name)\"></ax-button-item>\r\n <ax-title class=\"ax-font-bold ax-opacity-100\" *ngIf=\"hasCustomViews$ | async\">Created by me</ax-title>\r\n <ax-button-item class=\"ax-pe-4 ax-flex ax-justify-between\" *ngFor=\"let v of customViews$ | async\"\r\n [text]=\"v.title\" [class.ax-bg-on-surface]=\"(view$ | async) == v\" (onClick)=\"loader.setView(v.name)\">\r\n <ax-suffix>\r\n <ax-button (onClick)=\"updateViewPopup($event, v)\" class=\"ax-xs\" look=\"none\">\r\n <ax-icon class=\"far fa-edit\"> </ax-icon>\r\n </ax-button>\r\n </ax-suffix>\r\n </ax-button-item>\r\n <ng-container *feature=\"'axp-entity-list-custom-view'\">\r\n <ax-divider></ax-divider>\r\n <ax-button-item text=\"Add Custom View\" (onClick)=\"addCustomViewPopup()\"\r\n class=\"ax-font-semibold ax-text-primary\"></ax-button-item>\r\n </ng-container>\r\n </ax-button-item-list>\r\n </ax-dropdown-panel>\r\n </ax-button>\r\n @if(searchBoxTitle){\r\n <div class=\"ax-w-72\" *feature=\"'axp-entity-list-quick-search'\">\r\n <ax-search-box [title]=\"searchBoxTitle\" [(ngModel)]=\"searchValue\"\r\n (onValueChanged)=\"handleChangeSearchValue($event)\"\r\n [placeholder]=\"'Search on ' + searchBoxPlaceholder\"><ax-clear-button></ax-clear-button></ax-search-box>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"ax-flex ax-gap-3\">\r\n <ax-button text=\"Columns\" color=\"ghost\" #columns (onClick)=\"columnsDrawer.open()\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-bars\"></i>\r\n </ax-prefix>\r\n <ax-suffix>\r\n <ax-badge text=\"{{ columnsCount$ | async }}\" color=\"primary\"></ax-badge>\r\n </ax-suffix>\r\n </ax-button>\r\n <ax-button text=\"Filters\" color=\"ghost\" (onClick)=\"conditionsDrawer.open()\" #conditions>\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-sliders\"></i>\r\n </ax-prefix>\r\n <ax-suffix>\r\n <ax-badge text=\"{{ conditionsCount$ | async }}\" color=\"primary\"></ax-badge>\r\n </ax-suffix>\r\n </ax-button>\r\n <ax-button text=\"Sort\" color=\"ghost\" (onClick)=\"sortsDrawer.open()\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-bars-sort\"></i>\r\n </ax-prefix>\r\n <ax-suffix *ngIf=\"(sortCount$ | async)! > 0\">\r\n <ax-badge text=\"{{ sortCount$ | async }}\" color=\"primary\"></ax-badge>\r\n </ax-suffix>\r\n </ax-button>\r\n </div>\r\n </div>\r\n\r\n } @else{\r\n <!----------------------- Selection Mode --------------------->\r\n <div>\r\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\r\n <span class=\"ax-text-xl ax-font-bold\"> {{ this.grid?.selectedRows?.length }} Items Selected </span>\r\n <span (click)=\"clearSelectedItems()\"\r\n class=\"ax-text-sm ax-text-primary dark:ax-text-primary-300 ax-underline ax-cursor-pointer\">Clear\r\n Items</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"ax-flex-1 ax-px-6 ax-py-4 ax-flex ax-overflow-auto\">\r\n <ax-data-table #grid [showFooter]=\"false\" class=\"ax-flex-1\" [dataSource]=\"dataSource\" [paging]=\"true\"\r\n [fetchDataMode]=\"'manual'\" (onRowDbClick)=\"handleRowDbClick($event)\"\r\n [loading]=\"{ enabled: true, animation: true }\">\r\n <!-- <ax-index-column *ngIf=\"!platform.is('SM')\" [width]=\"'85px'\"></ax-index-column> -->\r\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\r\n @for(col of (columns$ | async);track col.name) {\r\n <axp-widget-column-renderer *ngIf=\"col.visible\" [schema]=\"col.schema\" [dataField]=\"col.name\"\r\n [caption]=\"col.title\" [options]=\"col.options\" [displayFormat]=\"col.displayFormat\" width=\"180px\"\r\n [allowSorting]=\"false\">\r\n </axp-widget-column-renderer>\r\n }\r\n <ax-dropdown-command-column fixed=\"end\" [width]=\"'60px'\" [items]=\"getDropdownRowItems\"\r\n (onItemClick)=\"handleRowCommandClick($event)\"></ax-dropdown-command-column>\r\n <ax-command-column fixed=\"end\" [width]=\"'60px'\" [items]=\"getInlineRowItems\"\r\n (onItemClick)=\"handleRowCommandClick($event)\"></ax-command-column>\r\n </ax-data-table>\r\n </div>\r\n </ax-content>\r\n <ax-drawer (collapsedChange)=\"closeDrawer('columns', $event)\" #columnsDrawer location=\"end\" [mode]=\"'overlay'\">\r\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[20vw] ax-border-e\">\r\n <axp-list-view-option-columns [loader]=\"loader\" (onClosed)=\"columnsDrawer.close()\"></axp-list-view-option-columns>\r\n </ax-content>\r\n </ax-drawer>\r\n <ax-drawer (collapsedChange)=\"closeDrawer('conditions', $event)\" #conditionsDrawer location=\"end\" [mode]=\"'overlay'\">\r\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[25vw] ax-border-e\">\r\n <axp-list-view-option-conditions [loader]=\"loader\"\r\n (onClosed)=\"conditionsDrawer.close()\"></axp-list-view-option-conditions>\r\n </ax-content>\r\n </ax-drawer>\r\n <ax-drawer (collapsedChange)=\"closeDrawer('sorts', $event)\" #sortsDrawer location=\"end\" [mode]=\"'overlay'\">\r\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[20vw] ax-border-e\">\r\n <axp-list-view-option-sorting (onClosed)=\"sortsDrawer.close()\" [loader]=\"loader\"></axp-list-view-option-sorting>\r\n </ax-content>\r\n </ax-drawer>\r\n</ax-drawer-container>","import { AXActionSheetModule } from '@acorex/components/action-sheet';\r\nimport { AXBadgeModule } from '@acorex/components/badge';\r\nimport { AXButtonModule } from '@acorex/components/button';\r\nimport { AXCollapseModule } from '@acorex/components/collapse';\r\nimport { AXCommonModule } from '@acorex/components/common';\r\nimport { AXDataTableModule } from '@acorex/components/data-table';\r\nimport { AXDecoratorModule } from '@acorex/components/decorators';\r\nimport { AXDialogModule } from '@acorex/components/dialog';\r\nimport { AXDrawerModule } from '@acorex/components/drawer';\r\nimport { AXDropdownModule } from '@acorex/components/dropdown';\r\nimport { AXFormModule } from '@acorex/components/form';\r\nimport { AXImageModule } from '@acorex/components/image';\r\nimport { AXListModule } from '@acorex/components/list';\r\nimport { AXLoadingModule } from '@acorex/components/loading';\r\nimport { AXPopoverModule } from '@acorex/components/popover';\r\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\r\nimport { AXSwitchModule } from '@acorex/components/switch';\r\nimport { AXTabsModule } from '@acorex/components/tabs';\r\nimport { AXTextBoxModule } from '@acorex/components/text-box';\r\nimport { CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDropList } from '@angular/cdk/drag-drop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport {\r\n AXPListViewOptionConditionsComponent,\r\n AXPListViewOptionFilterOperatorComponent,\r\n AXPListViewOptionSortingComponent,\r\n AXPListViewOptionsColumnsComponent,\r\n} from './components';\r\nimport { AXPEntityListViewComponent } from './entity-list-view.component';\r\n\r\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\r\nimport { AXLabelModule } from '@acorex/components/label';\r\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\r\nimport { AXSelectionListModule } from '@acorex/components/selection-list';\r\nimport { AXPCommonWidgetModule, AXPSchemaModule } from '@acorex/platform/common';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { AXPEntityCreateCustomViewComponent } from './components/entity-custom-view/entity-custom-view.component';\r\nimport { AXPAuthModule } from '@acorex/platform/auth';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n AXCommonModule,\r\n AXDataTableModule,\r\n AXButtonModule,\r\n AXDecoratorModule,\r\n AXBadgeModule,\r\n AXDropdownModule,\r\n AXPopoverModule,\r\n AXImageModule,\r\n AXSwitchModule,\r\n AXDrawerModule,\r\n AXLoadingModule,\r\n AXTabsModule,\r\n AXSelectBoxModule,\r\n AXFormModule,\r\n AXListModule,\r\n AXTextBoxModule,\r\n AXSearchBoxModule,\r\n AXLabelModule,\r\n AXCollapseModule,\r\n AXActionSheetModule,\r\n AXSelectionListModule,\r\n AXImageModule,\r\n AXDialogModule,\r\n AXDropdownButtonModule,\r\n //\r\n CdkDropList,\r\n CdkDrag,\r\n CdkDragPlaceholder,\r\n CdkDragHandle,\r\n PortalModule,\r\n AXPSchemaModule,\r\n AXPCommonWidgetModule,\r\n AXPAuthModule\r\n ],\r\n declarations: [\r\n AXPEntityListViewComponent,\r\n AXPEntityCreateCustomViewComponent,\r\n AXPListViewOptionsColumnsComponent,\r\n AXPListViewOptionConditionsComponent,\r\n AXPListViewOptionFilterOperatorComponent,\r\n AXPListViewOptionSortingComponent,\r\n ],\r\n providers: [],\r\n})\r\nexport class AXPListViewModule { }\r\n","import { AXDataSource, AXDataSourceFilterOption, AXDataSourceSortOption } from '@acorex/components/common';\r\nimport { AXPEntityConfig, AXPEntityListColumnConfig, AXPEntityListConditionConfig, AXPEntityListDisplayColumnConfig, AXPEntityListSortConfig, AXPEntityListViewConfig, AXPEntityListViewConfigEmpty, AXPEntityPropertyConfig, AXPEntityRegistryService, AXPSchemaRegistryService } from '@acorex/platform/common';\r\nimport { Injectable, InjectionToken, inject } from '@angular/core';\r\nimport { cloneDeep } from 'lodash-es';\r\nimport { BehaviorSubject, Observable, defaultIfEmpty, first, map, of, switchMap } from 'rxjs';\r\n\r\nimport { AXPLayoutService } from '@acorex/platform/common';\r\n\r\nexport interface AXPListViewLoader {\r\n get properties$(): Observable<AXPEntityPropertyConfig[]>;\r\n getProp(name: string): AXPEntityPropertyConfig | undefined;\r\n\r\n get views$(): Observable<AXPEntityListViewConfig[]>;\r\n get publicViews$(): Observable<AXPEntityListViewConfig[]>;\r\n get customViews$(): Observable<AXPEntityListViewConfig[]>;\r\n get hasCustomViews$(): Observable<boolean>;\r\n get view$(): Observable<AXPEntityListViewConfig>;\r\n setDefaultView(): void;\r\n setView(name: string): void;\r\n createView(view: AXPEntityListViewConfig): void;\r\n updateView(view: AXPEntityListViewConfig): void;\r\n deleteView(viewName: string): void;\r\n\r\n get columns$(): Observable<AXPEntityListColumnConfig[]>;\r\n get displayColumns$(): Observable<AXPEntityListDisplayColumnConfig[]>;\r\n get displayColumnsCount$(): Observable<number>;\r\n setColumnVisibility(name: string, visible: boolean): void;\r\n updateColumns(items: AXPEntityListDisplayColumnConfig[]): void;\r\n resetColumns(): void;\r\n\r\n get sorts$(): Observable<AXPEntityListSortConfig[]>;\r\n get sortsCount$(): Observable<number>;\r\n addSort(): void;\r\n resetSort(): void;\r\n removeSort(item: AXPEntityListSortConfig): void;\r\n updateSort(items: AXPEntityListSortConfig[]): void;\r\n\r\n get conditions$(): Observable<AXPEntityListConditionConfig[]>;\r\n get conditionsCount$(): Observable<number>;\r\n getInlineFilterTitles(): string[];\r\n\r\n addCondition(selectedFields: { name: string; opr: string }[]): void;\r\n resetConditions(): void;\r\n removeCondition(item: AXPEntityListConditionConfig): void;\r\n handleInlineSearch(value: string): void;\r\n updateConditions(items: AXPEntityListConditionConfig[]): void;\r\n\r\n get dataSource(): AXDataSource;\r\n get entity(): AXPEntityConfig;\r\n}\r\n\r\nexport class AXPListViewLoaderDefault implements AXPListViewLoader {\r\n private _config!: AXPEntityConfig;\r\n private _dataSource: AXDataSource = new AXDataSource(this.entity.dataSource);\r\n private _inlineFilterItems: { name: string; dataType: string | undefined; title: string }[] = [];\r\n\r\n constructor(private config: AXPEntityConfig, private schemaService: AXPSchemaRegistryService) {\r\n this._inlineFilterItems = this.entity.properties\r\n .filter((property) => property.canInlineFilter)\r\n .map((item) => {\r\n const schema = this.schemaService.resolve(item.schema);\r\n return { name: item.name, dataType: schema?.dataType, title: item.title };\r\n });\r\n }\r\n\r\n get entity(): AXPEntityConfig {\r\n if (!this._config) {\r\n this._config = cloneDeep(this.config);\r\n }\r\n return this._config;\r\n }\r\n\r\n get dataSource(): AXDataSource {\r\n return this._dataSource;\r\n }\r\n\r\n //****************** Properties ******************//\r\n private get props(): AXPEntityPropertyConfig[] {\r\n return this.entity.properties;\r\n }\r\n private _props$ = new BehaviorSubject<AXPEntityPropertyConfig[]>(this.props);\r\n\r\n public get properties$(): Observable<AXPEntityPropertyConfig[]> {\r\n return this._props$;\r\n }\r\n\r\n public getProp = (name: string): AXPEntityPropertyConfig | undefined => this.entity.properties.find((c) => c.name == name);\r\n\r\n //****************** Views ******************//\r\n\r\n private _currentView = 'default';\r\n\r\n private get views() {\r\n return this.entity.views.list?.views!;\r\n }\r\n\r\n private _views$ = new BehaviorSubject<AXPEntityListViewConfig[]>(this.views);\r\n public get views$(): Observable<AXPEntityListViewConfig[]> {\r\n return this._views$;\r\n }\r\n public get view$(): Observable<AXPEntityListViewConfig> {\r\n return this.views$.pipe(\r\n switchMap((views) => {\r\n const view = views.find((c) => c.name === this._currentView);\r\n if (view) {\r\n return of(view);\r\n } else if (this.views.length > 0) {\r\n return of(this.views[0]);\r\n } else {\r\n return of(AXPEntityListViewConfigEmpty);\r\n }\r\n })\r\n );\r\n }\r\n\r\n public get publicViews$(): Observable<AXPEntityListViewConfig[]> {\r\n return this.views$.pipe(map((c) => c.filter((v) => v.fixed)));\r\n }\r\n\r\n public get customViews$(): Observable<AXPEntityListViewConfig[]> {\r\n return this.views$.pipe(map((c) => c.filter((v) => !v.fixed)));\r\n }\r\n\r\n public get hasCustomViews$(): Observable<boolean> {\r\n return this.customViews$.pipe(map((c) => c.length > 0));\r\n }\r\n\r\n public setDefaultView() {\r\n this.setView(this.views[0].name);\r\n }\r\n\r\n public setView(name: string): void {\r\n let propNames: string[] = [];\r\n this.properties$.pipe(first()).subscribe((properties) => {\r\n propNames = properties.map((p) => p.name);\r\n });\r\n this._currentView = name;\r\n const updatedView = this._views$.value.find((c) => c.name === this._currentView) || AXPEntityListViewConfigEmpty;\r\n const currentViews = this._views$.value;\r\n const updatedViews = currentViews.map((view) => {\r\n if (view.name === updatedView.name) {\r\n return updatedView;\r\n } else {\r\n return view;\r\n }\r\n });\r\n\r\n this._currentConditions$.next(cloneDeep(updatedView.conditions.filter((c) => propNames.includes(c.name))));\r\n this._currentSorts$.next(cloneDeep(updatedView.sorts.filter((s) => propNames.includes(s.name))));\r\n // this._columns$.next(updatedView.columns);\r\n this._currentDisplayColumns$.next(cloneDeep(updatedView.columns.filter((c) => propNames.includes(c.name))));\r\n this._views$.next(updatedViews);\r\n\r\n //apply conditions and sorts:\r\n this.dataSource.filter({\r\n field: null as any,\r\n logic: 'and',\r\n operator: null as any,\r\n filters: updatedView.conditions.map((c) => ({\r\n field: c.name,\r\n value: c.value,\r\n operator: { type: c.operator },\r\n })) as any,\r\n });\r\n const convertedSortItems: AXDataSourceSortOption[] = updatedView.sorts.map((s) => ({\r\n field: s.name,\r\n dir: s.dir,\r\n }));\r\n this.dataSource.sort(...convertedSortItems);\r\n\r\n this.dataSource.refresh();\r\n }\r\n\r\n createView(newView: AXPEntityListViewConfig): void {\r\n const currentViews = this._views$.getValue();\r\n currentViews.push(newView);\r\n this._views$.next(currentViews);\r\n this.setView(newView.name);\r\n }\r\n updateView(updatedView: AXPEntityListViewConfig): void {\r\n const currentViews = this._views$.getValue().map((view) => (view.name === updatedView.name ? updatedView : view));\r\n this._views$.next(currentViews);\r\n this.setView(updatedView.name);\r\n }\r\n deleteView(viewName: string): void {\r\n const currentViews = this._views$.getValue().filter((view) => view.name !== viewName);\r\n this._views$.next(currentViews);\r\n this.setView(this.views[0].name);\r\n }\r\n\r\n //****************** Columns ******************//\r\n\r\n private _currentDisplayColumns$ = new BehaviorSubject<AXPEntityListDisplayColumnConfig[]>([]);\r\n\r\n private get columns(): AXPEntityListColumnConfig[] {\r\n return this.entity.properties.map((p) => ({\r\n name: p.name,\r\n title: p.title,\r\n schema: p.schema,\r\n }));\r\n }\r\n\r\n private _columns$ = new BehaviorSubject<AXPEntityListColumnConfig[]>(this.columns);\r\n\r\n public get columns$(): Observable<AXPEntityListColumnConfig[]> {\r\n return this._columns$.pipe(defaultIfEmpty([]));\r\n }\r\n\r\n public get displayColumns$(): Observable<AXPEntityListDisplayColumnConfig[]> {\r\n return this._currentDisplayColumns$.pipe(defaultIfEmpty([]));\r\n }\r\n\r\n public get displayColumnsCount$(): Observable<number> {\r\n return this.view$.pipe(\r\n map((view) => {\r\n return view.columns.filter((column) => column.visible).length;\r\n })\r\n );\r\n }\r\n\r\n updateColumns(items: AXPEntityListDisplayColumnConfig[]): void {\r\n this.view$.pipe(first()).subscribe((view) => {\r\n view.columns = cloneDeep(items);\r\n this._views$.next(this._views$.value.map((v) => (v.name === this._currentView ? view : v)));\r\n });\r\n }\r\n\r\n resetColumns(): void {\r\n this.view$.pipe(first()).subscribe((view) => {\r\n this._currentDisplayColumns$.next(cloneDeep(view.columns));\r\n });\r\n }\r\n\r\n setColumnVisibility(name: string, visible: boolean) {\r\n const updatedColumns = this._currentDisplayColumns$.getValue().map((column) => {\r\n if (column.name === name) {\r\n return { ...column, visible };\r\n } else {\r\n return column;\r\n }\r\n });\r\n this._currentDisplayColumns$.next(updatedColumns);\r\n }\r\n\r\n //****************** Sort ******************//\r\n private _currentSorts$ = new BehaviorSubject<AXPEntityListSortConfig[]>([]);\r\n\r\n public get sorts$(): Observable<AXPEntityListSortConfig[]> {\r\n return this._currentSorts$.pipe(defaultIfEmpty([]));\r\n }\r\n\r\n public get sortsCount$(): Observable<number> {\r\n return this.view$.pipe(map((c) => c.sorts.length));\r\n }\r\n\r\n addSort(): void {\r\n this.view$.pipe(first()).subscribe((view) => {\r\n const currentSorts = this._currentSorts$.getValue();\r\n const name = view.columns.find((c) => !currentSorts.some((s) => s.name == c.name))?.name ?? '';\r\n if (name) {\r\n const sorts = [...currentSorts, { name, dir: 'asc' } as AXPEntityListSortConfig];\r\n this._currentSorts$.next(sorts);\r\n }\r\n });\r\n }\r\n\r\n removeSort(item: AXPEntityListSortConfig): void {\r\n const currentSorts = this._currentSorts$.getValue();\r\n const sorts = currentSorts.filter((c) => c != item);\r\n this._currentSorts$.next(sorts);\r\n }\r\n\r\n resetSort(): void {\r\n this.view$.pipe(first()).subscribe((view) => {\r\n this._currentSorts$.next(cloneDeep(view.sorts));\r\n });\r\n }\r\n\r\n updateSort(items: AXPEntityListSortConfig[]): void {\r\n this.view$.pipe(first()).subscribe((view) => {\r\n view.sorts = cloneDeep(items);\r\n this._views$.next(this._views$.value.map((v) => (v.name === this._currentView ? view : v)));\r\n const convertedSortItems: AXDataSourceSortOption[] = items.map((s) => ({\r\n field: s.name,\r\n dir: s.dir,\r\n }));\r\n this.dataSource.sort(...convertedSortItems);\r\n this.dataSource.refresh();\r\n });\r\n }\r\n\r\n //****************** Conditions ******************//\r\n\r\n private _currentConditions$ = new BehaviorSubject<AXPEntityListConditionConfig[]>([]);\r\n\r\n public get conditions$(): Observable<AXPEntityListConditionConfig[]> {\r\n return this._currentConditions$.pipe(defaultIfEmpty([]));\r\n }\r\n public get conditionsCount$(): Observable<number> {\r\n return this.view$.pipe(map((c) => c.conditions.length));\r\n }\r\n\r\n public getInlineFilterTitles(): string[] {\r\n return this._inlineFilterItems.map((item) => item.title);\r\n }\r\n\r\n addCondition(selectedFields: { name: string; opr: any; value?: any }[]): void {\r\n const prevConditions = this._currentConditions$.getValue();\r\n const conditionsMap = new Map(prevConditions.map((item) => [item.name, item]));\r\n\r\n const newFields = selectedFields.map(\r\n (field) => conditionsMap.get(field.name) || { name: field.name, operator: field.opr }\r\n );\r\n this._currentConditions$.next(newFields as AXPEntityListConditionConfig[]);\r\n }\r\n\r\n removeCondition(item: AXPEntityListConditionConfig): void {\r\n const currentConditions = this._currentConditions$.getValue();\r\n const conditions = currentConditions.filter((c) => c != item);\r\n this._currentConditions$.next(conditions);\r\n }\r\n updateConditions(items: AXPEntityListConditionConfig[]): void {\r\n this.view$.pipe(first()).subscribe((view) => {\r\n view.conditions = cloneDeep(items);\r\n this._views$.next(this._views$.value.map((v) => (v.name === this._currentView ? view : v)));\r\n });\r\n this.applyAllConditions();\r\n }\r\n\r\n handleInlineSearch(value: string) {\r\n const inlineConditions: AXPEntityListConditionConfig[] = [];\r\n\r\n this._inlineFilterItems?.forEach((property) => {\r\n if (property?.dataType == 'string' || property?.dataType == 'number') {\r\n inlineConditions.push({\r\n name: property.name,\r\n value: property.dataType == 'number' ? parseFloat(value) : value,\r\n operator: property.dataType == 'string' ? 'contains' : 'equal',\r\n });\r\n }\r\n });\r\n this.view$.pipe(first()).subscribe((view) => {\r\n view.inlineConditions = cloneDeep(inlineConditions);\r\n });\r\n this.applyAllConditions();\r\n }\r\n\r\n applyAllConditions() {\r\n const inlineConditions: AXDataSourceFilterOption = {\r\n field: null as any,\r\n operator: null as any,\r\n logic: 'or',\r\n filters: [],\r\n };\r\n\r\n const mainConditions: AXDataSourceFilterOption = {\r\n field: null as any,\r\n operator: null as any,\r\n logic: 'and',\r\n filters: [],\r\n };\r\n\r\n this.view$.pipe(first()).subscribe((view) => {\r\n if (view.inlineConditions && view.inlineConditions.length) {\r\n view.inlineConditions?.forEach((c) => {\r\n if (c.value) {\r\n inlineConditions.filters?.push({\r\n field: c.name,\r\n operator: { type: c.operator } as any,\r\n value: c.value,\r\n });\r\n }\r\n });\r\n }\r\n if (view.conditions.length) {\r\n view.conditions.forEach((c) => {\r\n mainConditions.filters?.push({\r\n field: c.name,\r\n operator: { type: c.operator } as any,\r\n value: c.value,\r\n });\r\n });\r\n }\r\n this.dataSource.filter({\r\n field: null as any,\r\n logic: 'and',\r\n operator: null as any,\r\n filters: [mainConditions, inlineConditions],\r\n });\r\n this.dataSource.refresh();\r\n this._views$.next(this._views$.value.map((v) => (v.name === this._currentView ? view : v)));\r\n });\r\n }\r\n\r\n resetConditions(): void {\r\n this.view$.pipe(first()).subscribe((view) => {\r\n this._currentConditions$.next(cloneDeep(view.conditions));\r\n });\r\n }\r\n}\r\n\r\nexport const AXP_LISTVIEW_LOADER = new InjectionToken<AXPListViewLoader>('AXP_LISTVIEW_LOADER');\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXPListViewLoaderFactory {\r\n private cache: Map<string, AXPListViewLoader> = new Map();\r\n private entityService = inject(AXPEntityRegistryService);\r\n private schemaService = inject(AXPSchemaRegistryService);\r\n private layout = inject(AXPLayoutService);\r\n\r\n public async create(moduleName: string, entityName: string): Promise<AXPListViewLoader> {\r\n this.layout.setNavigationLoading(true);\r\n const config = await this.entityService.resolve(moduleName, entityName);\r\n let result = this.cache.get(config.name);\r\n if (result) {\r\n this.layout.setNavigationLoading(false);\r\n return result;\r\n }\r\n result = new AXPListViewLoaderDefault(config, this.schemaService);\r\n this.cache.set(config.name, result);\r\n this.layout.setNavigationLoading(false);\r\n return result;\r\n }\r\n}\r\n","import { AXButtonModule } from '@acorex/components/button';\r\nimport { AXDecoratorModule } from '@acorex/components/decorators';\r\nimport { AXDropdownModule } from '@acorex/components/dropdown';\r\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\r\nimport { AXBasePageComponent } from '@acorex/components/page';\r\nimport { AXPAdminLayoutState, AXPCommonWidgetModule, AXPEntityConfig, AXPEntityPropertyConfig, AXPEntityViewRootSectionConfig, AXPSchemaModule } from '@acorex/platform/common';\r\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\r\nimport { Actions } from '@ngrx/effects';\r\nimport { Store } from '@ngrx/store';\r\n\r\n@Component({\r\n templateUrl: 'entity-quick-view.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [CommonModule, AXPSchemaModule, AXPCommonWidgetModule, AXDecoratorModule, AXButtonModule, AXDropdownModule, AXDropdownButtonModule],\r\n})\r\nexport class AXPEntityQuickViewComponent extends AXBasePageComponent {\r\n private entity!: AXPEntityConfig;\r\n protected root!: AXPEntityViewRootSectionConfig;\r\n private store = inject(Store<AXPAdminLayoutState>);\r\n private workflow = inject(AXPWorkflowService);\r\n\r\n protected canDelete = false;\r\n protected canCreate = false;\r\n protected canUpdate = false;\r\n\r\n protected data: any;\r\n\r\n /**\r\n *\r\n */\r\n constructor(private actions$: Actions) {\r\n super();\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n //\r\n if (this.entity.views.quickView) {\r\n this.root = this.entity.views.quickView?.root;\r\n this.canDelete = this.entity.editOptions?.delete ?? true;\r\n this.canCreate = this.entity.editOptions?.create ?? true;\r\n this.canUpdate = this.entity.editOptions?.update ?? true;\r\n }\r\n }\r\n\r\n protected getProperties(names: string[]): AXPEntityPropertyConfig[] {\r\n return this.entity.properties.filter((c) => names.includes(c.name));\r\n }\r\n\r\n handleCloseClick() {\r\n this.close();\r\n }\r\n\r\n protected handleCommandClick(command: string) {\r\n switch (command) {\r\n case 'delete':\r\n this.workflow.execute('delete-entity', {\r\n module: this.entity.module,\r\n entity: this.entity.name,\r\n ids: [this.data.id],\r\n });\r\n this.close();\r\n break;\r\n case 'details':\r\n this.workflow.execute('show-details', {\r\n payload: {\r\n module: this.entity.module,\r\n entity: this.entity.name,\r\n },\r\n id: this.data.id,\r\n });\r\n this.close();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","<div class=\"ax-flex ax-flex-col ax-gap-6 ax-p-4\">\r\n <div class=\"ax-flex ax-flex-col ax-gap-2\" *ngIf=\"root.properties?.length\">\r\n <div *ngFor=\"let p of getProperties(root.properties)\"\r\n class=\"ax-flex ax-p-4 odd:ax-bg-on-surface odd:ax-border-t odd:ax-border-b\">\r\n <div class=\"ax-min-w-[10rem] ax-text-gray-500\">\r\n <span>{{ p.title }}</span>\r\n </div>\r\n <div class=\"ax-min-w-[30rem]\">\r\n <axp-widget-renderer [schema]=\"p.schema\" [context]=\"data\" [prop]=\"p\"></axp-widget-renderer>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let s of root.sections\"\r\n class=\"ax-flex ax-flex-col ax-pb-3 last-of-type:ax-border-none last-of-type:ax-pb-3\">\r\n <div class=\"ax-pb-4\">\r\n <span class=\"ax-font-bold\">{{ s.title }}</span>\r\n </div>\r\n <div class=\"ax-flex ax-flex-col\">\r\n <div *ngFor=\"let p of getProperties(s.properties)\"\r\n class=\"ax-flex ax-flex-col md:ax-flex-row ax-p-3 odd:ax-bg-on-surface odd:ax-border-t odd:ax-border-b\">\r\n @if (s.options?.showPropTitle!=false) {\r\n <div class=\"ax-min-w-[10rem] ax-text-neutral-500 dark:ax-text-neutral-300 ax-mb-2 md:ax-mb-0\">\r\n <span>{{ p.title }}</span>\r\n </div>\r\n }\r\n <div class=\"md:ax-min-w-[30rem]\">\r\n <axp-widget-renderer [schema]=\"p.schema\" [context]=\"data\" [prop]=\"p\" [mode]=\"'view'\"></axp-widget-renderer>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ax-footer>\r\n <ax-prefix> </ax-prefix>\r\n <ax-suffix>\r\n <ax-dropdown-button text=\"Close\" (onClick)=\"handleCloseClick()\">\r\n <ax-button-item-list>\r\n <ax-button-item text=\"View Details\" (onClick)=\"handleCommandClick('details')\">\r\n <ax-prefix>\r\n <ax-icon icon=\"fa-solid fa-info-circle\"></ax-icon>\r\n </ax-prefix>\r\n </ax-button-item>\r\n @if(canDelete)\r\n {\r\n <ax-button-item class=\"ax-text-danger\" text=\"Delete\" (onClick)=\"handleCommandClick('delete')\">\r\n <ax-prefix> <ax-icon icon=\"fas fa-trash fa-flip-horizontal\"></ax-icon> </ax-prefix></ax-button-item>\r\n }\r\n </ax-button-item-list>\r\n </ax-dropdown-button>\r\n </ax-suffix>\r\n</ax-footer>","import { Injectable, inject } from '@angular/core';\r\nimport { cloneDeep } from 'lodash-es';\r\n\r\nimport { AXPLayoutService } from '@acorex/platform/common';\r\nimport { AXPEntityConfig, AXPEntityPropertyConfig, AXPEntityRegistryService, AXPEntityViewConfig } from '@acorex/platform/common';\r\n\r\nexport interface AXPEntityModifyViewLoader {\r\n get entity(): AXPEntityConfig;\r\n get data(): any;\r\n get section(): any;\r\n\r\n getProp(name: string): AXPEntityPropertyConfig | undefined;\r\n update(values: any): Promise<any>;\r\n}\r\n\r\nexport class AXPEntityModifyLoaderDefault implements AXPEntityModifyViewLoader {\r\n private _config!: AXPEntityConfig;\r\n private _data: any = {};\r\n private _currentSection: any;\r\n\r\n constructor(private config: AXPEntityConfig, private selectedData: any, private selectedSection: any) {\r\n this._data = this.selectedData;\r\n this._currentSection = this.selectedSection;\r\n }\r\n\r\n get entity(): AXPEntityConfig {\r\n if (!this._config) {\r\n this._config = cloneDeep(this.config);\r\n }\r\n return this._config;\r\n }\r\n\r\n get data(): any {\r\n return this._data;\r\n }\r\n get section(): any {\r\n return this._currentSection;\r\n }\r\n\r\n private get view(): AXPEntityViewConfig {\r\n return this.entity.views.detailView as AXPEntityViewConfig;\r\n }\r\n\r\n //****************** Properties ******************//\r\n public getProp = (name: string): AXPEntityPropertyConfig | undefined => this.entity.properties.find((c) => c.name == name);\r\n\r\n //****************** update ******************//\r\n public async update(values: any): Promise<any> {\r\n if (this._config.commands?.update) {\r\n const updated = await this._config.commands?.update(this._data.id, values);\r\n Object.assign(this._data, updated);\r\n return Promise.resolve();\r\n } else {\r\n return Promise.reject(`There is not any update commands for '${this.config.name}'`);\r\n }\r\n }\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXPEntityModifyViewLoaderFactory {\r\n private entityService = inject(AXPEntityRegistryService);\r\n private layout = inject(AXPLayoutService);\r\n\r\n public async create(\r\n moduleName: string,\r\n entityName: string,\r\n id: string,\r\n section: any\r\n ): Promise<AXPEntityModifyViewLoader> {\r\n this.layout.setNavigationLoading(true);\r\n const config = await this.entityService.resolve(moduleName, entityName);\r\n if (config.dataSource.byKey) {\r\n const data = await config.dataSource.byKey(id);\r\n this.layout.setNavigationLoading(false);\r\n return new AXPEntityModifyLoaderDefault(config, data, section);\r\n }\r\n this.layout.setNavigationLoading(false);\r\n return Promise.reject('cannot fetch ');\r\n }\r\n}\r\n","import { AXPopupService } from '@acorex/components/popup';\r\nimport { AXPlatform } from '@acorex/core/platform';\r\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext, createWorkFlowEvent } from '@acorex/platform/workflow';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { cloneDeep } from 'lodash-es';\r\nimport { AXPEntityModifyViewLoaderFactory } from '../entity-modify-view/entity-modify-view.config';\r\nimport { AXPEntityRegistryService } from '@acorex/platform/common';\r\n\r\nexport const AXPEntityModifyEvent = createWorkFlowEvent<{ module: string; entity: string; updateValues: any }>(\r\n '[Entity] Modified'\r\n);\r\n@Injectable()\r\nexport class AXPEntityModifyPopupAction extends AXPWorkflowAction {\r\n private popupService = inject(AXPopupService);\r\n private platform = inject(AXPlatform);\r\n private entityRegistery = inject(AXPEntityRegistryService);\r\n private entityCreateFactory = inject(AXPEntityModifyViewLoaderFactory);\r\n\r\n async execute(context: AXPWorkflowContext): Promise<void> {\r\n const payload = context.getVariable('payload');\r\n const { module, entity: entityName, section, id } = payload;\r\n const entity = await this.entityRegistery.resolve(module, entityName);\r\n const loader = await this.entityCreateFactory.create(module, entityName, id, section);\r\n\r\n const com = await import('../entity-modify-view/entity-modify-view.component');\r\n const popup = await this.popupService.open(com.AXPEntityModifyViewComponent, {\r\n title: `Modify ${payload.section.title}`,\r\n size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',\r\n data: {\r\n context: loader.data,\r\n loader: loader,\r\n properties: payload.section.properties,\r\n entity,\r\n },\r\n });\r\n context.setOutput('popupResult', false);\r\n if (popup.data?.result == true) {\r\n context.setOutput('popupResult', true);\r\n context.setVariable('updatedData', cloneDeep(popup.data.context));\r\n }\r\n }\r\n}\r\n\r\nexport class AXPEntityModifyConfirmedAction extends AXPWorkflowAction {\r\n private entityRegistery = inject(AXPEntityRegistryService);\r\n\r\n async execute(context: AXPWorkflowContext): Promise<void> {\r\n const payload = context.getVariable('payload');\r\n const updatedData = context.getVariable('updatedData');\r\n const entity = await this.entityRegistery.resolve(payload.module, payload.entity);\r\n this.dispatch(AXPEntityModifyEvent({ module: entity.module, entity: entity.name, updateValues: updatedData }));\r\n }\r\n}\r\n\r\nexport const AXPModifyEntityWorkflow: AXPWorkflow = {\r\n startStepId: 'modifyPopup',\r\n steps: {\r\n modifyPopup: {\r\n id: 'modifyPopup',\r\n action: 'AXPEntityModifyPopupAction',\r\n nextSteps: [\r\n {\r\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"popupResult\") == true' }],\r\n nextStepId: 'successToast',\r\n },\r\n ],\r\n },\r\n successToast: {\r\n id: 'successToast',\r\n action: 'AXPToastAction',\r\n input: {\r\n color: 'success',\r\n title: 'Entity Modified',\r\n content: 'Record has been successfully updated.',\r\n },\r\n nextSteps: [\r\n {\r\n conditions: [],\r\n nextStepId: 'modifyConfirmed',\r\n },\r\n ],\r\n },\r\n modifyConfirmed: {\r\n id: 'modifyConfirmed',\r\n action: 'AXPEntityModifyConfirmedAction',\r\n nextSteps: [\r\n {\r\n conditions: [],\r\n nextStepId: '',\r\n },\r\n ],\r\n },\r\n },\r\n};\r\n","import { AXPopupService } from '@acorex/components/popup';\r\nimport { AXFormatService } from '@acorex/core/format';\r\nimport { AXPlatform } from '@acorex/core/platform';\r\nimport { AXPEntityRegistryService } from '@acorex/platform/common';\r\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from '@acorex/platform/workflow';\r\nimport { Injectable, inject } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class AXPShowQuickViewAction extends AXPWorkflowAction {\r\n private entityRegistery = inject(AXPEntityRegistryService);\r\n private formatService = inject(AXFormatService);\r\n private popupService = inject(AXPopupService);\r\n private platform = inject(AXPlatform);\r\n\r\n async execute(context: AXPWorkflowContext): Promise<void> {\r\n const payload = context.getVariable('payload');\r\n\r\n const entity = await this.entityRegistery.resolve(payload.module, payload.entity);\r\n const suggestedProps = entity.properties.find((c) => ['title', 'name', 'code'].includes(c.name));\r\n let suggestedFormat = 'Item #{{id}}';\r\n if (suggestedProps) suggestedFormat = `{{${suggestedProps.name}}}`;\r\n const title = this.formatService.format(entity.formats?.header ?? entity.formats?.default ?? suggestedFormat, 'string', payload.data);\r\n //\r\n const com = await import('../entity-quick-view/entity-quick-view.component');\r\n this.popupService.open(com.AXPEntityQuickViewComponent, {\r\n title: `${title} - Quick View`,\r\n size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',\r\n data: {\r\n entity: entity,\r\n data: payload.data,\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport const AXPShowQuickViewWorkflow: AXPWorkflow = {\r\n startStepId: 'showQuickView',\r\n steps: {\r\n showQuickView: {\r\n id: 'showQuickView',\r\n action: 'AXPShowQuickViewAction',\r\n },\r\n },\r\n};\r\n","import { AXPSessionService } from '@acorex/platform/auth';\r\nimport { AXPWorkflowNavigateAction } from '@acorex/platform/common';\r\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from '@acorex/platform/workflow';\r\nimport { Injectable, inject } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class AXPShowDetailViewAction extends AXPWorkflowAction {\r\n private navigation = inject(AXPWorkflowNavigateAction);\r\n private sessionService = inject(AXPSessionService);\r\n\r\n async execute(context: AXPWorkflowContext): Promise<void> {\r\n const payload = context.getVariable('payload');\r\n const id = context.getVariable('id');\r\n const newPayload = {\r\n commands: `/${this.sessionService.application?.name}/${payload.module}/e/${payload.entity}/${id}/view`,\r\n };\r\n context.setVariable('payload', newPayload);\r\n this.navigation.execute(context);\r\n }\r\n}\r\n\r\n\r\nexport const AXPShowDetailsViewWorkflow: AXPWorkflow = {\r\n startStepId: 'showDetailView',\r\n steps: {\r\n showDetailView: {\r\n id: 'showDetailView',\r\n action: 'AXPShowDetailViewAction',\r\n },\r\n },\r\n};\r\n","import { AXPSessionService } from '@acorex/platform/auth';\r\nimport { AXPWorkflowNavigateAction } from '@acorex/platform/common';\r\nimport { AXPWorkflow, AXPWorkflowAction } from '@acorex/platform/workflow';\r\nimport { Injectable, inject } from '@angular/core';\r\n\r\n\r\n@Injectable()\r\nexport class AXPShowListViewAction extends AXPWorkflowAction {\r\n private navigation = inject(AXPWorkflowNavigateAction);\r\n private sessionService = inject(AXPSessionService);\r\n async execute(context?: any): Promise<void> {\r\n const payload = context.getVariable('payload');\r\n const newPayload = {\r\n commands: `/${this.sessionService.application?.name}/${payload.entity.module}/e/${payload.entity}/list`,\r\n };\r\n context.setVariable('payload', newPayload);\r\n this.navigation.execute(context);\r\n }\r\n}\r\n\r\nexport const AXPShowListViewWorkflow: AXPWorkflow = {\r\n startStepId: 'showListView',\r\n steps: {\r\n showListView: {\r\n id: 'showListView',\r\n action: 'AXPShowListViewAction',\r\n },\r\n },\r\n};\r\n","import { AXActionSheetModule } from '@acorex/components/action-sheet';\r\nimport { AXBadgeModule } from '@acorex/components/badge';\r\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\r\nimport { AXButtonModule } from '@acorex/components/button';\r\nimport { AXHtmlEvent } from '@acorex/components/common';\r\nimport { AXDecoratorModule } from '@acorex/components/decorators';\r\nimport { AXDialogModule } from '@acorex/components/dialog';\r\nimport { AXDrawerComponent, AXDrawerModule } from '@acorex/components/drawer';\r\nimport { AXDropdownModule } from '@acorex/components/dropdown';\r\nimport { AXFormModule } from '@acorex/components/form';\r\nimport { AXImageModule } from '@acorex/components/image';\r\nimport { AXLoadingModule } from '@acorex/components/loading';\r\nimport { AXPopoverModule } from '@acorex/components/popover';\r\nimport { AXPopupService } from '@acorex/components/popup';\r\nimport { AXSwitchModule } from '@acorex/components/switch';\r\nimport { AXTabsModule } from '@acorex/components/tabs';\r\nimport { AXTooltipModule } from '@acorex/components/tooltip';\r\nimport { AXPlatform } from '@acorex/core/platform';\r\nimport { AXUnsubscriber } from '@acorex/core/utils';\r\nimport { AXPSessionService } from '@acorex/platform/auth';\r\nimport { AXPAdminLayoutState, AXPLayoutChildDrawerClose, AXPLayoutChildDrawerToggle, AXPStickyDirective, getChildDrawer, isSmallScreen } from '@acorex/platform/common';\r\nimport { AXPCommonWidgetModule, AXPEntityViewChildSectionConfig, AXPSchemaModule } from '@acorex/platform/common';\r\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\r\nimport { CommonModule, Location } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewChild, WritableSignal, inject, signal } from '@angular/core';\r\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\r\nimport { Actions, ofType } from '@ngrx/effects';\r\nimport { Store } from '@ngrx/store';\r\nimport { cloneDeep } from 'lodash-es';\r\nimport { first } from 'rxjs';\r\nimport { AXPEntityDetailViewLoader } from './detail-view.config';\r\nimport { AXPEntityDeletedEvent, AXPEntityModifyEvent } from '../workflows';\r\n@Component({\r\n templateUrl: './entity-details-view.component.html',\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n AXButtonModule,\r\n AXDecoratorModule,\r\n AXBadgeModule,\r\n AXDropdownModule,\r\n AXPopoverModule,\r\n AXFormModule,\r\n AXImageModule,\r\n AXActionSheetModule,\r\n AXSwitchModule,\r\n AXDrawerModule,\r\n AXDialogModule,\r\n AXLoadingModule,\r\n AXTabsModule,\r\n AXBadgeModule,\r\n AXButtonModule,\r\n AXSwitchModule,\r\n AXPSchemaModule,\r\n AXTooltipModule,\r\n AXBreadcrumbsModule,\r\n //\r\n AXPCommonWidgetModule,\r\n AXPStickyDirective,\r\n ],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [AXUnsubscriber],\r\n})\r\nexport class AXPEntityDetailsViewComponent {\r\n private popupService = inject(AXPopupService);\r\n private sessionService = inject(AXPSessionService);\r\n private activeRoute = inject(ActivatedRoute);\r\n private router = inject(Router);\r\n private location = inject(Location);\r\n private cdr = inject(ChangeDetectorRef);\r\n private platform = inject(AXPlatform);\r\n private workflow = inject(AXPWorkflowService);\r\n\r\n protected loader = this.activeRoute.snapshot.data['loader'] as AXPEntityDetailViewLoader;\r\n\r\n @ViewChild('drawer') drawer!: AXDrawerComponent;\r\n\r\n private store = inject(Store<AXPAdminLayoutState>);\r\n protected isSM = this.store.select(isSmallScreen());\r\n protected isOpen = this.store.select(getChildDrawer());\r\n //\r\n protected canDelete = this.loader.entity.editOptions?.delete ?? true;\r\n protected canCreate = this.loader.entity.editOptions?.create ?? true;\r\n protected canUpdate = this.loader.entity.editOptions?.update ?? true;\r\n //\r\n\r\n\r\n protected context: WritableSignal<any> = signal(cloneDeep(this.loader.data));\r\n\r\n constructor(private actions$: Actions, private unsubscriber: AXUnsubscriber) {\r\n this.activeRoute.paramMap.pipe(first()).subscribe((c) => {\r\n this.setSection(c.get('section') as string);\r\n });\r\n //\r\n this.workflow.events$.pipe(ofType(AXPEntityDeletedEvent), this.unsubscriber.takeUntilDestroy).subscribe((event) => {\r\n if (\r\n event.payload.entity == this.loader.entity.name &&\r\n event.payload.module == this.loader.entity.module &&\r\n event.payload.id.includes(this.loader.data.id)\r\n ) {\r\n this.workflow.execute('show-list-view', {\r\n payload: {\r\n module: this.loader.entity.module,\r\n entity: this.loader.entity.name,\r\n },\r\n });\r\n }\r\n });\r\n this.workflow.events$.pipe(ofType(AXPEntityModifyEvent), this.unsubscriber.takeUntilDestroy).subscribe(async (event) => {\r\n if (\r\n event.payload.entity == this.loader.entity.name &&\r\n event.payload.module == this.loader.entity.module &&\r\n event.payload.updateValues.id === this.loader.data.id\r\n ) {\r\n await this.loader.update(event.payload.updateValues);\r\n this.context.set(cloneDeep(this.loader.data));\r\n }\r\n });\r\n }\r\n\r\n protected handleMenuClick(e: AXHtmlEvent, item: AXPEntityViewChildSectionConfig) {\r\n const entity = this.loader.entity;\r\n const path = `/${this.sessionService.application?.name}/${entity.module}/e/${entity.name}/${this.loader.data?.id}/view/${item.name}`;\r\n this.location.go(path);\r\n this.setSection(item.name);\r\n }\r\n\r\n protected handleCollapsedChange(value: boolean) {\r\n if (value) this.store.dispatch(AXPLayoutChildDrawerClose());\r\n }\r\n\r\n protected handleDrawerClick() {\r\n this.store.dispatch(AXPLayoutChildDrawerToggle());\r\n }\r\n\r\n private setSection(name: string) {\r\n this.loader.setSection(name);\r\n }\r\n\r\n protected async handleSectionEdit(section: AXPEntityViewChildSectionConfig) {\r\n this.workflow.execute('modify-entity', {\r\n payload: {\r\n module: this.loader.entity.module,\r\n entity: this.loader.entity.name,\r\n id: this.loader.data.id,\r\n section: section,\r\n },\r\n });\r\n }\r\n\r\n protected isActive(item: AXPEntityViewChildSectionConfig) {\r\n return item.name == window.location.pathname.split('/').pop();\r\n }\r\n\r\n protected handleCommandClick(command: string) {\r\n switch (command) {\r\n case 'delete':\r\n this.workflow.execute('delete-entity', {\r\n module: this.loader.entity.module,\r\n entity: this.loader.entity.name,\r\n ids: [this.loader.data.id],\r\n });\r\n break;\r\n case 'create': {\r\n this.workflow.execute('create-entity', {\r\n payload: {\r\n module: this.loader.entity.module,\r\n entity: this.loader.entity.name,\r\n },\r\n });\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","<ax-drawer-container>\r\n <!-- <ax-drawer #drawer location=\"start\" [collapsed]=\"!(isOpen | async)\" [mode]=\" (isSM | async) ? 'overlay' : 'push'\"\r\n *ngIf=\"loader.hasSections$ | async\" (collapsedChange)=\"handleCollapsedChange($event)\">\r\n <ax-content class=\"ax-border-e ax-p-6 ax-w-64\">\r\n <p class=\"ax-text-xl ax-font-bold ax-mb-6\">{{loader.sectionTitle}}</p>\r\n <ax-tabs look=\"with-line\" location=\"start\">\r\n @for(tab of (loader.sections$ | async); track tab.name)\r\n {\r\n <ax-tab-item [text]=\"tab.title\" [active]=\"isActive(tab)\" (onClick)=\"handleMenuClick($event,tab)\"\r\n [disabled]=\"editForm.context\">\r\n </ax-tab-item>\r\n }\r\n </ax-tabs>\r\n </ax-content>\r\n </ax-drawer> -->\r\n <ax-content #content class=\"ax-overflow-x-hidden\">\r\n <div\r\n class=\"ax-flex ax-flex-col ax-gap-4 ax-min-h-full ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\">\r\n <div class=\"ax-flex ax-flex-col ax-pt-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\" #sticky=\"axpSticky\"\r\n [axpSticky]=\"'ax-bg-surface ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\" [stickyParent]=\"content.getHostElement()\">\r\n <!-------- Begin Toolbar -------->\r\n <div class=\"ax-flex ax-justify-between ax-items-center\">\r\n <!-------- Begin Title -------->\r\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\r\n <!-- <ax-button class=\"lg:ax-hidden\">\r\n <ax-icon class=\"fa-solid fa-chevron-left\"></ax-icon>\r\n </ax-button> -->\r\n <div class=\"ax-flex ax-flex-col ax-gap-2\">\r\n <div class=\"ax-text-xl md:ax-text-3xl ax-font-bold\">{{ loader.title }}</div>\r\n <!-- <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\">\r\n <ng-template #divider>\r\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\r\n </ng-template>\r\n <ax-breadcrumbs-item>\r\n <a>Home</a>\r\n </ax-breadcrumbs-item>\r\n <ax-breadcrumbs-item>\r\n <a>{{ loader.entity.title }}</a>\r\n </ax-breadcrumbs-item>\r\n <ax-breadcrumbs-item [active]=\"true\" class=\"!ax-font-semibold !ax-text-neutral-600\">\r\n {{ loader.title }}\r\n </ax-breadcrumbs-item>\r\n </ax-breadcrumbs> -->\r\n </div>\r\n </div>\r\n <!-------- Finish Title -------->\r\n <!--------------------------------------------------------------->\r\n <!-- Begin Action Menu -->\r\n <div class=\"ax-flex ax-items-center ax-gap-3\">\r\n @if(canCreate || canUpdate) {\r\n <ax-button [text]=\"(isSM | async) ? null : 'Actions'\" color=\"ghost\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\r\n </ax-prefix>\r\n <ax-dropdown-panel>\r\n <ax-button-item-list>\r\n <!-- <ax-button-item text=\"Share\" class=\"ax-font-semibold\">\r\n <ax-prefix>\r\n <ax-icon icon=\"fa-solid fa-share\"> </ax-icon>\r\n </ax-prefix>\r\n </ax-button-item> \r\n <ax-divider></ax-divider>-->\r\n @if(canCreate) {\r\n <ax-button-item text=\"Create New One\" class=\"ax-font-semibold ax-text-primary\"\r\n (onClick)=\"handleCommandClick('create')\">\r\n <ax-prefix>\r\n <ax-icon icon=\"fa-solid fa-add\"> </ax-icon>\r\n </ax-prefix>\r\n </ax-button-item>\r\n } @if(canDelete) {\r\n <ax-button-item text=\"Delete\" class=\"ax-font-semibold ax-text-danger\"\r\n (onClick)=\"handleCommandClick('delete')\">\r\n <ax-prefix>\r\n <ax-icon icon=\"fa-solid fa-trash\"> </ax-icon>\r\n </ax-prefix>\r\n </ax-button-item>\r\n }\r\n </ax-button-item-list>\r\n </ax-dropdown-panel>\r\n </ax-button>\r\n }\r\n </div>\r\n <!-- Finish Action Menu -->\r\n </div>\r\n <!----- Finish Toolbar ----->\r\n <!--------------------------------------------------------------->\r\n <!-- Begin Section Tab Items -->\r\n @if((loader.hasSections$| async)) {\r\n <ax-tabs look=\"with-line\" location=\"bottom\" class=\"ax-mt-2\">\r\n @for(tab of (loader.sections$ | async); track tab.name) {\r\n <ax-tab-item [text]=\"tab.title\" [active]=\"isActive(tab)\" (onClick)=\"handleMenuClick($event, tab)\"\r\n class=\"first:!ax-ms-0\"> </ax-tab-item>\r\n }\r\n </ax-tabs>\r\n }\r\n <!-- Finish Section Tab Items -->\r\n </div>\r\n @for(section of (loader.section$ | async)?.sections; track section.name) {\r\n <ax-form #form>\r\n <div class=\"ax-card ax-shadow-md\">\r\n <div class=\"ax-card-header\">\r\n <p>{{ section.title }}</p>\r\n @if(canUpdate) {\r\n <ax-button text=\"Modify\" class=\"ax-sm\" color=\"primary\" (onClick)=\"handleSectionEdit(section)\">\r\n <ax-icon class=\"fa-solid fa-pen\"> </ax-icon>\r\n </ax-button>\r\n }\r\n </div>\r\n <div class=\"ax-card-body ax-divide-y ax-divide-gray-100 dark:ax-divide-gray-700 !ax-gap-0\">\r\n <ng-container *ngFor=\"let name of section.properties\">\r\n <ng-container *ngIf=\"loader.getProp(name) as prop\">\r\n <div class=\"ax-grid md:ax-grid-cols-12 ax-gap-2 ax-py-4 first:ax-pt-0 last:ax-pb-0\">\r\n @if(section.options?.showPropTitle!=false){\r\n <div\r\n class=\"ax-col-span-12 md:ax-col-span-3 lg:ax-col-span-2 ax-flex ax-items-center md:ax-items-start ax-justify-between\">\r\n <div class=\"ax-flex ax-flex-col ax-items-start\">\r\n <span class=\"ax-font-semibold\">{{ prop.title }}</span>\r\n <!-- @if(prop.description) {\r\n <i\r\n class=\"fa-solid fa-circle-info fa-sm ax-text-neutral-500 dark:ax-text-neutral-400 ax-cursor-pointer\"\r\n [axTooltip]=\"prop.description\"\r\n [axTooltipPlacement]=\"'end'\"\r\n ></i>\r\n } -->\r\n @if(prop.description) {\r\n <span class=\"ax-text-neutral-500 ax-text-xs\">{{ prop.description }}</span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n <div\r\n [class]=\"section.options?.showPropTitle == false ? 'ax-col-span-12' : 'ax-col-span-12 md:ax-col-span-9 lg:ax-col-span-10'\">\r\n <axp-widget-renderer [schema]=\"prop.schema\" [context]=\"context()\" [prop]=\"prop\"\r\n [mode]=\"'view'\"></axp-widget-renderer>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ax-form>\r\n }\r\n </div>\r\n </ax-content>\r\n</ax-drawer-container>","import { AXFormatService } from '@acorex/core/format';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { assign, cloneDeep } from 'lodash-es';\r\nimport { BehaviorSubject, Observable, defaultIfEmpty, map, of, switchMap } from 'rxjs';\r\n\r\nimport { AXPLayoutService } from '@acorex/platform/common';\r\nimport { AXPEntityConfig, AXPEntityPropertyConfig, AXPEntityRegistryService, AXPEntityViewChildSectionConfig, AXPEntityViewConfig } from '@acorex/platform/common';\r\n\r\nexport interface AXPEntityDetailViewLoader {\r\n get entity(): AXPEntityConfig;\r\n get data(): any;\r\n get title(): string;\r\n\r\n get sectionTitle(): string;\r\n get sections$(): Observable<AXPEntityViewChildSectionConfig[]>;\r\n get hasSections$(): Observable<boolean>;\r\n get section$(): Observable<AXPEntityViewChildSectionConfig>;\r\n setSection(name: string): void;\r\n\r\n getProp(name: string): AXPEntityPropertyConfig | undefined;\r\n update(values: any): Promise<any>;\r\n}\r\n\r\nexport class AXPEntityDetailLoaderDefault implements AXPEntityDetailViewLoader {\r\n private _config!: AXPEntityConfig;\r\n private _currentSection = 'default';\r\n\r\n constructor(\r\n private config: AXPEntityConfig,\r\n private store: Store,\r\n private entityData: any,\r\n private formatService: AXFormatService\r\n ) { }\r\n\r\n get entity(): AXPEntityConfig {\r\n if (!this._config) {\r\n this._config = cloneDeep(this.config);\r\n }\r\n return this._config;\r\n }\r\n\r\n get data(): any {\r\n return this.entityData;\r\n }\r\n\r\n private get view(): AXPEntityViewConfig {\r\n return (this.entity.views.detailView ?? this.entity.views.quickView) as AXPEntityViewConfig;\r\n }\r\n\r\n //****************** Titles ******************//\r\n get title(): string {\r\n const suggestedProps = this.entity.properties.find((c) => ['title', 'name', 'code'].includes(c.name));\r\n let suggestedFormat = 'Item #{{id}}';\r\n if (suggestedProps) suggestedFormat = `{{${suggestedProps.name}}}`;\r\n const title = this.formatService.format(\r\n this.entity.formats?.header ?? this.entity.formats?.default ?? suggestedFormat,\r\n 'string',\r\n this.data\r\n );\r\n return title;\r\n }\r\n\r\n get sectionTitle(): string {\r\n return `${this.entity.title}`;\r\n }\r\n\r\n //****************** Sections ******************//\r\n\r\n private get sections(): AXPEntityViewChildSectionConfig[] {\r\n return this.view.root.sections?.length\r\n ? this.view.root.sections\r\n : [\r\n {\r\n name: 'default',\r\n title: 'Default',\r\n properties: this.view.root.properties,\r\n },\r\n ];\r\n }\r\n\r\n private _sections$ = new BehaviorSubject<AXPEntityViewChildSectionConfig[]>(this.sections);\r\n\r\n public get sections$(): Observable<AXPEntityViewChildSectionConfig[]> {\r\n return this._sections$.pipe(defaultIfEmpty([]));\r\n }\r\n\r\n public get section$(): Observable<AXPEntityViewChildSectionConfig> {\r\n return this.sections$.pipe(\r\n switchMap((sections) => {\r\n const section = sections.find((c) => c.name === this._currentSection) ?? this.sections[0];\r\n if (!section.sections?.length) {\r\n section.sections = [\r\n {\r\n name: 'default',\r\n title: 'Details',\r\n properties: section.properties,\r\n },\r\n ];\r\n }\r\n return of(section);\r\n })\r\n );\r\n }\r\n\r\n public get hasSections$(): Observable<boolean> {\r\n return this.sections$.pipe(map((c) => c.length > 1));\r\n }\r\n\r\n public setSection(name: string) {\r\n this._currentSection = name ?? 'default';\r\n const updatedSection = this.sections.find((c) => c.name === this._currentSection) || {\r\n name: 'default',\r\n title: 'Default',\r\n properties: this.view.root.properties,\r\n };\r\n const currentSections = this._sections$.value;\r\n const updatedSections = currentSections.map((section) => {\r\n if (section.name === updatedSection.name) {\r\n return updatedSection;\r\n } else {\r\n return section;\r\n }\r\n });\r\n this._sections$.next(updatedSections);\r\n }\r\n\r\n //****************** Properties ******************//\r\n public getProp = (name: string): AXPEntityPropertyConfig | undefined => this.entity.properties.find((c) => c.name == name);\r\n\r\n //****************** Update ******************//\r\n public async update(values: any): Promise<any> {\r\n assign(this.data, values);\r\n this.setSection(this._currentSection);\r\n }\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXPEntityDetailViewLoaderFactory {\r\n private entityService = inject(AXPEntityRegistryService);\r\n private formatService = inject(AXFormatService);\r\n private layout = inject(AXPLayoutService);\r\n private store = inject(Store);\r\n\r\n public async create(moduleName: string, entityName: string, id: string): Promise<AXPEntityDetailViewLoader> {\r\n const config = await this.entityService.resolve(moduleName, entityName);\r\n this.layout.setNavigationLoading(true);\r\n if (config.dataSource.byKey) {\r\n const data = await config.dataSource.byKey(id);\r\n this.layout.setNavigationLoading(false);\r\n return new AXPEntityDetailLoaderDefault(config, this.store, data, this.formatService);\r\n }\r\n this.layout.setNavigationLoading(false);\r\n return Promise.reject('cannot fetch ');\r\n }\r\n}\r\n","import { ActivatedRouteSnapshot, RouteReuseStrategy, DetachedRouteHandle } from '@angular/router';\r\nimport { AXPEntityDetailsViewComponent, AXPEntityListViewComponent } from './entity-layout';\r\n\r\n\r\nexport class AXPCustomReuseStrategy implements RouteReuseStrategy {\r\n shouldDetach(route: ActivatedRouteSnapshot): boolean {\r\n return false;\r\n }\r\n\r\n store(route: ActivatedRouteSnapshot, detachedTree: DetachedRouteHandle): void { }\r\n\r\n shouldAttach(route: ActivatedRouteSnapshot): boolean {\r\n return false;\r\n }\r\n\r\n retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null {\r\n return null;\r\n }\r\n\r\n shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\r\n if (future.component === AXPEntityListViewComponent || future.component === AXPEntityDetailsViewComponent) {\r\n return false;\r\n }\r\n\r\n return future.routeConfig === curr.routeConfig;\r\n }\r\n}\r\n","import { AXPopupService } from '@acorex/components/popup';\r\nimport { AXPlatform } from '@acorex/core/platform';\r\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext, createWorkFlowEvent } from '@acorex/platform/workflow';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { cloneDeep } from 'lodash-es';\r\nimport { AXPEntityModifyViewLoaderFactory } from '../entity-modify-view/entity-modify-view.config';\r\nimport { AXPEntityRegistryService } from '@acorex/platform/common';\r\n\r\n\r\n@Injectable()\r\nexport class AXPEntityModifySectionPopupAction extends AXPWorkflowAction {\r\n private popupService = inject(AXPopupService);\r\n private platform = inject(AXPlatform);\r\n private entityRegistery = inject(AXPEntityRegistryService);\r\n private entityCreateFactory = inject(AXPEntityModifyViewLoaderFactory);\r\n\r\n async execute(context: AXPWorkflowContext): Promise<void> {\r\n const payload = context.getVariable('payload');\r\n const { module, entity: entityName, section, id } = payload;\r\n const entity = await this.entityRegistery.resolve(module, entityName);\r\n const loader = await this.entityCreateFactory.create(module, entityName, id, section);\r\n\r\n const com = await import('../entity-modify-view/entity-modify-view.component');\r\n const popup = await this.popupService.open(com.AXPEntityModifyViewComponent, {\r\n title: `Modify ${payload.section.title}`,\r\n size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',\r\n data: {\r\n context: loader.data,\r\n loader: loader,\r\n properties: payload.section.properties,\r\n entity,\r\n },\r\n });\r\n context.setOutput('popupResult', false);\r\n if (popup.data?.result == true) {\r\n context.setOutput('popupResult', true);\r\n context.setVariable('updatedData', cloneDeep(popup.data.context));\r\n }\r\n }\r\n}\r\n\r\n\r\nexport const AXPModifyEntitySectionWorkflow: AXPWorkflow = {\r\n startStepId: 'modifyPopup',\r\n steps: {\r\n modifyPopup: {\r\n id: 'modifyPopup',\r\n action: 'AXPEntityModifySectionPopupAction',\r\n nextSteps: [\r\n {\r\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"popupResult\") == true' }],\r\n nextStepId: 'successToast',\r\n },\r\n ],\r\n },\r\n successToast: {\r\n id: 'successToast',\r\n action: 'AXPToastAction',\r\n input: {\r\n color: 'success',\r\n title: 'Entity Modified',\r\n content: 'Record has been successfully updated.',\r\n },\r\n nextSteps: [\r\n {\r\n conditions: [],\r\n nextStepId: 'modifyConfirmed',\r\n },\r\n ],\r\n },\r\n modifyConfirmed: {\r\n id: 'modifyConfirmed',\r\n action: 'AXPEntityModifyConfirmedAction',\r\n nextSteps: [\r\n {\r\n conditions: [],\r\n nextStepId: '',\r\n },\r\n ],\r\n },\r\n },\r\n};\r\n","import { AXPWorkflowModule } from '@acorex/platform/workflow';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouteReuseStrategy } from '@angular/router';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { AXPCustomReuseStrategy } from './custom-reuse.strategy';\r\nimport { AXPListViewModule } from './entity-layout';\r\nimport {\r\n AXPCreateEntityWorkflow,\r\n AXPEntityCreatePopupAction,\r\n AXPEntityCreateSubmittedAction,\r\n} from './entity-layout/workflows/create-entity.workflow';\r\nimport { AXPDeleteEntityWorkflow, AXPEntityPerformDeleteAction, AXPMyCustomFunc } from './entity-layout/workflows/delete-entity.workflow';\r\nimport {\r\n AXPEntityModifyConfirmedAction,\r\n AXPEntityModifyPopupAction,\r\n AXPModifyEntityWorkflow,\r\n} from './entity-layout/workflows/modify-entity.workflow';\r\nimport { AXPShowDetailsViewWorkflow } from './entity-layout/workflows/show-details.workflow';\r\nimport { AXPShowListViewWorkflow } from './entity-layout/workflows/show-list.workflow';\r\nimport { AXPShowQuickViewWorkflow } from './entity-layout/workflows/show-quick-view.workflow';\r\nimport { AXPEntityModifySectionPopupAction, AXPModifyEntitySectionWorkflow } from './entity-layout/workflows/modify-section.workflow';\r\n\r\n@NgModule({\r\n imports: [\r\n\r\n AXPListViewModule,\r\n AXPWorkflowModule.forChild({\r\n actions: {\r\n AXPEntityPerformDeleteAction,\r\n AXPEntityModifyPopupAction,\r\n AXPEntityModifySectionPopupAction,\r\n AXPEntityModifyConfirmedAction,\r\n AXPEntityCreatePopupAction,\r\n AXPEntityCreateSubmittedAction,\r\n },\r\n workflows: {\r\n 'delete-entity': AXPDeleteEntityWorkflow,\r\n 'modify-entity': AXPModifyEntityWorkflow,\r\n 'modify-entity-section': AXPModifyEntitySectionWorkflow,\r\n 'create-entity': AXPCreateEntityWorkflow,\r\n 'show-details': AXPShowDetailsViewWorkflow,\r\n 'show-quick-view': AXPShowQuickViewWorkflow,\r\n 'show-list-view': AXPShowListViewWorkflow,\r\n },\r\n functions: {\r\n test: AXPMyCustomFunc,\r\n },\r\n }),\r\n ],\r\n exports: [],\r\n declarations: [],\r\n providers: [{ provide: RouteReuseStrategy, useClass: AXPCustomReuseStrategy }],\r\n})\r\nexport class AXPAdminLayoutModule { }\r\n","import { inject } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router';\r\n//\r\nimport {\r\n AXPEntityDetailViewLoader,\r\n AXPEntityDetailViewLoaderFactory,\r\n AXPListViewLoader,\r\n AXPListViewLoaderFactory,\r\n} from './entity-layout';\r\n\r\nexport const AXPListViewLoaderResolver: ResolveFn<Promise<AXPListViewLoader>> = (\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n service: AXPListViewLoaderFactory = inject(AXPListViewLoaderFactory)\r\n): Promise<AXPListViewLoader> => {\r\n const appName = route.parent?.paramMap.get('app') as string;\r\n const moduleName = route.parent?.paramMap.get('module') as string;\r\n const entityName = route.paramMap.get('entity') as string;\r\n return service.create(moduleName, entityName);\r\n};\r\n\r\nexport const AXPEntityDetailViewLoaderResolver: ResolveFn<Promise<AXPEntityDetailViewLoader>> = (\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n service: AXPEntityDetailViewLoaderFactory = inject(AXPEntityDetailViewLoaderFactory)\r\n): Promise<AXPEntityDetailViewLoader> => {\r\n const appName = route.parent?.paramMap.get('app') as string;\r\n const moduleName = route.parent?.paramMap.get('module') as string;\r\n const entityName = route.paramMap.get('entity') as string;\r\n const id = route.paramMap.get('id') as string;\r\n return service.create(moduleName, entityName, id);\r\n};\r\n","import { AXPAuthGuard } from '@acorex/platform/auth';\r\nimport { Route } from '@angular/router';\r\nimport { AXPEntityDetailsViewComponent, AXPEntityListViewComponent } from './entity-layout';\r\nimport { AXPEntityDetailViewLoaderResolver, AXPListViewLoaderResolver } from './entity.resolver';\r\n\r\nexport const AX_ADMIN_ROUTES: Route[] = [\r\n {\r\n path: ':app',\r\n canActivate: [AXPAuthGuard],\r\n children: [\r\n {\r\n path: ':module',\r\n children: [\r\n {\r\n path: 'e/:entity/:id/view/:section',\r\n resolve: { loader: AXPEntityDetailViewLoaderResolver },\r\n component: AXPEntityDetailsViewComponent,\r\n },\r\n {\r\n path: 'e/:entity/:id/view',\r\n resolve: { loader: AXPEntityDetailViewLoaderResolver },\r\n component: AXPEntityDetailsViewComponent,\r\n },\r\n {\r\n path: 'e/:entity',\r\n redirectTo: ':entity/list',\r\n pathMatch: 'full',\r\n },\r\n {\r\n path: 'e/:entity/list',\r\n component: AXPEntityListViewComponent,\r\n resolve: {\r\n loader: AXPListViewLoaderResolver,\r\n },\r\n // canActivate: [AXPPermissionGuard],\r\n // data: {\r\n // requiredPermission: \"dynamic\"\r\n // }\r\n },\r\n // {\r\n // path: 'ee/:entity/:id/view',\r\n // resolve: { vm: AXPEntityDetailViewModelResolver },\r\n // component: AXPDefaultThemeEntityDetailsViewComponent,\r\n // },\r\n ],\r\n },\r\n ],\r\n },\r\n];\r\n","import { AXMWorkflowErrorHandler, AXPCommonModule, AXPDialogConfirmAction, AXPToastAction, AXPWorkflowNavigateAction } from '@acorex/platform/common';\r\nimport { AXPWorkflowModule } from '@acorex/platform/workflow';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\n\r\nimport { AXPShowDetailViewAction, AXPShowListViewAction, AXPShowQuickViewAction } from './admin/entity-layout/workflows';\r\n\r\n@NgModule({\r\n imports: [\r\n AXPCommonModule.forChild({ errorHandlers: [AXMWorkflowErrorHandler] }),\r\n AXPWorkflowModule.forChild({\r\n actions: {\r\n AXPWorkflowNavigateAction: AXPWorkflowNavigateAction,\r\n AXPDialogConfirmAction,\r\n AXPToastAction,\r\n AXPShowDetailViewAction,\r\n AXPShowListViewAction,\r\n AXPShowQuickViewAction,\r\n },\r\n }),\r\n ],\r\n exports: [RouterModule],\r\n})\r\nexport class AXPLayoutModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i4","i12","i16","i5","i6","i1","i2","i7","i8","i9","i10","i11","i13","i14","i15.AXPListViewOptionsColumnsComponent","i16.AXPListViewOptionConditionsComponent","i17.AXPListViewOptionSortingComponent","ofType"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BM,MAAO,kCAAmC,SAAQ,mBAAmB,CAAA;AAT3E,IAAA,WAAA,GAAA;;AAUU,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;QAGnC,IAAI,CAAA,IAAA,GAAsB,QAAQ,CAAC;QACnC,IAAY,CAAA,YAAA,GAAQ,EAAE,CAAC;AAEtB,QAAA,IAAA,CAAA,aAAa,GAA4B,MAAM,CAAC,KAAK,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,KAAK,GAA8C,MAAM,CAAC,EAAE,CAAC,CAAC;AAE9D,QAAA,IAAA,CAAA,OAAO,GAAuD,MAAM,CAAC,EAAE,CAAC,CAAC;QACzE,IAAc,CAAA,cAAA,GAA+C,QAAQ,CAAC,MAC9E,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CACxC,CAAC;AACQ,QAAA,IAAA,CAAA,UAAU,GAAmD,MAAM,CAAC,EAAE,CAAC,CAAC;AACxE,QAAA,IAAA,CAAA,KAAK,GAA8C,MAAM,CAAC,EAAE,CAAC,CAAC;QAE9D,IAAsB,CAAA,sBAAA,GAAa,EAAE,CAAC;QACtC,IAAS,CAAA,SAAA,GAAa,EAAE,CAAC;AAyJpC,KAAA;IAvJoB,QAAQ,GAAA;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC5E,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;KACJ;;IAGD,gBAAgB,CAAC,KAA0B,EAAE,OAAe,EAAA;AAC1D,QAAA,IAAI,KAAK,CAAC,iBAAiB,EAAE;YAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,KAC3B,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,KAAK,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CACvF,CAAC;SACH;KACF;;AAGD,IAAA,cAAc,CAAC,IAA6B,EAAA;QAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,KAC1B,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,GAAG,MAAM,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,CACjH,CAAC;KACH;IACD,WAAW,GAAA;AACT,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;AACrC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,SAAS,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAA6B,CAAC,CAAC,CAAC;KACnG;AAED,IAAA,cAAc,CAAC,IAA6B,EAAA;AAC1C,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACtF;;AAGS,IAAA,SAAS,CAAC,IAAY,EAAA;QAC9B,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;KAC/D;AAES,IAAA,YAAY,CAAC,IAAY,EAAA;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;AAC1E,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,SAAS,IAAI,EAAE,CAAC;KAChF;AAES,IAAA,kBAAkB,CAAC,IAAY,EAAA;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;AAC1E,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,OAAO,IAAI,OAAO,CAAC;KACnF;IAES,gBAAgB,CAAC,UAAkB,EAAE,OAAe,EAAA;QAC5D,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;KAClF;IACS,uBAAuB,GAAA;AAC/B,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;KACpE;IACS,YAAY,GAAA;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YACvD,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;YACvC,OAAO;AACL,gBAAA,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,GAAG,CAAC,IAAI;aACnB,CAAC;AACJ,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAiB,CAAC,CAAC;KACxC;AAED,IAAA,eAAe,CAAC,IAAkC,EAAA;AAChD,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,cAAc,KAAK,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACnG;;IAGS,IAAI,CAAC,IAAwC,EAAE,KAA6B,EAAA;QACpF,QAAQ,IAAI;AACV,YAAA,KAAK,SAAS;gBACZ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAI;oBAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC;oBACzB,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;AAClE,oBAAA,OAAO,OAAO,CAAC;AACjB,iBAAC,CAAC,CAAC;gBACH,MAAM;AACR,YAAA,KAAK,OAAO;gBACV,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,KAAI;oBAC9B,MAAM,KAAK,GAAG,SAAS,CAAC;oBACxB,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;AAChE,oBAAA,OAAO,KAAK,CAAC;AACf,iBAAC,CAAC,CAAC;gBACH,MAAM;AACR,YAAA,KAAK,YAAY;gBACf,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,cAAc,KAAI;oBACxC,MAAM,UAAU,GAAG,cAAc,CAAC;oBAClC,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;AACrE,oBAAA,OAAO,UAAU,CAAC;AACpB,iBAAC,CAAC,CAAC;gBACH,MAAM;AACR,YAAA;gBACE,MAAM;SACT;KACF;IAED,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;KAC5C;AAED,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAC5B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;KACjD;IAED,gBAAgB,GAAA;AACd,QAAA,MAAM,WAAW,GAAG;YAClB,GAAG,IAAI,CAAC,YAAY;YACpB,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACpD,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;SACpB,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,EAAE;AACtE,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACrB,gBAAA,KAAK,EAAE,eAAe;AACtB,gBAAA,OAAO,EAAE,iGAAiG;AAC1G,gBAAA,KAAK,EAAE,QAA4B;AACnC,gBAAA,QAAQ,EAAE,eAA6B;AACvC,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,OAAO,EAAE,IAAI;AACd,aAAA,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;SACzC;KACF;IAED,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;KACpD;IACD,kBAAkB,GAAA;QAChB,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;KAC7B;IACD,iBAAiB,GAAA;QACf,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;KAC7B;IACD,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,aAAa;aACf,OAAO,CAAC,SAAS,EAAE,wCAAwC,EAAE,QAAQ,EAAE,YAAY,CAAC;AACpF,aAAA,IAAI,CAAC,CAAC,IAAI,KAAI;AACb,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;aAChE;AACH,SAAC,CAAC,CAAC;KACN;8GA7KU,kCAAkC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,EANlC,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,cAAc;AACxB,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BH,krXAmQA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,+BAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,+IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,KAAA,EAAA,KAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,MAAA,EAAA,cAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,gCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDrOa,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAT9C,SAAS;sCAES,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,cAAc;AACxB,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,krXAAA,EAAA,CAAA;8BAQQ,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;;;ME1BK,kCAAkC,CAAA;AAJ/C,IAAA,WAAA,GAAA;AAKU,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,EAAC,KAA0B,EAAC,CAAC;QAIzC,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;AAC1C,QAAA,IAAA,CAAA,QAAQ,GAAmD,EAAE,CAAC,EAAE,CAAC,CAAC;AAGrE,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAQ,CAAC;AA+B5C,KAAA;IA7BC,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;KAC7C;IAED,sBAAsB,CAAC,CAA+B,EAAE,IAAY,EAAA;AAClE,QAAA,IAAI,CAAC,CAAC,iBAAiB,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,KAAM,CAAC,CAAC;SACjD;KACF;AAES,IAAA,IAAI,CAAC,KAA6B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;YAChD,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;AACpE,SAAC,CAAC,CAAC;KACJ;IAES,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;IACS,gBAAgB,GAAA;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KAC5B;IAES,gBAAgB,GAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC7C,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAClC,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;8GAvCU,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,qICZ/C,+9CA2BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,+IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDfa,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAJ9C,SAAS;+BACE,8BAA8B,EAAA,QAAA,EAAA,+9CAAA,EAAA,CAAA;8BAOjC,MAAM,EAAA,CAAA;sBADZ,KAAK;gBAMC,QAAQ,EAAA,CAAA;sBADd,MAAM;;;MECI,oCAAoC,CAAA;AAC/C,IAAA,WAAA,GAAA;AAGO,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAQ,CAAC;AAEnC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,YAAY,GAAmB,MAAM,CAAC,cAAc,CAAC,CAAC;QAEpD,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;AAKb,QAAA,IAAA,CAAA,MAAM,GAA0C,EAAE,CAAC,EAAE,CAAC,CAAC;QACvD,IAAK,CAAA,KAAA,GAA8B,EAAE,CAAC;AACtC,QAAA,IAAA,CAAA,WAAW,GAA+C,EAAE,CAAC,EAAE,CAAC,CAAC;QAEjE,IAAkB,CAAA,kBAAA,GAAa,EAAE,CAAC;KAjB3B;AAmBjB,IAAA,YAAY,CAAC,IAAS,EAAA;AACpB,QAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;KACtC;IACD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CACxC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,CAC1D,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AAC3C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,KAAI;AAC7D,YAAA,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AACjE,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC3C,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACpB,SAAC,CAAC,CAAC;KACJ;AAES,IAAA,YAAY,CAAC,IAAY,EAAA;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;AACxE,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,SAAS,IAAI,EAAE,CAAC;KACjF;AAES,IAAA,kBAAkB,CAAC,IAAY,EAAA;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;AACxE,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,OAAO,IAAI,OAAO,CAAC;KACpF;IAES,gBAAgB,CAAC,UAAkB,EAAE,OAAe,EAAA;QAC5D,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;KAClF;AAES,IAAA,SAAS,CAAC,IAAY,EAAA;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;KAC7D;AAES,IAAA,IAAI,CAAC,KAA6B,EAAA;AAC1C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,KAAI;AACtD,YAAA,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;YACxC,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;AACvE,SAAC,CAAC,CAAC;KACJ;IAES,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;AAES,IAAA,qBAAqB,CAAC,IAAkC,EAAA;QAChE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;KACnC;IAES,uBAAuB,GAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,KAAI;AAC7D,YAAA,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AACjE,SAAC,CAAC,CAAC;KACJ;IAES,gBAAgB,GAAA;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;KAC/B;IAES,eAAe,GAAA;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;YACvC,OAAO;AACL,gBAAA,IAAI,EAAE,CAAC;gBACP,GAAG,EAAE,GAAG,CAAC,IAAI;aACd,CAAC;AACJ,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;KAClC;IAES,gBAAgB,GAAA;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAChD,YAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACrC,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;8GAlGU,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,wICrBjD,g6IAkGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,+IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,KAAA,EAAA,KAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,gCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FD7Ea,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBANhD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,mBAE1B,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,g6IAAA,EAAA,CAAA;wDAM9B,QAAQ,EAAA,CAAA;sBADd,MAAM;gBASA,MAAM,EAAA,CAAA;sBADZ,KAAK;;;MEHK,wCAAwC,CAAA;AAfrD,IAAA,WAAA,GAAA;QAkBY,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAElB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEhC,IAAM,CAAA,MAAA,GAAwB,EAAE,CAAC;AAoBzC,QAAA,IAAA,CAAA,WAAW,GAAyB,IAAI,YAAY,EAAU,CAAC;AAWhE,KAAA;AA9BC,IAAA,IACW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAW,KAAK,CAAC,CAAsB,EAAA;AACrC,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YACxB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;;iBAEnB;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;AAMD,IAAA,IACW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAW,KAAK,CAAC,CAAS,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAChB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC1B;8GArCU,wCAAwC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAxC,wCAAwC,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACxC,oBAAoB,EAdrB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;AAST,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAIU,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBAfpD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sCAAsC;AAChD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;AAST,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE;AACtC,iBAAA,CAAA;8BAGC,SAAS,EAAA,CAAA;sBADR,SAAS;uBAAC,oBAAoB,CAAA;gBAQpB,KAAK,EAAA,CAAA;sBADf,KAAK;gBAmBN,WAAW,EAAA,CAAA;sBADV,MAAM;gBAKI,KAAK,EAAA,CAAA;sBADf,KAAK;;;MCjDK,iCAAiC,CAAA;AAJ9C,IAAA,WAAA,GAAA;QAKY,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;AAGhB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAQ,CAAC;AAKjC,QAAA,IAAA,CAAA,MAAM,GAA0C,EAAE,CAAC,EAAE,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,MAAM,GAA0C,EAAE,CAAC,EAAE,CAAC,CAAC;AA+BlE,KAAA;IA7BC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AACpG,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,KAAM,GAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;KAClC;AAES,IAAA,IAAI,CAAC,KAA6B,EAAA;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;YAC5C,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;AAClE,SAAC,CAAC,CAAC;KACJ;AAES,IAAA,cAAc,CAAC,IAA6B,EAAA;AACpD,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;KAC/C;IAES,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;IACS,gBAAgB,GAAA;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;KACzB;IAES,gBAAgB,GAAA;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC3C,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC/B,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;8GAxCU,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,qICV9C,4kGAwEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,+IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,KAAA,EAAA,KAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,GAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FD9Da,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAJ7C,SAAS;+BACE,8BAA8B,EAAA,QAAA,EAAA,4kGAAA,EAAA,CAAA;8BAOjC,QAAQ,EAAA,CAAA;sBADd,MAAM;gBAIA,MAAM,EAAA,CAAA;sBADZ,KAAK;;;MEWK,4BAA4B,CAAA;AAKvC,IAAA,WAAA,CAAoB,MAAuB,EAAU,KAAY,EAAU,aAA8B,EAAA;QAArF,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;QAAU,IAAa,CAAA,aAAA,GAAb,aAAa,CAAiB;QAHjG,IAAK,CAAA,KAAA,GAAQ,EAAE,CAAC;QAChB,IAAe,CAAA,eAAA,GAAG,SAAS,CAAC;QAmC5B,IAAU,CAAA,UAAA,GAAG,IAAI,eAAe,CAAoC,IAAI,CAAC,QAAQ,CAAC,CAAC;;QAiFpF,IAAO,CAAA,OAAA,GAAG,CAAC,IAAY,KAA0C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AACpH,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,IAAY,KAAc,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC;AAlH3H,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,SAAS,CAAC;KAC5D;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACvC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AAED,IAAA,IAAY,IAAI,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAiC,CAAC;KAC5D;;AAID,IAAA,IAAY,QAAQ,GAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM;AACpC,cAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;AACzB,cAAE;AACA,gBAAA;AACE,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU;AACtC,iBAAA;aACF,CAAC;KACL;AAID,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;KACjD;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CACxB,SAAS,CAAC,CAAC,QAAQ,KAAI;YACrB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1F,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE;gBAC7B,OAAO,CAAC,QAAQ,GAAG;AACjB,oBAAA;AACE,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,KAAK,EAAE,SAAS;wBAChB,UAAU,EAAE,OAAO,CAAC,UAAU;AAC/B,qBAAA;iBACF,CAAC;aACH;AACD,YAAA,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;SACpB,CAAC,CACH,CAAC;KACH;AAED,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;KACtD;AAED,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CACxB,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CACvG,CAAC;KACH;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC7G;AAED,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;KACxG;AAEM,IAAA,UAAU,CAAC,IAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,SAAS,CAAC;QACzC,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI;AACnF,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU;SACtC,CAAC;AACF,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAC9C,MAAM,eAAe,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;YACtD,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,EAAE;AACxC,gBAAA,OAAO,cAAc,CAAC;aACvB;iBAAM;AACL,gBAAA,OAAO,OAAO,CAAC;aAChB;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KACvC;IAEM,IAAI,GAAA;QACT,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACrF,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACrC,YAAA,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B;aAAM;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/C,YAAA,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B;KACF;IAEM,IAAI,GAAA;QACT,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AACrF,QAAA,IAAI,SAAS,GAAG,CAAC,EAAE;AACjB,YAAA,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B;aAAM;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/C,YAAA,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B;KACF;AAKF,CAAA;MAGY,gCAAgC,CAAA;AAD7C,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACjD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAW/B,KAAA;AATQ,IAAA,MAAM,MAAM,CAAC,UAAkB,EAAE,UAAkB,EAAA;AACxD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACvC,QAAA,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACxC,YAAA,OAAO,IAAI,4BAA4B,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SACjF;AACD,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;KACxC;8GAdU,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,cADnB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAD5C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;MC/IrB,oBAAoB,GAAG,mBAAmB,CAAqC,mBAAmB,EAAE;AAG3G,MAAO,0BAA2B,SAAQ,iBAAiB,CAAA;AADjE,IAAA,WAAA,GAAA;;AAEU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAC;AAqBxE,KAAA;IAnBC,MAAM,OAAO,CAAC,OAA2B,EAAA;AACvC,QAAA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACtE,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEtE,QAAA,MAAM,GAAG,GAAG,MAAM,OAAO,qEAAoD,CAAC,CAAC;AAC/E,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE;AAC5E,YAAA,KAAK,EAAE,CAAA,WAAA,EAAc,MAAM,CAAC,KAAK,CAAE,CAAA;YACnC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI;AAC1E,YAAA,IAAI,EAAE;gBACJ,MAAM,EAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;gBACjE,MAAM;AACP,aAAA;AACF,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE;AACrB,YAAA,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACvC,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtD,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACjD;KACF;8GAxBU,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAA1B,0BAA0B,EAAA,CAAA,CAAA,EAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;;AA4BL,MAAO,8BAA+B,SAAQ,iBAAiB,CAAA;IACnE,MAAM,OAAO,CAAC,OAA2B,EAAA;AACvC,QAAA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;KACzD;AACF,CAAA;AAEY,MAAA,uBAAuB,GAAgB;AAClD,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,KAAK,EAAE;AACL,QAAA,WAAW,EAAE;AACX,YAAA,EAAE,EAAE,aAAa;AACjB,YAAA,MAAM,EAAE,4BAA4B;AACpC,YAAA,SAAS,EAAE;AACT,gBAAA;oBACE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,0CAA0C,EAAE,CAAC;AACxF,oBAAA,UAAU,EAAE,cAAc;AAC3B,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,MAAM,EAAE,gBAAgB;AACxB,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,gBAAgB;AACvB,gBAAA,OAAO,EAAE,2CAA2C;AACrD,aAAA;AACD,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,UAAU,EAAE,EAAE;AACd,oBAAA,UAAU,EAAE,iBAAiB;AAC9B,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,EAAE,EAAE,iBAAiB;AACrB,YAAA,MAAM,EAAE,gCAAgC;AACxC,YAAA,SAAS,EAAE;AACT,gBAAA;oBACE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,yCAAyC,EAAE,CAAC;AACvF,oBAAA,UAAU,EAAE,gBAAgB;AAC7B,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,cAAc,EAAE;AACd,YAAA,EAAE,EAAE,gBAAgB;AACpB,YAAA,MAAM,EAAE,yBAAyB;AAClC,SAAA;AACF,KAAA;;;MC1EU,qBAAqB,GAAG,mBAAmB,CACtD,kBAAkB,EAClB;AAGI,MAAO,4BAA6B,SAAQ,iBAAiB,CAAA;AADnE,IAAA,WAAA,GAAA;;AAEU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AA0FxD,KAAA;IAxFC,MAAM,OAAO,CAAC,OAA2B,EAAA;QACvC,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACvC,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1E,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,QAAA,OAAO,CAAC,WAAW,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAC/C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACrC,YAAA,KAAK,EAAE,oBAAoB;AAC3B,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,MAAM,EAAE,aAAa;AACrB,YAAA,aAAa,EAAE,CAAC;AAChB,YAAA,IAAI,EAAE,CAAA,EAAA,EAAK,GAAG,CAAC,MAAM,CAAE,CAAA;AACvB,YAAA,OAAO,EAAE;AACP,gBAAA;AACE,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,KAAK,EAAE,QAAQ;oBACf,OAAO,EAAE,MAAK;wBACZ,MAAM,CAAC,KAAK,EAAE,CAAC;qBAChB;AACF,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,IAAI,EAAE;YACnC,MAAM,eAAe,GAAI,GAAa;AACnC,iBAAA,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,KAAI;AACb,gBAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;oBAC7B,UAAU,CAAC,MAAK;wBACd,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AACzC,qBAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;AACd,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC;AACD,iBAAA,GAAG,CAAC,CAAC,CAAC,KACL,CAAC,EAAE,IAAI,CACL,CAAC,KAAK,KAAI;AACR,gBAAA,YAAY,EAAE,CAAC;gBACf,MAAM,CAAC,eAAe,CAAC,CAAG,EAAA,YAAY,CAAI,CAAA,EAAA,GAAG,CAAC,MAAM,CAAE,CAAA,CAAC,CAAC;AACxD,gBAAA,MAAM,CAAC,gBAAgB,CAAC,CAAC,YAAY,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;AAC3D,gBAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AACxC,aAAC,EACD,CAAC,MAAM,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAC7C,CACF,CAAC;YAEJ,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACnD,YAAA,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;AAC7F,YAAA,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,CAAC;YACxF,UAAU,CAAC,MAAK;gBACd,MAAM,CAAC,KAAK,EAAE,CAAC;aAChB,EAAE,GAAG,CAAC,CAAC;;YAGR,IAAI,kBAAkB,GAAG,CAAC,IAAI,cAAc,KAAK,CAAC,EAAE;;AAElD,gBAAA,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAC5B,qBAAqB,EACrB,CAAA,EAAG,kBAAkB,CAAA,0BAAA,CAA4B,EACjD,SAAS,CACV,CAAC;;gBAEF,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;aAC3F;iBAAM,IAAI,kBAAkB,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE;;AAEvD,gBAAA,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAC5B,4BAA4B,EAC5B,CAAG,EAAA,kBAAkB,2CAA2C,cAAc,CAAA,8BAAA,CAAgC,EAC9G,SAAS,CACV,CAAC;;gBAEF,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;aAC3F;iBAAM,IAAI,kBAAkB,KAAK,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE;;AAEzD,gBAAA,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAC5B,iBAAiB,EACjB,CAAA,uBAAA,EAA0B,cAAc,CAAA,0BAAA,CAA4B,EACpE,QAAQ,CACT,CAAC;aACH;iBAAM;;AAEL,gBAAA,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,oBAAoB,EAAE,oCAAoC,EAAE,MAAM,CAAC,CAAC;aACpG;SACF;aAAM;YACL,MAAM,IAAI,KAAK,CACb,CAAA,4CAAA,EAA+C,MAAM,CAAC,KAAK,CAA4E,0EAAA,CAAA,CACxI,CAAC;SACH;KACF;8GA5FU,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAA5B,4BAA4B,EAAA,CAAA,CAAA,EAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,UAAU;;AAiGL,MAAO,eAAgB,SAAQ,mBAAmB,CAAA;AADxD,IAAA,WAAA,GAAA;;AAEU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAKjD,KAAA;IAHC,MAAM,OAAO,CAAC,GAAW,EAAA;QACvB,OAAO,GAAG,IAAI,KAAK,CAAC;KACrB;8GANU,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAf,eAAe,EAAA,CAAA,CAAA,EAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;AAUE,MAAA,uBAAuB,GAAgB;AAClD,IAAA,WAAW,EAAE,eAAe;AAC5B,IAAA,KAAK,EAAE;AACL,QAAA,aAAa,EAAE;AACb,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,MAAM,EAAE,wBAAwB;AAChC,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,OAAO,EAAE,CAA+C,6CAAA,CAAA;AACxD,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;AACD,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,UAAU,EAAE;AACV,wBAAA;AACE,4BAAA,IAAI,EAAE,KAAK;AACX,4BAAA,UAAU,EAAE;AACV,gCAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,8CAA8C,EAAE;AAC9E,gCAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE;AACpD,6BAAA;AACF,yBAAA;AACF,qBAAA;AACD,oBAAA,UAAU,EAAE,eAAe;AAC5B,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,aAAa,EAAE;AACb,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,MAAM,EAAE,8BAA8B;AACvC,SAAA;AACF,KAAA;;;MC7HU,0BAA0B,CAAA;AA2CrC,IAAA,WAAA,CACU,kBAAwC,EACxC,YAA4B,EAC1B,QAAoB,EACpB,GAAsB,EAAA;QAHxB,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAsB;QACxC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAgB;QAC1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAY;QACpB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AA9C1B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,EAAC,KAA0B,EAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;QAEnC,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAsB,CAAC;QACjE,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;QACzB,IAAoB,CAAA,oBAAA,GAAW,EAAE,CAAC;QAClC,IAAc,CAAA,cAAA,GAAW,EAAE,CAAC;QAC5B,IAAkB,CAAA,kBAAA,GAAY,IAAI,CAAC;AAEnC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AACxC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AACxC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;AAC9C,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;AAE1B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AACtC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;;AAEhD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;AACvC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;;AAEjD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC3B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;;AAErC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;;AAEpC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,IAAI,IAAI,CAAC;AAC3D,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,IAAI,IAAI,CAAC;AAC3D,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,IAAI,IAAI,CAAC;AAS7D,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAgDtC,QAAA,IAAA,CAAA,gBAAgB,GAAuB;AAC7C,YAAA;AACE,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,OAAO,EAAE,IAAI;AACd,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,IAAI,EAAE,uBAAuB;AAC7B,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,QAAQ,EAAE,CAAC,IAAI,CAAC,SAAS;AAC1B,aAAA;SACF,CAAC;AAEM,QAAA,IAAA,CAAA,cAAc,GAAuB;AAC3C,YAAA;AACE,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,IAAI,EAAE,kBAAkB;AACxB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,OAAO,EAAE,IAAI;AACd,aAAA;SACF,CAAC;AAEQ,QAAA,IAAA,CAAA,mBAAmB,GAAG,CAAC,OAAgB,KAAiC;YAChF,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAChD,SAAC,CAAC;AAEQ,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,OAAgB,KAAwB;YACrE,OAAO,IAAI,CAAC,cAAc,CAAC;AAC7B,SAAC,CAAC;;AAtEA,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC;;QAG3I,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACtI,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;AACxG,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AAC5B,gBAAA,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;aACtB;AACH,SAAC,CAAC,CAAC;;AAEH,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC5F,YAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAC1C,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAClC;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;KAC9B;IAED,yBAAyB,GAAA;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACnD,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;AAAE,YAAA,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;;YACrF,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACpD;IAED,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;KAC/D;IAED,iBAAiB,GAAA;QACf,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,0BAA0B,EAAE,CAAC,CAAC;KACnD;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;KACpD;AAmCS,IAAA,gBAAgB,CAAC,CAAwB,EAAA;AACjD,QAAA,MAAM,CAAC,GAA+B;YACpC,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI;YACnC,IAAI,EAAE,CAAC,CAAC,IAAI;SACb,CAAC;AACF,QAAA,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;KAC/B;IAES,MAAM,qBAAqB,CAAC,CAA6B,EAAA;AACjE,QAAA,QAAQ,CAAC,CAAC,IAAI;YACZ,KAAK,MAAM,EAAE;AACX,gBAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE;AAC7C,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AACjC,wBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;wBAC/B,IAAI,EAAE,CAAC,CAAC,IAAI;AACb,qBAAA;AACF,iBAAA,CAAC,CAAC;gBACH,MAAM;aACP;YACD,KAAK,MAAM,EAAE;AACX,gBAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE;AAC1C,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AACjC,wBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;AAChC,qBAAA;AACD,oBAAA,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE;AACd,iBAAA,CAAC,CAAC;gBACH,MAAM;aACP;YACD,KAAK,QAAQ,EAAE;AACb,gBAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE;AAC3C,oBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AACjC,oBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;AAC/B,oBAAA,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACjB,iBAAA,CAAC,CAAC;gBACH,MAAM;aACP;SACF;KACF;IAES,iBAAiB,GAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE;AACrC,YAAA,OAAO,EAAE;AACP,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AACjC,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;AAChC,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;AAES,IAAA,kBAAkB,CAAC,OAAe,EAAA;QAC1C,QAAQ,OAAO;AACb,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE;AACrC,oBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AACjC,oBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;AAC/B,oBAAA,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,KAAM,CAAS,CAAC,IAAI,CAAC,CAAC;AACzD,iBAAA,CAAC,CAAC;gBACH,MAAM;AACR,YAAA;gBACE,MAAM;SACT;KACF;IAES,kBAAkB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;KAC7B;IAES,WAAW,CAAC,IAAY,EAAE,SAAkB,EAAA;AACpD,QAAA,IAAI,SAAS,IAAI,KAAK,EAAE;YACtB,QAAQ,IAAI;AACV,gBAAA,KAAK,YAAY;AACf,oBAAA,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;oBAC9B,MAAM;AACR,gBAAA,KAAK,SAAS;AACZ,oBAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;oBAC3B,MAAM;AACR,gBAAA,KAAK,OAAO;AACV,oBAAA,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;oBACxB,MAAM;AACR,gBAAA;oBACE,MAAM;aACT;SACF;KACF;AAED,IAAA,uBAAuB,CAAC,CAAsB,EAAA;AAC5C,QAAA,IAAI,CAAC,CAAC,iBAAiB,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SACzC;KACF;AAES,IAAA,MAAM,kBAAkB,GAAA;AAChC,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,0BAA0B,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;AACrE,YAAA,UAAU,EAAE,EAAE;SACf,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kCAAkC,EAAE;AAC7E,YAAA,KAAK,EAAE,oBAAoB;YAC3B,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI;AAC1E,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,IAAI,EAAE;gBACJ,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,gBAAA,YAAY,EAAE,OAAO;AACrB,gBAAA,IAAI,EAAE,QAAQ;AACf,aAAA;AACF,SAAA,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE;YAC5B,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACrD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAChD;KACF;AACS,IAAA,MAAM,eAAe,CAAC,CAAe,EAAE,YAAiB,EAAA;;QAEhE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,kCAAkC,EAAE;AAC7E,YAAA,KAAK,EAAE,oBAAoB;YAC3B,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI;AAC1E,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,IAAI,EAAE;gBACJ,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,YAAY;AACZ,gBAAA,IAAI,EAAE,MAAM;AACb,aAAA;AACF,SAAA,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC7C;QACD,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE;YAC5B,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACrD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAChD;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;KACzB;8GAzQU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAF1B,QAAA,EAAA,cAAA,EAAA,SAAA,EAAA,CAAC,cAAc,CAAC,gUCzB7B,qmfAuSsB,EAAA,MAAA,EAAA,CAAA,meAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,+BAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,+IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,gCAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kCAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oCAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iCAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAhB,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FD5QT,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;oCAGO,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,cAAc,CAAC,EAAA,QAAA,EAAA,qmfAAA,EAAA,MAAA,EAAA,CAAA,meAAA,CAAA,EAAA,CAAA;mLAsCC,aAAa,EAAA,CAAA;sBAAxC,SAAS;uBAAC,eAAe,CAAA;gBAEP,IAAI,EAAA,CAAA;sBAAtB,SAAS;uBAAC,MAAM,CAAA;gBACc,gBAAgB,EAAA,CAAA;sBAA9C,SAAS;uBAAC,kBAAkB,CAAA;;;MEsBlB,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAT1B,0BAA0B;YAC1B,kCAAkC;YAClC,kCAAkC;YAClC,oCAAoC;YACpC,wCAAwC;AACxC,YAAA,iCAAiC,aA1CjC,YAAY;YACZ,WAAW;YACX,cAAc;YACd,iBAAiB;YACjB,cAAc;YACd,iBAAiB;YACjB,aAAa;YACb,gBAAgB;YAChB,eAAe;YACf,aAAa;YACb,cAAc;YACd,cAAc;YACd,eAAe;YACf,YAAY;YACZ,iBAAiB;YACjB,YAAY;YACZ,YAAY;YACZ,eAAe;YACf,iBAAiB;YACjB,aAAa;YACb,gBAAgB;YAChB,mBAAmB;YACnB,qBAAqB;YACrB,aAAa;YACb,cAAc;YACd,sBAAsB;;YAEtB,WAAW;YACX,OAAO;YACP,kBAAkB;YAClB,aAAa;YACb,YAAY;YACZ,eAAe;YACf,qBAAqB;YACrB,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;AAYJ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YA9C1B,YAAY;YACZ,WAAW;YACX,cAAc;YACd,iBAAiB;YACjB,cAAc;YACd,iBAAiB;YACjB,aAAa;YACb,gBAAgB;YAChB,eAAe;YACf,aAAa;YACb,cAAc;YACd,cAAc;YACd,eAAe;YACf,YAAY;YACZ,iBAAiB;YACjB,YAAY;YACZ,YAAY;YACZ,eAAe;YACf,iBAAiB;YACjB,aAAa;YACb,gBAAgB;YAChB,mBAAmB;YACnB,qBAAqB;YACrB,aAAa;YACb,cAAc;YACd,sBAAsB;YAMtB,YAAY;YACZ,eAAe;YACf,qBAAqB;YACrB,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAYJ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAhD7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,cAAc;wBACd,iBAAiB;wBACjB,cAAc;wBACd,iBAAiB;wBACjB,aAAa;wBACb,gBAAgB;wBAChB,eAAe;wBACf,aAAa;wBACb,cAAc;wBACd,cAAc;wBACd,eAAe;wBACf,YAAY;wBACZ,iBAAiB;wBACjB,YAAY;wBACZ,YAAY;wBACZ,eAAe;wBACf,iBAAiB;wBACjB,aAAa;wBACb,gBAAgB;wBAChB,mBAAmB;wBACnB,qBAAqB;wBACrB,aAAa;wBACb,cAAc;wBACd,sBAAsB;;wBAEtB,WAAW;wBACX,OAAO;wBACP,kBAAkB;wBAClB,aAAa;wBACb,YAAY;wBACZ,eAAe;wBACf,qBAAqB;wBACrB,aAAa;AACd,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,0BAA0B;wBAC1B,kCAAkC;wBAClC,kCAAkC;wBAClC,oCAAoC;wBACpC,wCAAwC;wBACxC,iCAAiC;AAClC,qBAAA;AACD,oBAAA,SAAS,EAAE,EAAE;AACd,iBAAA,CAAA;;;MCpCY,wBAAwB,CAAA;IAKnC,WAAoB,CAAA,MAAuB,EAAU,aAAuC,EAAA;QAAxE,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;QAAU,IAAa,CAAA,aAAA,GAAb,aAAa,CAA0B;QAHpF,IAAW,CAAA,WAAA,GAAiB,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACrE,IAAkB,CAAA,kBAAA,GAAoE,EAAE,CAAC;QA0BzF,IAAO,CAAA,OAAA,GAAG,IAAI,eAAe,CAA4B,IAAI,CAAC,KAAK,CAAC,CAAC;QAMtE,IAAO,CAAA,OAAA,GAAG,CAAC,IAAY,KAA0C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;;QAInH,IAAY,CAAA,YAAA,GAAG,SAAS,CAAC;QAMzB,IAAO,CAAA,OAAA,GAAG,IAAI,eAAe,CAA4B,IAAI,CAAC,KAAK,CAAC,CAAC;;AAgGrE,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,eAAe,CAAqC,EAAE,CAAC,CAAC;QAUtF,IAAS,CAAA,SAAA,GAAG,IAAI,eAAe,CAA8B,IAAI,CAAC,OAAO,CAAC,CAAC;;AA2C3E,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAA4B,EAAE,CAAC,CAAC;;AAgDpE,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAiC,EAAE,CAAC,CAAC;AA5OpF,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;aAC7C,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,eAAe,CAAC;AAC9C,aAAA,GAAG,CAAC,CAAC,IAAI,KAAI;AACZ,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvD,YAAA,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AAC5E,SAAC,CAAC,CAAC;KACN;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACvC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;;AAGD,IAAA,IAAY,KAAK,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;KAC/B;AAGD,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAQD,IAAA,IAAY,KAAK,GAAA;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAM,CAAC;KACvC;AAGD,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AACD,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,SAAS,CAAC,CAAC,KAAK,KAAI;AAClB,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7D,IAAI,IAAI,EAAE;AACR,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;aACjB;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAChC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1B;iBAAM;AACL,gBAAA,OAAO,EAAE,CAAC,4BAA4B,CAAC,CAAC;aACzC;SACF,CAAC,CACH,CAAC;KACH;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC/D;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAChE;AAED,IAAA,IAAW,eAAe,GAAA;QACxB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;KACzD;IAEM,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KAClC;AAEM,IAAA,OAAO,CAAC,IAAY,EAAA;QACzB,IAAI,SAAS,GAAa,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,KAAI;AACtD,YAAA,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5C,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,4BAA4B,CAAC;AACjH,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACxC,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;YAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE;AAClC,gBAAA,OAAO,WAAW,CAAC;aACpB;iBAAM;AACL,gBAAA,OAAO,IAAI,CAAC;aACb;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3G,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;;AAEjG,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5G,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;AAGhC,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACrB,YAAA,KAAK,EAAE,IAAW;AAClB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,QAAQ,EAAE,IAAW;AACrB,YAAA,OAAO,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;gBAC1C,KAAK,EAAE,CAAC,CAAC,IAAI;gBACb,KAAK,EAAE,CAAC,CAAC,KAAK;AACd,gBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;AAC/B,aAAA,CAAC,CAAQ;AACX,SAAA,CAAC,CAAC;AACH,QAAA,MAAM,kBAAkB,GAA6B,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;YACjF,KAAK,EAAE,CAAC,CAAC,IAAI;YACb,GAAG,EAAE,CAAC,CAAC,GAAG;AACX,SAAA,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC;AAE5C,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;KAC3B;AAED,IAAA,UAAU,CAAC,OAAgC,EAAA;QACzC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC7C,QAAA,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5B;AACD,IAAA,UAAU,CAAC,WAAoC,EAAA;AAC7C,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC;AAClH,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KAChC;AACD,IAAA,UAAU,CAAC,QAAgB,EAAA;QACzB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AACtF,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KAClC;AAMD,IAAA,IAAY,OAAO,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;YACxC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,MAAM,EAAE,CAAC,CAAC,MAAM;AACjB,SAAA,CAAC,CAAC,CAAC;KACL;AAID,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;KAChD;AAED,IAAA,IAAW,eAAe,GAAA;QACxB,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9D;AAED,IAAA,IAAW,oBAAoB,GAAA;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CACpB,GAAG,CAAC,CAAC,IAAI,KAAI;AACX,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;SAC/D,CAAC,CACH,CAAC;KACH;AAED,IAAA,aAAa,CAAC,KAAyC,EAAA;AACrD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC1C,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9F,SAAC,CAAC,CAAC;KACJ;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC1C,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7D,SAAC,CAAC,CAAC;KACJ;IAED,mBAAmB,CAAC,IAAY,EAAE,OAAgB,EAAA;AAChD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;AAC5E,YAAA,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;AACxB,gBAAA,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC;aAC/B;iBAAM;AACL,gBAAA,OAAO,MAAM,CAAC;aACf;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACnD;AAKD,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;KACrD;AAED,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;KACpD;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;YAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;AACpD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;YAC/F,IAAI,IAAI,EAAE;AACR,gBAAA,MAAM,KAAK,GAAG,CAAC,GAAG,YAAY,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAA6B,CAAC,CAAC;AACjF,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACjC;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,UAAU,CAAC,IAA6B,EAAA;QACtC,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;AACpD,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACjC;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC1C,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,UAAU,CAAC,KAAgC,EAAA;AACzC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC1C,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9B,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5F,MAAM,kBAAkB,GAA6B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;gBACrE,KAAK,EAAE,CAAC,CAAC,IAAI;gBACb,GAAG,EAAE,CAAC,CAAC,GAAG;AACX,aAAA,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC;AAC5C,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC5B,SAAC,CAAC,CAAC;KACJ;AAMD,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;KAC1D;AACD,IAAA,IAAW,gBAAgB,GAAA;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;KACzD;IAEM,qBAAqB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1D;AAED,IAAA,YAAY,CAAC,cAAyD,EAAA;QACpE,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;QAC3D,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAE/E,QAAA,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAClC,CAAC,KAAK,KAAK,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,CACtF,CAAC;AACF,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAA2C,CAAC,CAAC;KAC5E;AAED,IAAA,eAAe,CAAC,IAAkC,EAAA;QAChD,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;AAC9D,QAAA,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC3C;AACD,IAAA,gBAAgB,CAAC,KAAqC,EAAA;AACpD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC1C,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9F,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;AAED,IAAA,kBAAkB,CAAC,KAAa,EAAA;QAC9B,MAAM,gBAAgB,GAAmC,EAAE,CAAC;QAE5D,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,QAAQ,KAAI;AAC5C,YAAA,IAAI,QAAQ,EAAE,QAAQ,IAAI,QAAQ,IAAI,QAAQ,EAAE,QAAQ,IAAI,QAAQ,EAAE;gBACpE,gBAAgB,CAAC,IAAI,CAAC;oBACpB,IAAI,EAAE,QAAQ,CAAC,IAAI;AACnB,oBAAA,KAAK,EAAE,QAAQ,CAAC,QAAQ,IAAI,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK;AAChE,oBAAA,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,QAAQ,GAAG,UAAU,GAAG,OAAO;AAC/D,iBAAA,CAAC,CAAC;aACJ;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC1C,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;AACtD,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;IAED,kBAAkB,GAAA;AAChB,QAAA,MAAM,gBAAgB,GAA6B;AACjD,YAAA,KAAK,EAAE,IAAW;AAClB,YAAA,QAAQ,EAAE,IAAW;AACrB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,OAAO,EAAE,EAAE;SACZ,CAAC;AAEF,QAAA,MAAM,cAAc,GAA6B;AAC/C,YAAA,KAAK,EAAE,IAAW;AAClB,YAAA,QAAQ,EAAE,IAAW;AACrB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE,EAAE;SACZ,CAAC;AAEF,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;YAC1C,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;gBACzD,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC,KAAI;AACnC,oBAAA,IAAI,CAAC,CAAC,KAAK,EAAE;AACX,wBAAA,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC;4BAC7B,KAAK,EAAE,CAAC,CAAC,IAAI;AACb,4BAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAS;4BACrC,KAAK,EAAE,CAAC,CAAC,KAAK;AACf,yBAAA,CAAC,CAAC;qBACJ;AACH,iBAAC,CAAC,CAAC;aACJ;AACD,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;gBAC1B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AAC5B,oBAAA,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC;wBAC3B,KAAK,EAAE,CAAC,CAAC,IAAI;AACb,wBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAS;wBACrC,KAAK,EAAE,CAAC,CAAC,KAAK;AACf,qBAAA,CAAC,CAAC;AACL,iBAAC,CAAC,CAAC;aACJ;AACD,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACrB,gBAAA,KAAK,EAAE,IAAW;AAClB,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,QAAQ,EAAE,IAAW;AACrB,gBAAA,OAAO,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC;AAC5C,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9F,SAAC,CAAC,CAAC;KACJ;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC1C,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5D,SAAC,CAAC,CAAC;KACJ;AACF,CAAA;MAEY,mBAAmB,GAAG,IAAI,cAAc,CAAoB,qBAAqB,EAAE;MAGnF,wBAAwB,CAAA;AADrC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,KAAK,GAAmC,IAAI,GAAG,EAAE,CAAC;AAClD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACjD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACjD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAe3C,KAAA;AAbQ,IAAA,MAAM,MAAM,CAAC,UAAkB,EAAE,UAAkB,EAAA;AACxD,QAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACvC,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACxE,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACxC,YAAA,OAAO,MAAM,CAAC;SACf;QACD,MAAM,GAAG,IAAI,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAClE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACxC,QAAA,OAAO,MAAM,CAAC;KACf;8GAlBU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cADX,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;AChY5B,MAAO,2BAA4B,SAAQ,mBAAmB,CAAA;AAYlE;;AAEG;AACH,IAAA,WAAA,CAAoB,QAAiB,EAAA;AACnC,QAAA,KAAK,EAAE,CAAC;QADU,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;AAZ7B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,EAAC,KAA0B,EAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAEpC,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;KAS3B;IAEQ,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE,CAAC;;QAEjB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE;AAC/B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC;AAC9C,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,IAAI,IAAI,CAAC;AACzD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,IAAI,IAAI,CAAC;AACzD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,IAAI,IAAI,CAAC;SAC1D;KACF;AAES,IAAA,aAAa,CAAC,KAAe,EAAA;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;KACrE;IAED,gBAAgB,GAAA;QACd,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;AAES,IAAA,kBAAkB,CAAC,OAAe,EAAA;QAC1C,QAAQ,OAAO;AACb,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE;AACrC,oBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;AAC1B,oBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;AACxB,oBAAA,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACpB,iBAAA,CAAC,CAAC;gBACH,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,MAAM;AACR,YAAA,KAAK,SAAS;AACZ,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE;AACpC,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;AAC1B,wBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;AACzB,qBAAA;AACD,oBAAA,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;AACjB,iBAAA,CAAC,CAAC;gBACH,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,MAAM;AACR,YAAA;gBACE,MAAM;SACT;KACF;8GA7DU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAK,IAAA,CAAA,OAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,ECnBxC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,ixEAkDY,EDjCA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,+PAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,KAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,iBAAiB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,+IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,8BAAE,sBAAsB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAEhI,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAPvC,SAAS;oCAEO,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,sBAAsB,CAAC,EAAA,QAAA,EAAA,ixEAAA,EAAA,CAAA;;;;;;;;MEFjI,4BAA4B,CAAA;AAKvC,IAAA,WAAA,CAAoB,MAAuB,EAAU,YAAiB,EAAU,eAAoB,EAAA;QAAhF,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;QAAU,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAK;QAAU,IAAe,CAAA,eAAA,GAAf,eAAe,CAAK;QAH5F,IAAK,CAAA,KAAA,GAAQ,EAAE,CAAC;;QA2BjB,IAAO,CAAA,OAAA,GAAG,CAAC,IAAY,KAA0C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAvBzH,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;KAC7C;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACvC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AACD,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;AAED,IAAA,IAAY,IAAI,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAiC,CAAC;KAC5D;;IAMM,MAAM,MAAM,CAAC,MAAW,EAAA;QAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE;AACjC,YAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YAC3E,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACnC,YAAA,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B;aAAM;AACL,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAyC,sCAAA,EAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAG,CAAA,CAAA,CAAC,CAAC;SACrF;KACF;AACF,CAAA;MAGY,gCAAgC,CAAA;AAD7C,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACjD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAkB3C,KAAA;IAhBQ,MAAM,MAAM,CACjB,UAAkB,EAClB,UAAkB,EAClB,EAAU,EACV,OAAY,EAAA;AAEZ,QAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACvC,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACxE,QAAA,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE;YAC3B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACxC,OAAO,IAAI,4BAA4B,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;SAChE;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACxC,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;KACxC;8GAnBU,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,cADnB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAD5C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;MClDrB,oBAAoB,GAAG,mBAAmB,CACrD,mBAAmB,EACnB;AAEI,MAAO,0BAA2B,SAAQ,iBAAiB,CAAA;AADjE,IAAA,WAAA,GAAA;;AAEU,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAC;AAyBxE,KAAA;IAvBC,MAAM,OAAO,CAAC,OAA2B,EAAA;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC/C,QAAA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;AAC5D,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACtE,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;AAEtF,QAAA,MAAM,GAAG,GAAG,MAAM,OAAO,qEAAoD,CAAC,CAAC;AAC/E,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE;AAC3E,YAAA,KAAK,EAAE,CAAU,OAAA,EAAA,OAAO,CAAC,OAAO,CAAC,KAAK,CAAE,CAAA;YACxC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI;AAC1E,YAAA,IAAI,EAAE;gBACJ,OAAO,EAAE,MAAM,CAAC,IAAI;AACpB,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU;gBACtC,MAAM;AACP,aAAA;AACF,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE;AAC9B,YAAA,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACvC,YAAA,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;SACnE;KACF;8GA5BU,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAA1B,0BAA0B,EAAA,CAAA,CAAA,EAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;;AAgCL,MAAO,8BAA+B,SAAQ,iBAAiB,CAAA;AAArE,IAAA,WAAA,GAAA;;AACU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;KAQ5D;IANC,MAAM,OAAO,CAAC,OAA2B,EAAA;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACvD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAClF,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;KAChH;AACF,CAAA;AAEY,MAAA,uBAAuB,GAAgB;AAClD,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,KAAK,EAAE;AACL,QAAA,WAAW,EAAE;AACX,YAAA,EAAE,EAAE,aAAa;AACjB,YAAA,MAAM,EAAE,4BAA4B;AACpC,YAAA,SAAS,EAAE;AACT,gBAAA;oBACE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,0CAA0C,EAAE,CAAC;AACxF,oBAAA,UAAU,EAAE,cAAc;AAC3B,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,MAAM,EAAE,gBAAgB;AACxB,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,iBAAiB;AACxB,gBAAA,OAAO,EAAE,uCAAuC;AACjD,aAAA;AACD,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,UAAU,EAAE,EAAE;AACd,oBAAA,UAAU,EAAE,iBAAiB;AAC9B,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,EAAE,EAAE,iBAAiB;AACrB,YAAA,MAAM,EAAE,gCAAgC;AACxC,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,UAAU,EAAE,EAAE;AACd,oBAAA,UAAU,EAAE,EAAE;AACf,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;;;ACpFG,MAAO,sBAAuB,SAAQ,iBAAiB,CAAA;AAD7D,IAAA,WAAA,GAAA;;AAEU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAqBvC,KAAA;IAnBC,MAAM,OAAO,CAAC,OAA2B,EAAA;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAE/C,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAClF,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACjG,IAAI,eAAe,GAAG,cAAc,CAAC;AACrC,QAAA,IAAI,cAAc;AAAE,YAAA,eAAe,GAAG,CAAK,EAAA,EAAA,cAAc,CAAC,IAAI,IAAI,CAAC;AACnE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;;AAEtI,QAAA,MAAM,GAAG,GAAG,MAAM,yEAA0D,CAAC;QAC7E,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE;YACtD,KAAK,EAAE,CAAG,EAAA,KAAK,CAAe,aAAA,CAAA;YAC9B,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI;AAC1E,YAAA,IAAI,EAAE;AACJ,gBAAA,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,OAAO,CAAC,IAAI;AACnB,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;8GAxBU,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAtB,sBAAsB,EAAA,CAAA,CAAA,EAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;;AA4BE,MAAA,wBAAwB,GAAgB;AACnD,IAAA,WAAW,EAAE,eAAe;AAC5B,IAAA,KAAK,EAAE;AACL,QAAA,aAAa,EAAE;AACb,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,MAAM,EAAE,wBAAwB;AACjC,SAAA;AACF,KAAA;;;ACpCG,MAAO,uBAAwB,SAAQ,iBAAiB,CAAA;AAD9D,IAAA,WAAA,GAAA;;AAEU,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC/C,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAWpD,KAAA;IATC,MAAM,OAAO,CAAC,OAA2B,EAAA;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACrC,QAAA,MAAM,UAAU,GAAG;AACjB,YAAA,QAAQ,EAAE,CAAI,CAAA,EAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,IAAI,OAAO,CAAC,MAAM,CAAM,GAAA,EAAA,OAAO,CAAC,MAAM,CAAA,CAAA,EAAI,EAAE,CAAO,KAAA,CAAA;SACvG,CAAC;AACF,QAAA,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KAClC;8GAZU,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAvB,uBAAuB,EAAA,CAAA,CAAA,EAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;AAiBE,MAAA,0BAA0B,GAAgB;AACrD,IAAA,WAAW,EAAE,gBAAgB;AAC7B,IAAA,KAAK,EAAE;AACL,QAAA,cAAc,EAAE;AACd,YAAA,EAAE,EAAE,gBAAgB;AACpB,YAAA,MAAM,EAAE,yBAAyB;AAClC,SAAA;AACF,KAAA;;;ACtBG,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;AAD5D,IAAA,WAAA,GAAA;;AAEU,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC/C,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AASpD,KAAA;IARC,MAAM,OAAO,CAAC,OAAa,EAAA;QACzB,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC/C,QAAA,MAAM,UAAU,GAAG;AACjB,YAAA,QAAQ,EAAE,CAAI,CAAA,EAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,MAAM,OAAO,CAAC,MAAM,CAAO,KAAA,CAAA;SACxG,CAAC;AACF,QAAA,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KAClC;8GAVU,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAArB,qBAAqB,EAAA,CAAA,CAAA,EAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;;AAcE,MAAA,uBAAuB,GAAgB;AAClD,IAAA,WAAW,EAAE,cAAc;AAC3B,IAAA,KAAK,EAAE;AACL,QAAA,YAAY,EAAE;AACZ,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,MAAM,EAAE,uBAAuB;AAChC,SAAA;AACF,KAAA;;;MCqCU,6BAA6B,CAAA;IA0BxC,WAAoB,CAAA,QAAiB,EAAU,YAA4B,EAAA;QAAvD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QAAU,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAgB;AAzBnE,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC5B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAEpC,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAA8B,CAAC;AAIjF,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,EAAC,KAA0B,EAAC,CAAC;QACzC,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;QAC1C,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;;AAE7C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,IAAI,IAAI,CAAC;AAC3D,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,IAAI,IAAI,CAAC;AAC3D,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,IAAI,IAAI,CAAC;;AAI3D,QAAA,IAAA,CAAA,OAAO,GAAwB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAG3E,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;YACtD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAW,CAAC,CAAC;AAC9C,SAAC,CAAC,CAAC;;QAEH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAACa,QAAM,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAChH,YAAA,IACE,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;gBAC/C,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AACjD,gBAAA,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAC9C;AACA,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE;AACtC,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AACjC,wBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;AAChC,qBAAA;AACF,iBAAA,CAAC,CAAC;aACJ;AACH,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAACA,QAAM,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,KAAI;AACrH,YAAA,IACE,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;gBAC/C,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AACjD,gBAAA,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EACrD;AACA,gBAAA,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACrD,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;aAC/C;AACH,SAAC,CAAC,CAAC;KACJ;IAES,eAAe,CAAC,CAAc,EAAE,IAAqC,EAAA;AAC7E,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAClC,QAAA,MAAM,IAAI,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAI,CAAA,EAAA,MAAM,CAAC,MAAM,CAAA,GAAA,EAAM,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAS,MAAA,EAAA,IAAI,CAAC,IAAI,EAAE,CAAC;AACrI,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5B;AAES,IAAA,qBAAqB,CAAC,KAAc,EAAA;AAC5C,QAAA,IAAI,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,yBAAyB,EAAE,CAAC,CAAC;KAC7D;IAES,iBAAiB,GAAA;QACzB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,0BAA0B,EAAE,CAAC,CAAC;KACnD;AAEO,IAAA,UAAU,CAAC,IAAY,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAC9B;IAES,MAAM,iBAAiB,CAAC,OAAwC,EAAA;AACxE,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE;AACrC,YAAA,OAAO,EAAE;AACP,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AACjC,gBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;AAC/B,gBAAA,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACvB,gBAAA,OAAO,EAAE,OAAO;AACjB,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;AAES,IAAA,QAAQ,CAAC,IAAqC,EAAA;AACtD,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;KAC/D;AAES,IAAA,kBAAkB,CAAC,OAAe,EAAA;QAC1C,QAAQ,OAAO;AACb,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE;AACrC,oBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AACjC,oBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;oBAC/B,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3B,iBAAA,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,QAAQ,EAAE;AACb,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE;AACrC,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;AACjC,wBAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;AAChC,qBAAA;AACF,iBAAA,CAAC,CAAC;gBACH,MAAM;aACP;AACD,YAAA;gBACE,MAAM;SACT;KACF;8GAhHU,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAZ,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,2DAF7B,CAAC,cAAc,CAAC,EC9D7B,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,28OAgJsB,2CD7GlB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,cAAc,EACd,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAiB,2VACjB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,gBAAgB,EAChB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,KAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,oMACZ,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,mBAAmB,EACnB,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,8BACd,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,KAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,cAAc,EACd,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,8BACf,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAIZ,eAAe,EACf,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,KAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,8BACf,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA;;AAEnB,gBAAA,qBAAqB,+BACrB,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAMT,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAhCzC,SAAS;AAEC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA;wBACP,YAAY;wBACZ,YAAY;wBACZ,cAAc;wBACd,iBAAiB;wBACjB,aAAa;wBACb,gBAAgB;wBAChB,eAAe;wBACf,YAAY;wBACZ,aAAa;wBACb,mBAAmB;wBACnB,cAAc;wBACd,cAAc;wBACd,cAAc;wBACd,eAAe;wBACf,YAAY;wBACZ,aAAa;wBACb,cAAc;wBACd,cAAc;wBACd,eAAe;wBACf,eAAe;wBACf,mBAAmB;;wBAEnB,qBAAqB;wBACrB,kBAAkB;qBACnB,EACW,UAAA,EAAA,IAAI,mBACC,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA,CAAC,cAAc,CAAC,EAAA,QAAA,EAAA,28OAAA,EAAA,CAAA;6GAcN,MAAM,EAAA,CAAA;sBAA1B,SAAS;uBAAC,QAAQ,CAAA;;;MEpDR,4BAA4B,CAAA;AAIvC,IAAA,WAAA,CACU,MAAuB,EACvB,KAAY,EACZ,UAAe,EACf,aAA8B,EAAA;QAH9B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;QACvB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;QACZ,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;QACf,IAAa,CAAA,aAAA,GAAb,aAAa,CAAiB;QANhC,IAAe,CAAA,eAAA,GAAG,SAAS,CAAC;QAuD5B,IAAU,CAAA,UAAA,GAAG,IAAI,eAAe,CAAoC,IAAI,CAAC,QAAQ,CAAC,CAAC;;QA+CpF,IAAO,CAAA,OAAA,GAAG,CAAC,IAAY,KAA0C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;KA/FtH;AAEL,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACvC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;AAED,IAAA,IAAY,IAAI,GAAA;AACd,QAAA,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAyB;KAC7F;;AAGD,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACtG,IAAI,eAAe,GAAG,cAAc,CAAC;AACrC,QAAA,IAAI,cAAc;AAAE,YAAA,eAAe,GAAG,CAAK,EAAA,EAAA,cAAc,CAAC,IAAI,IAAI,CAAC;AACnE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CACrC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,eAAe,EAC9E,QAAQ,EACR,IAAI,CAAC,IAAI,CACV,CAAC;AACF,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;KAC/B;;AAID,IAAA,IAAY,QAAQ,GAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM;AACpC,cAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;AACzB,cAAE;AACA,gBAAA;AACE,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU;AACtC,iBAAA;aACF,CAAC;KACL;AAID,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;KACjD;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CACxB,SAAS,CAAC,CAAC,QAAQ,KAAI;YACrB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1F,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE;gBAC7B,OAAO,CAAC,QAAQ,GAAG;AACjB,oBAAA;AACE,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,KAAK,EAAE,SAAS;wBAChB,UAAU,EAAE,OAAO,CAAC,UAAU;AAC/B,qBAAA;iBACF,CAAC;aACH;AACD,YAAA,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;SACpB,CAAC,CACH,CAAC;KACH;AAED,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;KACtD;AAEM,IAAA,UAAU,CAAC,IAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,SAAS,CAAC;QACzC,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI;AACnF,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU;SACtC,CAAC;AACF,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAC9C,MAAM,eAAe,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;YACtD,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,EAAE;AACxC,gBAAA,OAAO,cAAc,CAAC;aACvB;iBAAM;AACL,gBAAA,OAAO,OAAO,CAAC;aAChB;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KACvC;;IAMM,MAAM,MAAM,CAAC,MAAW,EAAA;AAC7B,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KACvC;AACF,CAAA;MAGY,gCAAgC,CAAA;AAD7C,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACjD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAa/B,KAAA;AAXQ,IAAA,MAAM,MAAM,CAAC,UAAkB,EAAE,UAAkB,EAAE,EAAU,EAAA;AACpE,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACvC,QAAA,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE;YAC3B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/C,YAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACxC,YAAA,OAAO,IAAI,4BAA4B,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SACvF;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACxC,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;KACxC;8GAhBU,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,cADnB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAD5C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;MCrIrB,sBAAsB,CAAA;AAC/B,IAAA,YAAY,CAAC,KAA6B,EAAA;AACtC,QAAA,OAAO,KAAK,CAAC;KAChB;AAED,IAAA,KAAK,CAAC,KAA6B,EAAE,YAAiC,KAAW;AAEjF,IAAA,YAAY,CAAC,KAA6B,EAAA;AACtC,QAAA,OAAO,KAAK,CAAC;KAChB;AAED,IAAA,QAAQ,CAAC,KAA6B,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC;KACf;IAED,gBAAgB,CAAC,MAA8B,EAAE,IAA4B,EAAA;AACzE,QAAA,IAAI,MAAM,CAAC,SAAS,KAAK,0BAA0B,IAAI,MAAM,CAAC,SAAS,KAAK,6BAA6B,EAAE;AACvG,YAAA,OAAO,KAAK,CAAC;SAChB;AAED,QAAA,OAAO,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,CAAC;KAClD;AACJ;;AChBK,MAAO,iCAAkC,SAAQ,iBAAiB,CAAA;AADxE,IAAA,WAAA,GAAA;;AAEU,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAC;AAyBxE,KAAA;IAvBC,MAAM,OAAO,CAAC,OAA2B,EAAA;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC/C,QAAA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;AAC5D,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACtE,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;AAEtF,QAAA,MAAM,GAAG,GAAG,MAAM,OAAO,qEAAoD,CAAC,CAAC;AAC/E,QAAA,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE;AAC3E,YAAA,KAAK,EAAE,CAAU,OAAA,EAAA,OAAO,CAAC,OAAO,CAAC,KAAK,CAAE,CAAA;YACxC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI;AAC1E,YAAA,IAAI,EAAE;gBACJ,OAAO,EAAE,MAAM,CAAC,IAAI;AACpB,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU;gBACtC,MAAM;AACP,aAAA;AACF,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE;AAC9B,YAAA,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACvC,YAAA,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;SACnE;KACF;8GA5BU,iCAAiC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAjC,iCAAiC,EAAA,CAAA,CAAA,EAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAD7C,UAAU;;AAiCJ,MAAM,8BAA8B,GAAgB;AACzD,IAAA,WAAW,EAAE,aAAa;AAC1B,IAAA,KAAK,EAAE;AACL,QAAA,WAAW,EAAE;AACX,YAAA,EAAE,EAAE,aAAa;AACjB,YAAA,MAAM,EAAE,mCAAmC;AAC3C,YAAA,SAAS,EAAE;AACT,gBAAA;oBACE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,0CAA0C,EAAE,CAAC;AACxF,oBAAA,UAAU,EAAE,cAAc;AAC3B,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,EAAE,EAAE,cAAc;AAClB,YAAA,MAAM,EAAE,gBAAgB;AACxB,YAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,iBAAiB;AACxB,gBAAA,OAAO,EAAE,uCAAuC;AACjD,aAAA;AACD,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,UAAU,EAAE,EAAE;AACd,oBAAA,UAAU,EAAE,iBAAiB;AAC9B,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,EAAE,EAAE,iBAAiB;AACrB,YAAA,MAAM,EAAE,gCAAgC;AACxC,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,UAAU,EAAE,EAAE;AACd,oBAAA,UAAU,EAAE,EAAE;AACf,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;CACF;;MC5BY,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YA5B7B,iBAAiB,EAAAL,IAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,CAAA,EAAA;AA4BR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAFpB,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC,YA1B5E,iBAAiB;YACjB,iBAAiB,CAAC,QAAQ,CAAC;AACzB,gBAAA,OAAO,EAAE;oBACP,4BAA4B;oBAC5B,0BAA0B;oBAC1B,iCAAiC;oBACjC,8BAA8B;oBAC9B,0BAA0B;oBAC1B,8BAA8B;AAC/B,iBAAA;AACD,gBAAA,SAAS,EAAE;AACT,oBAAA,eAAe,EAAE,uBAAuB;AACxC,oBAAA,eAAe,EAAE,uBAAuB;AACxC,oBAAA,uBAAuB,EAAE,8BAA8B;AACvD,oBAAA,eAAe,EAAE,uBAAuB;AACxC,oBAAA,cAAc,EAAE,0BAA0B;AAC1C,oBAAA,iBAAiB,EAAE,wBAAwB;AAC3C,oBAAA,gBAAgB,EAAE,uBAAuB;AAC1C,iBAAA;AACD,gBAAA,SAAS,EAAE;AACT,oBAAA,IAAI,EAAE,eAAe;AACtB,iBAAA;aACF,CAAC,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAMO,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA/BhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBAEP,iBAAiB;wBACjB,iBAAiB,CAAC,QAAQ,CAAC;AACzB,4BAAA,OAAO,EAAE;gCACP,4BAA4B;gCAC5B,0BAA0B;gCAC1B,iCAAiC;gCACjC,8BAA8B;gCAC9B,0BAA0B;gCAC1B,8BAA8B;AAC/B,6BAAA;AACD,4BAAA,SAAS,EAAE;AACT,gCAAA,eAAe,EAAE,uBAAuB;AACxC,gCAAA,eAAe,EAAE,uBAAuB;AACxC,gCAAA,uBAAuB,EAAE,8BAA8B;AACvD,gCAAA,eAAe,EAAE,uBAAuB;AACxC,gCAAA,cAAc,EAAE,0BAA0B;AAC1C,gCAAA,iBAAiB,EAAE,wBAAwB;AAC3C,gCAAA,gBAAgB,EAAE,uBAAuB;AAC1C,6BAAA;AACD,4BAAA,SAAS,EAAE;AACT,gCAAA,IAAI,EAAE,eAAe;AACtB,6BAAA;yBACF,CAAC;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,YAAY,EAAE,EAAE;oBAChB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC;AAC/E,iBAAA,CAAA;;;AC1CM,MAAM,yBAAyB,GAA0C,CAC9E,KAA6B,EAC7B,KAA0B,EAC1B,UAAoC,MAAM,CAAC,wBAAwB,CAAC,KACtC;AAC9B,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAW,CAAC;AAC5D,IAAA,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAW,CAAC;IAClE,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAW,CAAC;IAC1D,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAChD,EAAE;AAEK,MAAM,iCAAiC,GAAkD,CAC9F,KAA6B,EAC7B,KAA0B,EAC1B,UAA4C,MAAM,CAAC,gCAAgC,CAAC,KAC9C;AACtC,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAW,CAAC;AAC5D,IAAA,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAW,CAAC;IAClE,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAW,CAAC;IAC1D,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAW,CAAC;IAC9C,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;AACpD;;AC1Ba,MAAA,eAAe,GAAY;AACtC,IAAA;AACE,QAAA,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,CAAC,YAAY,CAAC;AAC3B,QAAA,QAAQ,EAAE;AACR,YAAA;AACE,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,QAAQ,EAAE;AACR,oBAAA;AACE,wBAAA,IAAI,EAAE,6BAA6B;AACnC,wBAAA,OAAO,EAAE,EAAE,MAAM,EAAE,iCAAiC,EAAE;AACtD,wBAAA,SAAS,EAAE,6BAA6B;AACzC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,oBAAoB;AAC1B,wBAAA,OAAO,EAAE,EAAE,MAAM,EAAE,iCAAiC,EAAE;AACtD,wBAAA,SAAS,EAAE,6BAA6B;AACzC,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,WAAW;AACjB,wBAAA,UAAU,EAAE,cAAc;AAC1B,wBAAA,SAAS,EAAE,MAAM;AAClB,qBAAA;AACD,oBAAA;AACE,wBAAA,IAAI,EAAE,gBAAgB;AACtB,wBAAA,SAAS,EAAE,0BAA0B;AACrC,wBAAA,OAAO,EAAE;AACP,4BAAA,MAAM,EAAE,yBAAyB;AAClC,yBAAA;;;;;AAKF,qBAAA;;;;;;AAMF,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;;;MCxBU,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,sEAFhB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;AAEX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAdxB,OAAA,EAAA,CAAA,eAAe,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACtE,iBAAiB,CAAC,QAAQ,CAAC;AACzB,gBAAA,OAAO,EAAE;AACP,oBAAA,yBAAyB,EAAE,yBAAyB;oBACpD,sBAAsB;oBACtB,cAAc;oBACd,uBAAuB;oBACvB,qBAAqB;oBACrB,sBAAsB;AACvB,iBAAA;AACF,aAAA,CAAC,EAEM,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAhB3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,eAAe,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC;wBACtE,iBAAiB,CAAC,QAAQ,CAAC;AACzB,4BAAA,OAAO,EAAE;AACP,gCAAA,yBAAyB,EAAE,yBAAyB;gCACpD,sBAAsB;gCACtB,cAAc;gCACd,uBAAuB;gCACvB,qBAAqB;gCACrB,sBAAsB;AACvB,6BAAA;yBACF,CAAC;AACH,qBAAA;oBACD,OAAO,EAAE,CAAC,YAAY,CAAC;AACxB,iBAAA,CAAA;;;ACtBD;;AAEG;;;;"}
1
+ {"version":3,"file":"acorex-platform-layouts.mjs","sources":["../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/components/entity-custom-view/entity-custom-view.component.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/components/entity-custom-view/entity-custom-view.component.html","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/components/list-view-option-columns/list-view-option-columns.component.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/components/list-view-option-columns/list-view-option-columns.component.html","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-conditions.component.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-conditions.component.html","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-filter-operator.component.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/components/list-view-option-sorting/list-view-option-sorting.component.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/components/list-view-option-sorting/list-view-option-sorting.component.html","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-create-view/entity-create-view.config.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/workflows/create-entity.workflow.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/workflows/delete-entity.workflow.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/entity-list-view.component.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/entity-list-view.component.html","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/list-view.module.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-list-view/list-view.config.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-quick-view/entity-quick-view.component.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-quick-view/entity-quick-view.component.html","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-modify-view/entity-modify-view.config.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/workflows/modify-entity.workflow.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/workflows/show-quick-view.workflow.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/workflows/show-details.workflow.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/workflows/show-list.workflow.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-details-view/entity-details-view.component.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-details-view/entity-details-view.component.html","../../../../libs/platform/layouts/src/lib/admin/entity-layout/entity-details-view/detail-view.config.ts","../../../../libs/platform/layouts/src/lib/admin/custom-reuse.strategy.ts","../../../../libs/platform/layouts/src/lib/admin/entity-layout/workflows/modify-section.workflow.ts","../../../../libs/platform/layouts/src/lib/admin/admin.module.ts","../../../../libs/platform/layouts/src/lib/admin/entity.resolver.ts","../../../../libs/platform/layouts/src/lib/admin/admin.routes.ts","../../../../libs/platform/layouts/src/lib/layout.module.ts","../../../../libs/platform/layouts/src/acorex-platform-layouts.ts"],"sourcesContent":["import { AXLocation, AXStyleColorType, AXValueChangedEvent } from '@acorex/components/common';\r\nimport { AXDialogService } from '@acorex/components/dialog';\r\nimport { AXBasePageComponent } from '@acorex/components/page';\r\nimport { AXToastService } from '@acorex/components/toast';\r\nimport { AXUnsubscriber } from '@acorex/core/utils';\r\nimport { AXPEntityListConditionConfig, AXPEntityListDisplayColumnConfig, AXPEntityListSortConfig, AXPEntityPropertyConfig, AXPFilterOperator, AXPSchemaRegistryService, EQ_OPER } from '@acorex/platform/common';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n Signal,\r\n WritableSignal,\r\n computed,\r\n inject,\r\n signal,\r\n} from '@angular/core';\r\nimport { cloneDeep } from 'lodash-es';\r\n\r\nimport { AXPListViewLoader } from '../../list-view.config';\r\n\r\n@Component({\r\n templateUrl: './entity-custom-view.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: AXUnsubscriber,\r\n },\r\n ],\r\n})\r\nexport class AXPEntityCreateCustomViewComponent extends AXBasePageComponent {\r\n private schemaRegistry = inject(AXPSchemaRegistryService);\r\n private toastService = inject(AXToastService);\r\n private dialogService = inject(AXDialogService);\r\n private subscriber = inject(AXUnsubscriber);\r\n\r\n @Input() loader!: AXPListViewLoader;\r\n @Input() mode: 'edit' | 'create' = 'create';\r\n @Input() selectedView: any = {};\r\n\r\n protected showNameInput: WritableSignal<boolean> = signal(false);\r\n protected props: WritableSignal<AXPEntityPropertyConfig[]> = signal([]);\r\n\r\n protected columns: WritableSignal<AXPEntityListDisplayColumnConfig[]> = signal([]);\r\n protected visibleColumns: Signal<AXPEntityListDisplayColumnConfig[]> = computed(() =>\r\n this.columns().filter((c) => c.visible)\r\n );\r\n protected conditions: WritableSignal<AXPEntityListConditionConfig[]> = signal([]);\r\n protected sorts: WritableSignal<AXPEntityListSortConfig[]> = signal([]);\r\n\r\n protected selectedConditionNames: string[] = [];\r\n protected viewNames: string[] = [];\r\n\r\n protected override ngOnInit(): void {\r\n this.props.set(cloneDeep(this.loader.entity.properties));\r\n this.columns.set(cloneDeep(this.selectedView.columns));\r\n this.conditions.set(cloneDeep(this.selectedView.conditions));\r\n this.sorts.set(cloneDeep(this.selectedView.sorts));\r\n this.loader.views$.pipe(this.subscriber.takeUntilDestroy).subscribe((views) => {\r\n this.viewNames = views.map((v) => v.name);\r\n });\r\n }\r\n\r\n //****************** Columns ******************//\r\n updateColumnItem(event: AXValueChangedEvent, colName: string) {\r\n if (event.isUserInteraction) {\r\n this.columns.update((prevCols) =>\r\n prevCols.map((col) => (col.name === colName ? { ...col, visible: event.value } : col))\r\n );\r\n }\r\n }\r\n\r\n //****************** Sorts ******************//\r\n updateSortItem(item: AXPEntityListSortConfig) {\r\n this.sorts.update((prevSorts) =>\r\n prevSorts.map((sort) => (sort.name === item.name ? { ...sort, dir: sort.dir == 'asc' ? 'desc' : 'asc' } : sort))\r\n );\r\n }\r\n addSortItem() {\r\n const sortNames = this.sorts().map((p) => p.name);\r\n console.log(this.props(), sortNames);\r\n const name = this.props().find((c) => !sortNames.includes(c.name))?.name || this.props()[0].name;\r\n this.sorts.update((prevSorts) => [...prevSorts, { name, dir: 'asc' } as AXPEntityListSortConfig]);\r\n }\r\n\r\n removeSortItem(item: AXPEntityListSortConfig) {\r\n this.sorts.update((prevSorts) => prevSorts.filter((sort) => item.name != sort.name));\r\n }\r\n\r\n //****************** Conditions ******************//\r\n protected getSchema(name: string) {\r\n return this.props().find((c) => c.name == name)?.schema ?? '';\r\n }\r\n\r\n protected getOperators(name: string): AXPFilterOperator[] {\r\n const schemaName = this.props().find((c) => c.name == name)?.schema ?? '';\r\n return this.schemaRegistry.resolve(schemaName)?.filterOptions?.operators ?? [];\r\n }\r\n\r\n protected getDefaultOperator(name: string): AXPFilterOperator {\r\n const schemaName = this.props().find((c) => c.name == name)?.schema ?? '';\r\n return this.schemaRegistry.resolve(schemaName)?.filterOptions?.default ?? EQ_OPER;\r\n }\r\n\r\n protected getOperatorTitle(schemaName: string, oprName: string): string {\r\n return this.getOperators(schemaName).find((c) => c.name == oprName)?.title || '';\r\n }\r\n protected resetSelectedFieldNames() {\r\n this.selectedConditionNames = this.conditions().map((c) => c.name);\r\n }\r\n protected addCondition() {\r\n const conditions = this.selectedConditionNames.map((c) => {\r\n const opr = this.getDefaultOperator(c);\r\n return {\r\n name: c,\r\n operator: opr.name,\r\n };\r\n });\r\n this.conditions.set(conditions as any);\r\n }\r\n\r\n removeCondition(item: AXPEntityListConditionConfig) {\r\n this.conditions.update((prevConditions) => prevConditions.filter((con) => con.name != item.name));\r\n }\r\n\r\n //****************** Common ******************//\r\n protected drop(type: 'columns' | 'conditions' | 'sorts', event: CdkDragDrop<unknown[]>) {\r\n switch (type) {\r\n case 'columns':\r\n this.columns.update((prevCols) => {\r\n const columns = prevCols;\r\n moveItemInArray(columns, event.previousIndex, event.currentIndex);\r\n return columns;\r\n });\r\n break;\r\n case 'sorts':\r\n this.sorts.update((prevSorts) => {\r\n const sorts = prevSorts;\r\n moveItemInArray(sorts, event.previousIndex, event.currentIndex);\r\n return sorts;\r\n });\r\n break;\r\n case 'conditions':\r\n this.conditions.update((prevConditions) => {\r\n const conditions = prevConditions;\r\n moveItemInArray(conditions, event.previousIndex, event.currentIndex);\r\n return conditions;\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n changeViewNameToggle() {\r\n this.showNameInput.update((prev) => !prev);\r\n }\r\n\r\n generateViewName(title: string) {\r\n return title.replace(/\\s+/g, '-').toLowerCase();\r\n }\r\n\r\n handleApplyClick() {\r\n const updatedView = {\r\n ...this.selectedView,\r\n name: this.generateViewName(this.selectedView.title),\r\n conditions: this.conditions(),\r\n columns: this.columns(),\r\n sorts: this.sorts(),\r\n };\r\n if (this.viewNames.includes(updatedView.name) && this.mode == 'create') {\r\n this.toastService.show({\r\n title: 'Invalid Title',\r\n content: 'The title you have chosen already exists. Please choose a different title for your custom view.',\r\n color: 'danger' as AXStyleColorType,\r\n location: 'bottom-center' as AXLocation,\r\n closeButton: true,\r\n timeOut: 3000,\r\n });\r\n } else {\r\n this.close({ save: true, updatedView });\r\n }\r\n }\r\n\r\n handleResetClick() {\r\n this.conditions.set(cloneDeep(this.selectedView.conditions));\r\n this.columns.set(cloneDeep(this.selectedView.columns));\r\n this.sorts.set(cloneDeep(this.selectedView.sorts));\r\n }\r\n handleDiscardClick() {\r\n this.close({ save: false });\r\n }\r\n handleCancelClick() {\r\n this.close({ save: false });\r\n }\r\n handleDeleteClick() {\r\n this.dialogService\r\n .confirm('Warning', 'Are you sure want to delete this view?', 'danger', 'horizontal')\r\n .then((data) => {\r\n if (data.result) {\r\n this.close({ delete: true, viewName: this.selectedView.name });\r\n }\r\n });\r\n }\r\n}\r\n","<ax-header class=\"ax-p-4 ax-flex ax-justify-between ax-border-b\">\r\n <div class=\"ax-flex ax-items-center\">\r\n @if (showNameInput() && mode==='create') {\r\n <div class=\"ax-w-60\">\r\n <ax-text-box class=\"ax-sm\" [(ngModel)]=\"selectedView.title\">\r\n @if(showNameInput()){\r\n <ax-suffix>\r\n <ax-button (onClick)=\"changeViewNameToggle()\" look=\"default\">\r\n <ax-icon class=\"fa-sodild fas fa-check ax-text-sm\"> </ax-icon>\r\n </ax-button>\r\n </ax-suffix>\r\n }\r\n </ax-text-box>\r\n </div>\r\n }@else {\r\n <span class=\"ax-text-lg ax-font-semibold\">{{ selectedView.title }}</span>\r\n } @if (mode===\"create\") {\r\n <ax-button class=\"ax-xs\" (onClick)=\"changeViewNameToggle()\" color=\"default\">\r\n @if(!showNameInput() ){\r\n <ax-icon class=\"fa-regular fa-pen ax-text-sm ax-text-neutral-600\"> </ax-icon>\r\n }\r\n </ax-button>\r\n }\r\n </div>\r\n <ax-close-button></ax-close-button>\r\n</ax-header>\r\n<div class=\"ax-p-4\">\r\n <ax-tabs [content]=\"contents\" look=\"with-line\">\r\n <ax-tab-item text=\"Columns\">\r\n <ax-suffix>\r\n <ax-badge [text]=\"visibleColumns().length.toString()\" color=\"primary\"> </ax-badge>\r\n </ax-suffix>\r\n <ax-content>\r\n <div\r\n class=\"ax-flex ax-flex-col ax-gap-4 ax-p-4 ax-select-none ax-h-[400px]\"\r\n cdkDropList\r\n (cdkDropListDropped)=\"drop('columns', $event)\"\r\n >\r\n <div class=\"ax-flex ax-flex-col ax-gap-3 ax-w-full ax-sorted-list ax-overflow-auto ax-pe-2\">\r\n <ng-container *ngFor=\"let item of columns()\">\r\n <div class=\"ax-flex ax-py-1 ax-items-center ax-justify-between\" cdkDrag cdkDragBoundary=\".ax-sorted-list\">\r\n <div class=\"ax-flex ax-items-center ax-gap-3\" cdkDragHandle>\r\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\"></ax-icon>\r\n <p class=\"ax-font-medium ax-text-sm\">{{ item.title }}</p>\r\n </div>\r\n <ax-switch\r\n class=\"ax-sm\"\r\n [(ngModel)]=\"item.visible\"\r\n (onValueChanged)=\"updateColumnItem($event, item.name)\"\r\n ></ax-switch>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ax-content>\r\n </ax-tab-item>\r\n <ax-tab-item text=\"Conditions\">\r\n <ax-suffix>\r\n <ax-badge [text]=\"conditions().length.toString()\" color=\"primary\"> </ax-badge>\r\n </ax-suffix>\r\n <ax-content>\r\n <div\r\n class=\"ax-flex ax-flex-col ax-justify-start ax-gap-4 ax-py-4 ax-select-none ax-h-[400px]\"\r\n [class.ax-justify-center]=\"!conditions().length\"\r\n >\r\n @if(!conditions().length){\r\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center\">\r\n <ax-image src=\"assets/documents.svg\"></ax-image>\r\n <p class=\"ax-mt-6 ax-mb-1 ax-font-bold\">No Filters Selected</p>\r\n <span class=\"ax-text-neutral-400 ax-text-sm md:ax-text-md\"\r\n >Please select field(s) that you want to filter</span\r\n >\r\n </div>\r\n } @else {\r\n <div class=\"ax-sorted-list ax-px-4 ax-py-1 ax-overflow-auto\">\r\n <div cdkDropList (cdkDropListDropped)=\"drop('conditions', $event)\" class=\"ax-flex ax-flex-col ax-gap-2\">\r\n @for(item of conditions(); track item.name ){\r\n <div cdkDrag cdkDragBoundary=\".ax-sorted-list\">\r\n <div class=\"ax-ms-4 ax-flex ax-items-start ax-gap-2\">\r\n <ax-label>{{ loader.getProp(item.name)?.title }}</ax-label>\r\n @if(getOperatorTitle(item.name,item.operator)){\r\n <ax-badge\r\n class=\"ax-text-xs\"\r\n color=\"primary\"\r\n [look]=\"'twotone'\"\r\n [text]=\"getOperatorTitle(item.name, item.operator)\"\r\n ></ax-badge>\r\n }\r\n </div>\r\n <div class=\"ax-flex ax-group ax-items-center ax-gap-2\">\r\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\" cdkDragHandle></ax-icon>\r\n <div class=\"ax-w-full\">\r\n <axp-widget-filter-renderer\r\n [schema]=\"getSchema(item.name)\"\r\n [prop]=\"loader.getProp(item.name)\"\r\n [(value)]=\"item.value\"\r\n [(operator)]=\"item.operator\"\r\n >\r\n </axp-widget-filter-renderer>\r\n </div>\r\n <ax-button look=\"blank\" color=\"danger\" class=\"ax-sm\" (onClick)=\"removeCondition(item)\">\r\n <ax-icon class=\"fa-solid fa-trash-can\"></ax-icon>\r\n </ax-button>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n <div class=\"ax-flex ax-gap-2\">\r\n <div class=\"ax-w-full\" #addField>\r\n @if(conditions().length){\r\n <ax-button color=\"primary\" text=\"Add field\" look=\"blank\" class=\"ax-sm\"></ax-button>\r\n }@else {\r\n <div class=\"ax-flex ax-justify-center ax-w-full\">\r\n <ax-button color=\"primary\" text=\"Add field\" look=\"outline\" class=\"ax-md ax-w-56\"></ax-button>\r\n </div>\r\n }\r\n <ax-popover\r\n #conditionsPopover\r\n [target]=\"addField\"\r\n [placement]=\"conditions().length ? 'bottom-start' : 'bottom'\"\r\n [offsetY]=\"8\"\r\n [openOn]=\"'toggle'\"\r\n [closeOn]=\"'clickOut'\"\r\n [adaptivityEnabled]=\"true\"\r\n (onOpened)=\"resetSelectedFieldNames()\"\r\n >\r\n <div\r\n class=\"ax-bg-surface ax-border ax-border-default ax-rounded-md ax-shadow-md ax-w-full ax-min-w-[250px]\"\r\n >\r\n <div class=\"ax-border-b-[1px] ax-pb-2 ax-mb-2 ax-p-3\">\r\n <ax-title class=\"ax-font-bold\">Fields</ax-title>\r\n </div>\r\n <div class=\"ax-max-h-48 ax-overflow-auto\">\r\n <ax-selection-list\r\n [valueField]=\"'name'\"\r\n [textField]=\"'title'\"\r\n [(ngModel)]=\"selectedConditionNames\"\r\n [direction]=\"'vertical'\"\r\n [items]=\"props()\"\r\n [multiple]=\"true\"\r\n ></ax-selection-list>\r\n </div>\r\n <div class=\"ax-flex ax-justify-end ax-border-t-[1px] ax-p-3\">\r\n <ax-button\r\n (onClick)=\"addCondition(); conditionsPopover.close()\"\r\n class=\"ax-sm\"\r\n text=\"Confirm\"\r\n color=\"primary\"\r\n >\r\n </ax-button>\r\n </div>\r\n </div>\r\n </ax-popover>\r\n </div>\r\n </div>\r\n </div>\r\n </ax-content>\r\n </ax-tab-item>\r\n <ax-tab-item text=\"Sorting\">\r\n <ax-suffix>\r\n <ax-badge [text]=\"sorts().length.toString()\" color=\"primary\"> </ax-badge>\r\n </ax-suffix>\r\n <ax-content>\r\n <div\r\n class=\"ax-flex ax-p-4 ax-flex-col ax-justify-start ax-gap-4 ax-select-none ax-overflow-auto ax-h-[400px]\"\r\n [class.ax-justify-center]=\"!sorts().length\"\r\n >\r\n @if(!sorts().length){\r\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center\">\r\n <ax-image src=\"assets/documents.svg\"></ax-image>\r\n <p class=\"ax-mt-6 ax-mb-1 ax-font-bold\">No Sorts Selected</p>\r\n <span class=\"ax-text-neutral-400 ax-text-sm md:ax-text-md\"\r\n >Please select field(s) that you want to sort</span\r\n >\r\n </div>\r\n }@else {\r\n <div\r\n cdkDropList\r\n (cdkDropListDropped)=\"drop('sorts', $event)\"\r\n class=\"ax-flex ax-flex-col ax-gap-3 ax-w-full ax-sorted-list ax-py-1 ax-overflow-auto\"\r\n >\r\n <ng-container *ngFor=\"let item of sorts()\">\r\n <div class=\"ax-flex ax-gap-2 ax-items-center\" cdkDrag cdkDragBoundary=\".ax-sorted-list\">\r\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\" cdkDragHandle></ax-icon>\r\n <ax-select-box [dataSource]=\"props()\" valueField=\"name\" textField=\"title\" [(ngModel)]=\"item.name\">\r\n </ax-select-box>\r\n <ax-button [color]=\"'default'\" class=\"ax-sm\" (click)=\"updateSortItem(item)\">\r\n <ax-icon\r\n [class.ax-text-primary]=\"item.dir == 'asc'\"\r\n class=\"fa-solid fa-arrow-up-long ax-text-neutral-400\"\r\n ></ax-icon>\r\n <ax-icon\r\n [class.ax-text-primary]=\"item.dir == 'desc'\"\r\n class=\"fa-solid fa-arrow-down-long ax-text-neutral-400\"\r\n ></ax-icon>\r\n </ax-button>\r\n\r\n <ax-button look=\"blank\" (onClick)=\"removeSortItem(item)\">\r\n <ax-icon class=\"fa-solid fa-trash-can ax-text-danger-500\"></ax-icon>\r\n </ax-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n }\r\n\r\n <div class=\"ax-flex ax-gap-2\">\r\n <div class=\"ax-w-full\" #addField>\r\n @if(sorts().length){\r\n <ax-button\r\n (onClick)=\"addSortItem()\"\r\n color=\"primary\"\r\n text=\"Add field\"\r\n look=\"blank\"\r\n class=\"ax-sm\"\r\n ></ax-button>\r\n }@else {\r\n <div class=\"ax-flex ax-justify-center ax-w-full\">\r\n <ax-button\r\n (onClick)=\"addSortItem()\"\r\n color=\"primary\"\r\n text=\"Add field\"\r\n look=\"outline\"\r\n class=\"ax-md ax-w-56\"\r\n ></ax-button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </ax-content>\r\n </ax-tab-item>\r\n </ax-tabs>\r\n <ng-template [axTabContent] #contents=\"axTabContent\"> </ng-template>\r\n</div>\r\n<ax-footer class=\"!ax-justify-end\">\r\n @if (mode===\"edit\") {\r\n <ax-dropdown-button text=\"Discard\" (onClick)=\"handleDiscardClick()\">\r\n <ax-button-item-list>\r\n <ax-button-item text=\"Reset\" (onClick)=\"handleResetClick()\">\r\n <ax-prefix>\r\n <ax-icon icon=\"fa-solid fa-rotate-left fa-flip-horizontal\"></ax-icon>\r\n </ax-prefix>\r\n </ax-button-item>\r\n <ax-button-item class=\"ax-text-danger\" text=\"Delete\" (onClick)=\"handleDeleteClick()\">\r\n <ax-prefix> <ax-icon icon=\"fas fa-trash fa-flip-horizontal\"></ax-icon> </ax-prefix\r\n ></ax-button-item>\r\n </ax-button-item-list>\r\n </ax-dropdown-button>\r\n } @else {\r\n <ax-button text=\"Cancel\" look=\"outline\" (onClick)=\"handleCancelClick()\"></ax-button>\r\n }\r\n <ax-button\r\n [text]=\"mode === 'create' ? 'Save' : 'Save Changes'\"\r\n color=\"primary\"\r\n (onClick)=\"handleApplyClick()\"\r\n ></ax-button>\r\n</ax-footer>\r\n","import { AXValueChangedEvent } from '@acorex/components/common';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { Component, EventEmitter, Input, OnInit, Output, inject } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable, first, of } from 'rxjs';\r\nimport { AXPListViewLoader } from '../../list-view.config';\r\nimport { AXPAdminLayoutState, AXPEntityListDisplayColumnConfig, isSmallScreen } from '@acorex/platform/common';\r\n\r\n@Component({\r\n selector: 'axp-list-view-option-columns',\r\n templateUrl: './list-view-option-columns.component.html',\r\n})\r\nexport class AXPListViewOptionsColumnsComponent implements OnInit {\r\n private store = inject(Store<AXPAdminLayoutState>);\r\n\r\n @Input()\r\n public loader!: AXPListViewLoader;\r\n protected isSM = this.store.select(isSmallScreen());\r\n protected columns$: Observable<AXPEntityListDisplayColumnConfig[]> = of([]);\r\n\r\n @Output()\r\n public onClosed = new EventEmitter<void>();\r\n\r\n ngOnInit(): void {\r\n this.columns$ = this.loader.displayColumns$;\r\n }\r\n\r\n handleVisibilityChange(e: AXValueChangedEvent<boolean>, name: string) {\r\n if (e.isUserInteraction) {\r\n this.loader.setColumnVisibility(name, e.value!);\r\n }\r\n }\r\n\r\n protected drop(event: CdkDragDrop<unknown[]>) {\r\n this.columns$.pipe(first()).subscribe((columns) => {\r\n moveItemInArray(columns, event.previousIndex, event.currentIndex);\r\n });\r\n }\r\n\r\n protected handleClose() {\r\n this.onClosed.emit();\r\n }\r\n protected handleResetClick() {\r\n this.loader.resetColumns();\r\n }\r\n\r\n protected handleApplyClick() {\r\n this.columns$.pipe(first()).subscribe((data) => {\r\n this.loader.updateColumns(data);\r\n });\r\n this.onClosed.emit();\r\n }\r\n}\r\n","<ax-header class=\"ax-flex ax-items-center\">\r\n <h2 class=\"ax-text-xl ax-font-bold\">Columns</h2>\r\n <ax-button (onClick)=\"handleClose()\" [look]=\"'blank'\">\r\n <ax-icon class=\"fa-solid fa-close ax-text-neutral-400 ax-text-xl\"> </ax-icon>\r\n </ax-button>\r\n</ax-header>\r\n<div class=\"ax-flex ax-flex-col ax-gap-4 ax-p-4 ax-select-none\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div class=\"ax-flex ax-flex-col ax-gap-3 ax-w-full ax-sorted-list ax-max-h-[calc(100vh-280px)] ax-overflow-auto\">\r\n <ng-container *ngFor=\"let item of columns$ | async\">\r\n <div class=\"ax-flex ax-py-1 ax-items-center ax-justify-between\" cdkDrag cdkDragBoundary=\".ax-sorted-list\">\r\n <div class=\"ax-flex ax-items-center ax-gap-3\" cdkDragHandle>\r\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\"></ax-icon>\r\n <p class=\"ax-font-medium ax-text-sm\">{{ item.title }}</p>\r\n </div>\r\n <ax-switch\r\n class=\"ax-sm\"\r\n [ngModel]=\"item.visible\"\r\n (onValueChanged)=\"handleVisibilityChange($event, item.name)\"\r\n ></ax-switch>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n<ax-footer class=\"!ax-justify-start ax-absolute ax-bottom-0 ax-w-full\">\r\n <ax-button text=\"Apply\" color=\"primary\" (onClick)=\"handleApplyClick()\"></ax-button>\r\n <ax-button text=\"Reset\" color=\"ghost\" (onClick)=\"handleResetClick()\"></ax-button>\r\n</ax-footer>\r\n","import { AXPopupService } from '@acorex/components/popup';\r\nimport { AXPEntityListConditionConfig, AXPEntityPropertyConfig, AXPFilterOperator, AXPSchemaRegistryService, EQ_OPER } from '@acorex/platform/common';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewEncapsulation,\r\n inject,\r\n} from '@angular/core';\r\nimport { Observable, first, map, of } from 'rxjs';\r\nimport { AXPListViewLoader } from '../../list-view.config';\r\n\r\n@Component({\r\n selector: 'axp-list-view-option-conditions',\r\n templateUrl: './list-view-option-conditions.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AXPListViewOptionConditionsComponent {\r\n constructor() { }\r\n\r\n @Output()\r\n public onClosed = new EventEmitter<void>();\r\n\r\n private schemaRegistery = inject(AXPSchemaRegistryService);\r\n private popopService: AXPopupService = inject(AXPopupService);\r\n\r\n protected isSM = false;\r\n\r\n @Input()\r\n public loader!: AXPListViewLoader;\r\n\r\n protected props$: Observable<AXPEntityPropertyConfig[]> = of([]);\r\n protected props: AXPEntityPropertyConfig[] = [];\r\n protected conditions$: Observable<AXPEntityListConditionConfig[]> = of([]);\r\n\r\n protected selectedFieldNames: string[] = [];\r\n\r\n onNameChange(item: any) {\r\n console.log('onName changed!', item);\r\n }\r\n ngOnInit() {\r\n this.props$ = this.loader.properties$.pipe(\r\n map((sorts) => sorts.filter((s) => s.canFilter != false))\r\n );\r\n this.conditions$ = this.loader.conditions$;\r\n this.conditions$.pipe(first()).subscribe((initialConditions) => {\r\n this.selectedFieldNames = initialConditions.map((i) => i.name);\r\n });\r\n\r\n this.props$.pipe(first()).subscribe((data) => {\r\n this.props = data;\r\n });\r\n }\r\n\r\n protected getOperators(name: string): AXPFilterOperator[] {\r\n const schemaName = this.props.find((c) => c.name == name)?.schema ?? '';\r\n return this.schemaRegistery.resolve(schemaName)?.filterOptions?.operators ?? [];\r\n }\r\n\r\n protected getDefaultOperator(name: string): AXPFilterOperator {\r\n const schemaName = this.props.find((c) => c.name == name)?.schema ?? '';\r\n return this.schemaRegistery.resolve(schemaName)?.filterOptions?.default ?? EQ_OPER;\r\n }\r\n\r\n protected getOperatorTitle(schemaName: string, oprName: string): string {\r\n return this.getOperators(schemaName).find((c) => c.name == oprName)?.title || '';\r\n }\r\n\r\n protected getSchema(name: string) {\r\n return this.props.find((c) => c.name == name)?.schema ?? '';\r\n }\r\n\r\n protected drop(event: CdkDragDrop<unknown[]>) {\r\n this.conditions$.pipe(first()).subscribe((conditions) => {\r\n console.log('conditions: ', conditions);\r\n moveItemInArray(conditions, event.previousIndex, event.currentIndex);\r\n });\r\n }\r\n\r\n protected handleClose() {\r\n this.onClosed.emit();\r\n }\r\n\r\n protected handleRemoveCondition(item: AXPEntityListConditionConfig) {\r\n this.selectedFieldNames = this.selectedFieldNames.filter((i) => i !== item.name);\r\n this.loader.removeCondition(item);\r\n }\r\n\r\n protected resetSelectedFieldNames() {\r\n this.conditions$.pipe(first()).subscribe((initialConditions) => {\r\n this.selectedFieldNames = initialConditions.map((i) => i.name);\r\n });\r\n }\r\n\r\n protected handleResetClick() {\r\n this.loader.resetConditions();\r\n }\r\n\r\n protected onConfirmFields() {\r\n const fileds = this.selectedFieldNames.map((c) => {\r\n const opr = this.getDefaultOperator(c);\r\n return {\r\n name: c,\r\n opr: opr.name,\r\n };\r\n });\r\n this.loader.addCondition(fileds);\r\n }\r\n\r\n protected handleApplyClick() {\r\n this.conditions$.pipe(first()).subscribe((data) => {\r\n console.log(data);\r\n this.loader.updateConditions(data);\r\n });\r\n this.onClosed.emit();\r\n }\r\n}\r\n","<ax-header class=\"ax-flex ax-items-center\">\r\n <h2 class=\"ax-text-xl ax-font-bold\">Filters</h2>\r\n <ax-button (onClick)=\"handleClose()\" [look]=\"'blank'\">\r\n <ax-icon class=\"fa-solid fa-close ax-text-neutral-400 ax-text-xl\"> </ax-icon>\r\n </ax-button>\r\n</ax-header>\r\n<div\r\n class=\"ax-flex ax-flex-col ax-justify-center ax-gap-4 ax-py-4 ax-select-none\"\r\n [class.ax-h-[calc(100vh-310px)]]=\"!(conditions$ | async)?.length\"\r\n>\r\n @if(!(conditions$ | async)?.length){\r\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center\">\r\n <ax-image src=\"assets/documents.svg\"></ax-image>\r\n <p class=\"ax-mt-6 ax-mb-1 ax-font-bold\">No Filters Selected</p>\r\n <span class=\"ax-text-neutral-400 ax-text-sm md:ax-text-md\">Please select field(s) that you want to filter</span>\r\n </div>\r\n } @else {\r\n <div class=\"ax-sorted-list ax-max-h-[calc(100vh-310px)] ax-px-4 ax-py-1 ax-overflow-auto\">\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event)\" class=\"ax-flex ax-flex-col ax-gap-2\">\r\n @for(item of conditions$ | async; track item.name ){\r\n <div cdkDrag cdkDragBoundary=\".ax-sorted-list\">\r\n <div class=\"ax-ms-4 ax-flex ax-items-start ax-gap-2\">\r\n <ax-label>{{ loader.getProp(item.name)?.title }}</ax-label>\r\n @if(getOperatorTitle(item.name,item.operator)){\r\n <ax-badge\r\n class=\"ax-text-xs\"\r\n color=\"primary\"\r\n [look]=\"'twotone'\"\r\n [text]=\"getOperatorTitle(item.name, item.operator)\"\r\n ></ax-badge>\r\n }\r\n </div>\r\n <div class=\"ax-flex ax-group ax-items-center ax-gap-2\">\r\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\" cdkDragHandle></ax-icon>\r\n <div class=\"ax-w-full\">\r\n <!-- <ax-text-box [(ngModel)]=\"item.value\"></ax-text-box> -->\r\n <axp-widget-filter-renderer\r\n [schema]=\"getSchema(item.name)\"\r\n [prop]=\"loader.getProp(item.name)\"\r\n [(value)]=\"item.value\"\r\n [(operator)]=\"item.operator\"\r\n >\r\n </axp-widget-filter-renderer>\r\n </div>\r\n <ax-button look=\"blank\" color=\"danger\" class=\"ax-sm\" (onClick)=\"handleRemoveCondition(item)\">\r\n <ax-icon class=\"fa-solid fa-trash-can\"></ax-icon>\r\n </ax-button>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n <div class=\"ax-flex ax-gap-2\">\r\n <div class=\"ax-w-full\" #addField>\r\n @if((conditions$ | async)?.length){\r\n <ax-button color=\"primary\" text=\"Add field\" look=\"blank\" class=\"ax-sm\"></ax-button>\r\n }@else {\r\n <div class=\"ax-flex ax-justify-center ax-w-full\">\r\n <ax-button color=\"primary\" text=\"Add field\" look=\"outline\" class=\"ax-md ax-w-56\"></ax-button>\r\n </div>\r\n }\r\n </div>\r\n <ax-popover\r\n #fieldsPopover\r\n [target]=\"addField\"\r\n [openOn]=\"'toggle'\"\r\n [closeOn]=\"'clickOut'\"\r\n [adaptivityEnabled]=\"true\"\r\n (onOpened)=\"resetSelectedFieldNames()\"\r\n [offsetX]=\"15\"\r\n >\r\n <div class=\"ax-bg-surface ax-border ax-border-default ax-rounded-md ax-shadow-md ax-w-full ax-min-w-[250px]\">\r\n <div class=\"ax-border-b-[1px] ax-pb-2 ax-mb-2 ax-p-3\">\r\n <ax-title class=\"ax-font-bold\">Fields</ax-title>\r\n </div>\r\n <div class=\"ax-max-h-72 2xl:ax-max-h-80 ax-overflow-auto\">\r\n <ax-selection-list\r\n [valueField]=\"'name'\"\r\n [textField]=\"'title'\"\r\n [(ngModel)]=\"selectedFieldNames\"\r\n [direction]=\"'vertical'\"\r\n [items]=\"props\"\r\n [multiple]=\"true\"\r\n ></ax-selection-list>\r\n </div>\r\n <div class=\"ax-flex ax-justify-end ax-border-t-[1px] ax-p-3\">\r\n <ax-button (onClick)=\"onConfirmFields(); fieldsPopover.close()\" class=\"ax-sm\" text=\"Confirm\" color=\"primary\">\r\n </ax-button>\r\n </div>\r\n </div>\r\n </ax-popover>\r\n </div>\r\n</div>\r\n<ax-footer class=\"!ax-justify-start ax-absolute ax-bottom-0 ax-w-full\">\r\n <ax-button text=\"Apply\" color=\"primary\" (onClick)=\"handleApplyClick()\"></ax-button>\r\n <ax-button text=\"Reset\" color=\"ghost\" (onClick)=\"handleResetClick()\"></ax-button>\r\n</ax-footer>\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewChild,\r\n inject,\r\n} from '@angular/core';\r\n\r\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\r\nimport { AXPFilterOperator } from '@acorex/platform/common';\r\n\r\n@Component({\r\n selector: 'axp-list-view-option-filter-operator',\r\n template: `\r\n <ax-select-box\r\n valueField=\"name\"\r\n [dataSource]=\"items\"\r\n textField=\"title\"\r\n [(ngModel)]=\"value\"\r\n *ngIf=\"visible\"\r\n >\r\n </ax-select-box>\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display: contents;' },\r\n})\r\nexport class AXPListViewOptionFilterOperatorComponent {\r\n @ViewChild(AXSelectBoxComponent)\r\n selectBox!: AXSelectBoxComponent;\r\n protected visible = false;\r\n\r\n private cdr = inject(ChangeDetectorRef);\r\n\r\n private _items: AXPFilterOperator[] = [];\r\n @Input()\r\n public get items(): AXPFilterOperator[] {\r\n return this._items;\r\n }\r\n public set items(v: AXPFilterOperator[]) {\r\n this.visible = false;\r\n this._items = v;\r\n setTimeout(() => {\r\n this.visible = true;\r\n this.cdr.markForCheck();\r\n setTimeout(() => {\r\n if (this.selectBox) {\r\n //this.selectBox.defaultValue = this.items[0]?.name;\r\n }\r\n });\r\n });\r\n }\r\n\r\n @Output()\r\n valueChange: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n private _value!: string;\r\n @Input()\r\n public get value(): string {\r\n return this._value;\r\n }\r\n public set value(v: string) {\r\n this._value = v;\r\n this.valueChange.emit(v);\r\n }\r\n}\r\n","import { AXPEntityListSortConfig, AXPEntityPropertyConfig } from '@acorex/platform/common';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { Observable, first, map, of } from 'rxjs';\r\nimport { AXPListViewLoader } from '../../list-view.config';\r\n\r\n@Component({\r\n selector: 'axp-list-view-option-sorting',\r\n templateUrl: './list-view-option-sorting.component.html',\r\n})\r\nexport class AXPListViewOptionSortingComponent {\r\n protected isSM = false;\r\n\r\n @Output()\r\n public onClosed = new EventEmitter<void>();\r\n\r\n @Input()\r\n public loader!: AXPListViewLoader;\r\n\r\n protected props$: Observable<AXPEntityPropertyConfig[]> = of([]);\r\n protected sorts$: Observable<AXPEntityListSortConfig[]> = of([]);\r\n\r\n ngOnInit(): void {\r\n this.props$ = this.loader.properties$.pipe(map((sorts) => sorts.filter((s) => s.canSort != false)));\r\n this.loader.sorts$.subscribe((data) => {});\r\n this.sorts$ = this.loader.sorts$;\r\n }\r\n\r\n protected drop(event: CdkDragDrop<unknown[]>) {\r\n this.sorts$.pipe(first()).subscribe((sorts) => {\r\n moveItemInArray(sorts, event.previousIndex, event.currentIndex);\r\n });\r\n }\r\n\r\n protected changeItemSort(item: AXPEntityListSortConfig) {\r\n item.dir = item.dir == 'asc' ? 'desc' : 'asc';\r\n }\r\n\r\n protected handleClose() {\r\n this.onClosed.emit();\r\n }\r\n protected handleResetClick() {\r\n this.loader.resetSort();\r\n }\r\n\r\n protected handleApplyClick() {\r\n this.sorts$.pipe(first()).subscribe((data) => {\r\n this.loader.updateSort(data);\r\n });\r\n this.onClosed.emit();\r\n }\r\n}\r\n","<ax-header class=\"ax-flex ax-items-center\">\r\n <h2 class=\"ax-text-xl ax-font-bold\">Sorts</h2>\r\n <ax-button (onClick)=\"handleClose()\" [look]=\"'blank'\">\r\n <ax-icon class=\"fa-solid fa-close ax-text-neutral-400 ax-text-xl\"> </ax-icon>\r\n </ax-button>\r\n</ax-header>\r\n<div\r\n class=\"ax-flex ax-p-4 ax-flex-col ax-justify-center ax-gap-4 ax-select-none\"\r\n [class.ax-h-[calc(100vh-310px)]]=\"!(sorts$ | async)?.length\"\r\n>\r\n @if(!(sorts$ | async)?.length){\r\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center\">\r\n <ax-image src=\"assets/documents.svg\"></ax-image>\r\n <p class=\"ax-mt-6 ax-mb-1 ax-font-bold\">No Sorts Selected</p>\r\n <span class=\"ax-text-neutral-400 ax-text-sm md:ax-text-md\">Please select field(s) that you want to sort</span>\r\n </div>\r\n }\r\n <div\r\n cdkDropList\r\n (cdkDropListDropped)=\"drop($event)\"\r\n class=\"ax-flex ax-flex-col ax-gap-3 ax-w-full ax-sorted-list ax-py-1 ax-max-h-[calc(100vh-310px)] ax-overflow-auto\"\r\n >\r\n <ng-container *ngFor=\"let item of sorts$ | async\">\r\n <div class=\"ax-flex ax-gap-2 ax-items-center\" cdkDrag cdkDragBoundary=\".ax-sorted-list\">\r\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\" cdkDragHandle></ax-icon>\r\n <ax-select-box\r\n [dataSource]=\"(props$ | async) ?? []\"\r\n valueField=\"name\"\r\n textField=\"title\"\r\n [(ngModel)]=\"item.name\"\r\n >\r\n </ax-select-box>\r\n <ax-button [color]=\"'default'\" class=\"ax-sm\" (click)=\"changeItemSort(item)\">\r\n <ax-icon\r\n [class.ax-text-primary]=\"item.dir == 'asc'\"\r\n class=\"fa-solid fa-arrow-up-long ax-text-neutral-400\"\r\n ></ax-icon>\r\n <ax-icon\r\n [class.ax-text-primary]=\"item.dir == 'desc'\"\r\n class=\"fa-solid fa-arrow-down-long ax-text-neutral-400\"\r\n ></ax-icon>\r\n </ax-button>\r\n\r\n <ax-button look=\"blank\" (onClick)=\"loader.removeSort(item)\">\r\n <ax-icon class=\"fa-solid fa-trash-can ax-text-danger-500\"></ax-icon>\r\n </ax-button>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"ax-flex ax-gap-2\">\r\n <div class=\"ax-w-full\" #addField>\r\n @if((sorts$ | async)?.length){\r\n <ax-button (onClick)=\"loader.addSort()\" color=\"primary\" text=\"Add field\" look=\"blank\" class=\"ax-sm\"></ax-button>\r\n }@else {\r\n <div class=\"ax-flex ax-justify-center ax-w-full\">\r\n <ax-button\r\n (onClick)=\"loader.addSort()\"\r\n color=\"primary\"\r\n text=\"Add field\"\r\n look=\"outline\"\r\n class=\"ax-md ax-w-56\"\r\n ></ax-button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n<ax-footer class=\"!ax-justify-start ax-absolute ax-bottom-0 ax-w-full\">\r\n <ax-button text=\"Apply\" color=\"primary\" (onClick)=\"handleApplyClick()\"></ax-button>\r\n <ax-button text=\"Reset\" color=\"ghost\" (onClick)=\"handleResetClick()\"></ax-button>\r\n</ax-footer>\r\n","import { AXFormatService } from '@acorex/core/format';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { cloneDeep } from 'lodash-es';\r\nimport { BehaviorSubject, Observable, defaultIfEmpty, map, of, switchMap } from 'rxjs';\r\n\r\nimport { AXPLayoutService } from '@acorex/platform/common';\r\nimport { AXPEntityConfig, AXPEntityPropertyConfig, AXPEntityRegistryService, AXPEntityViewChildSectionConfig, AXPEntityViewConfig } from '@acorex/platform/common';\r\n\r\nexport interface AXPEntityCreateViewLoader {\r\n get entity(): AXPEntityConfig;\r\n get data(): any;\r\n\r\n get sections$(): Observable<AXPEntityViewChildSectionConfig[]>;\r\n get hasSections$(): Observable<boolean>;\r\n get isLast$(): Observable<boolean>;\r\n get isFirst$(): Observable<boolean>;\r\n get currentIndex$(): Observable<number>;\r\n get section$(): Observable<AXPEntityViewChildSectionConfig>;\r\n setSection(name: string): void;\r\n next(): Promise<void>;\r\n back(): Promise<void>;\r\n\r\n getProp(name: string): AXPEntityPropertyConfig | undefined;\r\n isRequired(name: string): boolean;\r\n}\r\n\r\nexport class AXPEntityCreateLoaderDefault implements AXPEntityCreateViewLoader {\r\n private _config!: AXPEntityConfig;\r\n private _data: any = {};\r\n private _currentSection = 'default';\r\n\r\n constructor(private config: AXPEntityConfig, private store: Store, private formatService: AXFormatService) {\r\n this._currentSection = this.sections[0]?.name || 'default';\r\n }\r\n\r\n get entity(): AXPEntityConfig {\r\n if (!this._config) {\r\n this._config = cloneDeep(this.config);\r\n }\r\n return this._config;\r\n }\r\n\r\n get data(): any {\r\n return this._data;\r\n }\r\n\r\n private get view(): AXPEntityViewConfig {\r\n return this.entity.views.createView as AXPEntityViewConfig;\r\n }\r\n\r\n //****************** Sections ******************//\r\n\r\n private get sections(): AXPEntityViewChildSectionConfig[] {\r\n return this.view.root.sections?.length\r\n ? this.view.root.sections\r\n : [\r\n {\r\n name: 'default',\r\n title: 'Default',\r\n properties: this.view.root.properties,\r\n },\r\n ];\r\n }\r\n\r\n private _sections$ = new BehaviorSubject<AXPEntityViewChildSectionConfig[]>(this.sections);\r\n\r\n public get sections$(): Observable<AXPEntityViewChildSectionConfig[]> {\r\n return this._sections$.pipe(defaultIfEmpty([]));\r\n }\r\n\r\n public get section$(): Observable<AXPEntityViewChildSectionConfig> {\r\n return this.sections$.pipe(\r\n switchMap((sections) => {\r\n const section = sections.find((c) => c.name === this._currentSection) ?? this.sections[0];\r\n if (!section.sections?.length) {\r\n section.sections = [\r\n {\r\n name: 'default',\r\n title: 'Details',\r\n properties: section.properties,\r\n },\r\n ];\r\n }\r\n return of(section);\r\n })\r\n );\r\n }\r\n\r\n public get hasSections$(): Observable<boolean> {\r\n return this.sections$.pipe(map((c) => c.length > 1));\r\n }\r\n\r\n public get isLast$(): Observable<boolean> {\r\n return this.sections$.pipe(\r\n map((c) => this.sections.length - this.sections.findIndex((c) => c.name == this._currentSection) == 1)\r\n );\r\n }\r\n\r\n public get isFirst$(): Observable<boolean> {\r\n return this.sections$.pipe(map((c) => this.sections.findIndex((c) => c.name == this._currentSection) == 0));\r\n }\r\n\r\n public get currentIndex$(): Observable<number> {\r\n return this.sections$.pipe(map((c) => this.sections.findIndex((c) => c.name == this._currentSection)));\r\n }\r\n\r\n public setSection(name: string) {\r\n this._currentSection = name ?? 'default';\r\n const updatedSection = this.sections.find((c) => c.name === this._currentSection) || {\r\n name: 'default',\r\n title: 'Default',\r\n properties: this.view.root.properties,\r\n };\r\n const currentSections = this._sections$.value;\r\n const updatedSections = currentSections.map((section) => {\r\n if (section.name === updatedSection.name) {\r\n return updatedSection;\r\n } else {\r\n return section;\r\n }\r\n });\r\n this._sections$.next(updatedSections);\r\n }\r\n\r\n public next() {\r\n const nextIndex = this.sections.findIndex((c) => c.name == this._currentSection) + 1;\r\n if (nextIndex >= this.sections.length) {\r\n return Promise.resolve();\r\n } else {\r\n this.setSection(this.sections[nextIndex].name);\r\n return Promise.resolve();\r\n }\r\n }\r\n\r\n public back() {\r\n const prevIndex = this.sections.findIndex((c) => c.name == this._currentSection) - 1;\r\n if (prevIndex < 0) {\r\n return Promise.resolve();\r\n } else {\r\n this.setSection(this.sections[prevIndex].name);\r\n return Promise.resolve();\r\n }\r\n }\r\n\r\n //****************** Properties ******************//\r\n public getProp = (name: string): AXPEntityPropertyConfig | undefined => this.entity.properties.find((c) => c.name == name);\r\n public isRequired = (name: string): boolean => this.getProp(name)?.validationRules?.some(c => c.rule == 'required') || false;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXPEntityCreateViewLoaderFactory {\r\n private entityService = inject(AXPEntityRegistryService);\r\n private formatService = inject(AXFormatService);\r\n private layout = inject(AXPLayoutService);\r\n private store = inject(Store);\r\n\r\n public async create(moduleName: string, entityName: string): Promise<AXPEntityCreateViewLoader> {\r\n const config = await this.entityService.resolve(moduleName, entityName);\r\n this.layout.setNavigationLoading(true);\r\n if (config.dataSource.byKey) {\r\n this.layout.setNavigationLoading(false);\r\n return new AXPEntityCreateLoaderDefault(config, this.store, this.formatService);\r\n }\r\n return Promise.reject('cannot fetch ');\r\n }\r\n}\r\n","import { AXPopupService } from '@acorex/components/popup';\r\nimport { AXPlatform } from '@acorex/core/platform';\r\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext, createWorkFlowEvent } from '@acorex/platform/workflow';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { AXPEntityCreateViewLoaderFactory } from '../entity-create-view/entity-create-view.config';\r\nimport { AXPEntityRegistryService } from '@acorex/platform/common';\r\n\r\nexport const AXPEntityCreateEvent = createWorkFlowEvent<{ module: string; entity: string }>('[Entity] Created!');\r\n\r\n@Injectable()\r\nexport class AXPEntityCreatePopupAction extends AXPWorkflowAction {\r\n private entityRegistery = inject(AXPEntityRegistryService);\r\n private popupService = inject(AXPopupService);\r\n private platform = inject(AXPlatform);\r\n private entityCreateFactory = inject(AXPEntityCreateViewLoaderFactory);\r\n\r\n async execute(context: AXPWorkflowContext): Promise<void> {\r\n const { module, entity: entityName } = context.getVariable('payload');\r\n const entity = await this.entityRegistery.resolve(module, entityName);\r\n\r\n const com = await import('../entity-create-view/entity-create-view.component');\r\n const result = await this.popupService.open(com.AXPEntityCreateViewComponent, {\r\n title: `Create New ${entity.title}`,\r\n size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',\r\n data: {\r\n loader: await this.entityCreateFactory.create(module, entityName),\r\n entity,\r\n },\r\n });\r\n if (result.data?.save) {\r\n context.setOutput('popupResult', true);\r\n context.setVariable('redirect', result.data.redirect);\r\n context.setVariable('id', result.data.recordId);\r\n }\r\n }\r\n}\r\n\r\nexport class AXPEntityCreateSubmittedAction extends AXPWorkflowAction {\r\n async execute(context: AXPWorkflowContext): Promise<void> {\r\n const { module, entity: entity } = context.getVariable('payload');\r\n this.dispatch(AXPEntityCreateEvent({ entity, module }));\r\n }\r\n}\r\n\r\nexport const AXPCreateEntityWorkflow: AXPWorkflow = {\r\n startStepId: 'createPopup',\r\n steps: {\r\n createPopup: {\r\n id: 'createPopup',\r\n action: 'AXPEntityCreatePopupAction',\r\n nextSteps: [\r\n {\r\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"popupResult\") == true' }],\r\n nextStepId: 'successToast',\r\n },\r\n ],\r\n },\r\n successToast: {\r\n id: 'successToast',\r\n action: 'AXPToastAction',\r\n input: {\r\n color: 'success',\r\n title: 'Entity Created',\r\n content: 'New Record has been successfully created.',\r\n },\r\n nextSteps: [\r\n {\r\n conditions: [],\r\n nextStepId: 'createSubmitted',\r\n },\r\n ],\r\n },\r\n createSubmitted: {\r\n id: 'createSubmitted',\r\n action: 'AXPEntityCreateSubmittedAction',\r\n nextSteps: [\r\n {\r\n conditions: [{ type: 'SINGLE', expression: 'context.getVariable(\"redirect\") == true' }],\r\n nextStepId: 'showDetailView',\r\n },\r\n ],\r\n },\r\n showDetailView: {\r\n id: 'showDetailView',\r\n action: 'AXPShowDetailViewAction',\r\n },\r\n },\r\n};\r\n","import { AXDialogService } from '@acorex/components/dialog';\r\nimport { AXLoadingDialogService } from '@acorex/components/loading-dialog';\r\nimport { AXPEntityRegistryService } from '@acorex/platform/common';\r\nimport {\r\n AXPWorkflow,\r\n AXPWorkflowAction,\r\n AXPWorkflowContext,\r\n AXPWorkflowFunction,\r\n createWorkFlowEvent,\r\n} from '@acorex/platform/workflow';\r\nimport { Injectable, inject } from '@angular/core';\r\n\r\nexport const AXPEntityDeletedEvent = createWorkFlowEvent<{ module: string; entity: string; id: string }>(\r\n '[Entity] Deleted'\r\n);\r\n\r\n@Injectable()\r\nexport class AXPEntityPerformDeleteAction extends AXPWorkflowAction {\r\n private entityRegistery = inject(AXPEntityRegistryService);\r\n private dialogService = inject(AXDialogService);\r\n private loadingDialog = inject(AXLoadingDialogService);\r\n\r\n async execute(context: AXPWorkflowContext): Promise<void> {\r\n const moduleName = context.getVariable('module');\r\n const entityName = context.getVariable('entity');\r\n const ids = context.getVariable('ids');\r\n const entity = await this.entityRegistery.resolve(moduleName, entityName);\r\n let deletedCount = 0;\r\n context.setVariable('deleteSuccessful', false);\r\n const dialog = this.loadingDialog.show({\r\n title: 'Deleting Record...',\r\n mode: 'determinate',\r\n status: 'Deleting...',\r\n progressValue: 0,\r\n text: `0/${ids.length}`,\r\n buttons: [\r\n {\r\n text: 'Cancel',\r\n color: 'danger',\r\n onClick: () => {\r\n dialog.close();\r\n },\r\n },\r\n ],\r\n });\r\n\r\n if (entity.commands?.delete != null) {\r\n const wrappedPromises = (ids as any[])\r\n .map((id, i) => {\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve(entity.commands?.delete?.(id));\r\n }, i * 200);\r\n });\r\n })\r\n .map((p) =>\r\n p?.then(\r\n (value) => {\r\n deletedCount++;\r\n dialog.setProgressText(`${deletedCount}/${ids.length}`);\r\n dialog.setProgressValue((deletedCount / ids.length) * 100);\r\n return { status: 'fulfilled', value };\r\n },\r\n (reason) => ({ status: 'rejected', reason })\r\n )\r\n );\r\n\r\n const results = await Promise.all(wrappedPromises);\r\n const successfulPromises = results.filter((result) => result?.status === 'fulfilled').length;\r\n const failedPromises = results.filter((result) => result?.status === 'rejected').length;\r\n setTimeout(() => {\r\n dialog.close();\r\n }, 300);\r\n\r\n // Handle different scenarios for alerts\r\n if (successfulPromises > 0 && failedPromises === 0) {\r\n // All items deleted successfully\r\n await this.dialogService.alert(\r\n 'Deletion Successful',\r\n `${successfulPromises} item(s) has been deleted.`,\r\n 'success'\r\n );\r\n // Dispatch actions\r\n this.dispatch(AXPEntityDeletedEvent({ module: moduleName, entity: entityName, id: ids }));\r\n } else if (successfulPromises > 0 && failedPromises > 0) {\r\n // Some items deleted successfully, some failed\r\n await this.dialogService.alert(\r\n 'Partial Deletion Completed',\r\n `${successfulPromises} item(s) deleted successfully. However, ${failedPromises} item(s) could not be deleted.`,\r\n 'warning'\r\n );\r\n // Dispatch actions\r\n this.dispatch(AXPEntityDeletedEvent({ module: moduleName, entity: entityName, id: ids }));\r\n } else if (successfulPromises === 0 && failedPromises > 0) {\r\n // No items deleted, all failed\r\n await this.dialogService.alert(\r\n 'Deletion Failed',\r\n `No items were deleted. ${failedPromises} item(s) failed to delete.`,\r\n 'danger'\r\n );\r\n } else {\r\n // No items to delete (no successful or failed promises)\r\n await this.dialogService.alert('No Deletion Needed', 'No items were available to delete.', 'info');\r\n }\r\n } else {\r\n throw new Error(\r\n `The delete operation cannot be performed on ${entity.title}. This action might be restricted or not applicable for the selected item.`\r\n );\r\n }\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class AXPMyCustomFunc extends AXPWorkflowFunction {\r\n private entityRegistery = inject(AXPEntityRegistryService);\r\n private dialogService = inject(AXDialogService);\r\n\r\n async execute(val: string): Promise<boolean> {\r\n return val == 'abc';\r\n }\r\n}\r\n\r\nexport const AXPDeleteEntityWorkflow: AXPWorkflow = {\r\n startStepId: 'confirmDelete',\r\n steps: {\r\n confirmDelete: {\r\n id: 'confirmDelete',\r\n action: 'AXPDialogConfirmAction',\r\n input: {\r\n title: 'Warning',\r\n message: `Are you sure want to delete selected item(s)?`,\r\n type: 'danger',\r\n },\r\n nextSteps: [\r\n {\r\n conditions: [\r\n {\r\n type: 'AND',\r\n conditions: [\r\n { type: 'SINGLE', expression: 'context.getOutput(\"result\") == true' },\r\n { type: 'SINGLE', expression: 'await test(\"abc\")' },\r\n ],\r\n },\r\n ],\r\n nextStepId: 'performDelete',\r\n },\r\n ],\r\n },\r\n performDelete: {\r\n id: 'performDelete',\r\n action: 'AXPEntityPerformDeleteAction',\r\n },\r\n },\r\n};\r\n","import { AXActionSheetService } from '@acorex/components/action-sheet';\r\nimport { AXDataTableComponent, AXRowCommandItem, AXRowCommandItemClickEvent } from '@acorex/components/data-table';\r\nimport { AXDrawerComponent } from '@acorex/components/drawer';\r\nimport { AXPopupService } from '@acorex/components/popup';\r\nimport { AXPlatform } from '@acorex/core/platform';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport { AXClickEvent, AXValueChangedEvent } from '@acorex/components/common';\r\nimport { AXDataTableRowDbClick } from '@acorex/components/data-table/lib/base-data-table.class';\r\nimport { AXUnsubscriber } from '@acorex/core/utils';\r\nimport { AXPAdminLayoutState, AXPLayoutChildDrawerToggle, AXPLayoutService, AXP_MENU_LOADER } from '@acorex/platform/common';\r\nimport { AXPWorkflowService, ofType } from '@acorex/platform/workflow';\r\nimport { AXPEntityCreateEvent } from '../../entity-layout/workflows/create-entity.workflow';\r\nimport { AXPEntityDeletedEvent } from '../../entity-layout/workflows/delete-entity.workflow';\r\nimport { AXPEntityCreateCustomViewComponent } from './components/entity-custom-view/entity-custom-view.component';\r\nimport { AXPListViewLoader } from './list-view.config';\r\nimport { convertPropertiesToColumns } from '@acorex/platform/common';\r\n\r\n@Component({\r\n templateUrl: 'entity-list-view.component.html',\r\n styleUrls: ['entity-list-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [AXUnsubscriber],\r\n})\r\nexport class AXPEntityListViewComponent {\r\n private store = inject(Store<AXPAdminLayoutState>);\r\n private workflow = inject(AXPWorkflowService);\r\n private layout = inject(AXPLayoutService);\r\n private route = inject(ActivatedRoute);\r\n private manuLoader = inject(AXP_MENU_LOADER);\r\n\r\n protected loader = this.route.snapshot.data['loader'] as AXPListViewLoader;\r\n protected title: string = '';\r\n protected searchValue: string = '';\r\n protected searchBoxPlaceholder: string = '';\r\n protected searchBoxTitle: string = '';\r\n protected searchBoxCollapsed: boolean = true;\r\n\r\n protected publicViews$ = this.loader.publicViews$;\r\n protected customViews$ = this.loader.customViews$;\r\n protected hasCustomViews$ = this.loader.hasCustomViews$;\r\n protected view$ = this.loader.view$;\r\n //\r\n protected conditions$ = this.loader.conditions$;\r\n protected conditionsCount$ = this.loader.conditionsCount$;\r\n //\r\n protected columns$ = this.loader.displayColumns$;\r\n protected columnsCount$ = this.loader.displayColumnsCount$;\r\n //\r\n protected sort$ = this.loader.sorts$;\r\n protected sortCount$ = this.loader.sortsCount$;\r\n //\r\n protected dataSource = this.loader.dataSource;\r\n //\r\n protected canDelete = this.loader.entity.editOptions?.delete ?? true;\r\n protected canCreate = this.loader.entity.editOptions?.create ?? true;\r\n protected canUpdate = this.loader.entity.editOptions?.update ?? true;\r\n //\r\n protected focusedRow: any;\r\n //\r\n @ViewChild('viewsTemplate') viewsTemplate!: TemplateRef<unknown>;\r\n // @ViewChild('grid') grid!: AXDataTableComponent;\r\n @ViewChild('grid') grid!: AXDataTableComponent;\r\n @ViewChild('entityViewDrawer') entityViewDrawer!: AXDrawerComponent;\r\n\r\n private popupService = inject(AXPopupService);\r\n\r\n constructor(\r\n private actionSheetService: AXActionSheetService,\r\n private unsubscriber: AXUnsubscriber,\r\n protected platform: AXPlatform,\r\n protected cdr: ChangeDetectorRef\r\n ) {\r\n //TODO: namespace, module name issues\r\n this.title = this.manuLoader.currentMenuItem()?.text ?? this.loader.entity.formats?.list ?? this.loader.entity.formats?.default ?? 'Title';\r\n //\r\n\r\n this.workflow.events$.pipe(ofType(AXPEntityDeletedEvent, AXPEntityCreateEvent), this.unsubscriber.takeUntilDestroy).subscribe((event) => {\r\n if (event.payload.entity == this.loader.entity.name && event.payload.module == this.loader.entity.module) {\r\n this.grid.selectedRows = [];\r\n this.grid?.refresh();\r\n }\r\n });\r\n //\r\n this.dataSource.onLoadingChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe((value) => {\r\n this.layout.setNavigationLoading(value);\r\n });\r\n this._getInlineConditionTitles();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.loader.setDefaultView();\r\n }\r\n\r\n _getInlineConditionTitles() {\r\n const titles = this.loader.getInlineFilterTitles();\r\n this.searchBoxTitle = titles.join(', ');\r\n if (titles.length > 2) this.searchBoxPlaceholder = titles.slice(0, 2).join(', ') + ' ...';\r\n else this.searchBoxPlaceholder = titles.join(', ');\r\n }\r\n\r\n _handleViewsPopover() {\r\n this.actionSheetService.open({ content: this.viewsTemplate });\r\n }\r\n\r\n handleDrawerClick() {\r\n this.store.dispatch(AXPLayoutChildDrawerToggle());\r\n }\r\n\r\n toggleSearchBox() {\r\n this.searchBoxCollapsed = !this.searchBoxCollapsed;\r\n }\r\n\r\n private dropdownRowItems: AXRowCommandItem[] = [\r\n {\r\n text: 'Details',\r\n icon: 'fa-solid fa-eye',\r\n name: 'edit',\r\n divided: true,\r\n },\r\n {\r\n text: 'Delete',\r\n icon: 'fa-solid fa-trash-can',\r\n name: 'delete',\r\n color: 'danger',\r\n disabled: !this.canDelete,\r\n },\r\n ];\r\n\r\n private inlineRowItems: AXRowCommandItem[] = [\r\n {\r\n text: 'View',\r\n icon: 'fa-solid fa-eye',\r\n name: 'view',\r\n divided: true,\r\n },\r\n ];\r\n\r\n protected getDropdownRowItems = (rowData: unknown): Promise<AXRowCommandItem[]> => {\r\n return Promise.resolve(this.dropdownRowItems);\r\n };\r\n\r\n protected getInlineRowItems = (rowData: unknown): AXRowCommandItem[] => {\r\n return this.inlineRowItems;\r\n };\r\n\r\n protected handleRowDbClick(e: AXDataTableRowDbClick) {\r\n const d: AXRowCommandItemClickEvent = {\r\n component: e.component,\r\n name: this.dropdownRowItems[0].name,\r\n data: e.data,\r\n };\r\n this.handleRowCommandClick(d);\r\n }\r\n\r\n protected async handleRowCommandClick(e: AXRowCommandItemClickEvent) {\r\n switch (e.name) {\r\n case 'view': {\r\n await this.workflow.execute('show-quick-view', {\r\n payload: {\r\n module: this.loader.entity.module,\r\n entity: this.loader.entity.name,\r\n data: e.data,\r\n },\r\n });\r\n break;\r\n }\r\n case 'edit': {\r\n await this.workflow.execute('show-details', {\r\n payload: {\r\n module: this.loader.entity.module,\r\n entity: this.loader.entity.name,\r\n },\r\n id: e.data.id,\r\n });\r\n break;\r\n }\r\n case 'delete': {\r\n await this.workflow.execute('delete-entity', {\r\n module: this.loader.entity.module,\r\n entity: this.loader.entity.name,\r\n ids: [e.data.id],\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n\r\n protected handleCreateClick() {\r\n this.workflow.execute('create-entity', {\r\n payload: {\r\n module: this.loader.entity.module,\r\n entity: this.loader.entity.name,\r\n },\r\n });\r\n }\r\n\r\n protected handleCommandClick(command: string) {\r\n switch (command) {\r\n case 'delete':\r\n this.workflow.execute('delete-entity', {\r\n module: this.loader.entity.module,\r\n entity: this.loader.entity.name,\r\n ids: this.grid.selectedRows.map((c) => (c as any)['id']),\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n protected clearSelectedItems() {\r\n this.grid.selectedRows = [];\r\n }\r\n\r\n protected closeDrawer(name: string, collapsed: boolean) {\r\n if (collapsed != false) {\r\n switch (name) {\r\n case 'conditions':\r\n this.loader.resetConditions();\r\n break;\r\n case 'columns':\r\n this.loader.resetColumns();\r\n break;\r\n case 'sorts':\r\n this.loader.resetSort();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n\r\n handleChangeSearchValue(e: AXValueChangedEvent) {\r\n if (e.isUserInteraction) {\r\n this.loader.handleInlineSearch(e.value);\r\n }\r\n }\r\n\r\n protected async addCustomViewPopup() {\r\n const newView = {\r\n name: 'custom-view',\r\n title: 'Custom View',\r\n fixed: false,\r\n sorts: [],\r\n columns: convertPropertiesToColumns(...this.loader.entity.properties),\r\n conditions: [],\r\n };\r\n\r\n const popup = await this.popupService.open(AXPEntityCreateCustomViewComponent, {\r\n title: 'Create Custom View',\r\n size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',\r\n closeOnBackdropClick: true,\r\n draggable: false,\r\n data: {\r\n loader: this.loader,\r\n selectedView: newView,\r\n mode: 'create',\r\n },\r\n });\r\n if (popup.data?.save == true) {\r\n console.log('updatedView: ', popup.data.updatedView);\r\n this.loader.createView(popup.data.updatedView);\r\n }\r\n }\r\n protected async updateViewPopup(e: AXClickEvent, selectedView: any) {\r\n // (e.nativeEvent as UIEvent).stopPropagation();\r\n const popup = await this.popupService.open(AXPEntityCreateCustomViewComponent, {\r\n title: 'Modify Custom View',\r\n size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',\r\n closeOnBackdropClick: true,\r\n draggable: false,\r\n data: {\r\n loader: this.loader,\r\n selectedView,\r\n mode: 'edit',\r\n },\r\n });\r\n if (popup.data?.delete == true) {\r\n this.loader.deleteView(popup.data.viewName);\r\n }\r\n if (popup.data?.save == true) {\r\n console.log('updatedView: ', popup.data.updatedView);\r\n this.loader.updateView(popup.data.updatedView);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.dataSource.reset();\r\n }\r\n}\r\n","<ax-drawer-container>\r\n <!-- <ax-drawer #drawer location=\"start\" [collapsed]=\"true\" [mode]=\"platform.is('SM') ? 'overlay' : 'push'\">\r\n <ax-content class=\"ax-w-64 ax-border-e\">\r\n <div class=\"ax-p-6 ax-py-4 ax-gap-6 ax-flex ax-flex-col\">\r\n <p class=\"ax-text-2xl ax-font-bold\">Folders</p>\r\n <ax-side-menu>\r\n <ng-container *ngFor=\"let node of menuItems\" [ngTemplateOutlet]=\"sideMenu\"\r\n [ngTemplateOutletContext]=\"{ $implicit: node }\">\r\n </ng-container>\r\n </ax-side-menu>\r\n <ng-template #sideMenu let-item>\r\n <ax-side-menu-item [text]=\"item.text\">\r\n <ax-prefix>\r\n <ax-icon class=\"fa-solid fa-folder ax-text-warning-500\"></ax-icon>\r\n </ax-prefix>\r\n <ng-container *ngIf=\"item.children\">\r\n <ng-container *ngFor=\"let child of item.children\" [ngTemplateOutlet]=\"sideMenu\"\r\n [ngTemplateOutletContext]=\"{ $implicit: child }\">\r\n </ng-container>\r\n </ng-container>\r\n </ax-side-menu-item>\r\n </ng-template>\r\n </div>\r\n </ax-content>\r\n </ax-drawer> -->\r\n <ax-content class=\"ax-flex ax-flex-col ax-overflow-hidden\">\r\n <div\r\n class=\"ax-flex ax-flex-col ax-gap-0 md:ax-gap-4 ax-px-4 ax-py-3 md:ax-py-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\">\r\n @if(platform.is('MD')){\r\n <div class=\"ax-flex ax-justify-between ax-mb-4\">\r\n @if(this.grid?.selectedRows?.length==0){\r\n <div class=\"ax-text-xl ax-font-bold\">{{ title }}</div>\r\n <div class=\"ax-flex ax-items-center ax-gap-2\">\r\n @if(canCreate)\r\n {\r\n <ax-button color=\"primary\" class=\"ax-sm\" (onClick)=\"handleCreateClick()\">\r\n <ax-icon class=\"fa-solid fa-add\"></ax-icon>\r\n </ax-button>\r\n }\r\n <ax-button color=\"ghost\" class=\"ax-sm\" #more>\r\n <ax-icon class=\"fa-solid fa-ellipsis-vertical\"> </ax-icon>\r\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\r\n <ax-button-item-list>\r\n <ax-button-item text=\"Export\" class=\"ax-font-semibold\">\r\n <ax-prefix>\r\n <ax-icon icon=\"fa-solid fa-file-export\"> </ax-icon>\r\n </ax-prefix>\r\n </ax-button-item>\r\n </ax-button-item-list>\r\n </ax-dropdown-panel>\r\n </ax-button>\r\n </div>\r\n }@else {\r\n <div class=\"ax-flex ax-items-center ax-gap-3\">\r\n <span class=\"ax-text-xl ax-font-bold\"> {{ this.grid?.selectedRows?.length }} Items Selected </span>\r\n <span (click)=\"clearSelectedItems()\"\r\n class=\"ax-text-sm ax-text-primary dark:ax-text-primary-300 ax-underline ax-cursor-pointer\">Clear\r\n Items</span>\r\n </div>\r\n <div class=\"ax-flex ax-items-center ax-gap-2\">\r\n @if(canDelete)\r\n {\r\n <ax-button color=\"danger\" class=\"ax-sm\" (onClick)=\"handleCommandClick('delete')\">\r\n <ax-icon class=\"fa-solid fa-trash\"> </ax-icon>\r\n </ax-button>\r\n }\r\n <ax-button color=\"ghost\" class=\"ax-sm\" #more>\r\n <ax-icon class=\"fa-solid fa-ellipsis-vertical\"> </ax-icon>\r\n </ax-button>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"ax-flex ax-items-center ax-justify-between\">\r\n <ax-button [disabled]=\"this.grid?.selectedRows?.length != 0\" [text]=\"(view$ | async)?.title\" color=\"ghost\">\r\n <ax-icon class=\"fa-solid fa-eye ax-text-neutral-400\"> </ax-icon>\r\n <ax-suffix>\r\n <i class=\"fa-solid fa-caret-down\"></i>\r\n </ax-suffix>\r\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\r\n <ax-button-item-list class=\"ax-bg-surface\">\r\n <ax-title class=\"ax-font-bold ax-opacity-100\">Public Views</ax-title>\r\n <ax-button-item *ngFor=\"let v of publicViews$ | async\" [text]=\"v.title\"\r\n [class.ax-bg-on-surface]=\"(view$ | async) == v\" (onClick)=\"loader.setView(v.name)\"></ax-button-item>\r\n <ax-title class=\"ax-font-bold ax-opacity-100\" *ngIf=\"hasCustomViews$ | async\">Created by me</ax-title>\r\n <ax-button-item *ngFor=\"let v of customViews$ | async\" [text]=\"v.title\"\r\n [class.ax-bg-on-surface]=\"(view$ | async) == v\" (onClick)=\"loader.setView(v.name)\"></ax-button-item>\r\n <ng-container *feature=\"'axp-entity-list-custom-view'\">\r\n <ax-divider></ax-divider>\r\n <ax-button-item (onClick)=\"addCustomViewPopup()\" text=\"Add Custom View\"\r\n class=\"ax-font-semibold ax-text-primary\"></ax-button-item>\r\n </ng-container>\r\n </ax-button-item-list>\r\n </ax-dropdown-panel>\r\n </ax-button>\r\n <div class=\"ax-flex ax-gap-2\">\r\n @if(searchBoxTitle){\r\n <ax-button *feature=\"'axp-entity-list-quick-search'\" (onClick)=\"toggleSearchBox()\"\r\n [disabled]=\"this.grid?.selectedRows?.length != 0\" color=\"ghost\">\r\n <ax-icon class=\"fa-solid fa-search ax-text-neutral-400\"> </ax-icon>\r\n </ax-button>\r\n }\r\n <ax-button [disabled]=\"this.grid?.selectedRows?.length != 0\" color=\"ghost\" (onClick)=\"columnsDrawer.open()\">\r\n <ax-icon class=\"fa-solid fa-bars ax-text-neutral-400\"> </ax-icon>\r\n </ax-button>\r\n <ax-button [disabled]=\"this.grid?.selectedRows?.length != 0\" color=\"ghost\"\r\n (onClick)=\"conditionsDrawer.open()\">\r\n <ax-icon class=\"fa-solid fa-sliders ax-text-neutral-400\"> </ax-icon>\r\n @if ((conditionsCount$ | async)) {\r\n <ax-suffix>\r\n <ax-badge [color]=\"'primary'\"></ax-badge>\r\n </ax-suffix>\r\n }\r\n </ax-button>\r\n <ax-button [disabled]=\"this.grid?.selectedRows?.length != 0\" color=\"ghost\" (onClick)=\"sortsDrawer.open()\">\r\n <ax-icon class=\"fa-solid fa-bars-sort ax-text-neutral-400\"> </ax-icon>\r\n @if ((sortCount$ | async)) {\r\n <ax-suffix>\r\n <ax-badge [color]=\"'primary'\"></ax-badge>\r\n </ax-suffix>\r\n }\r\n </ax-button>\r\n </div>\r\n </div>\r\n <div *feature=\"'axp-entity-list-quick-search'\" [class.collapsed-search-box]=\"searchBoxCollapsed\"\r\n class=\"ax-transition-all ax-mt-4\">\r\n <ax-search-box [title]=\"searchBoxTitle\"\r\n [placeholder]=\"'Search on ' + searchBoxPlaceholder\"><ax-clear-button></ax-clear-button></ax-search-box>\r\n </div>\r\n } @else {\r\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-3\">\r\n <div class=\"ax-text-xl md:ax-text-3xl ax-font-bold ax-mb-2\">{{ title }}</div>\r\n @if(this.grid?.selectedRows?.length==0){\r\n <div class=\"ax-flex ax-gap-3\">\r\n @if(canCreate)\r\n {\r\n <ax-button text=\"Create New\" color=\"primary\" (onClick)=\"handleCreateClick()\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-add\"></i>\r\n </ax-prefix>\r\n </ax-button>\r\n }\r\n <ax-button text=\"Actions\" color=\"ghost\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\r\n </ax-prefix>\r\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\r\n <ax-button-item-list>\r\n <ax-button-item text=\"Export\" class=\"ax-font-semibold\">\r\n <ax-prefix>\r\n <ax-icon icon=\"fa-solid fa-file-export\"> </ax-icon>\r\n </ax-prefix>\r\n </ax-button-item>\r\n </ax-button-item-list>\r\n </ax-dropdown-panel>\r\n </ax-button>\r\n </div>\r\n }@else {\r\n <div class=\"ax-flex ax-gap-3\">\r\n @if(canDelete)\r\n {\r\n <ax-button text=\"Delete Items\" color=\"danger\" (onClick)=\"handleCommandClick('delete')\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-trash\"></i>\r\n </ax-prefix>\r\n </ax-button>\r\n }\r\n <ax-button text=\"Actions\" color=\"ghost\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\r\n </ax-prefix>\r\n </ax-button>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"ax-flex ax-items-center ax-justify-between\">\r\n <!----------------------- View Mode --------------------->\r\n @if(this.grid?.selectedRows?.length==0) {\r\n <div class=\"ax-flex ax-w-full ax-justify-between ax-gap-3\">\r\n <div class=\"ax-flex ax-gap-3\">\r\n <ax-button [text]=\"(view$ | async)?.title\" #views color=\"ghost\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-eye\"></i>\r\n </ax-prefix>\r\n <ax-suffix>\r\n <i class=\"fa-solid fa-caret-down\"></i>\r\n </ax-suffix>\r\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\r\n <ax-button-item-list class=\"ax-bg-surface\">\r\n <ax-title class=\"ax-font-bold ax-opacity-100\">Public Views</ax-title>\r\n <ax-button-item *ngFor=\"let v of publicViews$ | async\" [text]=\"v.title\"\r\n [class.ax-bg-on-surface]=\"(view$ | async) == v\" (onClick)=\"loader.setView(v.name)\"></ax-button-item>\r\n <ax-title class=\"ax-font-bold ax-opacity-100\" *ngIf=\"hasCustomViews$ | async\">Created by me</ax-title>\r\n <ax-button-item class=\"ax-pe-4 ax-flex ax-justify-between\" *ngFor=\"let v of customViews$ | async\"\r\n [text]=\"v.title\" [class.ax-bg-on-surface]=\"(view$ | async) == v\" (onClick)=\"loader.setView(v.name)\">\r\n <ax-suffix>\r\n <ax-button (onClick)=\"updateViewPopup($event, v)\" class=\"ax-xs\" look=\"none\">\r\n <ax-icon class=\"far fa-edit\"> </ax-icon>\r\n </ax-button>\r\n </ax-suffix>\r\n </ax-button-item>\r\n <ng-container *feature=\"'axp-entity-list-custom-view'\">\r\n <ax-divider></ax-divider>\r\n <ax-button-item text=\"Add Custom View\" (onClick)=\"addCustomViewPopup()\"\r\n class=\"ax-font-semibold ax-text-primary\"></ax-button-item>\r\n </ng-container>\r\n </ax-button-item-list>\r\n </ax-dropdown-panel>\r\n </ax-button>\r\n @if(searchBoxTitle){\r\n <div class=\"ax-w-72\" *feature=\"'axp-entity-list-quick-search'\">\r\n <ax-search-box [title]=\"searchBoxTitle\" [(ngModel)]=\"searchValue\"\r\n (onValueChanged)=\"handleChangeSearchValue($event)\"\r\n [placeholder]=\"'Search on ' + searchBoxPlaceholder\"><ax-clear-button></ax-clear-button></ax-search-box>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"ax-flex ax-gap-3\">\r\n <ax-button text=\"Columns\" color=\"ghost\" #columns (onClick)=\"columnsDrawer.open()\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-bars\"></i>\r\n </ax-prefix>\r\n <ax-suffix>\r\n <ax-badge text=\"{{ columnsCount$ | async }}\" color=\"primary\"></ax-badge>\r\n </ax-suffix>\r\n </ax-button>\r\n <ax-button text=\"Filters\" color=\"ghost\" (onClick)=\"conditionsDrawer.open()\" #conditions>\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-sliders\"></i>\r\n </ax-prefix>\r\n <ax-suffix>\r\n <ax-badge text=\"{{ conditionsCount$ | async }}\" color=\"primary\"></ax-badge>\r\n </ax-suffix>\r\n </ax-button>\r\n <ax-button text=\"Sort\" color=\"ghost\" (onClick)=\"sortsDrawer.open()\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-bars-sort\"></i>\r\n </ax-prefix>\r\n <ax-suffix *ngIf=\"(sortCount$ | async)! > 0\">\r\n <ax-badge text=\"{{ sortCount$ | async }}\" color=\"primary\"></ax-badge>\r\n </ax-suffix>\r\n </ax-button>\r\n </div>\r\n </div>\r\n\r\n } @else{\r\n <!----------------------- Selection Mode --------------------->\r\n <div>\r\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\r\n <span class=\"ax-text-xl ax-font-bold\"> {{ this.grid?.selectedRows?.length }} Items Selected </span>\r\n <span (click)=\"clearSelectedItems()\"\r\n class=\"ax-text-sm ax-text-primary dark:ax-text-primary-300 ax-underline ax-cursor-pointer\">Clear\r\n Items</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"ax-flex-1 ax-px-6 ax-py-4 ax-flex ax-overflow-auto\">\r\n <ax-data-table #grid [showFooter]=\"false\" class=\"ax-flex-1\" [dataSource]=\"dataSource\" [paging]=\"true\"\r\n [fetchDataMode]=\"'manual'\" (onRowDbClick)=\"handleRowDbClick($event)\"\r\n [loading]=\"{ enabled: true, animation: true }\">\r\n <!-- <ax-index-column *ngIf=\"!platform.is('SM')\" [width]=\"'85px'\"></ax-index-column> -->\r\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\r\n @for(col of (columns$ | async);track col.name) {\r\n <axp-widget-column-renderer *ngIf=\"col.visible\" [schema]=\"col.schema\" [dataField]=\"col.name\"\r\n [caption]=\"col.title\" [options]=\"col.options\" [displayFormat]=\"col.displayFormat\" width=\"180px\"\r\n [allowSorting]=\"false\">\r\n </axp-widget-column-renderer>\r\n }\r\n <ax-dropdown-command-column fixed=\"end\" [width]=\"'60px'\" [items]=\"getDropdownRowItems\"\r\n (onItemClick)=\"handleRowCommandClick($event)\"></ax-dropdown-command-column>\r\n <ax-command-column fixed=\"end\" [width]=\"'60px'\" [items]=\"getInlineRowItems\"\r\n (onItemClick)=\"handleRowCommandClick($event)\"></ax-command-column>\r\n </ax-data-table>\r\n </div>\r\n </ax-content>\r\n <ax-drawer (collapsedChange)=\"closeDrawer('columns', $event)\" #columnsDrawer location=\"end\" [mode]=\"'overlay'\">\r\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[20vw] ax-border-e\">\r\n <axp-list-view-option-columns [loader]=\"loader\" (onClosed)=\"columnsDrawer.close()\"></axp-list-view-option-columns>\r\n </ax-content>\r\n </ax-drawer>\r\n <ax-drawer (collapsedChange)=\"closeDrawer('conditions', $event)\" #conditionsDrawer location=\"end\" [mode]=\"'overlay'\">\r\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[25vw] ax-border-e\">\r\n <axp-list-view-option-conditions [loader]=\"loader\"\r\n (onClosed)=\"conditionsDrawer.close()\"></axp-list-view-option-conditions>\r\n </ax-content>\r\n </ax-drawer>\r\n <ax-drawer (collapsedChange)=\"closeDrawer('sorts', $event)\" #sortsDrawer location=\"end\" [mode]=\"'overlay'\">\r\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[20vw] ax-border-e\">\r\n <axp-list-view-option-sorting (onClosed)=\"sortsDrawer.close()\" [loader]=\"loader\"></axp-list-view-option-sorting>\r\n </ax-content>\r\n </ax-drawer>\r\n</ax-drawer-container>","import { AXActionSheetModule } from '@acorex/components/action-sheet';\r\nimport { AXBadgeModule } from '@acorex/components/badge';\r\nimport { AXButtonModule } from '@acorex/components/button';\r\nimport { AXCollapseModule } from '@acorex/components/collapse';\r\nimport { AXCommonModule } from '@acorex/components/common';\r\nimport { AXDataTableModule } from '@acorex/components/data-table';\r\nimport { AXDecoratorModule } from '@acorex/components/decorators';\r\nimport { AXDialogModule } from '@acorex/components/dialog';\r\nimport { AXDrawerModule } from '@acorex/components/drawer';\r\nimport { AXDropdownModule } from '@acorex/components/dropdown';\r\nimport { AXFormModule } from '@acorex/components/form';\r\nimport { AXImageModule } from '@acorex/components/image';\r\nimport { AXListModule } from '@acorex/components/list';\r\nimport { AXLoadingModule } from '@acorex/components/loading';\r\nimport { AXPopoverModule } from '@acorex/components/popover';\r\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\r\nimport { AXSwitchModule } from '@acorex/components/switch';\r\nimport { AXTabsModule } from '@acorex/components/tabs';\r\nimport { AXTextBoxModule } from '@acorex/components/text-box';\r\nimport { CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDropList } from '@angular/cdk/drag-drop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport {\r\n AXPListViewOptionConditionsComponent,\r\n AXPListViewOptionFilterOperatorComponent,\r\n AXPListViewOptionSortingComponent,\r\n AXPListViewOptionsColumnsComponent,\r\n} from './components';\r\nimport { AXPEntityListViewComponent } from './entity-list-view.component';\r\n\r\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\r\nimport { AXLabelModule } from '@acorex/components/label';\r\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\r\nimport { AXSelectionListModule } from '@acorex/components/selection-list';\r\nimport { AXPCommonWidgetModule, AXPSchemaModule } from '@acorex/platform/common';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { AXPEntityCreateCustomViewComponent } from './components/entity-custom-view/entity-custom-view.component';\r\nimport { AXPAuthModule } from '@acorex/platform/auth';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n AXCommonModule,\r\n AXDataTableModule,\r\n AXButtonModule,\r\n AXDecoratorModule,\r\n AXBadgeModule,\r\n AXDropdownModule,\r\n AXPopoverModule,\r\n AXImageModule,\r\n AXSwitchModule,\r\n AXDrawerModule,\r\n AXLoadingModule,\r\n AXTabsModule,\r\n AXSelectBoxModule,\r\n AXFormModule,\r\n AXListModule,\r\n AXTextBoxModule,\r\n AXSearchBoxModule,\r\n AXLabelModule,\r\n AXCollapseModule,\r\n AXActionSheetModule,\r\n AXSelectionListModule,\r\n AXImageModule,\r\n AXDialogModule,\r\n AXDropdownButtonModule,\r\n //\r\n CdkDropList,\r\n CdkDrag,\r\n CdkDragPlaceholder,\r\n CdkDragHandle,\r\n PortalModule,\r\n AXPSchemaModule,\r\n AXPCommonWidgetModule,\r\n AXPAuthModule\r\n ],\r\n declarations: [\r\n AXPEntityListViewComponent,\r\n AXPEntityCreateCustomViewComponent,\r\n AXPListViewOptionsColumnsComponent,\r\n AXPListViewOptionConditionsComponent,\r\n AXPListViewOptionFilterOperatorComponent,\r\n AXPListViewOptionSortingComponent,\r\n ],\r\n providers: [],\r\n})\r\nexport class AXPListViewModule { }\r\n","import { AXDataSource, AXDataSourceFilterOption, AXDataSourceSortOption } from '@acorex/components/common';\r\nimport { AXPEntityConfig, AXPEntityListColumnConfig, AXPEntityListConditionConfig, AXPEntityListDisplayColumnConfig, AXPEntityListSortConfig, AXPEntityListViewConfig, AXPEntityListViewConfigEmpty, AXPEntityPropertyConfig, AXPEntityRegistryService, AXPSchemaRegistryService } from '@acorex/platform/common';\r\nimport { Injectable, InjectionToken, inject } from '@angular/core';\r\nimport { cloneDeep } from 'lodash-es';\r\nimport { BehaviorSubject, Observable, defaultIfEmpty, first, map, of, switchMap } from 'rxjs';\r\n\r\nimport { AXPLayoutService } from '@acorex/platform/common';\r\n\r\nexport interface AXPListViewLoader {\r\n get properties$(): Observable<AXPEntityPropertyConfig[]>;\r\n getProp(name: string): AXPEntityPropertyConfig | undefined;\r\n\r\n get views$(): Observable<AXPEntityListViewConfig[]>;\r\n get publicViews$(): Observable<AXPEntityListViewConfig[]>;\r\n get customViews$(): Observable<AXPEntityListViewConfig[]>;\r\n get hasCustomViews$(): Observable<boolean>;\r\n get view$(): Observable<AXPEntityListViewConfig>;\r\n setDefaultView(): void;\r\n setView(name: string): void;\r\n createView(view: AXPEntityListViewConfig): void;\r\n updateView(view: AXPEntityListViewConfig): void;\r\n deleteView(viewName: string): void;\r\n\r\n get columns$(): Observable<AXPEntityListColumnConfig[]>;\r\n get displayColumns$(): Observable<AXPEntityListDisplayColumnConfig[]>;\r\n get displayColumnsCount$(): Observable<number>;\r\n setColumnVisibility(name: string, visible: boolean): void;\r\n updateColumns(items: AXPEntityListDisplayColumnConfig[]): void;\r\n resetColumns(): void;\r\n\r\n get sorts$(): Observable<AXPEntityListSortConfig[]>;\r\n get sortsCount$(): Observable<number>;\r\n addSort(): void;\r\n resetSort(): void;\r\n removeSort(item: AXPEntityListSortConfig): void;\r\n updateSort(items: AXPEntityListSortConfig[]): void;\r\n\r\n get conditions$(): Observable<AXPEntityListConditionConfig[]>;\r\n get conditionsCount$(): Observable<number>;\r\n getInlineFilterTitles(): string[];\r\n\r\n addCondition(selectedFields: { name: string; opr: string }[]): void;\r\n resetConditions(): void;\r\n removeCondition(item: AXPEntityListConditionConfig): void;\r\n handleInlineSearch(value: string): void;\r\n updateConditions(items: AXPEntityListConditionConfig[]): void;\r\n\r\n get dataSource(): AXDataSource;\r\n get entity(): AXPEntityConfig;\r\n}\r\n\r\nexport class AXPListViewLoaderDefault implements AXPListViewLoader {\r\n private _config!: AXPEntityConfig;\r\n private _dataSource: AXDataSource = new AXDataSource(this.entity.dataSource);\r\n private _inlineFilterItems: { name: string; dataType: string | undefined; title: string }[] = [];\r\n\r\n constructor(private config: AXPEntityConfig, private schemaService: AXPSchemaRegistryService) {\r\n this._inlineFilterItems = this.entity.properties\r\n .filter((property) => property.canInlineFilter)\r\n .map((item) => {\r\n const schema = this.schemaService.resolve(item.schema);\r\n return { name: item.name, dataType: schema?.dataType, title: item.title };\r\n });\r\n }\r\n\r\n get entity(): AXPEntityConfig {\r\n if (!this._config) {\r\n this._config = cloneDeep(this.config);\r\n }\r\n return this._config;\r\n }\r\n\r\n get dataSource(): AXDataSource {\r\n return this._dataSource;\r\n }\r\n\r\n //****************** Properties ******************//\r\n private get props(): AXPEntityPropertyConfig[] {\r\n return this.entity.properties;\r\n }\r\n private _props$ = new BehaviorSubject<AXPEntityPropertyConfig[]>(this.props);\r\n\r\n public get properties$(): Observable<AXPEntityPropertyConfig[]> {\r\n return this._props$;\r\n }\r\n\r\n public getProp = (name: string): AXPEntityPropertyConfig | undefined => this.entity.properties.find((c) => c.name == name);\r\n\r\n //****************** Views ******************//\r\n\r\n private _currentView = 'default';\r\n\r\n private get views() {\r\n return this.entity.views.list?.views!;\r\n }\r\n\r\n private _views$ = new BehaviorSubject<AXPEntityListViewConfig[]>(this.views);\r\n public get views$(): Observable<AXPEntityListViewConfig[]> {\r\n return this._views$;\r\n }\r\n public get view$(): Observable<AXPEntityListViewConfig> {\r\n return this.views$.pipe(\r\n switchMap((views) => {\r\n const view = views.find((c) => c.name === this._currentView);\r\n if (view) {\r\n return of(view);\r\n } else if (this.views.length > 0) {\r\n return of(this.views[0]);\r\n } else {\r\n return of(AXPEntityListViewConfigEmpty);\r\n }\r\n })\r\n );\r\n }\r\n\r\n public get publicViews$(): Observable<AXPEntityListViewConfig[]> {\r\n return this.views$.pipe(map((c) => c.filter((v) => v.fixed)));\r\n }\r\n\r\n public get customViews$(): Observable<AXPEntityListViewConfig[]> {\r\n return this.views$.pipe(map((c) => c.filter((v) => !v.fixed)));\r\n }\r\n\r\n public get hasCustomViews$(): Observable<boolean> {\r\n return this.customViews$.pipe(map((c) => c.length > 0));\r\n }\r\n\r\n public setDefaultView() {\r\n this.setView(this.views[0].name);\r\n }\r\n\r\n public setView(name: string): void {\r\n let propNames: string[] = [];\r\n this.properties$.pipe(first()).subscribe((properties) => {\r\n propNames = properties.map((p) => p.name);\r\n });\r\n this._currentView = name;\r\n const updatedView = this._views$.value.find((c) => c.name === this._currentView) || AXPEntityListViewConfigEmpty;\r\n const currentViews = this._views$.value;\r\n const updatedViews = currentViews.map((view) => {\r\n if (view.name === updatedView.name) {\r\n return updatedView;\r\n } else {\r\n return view;\r\n }\r\n });\r\n\r\n this._currentConditions$.next(cloneDeep(updatedView.conditions.filter((c) => propNames.includes(c.name))));\r\n this._currentSorts$.next(cloneDeep(updatedView.sorts.filter((s) => propNames.includes(s.name))));\r\n // this._columns$.next(updatedView.columns);\r\n this._currentDisplayColumns$.next(cloneDeep(updatedView.columns.filter((c) => propNames.includes(c.name))));\r\n this._views$.next(updatedViews);\r\n\r\n //apply conditions and sorts:\r\n this.dataSource.filter({\r\n field: null as any,\r\n logic: 'and',\r\n operator: null as any,\r\n filters: updatedView.conditions.map((c) => ({\r\n field: c.name,\r\n value: c.value,\r\n operator: { type: c.operator },\r\n })) as any,\r\n });\r\n const convertedSortItems: AXDataSourceSortOption[] = updatedView.sorts.map((s) => ({\r\n field: s.name,\r\n dir: s.dir,\r\n }));\r\n this.dataSource.sort(...convertedSortItems);\r\n\r\n this.dataSource.refresh();\r\n }\r\n\r\n createView(newView: AXPEntityListViewConfig): void {\r\n const currentViews = this._views$.getValue();\r\n currentViews.push(newView);\r\n this._views$.next(currentViews);\r\n this.setView(newView.name);\r\n }\r\n updateView(updatedView: AXPEntityListViewConfig): void {\r\n const currentViews = this._views$.getValue().map((view) => (view.name === updatedView.name ? updatedView : view));\r\n this._views$.next(currentViews);\r\n this.setView(updatedView.name);\r\n }\r\n deleteView(viewName: string): void {\r\n const currentViews = this._views$.getValue().filter((view) => view.name !== viewName);\r\n this._views$.next(currentViews);\r\n this.setView(this.views[0].name);\r\n }\r\n\r\n //****************** Columns ******************//\r\n\r\n private _currentDisplayColumns$ = new BehaviorSubject<AXPEntityListDisplayColumnConfig[]>([]);\r\n\r\n private get columns(): AXPEntityListColumnConfig[] {\r\n return this.entity.properties.map((p) => ({\r\n name: p.name,\r\n title: p.title,\r\n schema: p.schema,\r\n }));\r\n }\r\n\r\n private _columns$ = new BehaviorSubject<AXPEntityListColumnConfig[]>(this.columns);\r\n\r\n public get columns$(): Observable<AXPEntityListColumnConfig[]> {\r\n return this._columns$.pipe(defaultIfEmpty([]));\r\n }\r\n\r\n public get displayColumns$(): Observable<AXPEntityListDisplayColumnConfig[]> {\r\n return this._currentDisplayColumns$.pipe(defaultIfEmpty([]));\r\n }\r\n\r\n public get displayColumnsCount$(): Observable<number> {\r\n return this.view$.pipe(\r\n map((view) => {\r\n return view.columns.filter((column) => column.visible).length;\r\n })\r\n );\r\n }\r\n\r\n updateColumns(items: AXPEntityListDisplayColumnConfig[]): void {\r\n this.view$.pipe(first()).subscribe((view) => {\r\n view.columns = cloneDeep(items);\r\n this._views$.next(this._views$.value.map((v) => (v.name === this._currentView ? view : v)));\r\n });\r\n }\r\n\r\n resetColumns(): void {\r\n this.view$.pipe(first()).subscribe((view) => {\r\n this._currentDisplayColumns$.next(cloneDeep(view.columns));\r\n });\r\n }\r\n\r\n setColumnVisibility(name: string, visible: boolean) {\r\n const updatedColumns = this._currentDisplayColumns$.getValue().map((column) => {\r\n if (column.name === name) {\r\n return { ...column, visible };\r\n } else {\r\n return column;\r\n }\r\n });\r\n this._currentDisplayColumns$.next(updatedColumns);\r\n }\r\n\r\n //****************** Sort ******************//\r\n private _currentSorts$ = new BehaviorSubject<AXPEntityListSortConfig[]>([]);\r\n\r\n public get sorts$(): Observable<AXPEntityListSortConfig[]> {\r\n return this._currentSorts$.pipe(defaultIfEmpty([]));\r\n }\r\n\r\n public get sortsCount$(): Observable<number> {\r\n return this.view$.pipe(map((c) => c.sorts.length));\r\n }\r\n\r\n addSort(): void {\r\n this.view$.pipe(first()).subscribe((view) => {\r\n const currentSorts = this._currentSorts$.getValue();\r\n const name = view.columns.find((c) => !currentSorts.some((s) => s.name == c.name))?.name ?? '';\r\n if (name) {\r\n const sorts = [...currentSorts, { name, dir: 'asc' } as AXPEntityListSortConfig];\r\n this._currentSorts$.next(sorts);\r\n }\r\n });\r\n }\r\n\r\n removeSort(item: AXPEntityListSortConfig): void {\r\n const currentSorts = this._currentSorts$.getValue();\r\n const sorts = currentSorts.filter((c) => c != item);\r\n this._currentSorts$.next(sorts);\r\n }\r\n\r\n resetSort(): void {\r\n this.view$.pipe(first()).subscribe((view) => {\r\n this._currentSorts$.next(cloneDeep(view.sorts));\r\n });\r\n }\r\n\r\n updateSort(items: AXPEntityListSortConfig[]): void {\r\n this.view$.pipe(first()).subscribe((view) => {\r\n view.sorts = cloneDeep(items);\r\n this._views$.next(this._views$.value.map((v) => (v.name === this._currentView ? view : v)));\r\n const convertedSortItems: AXDataSourceSortOption[] = items.map((s) => ({\r\n field: s.name,\r\n dir: s.dir,\r\n }));\r\n this.dataSource.sort(...convertedSortItems);\r\n this.dataSource.refresh();\r\n });\r\n }\r\n\r\n //****************** Conditions ******************//\r\n\r\n private _currentConditions$ = new BehaviorSubject<AXPEntityListConditionConfig[]>([]);\r\n\r\n public get conditions$(): Observable<AXPEntityListConditionConfig[]> {\r\n return this._currentConditions$.pipe(defaultIfEmpty([]));\r\n }\r\n public get conditionsCount$(): Observable<number> {\r\n return this.view$.pipe(map((c) => c.conditions.length));\r\n }\r\n\r\n public getInlineFilterTitles(): string[] {\r\n return this._inlineFilterItems.map((item) => item.title);\r\n }\r\n\r\n addCondition(selectedFields: { name: string; opr: any; value?: any }[]): void {\r\n const prevConditions = this._currentConditions$.getValue();\r\n const conditionsMap = new Map(prevConditions.map((item) => [item.name, item]));\r\n\r\n const newFields = selectedFields.map(\r\n (field) => conditionsMap.get(field.name) || { name: field.name, operator: field.opr }\r\n );\r\n this._currentConditions$.next(newFields as AXPEntityListConditionConfig[]);\r\n }\r\n\r\n removeCondition(item: AXPEntityListConditionConfig): void {\r\n const currentConditions = this._currentConditions$.getValue();\r\n const conditions = currentConditions.filter((c) => c != item);\r\n this._currentConditions$.next(conditions);\r\n }\r\n updateConditions(items: AXPEntityListConditionConfig[]): void {\r\n this.view$.pipe(first()).subscribe((view) => {\r\n view.conditions = cloneDeep(items);\r\n this._views$.next(this._views$.value.map((v) => (v.name === this._currentView ? view : v)));\r\n });\r\n this.applyAllConditions();\r\n }\r\n\r\n handleInlineSearch(value: string) {\r\n const inlineConditions: AXPEntityListConditionConfig[] = [];\r\n\r\n this._inlineFilterItems?.forEach((property) => {\r\n if (property?.dataType == 'string' || property?.dataType == 'number') {\r\n inlineConditions.push({\r\n name: property.name,\r\n value: property.dataType == 'number' ? parseFloat(value) : value,\r\n operator: property.dataType == 'string' ? 'contains' : 'equal',\r\n });\r\n }\r\n });\r\n this.view$.pipe(first()).subscribe((view) => {\r\n view.inlineConditions = cloneDeep(inlineConditions);\r\n });\r\n this.applyAllConditions();\r\n }\r\n\r\n applyAllConditions() {\r\n const inlineConditions: AXDataSourceFilterOption = {\r\n field: null as any,\r\n operator: null as any,\r\n logic: 'or',\r\n filters: [],\r\n };\r\n\r\n const mainConditions: AXDataSourceFilterOption = {\r\n field: null as any,\r\n operator: null as any,\r\n logic: 'and',\r\n filters: [],\r\n };\r\n\r\n this.view$.pipe(first()).subscribe((view) => {\r\n if (view.inlineConditions && view.inlineConditions.length) {\r\n view.inlineConditions?.forEach((c) => {\r\n if (c.value) {\r\n inlineConditions.filters?.push({\r\n field: c.name,\r\n operator: { type: c.operator } as any,\r\n value: c.value,\r\n });\r\n }\r\n });\r\n }\r\n if (view.conditions.length) {\r\n view.conditions.forEach((c) => {\r\n mainConditions.filters?.push({\r\n field: c.name,\r\n operator: { type: c.operator } as any,\r\n value: c.value,\r\n });\r\n });\r\n }\r\n this.dataSource.filter({\r\n field: null as any,\r\n logic: 'and',\r\n operator: null as any,\r\n filters: [mainConditions, inlineConditions],\r\n });\r\n this.dataSource.refresh();\r\n this._views$.next(this._views$.value.map((v) => (v.name === this._currentView ? view : v)));\r\n });\r\n }\r\n\r\n resetConditions(): void {\r\n this.view$.pipe(first()).subscribe((view) => {\r\n this._currentConditions$.next(cloneDeep(view.conditions));\r\n });\r\n }\r\n}\r\n\r\nexport const AXP_LISTVIEW_LOADER = new InjectionToken<AXPListViewLoader>('AXP_LISTVIEW_LOADER');\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXPListViewLoaderFactory {\r\n private cache: Map<string, AXPListViewLoader> = new Map();\r\n private entityService = inject(AXPEntityRegistryService);\r\n private schemaService = inject(AXPSchemaRegistryService);\r\n private layout = inject(AXPLayoutService);\r\n\r\n public async create(moduleName: string, entityName: string): Promise<AXPListViewLoader> {\r\n this.layout.setNavigationLoading(true);\r\n const config = await this.entityService.resolve(moduleName, entityName);\r\n let result = this.cache.get(config.name);\r\n if (result) {\r\n this.layout.setNavigationLoading(false);\r\n return result;\r\n }\r\n result = new AXPListViewLoaderDefault(config, this.schemaService);\r\n this.cache.set(config.name, result);\r\n this.layout.setNavigationLoading(false);\r\n return result;\r\n }\r\n}\r\n","import { AXButtonModule } from '@acorex/components/button';\r\nimport { AXDecoratorModule } from '@acorex/components/decorators';\r\nimport { AXDropdownModule } from '@acorex/components/dropdown';\r\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\r\nimport { AXBasePageComponent } from '@acorex/components/page';\r\nimport { AXPAdminLayoutState, AXPCommonWidgetModule, AXPEntityConfig, AXPEntityPropertyConfig, AXPEntityViewRootSectionConfig, AXPSchemaModule } from '@acorex/platform/common';\r\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, inject } from '@angular/core';\r\nimport { Actions } from '@ngrx/effects';\r\nimport { Store } from '@ngrx/store';\r\n\r\n@Component({\r\n templateUrl: 'entity-quick-view.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [CommonModule, AXPSchemaModule, AXPCommonWidgetModule, AXDecoratorModule, AXButtonModule, AXDropdownModule, AXDropdownButtonModule],\r\n})\r\nexport class AXPEntityQuickViewComponent extends AXBasePageComponent {\r\n private entity!: AXPEntityConfig;\r\n protected root!: AXPEntityViewRootSectionConfig;\r\n private store = inject(Store<AXPAdminLayoutState>);\r\n private workflow = inject(AXPWorkflowService);\r\n\r\n protected canDelete = false;\r\n protected canCreate = false;\r\n protected canUpdate = false;\r\n\r\n protected data: any;\r\n\r\n /**\r\n *\r\n */\r\n constructor(private actions$: Actions) {\r\n super();\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n //\r\n if (this.entity.views.quickView) {\r\n this.root = this.entity.views.quickView?.root;\r\n this.canDelete = this.entity.editOptions?.delete ?? true;\r\n this.canCreate = this.entity.editOptions?.create ?? true;\r\n this.canUpdate = this.entity.editOptions?.update ?? true;\r\n }\r\n }\r\n\r\n protected getProperties(names: string[]): AXPEntityPropertyConfig[] {\r\n return this.entity.properties.filter((c) => names.includes(c.name));\r\n }\r\n\r\n handleCloseClick() {\r\n this.close();\r\n }\r\n\r\n protected handleCommandClick(command: string) {\r\n switch (command) {\r\n case 'delete':\r\n this.workflow.execute('delete-entity', {\r\n module: this.entity.module,\r\n entity: this.entity.name,\r\n ids: [this.data.id],\r\n });\r\n this.close();\r\n break;\r\n case 'details':\r\n this.workflow.execute('show-details', {\r\n payload: {\r\n module: this.entity.module,\r\n entity: this.entity.name,\r\n },\r\n id: this.data.id,\r\n });\r\n this.close();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","<div class=\"ax-flex ax-flex-col ax-gap-6 ax-p-4\">\r\n <div class=\"ax-flex ax-flex-col ax-gap-2\" *ngIf=\"root.properties?.length\">\r\n <div *ngFor=\"let p of getProperties(root.properties)\"\r\n class=\"ax-flex ax-p-4 odd:ax-bg-on-surface odd:ax-border-t odd:ax-border-b\">\r\n <div class=\"ax-min-w-[10rem] ax-text-gray-500\">\r\n <span>{{ p.title }}</span>\r\n </div>\r\n <div class=\"ax-min-w-[30rem]\">\r\n <axp-widget-renderer [schema]=\"p.schema\" [context]=\"data\" [prop]=\"p\"></axp-widget-renderer>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let s of root.sections\"\r\n class=\"ax-flex ax-flex-col ax-pb-3 last-of-type:ax-border-none last-of-type:ax-pb-3\">\r\n <div class=\"ax-pb-4\">\r\n <span class=\"ax-font-bold\">{{ s.title }}</span>\r\n </div>\r\n <div class=\"ax-flex ax-flex-col\">\r\n <div *ngFor=\"let p of getProperties(s.properties)\"\r\n class=\"ax-flex ax-flex-col md:ax-flex-row ax-p-3 odd:ax-bg-on-surface odd:ax-border-t odd:ax-border-b\">\r\n @if (s.options?.showPropTitle!=false) {\r\n <div class=\"ax-min-w-[10rem] ax-text-neutral-500 dark:ax-text-neutral-300 ax-mb-2 md:ax-mb-0\">\r\n <span>{{ p.title }}</span>\r\n </div>\r\n }\r\n <div class=\"md:ax-min-w-[30rem]\">\r\n <axp-widget-renderer [schema]=\"p.schema\" [context]=\"data\" [prop]=\"p\" [mode]=\"'view'\"></axp-widget-renderer>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ax-footer>\r\n <ax-prefix> </ax-prefix>\r\n <ax-suffix>\r\n <ax-dropdown-button text=\"Close\" (onClick)=\"handleCloseClick()\">\r\n <ax-button-item-list>\r\n <ax-button-item text=\"View Details\" (onClick)=\"handleCommandClick('details')\">\r\n <ax-prefix>\r\n <ax-icon icon=\"fa-solid fa-info-circle\"></ax-icon>\r\n </ax-prefix>\r\n </ax-button-item>\r\n @if(canDelete)\r\n {\r\n <ax-button-item class=\"ax-text-danger\" text=\"Delete\" (onClick)=\"handleCommandClick('delete')\">\r\n <ax-prefix> <ax-icon icon=\"fas fa-trash fa-flip-horizontal\"></ax-icon> </ax-prefix></ax-button-item>\r\n }\r\n </ax-button-item-list>\r\n </ax-dropdown-button>\r\n </ax-suffix>\r\n</ax-footer>","import { Injectable, inject } from '@angular/core';\r\nimport { cloneDeep } from 'lodash-es';\r\n\r\nimport { AXPLayoutService } from '@acorex/platform/common';\r\nimport { AXPEntityConfig, AXPEntityPropertyConfig, AXPEntityRegistryService, AXPEntityViewConfig } from '@acorex/platform/common';\r\n\r\nexport interface AXPEntityModifyViewLoader {\r\n get entity(): AXPEntityConfig;\r\n get data(): any;\r\n get section(): any;\r\n\r\n getProp(name: string): AXPEntityPropertyConfig | undefined;\r\n update(values: any): Promise<any>;\r\n}\r\n\r\nexport class AXPEntityModifyLoaderDefault implements AXPEntityModifyViewLoader {\r\n private _config!: AXPEntityConfig;\r\n private _data: any = {};\r\n private _currentSection: any;\r\n\r\n constructor(private config: AXPEntityConfig, private selectedData: any, private selectedSection: any) {\r\n this._data = this.selectedData;\r\n this._currentSection = this.selectedSection;\r\n }\r\n\r\n get entity(): AXPEntityConfig {\r\n if (!this._config) {\r\n this._config = cloneDeep(this.config);\r\n }\r\n return this._config;\r\n }\r\n\r\n get data(): any {\r\n return this._data;\r\n }\r\n get section(): any {\r\n return this._currentSection;\r\n }\r\n\r\n private get view(): AXPEntityViewConfig {\r\n return this.entity.views.detailView as AXPEntityViewConfig;\r\n }\r\n\r\n //****************** Properties ******************//\r\n public getProp = (name: string): AXPEntityPropertyConfig | undefined => this.entity.properties.find((c) => c.name == name);\r\n\r\n //****************** update ******************//\r\n public async update(values: any): Promise<any> {\r\n if (this._config.commands?.update) {\r\n const updated = await this._config.commands?.update(this._data.id, values);\r\n Object.assign(this._data, updated);\r\n return Promise.resolve();\r\n } else {\r\n return Promise.reject(`There is not any update commands for '${this.config.name}'`);\r\n }\r\n }\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXPEntityModifyViewLoaderFactory {\r\n private entityService = inject(AXPEntityRegistryService);\r\n private layout = inject(AXPLayoutService);\r\n\r\n public async create(\r\n moduleName: string,\r\n entityName: string,\r\n id: string,\r\n section: any\r\n ): Promise<AXPEntityModifyViewLoader> {\r\n this.layout.setNavigationLoading(true);\r\n const config = await this.entityService.resolve(moduleName, entityName);\r\n if (config.dataSource.byKey) {\r\n const data = await config.dataSource.byKey(id);\r\n this.layout.setNavigationLoading(false);\r\n return new AXPEntityModifyLoaderDefault(config, data, section);\r\n }\r\n this.layout.setNavigationLoading(false);\r\n return Promise.reject('cannot fetch ');\r\n }\r\n}\r\n","import { AXPopupService } from '@acorex/components/popup';\r\nimport { AXPlatform } from '@acorex/core/platform';\r\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext, createWorkFlowEvent } from '@acorex/platform/workflow';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { cloneDeep } from 'lodash-es';\r\nimport { AXPEntityModifyViewLoaderFactory } from '../entity-modify-view/entity-modify-view.config';\r\nimport { AXPEntityRegistryService } from '@acorex/platform/common';\r\n\r\nexport const AXPEntityModifyEvent = createWorkFlowEvent<{ module: string; entity: string; updateValues: any }>(\r\n '[Entity] Modified'\r\n);\r\n@Injectable()\r\nexport class AXPEntityModifyPopupAction extends AXPWorkflowAction {\r\n private popupService = inject(AXPopupService);\r\n private platform = inject(AXPlatform);\r\n private entityRegistery = inject(AXPEntityRegistryService);\r\n private entityCreateFactory = inject(AXPEntityModifyViewLoaderFactory);\r\n\r\n async execute(context: AXPWorkflowContext): Promise<void> {\r\n const payload = context.getVariable('payload');\r\n const { module, entity: entityName, section, id } = payload;\r\n const entity = await this.entityRegistery.resolve(module, entityName);\r\n const loader = await this.entityCreateFactory.create(module, entityName, id, section);\r\n\r\n const com = await import('../entity-modify-view/entity-modify-view.component');\r\n const popup = await this.popupService.open(com.AXPEntityModifyViewComponent, {\r\n title: `Modify ${payload.section.title}`,\r\n size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',\r\n data: {\r\n context: loader.data,\r\n loader: loader,\r\n properties: payload.section.properties,\r\n entity,\r\n },\r\n });\r\n context.setOutput('popupResult', false);\r\n if (popup.data?.result == true) {\r\n context.setOutput('popupResult', true);\r\n context.setVariable('updatedData', cloneDeep(popup.data.context));\r\n }\r\n }\r\n}\r\n\r\nexport class AXPEntityModifyConfirmedAction extends AXPWorkflowAction {\r\n private entityRegistery = inject(AXPEntityRegistryService);\r\n\r\n async execute(context: AXPWorkflowContext): Promise<void> {\r\n const payload = context.getVariable('payload');\r\n const updatedData = context.getVariable('updatedData');\r\n const entity = await this.entityRegistery.resolve(payload.module, payload.entity);\r\n this.dispatch(AXPEntityModifyEvent({ module: entity.module, entity: entity.name, updateValues: updatedData }));\r\n }\r\n}\r\n\r\nexport const AXPModifyEntityWorkflow: AXPWorkflow = {\r\n startStepId: 'modifyPopup',\r\n steps: {\r\n modifyPopup: {\r\n id: 'modifyPopup',\r\n action: 'AXPEntityModifyPopupAction',\r\n nextSteps: [\r\n {\r\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"popupResult\") == true' }],\r\n nextStepId: 'successToast',\r\n },\r\n ],\r\n },\r\n successToast: {\r\n id: 'successToast',\r\n action: 'AXPToastAction',\r\n input: {\r\n color: 'success',\r\n title: 'Entity Modified',\r\n content: 'Record has been successfully updated.',\r\n },\r\n nextSteps: [\r\n {\r\n conditions: [],\r\n nextStepId: 'modifyConfirmed',\r\n },\r\n ],\r\n },\r\n modifyConfirmed: {\r\n id: 'modifyConfirmed',\r\n action: 'AXPEntityModifyConfirmedAction',\r\n nextSteps: [\r\n {\r\n conditions: [],\r\n nextStepId: '',\r\n },\r\n ],\r\n },\r\n },\r\n};\r\n","import { AXPopupService } from '@acorex/components/popup';\r\nimport { AXFormatService } from '@acorex/core/format';\r\nimport { AXPlatform } from '@acorex/core/platform';\r\nimport { AXPEntityRegistryService } from '@acorex/platform/common';\r\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from '@acorex/platform/workflow';\r\nimport { Injectable, inject } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class AXPShowQuickViewAction extends AXPWorkflowAction {\r\n private entityRegistery = inject(AXPEntityRegistryService);\r\n private formatService = inject(AXFormatService);\r\n private popupService = inject(AXPopupService);\r\n private platform = inject(AXPlatform);\r\n\r\n async execute(context: AXPWorkflowContext): Promise<void> {\r\n const payload = context.getVariable('payload');\r\n\r\n const entity = await this.entityRegistery.resolve(payload.module, payload.entity);\r\n const suggestedProps = entity.properties.find((c) => ['title', 'name', 'code'].includes(c.name));\r\n let suggestedFormat = 'Item #{{id}}';\r\n if (suggestedProps) suggestedFormat = `{{${suggestedProps.name}}}`;\r\n const title = this.formatService.format(entity.formats?.header ?? entity.formats?.default ?? suggestedFormat, 'string', payload.data);\r\n //\r\n const com = await import('../entity-quick-view/entity-quick-view.component');\r\n this.popupService.open(com.AXPEntityQuickViewComponent, {\r\n title: `${title} - Quick View`,\r\n size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',\r\n data: {\r\n entity: entity,\r\n data: payload.data,\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport const AXPShowQuickViewWorkflow: AXPWorkflow = {\r\n startStepId: 'showQuickView',\r\n steps: {\r\n showQuickView: {\r\n id: 'showQuickView',\r\n action: 'AXPShowQuickViewAction',\r\n },\r\n },\r\n};\r\n","import { AXPSessionService } from '@acorex/platform/auth';\r\nimport { AXPWorkflowNavigateAction } from '@acorex/platform/common';\r\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from '@acorex/platform/workflow';\r\nimport { Injectable, inject } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class AXPShowDetailViewAction extends AXPWorkflowAction {\r\n private navigation = inject(AXPWorkflowNavigateAction);\r\n private sessionService = inject(AXPSessionService);\r\n\r\n async execute(context: AXPWorkflowContext): Promise<void> {\r\n const payload = context.getVariable('payload');\r\n const id = context.getVariable('id');\r\n const newPayload = {\r\n commands: `/${this.sessionService.application?.name}/${payload.module}/e/${payload.entity}/${id}/view`,\r\n };\r\n context.setVariable('payload', newPayload);\r\n this.navigation.execute(context);\r\n }\r\n}\r\n\r\n\r\nexport const AXPShowDetailsViewWorkflow: AXPWorkflow = {\r\n startStepId: 'showDetailView',\r\n steps: {\r\n showDetailView: {\r\n id: 'showDetailView',\r\n action: 'AXPShowDetailViewAction',\r\n },\r\n },\r\n};\r\n","import { AXPSessionService } from '@acorex/platform/auth';\r\nimport { AXPWorkflowNavigateAction } from '@acorex/platform/common';\r\nimport { AXPWorkflow, AXPWorkflowAction } from '@acorex/platform/workflow';\r\nimport { Injectable, inject } from '@angular/core';\r\n\r\n\r\n@Injectable()\r\nexport class AXPShowListViewAction extends AXPWorkflowAction {\r\n private navigation = inject(AXPWorkflowNavigateAction);\r\n private sessionService = inject(AXPSessionService);\r\n async execute(context?: any): Promise<void> {\r\n const payload = context.getVariable('payload');\r\n const newPayload = {\r\n commands: `/${this.sessionService.application?.name}/${payload.entity.module}/e/${payload.entity}/list`,\r\n };\r\n context.setVariable('payload', newPayload);\r\n this.navigation.execute(context);\r\n }\r\n}\r\n\r\nexport const AXPShowListViewWorkflow: AXPWorkflow = {\r\n startStepId: 'showListView',\r\n steps: {\r\n showListView: {\r\n id: 'showListView',\r\n action: 'AXPShowListViewAction',\r\n },\r\n },\r\n};\r\n","import { AXActionSheetModule } from '@acorex/components/action-sheet';\r\nimport { AXBadgeModule } from '@acorex/components/badge';\r\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\r\nimport { AXButtonModule } from '@acorex/components/button';\r\nimport { AXHtmlEvent } from '@acorex/components/common';\r\nimport { AXDecoratorModule } from '@acorex/components/decorators';\r\nimport { AXDialogModule } from '@acorex/components/dialog';\r\nimport { AXDrawerComponent, AXDrawerModule } from '@acorex/components/drawer';\r\nimport { AXDropdownModule } from '@acorex/components/dropdown';\r\nimport { AXFormModule } from '@acorex/components/form';\r\nimport { AXImageModule } from '@acorex/components/image';\r\nimport { AXLoadingModule } from '@acorex/components/loading';\r\nimport { AXPopoverModule } from '@acorex/components/popover';\r\nimport { AXPopupService } from '@acorex/components/popup';\r\nimport { AXSwitchModule } from '@acorex/components/switch';\r\nimport { AXTabsModule } from '@acorex/components/tabs';\r\nimport { AXTooltipModule } from '@acorex/components/tooltip';\r\nimport { AXPlatform } from '@acorex/core/platform';\r\nimport { AXUnsubscriber } from '@acorex/core/utils';\r\nimport { AXPSessionService } from '@acorex/platform/auth';\r\nimport { AXPAdminLayoutState, AXPLayoutChildDrawerClose, AXPLayoutChildDrawerToggle, AXPStickyDirective, getChildDrawer, isSmallScreen } from '@acorex/platform/common';\r\nimport { AXPCommonWidgetModule, AXPEntityViewChildSectionConfig, AXPSchemaModule } from '@acorex/platform/common';\r\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\r\nimport { CommonModule, Location } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewChild, WritableSignal, inject, signal } from '@angular/core';\r\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\r\nimport { Actions, ofType } from '@ngrx/effects';\r\nimport { Store } from '@ngrx/store';\r\nimport { cloneDeep } from 'lodash-es';\r\nimport { first } from 'rxjs';\r\nimport { AXPEntityDetailViewLoader } from './detail-view.config';\r\nimport { AXPEntityDeletedEvent, AXPEntityModifyEvent } from '../workflows';\r\n@Component({\r\n templateUrl: './entity-details-view.component.html',\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n AXButtonModule,\r\n AXDecoratorModule,\r\n AXBadgeModule,\r\n AXDropdownModule,\r\n AXPopoverModule,\r\n AXFormModule,\r\n AXImageModule,\r\n AXActionSheetModule,\r\n AXSwitchModule,\r\n AXDrawerModule,\r\n AXDialogModule,\r\n AXLoadingModule,\r\n AXTabsModule,\r\n AXBadgeModule,\r\n AXButtonModule,\r\n AXSwitchModule,\r\n AXPSchemaModule,\r\n AXTooltipModule,\r\n AXBreadcrumbsModule,\r\n //\r\n AXPCommonWidgetModule,\r\n AXPStickyDirective,\r\n ],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [AXUnsubscriber],\r\n})\r\nexport class AXPEntityDetailsViewComponent {\r\n private popupService = inject(AXPopupService);\r\n private sessionService = inject(AXPSessionService);\r\n private activeRoute = inject(ActivatedRoute);\r\n private router = inject(Router);\r\n private location = inject(Location);\r\n private cdr = inject(ChangeDetectorRef);\r\n private platform = inject(AXPlatform);\r\n private workflow = inject(AXPWorkflowService);\r\n\r\n protected loader = this.activeRoute.snapshot.data['loader'] as AXPEntityDetailViewLoader;\r\n\r\n @ViewChild('drawer') drawer!: AXDrawerComponent;\r\n\r\n private store = inject(Store<AXPAdminLayoutState>);\r\n protected isSM = this.store.select(isSmallScreen());\r\n protected isOpen = this.store.select(getChildDrawer());\r\n //\r\n protected canDelete = this.loader.entity.editOptions?.delete ?? true;\r\n protected canCreate = this.loader.entity.editOptions?.create ?? true;\r\n protected canUpdate = this.loader.entity.editOptions?.update ?? true;\r\n //\r\n\r\n\r\n protected context: WritableSignal<any> = signal(cloneDeep(this.loader.data));\r\n\r\n constructor(private actions$: Actions, private unsubscriber: AXUnsubscriber) {\r\n this.activeRoute.paramMap.pipe(first()).subscribe((c) => {\r\n this.setSection(c.get('section') as string);\r\n });\r\n //\r\n this.workflow.events$.pipe(ofType(AXPEntityDeletedEvent), this.unsubscriber.takeUntilDestroy).subscribe((event) => {\r\n if (\r\n event.payload.entity == this.loader.entity.name &&\r\n event.payload.module == this.loader.entity.module &&\r\n event.payload.id.includes(this.loader.data.id)\r\n ) {\r\n this.workflow.execute('show-list-view', {\r\n payload: {\r\n module: this.loader.entity.module,\r\n entity: this.loader.entity.name,\r\n },\r\n });\r\n }\r\n });\r\n this.workflow.events$.pipe(ofType(AXPEntityModifyEvent), this.unsubscriber.takeUntilDestroy).subscribe(async (event) => {\r\n if (\r\n event.payload.entity == this.loader.entity.name &&\r\n event.payload.module == this.loader.entity.module &&\r\n event.payload.updateValues.id === this.loader.data.id\r\n ) {\r\n await this.loader.update(event.payload.updateValues);\r\n this.context.set(cloneDeep(this.loader.data));\r\n }\r\n });\r\n }\r\n\r\n protected handleMenuClick(e: AXHtmlEvent, item: AXPEntityViewChildSectionConfig) {\r\n const entity = this.loader.entity;\r\n const path = `/${this.sessionService.application?.name}/${entity.module}/e/${entity.name}/${this.loader.data?.id}/view/${item.name}`;\r\n this.location.go(path);\r\n this.setSection(item.name);\r\n }\r\n\r\n protected handleCollapsedChange(value: boolean) {\r\n if (value) this.store.dispatch(AXPLayoutChildDrawerClose());\r\n }\r\n\r\n protected handleDrawerClick() {\r\n this.store.dispatch(AXPLayoutChildDrawerToggle());\r\n }\r\n\r\n private setSection(name: string) {\r\n this.loader.setSection(name);\r\n }\r\n\r\n protected async handleSectionEdit(section: AXPEntityViewChildSectionConfig) {\r\n this.workflow.execute('modify-entity', {\r\n payload: {\r\n module: this.loader.entity.module,\r\n entity: this.loader.entity.name,\r\n id: this.loader.data.id,\r\n section: section,\r\n },\r\n });\r\n }\r\n\r\n protected isActive(item: AXPEntityViewChildSectionConfig) {\r\n return item.name == window.location.pathname.split('/').pop();\r\n }\r\n\r\n protected handleCommandClick(command: string) {\r\n switch (command) {\r\n case 'delete':\r\n this.workflow.execute('delete-entity', {\r\n module: this.loader.entity.module,\r\n entity: this.loader.entity.name,\r\n ids: [this.loader.data.id],\r\n });\r\n break;\r\n case 'create': {\r\n this.workflow.execute('create-entity', {\r\n payload: {\r\n module: this.loader.entity.module,\r\n entity: this.loader.entity.name,\r\n },\r\n });\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","<ax-drawer-container>\r\n <!-- <ax-drawer #drawer location=\"start\" [collapsed]=\"!(isOpen | async)\" [mode]=\" (isSM | async) ? 'overlay' : 'push'\"\r\n *ngIf=\"loader.hasSections$ | async\" (collapsedChange)=\"handleCollapsedChange($event)\">\r\n <ax-content class=\"ax-border-e ax-p-6 ax-w-64\">\r\n <p class=\"ax-text-xl ax-font-bold ax-mb-6\">{{loader.sectionTitle}}</p>\r\n <ax-tabs look=\"with-line\" location=\"start\">\r\n @for(tab of (loader.sections$ | async); track tab.name)\r\n {\r\n <ax-tab-item [text]=\"tab.title\" [active]=\"isActive(tab)\" (onClick)=\"handleMenuClick($event,tab)\"\r\n [disabled]=\"editForm.context\">\r\n </ax-tab-item>\r\n }\r\n </ax-tabs>\r\n </ax-content>\r\n </ax-drawer> -->\r\n <ax-content #content class=\"ax-overflow-x-hidden\">\r\n <div\r\n class=\"ax-flex ax-flex-col ax-gap-4 ax-min-h-full ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\">\r\n <div class=\"ax-flex ax-flex-col ax-pt-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\" #sticky=\"axpSticky\"\r\n [axpSticky]=\"'ax-bg-surface ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\" [stickyParent]=\"content.getHostElement()\">\r\n <!-------- Begin Toolbar -------->\r\n <div class=\"ax-flex ax-justify-between ax-items-center\">\r\n <!-------- Begin Title -------->\r\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\r\n <!-- <ax-button class=\"lg:ax-hidden\">\r\n <ax-icon class=\"fa-solid fa-chevron-left\"></ax-icon>\r\n </ax-button> -->\r\n <div class=\"ax-flex ax-flex-col ax-gap-2\">\r\n <div class=\"ax-text-xl md:ax-text-3xl ax-font-bold\">{{ loader.title }}</div>\r\n <!-- <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\">\r\n <ng-template #divider>\r\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\r\n </ng-template>\r\n <ax-breadcrumbs-item>\r\n <a>Home</a>\r\n </ax-breadcrumbs-item>\r\n <ax-breadcrumbs-item>\r\n <a>{{ loader.entity.title }}</a>\r\n </ax-breadcrumbs-item>\r\n <ax-breadcrumbs-item [active]=\"true\" class=\"!ax-font-semibold !ax-text-neutral-600\">\r\n {{ loader.title }}\r\n </ax-breadcrumbs-item>\r\n </ax-breadcrumbs> -->\r\n </div>\r\n </div>\r\n <!-------- Finish Title -------->\r\n <!--------------------------------------------------------------->\r\n <!-- Begin Action Menu -->\r\n <div class=\"ax-flex ax-items-center ax-gap-3\">\r\n @if(canCreate || canUpdate) {\r\n <ax-button [text]=\"(isSM | async) ? null : 'Actions'\" color=\"ghost\">\r\n <ax-prefix>\r\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\r\n </ax-prefix>\r\n <ax-dropdown-panel>\r\n <ax-button-item-list>\r\n <!-- <ax-button-item text=\"Share\" class=\"ax-font-semibold\">\r\n <ax-prefix>\r\n <ax-icon icon=\"fa-solid fa-share\"> </ax-icon>\r\n </ax-prefix>\r\n </ax-button-item> \r\n <ax-divider></ax-divider>-->\r\n @if(canCreate) {\r\n <ax-button-item text=\"Create New One\" class=\"ax-font-semibold ax-text-primary\"\r\n (onClick)=\"handleCommandClick('create')\">\r\n <ax-prefix>\r\n <ax-icon icon=\"fa-solid fa-add\"> </ax-icon>\r\n </ax-prefix>\r\n </ax-button-item>\r\n } @if(canDelete) {\r\n <ax-button-item text=\"Delete\" class=\"ax-font-semibold ax-text-danger\"\r\n (onClick)=\"handleCommandClick('delete')\">\r\n <ax-prefix>\r\n <ax-icon icon=\"fa-solid fa-trash\"> </ax-icon>\r\n </ax-prefix>\r\n </ax-button-item>\r\n }\r\n </ax-button-item-list>\r\n </ax-dropdown-panel>\r\n </ax-button>\r\n }\r\n </div>\r\n <!-- Finish Action Menu -->\r\n </div>\r\n <!----- Finish Toolbar ----->\r\n <!--------------------------------------------------------------->\r\n <!-- Begin Section Tab Items -->\r\n @if((loader.hasSections$| async)) {\r\n <ax-tabs look=\"with-line\" location=\"bottom\" class=\"ax-mt-2\">\r\n @for(tab of (loader.sections$ | async); track tab.name) {\r\n <ax-tab-item [text]=\"tab.title\" [active]=\"isActive(tab)\" (onClick)=\"handleMenuClick($event, tab)\"\r\n class=\"first:!ax-ms-0\"> </ax-tab-item>\r\n }\r\n </ax-tabs>\r\n }\r\n <!-- Finish Section Tab Items -->\r\n </div>\r\n @for(section of (loader.section$ | async)?.sections; track section.name) {\r\n <ax-form #form>\r\n <div class=\"ax-card ax-shadow-md\">\r\n <div class=\"ax-card-header\">\r\n <p>{{ section.title }}</p>\r\n @if(canUpdate) {\r\n <ax-button text=\"Modify\" class=\"ax-sm\" color=\"primary\" (onClick)=\"handleSectionEdit(section)\">\r\n <ax-icon class=\"fa-solid fa-pen\"> </ax-icon>\r\n </ax-button>\r\n }\r\n </div>\r\n <div class=\"ax-card-body ax-divide-y ax-divide-gray-100 dark:ax-divide-gray-700 !ax-gap-0\">\r\n <ng-container *ngFor=\"let name of section.properties\">\r\n <ng-container *ngIf=\"loader.getProp(name) as prop\">\r\n <div class=\"ax-grid md:ax-grid-cols-12 ax-gap-2 ax-py-4 first:ax-pt-0 last:ax-pb-0\">\r\n @if(section.options?.showPropTitle!=false){\r\n <div\r\n class=\"ax-col-span-12 md:ax-col-span-3 lg:ax-col-span-2 ax-flex ax-items-center md:ax-items-start ax-justify-between\">\r\n <div class=\"ax-flex ax-flex-col ax-items-start\">\r\n <span class=\"ax-font-semibold\">{{ prop.title }}</span>\r\n <!-- @if(prop.description) {\r\n <i\r\n class=\"fa-solid fa-circle-info fa-sm ax-text-neutral-500 dark:ax-text-neutral-400 ax-cursor-pointer\"\r\n [axTooltip]=\"prop.description\"\r\n [axTooltipPlacement]=\"'end'\"\r\n ></i>\r\n } -->\r\n @if(prop.description) {\r\n <span class=\"ax-text-neutral-500 ax-text-xs\">{{ prop.description }}</span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n <div\r\n [class]=\"section.options?.showPropTitle == false ? 'ax-col-span-12' : 'ax-col-span-12 md:ax-col-span-9 lg:ax-col-span-10'\">\r\n <axp-widget-renderer [schema]=\"prop.schema\" [context]=\"context()\" [prop]=\"prop\"\r\n [mode]=\"'view'\"></axp-widget-renderer>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ax-form>\r\n }\r\n </div>\r\n </ax-content>\r\n</ax-drawer-container>","import { AXFormatService } from '@acorex/core/format';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\nimport { assign, cloneDeep } from 'lodash-es';\r\nimport { BehaviorSubject, Observable, defaultIfEmpty, map, of, switchMap } from 'rxjs';\r\n\r\nimport { AXPLayoutService } from '@acorex/platform/common';\r\nimport { AXPEntityConfig, AXPEntityPropertyConfig, AXPEntityRegistryService, AXPEntityViewChildSectionConfig, AXPEntityViewConfig } from '@acorex/platform/common';\r\n\r\nexport interface AXPEntityDetailViewLoader {\r\n get entity(): AXPEntityConfig;\r\n get data(): any;\r\n get title(): string;\r\n\r\n get sectionTitle(): string;\r\n get sections$(): Observable<AXPEntityViewChildSectionConfig[]>;\r\n get hasSections$(): Observable<boolean>;\r\n get section$(): Observable<AXPEntityViewChildSectionConfig>;\r\n setSection(name: string): void;\r\n\r\n getProp(name: string): AXPEntityPropertyConfig | undefined;\r\n update(values: any): Promise<any>;\r\n}\r\n\r\nexport class AXPEntityDetailLoaderDefault implements AXPEntityDetailViewLoader {\r\n private _config!: AXPEntityConfig;\r\n private _currentSection = 'default';\r\n\r\n constructor(\r\n private config: AXPEntityConfig,\r\n private store: Store,\r\n private entityData: any,\r\n private formatService: AXFormatService\r\n ) { }\r\n\r\n get entity(): AXPEntityConfig {\r\n if (!this._config) {\r\n this._config = cloneDeep(this.config);\r\n }\r\n return this._config;\r\n }\r\n\r\n get data(): any {\r\n return this.entityData;\r\n }\r\n\r\n private get view(): AXPEntityViewConfig {\r\n return (this.entity.views.detailView ?? this.entity.views.quickView) as AXPEntityViewConfig;\r\n }\r\n\r\n //****************** Titles ******************//\r\n get title(): string {\r\n const suggestedProps = this.entity.properties.find((c) => ['title', 'name', 'code'].includes(c.name));\r\n let suggestedFormat = 'Item #{{id}}';\r\n if (suggestedProps) suggestedFormat = `{{${suggestedProps.name}}}`;\r\n const title = this.formatService.format(\r\n this.entity.formats?.header ?? this.entity.formats?.default ?? suggestedFormat,\r\n 'string',\r\n this.data\r\n );\r\n return title;\r\n }\r\n\r\n get sectionTitle(): string {\r\n return `${this.entity.title}`;\r\n }\r\n\r\n //****************** Sections ******************//\r\n\r\n private get sections(): AXPEntityViewChildSectionConfig[] {\r\n return this.view.root.sections?.length\r\n ? this.view.root.sections\r\n : [\r\n {\r\n name: 'default',\r\n title: 'Default',\r\n properties: this.view.root.properties,\r\n },\r\n ];\r\n }\r\n\r\n private _sections$ = new BehaviorSubject<AXPEntityViewChildSectionConfig[]>(this.sections);\r\n\r\n public get sections$(): Observable<AXPEntityViewChildSectionConfig[]> {\r\n return this._sections$.pipe(defaultIfEmpty([]));\r\n }\r\n\r\n public get section$(): Observable<AXPEntityViewChildSectionConfig> {\r\n return this.sections$.pipe(\r\n switchMap((sections) => {\r\n const section = sections.find((c) => c.name === this._currentSection) ?? this.sections[0];\r\n if (!section.sections?.length) {\r\n section.sections = [\r\n {\r\n name: 'default',\r\n title: 'Details',\r\n properties: section.properties,\r\n },\r\n ];\r\n }\r\n return of(section);\r\n })\r\n );\r\n }\r\n\r\n public get hasSections$(): Observable<boolean> {\r\n return this.sections$.pipe(map((c) => c.length > 1));\r\n }\r\n\r\n public setSection(name: string) {\r\n this._currentSection = name ?? 'default';\r\n const updatedSection = this.sections.find((c) => c.name === this._currentSection) || {\r\n name: 'default',\r\n title: 'Default',\r\n properties: this.view.root.properties,\r\n };\r\n const currentSections = this._sections$.value;\r\n const updatedSections = currentSections.map((section) => {\r\n if (section.name === updatedSection.name) {\r\n return updatedSection;\r\n } else {\r\n return section;\r\n }\r\n });\r\n this._sections$.next(updatedSections);\r\n }\r\n\r\n //****************** Properties ******************//\r\n public getProp = (name: string): AXPEntityPropertyConfig | undefined => this.entity.properties.find((c) => c.name == name);\r\n\r\n //****************** Update ******************//\r\n public async update(values: any): Promise<any> {\r\n assign(this.data, values);\r\n this.setSection(this._currentSection);\r\n }\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXPEntityDetailViewLoaderFactory {\r\n private entityService = inject(AXPEntityRegistryService);\r\n private formatService = inject(AXFormatService);\r\n private layout = inject(AXPLayoutService);\r\n private store = inject(Store);\r\n\r\n public async create(moduleName: string, entityName: string, id: string): Promise<AXPEntityDetailViewLoader> {\r\n const config = await this.entityService.resolve(moduleName, entityName);\r\n this.layout.setNavigationLoading(true);\r\n if (config.dataSource.byKey) {\r\n const data = await config.dataSource.byKey(id);\r\n this.layout.setNavigationLoading(false);\r\n return new AXPEntityDetailLoaderDefault(config, this.store, data, this.formatService);\r\n }\r\n this.layout.setNavigationLoading(false);\r\n return Promise.reject('cannot fetch ');\r\n }\r\n}\r\n","import { ActivatedRouteSnapshot, RouteReuseStrategy, DetachedRouteHandle } from '@angular/router';\r\nimport { AXPEntityDetailsViewComponent, AXPEntityListViewComponent } from './entity-layout';\r\n\r\n\r\nexport class AXPCustomReuseStrategy implements RouteReuseStrategy {\r\n shouldDetach(route: ActivatedRouteSnapshot): boolean {\r\n return false;\r\n }\r\n\r\n store(route: ActivatedRouteSnapshot, detachedTree: DetachedRouteHandle): void { }\r\n\r\n shouldAttach(route: ActivatedRouteSnapshot): boolean {\r\n return false;\r\n }\r\n\r\n retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null {\r\n return null;\r\n }\r\n\r\n shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\r\n if (future.component === AXPEntityListViewComponent || future.component === AXPEntityDetailsViewComponent) {\r\n return false;\r\n }\r\n\r\n return future.routeConfig === curr.routeConfig;\r\n }\r\n}\r\n","import { AXPopupService } from '@acorex/components/popup';\r\nimport { AXPlatform } from '@acorex/core/platform';\r\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext, createWorkFlowEvent } from '@acorex/platform/workflow';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { cloneDeep } from 'lodash-es';\r\nimport { AXPEntityModifyViewLoaderFactory } from '../entity-modify-view/entity-modify-view.config';\r\nimport { AXPEntityRegistryService } from '@acorex/platform/common';\r\n\r\n\r\n@Injectable()\r\nexport class AXPEntityModifySectionPopupAction extends AXPWorkflowAction {\r\n private popupService = inject(AXPopupService);\r\n private platform = inject(AXPlatform);\r\n private entityRegistery = inject(AXPEntityRegistryService);\r\n private entityCreateFactory = inject(AXPEntityModifyViewLoaderFactory);\r\n\r\n async execute(context: AXPWorkflowContext): Promise<void> {\r\n const payload = context.getVariable('payload');\r\n const { module, entity: entityName, section, id } = payload;\r\n const entity = await this.entityRegistery.resolve(module, entityName);\r\n const loader = await this.entityCreateFactory.create(module, entityName, id, section);\r\n\r\n const com = await import('../entity-modify-view/entity-modify-view.component');\r\n const popup = await this.popupService.open(com.AXPEntityModifyViewComponent, {\r\n title: `Modify ${payload.section.title}`,\r\n size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',\r\n data: {\r\n context: loader.data,\r\n loader: loader,\r\n properties: payload.section.properties,\r\n entity,\r\n },\r\n });\r\n context.setOutput('popupResult', false);\r\n if (popup.data?.result == true) {\r\n context.setOutput('popupResult', true);\r\n context.setVariable('updatedData', cloneDeep(popup.data.context));\r\n }\r\n }\r\n}\r\n\r\n\r\nexport const AXPModifyEntitySectionWorkflow: AXPWorkflow = {\r\n startStepId: 'modifyPopup',\r\n steps: {\r\n modifyPopup: {\r\n id: 'modifyPopup',\r\n action: 'AXPEntityModifySectionPopupAction',\r\n nextSteps: [\r\n {\r\n conditions: [{ type: 'SINGLE', expression: 'context.getOutput(\"popupResult\") == true' }],\r\n nextStepId: 'successToast',\r\n },\r\n ],\r\n },\r\n successToast: {\r\n id: 'successToast',\r\n action: 'AXPToastAction',\r\n input: {\r\n color: 'success',\r\n title: 'Entity Modified',\r\n content: 'Record has been successfully updated.',\r\n },\r\n nextSteps: [\r\n {\r\n conditions: [],\r\n nextStepId: 'modifyConfirmed',\r\n },\r\n ],\r\n },\r\n modifyConfirmed: {\r\n id: 'modifyConfirmed',\r\n action: 'AXPEntityModifyConfirmedAction',\r\n nextSteps: [\r\n {\r\n conditions: [],\r\n nextStepId: '',\r\n },\r\n ],\r\n },\r\n },\r\n};\r\n","import { AXPWorkflowModule } from '@acorex/platform/workflow';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouteReuseStrategy } from '@angular/router';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { AXPCustomReuseStrategy } from './custom-reuse.strategy';\r\nimport { AXPListViewModule } from './entity-layout';\r\nimport {\r\n AXPCreateEntityWorkflow,\r\n AXPEntityCreatePopupAction,\r\n AXPEntityCreateSubmittedAction,\r\n} from './entity-layout/workflows/create-entity.workflow';\r\nimport { AXPDeleteEntityWorkflow, AXPEntityPerformDeleteAction, AXPMyCustomFunc } from './entity-layout/workflows/delete-entity.workflow';\r\nimport {\r\n AXPEntityModifyConfirmedAction,\r\n AXPEntityModifyPopupAction,\r\n AXPModifyEntityWorkflow,\r\n} from './entity-layout/workflows/modify-entity.workflow';\r\nimport { AXPShowDetailsViewWorkflow } from './entity-layout/workflows/show-details.workflow';\r\nimport { AXPShowListViewWorkflow } from './entity-layout/workflows/show-list.workflow';\r\nimport { AXPShowQuickViewWorkflow } from './entity-layout/workflows/show-quick-view.workflow';\r\nimport { AXPEntityModifySectionPopupAction, AXPModifyEntitySectionWorkflow } from './entity-layout/workflows/modify-section.workflow';\r\n\r\n@NgModule({\r\n imports: [\r\n\r\n AXPListViewModule,\r\n AXPWorkflowModule.forChild({\r\n actions: {\r\n AXPEntityPerformDeleteAction,\r\n AXPEntityModifyPopupAction,\r\n AXPEntityModifySectionPopupAction,\r\n AXPEntityModifyConfirmedAction,\r\n AXPEntityCreatePopupAction,\r\n AXPEntityCreateSubmittedAction,\r\n },\r\n workflows: {\r\n 'delete-entity': AXPDeleteEntityWorkflow,\r\n 'modify-entity': AXPModifyEntityWorkflow,\r\n 'modify-entity-section': AXPModifyEntitySectionWorkflow,\r\n 'create-entity': AXPCreateEntityWorkflow,\r\n 'show-details': AXPShowDetailsViewWorkflow,\r\n 'show-quick-view': AXPShowQuickViewWorkflow,\r\n 'show-list-view': AXPShowListViewWorkflow,\r\n },\r\n functions: {\r\n test: AXPMyCustomFunc,\r\n },\r\n }),\r\n ],\r\n exports: [],\r\n declarations: [],\r\n providers: [{ provide: RouteReuseStrategy, useClass: AXPCustomReuseStrategy }],\r\n})\r\nexport class AXPAdminLayoutModule { }\r\n","import { inject } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router';\r\n//\r\nimport {\r\n AXPEntityDetailViewLoader,\r\n AXPEntityDetailViewLoaderFactory,\r\n AXPListViewLoader,\r\n AXPListViewLoaderFactory,\r\n} from './entity-layout';\r\n\r\nexport const AXPListViewLoaderResolver: ResolveFn<Promise<AXPListViewLoader>> = (\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n service: AXPListViewLoaderFactory = inject(AXPListViewLoaderFactory)\r\n): Promise<AXPListViewLoader> => {\r\n const appName = route.parent?.paramMap.get('app') as string;\r\n const moduleName = route.parent?.paramMap.get('module') as string;\r\n const entityName = route.paramMap.get('entity') as string;\r\n return service.create(moduleName, entityName);\r\n};\r\n\r\nexport const AXPEntityDetailViewLoaderResolver: ResolveFn<Promise<AXPEntityDetailViewLoader>> = (\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n service: AXPEntityDetailViewLoaderFactory = inject(AXPEntityDetailViewLoaderFactory)\r\n): Promise<AXPEntityDetailViewLoader> => {\r\n const appName = route.parent?.paramMap.get('app') as string;\r\n const moduleName = route.parent?.paramMap.get('module') as string;\r\n const entityName = route.paramMap.get('entity') as string;\r\n const id = route.paramMap.get('id') as string;\r\n return service.create(moduleName, entityName, id);\r\n};\r\n","import { AXPAuthGuard } from '@acorex/platform/auth';\r\nimport { Route } from '@angular/router';\r\nimport { AXPEntityDetailsViewComponent, AXPEntityListViewComponent } from './entity-layout';\r\nimport { AXPEntityDetailViewLoaderResolver, AXPListViewLoaderResolver } from './entity.resolver';\r\n\r\nexport const AX_ADMIN_ROUTES: Route[] = [\r\n {\r\n path: ':app',\r\n canActivate: [AXPAuthGuard],\r\n children: [\r\n {\r\n path: ':module',\r\n children: [\r\n {\r\n path: 'e/:entity/:id/view/:section',\r\n resolve: { loader: AXPEntityDetailViewLoaderResolver },\r\n component: AXPEntityDetailsViewComponent,\r\n },\r\n {\r\n path: 'e/:entity/:id/view',\r\n resolve: { loader: AXPEntityDetailViewLoaderResolver },\r\n component: AXPEntityDetailsViewComponent,\r\n },\r\n {\r\n path: 'e/:entity',\r\n redirectTo: ':entity/list',\r\n pathMatch: 'full',\r\n },\r\n {\r\n path: 'e/:entity/list',\r\n component: AXPEntityListViewComponent,\r\n resolve: {\r\n loader: AXPListViewLoaderResolver,\r\n },\r\n // canActivate: [AXPPermissionGuard],\r\n // data: {\r\n // requiredPermission: \"dynamic\"\r\n // }\r\n },\r\n // {\r\n // path: 'ee/:entity/:id/view',\r\n // resolve: { vm: AXPEntityDetailViewModelResolver },\r\n // component: AXPDefaultThemeEntityDetailsViewComponent,\r\n // },\r\n ],\r\n },\r\n ],\r\n },\r\n];\r\n","import { AXMWorkflowErrorHandler, AXPCommonModule, AXPDialogConfirmAction, AXPToastAction, AXPWorkflowNavigateAction } from '@acorex/platform/common';\r\nimport { AXPWorkflowModule } from '@acorex/platform/workflow';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\n\r\nimport { AXPShowDetailViewAction, AXPShowListViewAction, AXPShowQuickViewAction } from './admin/entity-layout/workflows';\r\n\r\n@NgModule({\r\n imports: [\r\n AXPCommonModule.forChild({ errorHandlers: [AXMWorkflowErrorHandler] }),\r\n AXPWorkflowModule.forChild({\r\n actions: {\r\n AXPWorkflowNavigateAction,\r\n AXPDialogConfirmAction,\r\n AXPToastAction,\r\n AXPShowDetailViewAction,\r\n AXPShowListViewAction,\r\n AXPShowQuickViewAction,\r\n },\r\n }),\r\n ],\r\n exports: [RouterModule],\r\n})\r\nexport class AXPLayoutModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i4","i12","i16","i5","i6","i1","i2","i7","i8","i9","i10","i11","i13","i14","i15.AXPListViewOptionsColumnsComponent","i16.AXPListViewOptionConditionsComponent","i17.AXPListViewOptionSortingComponent","ofType"],"mappings":"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"}