@acorex/platform 18.1.6 → 18.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/common/index.d.ts +3 -3
  2. package/common/lib/app/application.types.d.ts +10 -2
  3. package/common/lib/data/data.types.d.ts +1 -1
  4. package/common/lib/data/entity-storage-service.d.ts +1 -1
  5. package/common/lib/layout/component-slot/component-slot-loader.service.d.ts +2 -2
  6. package/common/lib/layout/component-slot/component-slot.types.d.ts +2 -1
  7. package/common/lib/layout/menu/menu.provider.d.ts +1 -1
  8. package/esm2022/common/index.mjs +4 -4
  9. package/esm2022/common/lib/app/application.types.mjs +13 -1
  10. package/esm2022/common/lib/common.module.mjs +14 -16
  11. package/esm2022/common/lib/data/data.types.mjs +1 -1
  12. package/esm2022/common/lib/data/dexie-storage.service.mjs +6 -4
  13. package/esm2022/common/lib/data/entity-storage-service.mjs +2 -2
  14. package/esm2022/common/lib/layout/component-slot/component-slot-loader.service.mjs +6 -5
  15. package/esm2022/common/lib/layout/component-slot/component-slot.types.mjs +1 -1
  16. package/esm2022/common/lib/layout/menu/menu.provider.mjs +1 -5
  17. package/esm2022/layout/builder/lib/builder/builder.service.mjs +19 -23
  18. package/esm2022/layout/builder/lib/builder/datasource-provider.service.mjs +27 -0
  19. package/esm2022/layout/builder/lib/builder/index.mjs +2 -1
  20. package/esm2022/layout/builder/lib/builder/widget-container.component.mjs +1 -8
  21. package/esm2022/layout/builder/lib/builder/widget-renderer.component.directive.mjs +34 -24
  22. package/esm2022/layout/builder/lib/builder/widget.types.mjs +52 -3
  23. package/esm2022/layout/designer/lib/designer/components/board/board.component.mjs +14 -22
  24. package/esm2022/layout/designer/lib/designer/components/drawers/data-sources/data-sources.component.mjs +5 -4
  25. package/esm2022/layout/designer/lib/designer/designer.component.mjs +4 -9
  26. package/esm2022/layout/designer/lib/designer/shared/designer-connector.service.mjs +2 -1
  27. package/esm2022/layout/designer/lib/designer/shared/designer.service.mjs +1 -3
  28. package/esm2022/layout/designer/lib/designer/shared/designer.types.mjs +1 -1
  29. package/esm2022/layout/designer/lib/designer/shared/widget-designer-renderer.directive.mjs +13 -10
  30. package/esm2022/layout/designer/lib/preview/preview-viewer.component.mjs +12 -3
  31. package/esm2022/layout/designer/lib/preview/preview.component.mjs +3 -2
  32. package/esm2022/layout/designer/lib/property-viewer/widget-property-viewer.component.mjs +5 -4
  33. package/esm2022/layout/entity/lib/entity-detail-list.viewmodel.mjs +3 -4
  34. package/esm2022/layout/entity/lib/entity-master-create.viewmodel.mjs +3 -3
  35. package/esm2022/layout/entity/lib/entity-master-list.viewmodel.mjs +5 -6
  36. package/esm2022/layout/entity/lib/entity-master-single.viewmodel.mjs +7 -7
  37. package/esm2022/layout/entity/lib/entity.config.mjs +6 -6
  38. package/esm2022/layout/entity/lib/entity.service.mjs +18 -0
  39. package/esm2022/layout/entity/lib/index.mjs +2 -1
  40. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.viewmodel.mjs +21 -19
  41. package/esm2022/layout/entity/lib/workflows/modify-section.workflow.mjs +2 -2
  42. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.mjs +4 -4
  43. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.mjs +4 -4
  44. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.mjs +9 -8
  45. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.mjs +3 -3
  46. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component.mjs +3 -3
  47. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.mjs +7 -6
  48. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/overview/entity-single-overview.component.mjs +12 -10
  49. package/esm2022/themes/default/lib/layouts/root-layout/components/menu/root-menu.component.mjs +4 -3
  50. package/esm2022/themes/default/lib/layouts/root-layout/root-layout.module.mjs +10 -6
  51. package/esm2022/themes/shared/index.mjs +1 -5
  52. package/esm2022/themes/shared/lib/components/theme-slot.component.mjs +13 -11
  53. package/esm2022/themes/shared/lib/shared.module.mjs +25 -4
  54. package/esm2022/widgets/lib/properties/editors.props.mjs +4 -2
  55. package/esm2022/widgets/lib/properties/general.props.mjs +2 -2
  56. package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-view.component.mjs +26 -5
  57. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-column.component.mjs +27 -16
  58. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-edit.component.mjs +10 -2
  59. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-view.component.mjs +22 -7
  60. package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget-edit.component.mjs +8 -15
  61. package/esm2022/widgets/lib/widgets/editors/select/index.mjs +3 -3
  62. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-edit.component.mjs +9 -19
  63. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-view.component.mjs +4 -2
  64. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget.config.mjs +3 -2
  65. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-designer.component.mjs +32 -15
  66. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-edit.component.mjs +34 -14
  67. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget.config.mjs +4 -2
  68. package/esm2022/widgets/lib/widgets/layout/template/template-widget-view.component.mjs +7 -21
  69. package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-WAlG5E_9.mjs → acorex-platform-common-avatar-widget-edit.component-BYEjzXpW.mjs} +3 -3
  70. package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-WAlG5E_9.mjs.map → acorex-platform-common-avatar-widget-edit.component-BYEjzXpW.mjs.map} +1 -1
  71. package/fesm2022/{acorex-platform-common-avatar-widget-view.component-DRyB3UWf.mjs → acorex-platform-common-avatar-widget-view.component-CfHELBLm.mjs} +3 -3
  72. package/fesm2022/{acorex-platform-common-avatar-widget-view.component-DRyB3UWf.mjs.map → acorex-platform-common-avatar-widget-view.component-CfHELBLm.mjs.map} +1 -1
  73. package/fesm2022/{acorex-platform-common-boolean-widget-filter.component-DY4oTjC-.mjs → acorex-platform-common-boolean-widget-filter.component-DRDiIxsn.mjs} +3 -3
  74. package/fesm2022/{acorex-platform-common-boolean-widget-filter.component-DY4oTjC-.mjs.map → acorex-platform-common-boolean-widget-filter.component-DRDiIxsn.mjs.map} +1 -1
  75. package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-NSXcrUwU.mjs → acorex-platform-common-checkbox-widget-column.component-Bn0tnHyT.mjs} +3 -3
  76. package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-NSXcrUwU.mjs.map → acorex-platform-common-checkbox-widget-column.component-Bn0tnHyT.mjs.map} +1 -1
  77. package/fesm2022/{acorex-platform-common-checkbox-widget-edit.component-BU7qV5Cm.mjs → acorex-platform-common-checkbox-widget-edit.component-BuS0Pg-j.mjs} +3 -3
  78. package/fesm2022/{acorex-platform-common-checkbox-widget-edit.component-BU7qV5Cm.mjs.map → acorex-platform-common-checkbox-widget-edit.component-BuS0Pg-j.mjs.map} +1 -1
  79. package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-2Du2IzDS.mjs → acorex-platform-common-checkbox-widget-view.component-D7kmxXjj.mjs} +3 -3
  80. package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-2Du2IzDS.mjs.map → acorex-platform-common-checkbox-widget-view.component-D7kmxXjj.mjs.map} +1 -1
  81. package/fesm2022/{acorex-platform-common-dateTime-widget-column.component-Dd7fgwu3.mjs → acorex-platform-common-dateTime-widget-column.component-CtS98tbi.mjs} +3 -3
  82. package/fesm2022/{acorex-platform-common-dateTime-widget-column.component-Dd7fgwu3.mjs.map → acorex-platform-common-dateTime-widget-column.component-CtS98tbi.mjs.map} +1 -1
  83. package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-B4AelVJp.mjs → acorex-platform-common-dateTime-widget-edit.component-Dm4QofDq.mjs} +3 -3
  84. package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-B4AelVJp.mjs.map → acorex-platform-common-dateTime-widget-edit.component-Dm4QofDq.mjs.map} +1 -1
  85. package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-Ytm-TwOP.mjs → acorex-platform-common-dateTime-widget-filter.component-DDny36SE.mjs} +3 -3
  86. package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-Ytm-TwOP.mjs.map → acorex-platform-common-dateTime-widget-filter.component-DDny36SE.mjs.map} +1 -1
  87. package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-BKdqOPkb.mjs → acorex-platform-common-dateTime-widget-view.component-lzf0fwxr.mjs} +3 -3
  88. package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-BKdqOPkb.mjs.map → acorex-platform-common-dateTime-widget-view.component-lzf0fwxr.mjs.map} +1 -1
  89. package/fesm2022/{acorex-platform-common-email-widget-column.component-CDKqwlPD.mjs → acorex-platform-common-email-widget-column.component-Cy_Kj9po.mjs} +3 -3
  90. package/fesm2022/{acorex-platform-common-email-widget-column.component-CDKqwlPD.mjs.map → acorex-platform-common-email-widget-column.component-Cy_Kj9po.mjs.map} +1 -1
  91. package/fesm2022/{acorex-platform-common-email-widget-edit.component-BT2rJjaW.mjs → acorex-platform-common-email-widget-edit.component-DTxCX3ok.mjs} +3 -3
  92. package/fesm2022/{acorex-platform-common-email-widget-edit.component-BT2rJjaW.mjs.map → acorex-platform-common-email-widget-edit.component-DTxCX3ok.mjs.map} +1 -1
  93. package/fesm2022/{acorex-platform-common-email-widget-view.component-DbhRWpB1.mjs → acorex-platform-common-email-widget-view.component-CvEHLvcT.mjs} +3 -3
  94. package/fesm2022/{acorex-platform-common-email-widget-view.component-DbhRWpB1.mjs.map → acorex-platform-common-email-widget-view.component-CvEHLvcT.mjs.map} +1 -1
  95. package/fesm2022/{acorex-platform-common-file-widget-column.component-8U76QgEQ.mjs → acorex-platform-common-file-widget-column.component-GtbElxmS.mjs} +2 -2
  96. package/fesm2022/{acorex-platform-common-file-widget-column.component-8U76QgEQ.mjs.map → acorex-platform-common-file-widget-column.component-GtbElxmS.mjs.map} +1 -1
  97. package/fesm2022/{acorex-platform-common-file-widget-edit.component-OFmiYz_5.mjs → acorex-platform-common-file-widget-edit.component-3fR5jRFv.mjs} +3 -3
  98. package/fesm2022/{acorex-platform-common-file-widget-edit.component-OFmiYz_5.mjs.map → acorex-platform-common-file-widget-edit.component-3fR5jRFv.mjs.map} +1 -1
  99. package/fesm2022/{acorex-platform-common-file-widget-filter.component-ZLnpXMXK.mjs → acorex-platform-common-file-widget-filter.component-B7etTIuq.mjs} +3 -3
  100. package/fesm2022/{acorex-platform-common-file-widget-filter.component-ZLnpXMXK.mjs.map → acorex-platform-common-file-widget-filter.component-B7etTIuq.mjs.map} +1 -1
  101. package/fesm2022/{acorex-platform-common-file-widget-view.component-BcrM4XrO.mjs → acorex-platform-common-file-widget-view.component-RsQQjlL7.mjs} +3 -3
  102. package/fesm2022/{acorex-platform-common-file-widget-view.component-BcrM4XrO.mjs.map → acorex-platform-common-file-widget-view.component-RsQQjlL7.mjs.map} +1 -1
  103. package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-pBBjrjDP.mjs → acorex-platform-common-gallery-widget-edit.component-CixJEDUT.mjs} +3 -3
  104. package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-pBBjrjDP.mjs.map → acorex-platform-common-gallery-widget-edit.component-CixJEDUT.mjs.map} +1 -1
  105. package/fesm2022/{acorex-platform-common-gallery-widget-filter.component-Cp7t9ovC.mjs → acorex-platform-common-gallery-widget-filter.component-1wzY6U5s.mjs} +3 -3
  106. package/fesm2022/{acorex-platform-common-gallery-widget-filter.component-Cp7t9ovC.mjs.map → acorex-platform-common-gallery-widget-filter.component-1wzY6U5s.mjs.map} +1 -1
  107. package/fesm2022/{acorex-platform-common-gallery-widget-view.component-CPS-h3cq.mjs → acorex-platform-common-gallery-widget-view.component-YaLJU3Cv.mjs} +3 -3
  108. package/fesm2022/{acorex-platform-common-gallery-widget-view.component-CPS-h3cq.mjs.map → acorex-platform-common-gallery-widget-view.component-YaLJU3Cv.mjs.map} +1 -1
  109. package/fesm2022/{acorex-platform-common-largetext-widget-edit.component-DA6r3rVA.mjs → acorex-platform-common-largetext-widget-edit.component-BeiJZnEv.mjs} +3 -3
  110. package/fesm2022/{acorex-platform-common-largetext-widget-edit.component-DA6r3rVA.mjs.map → acorex-platform-common-largetext-widget-edit.component-BeiJZnEv.mjs.map} +1 -1
  111. package/fesm2022/{acorex-platform-common-lookup-widget-column.component-Cxv1yZvE.mjs → acorex-platform-common-lookup-widget-column.component-C5DZ-cez.mjs} +3 -3
  112. package/fesm2022/{acorex-platform-common-lookup-widget-column.component-Cxv1yZvE.mjs.map → acorex-platform-common-lookup-widget-column.component-C5DZ-cez.mjs.map} +1 -1
  113. package/fesm2022/{acorex-platform-common-lookup-widget-edit.component-CUtGoAGX.mjs → acorex-platform-common-lookup-widget-edit.component-uopyJIC1.mjs} +3 -3
  114. package/fesm2022/{acorex-platform-common-lookup-widget-edit.component-CUtGoAGX.mjs.map → acorex-platform-common-lookup-widget-edit.component-uopyJIC1.mjs.map} +1 -1
  115. package/fesm2022/{acorex-platform-common-lookup-widget-filter.component-DJZqB3vj.mjs → acorex-platform-common-lookup-widget-filter.component-D1lrIkz4.mjs} +3 -3
  116. package/fesm2022/{acorex-platform-common-lookup-widget-filter.component-DJZqB3vj.mjs.map → acorex-platform-common-lookup-widget-filter.component-D1lrIkz4.mjs.map} +1 -1
  117. package/fesm2022/{acorex-platform-common-lookup-widget-view.component-CghJK1C4.mjs → acorex-platform-common-lookup-widget-view.component-DTNcGNir.mjs} +3 -3
  118. package/fesm2022/{acorex-platform-common-lookup-widget-view.component-CghJK1C4.mjs.map → acorex-platform-common-lookup-widget-view.component-DTNcGNir.mjs.map} +1 -1
  119. package/fesm2022/{acorex-platform-common-map-widget-edit.component-oSb3kVMc.mjs → acorex-platform-common-map-widget-edit.component-h4SRiV6_.mjs} +3 -3
  120. package/fesm2022/{acorex-platform-common-map-widget-edit.component-oSb3kVMc.mjs.map → acorex-platform-common-map-widget-edit.component-h4SRiV6_.mjs.map} +1 -1
  121. package/fesm2022/{acorex-platform-common-map-widget-view.component-BrYwr914.mjs → acorex-platform-common-map-widget-view.component-Deos8gVy.mjs} +3 -3
  122. package/fesm2022/{acorex-platform-common-map-widget-view.component-BrYwr914.mjs.map → acorex-platform-common-map-widget-view.component-Deos8gVy.mjs.map} +1 -1
  123. package/fesm2022/{acorex-platform-common-messenger-widget-column.component-DIJAffxy.mjs → acorex-platform-common-messenger-widget-column.component-DN8dFLZD.mjs} +3 -3
  124. package/fesm2022/{acorex-platform-common-messenger-widget-column.component-DIJAffxy.mjs.map → acorex-platform-common-messenger-widget-column.component-DN8dFLZD.mjs.map} +1 -1
  125. package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-DpGvbM4a.mjs → acorex-platform-common-messenger-widget-edit.component-m_zxHCw5.mjs} +3 -3
  126. package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-DpGvbM4a.mjs.map → acorex-platform-common-messenger-widget-edit.component-m_zxHCw5.mjs.map} +1 -1
  127. package/fesm2022/{acorex-platform-common-messenger-widget-view.component-CeuDEI-j.mjs → acorex-platform-common-messenger-widget-view.component-DA9MiNb9.mjs} +3 -3
  128. package/fesm2022/{acorex-platform-common-messenger-widget-view.component-CeuDEI-j.mjs.map → acorex-platform-common-messenger-widget-view.component-DA9MiNb9.mjs.map} +1 -1
  129. package/fesm2022/{acorex-platform-common-number-widget-edit.component-B1YGwr60.mjs → acorex-platform-common-number-widget-edit.component-B0if4vR4.mjs} +3 -3
  130. package/fesm2022/{acorex-platform-common-number-widget-edit.component-B1YGwr60.mjs.map → acorex-platform-common-number-widget-edit.component-B0if4vR4.mjs.map} +1 -1
  131. package/fesm2022/{acorex-platform-common-number-widget-filter.component-BmmgPy1w.mjs → acorex-platform-common-number-widget-filter.component-BgTJbR2u.mjs} +3 -3
  132. package/fesm2022/{acorex-platform-common-number-widget-filter.component-BmmgPy1w.mjs.map → acorex-platform-common-number-widget-filter.component-BgTJbR2u.mjs.map} +1 -1
  133. package/fesm2022/{acorex-platform-common-number-widget-view.component-bqylVHOz.mjs → acorex-platform-common-number-widget-view.component-Du1oQYBH.mjs} +3 -3
  134. package/fesm2022/{acorex-platform-common-number-widget-view.component-bqylVHOz.mjs.map → acorex-platform-common-number-widget-view.component-Du1oQYBH.mjs.map} +1 -1
  135. package/fesm2022/{acorex-platform-common-password-widget-column.component-DVdZh7s4.mjs → acorex-platform-common-password-widget-column.component-CEWtRX1S.mjs} +3 -3
  136. package/fesm2022/{acorex-platform-common-password-widget-column.component-DVdZh7s4.mjs.map → acorex-platform-common-password-widget-column.component-CEWtRX1S.mjs.map} +1 -1
  137. package/fesm2022/{acorex-platform-common-password-widget-edit.component-OjHwMT5d.mjs → acorex-platform-common-password-widget-edit.component-B-_m6f_C.mjs} +3 -3
  138. package/fesm2022/{acorex-platform-common-password-widget-edit.component-OjHwMT5d.mjs.map → acorex-platform-common-password-widget-edit.component-B-_m6f_C.mjs.map} +1 -1
  139. package/fesm2022/{acorex-platform-common-password-widget-view.component-BeSk1OgU.mjs → acorex-platform-common-password-widget-view.component-BVW-Zak-.mjs} +3 -3
  140. package/fesm2022/{acorex-platform-common-password-widget-view.component-BeSk1OgU.mjs.map → acorex-platform-common-password-widget-view.component-BVW-Zak-.mjs.map} +1 -1
  141. package/fesm2022/{acorex-platform-common-phone-widget-column.component-DOfzGKBi.mjs → acorex-platform-common-phone-widget-column.component-DGaGGltV.mjs} +3 -3
  142. package/fesm2022/{acorex-platform-common-phone-widget-column.component-DOfzGKBi.mjs.map → acorex-platform-common-phone-widget-column.component-DGaGGltV.mjs.map} +1 -1
  143. package/fesm2022/{acorex-platform-common-phone-widget-edit.component-BJ-iEyLP.mjs → acorex-platform-common-phone-widget-edit.component-BNfAQ_4j.mjs} +3 -3
  144. package/fesm2022/{acorex-platform-common-phone-widget-edit.component-BJ-iEyLP.mjs.map → acorex-platform-common-phone-widget-edit.component-BNfAQ_4j.mjs.map} +1 -1
  145. package/fesm2022/{acorex-platform-common-phone-widget-view.component-DW4AHCE6.mjs → acorex-platform-common-phone-widget-view.component-xGygt5Y9.mjs} +3 -3
  146. package/fesm2022/{acorex-platform-common-phone-widget-view.component-DW4AHCE6.mjs.map → acorex-platform-common-phone-widget-view.component-xGygt5Y9.mjs.map} +1 -1
  147. package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-2zZBG6Ze.mjs → acorex-platform-common-rich-text-widget-column.component-BJYxnZm2.mjs} +3 -3
  148. package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-2zZBG6Ze.mjs.map → acorex-platform-common-rich-text-widget-column.component-BJYxnZm2.mjs.map} +1 -1
  149. package/fesm2022/{acorex-platform-common-rich-text-widget-edit.component-BJveJgHZ.mjs → acorex-platform-common-rich-text-widget-edit.component-Dvv8JnXl.mjs} +3 -3
  150. package/fesm2022/{acorex-platform-common-rich-text-widget-edit.component-BJveJgHZ.mjs.map → acorex-platform-common-rich-text-widget-edit.component-Dvv8JnXl.mjs.map} +1 -1
  151. package/fesm2022/{acorex-platform-common-rich-text-widget-view.component-CiViWpBX.mjs → acorex-platform-common-rich-text-widget-view.component-B77Y5luo.mjs} +3 -3
  152. package/fesm2022/{acorex-platform-common-rich-text-widget-view.component-CiViWpBX.mjs.map → acorex-platform-common-rich-text-widget-view.component-B77Y5luo.mjs.map} +1 -1
  153. package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-D9lsVFgo.mjs → acorex-platform-common-selection-list-widget-column.component-1zPVFgFG.mjs} +3 -3
  154. package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-D9lsVFgo.mjs.map → acorex-platform-common-selection-list-widget-column.component-1zPVFgFG.mjs.map} +1 -1
  155. package/fesm2022/{acorex-platform-common-selection-list-widget-edit.component-ocEwyUP7.mjs → acorex-platform-common-selection-list-widget-edit.component-Tdkf-0cn.mjs} +3 -3
  156. package/fesm2022/{acorex-platform-common-selection-list-widget-edit.component-ocEwyUP7.mjs.map → acorex-platform-common-selection-list-widget-edit.component-Tdkf-0cn.mjs.map} +1 -1
  157. package/fesm2022/{acorex-platform-common-selection-list-widget-filter.component-CS0f_jCx.mjs → acorex-platform-common-selection-list-widget-filter.component-y2aFk-A6.mjs} +3 -3
  158. package/fesm2022/{acorex-platform-common-selection-list-widget-filter.component-CS0f_jCx.mjs.map → acorex-platform-common-selection-list-widget-filter.component-y2aFk-A6.mjs.map} +1 -1
  159. package/fesm2022/{acorex-platform-common-selection-list-widget-view.component-C65lbpo_.mjs → acorex-platform-common-selection-list-widget-view.component-DLc1MHex.mjs} +3 -3
  160. package/fesm2022/{acorex-platform-common-selection-list-widget-view.component-C65lbpo_.mjs.map → acorex-platform-common-selection-list-widget-view.component-DLc1MHex.mjs.map} +1 -1
  161. package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-DbfQSGxm.mjs → acorex-platform-common-signature-pad-widget-edit.component-qUuwwYlj.mjs} +3 -3
  162. package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-DbfQSGxm.mjs.map → acorex-platform-common-signature-pad-widget-edit.component-qUuwwYlj.mjs.map} +1 -1
  163. package/fesm2022/{acorex-platform-common-signature-pad-widget-view.component-CDY3JdP-.mjs → acorex-platform-common-signature-pad-widget-view.component-D5XVZ88b.mjs} +3 -3
  164. package/fesm2022/{acorex-platform-common-signature-pad-widget-view.component-CDY3JdP-.mjs.map → acorex-platform-common-signature-pad-widget-view.component-D5XVZ88b.mjs.map} +1 -1
  165. package/fesm2022/{acorex-platform-common-string-widget-filter.component-BW2ehdOx.mjs → acorex-platform-common-string-widget-filter.component-B9h7CnEz.mjs} +3 -3
  166. package/fesm2022/{acorex-platform-common-string-widget-filter.component-BW2ehdOx.mjs.map → acorex-platform-common-string-widget-filter.component-B9h7CnEz.mjs.map} +1 -1
  167. package/fesm2022/{acorex-platform-common-text-widget-column.component-bhx0QWAX.mjs → acorex-platform-common-text-widget-column.component-LFKeHZbS.mjs} +3 -3
  168. package/fesm2022/{acorex-platform-common-text-widget-column.component-bhx0QWAX.mjs.map → acorex-platform-common-text-widget-column.component-LFKeHZbS.mjs.map} +1 -1
  169. package/fesm2022/{acorex-platform-common-text-widget-edit.component-Cb1k59hs.mjs → acorex-platform-common-text-widget-edit.component-BiyTKmvV.mjs} +3 -3
  170. package/fesm2022/{acorex-platform-common-text-widget-edit.component-Cb1k59hs.mjs.map → acorex-platform-common-text-widget-edit.component-BiyTKmvV.mjs.map} +1 -1
  171. package/fesm2022/{acorex-platform-common-text-widget-view.component-CGwY9c2O.mjs → acorex-platform-common-text-widget-view.component-BDxpsxE6.mjs} +3 -3
  172. package/fesm2022/{acorex-platform-common-text-widget-view.component-CGwY9c2O.mjs.map → acorex-platform-common-text-widget-view.component-BDxpsxE6.mjs.map} +1 -1
  173. package/fesm2022/{acorex-platform-common-toggle-widget-column.component-BxAwa7jw.mjs → acorex-platform-common-toggle-widget-column.component-BnmR9hFM.mjs} +3 -3
  174. package/fesm2022/{acorex-platform-common-toggle-widget-column.component-BxAwa7jw.mjs.map → acorex-platform-common-toggle-widget-column.component-BnmR9hFM.mjs.map} +1 -1
  175. package/fesm2022/{acorex-platform-common-toggle-widget-edit.component-CT2fRAKm.mjs → acorex-platform-common-toggle-widget-edit.component-Cz7LayX-.mjs} +3 -3
  176. package/fesm2022/{acorex-platform-common-toggle-widget-edit.component-CT2fRAKm.mjs.map → acorex-platform-common-toggle-widget-edit.component-Cz7LayX-.mjs.map} +1 -1
  177. package/fesm2022/{acorex-platform-common-toggle-widget-view.component-9tquFHhE.mjs → acorex-platform-common-toggle-widget-view.component-Cq2-5QUg.mjs} +3 -3
  178. package/fesm2022/{acorex-platform-common-toggle-widget-view.component-9tquFHhE.mjs.map → acorex-platform-common-toggle-widget-view.component-Cq2-5QUg.mjs.map} +1 -1
  179. package/fesm2022/acorex-platform-common.mjs +520 -514
  180. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  181. package/fesm2022/acorex-platform-layout-builder.mjs +125 -53
  182. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  183. package/fesm2022/acorex-platform-layout-designer.mjs +58 -55
  184. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  185. package/fesm2022/acorex-platform-layout-entity.mjs +50 -36
  186. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  187. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-i6vjEhti.mjs → acorex-platform-themes-default-entity-master-create-view.component-dByV3T8-.mjs} +7 -7
  188. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-dByV3T8-.mjs.map +1 -0
  189. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-mzb-FV9E.mjs +299 -0
  190. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-mzb-FV9E.mjs.map +1 -0
  191. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-CdwlY0Fa.mjs +88 -0
  192. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-CdwlY0Fa.mjs.map +1 -0
  193. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-ItkFB3QF.mjs +150 -0
  194. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-ItkFB3QF.mjs.map +1 -0
  195. package/fesm2022/acorex-platform-themes-default.mjs +21 -18
  196. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  197. package/fesm2022/acorex-platform-themes-shared.mjs +42 -491
  198. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  199. package/fesm2022/{acorex-platform-widgets-template-widget-edit.component-gvAh-gH1.mjs → acorex-platform-widgets-template-widget-edit.component-BWc0_EA0.mjs} +2 -2
  200. package/fesm2022/{acorex-platform-widgets-template-widget-edit.component-gvAh-gH1.mjs.map → acorex-platform-widgets-template-widget-edit.component-BWc0_EA0.mjs.map} +1 -1
  201. package/fesm2022/acorex-platform-widgets.mjs +257 -194
  202. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  203. package/layout/builder/lib/builder/builder.service.d.ts +2 -0
  204. package/layout/builder/lib/builder/datasource-provider.service.d.ts +24 -0
  205. package/layout/builder/lib/builder/index.d.ts +1 -0
  206. package/layout/builder/lib/builder/widget-container.component.d.ts +0 -1
  207. package/layout/builder/lib/builder/widget-renderer.component.directive.d.ts +1 -1
  208. package/layout/builder/lib/builder/widget.types.d.ts +13 -9
  209. package/layout/designer/lib/designer/components/board/board.component.d.ts +0 -1
  210. package/layout/designer/lib/designer/components/drawers/data-sources/data-sources.component.d.ts +6 -4
  211. package/layout/designer/lib/designer/designer.component.d.ts +0 -1
  212. package/layout/designer/lib/designer/shared/designer-connector.service.d.ts +1 -4
  213. package/layout/designer/lib/designer/shared/designer.service.d.ts +0 -2
  214. package/layout/designer/lib/designer/shared/designer.types.d.ts +0 -4
  215. package/layout/designer/lib/preview/preview-viewer.component.d.ts +8 -1
  216. package/layout/designer/lib/property-viewer/widget-property-viewer.component.d.ts +6 -2
  217. package/layout/entity/lib/entity-master-create.viewmodel.d.ts +1 -1
  218. package/layout/entity/lib/entity-master-single.viewmodel.d.ts +1 -1
  219. package/layout/entity/lib/entity-master-update.viewmodel.d.ts +1 -1
  220. package/layout/entity/lib/entity.config.d.ts +1 -1
  221. package/layout/entity/lib/entity.service.d.ts +7 -0
  222. package/layout/entity/lib/entity.viewmodel.d.ts +1 -1
  223. package/layout/entity/lib/index.d.ts +1 -0
  224. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.viewmodel.d.ts +2 -2
  225. package/package.json +17 -17
  226. package/themes/default/lib/layouts/root-layout/root-layout.module.d.ts +14 -13
  227. package/themes/shared/index.d.ts +0 -4
  228. package/themes/shared/lib/shared.module.d.ts +2 -1
  229. package/widgets/lib/widgets/editors/color/color-box-widget-view.component.d.ts +3 -0
  230. package/widgets/lib/widgets/editors/date-time/date-time-box-widget-column.component.d.ts +2 -4
  231. package/widgets/lib/widgets/editors/date-time/date-time-box-widget-view.component.d.ts +1 -0
  232. package/widgets/lib/widgets/editors/rich-text/rich-text-widget-edit.component.d.ts +3 -4
  233. package/widgets/lib/widgets/editors/select/index.d.ts +2 -2
  234. package/widgets/lib/widgets/editors/select/select-box-widget-edit.component.d.ts +3 -6
  235. package/widgets/lib/widgets/editors/selection-list/selection-list-widget-designer.component.d.ts +5 -6
  236. package/widgets/lib/widgets/editors/selection-list/selection-list-widget-edit.component.d.ts +4 -5
  237. package/esm2022/themes/shared/lib/comments/comment-list-view.component.mjs +0 -429
  238. package/esm2022/themes/shared/lib/comments/comment-lookup-popup.component.mjs +0 -56
  239. package/esm2022/themes/shared/lib/comments/comments.service.mjs +0 -4
  240. package/esm2022/themes/shared/lib/comments/comments.type.mjs +0 -2
  241. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-i6vjEhti.mjs.map +0 -1
  242. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BGKWaCth.mjs +0 -298
  243. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BGKWaCth.mjs.map +0 -1
  244. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-B3phYOIw.mjs +0 -88
  245. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-B3phYOIw.mjs.map +0 -1
  246. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-DyZHE0o-.mjs +0 -148
  247. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-DyZHE0o-.mjs.map +0 -1
  248. package/themes/shared/lib/comments/comment-list-view.component.d.ts +0 -66
  249. package/themes/shared/lib/comments/comment-lookup-popup.component.d.ts +0 -10
  250. package/themes/shared/lib/comments/comments.service.d.ts +0 -5
  251. package/themes/shared/lib/comments/comments.type.d.ts +0 -74
