@acorex/platform 18.0.14 → 18.0.16

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 (264) hide show
  1. package/core/index.d.ts +1 -0
  2. package/core/utils/data-conditioner.d.ts +6 -0
  3. package/esm2022/auth/lib/session.service.mjs +7 -5
  4. package/esm2022/common/lib/schema/widget/widget-renderer.mjs +3 -3
  5. package/esm2022/core/index.mjs +2 -1
  6. package/esm2022/core/utils/data-conditioner.mjs +138 -0
  7. package/esm2022/layout/builder/lib/builder/widget-catalog.mjs +3 -2
  8. package/esm2022/layout/builder/lib/builder/widget-registery.service.mjs +2 -2
  9. package/esm2022/layout/builder/lib/builder/widget-renderer.component.mjs +3 -3
  10. package/esm2022/layout/builder/lib/builder/widget.types.mjs +17 -10
  11. package/esm2022/layout/designer/index.mjs +2 -7
  12. package/esm2022/layout/designer/lib/{helpers → designer/components}/add-widget-button/add-widget-button.component.mjs +2 -2
  13. package/esm2022/layout/designer/lib/designer/components/board/board.component.mjs +112 -0
  14. package/esm2022/layout/designer/lib/designer/components/breadcrumbs/breadcrumbs.component.mjs +64 -0
  15. package/esm2022/layout/designer/lib/designer/components/drawers/data-sources/data-sources.component.mjs +32 -0
  16. package/esm2022/layout/designer/lib/designer/components/drawers/history/history.component.mjs +30 -0
  17. package/esm2022/layout/designer/lib/designer/components/drawers/outline/outline.component.mjs +61 -0
  18. package/esm2022/layout/designer/lib/designer/components/drawers/pages/pages.component.mjs +28 -0
  19. package/esm2022/layout/designer/lib/designer/components/grid-drawer/grid-drawer.component.mjs +82 -0
  20. package/esm2022/layout/designer/lib/designer/components/header-menu/header-menu.component.mjs +24 -0
  21. package/esm2022/layout/designer/lib/{widget-picker → designer/components/widget-picker}/widget-picker.component.mjs +1 -1
  22. package/esm2022/layout/designer/lib/designer/designer.component.mjs +28 -17
  23. package/esm2022/layout/designer/lib/designer/index.mjs +8 -0
  24. package/esm2022/layout/designer/lib/designer/shared/command.mjs +185 -0
  25. package/esm2022/layout/designer/lib/designer/shared/designer-connector.service.mjs +10 -0
  26. package/esm2022/layout/designer/lib/designer/shared/designer.service.mjs +488 -0
  27. package/esm2022/layout/designer/lib/designer/shared/designer.typs.mjs +2 -0
  28. package/esm2022/layout/designer/lib/designer/shared/drawer-content/drawer-content.component.mjs +16 -0
  29. package/esm2022/layout/designer/lib/designer/shared/widget-designer-renderer.directive.mjs +224 -0
  30. package/esm2022/layout/designer/lib/preview/preview.component.mjs +3 -3
  31. package/esm2022/layout/designer/lib/property-viewer/widget-property-viewer.component.mjs +17 -5
  32. package/esm2022/layout/entity/lib/entity-master-create.viewmodel.mjs +2 -5
  33. package/esm2022/layout/entity/lib/entity-master-list.viewmodel.mjs +15 -5
  34. package/esm2022/layout/entity/lib/entity-registery.service.mjs +3 -3
  35. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget.config.mjs +2 -1
  36. package/esm2022/themes/default/index.mjs +3 -2
  37. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.mjs +29 -20
  38. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.mjs +19 -9
  39. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comment-list-view.component.mjs +123 -0
  40. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comments.service.mjs +3 -0
  41. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.mjs +22 -23
  42. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/overview/entity-single-overview.component.mjs +68 -0
  43. package/esm2022/themes/default/lib/layouts/entity-layouts/index.mjs +2 -0
  44. package/esm2022/widgets/lib/properties/data-source.props.mjs +21 -0
  45. package/esm2022/widgets/lib/properties/editors.props.mjs +27 -90
  46. package/esm2022/widgets/lib/properties/general.props.mjs +124 -0
  47. package/esm2022/widgets/lib/properties/index.mjs +4 -1
  48. package/esm2022/widgets/lib/properties/layout.props.mjs +138 -33
  49. package/esm2022/widgets/lib/properties/table-column.props.mjs +2 -2
  50. package/esm2022/widgets/lib/widgets/actions/button/button-widget-designer.component.mjs +54 -0
  51. package/esm2022/widgets/lib/widgets/actions/button/button-widget-view.component.mjs +3 -2
  52. package/esm2022/widgets/lib/widgets/actions/button/button-widget.config.mjs +3 -2
  53. package/esm2022/widgets/lib/widgets/advance/file/file-box-widget-edit.component.mjs +13 -4
  54. package/esm2022/widgets/lib/widgets/advance/file/file-box-widget.config.mjs +4 -2
  55. package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget-edit.component.mjs +13 -4
  56. package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget.config.mjs +2 -1
  57. package/esm2022/widgets/lib/widgets/advance/map/index.mjs +1 -4
  58. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-edit.component.mjs +54 -157
  59. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-view.component.mjs +40 -53
  60. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget.config.mjs +100 -11
  61. package/esm2022/widgets/lib/widgets/advance/qrcode/qrcode-widget-view.component.mjs +23 -14
  62. package/esm2022/widgets/lib/widgets/advance/qrcode/qrcode-widget.config.mjs +9 -7
  63. package/esm2022/widgets/lib/widgets/advance/signature/signature-pad-widget-edit.component.mjs +12 -3
  64. package/esm2022/widgets/lib/widgets/advance/signature/signature-pad-widget.config.mjs +5 -6
  65. package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-designer.component.mjs +54 -0
  66. package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-edit.component.mjs +21 -21
  67. package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-view.component.mjs +4 -1
  68. package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget.config.mjs +14 -5
  69. package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-designer.component.mjs +53 -0
  70. package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-edit.component.mjs +24 -12
  71. package/esm2022/widgets/lib/widgets/editors/color/color-box-widget.config.mjs +15 -6
  72. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-edit.component.mjs +13 -4
  73. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget.config.mjs +2 -1
  74. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-edit.component.mjs +13 -4
  75. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget.config.mjs +5 -2
  76. package/esm2022/widgets/lib/widgets/editors/email/email-box-widget-edit.component.mjs +13 -4
  77. package/esm2022/widgets/lib/widgets/editors/email/email-box-widget.config.mjs +4 -2
  78. package/esm2022/widgets/lib/widgets/editors/large-text/large-text-widget-edit.component.mjs +13 -4
  79. package/esm2022/widgets/lib/widgets/editors/large-text/large-text-widget.config.mjs +4 -2
  80. package/esm2022/widgets/lib/widgets/editors/link/link-widget-edit.component.mjs +13 -4
  81. package/esm2022/widgets/lib/widgets/editors/link/link-widget.config.mjs +2 -1
  82. package/esm2022/widgets/lib/widgets/editors/number/number-box-widget-edit.component.mjs +14 -5
  83. package/esm2022/widgets/lib/widgets/editors/number/number-box-widget.config.mjs +4 -2
  84. package/esm2022/widgets/lib/widgets/editors/password/password-box-widget-edit.component.mjs +12 -8
  85. package/esm2022/widgets/lib/widgets/editors/password/password-box-widget.config.mjs +4 -2
  86. package/esm2022/widgets/lib/widgets/editors/phone/phone-box-widget-edit.component.mjs +13 -4
  87. package/esm2022/widgets/lib/widgets/editors/phone/phone-box-widget.config.mjs +2 -1
  88. package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget-edit.component.mjs +14 -5
  89. package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget.config.mjs +4 -2
  90. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-edit.component.mjs +25 -4
  91. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-view.component.mjs +13 -4
  92. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget.config.mjs +2 -1
  93. package/esm2022/widgets/lib/widgets/editors/selection-list/index.mjs +2 -1
  94. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-designer.component.mjs +75 -0
  95. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-edit.component.mjs +25 -13
  96. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-view.component.mjs +2 -3
  97. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget.config.mjs +16 -3
  98. package/esm2022/widgets/lib/widgets/editors/text/text-box-widget-edit.component.mjs +13 -4
  99. package/esm2022/widgets/lib/widgets/editors/text/text-box-widget.config.mjs +4 -2
  100. package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget-edit.component.mjs +14 -4
  101. package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget.config.mjs +4 -2
  102. package/esm2022/widgets/lib/widgets/layout/block/block-widget-designer.component.mjs +40 -17
  103. package/esm2022/widgets/lib/widgets/layout/block/block-widget-view.component.mjs +17 -3
  104. package/esm2022/widgets/lib/widgets/layout/block/block-widget.config.mjs +9 -4
  105. package/esm2022/widgets/lib/widgets/layout/document/document-widget.config.mjs +2 -2
  106. package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget-designer.component.mjs +19 -9
  107. package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget.config.mjs +4 -3
  108. package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-designer.component.mjs +21 -10
  109. package/esm2022/widgets/lib/widgets/layout/grid/grid-widget.config.mjs +8 -5
  110. package/esm2022/widgets/lib/widgets/layout/grid-item/grid-item-widget-designer.component.mjs +49 -41
  111. package/esm2022/widgets/lib/widgets/layout/grid-item/grid-item-widget.config.mjs +6 -9
  112. package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget-designer.component.mjs +84 -0
  113. package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget-print.component.mjs +19 -0
  114. package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget-view.component.mjs +18 -0
  115. package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget.config.mjs +28 -0
  116. package/esm2022/widgets/lib/widgets/layout/grid-row/index.mjs +5 -0
  117. package/esm2022/widgets/lib/widgets/layout/page/page-widget-designer.component.mjs +8 -9
  118. package/esm2022/widgets/lib/widgets/layout/page/page-widget-view.component.mjs +1 -2
  119. package/esm2022/widgets/lib/widgets/layout/page/page-widget.config.mjs +8 -4
  120. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-designer.component.mjs +6 -6
  121. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget.config.mjs +2 -2
  122. package/esm2022/widgets/lib/widgets/layout/text-block/text-block-widget-designer.component.mjs +38 -0
  123. package/esm2022/widgets/lib/widgets/layout/text-block/text-block-widget-view.component.mjs +3 -2
  124. package/esm2022/widgets/lib/widgets/layout/text-block/text-block-widget.config.mjs +5 -5
  125. package/esm2022/widgets/lib/widgets.module.mjs +4 -1
  126. package/fesm2022/acorex-platform-auth.mjs +6 -4
  127. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  128. package/fesm2022/acorex-platform-common.mjs +1 -1
  129. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  130. package/fesm2022/acorex-platform-core.mjs +139 -1
  131. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  132. package/fesm2022/acorex-platform-layout-builder.mjs +21 -13
  133. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  134. package/fesm2022/acorex-platform-layout-designer-preview.component-CaRHf4x_.mjs +23 -0
  135. package/fesm2022/acorex-platform-layout-designer-preview.component-CaRHf4x_.mjs.map +1 -0
  136. package/fesm2022/{acorex-platform-layout-designer-widget-picker.component-DXgcm-fP.mjs → acorex-platform-layout-designer-widget-picker.component-BZryrCyh.mjs} +4 -4
  137. package/fesm2022/acorex-platform-layout-designer-widget-picker.component-BZryrCyh.mjs.map +1 -0
  138. package/fesm2022/acorex-platform-layout-designer.mjs +496 -345
  139. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  140. package/fesm2022/acorex-platform-layout-entity.mjs +14 -6
  141. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  142. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-DKNRxpQk.mjs → acorex-platform-themes-default-entity-master-create-view.component-Q8eTfAVx.mjs} +23 -13
  143. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Q8eTfAVx.mjs.map +1 -0
  144. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-BDk03AnX.mjs → acorex-platform-themes-default-entity-master-modify-view.component-BijYXMme.mjs} +4 -4
  145. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BijYXMme.mjs.map +1 -0
  146. package/fesm2022/acorex-platform-themes-default.mjs +226 -66
  147. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  148. package/fesm2022/acorex-platform-widgets-button-widget-designer.component-C0S_HJkl.mjs +57 -0
  149. package/fesm2022/acorex-platform-widgets-button-widget-designer.component-C0S_HJkl.mjs.map +1 -0
  150. package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-DAGbdSTk.mjs +57 -0
  151. package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-DAGbdSTk.mjs.map +1 -0
  152. package/fesm2022/{acorex-platform-widgets-checkbox-widget-view.component-BCsej7C6.mjs → acorex-platform-widgets-checkbox-widget-view.component-tPk6Gylo.mjs} +4 -1
  153. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-tPk6Gylo.mjs.map +1 -0
  154. package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-Bb3aXCNZ.mjs +56 -0
  155. package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-Bb3aXCNZ.mjs.map +1 -0
  156. package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-DlfG4EP1.mjs → acorex-platform-widgets-page-widget-designer.component-6BMZ0qRw.mjs} +8 -9
  157. package/fesm2022/acorex-platform-widgets-page-widget-designer.component-6BMZ0qRw.mjs.map +1 -0
  158. package/fesm2022/acorex-platform-widgets-text-block-widget-designer.component-Bi9hlpvB.mjs +41 -0
  159. package/fesm2022/acorex-platform-widgets-text-block-widget-designer.component-Bi9hlpvB.mjs.map +1 -0
  160. package/fesm2022/acorex-platform-widgets.mjs +1391 -777
  161. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  162. package/layout/builder/lib/builder/widget.types.d.ts +20 -8
  163. package/layout/designer/index.d.ts +1 -6
  164. package/layout/designer/lib/{board → designer/components/board}/board.component.d.ts +3 -1
  165. package/layout/designer/lib/{breadcrumbs → designer/components/breadcrumbs}/breadcrumbs.component.d.ts +1 -1
  166. package/layout/designer/lib/designer/components/drawers/data-sources/data-sources.component.d.ts +12 -0
  167. package/layout/designer/lib/{history → designer/components/drawers/history}/history.component.d.ts +1 -1
  168. package/layout/designer/lib/{outline → designer/components/drawers/outline}/outline.component.d.ts +1 -1
  169. package/layout/designer/lib/{pages → designer/components/drawers/pages}/pages.component.d.ts +1 -1
  170. package/layout/designer/lib/{header-menu → designer/components/header-menu}/header-menu.component.d.ts +1 -1
  171. package/layout/designer/lib/designer/designer.component.d.ts +1 -1
  172. package/layout/designer/lib/designer/index.d.ts +7 -0
  173. package/layout/designer/lib/designer/shared/designer-connector.service.d.ts +11 -0
  174. package/layout/designer/lib/{designer.service.d.ts → designer/shared/designer.service.d.ts} +9 -12
  175. package/layout/designer/lib/designer/shared/designer.typs.d.ts +4 -0
  176. package/layout/designer/lib/designer/shared/drawer-content/drawer-content.component.d.ts +8 -0
  177. package/layout/designer/lib/{widget-designer-renderer.component.d.ts → designer/shared/widget-designer-renderer.directive.d.ts} +6 -8
  178. package/layout/designer/lib/property-viewer/widget-property-viewer.component.d.ts +8 -0
  179. package/layout/entity/lib/entity-registery.service.d.ts +1 -1
  180. package/package.json +7 -7
  181. package/themes/default/index.d.ts +2 -1
  182. package/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.d.ts +7 -2
  183. package/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.d.ts +1 -1
  184. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comment-list-view.component.d.ts +33 -0
  185. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comments.service.d.ts +11 -0
  186. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.d.ts +3 -2
  187. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/overview/entity-single-overview.component.d.ts +11 -0
  188. package/themes/default/lib/layouts/entity-layouts/index.d.ts +1 -0
  189. package/widgets/lib/properties/data-source.props.d.ts +2 -0
  190. package/widgets/lib/properties/editors.props.d.ts +2 -5
  191. package/widgets/lib/properties/general.props.d.ts +7 -0
  192. package/widgets/lib/properties/index.d.ts +3 -0
  193. package/widgets/lib/properties/layout.props.d.ts +12 -3
  194. package/widgets/lib/widgets/actions/button/button-widget-designer.component.d.ts +15 -0
  195. package/widgets/lib/widgets/actions/button/button-widget-view.component.d.ts +1 -1
  196. package/widgets/lib/widgets/advance/file/file-box-widget-edit.component.d.ts +1 -0
  197. package/widgets/lib/widgets/advance/gallery/gallery-widget-edit.component.d.ts +1 -0
  198. package/widgets/lib/widgets/advance/map/index.d.ts +0 -3
  199. package/widgets/lib/widgets/advance/map/map-box-widget-edit.component.d.ts +10 -32
  200. package/widgets/lib/widgets/advance/map/map-box-widget-view.component.d.ts +6 -11
  201. package/widgets/lib/widgets/advance/qrcode/qrcode-widget-view.component.d.ts +5 -4
  202. package/widgets/lib/widgets/advance/signature/signature-pad-widget-edit.component.d.ts +1 -0
  203. package/widgets/lib/widgets/editors/checkbox/checkbox-widget-designer.component.d.ts +10 -0
  204. package/widgets/lib/widgets/editors/checkbox/checkbox-widget-edit.component.d.ts +2 -5
  205. package/widgets/lib/widgets/editors/checkbox/checkbox-widget-view.component.d.ts +3 -0
  206. package/widgets/lib/widgets/editors/color/color-box-widget-designer.component.d.ts +11 -0
  207. package/widgets/lib/widgets/editors/color/color-box-widget-edit.component.d.ts +3 -0
  208. package/widgets/lib/widgets/editors/contact/contact-widget-edit.component.d.ts +1 -0
  209. package/widgets/lib/widgets/editors/date-time/date-time-box-widget-edit.component.d.ts +1 -0
  210. package/widgets/lib/widgets/editors/email/email-box-widget-edit.component.d.ts +1 -0
  211. package/widgets/lib/widgets/editors/large-text/large-text-widget-edit.component.d.ts +1 -0
  212. package/widgets/lib/widgets/editors/link/link-widget-edit.component.d.ts +1 -0
  213. package/widgets/lib/widgets/editors/number/number-box-widget-edit.component.d.ts +1 -0
  214. package/widgets/lib/widgets/editors/password/password-box-widget-edit.component.d.ts +1 -2
  215. package/widgets/lib/widgets/editors/phone/phone-box-widget-edit.component.d.ts +1 -0
  216. package/widgets/lib/widgets/editors/rich-text/rich-text-widget-edit.component.d.ts +1 -0
  217. package/widgets/lib/widgets/editors/select/select-box-widget-edit.component.d.ts +1 -0
  218. package/widgets/lib/widgets/editors/select/select-box-widget-view.component.d.ts +1 -0
  219. package/widgets/lib/widgets/editors/selection-list/index.d.ts +1 -0
  220. package/widgets/lib/widgets/editors/selection-list/selection-list-widget-designer.component.d.ts +16 -0
  221. package/widgets/lib/widgets/editors/selection-list/selection-list-widget-edit.component.d.ts +4 -2
  222. package/widgets/lib/widgets/editors/selection-list/selection-list-widget-view.component.d.ts +1 -1
  223. package/widgets/lib/widgets/editors/text/text-box-widget-edit.component.d.ts +1 -0
  224. package/widgets/lib/widgets/editors/toggle/toggle-widget-edit.component.d.ts +2 -1
  225. package/widgets/lib/widgets/layout/block/block-widget-designer.component.d.ts +5 -1
  226. package/widgets/lib/widgets/layout/block/block-widget-view.component.d.ts +3 -0
  227. package/widgets/lib/widgets/layout/form-field/form-field-widget-designer.component.d.ts +2 -1
  228. package/widgets/lib/widgets/layout/grid/grid-widget-designer.component.d.ts +3 -2
  229. package/widgets/lib/widgets/layout/grid-item/grid-item-widget-designer.component.d.ts +6 -4
  230. package/widgets/lib/widgets/layout/grid-row/grid-row-widget-designer.component.d.ts +15 -0
  231. package/widgets/lib/widgets/layout/grid-row/grid-row-widget-print.component.d.ts +6 -0
  232. package/widgets/lib/widgets/layout/grid-row/grid-row-widget-view.component.d.ts +6 -0
  233. package/widgets/lib/widgets/layout/grid-row/grid-row-widget.config.d.ts +7 -0
  234. package/widgets/lib/widgets/layout/grid-row/index.d.ts +4 -0
  235. package/widgets/lib/widgets/layout/page/page-widget-designer.component.d.ts +3 -2
  236. package/widgets/lib/widgets/layout/text-block/text-block-widget-designer.component.d.ts +11 -0
  237. package/widgets/lib/widgets/layout/text-block/text-block-widget-view.component.d.ts +1 -1
  238. package/esm2022/layout/designer/lib/board/board.component.mjs +0 -92
  239. package/esm2022/layout/designer/lib/breadcrumbs/breadcrumbs.component.mjs +0 -64
  240. package/esm2022/layout/designer/lib/command.mjs +0 -185
  241. package/esm2022/layout/designer/lib/designer.service.mjs +0 -399
  242. package/esm2022/layout/designer/lib/header-menu/header-menu.component.mjs +0 -24
  243. package/esm2022/layout/designer/lib/helpers/grid-drawer/grid-drawer.component.mjs +0 -82
  244. package/esm2022/layout/designer/lib/history/history.component.mjs +0 -28
  245. package/esm2022/layout/designer/lib/outline/outline.component.mjs +0 -56
  246. package/esm2022/layout/designer/lib/pages/pages.component.mjs +0 -28
  247. package/esm2022/layout/designer/lib/widget-designer-renderer.component.mjs +0 -251
  248. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-column.component.mjs +0 -19
  249. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-filter.component.mjs +0 -20
  250. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-print.component.mjs +0 -19
  251. package/fesm2022/acorex-platform-layout-designer-preview.component-xkvSLydm.mjs +0 -23
  252. package/fesm2022/acorex-platform-layout-designer-preview.component-xkvSLydm.mjs.map +0 -1
  253. package/fesm2022/acorex-platform-layout-designer-widget-picker.component-DXgcm-fP.mjs.map +0 -1
  254. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-DKNRxpQk.mjs.map +0 -1
  255. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BDk03AnX.mjs.map +0 -1
  256. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-BCsej7C6.mjs.map +0 -1
  257. package/fesm2022/acorex-platform-widgets-page-widget-designer.component-DlfG4EP1.mjs.map +0 -1
  258. package/widgets/lib/widgets/advance/map/map-box-widget-column.component.d.ts +0 -6
  259. package/widgets/lib/widgets/advance/map/map-box-widget-filter.component.d.ts +0 -6
  260. package/widgets/lib/widgets/advance/map/map-box-widget-print.component.d.ts +0 -6
  261. /package/layout/designer/lib/{helpers → designer/components}/add-widget-button/add-widget-button.component.d.ts +0 -0
  262. /package/layout/designer/lib/{helpers → designer/components}/grid-drawer/grid-drawer.component.d.ts +0 -0
  263. /package/layout/designer/lib/{widget-picker → designer/components/widget-picker}/widget-picker.component.d.ts +0 -0
  264. /package/layout/designer/lib/{command.d.ts → designer/shared/command.d.ts} +0 -0