@@ -13,12 +13,12 @@ export class AXPLayoutBuilderService {
13
13
  this.variables$ = signal({});
14
14
  this.functions$ = signal({});
15
15
  this.onChanged = new Subject();
16
+ this.onRefresh = new Subject();
16
17
  this.debouncers = {};
17
18
  this.debouncerSubscriptions = {};
18
19
  this.widgets = new Map();
19
20
  this.context = this.context$.asReadonly();
20
21
  }
21
- ;
22
22
  get variables() {
23
23
  return this.variables$();
24
24
  }
@@ -27,13 +27,12 @@ export class AXPLayoutBuilderService {
27
27
  }
28
28
  initial(value) {
29
29
  this.context$.set(value);
30
- // TODO: check performance
31
- this.onChanged.next({
32
- oldValue: null,
33
- newValue: null,
34
- data: this.context(),
35
- init: true
36
- });
30
+ this.refresh();
31
+ }
32
+ refresh() {
33
+ setTimeout(() => {
34
+ this.onRefresh.next();
35
+ }, 0);
37
36
  }
38
37
  setVariables(...args) {
39
38
  if (args.length == 0)
@@ -41,7 +40,7 @@ export class AXPLayoutBuilderService {
41
40
  else if (args.length == 1)
42
41
  this.variables$.set(args[0]);
43
42
  else if (args.length == 2) {
44
- this.variables$.update(v => set(v, args[0], args[1]));
43
+ this.variables$.update((v) => set(v, args[0], args[1]));
45
44
  }
46
45
  }
47
46
  setFunctions(...args) {
@@ -50,7 +49,7 @@ export class AXPLayoutBuilderService {
50
49
  else if (args.length == 1)
51
50
  this.functions$.set(args[0]);
52
51
  else if (args.length == 2) {
53
- this.functions$.update(v => set(v, args[0], args[1]));
52
+ this.functions$.update((v) => set(v, args[0], args[1]));
54
53
  }
55
54
  }
56
55
  setValue(path, value, init = false) {
@@ -61,19 +60,16 @@ export class AXPLayoutBuilderService {
61
60
  // Create a new Subject for debouncing if it doesn't exist
62
61
  this.debouncers[path] = new Subject();
63
62
  // Subscribe to the subject with debounceTime
64
- this.debouncerSubscriptions[path] =
65
- this.debouncers[path]
66
- .pipe(debounceTime(150))
67
- .subscribe(({ value, init }) => {
68
- // Only emit onChanged event after debounce time
69
- this.onChanged.next({
70
- oldValue: oldValue,
71
- newValue: value,
72
- data: this.context(),
73
- path,
74
- init
75
- });
63
+ this.debouncerSubscriptions[path] = this.debouncers[path].pipe(debounceTime(150)).subscribe(({ value, init }) => {
64
+ // Only emit onChanged event after debounce time
65
+ this.onChanged.next({
66
+ oldValue: oldValue,
67
+ newValue: value,
68
+ data: this.context(),
69
+ path,
70
+ init,
76
71
  });
72
+ });
77
73
  }
78
74
  // Update context immediately
79
75
  this.context$.update((ctx) => set(clone(ctx), path, value));
@@ -105,4 +101,4 @@ export class AXPLayoutBuilderService {
105
101
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPLayoutBuilderService, decorators: [{
106
102
  type: Injectable
107
103
  }] });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU0zRCxNQUFNLE9BQWdCLGdCQUFnQjtJQUdwQyxHQUFHO1FBQ0QsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDO0NBQ0Y7QUFHRCxNQUFNLE9BQU8sdUJBQXVCO0lBRHBDO1FBRW1CLGFBQVEsR0FBRyxNQUFNLENBQU0sRUFBRSxDQUFDLENBQUM7UUFDM0IsZUFBVSxHQUFHLE1BQU0sQ0FBTSxFQUFFLENBQUMsQ0FBQztRQUM3QixlQUFVLEdBQUcsTUFBTSxDQUE4QixFQUFFLENBQUMsQ0FBQztRQUV0RCxjQUFTLEdBQW1DLElBQUksT0FBTyxFQUF5QixDQUFDO1FBRXpGLGVBQVUsR0FBNEUsRUFBRSxDQUFDO1FBQ3pGLDJCQUFzQixHQUFvQyxFQUFFLENBQUM7UUFFN0QsWUFBTyxHQUFHLElBQUksR0FBRyxFQUE0QixDQUFDO1FBRS9DLFlBQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0tBcUc3QztJQXZHdUQsQ0FBQztJQUl2RCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDM0IsQ0FB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cmUnO1xuaW1wb3J0IHsgY2xvbmUsIGdldCwgaXNFcXVhbCwgc2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBMYXlvdXRDb250ZXh0RXZlbnQgfSBmcm9tICcuL3dpZGdldC50eXBlcyc7XG5cblxuZXhwb3J0IHR5cGUgQVhQTGF5b3V0RWxlbWVudEFQSSA9IHsgW25hbWU6IHN0cmluZ106IFN1YmplY3Q8YW55PiB8IEZ1bmN0aW9uIH1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUExheW91dEVsZW1lbnQge1xuICBhYnN0cmFjdCBnZXQgaWQoKTogc3RyaW5nIHwgbnVsbDtcblxuICBhcGkoKTogQVhQTGF5b3V0RWxlbWVudEFQSSB7XG4gICAgcmV0dXJuIHt9XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYUExheW91dEJ1aWxkZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb250ZXh0JCA9IHNpZ25hbDxhbnk+KHt9KTtcbiAgcHJpdmF0ZSByZWFkb25seSB2YXJpYWJsZXMkID0gc2lnbmFsPGFueT4oe30pO1xuICBwcml2YXRlIHJlYWRvbmx5IGZ1bmN0aW9ucyQgPSBzaWduYWw8eyBba2V5OiBzdHJpbmddOiBGdW5jdGlvbiB9Pih7fSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uQ2hhbmdlZDogU3ViamVjdDxBWFBMYXlvdXRDb250ZXh0RXZlbnQ+ID0gbmV3IFN1YmplY3Q8QVhQTGF5b3V0Q29udGV4dEV2ZW50PigpO1xuXG4gIHByaXZhdGUgZGVib3VuY2VyczogeyBba2V5OiBzdHJpbmddOiBTdWJqZWN0PHsgcGF0aDogc3RyaW5nOyB2YWx1ZTogYW55LCBpbml0OiBib29sZWFuIH0+IH0gPSB7fTtcbiAgcHJpdmF0ZSBkZWJvdW5jZXJTdWJzY3JpcHRpb25zOiB7IFtrZXk6IHN0cmluZ106IFN1YnNjcmlwdGlvbiB9ID0ge307XG5cbiAgcHJpdmF0ZSB3aWRnZXRzID0gbmV3IE1hcDxzdHJpbmcsIEFYUExheW91dEVsZW1lbnQ+KCk7O1xuXG4gIHB1YmxpYyBjb250ZXh0ID0gdGhpcy5jb250ZXh0JC5hc1JlYWRvbmx5KCk7XG5cbiAgZ2V0IHZhcmlhYmxlcygpIHtcbiAgICByZXR1cm4gdGhpcy52YXJpYWJsZXMkKCk7XG4gIH1cblxuICBnZXQgZnVuY3Rpb25zKCk6IHsgW2tleTogc3RyaW5nXTogRnVuY3Rpb24gfSB7XG4gICAgcmV0dXJuIHRoaXMuZnVuY3Rpb25zJCgpO1xuICB9XG5cbiAgaW5pdGlhbCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5jb250ZXh0JC5zZXQodmFsdWUpO1xuICAgIC8vIFRPRE86IGNoZWNrIHBlcmZvcm1hbmNlXG4gICAgdGhpcy5vbkNoYW5nZWQubmV4dCh7XG4gICAgICBvbGRWYWx1ZTogbnVsbCxcbiAgICAgIG5ld1ZhbHVlOiBudWxsLFxuICAgICAgZGF0YTogdGhpcy5jb250ZXh0KCksXG4gICAgICBpbml0OiB0cnVlXG4gICAgfSk7XG4gIH1cblxuXG4gIHNldFZhcmlhYmxlcyhrZXlzVmFsdWVzOiBhbnkpOiB2b2lkO1xuICBzZXRWYXJpYWJsZXMoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkO1xuICBzZXRWYXJpYWJsZXMoLi4uYXJnczogYW55W10pOiB2b2lkIHtcbiAgICBpZiAoYXJncy5sZW5ndGggPT0gMClcbiAgICAgIHJldHVybjtcbiAgICBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PSAxKVxuICAgICAgdGhpcy52YXJpYWJsZXMkLnNldChhcmdzWzBdKTtcbiAgICBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PSAyKSB7XG4gICAgICB0aGlzLnZhcmlhYmxlcyQudXBkYXRlKHYgPT4gc2V0KHYsIGFyZ3NbMF0sIGFyZ3NbMV0pKTtcbiAgICB9XG4gIH1cblxuXG4gIHNldEZ1bmN0aW9ucyhrZXlzVmFsdWVzOiBhbnkpOiB2b2lkO1xuICBzZXRGdW5jdGlvbnMoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkO1xuICBzZXRGdW5jdGlvbnMoLi4uYXJnczogYW55W10pOiB2b2lkIHtcbiAgICBpZiAoYXJncy5sZW5ndGggPT0gMClcbiAgICAgIHJldHVybjtcbiAgICBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PSAxKVxuICAgICAgdGhpcy5mdW5jdGlvbnMkLnNldChhcmdzWzBdKTtcbiAgICBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PSAyKSB7XG4gICAgICB0aGlzLmZ1bmN0aW9ucyQudXBkYXRlKHYgPT4gc2V0KHYsIGFyZ3NbMF0sIGFyZ3NbMV0pKTtcbiAgICB9XG4gIH1cblxuXG4gIHNldFZhbHVlKHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSwgaW5pdDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSBnZXQodGhpcy5jb250ZXh0JCgpLCBwYXRoKTtcbiAgICBpZiAoaXNFcXVhbChvbGRWYWx1ZSwgdmFsdWUpKVxuICAgICAgcmV0dXJuO1xuICAgIGlmICghdGhpcy5kZWJvdW5jZXJzW3BhdGhdKSB7XG4gICAgICAvLyBDcmVhdGUgYSBuZXcgU3ViamVjdCBmb3IgZGVib3VuY2luZyBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICB0aGlzLmRlYm91bmNlcnNbcGF0aF0gPSBuZXcgU3ViamVjdDx7IHBhdGg6IHN0cmluZzsgdmFsdWU6IGFueSwgaW5pdDogYm9vbGVhbiB9PigpO1xuXG4gICAgICAvLyBTdWJzY3JpYmUgdG8gdGhlIHN1YmplY3Qgd2l0aCBkZWJvdW5jZVRpbWVcbiAgICAgIHRoaXMuZGVib3VuY2VyU3Vic2NyaXB0aW9uc1twYXRoXSA9XG4gICAgICAgIHRoaXMuZGVib3VuY2Vyc1twYXRoXVxuICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxNTApKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHsgdmFsdWUsIGluaXQgfSkgPT4ge1xuICAgICAgICAgICAgLy8gT25seSBlbWl0IG9uQ2hhbmdlZCBldmVudCBhZnRlciBkZWJvdW5jZSB0aW1lXG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlZC5uZXh0KHtcbiAgICAgICAgICAgICAgb2xkVmFsdWU6IG9sZFZhbHVlLFxuICAgICAgICAgICAgICBuZXdWYWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgIGRhdGE6IHRoaXMuY29udGV4dCgpLFxuICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgY29udGV4dCBpbW1lZGlhdGVseVxuICAgIHRoaXMuY29udGV4dCQudXBkYXRlKChjdHgpID0+IHNldChjbG9uZShjdHgpLCBwYXRoLCB2YWx1ZSkpO1xuICAgIC8vIEVtaXQgdmFsdWUgdGhyb3VnaCB0aGUgZGVib3VuY2VyIHN1YmplY3RcbiAgICB0aGlzLmRlYm91bmNlcnNbcGF0aF0ubmV4dCh7IHBhdGgsIHZhbHVlLCBpbml0IH0pO1xuICB9XG5cbiAgZ2V0VmFsdWUocGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGdldCh0aGlzLmNvbnRleHQoKSwgcGF0aCk7XG4gIH1cblxuICByZWdpc3RlcldpZGdldChpZDogc3RyaW5nLCB3aWRnZXQ6IEFYUExheW91dEVsZW1lbnQpIHtcbiAgICB0aGlzLndpZGdldHMuc2V0KGlkLCB3aWRnZXQpO1xuICB9XG5cbiAgZ2V0V2lkZ2V0KGlkOiBzdHJpbmcpOiBBWFBMYXlvdXRFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy53aWRnZXRzLmdldChpZCk7XG4gIH1cblxuICBwcml2YXRlIHVuc3Vic2NyaWJlRGVib3VuY2VycygpIHtcbiAgICBPYmplY3Qua2V5cyh0aGlzLmRlYm91bmNlclN1YnNjcmlwdGlvbnMpLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgIHRoaXMuZGVib3VuY2VyU3Vic2NyaXB0aW9uc1twYXRoXS51bnN1YnNjcmliZSgpO1xuICAgICAgZGVsZXRlIHRoaXMuZGVib3VuY2VyU3Vic2NyaXB0aW9uc1twYXRoXTsgLy8gQ2xlYW4gdXAgdGhlIHJlZmVyZW5jZVxuICAgICAgZGVsZXRlIHRoaXMuZGVib3VuY2Vyc1twYXRoXTsgLy8gQWxzbyBjbGVhbiB1cCB0aGUgZGVib3VuY2VyIHN1YmplY3RcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5zdWJzY3JpYmVEZWJvdW5jZXJzKCk7XG4gIH1cbn1cbiJdfQ==
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUszRCxNQUFNLE9BQWdCLGdCQUFnQjtJQUdwQyxHQUFHO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0NBQ0Y7QUFHRCxNQUFNLE9BQU8sdUJBQXVCO0lBRHBDO1FBRW1CLGFBQVEsR0FBRyxNQUFNLENBQU0sRUFBRSxDQUFDLENBQUM7UUFDM0IsZUFBVSxHQUFHLE1BQU0sQ0FBTSxFQUFFLENBQUMsQ0FBQztRQUM3QixlQUFVLEdBQUcsTUFBTSxDQUE4QixFQUFFLENBQUMsQ0FBQztRQUV0RCxjQUFTLEdBQW1DLElBQUksT0FBTyxFQUF5QixDQUFDO1FBQ2pGLGNBQVMsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUV2RCxlQUFVLEdBQTRFLEVBQUUsQ0FBQztRQUN6RiwyQkFBc0IsR0FBb0MsRUFBRSxDQUFDO1FBRTdELFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBNEIsQ0FBQztRQUUvQyxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQTBGN0M7SUF4RkMsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFD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ICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lLCBnZXQsIGlzRXF1YWwsIHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQTGF5b3V0Q29udGV4dEV2ZW50IH0gZnJvbSAnLi93aWRnZXQudHlwZXMnO1xuXG5leHBvcnQgdHlwZSBBWFBMYXlvdXRFbGVtZW50QVBJID0geyBbbmFtZTogc3RyaW5nXTogU3ViamVjdDxhbnk+IHwgRnVuY3Rpb24gfTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUExheW91dEVsZW1lbnQge1xuICBhYnN0cmFjdCBnZXQgaWQoKTogc3RyaW5nIHwgbnVsbDtcblxuICBhcGkoKTogQVhQTGF5b3V0RWxlbWVudEFQSSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWFBMYXlvdXRCdWlsZGVyU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29udGV4dCQgPSBzaWduYWw8YW55Pih7fSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmFyaWFibGVzJCA9IHNpZ25hbDxhbnk+KHt9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBmdW5jdGlvbnMkID0gc2lnbmFsPHsgW2tleTogc3RyaW5nXTogRnVuY3Rpb24gfT4oe30pO1xuXG4gIHB1YmxpYyByZWFkb25seSBvbkNoYW5nZWQ6IFN1YmplY3Q8QVhQTGF5b3V0Q29udGV4dEV2ZW50PiA9IG5ldyBTdWJqZWN0PEFYUExheW91dENvbnRleHRFdmVudD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IG9uUmVmcmVzaDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBkZWJvdW5jZXJzOiB7IFtrZXk6IHN0cmluZ106IFN1YmplY3Q8eyBwYXRoOiBzdHJpbmc7IHZhbHVlOiBhbnk7IGluaXQ6IGJvb2xlYW4gfT4gfSA9IHt9O1xuICBwcml2YXRlIGRlYm91bmNlclN1YnNjcmlwdGlvbnM6IHsgW2tleTogc3RyaW5nXTogU3Vic2NyaXB0aW9uIH0gPSB7fTtcblxuICBwcml2YXRlIHdpZGdldHMgPSBuZXcgTWFwPHN0cmluZywgQVhQTGF5b3V0RWxlbWVudD4oKTtcblxuICBwdWJsaWMgY29udGV4dCA9IHRoaXMuY29udGV4dCQuYXNSZWFkb25seSgpO1xuXG4gIGdldCB2YXJpYWJsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFyaWFibGVzJCgpO1xuICB9XG5cbiAgZ2V0IGZ1bmN0aW9ucygpOiB7IFtrZXk6IHN0cmluZ106IEZ1bmN0aW9uIH0ge1xuICAgIHJldHVybiB0aGlzLmZ1bmN0aW9ucyQoKTtcbiAgfVxuXG4gIGluaXRpYWwodmFsdWU6IGFueSkge1xuICAgIHRoaXMuY29udGV4dCQuc2V0KHZhbHVlKTtcbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm9uUmVmcmVzaC5uZXh0KCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBzZXRWYXJpYWJsZXMoa2V5c1ZhbHVlczogYW55KTogdm9pZDtcbiAgc2V0VmFyaWFibGVzKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZDtcbiAgc2V0VmFyaWFibGVzKC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID09IDApIHJldHVybjtcbiAgICBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PSAxKSB0aGlzLnZhcmlhYmxlcyQuc2V0KGFyZ3NbMF0pO1xuICAgIGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09IDIpIHtcbiAgICAgIHRoaXMudmFyaWFibGVzJC51cGRhdGUoKHYpID0+IHNldCh2LCBhcmdzWzBdLCBhcmdzWzFdKSk7XG4gICAgfVxuICB9XG5cbiAgc2V0RnVuY3Rpb25zKGtleXNWYWx1ZXM6IGFueSk6IHZvaWQ7XG4gIHNldEZ1bmN0aW9ucyhrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQ7XG4gIHNldEZ1bmN0aW9ucyguLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PSAwKSByZXR1cm47XG4gICAgZWxzZSBpZiAoYXJncy5sZW5ndGggPT0gMSkgdGhpcy5mdW5jdGlvbnMkLnNldChhcmdzWzBdKTtcbiAgICBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PSAyKSB7XG4gICAgICB0aGlzLmZ1bmN0aW9ucyQudXBkYXRlKCh2KSA9PiBzZXQodiwgYXJnc1swXSwgYXJnc1sxXSkpO1xuICAgIH1cbiAgfVxuXG4gIHNldFZhbHVlKHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSwgaW5pdDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSBnZXQodGhpcy5jb250ZXh0JCgpLCBwYXRoKTtcbiAgICBpZiAoaXNFcXVhbChvbGRWYWx1ZSwgdmFsdWUpKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmRlYm91bmNlcnNbcGF0aF0pIHtcbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBTdWJqZWN0IGZvciBkZWJvdW5jaW5nIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICAgIHRoaXMuZGVib3VuY2Vyc1twYXRoXSA9IG5ldyBTdWJqZWN0PHsgcGF0aDogc3RyaW5nOyB2YWx1ZTogYW55OyBpbml0OiBib29sZWFuIH0+KCk7XG5cbiAgICAgIC8vIFN1YnNjcmliZSB0byB0aGUgc3ViamVjdCB3aXRoIGRlYm91bmNlVGltZVxuICAgICAgdGhpcy5kZWJvdW5jZXJTdWJzY3JpcHRpb25zW3BhdGhdID0gdGhpcy5kZWJvdW5jZXJzW3BhdGhdLnBpcGUoZGVib3VuY2VUaW1lKDE1MCkpLnN1YnNjcmliZSgoeyB2YWx1ZSwgaW5pdCB9KSA9PiB7XG4gICAgICAgIC8vIE9ubHkgZW1pdCBvbkNoYW5nZWQgZXZlbnQgYWZ0ZXIgZGVib3VuY2UgdGltZVxuICAgICAgICB0aGlzLm9uQ2hhbmdlZC5uZXh0KHtcbiAgICAgICAgICBvbGRWYWx1ZTogb2xkVmFsdWUsXG4gICAgICAgICAgbmV3VmFsdWU6IHZhbHVlLFxuICAgICAgICAgIGRhdGE6IHRoaXMuY29udGV4dCgpLFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgaW5pdCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgY29udGV4dCBpbW1lZGlhdGVseVxuICAgIHRoaXMuY29udGV4dCQudXBkYXRlKChjdHgpID0+IHNldChjbG9uZShjdHgpLCBwYXRoLCB2YWx1ZSkpO1xuICAgIC8vIEVtaXQgdmFsdWUgdGhyb3VnaCB0aGUgZGVib3VuY2VyIHN1YmplY3RcbiAgICB0aGlzLmRlYm91bmNlcnNbcGF0aF0ubmV4dCh7IHBhdGgsIHZhbHVlLCBpbml0IH0pO1xuICB9XG5cbiAgZ2V0VmFsdWUocGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGdldCh0aGlzLmNvbnRleHQoKSwgcGF0aCk7XG4gIH1cblxuICByZWdpc3RlcldpZGdldChpZDogc3RyaW5nLCB3aWRnZXQ6IEFYUExheW91dEVsZW1lbnQpIHtcbiAgICB0aGlzLndpZGdldHMuc2V0KGlkLCB3aWRnZXQpO1xuICB9XG5cbiAgZ2V0V2lkZ2V0KGlkOiBzdHJpbmcpOiBBWFBMYXlvdXRFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy53aWRnZXRzLmdldChpZCk7XG4gIH1cblxuICBwcml2YXRlIHVuc3Vic2NyaWJlRGVib3VuY2VycygpIHtcbiAgICBPYmplY3Qua2V5cyh0aGlzLmRlYm91bmNlclN1YnNjcmlwdGlvbnMpLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgIHRoaXMuZGVib3VuY2VyU3Vic2NyaXB0aW9uc1twYXRoXS51bnN1YnNjcmliZSgpO1xuICAgICAgZGVsZXRlIHRoaXMuZGVib3VuY2VyU3Vic2NyaXB0aW9uc1twYXRoXTsgLy8gQ2xlYW4gdXAgdGhlIHJlZmVyZW5jZVxuICAgICAgZGVsZXRlIHRoaXMuZGVib3VuY2Vyc1twYXRoXTsgLy8gQWxzbyBjbGVhbiB1cCB0aGUgZGVib3VuY2VyIHN1YmplY3RcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5zdWJzY3JpYmVEZWJvdW5jZXJzKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,27 @@
1
+ import { inject, Injectable, InjectionToken } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export const AXP_WIDGET_DATASOURCE_PROVIDER = new InjectionToken('AXP_WIDGET_DATASOURCE_PROVIDER');
4
+ export class AXPWidgetDataSourceProviderService {
5
+ constructor() {
6
+ this.providers = inject(AXP_WIDGET_DATASOURCE_PROVIDER, { optional: true });
7
+ }
8
+ async items() {
9
+ const items = [];
10
+ if (Array.isArray(this.providers)) {
11
+ for (const provider of this.providers) {
12
+ items.push(...(await provider.items()));
13
+ }
14
+ }
15
+ return items;
16
+ }
17
+ async get(name) {
18
+ return (await this.items()).find((c) => c.name == name);
19
+ }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPWidgetDataSourceProviderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
21
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPWidgetDataSourceProviderService, providedIn: 'root' }); }
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPWidgetDataSourceProviderService, decorators: [{
24
+ type: Injectable,
25
+ args: [{ providedIn: 'root' }]
26
+ }] });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS1wcm92aWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvZGF0YXNvdXJjZS1wcm92aWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFvQm5FLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLElBQUksY0FBYyxDQUM5RCxnQ0FBZ0MsQ0FDakMsQ0FBQztBQUdGLE1BQU0sT0FBTyxrQ0FBa0M7SUFEL0M7UUFFVSxjQUFTLEdBQUcsTUFBTSxDQUFDLDhCQUE4QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7S0FpQmhGO0lBZkMsS0FBSyxDQUFDLEtBQUs7UUFDVCxNQUFNLEtBQUssR0FBMEIsRUFBRSxDQUFDO1FBRXhDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDdEMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFZO1FBQ3BCLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDOzhHQWpCVSxrQ0FBa0M7a0hBQWxDLGtDQUFrQyxjQURyQixNQUFNOzsyRkFDbkIsa0NBQWtDO2tCQUQ5QyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRGF0YVNvdXJjZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldERhdGFTb3VyY2Uge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGNvbHVtbnM6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICAvLyBkYXRhVHlwZTogc3RyaW5nO1xuICAgIC8vIG51bGxhYmxlPzogYm9vbGVhbjtcbiAgICAvLyBpbnRlcmZhY2U/OiBQYXJ0aWFsPEFYRW50aXR5UHJvcGVydHlXaWRnZXQ+O1xuICB9W107XG4gIHNhbXBsZXM/OiBhbnlbXTtcbiAgc291cmNlOiAoKSA9PiBBWERhdGFTb3VyY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0RGF0YVNvdXJjZVByb3ZpZGVyIHtcbiAgaXRlbXMoKTogUHJvbWlzZTxBWFBXaWRnZXREYXRhU291cmNlW10+O1xufVxuXG5leHBvcnQgY29uc3QgQVhQX1dJREdFVF9EQVRBU09VUkNFX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuPEFYUFdpZGdldERhdGFTb3VyY2VQcm92aWRlcltdPihcbiAgJ0FYUF9XSURHRVRfREFUQVNPVVJDRV9QUk9WSURFUidcbik7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0RGF0YVNvdXJjZVByb3ZpZGVyU2VydmljZSBpbXBsZW1lbnRzIEFYUFdpZGdldERhdGFTb3VyY2VQcm92aWRlciB7XG4gIHByaXZhdGUgcHJvdmlkZXJzID0gaW5qZWN0KEFYUF9XSURHRVRfREFUQVNPVVJDRV9QUk9WSURFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBhc3luYyBpdGVtcygpOiBQcm9taXNlPEFYUFdpZGdldERhdGFTb3VyY2VbXT4ge1xuICAgIGNvbnN0IGl0ZW1zOiBBWFBXaWRnZXREYXRhU291cmNlW10gPSBbXTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMucHJvdmlkZXJzKSkge1xuICAgICAgZm9yIChjb25zdCBwcm92aWRlciBvZiB0aGlzLnByb3ZpZGVycykge1xuICAgICAgICBpdGVtcy5wdXNoKC4uLihhd2FpdCBwcm92aWRlci5pdGVtcygpKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgYXN5bmMgZ2V0KG5hbWU6IHN0cmluZyk6IFByb21pc2U8QVhQV2lkZ2V0RGF0YVNvdXJjZSB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5pdGVtcygpKS5maW5kKChjKSA9PiBjLm5hbWUgPT0gbmFtZSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +1,6 @@
1
1
  export * from './builder.module';
2
2
  export * from './builder.service';
3
+ export * from './datasource-provider.service';
3
4
  export * from './widget-catalog';
4
5
  export * from './widget-column-renderer';
5
6
  export * from './widget-container.component';
@@ -8,4 +9,4 @@ export * from './widget-registery.service';
8
9
  export * from './widget-renderer.component';
9
10
  export * from './widget-renderer.component.directive';
10
11
  export * from './widget.types';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9idWlsZGVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2J1aWxkZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldC1jYXRhbG9nJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0LWNvbHVtbi1yZW5kZXJlcic7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldC1jb250YWluZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0LWdyb3Vwcyc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldC1yZWdpc3Rlcnkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldC1yZW5kZXJlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXQtcmVuZGVyZXIuY29tcG9uZW50LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldC50eXBlcyc7XG4iXX0=
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2J1aWxkZXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vYnVpbGRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXNvdXJjZS1wcm92aWRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0LWNhdGFsb2cnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXQtY29sdW1uLXJlbmRlcmVyJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0LWNvbnRhaW5lci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXQtZ3JvdXBzJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0LXJlZ2lzdGVyeS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0LXJlbmRlcmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldC1yZW5kZXJlci5jb21wb25lbnQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0LnR5cGVzJztcbiJdfQ==
@@ -6,17 +6,10 @@ export class AXPWidgetContainerComponent {
6
6
  constructor() {
7
7
  this.onChanged = new EventEmitter();
8
8
  this.context = model({});
9
- this.init = false;
10
9
  this.unsubscriber = inject(AXUnsubscriber);
11
10
  this.builderService = inject(AXPLayoutBuilderService);
12
11
  this.ef = effect(() => {
13
- //console.log('effect', this.context(), this.init);
14
12
  this.builderService.initial(this.context());
15
- // if (!this.init) {
16
- // this.init = true;
17
- // } else {
18
- // this.builderService.refresh();
19
- // }
20
13
  }, { allowSignalWrites: true });
21
14
  }
22
15
  set variables(v) {
@@ -50,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
50
43
  }], functions: [{
51
44
  type: Input
52
45
  }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci93aWRnZXQtY29udGFpbmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFVNUQsTUFBTSxPQUFPLDJCQUEyQjtJQVB4QztRQVNrQixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFFL0QsWUFBTyxHQUFHLEtBQUssQ0FBTSxFQUFFLENBQUMsQ0FBQztRQUV4QixTQUFJLEdBQUcsS0FBSyxDQUFDO1FBWWIsaUJBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEMsbUJBQWMsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUVqRCxPQUFFLEdBQUcsTUFBTSxDQUNqQixHQUFHLEVBQUU7WUFDSCxtREFBbUQ7WUFDbkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDNUMsb0JBQW9CO1lBQ3BCLHNCQUFzQjtZQUN0QixXQUFXO1lBQ1gsbUNBQW1DO1lBQ25DLElBQUk7UUFDTixDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDNUIsQ0FBQztLQVFIO0lBaENDLElBQ1csU0FBUyxDQUFDLENBQU07UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQ1csU0FBUyxDQUFDLENBQU07UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQWtCRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNyRixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXZDVSwyQkFBMkI7a0dBQTNCLDJCQUEyQixtakJBRjNCLENBQUMsdUJBQXVCLEVBQUUsY0FBYyxDQUFDLDBCQUgxQywyQkFBMkI7OzJGQUsxQiwyQkFBMkI7a0JBUHZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRTtvQkFDckMsU0FBUyxFQUFFLENBQUMsdUJBQXVCLEVBQUUsY0FBYyxDQUFDO2lCQUNyRDs4QkFHaUIsU0FBUztzQkFEeEIsTUFBTTtnQkFRSSxTQUFTO3NCQURuQixLQUFLO2dCQU1LLFNBQVM7c0JBRG5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIGVmZmVjdCwgaW5qZWN0LCBtb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UgfSBmcm9tICcuL2J1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBMYXlvdXRDb250ZXh0RXZlbnQgfSBmcm9tICcuL3dpZGdldC50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC13aWRnZXRzLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IHN0eWxlOiAnZGlzcGxheTogY29udGVudHM7JyB9LFxuICBwcm92aWRlcnM6IFtBWFBMYXlvdXRCdWlsZGVyU2VydmljZSwgQVhVbnN1YnNjcmliZXJdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBXaWRnZXRDb250YWluZXJDb21wb25lbnQge1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IG9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QVhQTGF5b3V0Q29udGV4dEV2ZW50PigpO1xuXG4gIHB1YmxpYyBjb250ZXh0ID0gbW9kZWw8YW55Pih7fSk7XG5cbiAgcHJpdmF0ZSBpbml0ID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB2YXJpYWJsZXModjogYW55KSB7XG4gICAgdGhpcy5idWlsZGVyU2VydmljZS5zZXRWYXJpYWJsZXModik7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZ1bmN0aW9ucyh2OiBhbnkpIHtcbiAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLnNldEZ1bmN0aW9ucyh2KTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVyID0gaW5qZWN0KEFYVW5zdWJzY3JpYmVyKTtcbiAgcHJpdmF0ZSBidWlsZGVyU2VydmljZSA9IGluamVjdChBWFBMYXlvdXRCdWlsZGVyU2VydmljZSk7XG5cbiAgcHJpdmF0ZSBlZiA9IGVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICAvL2NvbnNvbGUubG9nKCdlZmZlY3QnLCB0aGlzLmNvbnRleHQoKSwgdGhpcy5pbml0KTtcbiAgICAgIHRoaXMuYnVpbGRlclNlcnZpY2UuaW5pdGlhbCh0aGlzLmNvbnRleHQoKSk7XG4gICAgICAvLyBpZiAoIXRoaXMuaW5pdCkge1xuICAgICAgLy8gICB0aGlzLmluaXQgPSB0cnVlO1xuICAgICAgLy8gfSBlbHNlIHtcbiAgICAgIC8vICAgdGhpcy5idWlsZGVyU2VydmljZS5yZWZyZXNoKCk7XG4gICAgICAvLyB9XG4gICAgfSxcbiAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLm9uQ2hhbmdlZC5waXBlKHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgdGhpcy5jb250ZXh0LnNldChlLmRhdGEpO1xuICAgICAgdGhpcy5vbkNoYW5nZWQuZW1pdChlKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci93aWRnZXQtY29udGFpbmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFVNUQsTUFBTSxPQUFPLDJCQUEyQjtJQVB4QztRQVNrQixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFFL0QsWUFBTyxHQUFHLEtBQUssQ0FBTSxFQUFFLENBQUMsQ0FBQztRQWF4QixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRWpELE9BQUUsR0FBRyxNQUFNLENBQ2pCLEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUM1QixDQUFDO0tBUUg7SUExQkMsSUFDVyxTQUFTLENBQUMsQ0FBTTtRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFDVyxTQUFTLENBQUMsQ0FBTTtRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBWUQsUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDckYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FoQ1UsMkJBQTJCO2tHQUEzQiwyQkFBMkIsbWpCQUYzQixDQUFDLHVCQUF1QixFQUFFLGNBQWMsQ0FBQywwQkFIMUMsMkJBQTJCOzsyRkFLMUIsMkJBQTJCO2tCQVB2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7b0JBQ3JDLFNBQVMsRUFBRSxDQUFDLHVCQUF1QixFQUFFLGNBQWMsQ0FBQztpQkFDckQ7OEJBR2lCLFNBQVM7c0JBRHhCLE1BQU07Z0JBT0ksU0FBUztzQkFEbkIsS0FBSztnQkFNSyxTQUFTO3NCQURuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhVbnN1YnNjcmliZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBlZmZlY3QsIGluamVjdCwgbW9kZWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi9idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQTGF5b3V0Q29udGV4dEV2ZW50IH0gZnJvbSAnLi93aWRnZXQudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheHAtd2lkZ2V0cy1jb250YWluZXInLFxuICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDogeyBzdHlsZTogJ2Rpc3BsYXk6IGNvbnRlbnRzOycgfSxcbiAgcHJvdmlkZXJzOiBbQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UsIEFYVW5zdWJzY3JpYmVyXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0Q29udGFpbmVyQ29tcG9uZW50IHtcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEFYUExheW91dENvbnRleHRFdmVudD4oKTtcblxuICBwdWJsaWMgY29udGV4dCA9IG1vZGVsPGFueT4oe30pO1xuXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB2YXJpYWJsZXModjogYW55KSB7XG4gICAgdGhpcy5idWlsZGVyU2VydmljZS5zZXRWYXJpYWJsZXModik7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZ1bmN0aW9ucyh2OiBhbnkpIHtcbiAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLnNldEZ1bmN0aW9ucyh2KTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVyID0gaW5qZWN0KEFYVW5zdWJzY3JpYmVyKTtcbiAgcHJpdmF0ZSBidWlsZGVyU2VydmljZSA9IGluamVjdChBWFBMYXlvdXRCdWlsZGVyU2VydmljZSk7XG5cbiAgcHJpdmF0ZSBlZiA9IGVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLmluaXRpYWwodGhpcy5jb250ZXh0KCkpO1xuICAgIH0sXG4gICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICk7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5idWlsZGVyU2VydmljZS5vbkNoYW5nZWQucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgIHRoaXMuY29udGV4dC5zZXQoZS5kYXRhKTtcbiAgICAgIHRoaXMub25DaGFuZ2VkLmVtaXQoZSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,10 +1,10 @@
1
1
  import { AXUnsubscriber } from '@acorex/core/utils';
2
- import { Directive, Injector, ViewContainerRef, inject, input, signal } from '@angular/core';
2
+ import { Directive, Injector, ViewContainerRef, inject, input, signal, } from '@angular/core';
3
3
  import { cloneDeep, get, merge, set, sum } from 'lodash-es';
4
4
  import { filter } from 'rxjs';
5
5
  import { AXPLayoutBuilderService } from './builder.service';
6
6
  import { AXPWidgetRegistryService } from './widget-registery.service';
7
- import { AXP_WIDGET_TOKEN } from './widget.types';
7
+ import { AXP_WIDGET_TOKEN, } from './widget.types';
8
8
  import * as i0 from "@angular/core";
9
9
  export class AXPWidgetRendererDirective {
10
10
  constructor() {
@@ -22,9 +22,7 @@ export class AXPWidgetRendererDirective {
22
22
  this.expressionCache = new Map();
23
23
  this.expressionEvaluators = new Map();
24
24
  this.scope = null;
25
- this.builderService.onChanged
26
- .pipe(this.unsubscriber.takeUntilDestroy)
27
- .subscribe(async (e) => {
25
+ this.builderService.onChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async (e) => {
28
26
  if ((await this.updateOptionsBasedOnContext()) > 0) {
29
27
  this.applyOptions();
30
28
  }
@@ -32,23 +30,25 @@ export class AXPWidgetRendererDirective {
32
30
  await this.updateValueBasedOnFormula();
33
31
  }
34
32
  });
33
+ this.builderService.onRefresh.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async () => {
34
+ if ((await this.updateOptionsBasedOnContext()) > 0) {
35
+ this.applyOptions();
36
+ }
37
+ });
35
38
  }
36
39
  // Detect input changes
37
- async ngOnChanges(changes) {
40
+ ngOnChanges(changes) {
38
41
  if (changes['mode'] || changes['node']) {
39
42
  // Check if either 'mode' or 'node' has changed
40
- await this.rerenderComponent();
43
+ this.rerenderComponent();
41
44
  }
42
45
  }
43
- async rerenderComponent() {
44
- // Destroy the existing component if it exists
45
- if (this.componentRef) {
46
- this.componentRef.destroy();
47
- }
48
- this.viewContainerRef.clear();
46
+ rerenderComponent() {
49
47
  this.isLoading.set(false);
50
48
  // Call loadComponent to create and render the component
51
- await this.loadComponent();
49
+ setTimeout(async () => {
50
+ await this.loadComponent();
51
+ });
52
52
  }
53
53
  ngOnDestroy() {
54
54
  if (this.componentRef) {
@@ -56,14 +56,20 @@ export class AXPWidgetRendererDirective {
56
56
  }
57
57
  }
58
58
  async loadComponent() {
59
- if (this.isLoading())
59
+ if (this.isLoading()) {
60
60
  return;
61
+ }
61
62
  this.isLoading.set(true);
63
+ // Destroy the existing component if it exists
64
+ if (this.componentRef) {
65
+ this.componentRef.destroy();
66
+ }
62
67
  this.viewContainerRef.clear();
68
+ //
63
69
  const widget = this.widgetRegistery.resolve(this.node().type);
64
70
  //
65
- const props = widget?.components[this.mode()]?.properties
66
- ?.filter((c) => c.schema.defaultValue)
71
+ const props = [...(widget?.properties ?? []), ...(widget?.components[this.mode()]?.properties ?? [])]
72
+ ?.filter((c) => c.schema.defaultValue != null)
67
73
  .map((c) => ({ [c.name]: c.schema.defaultValue }))
68
74
  .reduce((acc, curr) => {
69
75
  return { ...acc, ...curr };
@@ -115,15 +121,18 @@ export class AXPWidgetRendererDirective {
115
121
  return false;
116
122
  }
117
123
  preprocessAndInitialOptions(obj, pathPrefix = '') {
118
- if (!obj)
124
+ if (!obj) {
119
125
  return;
126
+ }
120
127
  Object.entries(obj).forEach(([key, value]) => {
121
128
  const currentPath = pathPrefix ? `${pathPrefix}.${key}` : key;
122
129
  if (typeof value === 'string' && value.includes('{{')) {
123
130
  // Cache dynamic expression for later evaluation
124
131
  this.expressionEvaluators.set(currentPath, () => this.evaluateExpression(value));
125
132
  }
126
- else if (typeof value === 'object' && value !== null && (value.constructor === Object || Array.isArray(value))) {
133
+ else if (typeof value === 'object' &&
134
+ value !== null &&
135
+ (value.constructor === Object || Array.isArray(value))) {
127
136
  // Recursively handle nested objects
128
137
  this.preprocessAndInitialOptions(value, currentPath);
129
138
  }
@@ -136,11 +145,12 @@ export class AXPWidgetRendererDirective {
136
145
  });
137
146
  }
138
147
  async updateOptionsBasedOnContext() {
139
- const updates = [];
140
- for (let [path, evaluator] of this.expressionEvaluators) {
148
+ const updatePromises = Array.from(this.expressionEvaluators).map(async ([path, evaluator]) => {
141
149
  const newValue = await evaluator();
142
- updates.push({ path, newValue });
143
- }
150
+ return { path, newValue };
151
+ });
152
+ // Wait for all evaluators to complete
153
+ const updates = await Promise.all(updatePromises);
144
154
  // Apply updates to mergedOptions
145
155
  if (updates.length > 0) {
146
156
  this.mergedOptions.update((o) => {
@@ -300,4 +310,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
300
310
  ],
301
311
  }]
302
312
  }], ctorParameters: () => [] });
303
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXJlbmRlcmVyLmNvbXBvbmVudC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci93aWRnZXQtcmVuZGVyZXIuY29tcG9uZW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFnQixTQUFTLEVBQUUsUUFBUSxFQUFpQixnQkFBZ0IsRUFBMEIsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEosT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUQsT0FBTyxFQUFjLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQThFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBVzlILE1BQU0sT0FBTywwQkFBMEI7SUF5QnJDO1FBdEJBLGVBQVUsR0FBRyxLQUFLLEVBQTZCLENBQUM7UUFFaEQsVUFBSyxHQUFHLEtBQUssRUFBaUIsQ0FBQztRQUUvQixTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBdUIsQ0FBQztRQUM3QyxTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBaUIsQ0FBQztRQUU3QixrQkFBYSxHQUF3QixNQUFNLENBQU0sRUFBRSxDQUFDLENBQUM7UUFFdkQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQixtQkFBYyxHQUFHLE1B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QTBCLG1pQkFOMUI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsY0FBYzthQUN4QjtTQUNGOzsyRkFFVSwwQkFBMEI7a0JBUnRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxjQUFjO3lCQUN4QjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYVW5zdWJzY3JpYmVyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgRGlyZWN0aXZlLCBJbmplY3RvciwgU2ltcGxlQ2hhbmdlcywgVmlld0NvbnRhaW5lclJlZiwgV3JpdGFibGVTaWduYWwsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGdldCwgbWVyZ2UsIHNldCwgc3VtIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UgfSBmcm9tICcuL2J1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3dpZGdldC1yZWdpc3Rlcnkuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRDb21wb25lbnQsIEFYUFdpZGdldE5vZGUsIEFYUFdpZGdldE5vZGVUb2tlbiwgQVhQV2lkZ2V0UmVuZGVyTW9kZSwgQVhQX1dJREdFVF9UT0tFTiB9IGZyb20gJy4vd2lkZ2V0LnR5cGVzJztcblxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYXhwLXdpZGdldC1yZW5kZXJlcl0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFVuc3Vic2NyaWJlcixcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBXaWRnZXRSZW5kZXJlckRpcmVjdGl2ZSB7XG5cblxuICBwYXJlbnROb2RlID0gaW5wdXQ8QVhQV2lkZ2V0Q29tcG9uZW50IHwgbnVsbD4oKTtcblxuICBpbmRleCA9IGlucHV0PG51bWJlciB8IG51bGw+KCk7XG5cbiAgbW9kZSA9IGlucHV0LnJlcXVpcmVkPEFYUFdpZGdldFJlbmRlck1vZGU+KCk7XG4gIG5vZGUgPSBpbnB1dC5yZXF1aXJlZDxBWFBXaWRnZXROb2RlPigpO1xuXG4gIHByb3RlY3RlZCBtZXJnZWRPcHRpb25zOiBXcml0YWJsZVNpZ25hbDxhbnk+ID0gc2lnbmFsPGFueT4oe30pO1xuXG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcm90ZWN0ZWQgYnVpbGRlclNlcnZpY2UgPSBpbmplY3QoQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgd2lkZ2V0UmVnaXN0ZXJ5ID0gaW5qZWN0KEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSk7XG4gIHByb3RlY3RlZCB1bnN1YnNjcmliZXIgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuICBwcml2YXRlIHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgcHJvdGVjdGVkIGlzTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgaW5zdGFuY2UhOiBBWFBXaWRnZXRDb21wb25lbnQ7XG4gIHByaXZhdGUgZXhwcmVzc2lvbkNhY2hlOiBNYXA8c3RyaW5nLCAoKSA9PiBQcm9taXNlPGFueT4+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIGV4cHJlc3Npb25FdmFsdWF0b3JzOiBNYXA8c3RyaW5nLCAoKSA9PiBQcm9taXNlPGFueT4+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIHNjb3BlOiBhbnkgPSBudWxsO1xuICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5idWlsZGVyU2VydmljZS5vbkNoYW5nZWRcbiAgICAgIC5waXBlKHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jIChlKSA9PiB7XG4gICAgICAgIGlmICgoYXdhaXQgdGhpcy51cGRhdGVPcHRpb25zQmFzZWRPbkNvbnRleHQoKSkgPiAwKSB7XG4gICAgICAgICAgdGhpcy5hcHBseU9wdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jaGVja0Zvcm11bGFGb3JVcGRhdGUodGhpcy5ub2RlKCkuZm9ybXVsYSwgZS5wYXRoKSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlVmFsdWVCYXNlZE9uRm9ybXVsYSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8vIERldGVjdCBpbnB1dCBjaGFuZ2VzXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snbW9kZSddIHx8IGNoYW5nZXNbJ25vZGUnXSkge1xuICAgICAgLy8gQ2hlY2sgaWYgZWl0aGVyICdtb2RlJyBvciAnbm9kZScgaGFzIGNoYW5nZWRcbiAgICAgIGF3YWl0IHRoaXMucmVyZW5kZXJDb21wb25lbnQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlcmVuZGVyQ29tcG9uZW50KCkge1xuICAgIC8vIERlc3Ryb3kgdGhlIGV4aXN0aW5nIGNvbXBvbmVudCBpZiBpdCBleGlzdHNcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKClcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpXG4gICAgLy8gQ2FsbCBsb2FkQ29tcG9uZW50IHRvIGNyZWF0ZSBhbmQgcmVuZGVyIHRoZSBjb21wb25lbnRcbiAgICBhd2FpdCB0aGlzLmxvYWRDb21wb25lbnQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZENvbXBvbmVudCgpIHtcbiAgICBpZiAodGhpcy5pc0xvYWRpbmcoKSlcbiAgICAgIHJldHVybjtcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgY29uc3Qgd2lkZ2V0ID0gdGhpcy53aWRnZXRSZWdpc3RlcnkucmVzb2x2ZSh0aGlzLm5vZGUoKS50eXBlKTtcbiAgICAvL1xuICAgIGNvbnN0IHByb3BzID0gd2lkZ2V0Py5jb21wb25lbnRzW3RoaXMubW9kZSgpXT8ucHJvcGVydGllc1xuICAgICAgPy5maWx0ZXIoKGMpID0+IGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSlcbiAgICAgIC5tYXAoKGMpID0+ICh7IFtjLm5hbWVdOiBjLnNjaGVtYS5kZWZhdWx0VmFsdWUgfSkpXG4gICAgICAucmVkdWNlKChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCAuLi5jdXJyIH07XG4gICAgICB9LCB7fSk7XG4gICAgLy9cbiAgICB0aGlzLm1lcmdlZE9wdGlvbnMuc2V0KG1lcmdlKHByb3BzLCB0aGlzLm5vZGUoKS5vcHRpb25zKSB8fCB7fSk7XG4gICAgdGhpcy5wcmVwcm9jZXNzQW5kSW5pdGlhbE9wdGlvbnMoY2xvbmVEZWVwKHRoaXMubm9kZSgpLm9wdGlvbnMpKTtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZU9wdGlvbnNCYXNlZE9uQ29udGV4dCgpO1xuICAgIC8vXG4gICAgY29uc3QgdG9rZW5WYWx1ZSA9IHtcbiAgICAgIG5vZGU6IHRoaXMubm9kZSgpLFxuICAgICAgb3B0aW9uczogdGhpcy5tZXJnZWRPcHRpb25zKCksXG4gICAgICBjb25maWc6IHdpZGdldCxcbiAgICB9IGFzIEFYUFdpZGdldE5vZGVUb2tlbjtcbiAgICBjb25zdCB0b2tlbiA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEFYUF9XSURHRVRfVE9LRU4sXG4gICAgICAgICAgdXNlVmFsdWU6IHRva2VuVmFsdWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIC8vXG4gICAgY29uc3QgY29tID0gYXdhaXQgd2lkZ2V0Py5jb21wb25lbnRzW3RoaXMubW9kZSgpXT8uY29tcG9uZW50KCk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50PEFYUFdpZGdldENvbXBvbmVudDxhbnk+Pihjb20sIHsgaW5qZWN0b3I6IHRva2VuIH0pO1xuICAgIHRoaXMuaW5zdGFuY2UgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICB0aGlzLmluc3RhbmNlLnBhcmVudCA9IHRoaXMucGFyZW50Tm9kZSgpO1xuICAgIHRoaXMuaW5zdGFuY2UuaW5kZXggPSB0aGlzLmluZGV4KCk7XG4gICAgdGhpcy5pbnN0YW5jZS5tb2RlID0gdGhpcy5tb2RlKCk7XG4gICAgYXdhaXQgdGhpcy51cGRhdGVWYWx1ZUJhc2VkT25Gb3JtdWxhKCk7XG4gICAgYXdhaXQgdGhpcy5hc3NpZ25UcmlnZ2VycygpO1xuICAgIC8vXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlPcHRpb25zKCkge1xuICAgIGlmICghdGhpcy5pbnN0YW5jZSkgcmV0dXJuO1xuICAgIHRoaXMuaW5zdGFuY2Uuc2V0T3B0aW9ucyh0aGlzLm1lcmdlZE9wdGlvbnMoKSk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRm9ybXVsYUZvclVwZGF0ZShmb3JtdWxhOiBzdHJpbmcgfCB1bmRlZmluZWQsIHBhdGg/OiBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKGZvcm11bGEpIHtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gL2NvbnRleHRcXC5ldmFsXFwoJyhbXiddKyknXFwpL2c7XG4gICAgICBjb25zdCBtYXRjaGVzID0gZm9ybXVsYS5tYXRjaChyZWdleCk7XG4gICAgICBjb25zdCBub2RlcyA9IG1hdGNoZXMgPyBtYXRjaGVzLm1hcCgobWF0Y2g6IGFueSkgPT4gbWF0Y2gubWF0Y2goLycoW14nXSspJy8pWzFdKSA6IFtdO1xuICAgICAgcmV0dXJuIG5vZGVzLmluY2x1ZGVzKHBhdGgpO1xuICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcmVwcm9jZXNzQW5kSW5pdGlhbE9wdGlvbnMob2JqOiBhbnksIHBhdGhQcmVmaXg6IHN0cmluZyA9ICcnKTogdm9pZCB7XG4gICAgaWYgKCFvYmopIHJldHVybjtcbiAgICBPYmplY3QuZW50cmllcyhvYmopLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudFBhdGggPSBwYXRoUHJlZml4ID8gYCR7cGF0aFByZWZpeH0uJHtrZXl9YCA6IGtleTtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmluY2x1ZGVzKCd7eycpKSB7XG4gICAgICAgIC8vIENhY2hlIGR5bmFtaWMgZXhwcmVzc2lvbiBmb3IgbGF0ZXIgZXZhbHVhdGlvblxuICAgICAgICB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3JzLnNldChjdXJyZW50UGF0aCwgKCkgPT4gdGhpcy5ldmFsdWF0ZUV4cHJlc3Npb24odmFsdWUpKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAodmFsdWUuY29uc3RydWN0b3IgPT09IE9iamVjdCB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSkpIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgaGFuZGxlIG5lc3RlZCBvYmplY3RzXG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc0FuZEluaXRpYWxPcHRpb25zKHZhbHVlLCBjdXJyZW50UGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBcHBseSBzdGF0aWMgdmFsdWVzIGRpcmVjdGx5XG4gICAgICAgIHRoaXMubWVyZ2VkT3B0aW9ucy51cGRhdGUoKGN1cnJlbnRPcHRpb25zKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHNldChjdXJyZW50T3B0aW9ucywgY3VycmVudFBhdGgsIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVPcHRpb25zQmFzZWRPbkNvbnRleHQoKSB7XG4gICAgY29uc3QgdXBkYXRlczogYW55W10gPSBbXTtcbiAgICBmb3IgKGxldCBbcGF0aCwgZXZhbHVhdG9yXSBvZiB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3JzKSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IGF3YWl0IGV2YWx1YXRvcigpO1xuICAgICAgdXBkYXRlcy5wdXNoKHsgcGF0aCwgbmV3VmFsdWUgfSk7XG4gICAgfVxuICAgIC8vIEFwcGx5IHVwZGF0ZXMgdG8gbWVyZ2VkT3B0aW9uc1xuICAgIGlmICh1cGRhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubWVyZ2VkT3B0aW9ucy51cGRhdGUoKG8pID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZE9wdGlvbnMgPSB7IC4uLm8gfTtcbiAgICAgICAgdXBkYXRlcy5mb3JFYWNoKCh7IHBhdGgsIG5ld1ZhbHVlIH0pID0+IHtcbiAgICAgICAgICAvLyBTZXQgdGhlIG5ldyB2YWx1ZSBpbiB0aGUgdXBkYXRlZE9wdGlvbnMgb2JqZWN0IGJ5IHBhdGhcbiAgICAgICAgICBzZXQodXBkYXRlZE9wdGlvbnMsIHBhdGgsIG5ld1ZhbHVlKTsgLy8gQXNzdW1pbmcgJ3NldCcgY2FuIGhhbmRsZSBwYXRocyBsaWtlICdwcm9wZXJ0eS5zdWJwcm9wZXJ0eSdcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB1cGRhdGVkT3B0aW9ucztcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdXBkYXRlcy5sZW5ndGg7XG4gIH1cblxuICBhc3luYyB1cGRhdGVWYWx1ZUJhc2VkT25Gb3JtdWxhKCkge1xuICAgIGlmICh0aGlzLm5vZGUoKS5mb3JtdWxhKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHRoaXMuZXZhbHVhdGVFeHByZXNzaW9uKHRoaXMubm9kZSgpLmZvcm11bGEhKTtcbiAgICAgIHRoaXMuaW5zdGFuY2Uuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXZhbHVhdGVFeHByZXNzaW9uKHRlbXBsYXRlRXhwcmVzc2lvbjogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICB0cnkge1xuICAgICAgLy8gQ2hlY2sgY2FjaGUgZmlyc3QsIGJ1dCBjYWNoZSB0aGUgZnVuY3Rpb24gZm9yIGV2YWx1YXRpb24sIG5vdCB0aGUgZXZhbHVhdGVkIHZhbHVlXG4gICAgICBpZiAoIXRoaXMuZXhwcmVzc2lvbkNhY2hlLmhhcyh0ZW1wbGF0ZUV4cHJlc3Npb24pKSB7XG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb25NYXRjaCA9IHRlbXBsYXRlRXhwcmVzc2lvbi5tYXRjaCgvXFx7XFx7XFxzKiguKj8pXFxzKlxcfVxcfS8pO1xuICAgICAgICBpZiAoIWV4cHJlc3Npb25NYXRjaCkge1xuICAgICAgICAgIHRocm93IEVycm9yKGBObyB2YWxpZCBleHByZXNzaW9uIGZvdW5kIGluIFwiJHt0ZW1wbGF0ZUV4cHJlc3Npb259XCJgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleHByZXNzaW9uID0gZXhwcmVzc2lvbk1hdGNoWzFdO1xuXG4gICAgICAgIC8vIENhY2hlIHRoZSBldmFsdWF0aW9uIGZ1bmN0aW9uIGluc3RlYWQgb2YgdGhlIHJlc3VsdFxuICAgICAgICBjb25zdCBzY29wZSA9IHRoaXMuZ2V0R2xvYmFsU2NvcGUoKTtcbiAgICAgICAgY29uc3QgZXZhbHVhdGlvbkZ1bmN0aW9uID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNhbmRib3ggPSBuZXcgRnVuY3Rpb24oJ3Njb3BlJywgYHdpdGggKHNjb3BlKSB7IHJldHVybiAoYXN5bmMgZnVuY3Rpb24oKSB7IHJldHVybiAke2V4cHJlc3Npb259OyB9KSgpOyB9YCk7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHNhbmRib3goc2NvcGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbkNhY2hlLnNldCh0ZW1wbGF0ZUV4cHJlc3Npb24sIGV2YWx1YXRpb25GdW5jdGlvbik7XG4gICAgICB9XG5cbiAgICAgIC8vIFJldHJpZXZlIHRoZSBmdW5jdGlvbiBmcm9tIHRoZSBjYWNoZSBhbmQgY2FsbCBpdCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvblxuICAgICAgY29uc3QgZXZhbHVhdGUgPSB0aGlzLmV4cHJlc3Npb25DYWNoZS5nZXQodGVtcGxhdGVFeHByZXNzaW9uKTtcbiAgICAgIGlmIChldmFsdWF0ZSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBldmFsdWF0ZSgpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYEZhaWxlZCB0byByZXRyaWV2ZSBldmFsdWF0aW9uIGZ1bmN0aW9uIGZvciBleHByZXNzaW9uOiBcIiR7dGVtcGxhdGVFeHByZXNzaW9ufVwiYCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGV2YWx1YXRpbmcgZXhwcmVzc2lvbjonLCBlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRHbG9iYWxTY29wZSgpIHtcbiAgICBpZiAodGhpcy5zY29wZSkgcmV0dXJuIHRoaXMuc2NvcGU7XG4gICAgdGhpcy5zY29wZSA9IHt9O1xuICAgIHNldCh0aGlzLnNjb3BlLCAnY29udGV4dCcsIHRoaXMuZ2V0Q29udGV4dFNjb3BlKCkpO1xuICAgIHNldCh0aGlzLnNjb3BlLCAnZXZlbnRzJywgdGhpcy5nZXRFdmVudFNjb3BlKCkpO1xuICAgIHNldCh0aGlzLnNjb3BlLCAnd2lkZ2V0JywgdGhpcy5nZXRXaWRnZXRTY29wZSgpKTtcbiAgICBzZXQodGhpcy5zY29wZSwgJ21ldGhvZHMnLCB0aGlzLmdldEZ1bmN0aW9uU2NvcGUoKSk7XG4gICAgc2V0KHRoaXMuc2NvcGUsICd2YXJzJywgdGhpcy5nZXRWYXJpYWJsZXNTY29wZSgpKTtcbiAgICByZXR1cm4gdGhpcy5zY29wZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29udGV4dFNjb3BlKCk6IGFueSB7XG4gICAgY29uc3Qgc2NvcGU6IGFueSA9IHt9O1xuICAgIHNldChzY29wZSwgJ2V2YWwnLCAocGF0aDogc3RyaW5nKSA9PiB0aGlzLmJ1aWxkZXJTZXJ2aWNlLmdldFZhbHVlKHBhdGgpKTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwcml2YXRlIGdldEV2ZW50U2NvcGUoKTogYW55IHtcbiAgICBjb25zdCBzY29wZTogYW55ID0ge307XG4gICAgc2V0KHNjb3BlLCAnY29udGV4dCcsIChwYXRoOiBzdHJpbmcpID0+IHRoaXMuYnVpbGRlclNlcnZpY2Uub25DaGFuZ2VkLnBpcGUoZmlsdGVyKChjKSA9PiBjLnBhdGggPT0gcGF0aCkpKTtcbiAgICBzZXQoc2NvcGUsICdmcm9tJywgKGV2ZW50OiBzdHJpbmcpID0+IGdldCh0aGlzLmluc3RhbmNlLmFwaSgpLCBldmVudCkpO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0V2lkZ2V0U2NvcGUoKTogYW55IHtcbiAgICBjb25zdCBzY29wZTogYW55ID0ge307XG4gICAgc2V0KHNjb3BlLCAnY2FsbCcsIChuYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICB0aGlzLmluc3RhbmNlLmNhbGwobmFtZSwgLi4uYXJncyk7XG4gICAgfSk7XG4gICAgc2V0KHNjb3BlLCAnZmluZCcsIChpZDogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5idWlsZGVyU2VydmljZS5nZXRXaWRnZXQoaWQpPy5hcGkoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwcml2YXRlIGdldEZ1bmN0aW9uU2NvcGUoKTogYW55IHtcbiAgICBjb25zdCBzY29wZTogYW55ID0ge307XG4gICAgc2V0KHNjb3BlLCAnc3VtJywgKHZhbHVlczogYW55KSA9PiB7XG4gICAgICByZXR1cm4gc3VtKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5idWlsZGVyU2VydmljZS5mdW5jdGlvbnMpLmZvckVhY2goKGkpID0+IHtcbiAgICAgIHNldChzY29wZSwgaVswXSwgKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgIHJldHVybiBpWzFdKC4uLmFyZ3MpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYXJpYWJsZXNTY29wZSgpOiBhbnkge1xuICAgIGNvbnN0IHNjb3BlOiBhbnkgPSB7fTtcbiAgICBzZXQoc2NvcGUsICdldmFsJywgKHBhdGg6IHN0cmluZykgPT4gZ2V0KHRoaXMuYnVpbGRlclNlcnZpY2UudmFyaWFibGVzLCBwYXRoKSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhc3NpZ25UcmlnZ2VycygpIHtcbiAgICB0aGlzLm5vZGUoKS50cmlnZ2Vycz8uZm9yRWFjaCgodCkgPT4ge1xuICAgICAgY29uc3QgZXZlbnQgPSB0aGlzLmV2YWx1YXRlVHJpZ2dlcih0LmV2ZW50KTtcbiAgICAgIGV2ZW50Py5waXBlKHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgICB0aGlzLmV2YWx1YXRlQWN0aW9uKHQuYWN0aW9uKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBldmFsdWF0ZVRyaWdnZXIodGVtcGxhdGVFeHByZXNzaW9uOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4gfCBudWxsIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZXhwcmVzc2lvbk1hdGNoID0gdGVtcGxhdGVFeHByZXNzaW9uLm1hdGNoKC9cXHtcXHtcXHMqKC4qPylcXHMqXFx9XFx9Lyk7XG4gICAgICBpZiAoIWV4cHJlc3Npb25NYXRjaCkge1xuICAgICAgICB0aHJvdyBFcnJvcihgTm8gdmFsaWQgZXhwcmVzc2lvbiBmb3VuZCBpbiBcIiR7dGVtcGxhdGVFeHByZXNzaW9ufVwiYCk7XG4gICAgICB9XG4gICAgICBjb25zdCBleHByZXNzaW9uID0gZXhwcmVzc2lvbk1hdGNoWzFdO1xuXG4gICAgICAvLyBDYWNoZSB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSByZXN1bHRcbiAgICAgIGNvbnN0IHNjb3BlID0gdGhpcy5nZXRHbG9iYWxTY29wZSgpO1xuICAgICAgY29uc3Qgc2FuZGJveCA9IG5ldyBGdW5jdGlvbignc2NvcGUnLCBgd2l0aCAoc2NvcGUpIHsgcmV0dXJuICggIGZ1bmN0aW9uKCkgeyByZXR1cm4gJHtleHByZXNzaW9ufTsgfSkoKTsgfWApO1xuICAgICAgcmV0dXJuIHNhbmRib3goc2NvcGUpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBldmFsdWF0aW5nIGV4cHJlc3Npb246JywgZXJyb3IpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBldmFsdWF0ZUFjdGlvbih0ZW1wbGF0ZUV4cHJlc3Npb246IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBleHByZXNzaW9uTWF0Y2ggPSB0ZW1wbGF0ZUV4cHJlc3Npb24ubWF0Y2goL1xce1xce1xccyooLio/KVxccypcXH1cXH0vKTtcbiAgICAgIGlmICghZXhwcmVzc2lvbk1hdGNoKSB7XG4gICAgICAgIHRocm93IEVycm9yKGBObyB2YWxpZCBleHByZXNzaW9uIGZvdW5kIGluIFwiJHt0ZW1wbGF0ZUV4cHJlc3Npb259XCJgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSBleHByZXNzaW9uTWF0Y2hbMV07XG5cbiAgICAgIC8vIENhY2hlIHRoZSBldmFsdWF0aW9uIGZ1bmN0aW9uIGluc3RlYWQgb2YgdGhlIHJlc3VsdFxuICAgICAgY29uc3Qgc2NvcGU6IGFueSA9IHRoaXMuZ2V0R2xvYmFsU2NvcGUoKTtcbiAgICAgIGNvbnN0IHNhbmRib3ggPSBuZXcgRnVuY3Rpb24oJ3Njb3BlJywgYHdpdGggKHNjb3BlKSB7ICAke2V4cHJlc3Npb259IH1gKTtcbiAgICAgIHNhbmRib3goc2NvcGUpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBldmFsdWF0aW5nIGV4cHJlc3Npb246JywgZXJyb3IpO1xuICAgIH1cbiAgfVxufVxuIl19
313
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXJlbmRlcmVyLmNvbXBvbmVudC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci93aWRnZXQtcmVuZGVyZXIuY29tcG9uZW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUVMLFNBQVMsRUFDVCxRQUFRLEVBRVIsZ0JBQWdCLEVBRWhCLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVELE9BQU8sRUFBYyxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUtMLGdCQUFnQixHQUNqQixNQUFNLGdCQUFnQixDQUFDOztBQVV4QixNQUFNLE9BQU8sMEJBQTBCO0lBdUJyQztRQXRCQSxlQUFVLEdBQUcsS0FBSyxFQUE2QixDQUFDO1FBRWhELFVBQUssR0FBRyxLQUFLLEVBQWlCLENBQUM7UUFFL0IsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXVCLENBQUM7UUFDN0MsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWlCLENBQUM7UUFFN0Isa0JBQWEsR0FBd0IsTUFBTSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRXZELGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUIsbUJBQWMsR0FBRyxNQUFN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QUFDLENBQUM7WUFDeEUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNyQixNQUFNLEtBQUssQ0FBQyxpQ0FBaUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO1lBQ3RFLENBQUM7WUFDRCxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdEMsc0RBQXNEO1lBQ3RELE1BQU0sS0FBSyxHQUFRLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QyxNQUFNLE9BQU8sR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLFVBQVUsSUFBSSxDQUFDLENBQUM7WUFDekUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQzs4R0ExVFUsMEJBQTBCO2tHQUExQiwwQkFBMEIsbWlCQU4xQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxjQUFjO2FBQ3hCO1NBQ0Y7OzJGQUVVLDBCQUEwQjtrQkFSdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGNBQWM7eUJBQ3hCO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhVbnN1YnNjcmliZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50UmVmLFxuICBEaXJlY3RpdmUsXG4gIEluamVjdG9yLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZ2V0LCBtZXJnZSwgc2V0LCBzdW0gfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyU2VydmljZSB9IGZyb20gJy4vYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJy4vd2lkZ2V0LXJlZ2lzdGVyeS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFYUFdpZGdldENvbXBvbmVudCxcbiAgQVhQV2lkZ2V0Tm9kZSxcbiAgQVhQV2lkZ2V0Tm9kZVRva2VuLFxuICBBWFBXaWRnZXRSZW5kZXJNb2RlLFxuICBBWFBfV0lER0VUX1RPS0VOLFxufSBmcm9tICcuL3dpZGdldC50eXBlcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1theHAtd2lkZ2V0LXJlbmRlcmVyXScsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYVW5zdWJzY3JpYmVyLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUFdpZGdldFJlbmRlcmVyRGlyZWN0aXZlIHtcbiAgcGFyZW50Tm9kZSA9IGlucHV0PEFYUFdpZGdldENvbXBvbmVudCB8IG51bGw+KCk7XG5cbiAgaW5kZXggPSBpbnB1dDxudW1iZXIgfCBudWxsPigpO1xuXG4gIG1vZGUgPSBpbnB1dC5yZXF1aXJlZDxBWFBXaWRnZXRSZW5kZXJNb2RlPigpO1xuICBub2RlID0gaW5wdXQucmVxdWlyZWQ8QVhQV2lkZ2V0Tm9kZT4oKTtcblxuICBwcm90ZWN0ZWQgbWVyZ2VkT3B0aW9uczogV3JpdGFibGVTaWduYWw8YW55PiA9IHNpZ25hbDxhbnk+KHt9KTtcblxuICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJvdGVjdGVkIGJ1aWxkZXJTZXJ2aWNlID0gaW5qZWN0KEFYUExheW91dEJ1aWxkZXJTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHdpZGdldFJlZ2lzdGVyeSA9IGluamVjdChBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgdW5zdWJzY3JpYmVyID0gaW5qZWN0KEFYVW5zdWJzY3JpYmVyKTtcbiAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuXG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIGluc3RhbmNlITogQVhQV2lkZ2V0Q29tcG9uZW50O1xuICBwcml2YXRlIGV4cHJlc3Npb25DYWNoZTogTWFwPHN0cmluZywgKCkgPT4gUHJvbWlzZTxhbnk+PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBleHByZXNzaW9uRXZhbHVhdG9yczogTWFwPHN0cmluZywgKCkgPT4gUHJvbWlzZTxhbnk+PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBzY29wZTogYW55ID0gbnVsbDtcbiAgcHJpdmF0ZSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuYnVpbGRlclNlcnZpY2Uub25DaGFuZ2VkLnBpcGUodGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKGFzeW5jIChlKSA9PiB7XG4gICAgICBpZiAoKGF3YWl0IHRoaXMudXBkYXRlT3B0aW9uc0Jhc2VkT25Db250ZXh0KCkpID4gMCkge1xuICAgICAgICB0aGlzLmFwcGx5T3B0aW9ucygpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY2hlY2tGb3JtdWxhRm9yVXBkYXRlKHRoaXMubm9kZSgpLmZvcm11bGEsIGUucGF0aCkpIHtcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVWYWx1ZUJhc2VkT25Gb3JtdWxhKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5idWlsZGVyU2VydmljZS5vblJlZnJlc2gucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKChhd2FpdCB0aGlzLnVwZGF0ZU9wdGlvbnNCYXNlZE9uQ29udGV4dCgpKSA+IDApIHtcbiAgICAgICAgdGhpcy5hcHBseU9wdGlvbnMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIERldGVjdCBpbnB1dCBjaGFuZ2VzXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snbW9kZSddIHx8IGNoYW5nZXNbJ25vZGUnXSkge1xuICAgICAgLy8gQ2hlY2sgaWYgZWl0aGVyICdtb2RlJyBvciAnbm9kZScgaGFzIGNoYW5nZWRcbiAgICAgIHRoaXMucmVyZW5kZXJDb21wb25lbnQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlcmVuZGVyQ29tcG9uZW50KCkge1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgLy8gQ2FsbCBsb2FkQ29tcG9uZW50IHRvIGNyZWF0ZSBhbmQgcmVuZGVyIHRoZSBjb21wb25lbnRcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMubG9hZENvbXBvbmVudCgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkQ29tcG9uZW50KCkge1xuICAgIGlmICh0aGlzLmlzTG9hZGluZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICAvLyBEZXN0cm95IHRoZSBleGlzdGluZyBjb21wb25lbnQgaWYgaXQgZXhpc3RzXG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgfVxuICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgIC8vXG4gICAgY29uc3Qgd2lkZ2V0ID0gdGhpcy53aWRnZXRSZWdpc3RlcnkucmVzb2x2ZSh0aGlzLm5vZGUoKS50eXBlKTtcbiAgICAvL1xuICAgIGNvbnN0IHByb3BzID0gWy4uLih3aWRnZXQ/LnByb3BlcnRpZXMgPz8gW10pLCAuLi4od2lkZ2V0Py5jb21wb25lbnRzW3RoaXMubW9kZSgpXT8ucHJvcGVydGllcyA/PyBbXSldXG4gICAgICA/LmZpbHRlcigoYykgPT4gYy5zY2hlbWEuZGVmYXVsdFZhbHVlICE9IG51bGwpXG4gICAgICAubWFwKChjKSA9PiAoeyBbYy5uYW1lXTogYy5zY2hlbWEuZGVmYXVsdFZhbHVlIH0pKVxuICAgICAgLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmFjYywgLi4uY3VyciB9O1xuICAgICAgfSwge30pO1xuXG4gICAgLy9cbiAgICB0aGlzLm1lcmdlZE9wdGlvbnMuc2V0KG1lcmdlKHByb3BzLCB0aGlzLm5vZGUoKS5vcHRpb25zKSB8fCB7fSk7XG5cbiAgICB0aGlzLnByZXByb2Nlc3NBbmRJbml0aWFsT3B0aW9ucyhjbG9uZURlZXAodGhpcy5ub2RlKCkub3B0aW9ucykpO1xuICAgIGF3YWl0IHRoaXMudXBkYXRlT3B0aW9uc0Jhc2VkT25Db250ZXh0KCk7XG4gICAgLy9cbiAgICBjb25zdCB0b2tlblZhbHVlID0ge1xuICAgICAgbm9kZTogdGhpcy5ub2RlKCksXG4gICAgICBvcHRpb25zOiB0aGlzLm1lcmdlZE9wdGlvbnMoKSxcbiAgICAgIGNvbmZpZzogd2lkZ2V0LFxuICAgIH0gYXMgQVhQV2lkZ2V0Tm9kZVRva2VuO1xuICAgIGNvbnN0IHRva2VuID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQVhQX1dJREdFVF9UT0tFTixcbiAgICAgICAgICB1c2VWYWx1ZTogdG9rZW5WYWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgLy9cbiAgICBjb25zdCBjb20gPSBhd2FpdCB3aWRnZXQ/LmNvbXBvbmVudHNbdGhpcy5tb2RlKCldPy5jb21wb25lbnQoKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQ8QVhQV2lkZ2V0Q29tcG9uZW50PGFueT4+KGNvbSwgeyBpbmplY3RvcjogdG9rZW4gfSk7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgIHRoaXMuaW5zdGFuY2UucGFyZW50ID0gdGhpcy5wYXJlbnROb2RlKCk7XG4gICAgdGhpcy5pbnN0YW5jZS5pbmRleCA9IHRoaXMuaW5kZXgoKTtcbiAgICB0aGlzLmluc3RhbmNlLm1vZGUgPSB0aGlzLm1vZGUoKTtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVZhbHVlQmFzZWRPbkZvcm11bGEoKTtcbiAgICBhd2FpdCB0aGlzLmFzc2lnblRyaWdnZXJzKCk7XG4gICAgLy9cbiAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseU9wdGlvbnMoKSB7XG4gICAgaWYgKCF0aGlzLmluc3RhbmNlKSByZXR1cm47XG4gICAgdGhpcy5pbnN0YW5jZS5zZXRPcHRpb25zKHRoaXMubWVyZ2VkT3B0aW9ucygpKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGb3JtdWxhRm9yVXBkYXRlKGZvcm11bGE6IHN0cmluZyB8IHVuZGVmaW5lZCwgcGF0aD86IHN0cmluZyB8IG51bGwpOiBib29sZWFuIHtcbiAgICBpZiAoZm9ybXVsYSkge1xuICAgICAgY29uc3QgcmVnZXggPSAvY29udGV4dFxcLmV2YWxcXCgnKFteJ10rKSdcXCkvZztcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBmb3JtdWxhLm1hdGNoKHJlZ2V4KTtcbiAgICAgIGNvbnN0IG5vZGVzID0gbWF0Y2hlcyA/IG1hdGNoZXMubWFwKChtYXRjaDogYW55KSA9PiBtYXRjaC5tYXRjaCgvJyhbXiddKyknLylbMV0pIDogW107XG4gICAgICByZXR1cm4gbm9kZXMuaW5jbHVkZXMocGF0aCk7XG4gICAgfSBlbHNlIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByZXByb2Nlc3NBbmRJbml0aWFsT3B0aW9ucyhvYmo6IGFueSwgcGF0aFByZWZpeDogc3RyaW5nID0gJycpOiB2b2lkIHtcbiAgICBpZiAoIW9iaikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBPYmplY3QuZW50cmllcyhvYmopLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudFBhdGggPSBwYXRoUHJlZml4ID8gYCR7cGF0aFByZWZpeH0uJHtrZXl9YCA6IGtleTtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmluY2x1ZGVzKCd7eycpKSB7XG4gICAgICAgIC8vIENhY2hlIGR5bmFtaWMgZXhwcmVzc2lvbiBmb3IgbGF0ZXIgZXZhbHVhdGlvblxuICAgICAgICB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3JzLnNldChjdXJyZW50UGF0aCwgKCkgPT4gdGhpcy5ldmFsdWF0ZUV4cHJlc3Npb24odmFsdWUpKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgKHZhbHVlLmNvbnN0cnVjdG9yID09PSBPYmplY3QgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICApIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgaGFuZGxlIG5lc3RlZCBvYmplY3RzXG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc0FuZEluaXRpYWxPcHRpb25zKHZhbHVlLCBjdXJyZW50UGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBcHBseSBzdGF0aWMgdmFsdWVzIGRpcmVjdGx5XG4gICAgICAgIHRoaXMubWVyZ2VkT3B0aW9ucy51cGRhdGUoKGN1cnJlbnRPcHRpb25zKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHNldChjdXJyZW50T3B0aW9ucywgY3VycmVudFBhdGgsIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVPcHRpb25zQmFzZWRPbkNvbnRleHQoKSB7XG4gICAgY29uc3QgdXBkYXRlUHJvbWlzZXMgPSBBcnJheS5mcm9tKHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvcnMpLm1hcChhc3luYyAoW3BhdGgsIGV2YWx1YXRvcl0pID0+IHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gYXdhaXQgZXZhbHVhdG9yKCk7XG4gICAgICByZXR1cm4geyBwYXRoLCBuZXdWYWx1ZSB9O1xuICAgIH0pO1xuICAgIC8vIFdhaXQgZm9yIGFsbCBldmFsdWF0b3JzIHRvIGNvbXBsZXRlXG4gICAgY29uc3QgdXBkYXRlcyA9IGF3YWl0IFByb21pc2UuYWxsKHVwZGF0ZVByb21pc2VzKTtcbiAgICAvLyBBcHBseSB1cGRhdGVzIHRvIG1lcmdlZE9wdGlvbnNcbiAgICBpZiAodXBkYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLm1lcmdlZE9wdGlvbnMudXBkYXRlKChvKSA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRPcHRpb25zID0geyAuLi5vIH07XG4gICAgICAgIHVwZGF0ZXMuZm9yRWFjaCgoeyBwYXRoLCBuZXdWYWx1ZSB9KSA9PiB7XG4gICAgICAgICAgLy8gU2V0IHRoZSBuZXcgdmFsdWUgaW4gdGhlIHVwZGF0ZWRPcHRpb25zIG9iamVjdCBieSBwYXRoXG4gICAgICAgICAgc2V0KHVwZGF0ZWRPcHRpb25zLCBwYXRoLCBuZXdWYWx1ZSk7IC8vIEFzc3VtaW5nICdzZXQnIGNhbiBoYW5kbGUgcGF0aHMgbGlrZSAncHJvcGVydHkuc3VicHJvcGVydHknXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdXBkYXRlZE9wdGlvbnM7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHVwZGF0ZXMubGVuZ3RoO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlVmFsdWVCYXNlZE9uRm9ybXVsYSgpIHtcbiAgICBpZiAodGhpcy5ub2RlKCkuZm9ybXVsYSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCB0aGlzLmV2YWx1YXRlRXhwcmVzc2lvbih0aGlzLm5vZGUoKS5mb3JtdWxhISk7XG4gICAgICB0aGlzLmluc3RhbmNlLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV2YWx1YXRlRXhwcmVzc2lvbih0ZW1wbGF0ZUV4cHJlc3Npb246IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENoZWNrIGNhY2hlIGZpcnN0LCBidXQgY2FjaGUgdGhlIGZ1bmN0aW9uIGZvciBldmFsdWF0aW9uLCBub3QgdGhlIGV2YWx1YXRlZCB2YWx1ZVxuICAgICAgaWYgKCF0aGlzLmV4cHJlc3Npb25DYWNoZS5oYXModGVtcGxhdGVFeHByZXNzaW9uKSkge1xuICAgICAgICBjb25zdCBleHByZXNzaW9uTWF0Y2ggPSB0ZW1wbGF0ZUV4cHJlc3Npb24ubWF0Y2goL1xce1xce1xccyooLio/KVxccypcXH1cXH0vKTtcbiAgICAgICAgaWYgKCFleHByZXNzaW9uTWF0Y2gpIHtcbiAgICAgICAgICB0aHJvdyBFcnJvcihgTm8gdmFsaWQgZXhwcmVzc2lvbiBmb3VuZCBpbiBcIiR7dGVtcGxhdGVFeHByZXNzaW9ufVwiYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25NYXRjaFsxXTtcblxuICAgICAgICAvLyBDYWNoZSB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSByZXN1bHRcbiAgICAgICAgY29uc3Qgc2NvcGUgPSB0aGlzLmdldEdsb2JhbFNjb3BlKCk7XG4gICAgICAgIGNvbnN0IGV2YWx1YXRpb25GdW5jdGlvbiA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBzYW5kYm94ID0gbmV3IEZ1bmN0aW9uKFxuICAgICAgICAgICAgJ3Njb3BlJyxcbiAgICAgICAgICAgIGB3aXRoIChzY29wZSkgeyByZXR1cm4gKGFzeW5jIGZ1bmN0aW9uKCkgeyByZXR1cm4gJHtleHByZXNzaW9ufTsgfSkoKTsgfWBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBhd2FpdCBzYW5kYm94KHNjb3BlKTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmV4cHJlc3Npb25DYWNoZS5zZXQodGVtcGxhdGVFeHByZXNzaW9uLCBldmFsdWF0aW9uRnVuY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXRyaWV2ZSB0aGUgZnVuY3Rpb24gZnJvbSB0aGUgY2FjaGUgYW5kIGNhbGwgaXQgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb25cbiAgICAgIGNvbnN0IGV2YWx1YXRlID0gdGhpcy5leHByZXNzaW9uQ2FjaGUuZ2V0KHRlbXBsYXRlRXhwcmVzc2lvbik7XG4gICAgICBpZiAoZXZhbHVhdGUpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXZhbHVhdGUoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IEVycm9yKGBGYWlsZWQgdG8gcmV0cmlldmUgZXZhbHVhdGlvbiBmdW5jdGlvbiBmb3IgZXhwcmVzc2lvbjogXCIke3RlbXBsYXRlRXhwcmVzc2lvbn1cImApO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBldmFsdWF0aW5nIGV4cHJlc3Npb246JywgZXJyb3IpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0R2xvYmFsU2NvcGUoKSB7XG4gICAgaWYgKHRoaXMuc2NvcGUpIHJldHVybiB0aGlzLnNjb3BlO1xuICAgIHRoaXMuc2NvcGUgPSB7fTtcbiAgICBzZXQodGhpcy5zY29wZSwgJ2NvbnRleHQnLCB0aGlzLmdldENvbnRleHRTY29wZSgpKTtcbiAgICBzZXQodGhpcy5zY29wZSwgJ2V2ZW50cycsIHRoaXMuZ2V0RXZlbnRTY29wZSgpKTtcbiAgICBzZXQodGhpcy5zY29wZSwgJ3dpZGdldCcsIHRoaXMuZ2V0V2lkZ2V0U2NvcGUoKSk7XG4gICAgc2V0KHRoaXMuc2NvcGUsICdtZXRob2RzJywgdGhpcy5nZXRGdW5jdGlvblNjb3BlKCkpO1xuICAgIHNldCh0aGlzLnNjb3BlLCAndmFycycsIHRoaXMuZ2V0VmFyaWFibGVzU2NvcGUoKSk7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGU7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRleHRTY29wZSgpOiBhbnkge1xuICAgIGNvbnN0IHNjb3BlOiBhbnkgPSB7fTtcbiAgICBzZXQoc2NvcGUsICdldmFsJywgKHBhdGg6IHN0cmluZykgPT4gdGhpcy5idWlsZGVyU2VydmljZS5nZXRWYWx1ZShwYXRoKSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFdmVudFNjb3BlKCk6IGFueSB7XG4gICAgY29uc3Qgc2NvcGU6IGFueSA9IHt9O1xuICAgIHNldChzY29wZSwgJ2NvbnRleHQnLCAocGF0aDogc3RyaW5nKSA9PiB0aGlzLmJ1aWxkZXJTZXJ2aWNlLm9uQ2hhbmdlZC5waXBlKGZpbHRlcigoYykgPT4gYy5wYXRoID09IHBhdGgpKSk7XG4gICAgc2V0KHNjb3BlLCAnZnJvbScsIChldmVudDogc3RyaW5nKSA9PiBnZXQodGhpcy5pbnN0YW5jZS5hcGkoKSwgZXZlbnQpKTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwcml2YXRlIGdldFdpZGdldFNjb3BlKCk6IGFueSB7XG4gICAgY29uc3Qgc2NvcGU6IGFueSA9IHt9O1xuICAgIHNldChzY29wZSwgJ2NhbGwnLCAobmFtZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgdGhpcy5pbnN0YW5jZS5jYWxsKG5hbWUsIC4uLmFyZ3MpO1xuICAgIH0pO1xuICAgIHNldChzY29wZSwgJ2ZpbmQnLCAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuYnVpbGRlclNlcnZpY2UuZ2V0V2lkZ2V0KGlkKT8uYXBpKCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGdW5jdGlvblNjb3BlKCk6IGFueSB7XG4gICAgY29uc3Qgc2NvcGU6IGFueSA9IHt9O1xuICAgIHNldChzY29wZSwgJ3N1bScsICh2YWx1ZXM6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHN1bSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuYnVpbGRlclNlcnZpY2UuZnVuY3Rpb25zKS5mb3JFYWNoKChpKSA9PiB7XG4gICAgICBzZXQoc2NvcGUsIGlbMF0sICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICByZXR1cm4gaVsxXSguLi5hcmdzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmFyaWFibGVzU2NvcGUoKTogYW55IHtcbiAgICBjb25zdCBzY29wZTogYW55ID0ge307XG4gICAgc2V0KHNjb3BlLCAnZXZhbCcsIChwYXRoOiBzdHJpbmcpID0+IGdldCh0aGlzLmJ1aWxkZXJTZXJ2aWNlLnZhcmlhYmxlcywgcGF0aCkpO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYXNzaWduVHJpZ2dlcnMoKSB7XG4gICAgdGhpcy5ub2RlKCkudHJpZ2dlcnM/LmZvckVhY2goKHQpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5ldmFsdWF0ZVRyaWdnZXIodC5ldmVudCk7XG4gICAgICBldmVudD8ucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZUFjdGlvbih0LmFjdGlvbik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZXZhbHVhdGVUcmlnZ2VyKHRlbXBsYXRlRXhwcmVzc2lvbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHwgbnVsbCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGV4cHJlc3Npb25NYXRjaCA9IHRlbXBsYXRlRXhwcmVzc2lvbi5tYXRjaCgvXFx7XFx7XFxzKiguKj8pXFxzKlxcfVxcfS8pO1xuICAgICAgaWYgKCFleHByZXNzaW9uTWF0Y2gpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYE5vIHZhbGlkIGV4cHJlc3Npb24gZm91bmQgaW4gXCIke3RlbXBsYXRlRXhwcmVzc2lvbn1cImApO1xuICAgICAgfVxuICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25NYXRjaFsxXTtcblxuICAgICAgLy8gQ2FjaGUgdGhlIGV2YWx1YXRpb24gZnVuY3Rpb24gaW5zdGVhZCBvZiB0aGUgcmVzdWx0XG4gICAgICBjb25zdCBzY29wZSA9IHRoaXMuZ2V0R2xvYmFsU2NvcGUoKTtcbiAgICAgIGNvbnN0IHNhbmRib3ggPSBuZXcgRnVuY3Rpb24oJ3Njb3BlJywgYHdpdGggKHNjb3BlKSB7IHJldHVybiAoICBmdW5jdGlvbigpIHsgcmV0dXJuICR7ZXhwcmVzc2lvbn07IH0pKCk7IH1gKTtcbiAgICAgIHJldHVybiBzYW5kYm94KHNjb3BlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZXZhbHVhdGluZyBleHByZXNzaW9uOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXZhbHVhdGVBY3Rpb24odGVtcGxhdGVFeHByZXNzaW9uOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZXhwcmVzc2lvbk1hdGNoID0gdGVtcGxhdGVFeHByZXNzaW9uLm1hdGNoKC9cXHtcXHtcXHMqKC4qPylcXHMqXFx9XFx9Lyk7XG4gICAgICBpZiAoIWV4cHJlc3Npb25NYXRjaCkge1xuICAgICAgICB0aHJvdyBFcnJvcihgTm8gdmFsaWQgZXhwcmVzc2lvbiBmb3VuZCBpbiBcIiR7dGVtcGxhdGVFeHByZXNzaW9ufVwiYCk7XG4gICAgICB9XG4gICAgICBjb25zdCBleHByZXNzaW9uID0gZXhwcmVzc2lvbk1hdGNoWzFdO1xuXG4gICAgICAvLyBDYWNoZSB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSByZXN1bHRcbiAgICAgIGNvbnN0IHNjb3BlOiBhbnkgPSB0aGlzLmdldEdsb2JhbFNjb3BlKCk7XG4gICAgICBjb25zdCBzYW5kYm94ID0gbmV3IEZ1bmN0aW9uKCdzY29wZScsIGB3aXRoIChzY29wZSkgeyAgJHtleHByZXNzaW9ufSB9YCk7XG4gICAgICBzYW5kYm94KHNjb3BlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZXZhbHVhdGluZyBleHByZXNzaW9uOicsIGVycm9yKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==