@@ -1,92 +0,0 @@
1
- import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
2
- import { CommonModule } from '@angular/common';
3
- import { Component, inject, ViewEncapsulation, ChangeDetectionStrategy, computed, effect, ElementRef } from '@angular/core';
4
- import { AXPWidgetDesignerRendererComponent } from '../widget-designer-renderer.component';
5
- import { AXPDesignerService } from '../designer.service';
6
- import { get } from 'lodash-es';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@acorex/platform/layout/builder";
9
- export class AXPDesignerBoardComponent {
10
- constructor() {
11
- this.context = {};
12
- this.elementRef = inject((ElementRef));
13
- this.breakpointMap = {
14
- 'sm': 640,
15
- 'md': 768,
16
- 'lg': 1024,
17
- 'xl': 1280,
18
- 'xxl': 1536
19
- };
20
- this.service = inject(AXPDesignerService);
21
- this.width = computed(() => {
22
- switch (this.service.size()) {
23
- case 'sm':
24
- return '340px';
25
- case 'md':
26
- case 'lg':
27
- return '768px';
28
- default:
29
- return '100%';
30
- }
31
- });
32
- this.ef = effect(() => {
33
- this.removeCustomClass();
34
- if (this.service.size() != 'xl') {
35
- this.applyResponsiveStyles(this.service.size());
36
- }
37
- });
38
- }
39
- // Unified method to extract media queries and create a custom class
40
- applyResponsiveStyles(breakpoint) {
41
- const minWidth = get(this.breakpointMap, breakpoint);
42
- const mediaRules = [];
43
- // Loop through all the stylesheets
44
- for (let sheet of Array.from(document.styleSheets)) {
45
- try {
46
- // Loop through CSS rules
47
- for (let rule of Array.from(sheet.cssRules)) {
48
- // Check if the rule is a CSSMediaRule
49
- if (rule instanceof CSSMediaRule && rule.media.mediaText.includes(`min-width: ${minWidth}px`)) {
50
- // Loop through the media rule's CSS rules
51
- for (let subRule of Array.from(rule.cssRules)) {
52
- mediaRules.push(subRule.cssText);
53
- }
54
- }
55
- }
56
- }
57
- catch (e) {
58
- console.error('Error accessing stylesheet:', e);
59
- }
60
- }
61
- // Create a dynamic class for the media queries
62
- this.createCustomClass(`axp-preview-${breakpoint}`, mediaRules, breakpoint);
63
- }
64
- createCustomClass(className, styles, breakpoint) {
65
- const styleSheet = document.createElement('style');
66
- styleSheet.setAttribute("data-screen", breakpoint);
67
- // Construct a pure CSS string, dynamically replacing the breakpoint prefix
68
- let styleString = "";
69
- styles.forEach(style => {
70
- // Replace any prefixed classes like 'lg:' or 'md:' dynamically
71
- const dynamicPrefix = new RegExp(`\\.${breakpoint}\\\\:`, 'g');
72
- styleString += `.${className} ${style.replace(dynamicPrefix, '.')}`; // Replace the breakpoint prefix
73
- });
74
- styleSheet.innerText = styleString;
75
- this.removeCustomClass();
76
- this.elementRef.nativeElement.appendChild(styleSheet);
77
- }
78
- removeCustomClass() {
79
- this.elementRef.nativeElement.querySelectorAll('style').forEach(s => s.remove());
80
- }
81
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerBoardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
82
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXPDesignerBoardComponent, isStandalone: true, selector: "axp-designer-board", ngImport: i0, template: "<div class=\"axp-designer-board axp-state-design axp-preview-{{service.size()}}\" [style.width]=\"width()\">\n <axp-widgets-container [(context)]=\"context\">\n <axp-widget-designer-renderer [node]=\"service.currentPage()\" [mode]=\"service.mode()\">\n </axp-widget-designer-renderer>\n </axp-widgets-container>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i1.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "variables", "functions"], outputs: ["onChanged", "contextChange"] }, { kind: "component", type: AXPWidgetDesignerRendererComponent, selector: "axp-widget-designer-renderer", inputs: ["parentNode", "index", "mode", "node"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
83
- }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerBoardComponent, decorators: [{
85
- type: Component,
86
- args: [{ selector: 'axp-designer-board', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
87
- CommonModule,
88
- AXPLayoutBuilderModule,
89
- AXPWidgetDesignerRendererComponent
90
- ], template: "<div class=\"axp-designer-board axp-state-design axp-preview-{{service.size()}}\" [style.width]=\"width()\">\n <axp-widgets-container [(context)]=\"context\">\n <axp-widget-designer-renderer [node]=\"service.currentPage()\" [mode]=\"service.mode()\">\n </axp-widget-designer-renderer>\n </axp-widgets-container>\n</div>" }]
91
- }] });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9ib2FyZC9ib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL2JvYXJkL2JvYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBZ0IsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBaUJoQyxNQUFNLE9BQU8seUJBQXlCO0lBWnRDO1FBY2MsWUFBTyxHQUFRLEVBQUUsQ0FBQztRQUNwQixlQUFVLEdBQUcsTUFBTSxDQUFDLENBQUEsVUFBMEIsQ0FBQSxDQUErQixDQUFDO1FBRTlFLGtCQUFhLEdBQUc7WUFDcEIsSUFBSSxFQUFFLEdBQUc7WUFDVCxJQUFJLEVBQUUsR0FBRztZQUNULElBQUksRUFBRSxJQUFJO1lBQ1YsSUFBSSxFQUFFLElBQUk7WUFDVixLQUFLLEVBQUUsSUFBSTtTQUNkLENBQUM7UUFrRFEsWUFBTyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBR3JDLFVBQUssR0FBRyxRQUFRLENB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VUFBVSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNyRixDQUFDOzhHQTNEUSx5QkFBeUI7a0dBQXpCLHlCQUF5Qiw4RUN0QnRDLHFWQUtNLDJDRFlFLFlBQVksOEJBQ1osc0JBQXNCLHVOQUN0QixrQ0FBa0M7OzJGQUc3Qix5QkFBeUI7a0JBWnJDLFNBQVM7K0JBQ0ksb0JBQW9CLGlCQUVmLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osc0JBQXNCO3dCQUN0QixrQ0FBa0M7cUJBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEhvc3RMaXN0ZW5lciwgY29tcHV0ZWQsIGVmZmVjdCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0RGVzaWduZXJSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4uL3dpZGdldC1kZXNpZ25lci1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZGVzaWduZXIuc2VydmljZSc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IGh0bWwyY2FudmFzIGZyb20gJ2h0bWwyY2FudmFzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWVyZ2UgfSBmcm9tICdyeGpzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2F4cC1kZXNpZ25lci1ib2FyZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JvYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEFYUExheW91dEJ1aWxkZXJNb2R1bGUsXG4gICAgICAgIEFYUFdpZGdldERlc2lnbmVyUmVuZGVyZXJDb21wb25lbnRcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBEZXNpZ25lckJvYXJkQ29tcG9uZW50IHtcblxuICAgIHByb3RlY3RlZCBjb250ZXh0OiBhbnkgPSB7fTtcbiAgICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4pIGFzIEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgcHJpdmF0ZSBicmVha3BvaW50TWFwID0ge1xuICAgICAgICAnc20nOiA2NDAsXG4gICAgICAgICdtZCc6IDc2OCxcbiAgICAgICAgJ2xnJzogMTAyNCxcbiAgICAgICAgJ3hsJzogMTI4MCxcbiAgICAgICAgJ3h4bCc6IDE1MzZcbiAgICB9O1xuXG4gICAgLy8gVW5pZmllZCBtZXRob2QgdG8gZXh0cmFjdCBtZWRpYSBxdWVyaWVzIGFuZCBjcmVhdGUgYSBjdXN0b20gY2xhc3NcbiAgICBhcHBseVJlc3BvbnNpdmVTdHlsZXMoYnJlYWtwb2ludDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IG1pbldpZHRoID0gZ2V0KHRoaXMuYnJlYWtwb2ludE1hcCwgYnJlYWtwb2ludCkgYXMgbnVtYmVyO1xuICAgICAgICBjb25zdCBtZWRpYVJ1bGVzID0gW107XG5cbiAgICAgICAgLy8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgc3R5bGVzaGVldHNcbiAgICAgICAgZm9yIChsZXQgc2hlZXQgb2YgQXJyYXkuZnJvbShkb2N1bWVudC5zdHlsZVNoZWV0cykpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgLy8gTG9vcCB0aHJvdWdoIENTUyBydWxlc1xuICAgICAgICAgICAgICAgIGZvciAobGV0IHJ1bGUgb2YgQXJyYXkuZnJvbShzaGVldC5jc3NSdWxlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHJ1bGUgaXMgYSBDU1NNZWRpYVJ1bGVcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGUgaW5zdGFuY2VvZiBDU1NNZWRpYVJ1bGUgJiYgcnVsZS5tZWRpYS5tZWRpYVRleHQuaW5jbHVkZXMoYG1pbi13aWR0aDogJHttaW5XaWR0aH1weGApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBMb29wIHRocm91Z2ggdGhlIG1lZGlhIHJ1bGUncyBDU1MgcnVsZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHN1YlJ1bGUgb2YgQXJyYXkuZnJvbShydWxlLmNzc1J1bGVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhUnVsZXMucHVzaChzdWJSdWxlLmNzc1RleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFjY2Vzc2luZyBzdHlsZXNoZWV0OicsIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGEgZHluYW1pYyBjbGFzcyBmb3IgdGhlIG1lZGlhIHF1ZXJpZXNcbiAgICAgICAgdGhpcy5jcmVhdGVDdXN0b21DbGFzcyhgYXhwLXByZXZpZXctJHticmVha3BvaW50fWAsIG1lZGlhUnVsZXMsIGJyZWFrcG9pbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQ3VzdG9tQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcsIHN0eWxlczogc3RyaW5nW10sIGJyZWFrcG9pbnQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBzdHlsZVNoZWV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgICAgc3R5bGVTaGVldC5zZXRBdHRyaWJ1dGUoXCJkYXRhLXNjcmVlblwiLCBicmVha3BvaW50KTtcblxuICAgICAgICAvLyBDb25zdHJ1Y3QgYSBwdXJlIENTUyBzdHJpbmcsIGR5bmFtaWNhbGx5IHJlcGxhY2luZyB0aGUgYnJlYWtwb2ludCBwcmVmaXhcbiAgICAgICAgbGV0IHN0eWxlU3RyaW5nID0gXCJcIjtcbiAgICAgICAgc3R5bGVzLmZvckVhY2goc3R5bGUgPT4ge1xuICAgICAgICAgICAgLy8gUmVwbGFjZSBhbnkgcHJlZml4ZWQgY2xhc3NlcyBsaWtlICdsZzonIG9yICdtZDonIGR5bmFtaWNhbGx5XG4gICAgICAgICAgICBjb25zdCBkeW5hbWljUHJlZml4ID0gbmV3IFJlZ0V4cChgXFxcXC4ke2JyZWFrcG9pbnR9XFxcXFxcXFw6YCwgJ2cnKTtcbiAgICAgICAgICAgIHN0eWxlU3RyaW5nICs9IGAuJHtjbGFzc05hbWV9ICR7c3R5bGUucmVwbGFjZShkeW5hbWljUHJlZml4LCAnLicpfWA7IC8vIFJlcGxhY2UgdGhlIGJyZWFrcG9pbnQgcHJlZml4XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHN0eWxlU2hlZXQuaW5uZXJUZXh0ID0gc3R5bGVTdHJpbmc7XG4gICAgICAgIHRoaXMucmVtb3ZlQ3VzdG9tQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoc3R5bGVTaGVldCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVDdXN0b21DbGFzcygpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc3R5bGUnKS5mb3JFYWNoKHMgPT4gcy5yZW1vdmUoKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNlcnZpY2UgPSBpbmplY3QoQVhQRGVzaWduZXJTZXJ2aWNlKTtcblxuXG4gICAgcHJvdGVjdGVkIHdpZHRoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuc2VydmljZS5zaXplKCkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJzM0MHB4JztcbiAgICAgICAgICAgIGNhc2UgJ21kJzpcbiAgICAgICAgICAgIGNhc2UgJ2xnJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJzc2OHB4JztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICcxMDAlJztcbiAgICAgICAgfVxuICAgIH0pO1xuXG5cbiAgICBwcml2YXRlIGVmID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgdGhpcy5yZW1vdmVDdXN0b21DbGFzcygpO1xuICAgICAgICBpZiAodGhpcy5zZXJ2aWNlLnNpemUoKSAhPSAneGwnKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5UmVzcG9uc2l2ZVN0eWxlcyh0aGlzLnNlcnZpY2Uuc2l6ZSgpKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG5cbiAgIFxuXG5cblxufVxuIiwiPGRpdiBjbGFzcz1cImF4cC1kZXNpZ25lci1ib2FyZCBheHAtc3RhdGUtZGVzaWduIGF4cC1wcmV2aWV3LXt7c2VydmljZS5zaXplKCl9fVwiIFtzdHlsZS53aWR0aF09XCJ3aWR0aCgpXCI+XG4gICAgPGF4cC13aWRnZXRzLWNvbnRhaW5lciBbKGNvbnRleHQpXT1cImNvbnRleHRcIj5cbiAgICAgICAgPGF4cC13aWRnZXQtZGVzaWduZXItcmVuZGVyZXIgW25vZGVdPVwic2VydmljZS5jdXJyZW50UGFnZSgpXCIgW21vZGVdPVwic2VydmljZS5tb2RlKClcIj5cbiAgICAgICAgPC9heHAtd2lkZ2V0LWRlc2lnbmVyLXJlbmRlcmVyPlxuICAgIDwvYXhwLXdpZGdldHMtY29udGFpbmVyPlxuPC9kaXY+Il19
@@ -1,64 +0,0 @@
1
- import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
2
- import { CommonModule } from '@angular/common';
3
- import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';
4
- import { AXPDesignerService } from '../designer.service';
5
- import { get } from 'lodash-es';
6
- import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
7
- import { AXDecoratorModule } from '@acorex/components/decorators';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@acorex/components/breadcrumbs";
10
- export class AXPDesignerBreadcrumbsComponent {
11
- constructor() {
12
- this.service = inject(AXPDesignerService);
13
- }
14
- getTitle(node) {
15
- return get(node, "__meta__.config.title");
16
- }
17
- handleClick(node) {
18
- this.service.select({ widget: node });
19
- }
20
- handleMouseOver(node) {
21
- this.service.focus({ widget: node });
22
- }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerBreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPDesignerBreadcrumbsComponent, isStandalone: true, selector: "axp-designer-breadcrumbs", ngImport: i0, template: `
25
- <ax-breadcrumbs class="ax-text-white">
26
- @for( b of service.breadcrumbs();track $index){
27
- <ax-breadcrumbs-item>
28
- <a (click)="handleClick(b)" (mouseover)="handleMouseOver(b)"> {{getTitle(b)}}</a>
29
- </ax-breadcrumbs-item>
30
- }
31
- <ng-template #divider>
32
- <i class="ax-icon ax-icon-chevron-right"></i>
33
- </ng-template>
34
- </ax-breadcrumbs>
35
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "component", type: i1.AXBreadCrumbsComponent, selector: "ax-breadcrumbs" }, { kind: "component", type: i1.AXBreadCrumbsItemComponent, selector: "ax-breadcrumbs-item", inputs: ["disabled", "active"] }, { kind: "ngmodule", type: AXDecoratorModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
36
- }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerBreadcrumbsComponent, decorators: [{
38
- type: Component,
39
- args: [{
40
- selector: 'axp-designer-breadcrumbs',
41
- template: `
42
- <ax-breadcrumbs class="ax-text-white">
43
- @for( b of service.breadcrumbs();track $index){
44
- <ax-breadcrumbs-item>
45
- <a (click)="handleClick(b)" (mouseover)="handleMouseOver(b)"> {{getTitle(b)}}</a>
46
- </ax-breadcrumbs-item>
47
- }
48
- <ng-template #divider>
49
- <i class="ax-icon ax-icon-chevron-right"></i>
50
- </ng-template>
51
- </ax-breadcrumbs>
52
- `,
53
- encapsulation: ViewEncapsulation.None,
54
- changeDetection: ChangeDetectionStrategy.OnPush,
55
- standalone: true,
56
- imports: [
57
- CommonModule,
58
- AXPLayoutBuilderModule,
59
- AXBreadcrumbsModule,
60
- AXDecoratorModule
61
- ],
62
- }]
63
- }] });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9icmVhZGNydW1icy9icmVhZGNydW1icy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFpQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUEyQmxFLE1BQU0sT0FBTywrQkFBK0I7SUF6QjVDO1FBMkJjLFlBQU8sR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztLQWFsRDtJQVhhLFFBQVEsQ0FBQyxJQUFtQjtRQUNsQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLENBQWtCLENBQUM7SUFDL0QsQ0FBQztJQUVTLFdBQVcsQ0FBQyxJQUFtQjtRQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFUyxlQUFlLENBQUMsSUFBbUI7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDOzhHQWRRLCtCQUErQjtrR0FBL0IsK0JBQStCLG9GQXZCOUI7Ozs7Ozs7Ozs7O0tBV1QsMkRBS0csWUFBWSw4QkFDWixzQkFBc0IsOEJBQ3RCLG1CQUFtQiwrT0FDbkIsaUJBQWlCOzsyRkFJWiwrQkFBK0I7a0JBekIzQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7S0FXVDtvQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3FCQUNwQjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJNb2R1bGUsIEFYUFdpZGdldE5vZGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUERlc2lnbmVyU2VydmljZSB9IGZyb20gJy4uL2Rlc2lnbmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYQnJlYWRjcnVtYnNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnJlYWRjcnVtYnMnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXhwLWRlc2lnbmVyLWJyZWFkY3J1bWJzJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8YXgtYnJlYWRjcnVtYnMgY2xhc3M9XCJheC10ZXh0LXdoaXRlXCI+XG4gICAgICAgICAgICBAZm9yKCBiIG9mIHNlcnZpY2UuYnJlYWRjcnVtYnMoKTt0cmFjayAkaW5kZXgpe1xuICAgICAgICAgICAgICAgIDxheC1icmVhZGNydW1icy1pdGVtPlxuICAgICAgICAgICAgICAgICAgICA8YSAgIChjbGljayk9XCJoYW5kbGVDbGljayhiKVwiIChtb3VzZW92ZXIpPVwiaGFuZGxlTW91c2VPdmVyKGIpXCI+IHt7Z2V0VGl0bGUoYil9fTwvYT5cbiAgICAgICAgICAgICAgICA8L2F4LWJyZWFkY3J1bWJzLWl0ZW0+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RpdmlkZXI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tY2hldnJvbi1yaWdodFwiPjwvaT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYXgtYnJlYWRjcnVtYnM+XG4gICAgYCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEFYUExheW91dEJ1aWxkZXJNb2R1bGUsXG4gICAgICAgIEFYQnJlYWRjcnVtYnNNb2R1bGUsXG4gICAgICAgIEFYRGVjb3JhdG9yTW9kdWxlXG4gICAgXSxcbn0pXG5cbmV4cG9ydCBjbGFzcyBBWFBEZXNpZ25lckJyZWFkY3J1bWJzQ29tcG9uZW50IHtcblxuICAgIHByb3RlY3RlZCBzZXJ2aWNlID0gaW5qZWN0KEFYUERlc2lnbmVyU2VydmljZSk7XG5cbiAgICBwcm90ZWN0ZWQgZ2V0VGl0bGUobm9kZTogQVhQV2lkZ2V0Tm9kZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBnZXQobm9kZSwgXCJfX21ldGFfXy5jb25maWcudGl0bGVcIikgYXMgYW55IGFzIHN0cmluZztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFuZGxlQ2xpY2sobm9kZTogQVhQV2lkZ2V0Tm9kZSkge1xuICAgICAgICB0aGlzLnNlcnZpY2Uuc2VsZWN0KHsgd2lkZ2V0OiBub2RlIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBoYW5kbGVNb3VzZU92ZXIobm9kZTogQVhQV2lkZ2V0Tm9kZSkge1xuICAgICAgICB0aGlzLnNlcnZpY2UuZm9jdXMoeyB3aWRnZXQ6IG5vZGUgfSk7XG4gICAgfVxufSJdfQ==
@@ -1,185 +0,0 @@
1
- import { computed, Injectable, signal } from "@angular/core";
2
- import { cloneDeep, merge } from "lodash-es";
3
- import * as i0 from "@angular/core";
4
- // AddWidgetCommand
5
- export class AddWidgetCommand {
6
- constructor(widget, parent, previousSelection) {
7
- this.widget = widget;
8
- this.parent = parent;
9
- this.previousSelection = previousSelection;
10
- }
11
- execute() {
12
- this.parent.children = this.parent.children || [];
13
- this.parent.children.push(this.widget);
14
- }
15
- undo() {
16
- this.parent.children = this.parent.children || [];
17
- const index = this.parent.children.indexOf(this.widget);
18
- if (index > -1) {
19
- this.parent.children.splice(index, 1);
20
- }
21
- }
22
- description() {
23
- return `Added widget ${this.widget.name}`;
24
- }
25
- icon() {
26
- return `fa-solid fa-square-plus`;
27
- }
28
- getExecutionSelection() {
29
- return this.widget; // After executing, select the newly added widget
30
- }
31
- getUndoSelection() {
32
- return this.previousSelection; // After undo, select the previously selected widget
33
- }
34
- }
35
- export class RemoveWidgetCommand {
36
- constructor(widget, parent, previousSelection) {
37
- this.widget = widget;
38
- this.parent = parent;
39
- this.previousSelection = previousSelection;
40
- parent.children = parent.children || [];
41
- this.index = parent.children.indexOf(widget); // Capture the index for undo purposes
42
- }
43
- execute() {
44
- this.parent.children = this.parent.children || [];
45
- this.index = this.parent.children.indexOf(this.widget); // Re-assert the index in case it has changed
46
- this.parent.children.splice(this.index, 1);
47
- }
48
- undo() {
49
- this.parent.children = this.parent.children || [];
50
- this.parent.children.splice(this.index, 0, this.widget); // Reinsert at the original index
51
- }
52
- description() {
53
- return `Removed widget ${this.widget.name}`;
54
- }
55
- icon() {
56
- return `fa-solid fa-square-minus`;
57
- }
58
- getExecutionSelection() {
59
- return this.previousSelection; // Typically the parent or a nearby sibling could be focused
60
- }
61
- getUndoSelection() {
62
- return this.widget; // Select the widget itself when the operation is undone
63
- }
64
- }
65
- export class UpdateWidgetCommand {
66
- constructor(widget, values, previousSelection) {
67
- this.widget = widget;
68
- this.newState = merge(cloneDeep(widget), values);
69
- this.previousSelection = previousSelection;
70
- this.previousState = cloneDeep(widget);
71
- }
72
- execute() {
73
- merge(this.widget, this.newState);
74
- }
75
- undo() {
76
- this.deepPruneAndRestore(this.widget, this.previousState);
77
- }
78
- description() {
79
- return `Updated widget ${this.widget.name}`;
80
- }
81
- icon() {
82
- return `fa-solid fa-pen-to-square`;
83
- }
84
- getExecutionSelection() {
85
- return this.widget; // Focus the widget after it's updated
86
- }
87
- getUndoSelection() {
88
- return this.previousSelection; // Restore the focus to where it was before the update
89
- }
90
- deepPruneAndRestore(current, original) {
91
- Object.keys(current).forEach(key => {
92
- if (original.hasOwnProperty(key)) {
93
- if (typeof current[key] === 'object' && current[key] !== null && !(current[key] instanceof Array)) {
94
- this.deepPruneAndRestore(current[key], original[key]);
95
- }
96
- }
97
- else {
98
- delete current[key]; // Remove properties not present in original
99
- }
100
- });
101
- // Restore the original properties
102
- merge(current, original);
103
- }
104
- }
105
- export class CommandManager {
106
- constructor() {
107
- this.undoStack = signal([]);
108
- this.currentIndex = signal(-1);
109
- this.selectedNode = signal(null);
110
- this.canUndo = computed(() => this.currentIndex() >= 0);
111
- this.canRedo = computed(() => this.currentIndex() < this.undoStack().length - 1);
112
- this.history = computed(() => this.undoStack().map((cmd, index) => ({
113
- description: cmd.description(),
114
- icon: cmd.icon(),
115
- isPast: this.currentIndex() > index,
116
- isFuture: this.currentIndex() < index,
117
- isCurrent: this.currentIndex() == index
118
- })));
119
- }
120
- executeCommand(command) {
121
- // Check if the currentIndex is not at the end of the undoStack
122
- if (this.currentIndex() !== this.undoStack().length - 1) {
123
- // Remove all commands beyond the current index to discard the "future" commands
124
- const newUndoStack = this.undoStack().slice(0, this.currentIndex() + 1);
125
- this.undoStack.set(newUndoStack);
126
- }
127
- command.execute();
128
- this.undoStack.set([...this.undoStack(), command]); // Add the new command to the stack
129
- this.currentIndex.set(this.undoStack().length - 1); // Update currentIndex to the end of the stack
130
- this.selectedNode.set(command.getExecutionSelection()); // Update the selected node
131
- }
132
- undo() {
133
- if (this.currentIndex() >= 0) {
134
- const command = this.undoStack()[this.currentIndex()];
135
- command.undo();
136
- this.currentIndex.set(this.currentIndex() - 1);
137
- if (this.currentIndex() >= 0) {
138
- this.selectedNode.set(this.undoStack()[this.currentIndex()].getUndoSelection());
139
- }
140
- else {
141
- this.selectedNode.set(null); // No selection if all commands are undone
142
- }
143
- }
144
- }
145
- redo() {
146
- if (this.currentIndex() < this.undoStack().length - 1) {
147
- this.currentIndex.set(this.currentIndex() + 1);
148
- const command = this.undoStack()[this.currentIndex()];
149
- command.execute();
150
- this.selectedNode.set(command.getExecutionSelection());
151
- }
152
- }
153
- goToCommand(index) {
154
- if (index < 0 || index >= this.undoStack().length || index === this.currentIndex()) {
155
- return; // Out of bounds or already at the desired index
156
- }
157
- if (index > this.currentIndex()) {
158
- // Need to redo until reaching the desired index
159
- while (this.currentIndex() < index) {
160
- this.redo();
161
- }
162
- }
163
- else {
164
- // Need to undo until reaching the desired index
165
- while (this.currentIndex() > index) {
166
- this.undo();
167
- }
168
- }
169
- // Optionally update any UI components or state here
170
- this.selectedNode.set(this.undoStack()[this.currentIndex()].getExecutionSelection());
171
- }
172
- clear() {
173
- this.undoStack.set([]);
174
- this.currentIndex.set(-1);
175
- }
176
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CommandManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
177
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CommandManager, providedIn: 'root' }); }
178
- }
179
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CommandManager, decorators: [{
180
- type: Injectable,
181
- args: [{
182
- providedIn: 'root'
183
- }]
184
- }] });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvY29tbWFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBWTdDLG1CQUFtQjtBQUNuQixNQUFNLE9BQU8sZ0JBQWdCO0lBS3pCLFlBQVksTUFBcUIsRUFBRSxNQUFxQixFQUFFLGlCQUFnQztRQUN0RixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7SUFDL0MsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSTtRQUNBLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNsRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFF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QUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBYU0sS0FBSztRQUNSLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQzs4R0EvRVEsY0FBYztrSEFBZCxjQUFjLGNBRlgsTUFBTTs7MkZBRVQsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBXaWRnZXROb2RlIH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXJcIjtcbmltcG9ydCB7IGNvbXB1dGVkLCBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBtZXJnZSB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuLy8gQ29tbWFuZCBpbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWFuZCB7XG4gICAgZXhlY3V0ZSgpOiB2b2lkO1xuICAgIHVuZG8oKTogdm9pZDtcbiAgICBkZXNjcmlwdGlvbigpOiBzdHJpbmc7XG4gICAgaWNvbigpOiBzdHJpbmc7XG4gICAgZ2V0RXhlY3V0aW9uU2VsZWN0aW9uKCk6IEFYUFdpZGdldE5vZGU7ICAvLyBOb2RlIHRvIHNlbGVjdCBhZnRlciBleGVjdXRpb25cbiAgICBnZXRVbmRvU2VsZWN0aW9uKCk6IEFYUFdpZGdldE5vZGU7ICAgICAgIC8vIE5vZGUgdG8gc2VsZWN0IGFmdGVyIHVuZG9cbn1cblxuLy8gQWRkV2lkZ2V0Q29tbWFuZFxuZXhwb3J0IGNsYXNzIEFkZFdpZGdldENvbW1hbmQgaW1wbGVtZW50cyBDb21tYW5kIHtcbiAgICBwcml2YXRlIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIHBhcmVudDogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIHByZXZpb3VzU2VsZWN0aW9uOiBBWFBXaWRnZXROb2RlO1xuXG4gICAgY29uc3RydWN0b3Iod2lkZ2V0OiBBWFBXaWRnZXROb2RlLCBwYXJlbnQ6IEFYUFdpZGdldE5vZGUsIHByZXZpb3VzU2VsZWN0aW9uOiBBWFBXaWRnZXROb2RlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0ID0gd2lkZ2V0O1xuICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHByZXZpb3VzU2VsZWN0aW9uO1xuICAgIH1cblxuICAgIGV4ZWN1dGUoKSB7XG4gICAgICAgIHRoaXMucGFyZW50LmNoaWxkcmVuID0gdGhpcy5wYXJlbnQuY2hpbGRyZW4gfHwgW107XG4gICAgICAgIHRoaXMucGFyZW50LmNoaWxkcmVuLnB1c2godGhpcy53aWRnZXQpO1xuICAgIH1cblxuICAgIHVuZG8oKSB7XG4gICAgICAgIHRoaXMucGFyZW50LmNoaWxkcmVuID0gdGhpcy5wYXJlbnQuY2hpbGRyZW4gfHwgW107XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZih0aGlzLndpZGdldCk7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzY3JpcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBgQWRkZWQgd2lkZ2V0ICR7dGhpcy53aWRnZXQubmFtZX1gO1xuICAgIH1cblxuICAgIGljb24oKSB7XG4gICAgICAgIHJldHVybiBgZmEtc29saWQgZmEtc3F1YXJlLXBsdXNgO1xuICAgIH1cblxuICAgIGdldEV4ZWN1dGlvblNlbGVjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2lkZ2V0OyAgLy8gQWZ0ZXIgZXhlY3V0aW5nLCBzZWxlY3QgdGhlIG5ld2x5IGFkZGVkIHdpZGdldFxuICAgIH1cblxuICAgIGdldFVuZG9TZWxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXZpb3VzU2VsZWN0aW9uOyAgLy8gQWZ0ZXIgdW5kbywgc2VsZWN0IHRoZSBwcmV2aW91c2x5IHNlbGVjdGVkIHdpZGdldFxuICAgIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgUmVtb3ZlV2lkZ2V0Q29tbWFuZCBpbXBsZW1lbnRzIENvbW1hbmQge1xuICAgIHByaXZhdGUgd2lkZ2V0OiBBWFBXaWRnZXROb2RlO1xuICAgIHByaXZhdGUgcGFyZW50OiBBWFBXaWRnZXROb2RlO1xuICAgIHByaXZhdGUgcHJldmlvdXNTZWxlY3Rpb246IEFYUFdpZGdldE5vZGU7XG4gICAgcHJpdmF0ZSBpbmRleDogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3Iod2lkZ2V0OiBBWFBXaWRnZXROb2RlLCBwYXJlbnQ6IEFYUFdpZGdldE5vZGUsIHByZXZpb3VzU2VsZWN0aW9uOiBBWFBXaWRnZXROb2RlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0ID0gd2lkZ2V0O1xuICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHByZXZpb3VzU2VsZWN0aW9uO1xuICAgICAgICBwYXJlbnQuY2hpbGRyZW4gPSBwYXJlbnQuY2hpbGRyZW4gfHwgW107XG4gICAgICAgIHRoaXMuaW5kZXggPSBwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZih3aWRnZXQpOyAgLy8gQ2FwdHVyZSB0aGUgaW5kZXggZm9yIHVuZG8gcHVycG9zZXNcbiAgICB9XG5cbiAgICBleGVjdXRlKCkge1xuICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbiA9IHRoaXMucGFyZW50LmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICB0aGlzLmluZGV4ID0gdGhpcy5wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZih0aGlzLndpZGdldCk7ICAvLyBSZS1hc3NlcnQgdGhlIGluZGV4IGluIGNhc2UgaXQgaGFzIGNoYW5nZWRcbiAgICAgICAgdGhpcy5wYXJlbnQuY2hpbGRyZW4uc3BsaWNlKHRoaXMuaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHVuZG8oKSB7XG4gICAgICAgIHRoaXMucGFyZW50LmNoaWxkcmVuID0gdGhpcy5wYXJlbnQuY2hpbGRyZW4gfHwgW107XG4gICAgICAgIHRoaXMucGFyZW50LmNoaWxkcmVuLnNwbGljZSh0aGlzLmluZGV4LCAwLCB0aGlzLndpZGdldCk7ICAvLyBSZWluc2VydCBhdCB0aGUgb3JpZ2luYWwgaW5kZXhcbiAgICB9XG5cbiAgICBkZXNjcmlwdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGBSZW1vdmVkIHdpZGdldCAke3RoaXMud2lkZ2V0Lm5hbWV9YDtcbiAgICB9XG5cbiAgICBpY29uKCkge1xuICAgICAgICByZXR1cm4gYGZhLXNvbGlkIGZhLXNxdWFyZS1taW51c2A7XG4gICAgfVxuXG4gICAgZ2V0RXhlY3V0aW9uU2VsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmV2aW91c1NlbGVjdGlvbjsgIC8vIFR5cGljYWxseSB0aGUgcGFyZW50IG9yIGEgbmVhcmJ5IHNpYmxpbmcgY291bGQgYmUgZm9jdXNlZFxuICAgIH1cblxuICAgIGdldFVuZG9TZWxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldDsgIC8vIFNlbGVjdCB0aGUgd2lkZ2V0IGl0c2VsZiB3aGVuIHRoZSBvcGVyYXRpb24gaXMgdW5kb25lXG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRlV2lkZ2V0Q29tbWFuZCBpbXBsZW1lbnRzIENvbW1hbmQge1xuICAgIHByaXZhdGUgd2lkZ2V0OiBBWFBXaWRnZXROb2RlO1xuICAgIHByaXZhdGUgcHJldmlvdXNTdGF0ZTogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIG5ld1N0YXRlOiBBWFBXaWRnZXROb2RlO1xuICAgIHByaXZhdGUgcHJldmlvdXNTZWxlY3Rpb246IEFYUFdpZGdldE5vZGU7XG5cbiAgICBjb25zdHJ1Y3Rvcih3aWRnZXQ6IEFYUFdpZGdldE5vZGUsIHZhbHVlczogUGFydGlhbDxBWFBXaWRnZXROb2RlPiwgcHJldmlvdXNTZWxlY3Rpb246IEFYUFdpZGdldE5vZGUpIHtcbiAgICAgICAgdGhpcy53aWRnZXQgPSB3aWRnZXQ7XG4gICAgICAgIHRoaXMubmV3U3RhdGUgPSBtZXJnZShjbG9uZURlZXAod2lkZ2V0KSwgdmFsdWVzKTtcbiAgICAgICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHByZXZpb3VzU2VsZWN0aW9uO1xuICAgICAgICB0aGlzLnByZXZpb3VzU3RhdGUgPSBjbG9uZURlZXAod2lkZ2V0KTtcbiAgICB9XG5cbiAgICBleGVjdXRlKCkge1xuICAgICAgICBtZXJnZSh0aGlzLndpZGdldCwgdGhpcy5uZXdTdGF0ZSlcbiAgICB9XG5cbiAgICB1bmRvKCkge1xuICAgICAgICB0aGlzLmRlZXBQcnVuZUFuZFJlc3RvcmUodGhpcy53aWRnZXQsIHRoaXMucHJldmlvdXNTdGF0ZSk7XG4gICAgfVxuXG4gICAgZGVzY3JpcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBgVXBkYXRlZCB3aWRnZXQgJHt0aGlzLndpZGdldC5uYW1lfWA7XG4gICAgfVxuXG4gICAgaWNvbigpIHtcbiAgICAgICAgcmV0dXJuIGBmYS1zb2xpZCBmYS1wZW4tdG8tc3F1YXJlYDtcbiAgICB9XG5cbiAgICBnZXRFeGVjdXRpb25TZWxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldDsgIC8vIEZvY3VzIHRoZSB3aWRnZXQgYWZ0ZXIgaXQncyB1cGRhdGVkXG4gICAgfVxuXG4gICAgZ2V0VW5kb1NlbGVjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXNTZWxlY3Rpb247ICAvLyBSZXN0b3JlIHRoZSBmb2N1cyB0byB3aGVyZSBpdCB3YXMgYmVmb3JlIHRoZSB1cGRhdGVcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlZXBQcnVuZUFuZFJlc3RvcmUoY3VycmVudDogYW55LCBvcmlnaW5hbDogYW55KSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGN1cnJlbnQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGlmIChvcmlnaW5hbC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50W2tleV0gPT09ICdvYmplY3QnICYmIGN1cnJlbnRba2V5XSAhPT0gbnVsbCAmJiAhKGN1cnJlbnRba2V5XSBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZXBQcnVuZUFuZFJlc3RvcmUoY3VycmVudFtrZXldLCBvcmlnaW5hbFtrZXldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBjdXJyZW50W2tleV07ICAvLyBSZW1vdmUgcHJvcGVydGllcyBub3QgcHJlc2VudCBpbiBvcmlnaW5hbFxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBwcm9wZXJ0aWVzXG4gICAgICAgIG1lcmdlKGN1cnJlbnQsIG9yaWdpbmFsKTtcbiAgICB9XG59XG5cblxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbW1hbmRNYW5hZ2VyIHtcbiAgICBwcml2YXRlIHVuZG9TdGFjayA9IHNpZ25hbDxDb21tYW5kW10+KFtdKTtcbiAgICBwcml2YXRlIGN1cnJlbnRJbmRleCA9IHNpZ25hbDxudW1iZXI+KC0xKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWROb2RlID0gc2lnbmFsPEFYUFdpZGdldE5vZGUgfCBudWxsPihudWxsKTtcblxuICAgIHB1YmxpYyBjYW5VbmRvID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jdXJyZW50SW5kZXgoKSA+PSAwKVxuICAgIHB1YmxpYyBjYW5SZWRvID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jdXJyZW50SW5kZXgoKSA8IHRoaXMudW5kb1N0YWNrKCkubGVuZ3RoIC0gMSlcblxuICAgIGV4ZWN1dGVDb21tYW5kKGNvbW1hbmQ6IENvbW1hbmQpIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnRJbmRleCBpcyBub3QgYXQgdGhlIGVuZCBvZiB0aGUgdW5kb1N0YWNrXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbmRleCgpICE9PSB0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIC8vIFJlbW92ZSBhbGwgY29tbWFuZHMgYmV5b25kIHRoZSBjdXJyZW50IGluZGV4IHRvIGRpc2NhcmQgdGhlIFwiZnV0dXJlXCIgY29tbWFuZHNcbiAgICAgICAgICAgIGNvbnN0IG5ld1VuZG9TdGFjayA9IHRoaXMudW5kb1N0YWNrKCkuc2xpY2UoMCwgdGhpcy5jdXJyZW50SW5kZXgoKSArIDEpO1xuICAgICAgICAgICAgdGhpcy51bmRvU3RhY2suc2V0KG5ld1VuZG9TdGFjayk7XG4gICAgICAgIH1cblxuICAgICAgICBjb21tYW5kLmV4ZWN1dGUoKTtcbiAgICAgICAgdGhpcy51bmRvU3RhY2suc2V0KFsuLi50aGlzLnVuZG9TdGFjaygpLCBjb21tYW5kXSk7IC8vIEFkZCB0aGUgbmV3IGNvbW1hbmQgdG8gdGhlIHN0YWNrXG4gICAgICAgIHRoaXMuY3VycmVudEluZGV4LnNldCh0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCAtIDEpOyAvLyBVcGRhdGUgY3VycmVudEluZGV4IHRvIHRoZSBlbmQgb2YgdGhlIHN0YWNrXG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlLnNldChjb21tYW5kLmdldEV4ZWN1dGlvblNlbGVjdGlvbigpKTsgLy8gVXBkYXRlIHRoZSBzZWxlY3RlZCBub2RlXG4gICAgfVxuXG4gICAgdW5kbygpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEluZGV4KCkgPj0gMCkge1xuICAgICAgICAgICAgY29uc3QgY29tbWFuZCA9IHRoaXMudW5kb1N0YWNrKClbdGhpcy5jdXJyZW50SW5kZXgoKV07XG4gICAgICAgICAgICBjb21tYW5kLnVuZG8oKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEluZGV4LnNldCh0aGlzLmN1cnJlbnRJbmRleCgpIC0gMSk7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50SW5kZXgoKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUuc2V0KHRoaXMudW5kb1N0YWNrKClbdGhpcy5jdXJyZW50SW5kZXgoKV0uZ2V0VW5kb1NlbGVjdGlvbigpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUuc2V0KG51bGwpOyAvLyBObyBzZWxlY3Rpb24gaWYgYWxsIGNvbW1hbmRzIGFyZSB1bmRvbmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZG8oKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbmRleCgpIDwgdGhpcy51bmRvU3RhY2soKS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleC5zZXQodGhpcy5jdXJyZW50SW5kZXgoKSArIDEpO1xuICAgICAgICAgICAgY29uc3QgY29tbWFuZCA9IHRoaXMudW5kb1N0YWNrKClbdGhpcy5jdXJyZW50SW5kZXgoKV07XG4gICAgICAgICAgICBjb21tYW5kLmV4ZWN1dGUoKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlLnNldChjb21tYW5kLmdldEV4ZWN1dGlvblNlbGVjdGlvbigpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdvVG9Db21tYW5kKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCB8fCBpbmRleCA9PT0gdGhpcy5jdXJyZW50SW5kZXgoKSkge1xuICAgICAgICAgICAgcmV0dXJuOyAgLy8gT3V0IG9mIGJvdW5kcyBvciBhbHJlYWR5IGF0IHRoZSBkZXNpcmVkIGluZGV4XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5kZXggPiB0aGlzLmN1cnJlbnRJbmRleCgpKSB7XG4gICAgICAgICAgICAvLyBOZWVkIHRvIHJlZG8gdW50aWwgcmVhY2hpbmcgdGhlIGRlc2lyZWQgaW5kZXhcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLmN1cnJlbnRJbmRleCgpIDwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZG8oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE5lZWQgdG8gdW5kbyB1bnRpbCByZWFjaGluZyB0aGUgZGVzaXJlZCBpbmRleFxuICAgICAgICAgICAgd2hpbGUgKHRoaXMuY3VycmVudEluZGV4KCkgPiBpbmRleCkge1xuICAgICAgICAgICAgICAgIHRoaXMudW5kbygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3B0aW9uYWxseSB1cGRhdGUgYW55IFVJIGNvbXBvbmVudHMgb3Igc3RhdGUgaGVyZVxuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZS5zZXQodGhpcy51bmRvU3RhY2soKVt0aGlzLmN1cnJlbnRJbmRleCgpXS5nZXRFeGVjdXRpb25TZWxlY3Rpb24oKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGhpc3RvcnkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnVuZG9TdGFjaygpLm1hcCgoY21kLCBpbmRleCkgPT4gKFxuICAgICAgICB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogY21kLmRlc2NyaXB0aW9uKCksXG4gICAgICAgICAgICBpY29uOiBjbWQuaWNvbigpLFxuICAgICAgICAgICAgaXNQYXN0OiB0aGlzLmN1cnJlbnRJbmRleCgpID4gaW5kZXgsXG4gICAgICAgICAgICBpc0Z1dHVyZTogdGhpcy5jdXJyZW50SW5kZXgoKSA8IGluZGV4LFxuICAgICAgICAgICAgaXNDdXJyZW50OiB0aGlzLmN1cnJlbnRJbmRleCgpID09IGluZGV4XG4gICAgICAgIH1cbiAgICApKSlcblxuXG4gICAgcHVibGljIGNsZWFyKCkge1xuICAgICAgICB0aGlzLnVuZG9TdGFjay5zZXQoW10pO1xuICAgICAgICB0aGlzLmN1cnJlbnRJbmRleC5zZXQoLTEpO1xuICAgIH1cbn0iXX0=