@acorex/platform 18.0.10 → 18.0.12

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 (443) hide show
  1. package/auth/lib/session.service.d.ts +2 -2
  2. package/core/index.d.ts +2 -0
  3. package/core/lib/types.d.ts +1 -0
  4. package/core/utils/countdown-timer.d.ts +14 -0
  5. package/core/utils/html-utils.d.ts +9 -0
  6. package/esm2022/auth/lib/session.service.mjs +23 -38
  7. package/esm2022/common/lib/schema/widgets/common-widget-filter/number-widget-filter.component.mjs +2 -2
  8. package/esm2022/common/lib/schema/widgets/number/number-widget-edit.component.mjs +2 -2
  9. package/esm2022/core/index.mjs +3 -1
  10. package/esm2022/core/lib/types.mjs +13 -2
  11. package/esm2022/core/utils/countdown-timer.mjs +49 -0
  12. package/esm2022/core/utils/html-utils.mjs +27 -0
  13. package/esm2022/layout/builder/lib/builder/widget-column-renderer.mjs +3 -3
  14. package/esm2022/layout/builder/lib/builder/widget-container.component.mjs +12 -18
  15. package/esm2022/layout/builder/lib/builder/widget-registery.service.mjs +4 -1
  16. package/esm2022/layout/builder/lib/builder/widget-renderer.component.mjs +19 -12
  17. package/esm2022/layout/builder/lib/builder/widget.types.mjs +57 -58
  18. package/esm2022/layout/designer/index.mjs +7 -2
  19. package/esm2022/layout/designer/lib/board/board.component.mjs +127 -0
  20. package/esm2022/layout/designer/lib/breadcrumbs/breadcrumbs.component.mjs +64 -0
  21. package/esm2022/layout/designer/lib/buttons/add-widget-button/add-widget-button.component.mjs +37 -0
  22. package/esm2022/layout/designer/lib/designer/designer.component.mjs +54 -0
  23. package/esm2022/layout/designer/lib/designer.module.mjs +6 -26
  24. package/esm2022/layout/designer/lib/designer.service.mjs +356 -0
  25. package/esm2022/layout/designer/lib/header-menu/header-menu.component.mjs +24 -0
  26. package/esm2022/layout/designer/lib/history/history.component.mjs +21 -0
  27. package/esm2022/layout/designer/lib/history-manager.service.mjs +117 -0
  28. package/esm2022/layout/designer/lib/outline/outline.component.mjs +55 -0
  29. package/esm2022/layout/designer/lib/property-viewer/widget-property-viewer.component.mjs +103 -0
  30. package/esm2022/layout/designer/lib/widget-designer-renderer.component.mjs +243 -0
  31. package/esm2022/layout/designer/lib/widget-picker/widget-picker.component.mjs +23 -0
  32. package/esm2022/layout/entity/lib/widgets/lookup-widget/index.mjs +1 -2
  33. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-column.component.mjs +3 -3
  34. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.mjs +17 -16
  35. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-filter.component.mjs +3 -3
  36. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-print.component.mjs +3 -3
  37. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-view.component.mjs +4 -4
  38. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget.config.mjs +39 -4
  39. package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/entity-details-view.component.mjs +3 -3
  40. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.mjs +3 -3
  41. package/esm2022/layouts/lib/admin/entity-layout/entity-modify-view/entity-modify-view.component.mjs +7 -6
  42. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.mjs +5 -4
  43. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component.mjs +4 -4
  44. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.mjs +4 -4
  45. package/esm2022/widgets/lib/properties/editors.props.mjs +390 -31
  46. package/esm2022/widgets/lib/properties/table-column.props.mjs +8 -7
  47. package/esm2022/widgets/lib/widgets/actions/button-widget/button-widget-view.component.mjs +27 -8
  48. package/esm2022/widgets/lib/widgets/actions/button-widget/button-widget.config.mjs +20 -4
  49. package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-column.component.mjs +9 -3
  50. package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-edit.component.mjs +10 -7
  51. package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-view.component.mjs +20 -19
  52. package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget.config.mjs +21 -1
  53. package/esm2022/widgets/lib/widgets/editors/color-box-widget/color-box-widget-column.component.mjs +19 -0
  54. package/esm2022/widgets/lib/widgets/editors/color-box-widget/color-box-widget-edit.component.mjs +48 -0
  55. package/esm2022/widgets/lib/widgets/editors/color-box-widget/color-box-widget-filter.component.mjs +20 -0
  56. package/esm2022/widgets/lib/widgets/editors/color-box-widget/color-box-widget-print.component.mjs +19 -0
  57. package/esm2022/widgets/lib/widgets/editors/color-box-widget/color-box-widget-view.component.mjs +19 -0
  58. package/esm2022/widgets/lib/widgets/editors/color-box-widget/color-box-widget.config.mjs +34 -0
  59. package/esm2022/widgets/lib/widgets/editors/color-box-widget/index.mjs +7 -0
  60. package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget-column.component.mjs +23 -6
  61. package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget-edit.component.mjs +76 -46
  62. package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget-filter.component.mjs +3 -3
  63. package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget-print.component.mjs +3 -3
  64. package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget-view.component.mjs +110 -8
  65. package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget.config.mjs +58 -4
  66. package/esm2022/widgets/lib/widgets/editors/contact-widget/contact.type.mjs +2 -0
  67. package/esm2022/widgets/lib/widgets/editors/contact-widget/index.mjs +1 -2
  68. package/esm2022/widgets/lib/widgets/editors/contact-widget/popup-component.mjs +3 -3
  69. package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-column.component.mjs +3 -3
  70. package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-edit.component.mjs +48 -37
  71. package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-filter.component.mjs +3 -3
  72. package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-print.component.mjs +5 -5
  73. package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-view.component.mjs +22 -13
  74. package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget.config.mjs +16 -2
  75. package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/index.mjs +1 -2
  76. package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget-column.component.mjs +3 -3
  77. package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget-edit.component.mjs +147 -126
  78. package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget-filter.component.mjs +3 -3
  79. package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget-print.component.mjs +3 -3
  80. package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget-view.component.mjs +30 -26
  81. package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget.config.mjs +14 -2
  82. package/esm2022/widgets/lib/widgets/editors/email-box-widget/index.mjs +1 -2
  83. package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget-column.component.mjs +3 -3
  84. package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget-edit.component.mjs +14 -10
  85. package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget-filter.component.mjs +3 -3
  86. package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget-print.component.mjs +3 -3
  87. package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget-view.component.mjs +9 -7
  88. package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget.config.mjs +28 -4
  89. package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget.service.mjs +1 -1
  90. package/esm2022/widgets/lib/widgets/editors/file-box-widget/index.mjs +1 -2
  91. package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget-column.component.mjs +3 -3
  92. package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget-edit.component.mjs +4 -3
  93. package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget-filter.component.mjs +3 -3
  94. package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget-print.component.mjs +3 -3
  95. package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget-view.component.mjs +4 -3
  96. package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget.config.mjs +4 -2
  97. package/esm2022/widgets/lib/widgets/editors/gallery-widget/index.mjs +1 -2
  98. package/esm2022/widgets/lib/widgets/editors/large-text-widget/index.mjs +1 -2
  99. package/esm2022/widgets/lib/widgets/editors/large-text-widget/large-text-widget-column.component.mjs +3 -3
  100. package/esm2022/widgets/lib/widgets/editors/large-text-widget/large-text-widget-edit.component.mjs +22 -17
  101. package/esm2022/widgets/lib/widgets/editors/large-text-widget/large-text-widget-filter.component.mjs +3 -3
  102. package/esm2022/widgets/lib/widgets/editors/large-text-widget/large-text-widget-print.component.mjs +3 -3
  103. package/esm2022/widgets/lib/widgets/editors/large-text-widget/large-text-widget-view.component.mjs +3 -3
  104. package/esm2022/widgets/lib/widgets/editors/large-text-widget/large-text-widget.config.mjs +13 -9
  105. package/esm2022/widgets/lib/widgets/editors/link-widget/index.mjs +1 -2
  106. package/esm2022/widgets/lib/widgets/editors/link-widget/link-widget-column.component.mjs +3 -3
  107. package/esm2022/widgets/lib/widgets/editors/link-widget/link-widget-edit.component.mjs +35 -34
  108. package/esm2022/widgets/lib/widgets/editors/link-widget/link-widget-filter.component.mjs +3 -3
  109. package/esm2022/widgets/lib/widgets/editors/link-widget/link-widget-print.component.mjs +3 -3
  110. package/esm2022/widgets/lib/widgets/editors/link-widget/link-widget-view.component.mjs +3 -3
  111. package/esm2022/widgets/lib/widgets/editors/link-widget/link-widget.config.mjs +4 -2
  112. package/esm2022/widgets/lib/widgets/editors/map-box-widget/index.mjs +1 -2
  113. package/esm2022/widgets/lib/widgets/editors/map-box-widget/map-box-widget-column.component.mjs +3 -3
  114. package/esm2022/widgets/lib/widgets/editors/map-box-widget/map-box-widget-edit.component.mjs +9 -5
  115. package/esm2022/widgets/lib/widgets/editors/map-box-widget/map-box-widget-filter.component.mjs +3 -3
  116. package/esm2022/widgets/lib/widgets/editors/map-box-widget/map-box-widget-print.component.mjs +3 -3
  117. package/esm2022/widgets/lib/widgets/editors/map-box-widget/map-box-widget-view.component.mjs +3 -3
  118. package/esm2022/widgets/lib/widgets/editors/map-box-widget/map-box-widget.config.mjs +8 -4
  119. package/esm2022/widgets/lib/widgets/editors/number-box-widget/index.mjs +1 -2
  120. package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-column.component.mjs +5 -5
  121. package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-edit.component.mjs +68 -55
  122. package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-filter.component.mjs +3 -3
  123. package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-print.component.mjs +3 -3
  124. package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-view.component.mjs +20 -17
  125. package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget.config.mjs +15 -9
  126. package/esm2022/widgets/lib/widgets/editors/password-box-widget/index.mjs +1 -2
  127. package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget-column.component.mjs +3 -3
  128. package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget-edit.component.mjs +24 -11
  129. package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget-filter.component.mjs +3 -3
  130. package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget-print.component.mjs +3 -3
  131. package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget-view.component.mjs +17 -14
  132. package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget.config.mjs +15 -4
  133. package/esm2022/widgets/lib/widgets/editors/phone-box-widget/index.mjs +1 -2
  134. package/esm2022/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-column.component.mjs +3 -3
  135. package/esm2022/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-edit.component.mjs +27 -26
  136. package/esm2022/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-filter.component.mjs +3 -3
  137. package/esm2022/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-print.component.mjs +3 -3
  138. package/esm2022/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-view.component.mjs +11 -9
  139. package/esm2022/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget.config.mjs +9 -17
  140. package/esm2022/widgets/lib/widgets/editors/rich-text-widget/index.mjs +1 -2
  141. package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-popup.component.mjs +38 -0
  142. package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-column.component.mjs +35 -12
  143. package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-edit.component.mjs +56 -52
  144. package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-filter.component.mjs +3 -3
  145. package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-print.component.mjs +3 -3
  146. package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-view.component.mjs +26 -20
  147. package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget.config.mjs +15 -2
  148. package/esm2022/widgets/lib/widgets/editors/select-box-widget/index.mjs +1 -2
  149. package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget-column.component.mjs +3 -3
  150. package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget-edit.component.mjs +38 -33
  151. package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget-filter.component.mjs +3 -3
  152. package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget-print.component.mjs +3 -3
  153. package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget-view.component.mjs +10 -10
  154. package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget.config.mjs +15 -4
  155. package/esm2022/widgets/lib/widgets/editors/selection-list-widget/index.mjs +1 -2
  156. package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-column.component.mjs +3 -3
  157. package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-edit.component.mjs +37 -23
  158. package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-filter.component.mjs +3 -3
  159. package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-print.component.mjs +3 -3
  160. package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-view.component.mjs +11 -8
  161. package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget.config.mjs +4 -2
  162. package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/index.mjs +1 -2
  163. package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-column.component.mjs +3 -3
  164. package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-edit.component.mjs +17 -15
  165. package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-filter.component.mjs +3 -3
  166. package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-print.component.mjs +3 -3
  167. package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-view.component.mjs +6 -5
  168. package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget.config.mjs +12 -2
  169. package/esm2022/widgets/lib/widgets/editors/text-box-widget/index.mjs +1 -2
  170. package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget-column.component.mjs +3 -3
  171. package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget-edit.component.mjs +21 -23
  172. package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget-filter.component.mjs +3 -3
  173. package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget-print.component.mjs +3 -3
  174. package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget-view.component.mjs +18 -11
  175. package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget.config.mjs +15 -13
  176. package/esm2022/widgets/lib/widgets/editors/toggle-widget/index.mjs +1 -2
  177. package/esm2022/widgets/lib/widgets/editors/toggle-widget/toggle-widget-column.component.mjs +9 -3
  178. package/esm2022/widgets/lib/widgets/editors/toggle-widget/toggle-widget-edit.component.mjs +11 -6
  179. package/esm2022/widgets/lib/widgets/editors/toggle-widget/toggle-widget-filter.component.mjs +3 -3
  180. package/esm2022/widgets/lib/widgets/editors/toggle-widget/toggle-widget-print.component.mjs +3 -3
  181. package/esm2022/widgets/lib/widgets/editors/toggle-widget/toggle-widget-view.component.mjs +22 -16
  182. package/esm2022/widgets/lib/widgets/editors/toggle-widget/toggle-widget.config.mjs +17 -4
  183. package/esm2022/widgets/lib/widgets/index.mjs +2 -1
  184. package/esm2022/widgets/lib/widgets/layout/block-widget/block-widget-designer.component.mjs +65 -0
  185. package/esm2022/widgets/lib/widgets/layout/block-widget/block-widget-view.component.mjs +48 -0
  186. package/esm2022/widgets/lib/widgets/layout/block-widget/block-widget.config.mjs +21 -3
  187. package/esm2022/widgets/lib/widgets/layout/block-widget/index.mjs +3 -2
  188. package/esm2022/widgets/lib/widgets/layout/page-widget/index.mjs +3 -0
  189. package/esm2022/widgets/lib/widgets/layout/page-widget/page-widget-designer.component.mjs +65 -0
  190. package/esm2022/widgets/lib/widgets/layout/page-widget/page-widget-view.component.mjs +42 -0
  191. package/esm2022/widgets/lib/widgets/layout/page-widget/page-widget.config.mjs +28 -0
  192. package/esm2022/widgets/lib/widgets/layout/repeater-widget/index.mjs +1 -3
  193. package/esm2022/widgets/lib/widgets/layout/repeater-widget/repeater-widget-designer.component.mjs +39 -8
  194. package/esm2022/widgets/lib/widgets/layout/repeater-widget/repeater-widget-edit.component.mjs +3 -3
  195. package/esm2022/widgets/lib/widgets/layout/repeater-widget/repeater-widget-print.component.mjs +3 -3
  196. package/esm2022/widgets/lib/widgets/layout/repeater-widget/repeater-widget-view.component.mjs +6 -6
  197. package/esm2022/widgets/lib/widgets/layout/repeater-widget/repeater-widget.config.mjs +5 -8
  198. package/esm2022/widgets/lib/widgets/layout/text-block-widget/index.mjs +3 -0
  199. package/esm2022/widgets/lib/widgets/layout/text-block-widget/text-block-widget-view.component.mjs +29 -0
  200. package/esm2022/widgets/lib/widgets/layout/text-block-widget/text-block-widget.config.mjs +39 -0
  201. package/esm2022/widgets/lib/widgets.module.mjs +18 -6
  202. package/fesm2022/acorex-platform-auth.mjs +22 -37
  203. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  204. package/fesm2022/{acorex-platform-common-number-widget-edit.component-bTHacO49.mjs → acorex-platform-common-number-widget-edit.component-XSWI6466.mjs} +2 -2
  205. package/fesm2022/{acorex-platform-common-number-widget-edit.component-bTHacO49.mjs.map → acorex-platform-common-number-widget-edit.component-XSWI6466.mjs.map} +1 -1
  206. package/fesm2022/{acorex-platform-common-number-widget-filter.component-CFqNphMw.mjs → acorex-platform-common-number-widget-filter.component-BOT9wPJ5.mjs} +2 -2
  207. package/fesm2022/{acorex-platform-common-number-widget-filter.component-CFqNphMw.mjs.map → acorex-platform-common-number-widget-filter.component-BOT9wPJ5.mjs.map} +1 -1
  208. package/fesm2022/acorex-platform-common.mjs +2 -2
  209. package/fesm2022/acorex-platform-core.mjs +90 -0
  210. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  211. package/fesm2022/acorex-platform-layout-builder.mjs +89 -86
  212. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  213. package/fesm2022/acorex-platform-layout-designer-widget-picker.component-DkZGbnkz.mjs +26 -0
  214. package/fesm2022/acorex-platform-layout-designer-widget-picker.component-DkZGbnkz.mjs.map +1 -0
  215. package/fesm2022/acorex-platform-layout-designer.mjs +1081 -59
  216. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  217. package/fesm2022/acorex-platform-layout-entity.mjs +59 -43
  218. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  219. package/fesm2022/{acorex-platform-layouts-entity-modify-view.component-CjofXJku.mjs → acorex-platform-layouts-entity-modify-view.component-C9L8cyBm.mjs} +7 -5
  220. package/fesm2022/acorex-platform-layouts-entity-modify-view.component-C9L8cyBm.mjs.map +1 -0
  221. package/fesm2022/acorex-platform-layouts.mjs +6 -6
  222. package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
  223. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-D1vzPrng.mjs → acorex-platform-themes-default-entity-master-create-view.component-Cv0mt0pU.mjs} +5 -4
  224. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cv0mt0pU.mjs.map +1 -0
  225. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-DCE6c3Is.mjs → acorex-platform-themes-default-entity-master-modify-view.component-BDk03AnX.mjs} +4 -4
  226. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BDk03AnX.mjs.map +1 -0
  227. package/fesm2022/acorex-platform-themes-default.mjs +7 -7
  228. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  229. package/fesm2022/{acorex-platform-widgets-checkbox-widget-column.component-CJUV6lFi.mjs → acorex-platform-widgets-checkbox-widget-column.component-BzNhzB9y.mjs} +9 -3
  230. package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-BzNhzB9y.mjs.map +1 -0
  231. package/fesm2022/{acorex-platform-widgets-checkbox-widget-view.component-T-tXqoMd.mjs → acorex-platform-widgets-checkbox-widget-view.component-BCsej7C6.mjs} +20 -19
  232. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-BCsej7C6.mjs.map +1 -0
  233. package/fesm2022/acorex-platform-widgets-page-widget-designer.component-DlfG4EP1.mjs +68 -0
  234. package/fesm2022/acorex-platform-widgets-page-widget-designer.component-DlfG4EP1.mjs.map +1 -0
  235. package/fesm2022/acorex-platform-widgets-rich-text-popup.component-RCdFIz45.mjs +41 -0
  236. package/fesm2022/acorex-platform-widgets-rich-text-popup.component-RCdFIz45.mjs.map +1 -0
  237. package/fesm2022/acorex-platform-widgets.mjs +2397 -1474
  238. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  239. package/layout/builder/lib/builder/widget-container.component.d.ts +5 -5
  240. package/layout/builder/lib/builder/widget-registery.service.d.ts +1 -0
  241. package/layout/builder/lib/builder/widget-renderer.component.d.ts +6 -3
  242. package/layout/builder/lib/builder/widget.types.d.ts +54 -33
  243. package/layout/designer/index.d.ts +6 -1
  244. package/layout/designer/lib/board/board.component.d.ts +16 -0
  245. package/layout/designer/lib/breadcrumbs/breadcrumbs.component.d.ts +11 -0
  246. package/layout/designer/lib/buttons/add-widget-button/add-widget-button.component.d.ts +9 -0
  247. package/layout/designer/lib/designer/designer.component.d.ts +9 -0
  248. package/layout/designer/lib/designer.module.d.ts +1 -7
  249. package/layout/designer/lib/designer.service.d.ts +107 -0
  250. package/layout/designer/lib/header-menu/header-menu.component.d.ts +7 -0
  251. package/layout/designer/lib/history/history.component.d.ts +7 -0
  252. package/layout/designer/lib/history-manager.service.d.ts +31 -0
  253. package/layout/designer/lib/outline/outline.component.d.ts +17 -0
  254. package/layout/designer/lib/{components → property-viewer}/widget-property-viewer.component.d.ts +12 -12
  255. package/layout/designer/lib/widget-designer-renderer.component.d.ts +38 -0
  256. package/layout/designer/lib/widget-picker/widget-picker.component.d.ts +9 -0
  257. package/layout/entity/lib/widgets/lookup-widget/index.d.ts +0 -1
  258. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-column.component.d.ts +2 -2
  259. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.d.ts +9 -9
  260. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-filter.component.d.ts +2 -2
  261. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-print.component.d.ts +2 -2
  262. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-view.component.d.ts +5 -5
  263. package/package.json +7 -7
  264. package/widgets/lib/properties/editors.props.d.ts +22 -1
  265. package/widgets/lib/widgets/actions/button-widget/button-widget-view.component.d.ts +8 -3
  266. package/widgets/lib/widgets/editors/checkbox/checkbox-widget-column.component.d.ts +4 -4
  267. package/widgets/lib/widgets/editors/checkbox/checkbox-widget-edit.component.d.ts +6 -4
  268. package/widgets/lib/widgets/editors/checkbox/checkbox-widget-view.component.d.ts +5 -5
  269. package/widgets/lib/widgets/editors/color-box-widget/color-box-widget-column.component.d.ts +6 -0
  270. package/widgets/lib/widgets/editors/color-box-widget/color-box-widget-edit.component.d.ts +10 -0
  271. package/widgets/lib/widgets/editors/color-box-widget/color-box-widget-filter.component.d.ts +6 -0
  272. package/widgets/lib/widgets/editors/color-box-widget/color-box-widget-print.component.d.ts +6 -0
  273. package/widgets/lib/widgets/editors/color-box-widget/color-box-widget-view.component.d.ts +6 -0
  274. package/widgets/lib/widgets/editors/color-box-widget/color-box-widget.config.d.ts +2 -0
  275. package/widgets/lib/widgets/editors/color-box-widget/index.d.ts +6 -0
  276. package/widgets/lib/widgets/editors/contact-widget/contact-widget-column.component.d.ts +4 -2
  277. package/widgets/lib/widgets/editors/contact-widget/contact-widget-edit.component.d.ts +11 -15
  278. package/widgets/lib/widgets/editors/contact-widget/contact-widget-filter.component.d.ts +2 -2
  279. package/widgets/lib/widgets/editors/contact-widget/contact-widget-print.component.d.ts +2 -2
  280. package/widgets/lib/widgets/editors/contact-widget/contact-widget-view.component.d.ts +15 -2
  281. package/widgets/lib/widgets/editors/contact-widget/contact.type.d.ts +5 -0
  282. package/widgets/lib/widgets/editors/contact-widget/index.d.ts +0 -1
  283. package/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-column.component.d.ts +2 -2
  284. package/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-edit.component.d.ts +7 -7
  285. package/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-filter.component.d.ts +2 -2
  286. package/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-print.component.d.ts +2 -2
  287. package/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-view.component.d.ts +4 -4
  288. package/widgets/lib/widgets/editors/date-time-box-widget/index.d.ts +0 -1
  289. package/widgets/lib/widgets/editors/email-box-widget/email-box-widget-column.component.d.ts +2 -2
  290. package/widgets/lib/widgets/editors/email-box-widget/email-box-widget-edit.component.d.ts +8 -7
  291. package/widgets/lib/widgets/editors/email-box-widget/email-box-widget-filter.component.d.ts +2 -2
  292. package/widgets/lib/widgets/editors/email-box-widget/email-box-widget-print.component.d.ts +2 -2
  293. package/widgets/lib/widgets/editors/email-box-widget/email-box-widget-view.component.d.ts +4 -4
  294. package/widgets/lib/widgets/editors/email-box-widget/index.d.ts +0 -1
  295. package/widgets/lib/widgets/editors/file-box-widget/file-box-widget-column.component.d.ts +2 -2
  296. package/widgets/lib/widgets/editors/file-box-widget/file-box-widget-edit.component.d.ts +6 -5
  297. package/widgets/lib/widgets/editors/file-box-widget/file-box-widget-filter.component.d.ts +2 -2
  298. package/widgets/lib/widgets/editors/file-box-widget/file-box-widget-print.component.d.ts +2 -2
  299. package/widgets/lib/widgets/editors/file-box-widget/file-box-widget-view.component.d.ts +4 -4
  300. package/widgets/lib/widgets/editors/file-box-widget/file-box-widget.service.d.ts +1 -1
  301. package/widgets/lib/widgets/editors/file-box-widget/index.d.ts +0 -1
  302. package/widgets/lib/widgets/editors/gallery-widget/gallery-widget-column.component.d.ts +2 -2
  303. package/widgets/lib/widgets/editors/gallery-widget/gallery-widget-edit.component.d.ts +3 -3
  304. package/widgets/lib/widgets/editors/gallery-widget/gallery-widget-filter.component.d.ts +2 -2
  305. package/widgets/lib/widgets/editors/gallery-widget/gallery-widget-print.component.d.ts +2 -2
  306. package/widgets/lib/widgets/editors/gallery-widget/gallery-widget-view.component.d.ts +3 -3
  307. package/widgets/lib/widgets/editors/gallery-widget/index.d.ts +0 -1
  308. package/widgets/lib/widgets/editors/large-text-widget/index.d.ts +0 -1
  309. package/widgets/lib/widgets/editors/large-text-widget/large-text-widget-column.component.d.ts +2 -2
  310. package/widgets/lib/widgets/editors/large-text-widget/large-text-widget-edit.component.d.ts +7 -5
  311. package/widgets/lib/widgets/editors/large-text-widget/large-text-widget-filter.component.d.ts +2 -2
  312. package/widgets/lib/widgets/editors/large-text-widget/large-text-widget-print.component.d.ts +2 -2
  313. package/widgets/lib/widgets/editors/large-text-widget/large-text-widget-view.component.d.ts +2 -2
  314. package/widgets/lib/widgets/editors/link-widget/index.d.ts +0 -1
  315. package/widgets/lib/widgets/editors/link-widget/link-widget-column.component.d.ts +2 -2
  316. package/widgets/lib/widgets/editors/link-widget/link-widget-edit.component.d.ts +9 -9
  317. package/widgets/lib/widgets/editors/link-widget/link-widget-filter.component.d.ts +2 -2
  318. package/widgets/lib/widgets/editors/link-widget/link-widget-print.component.d.ts +2 -2
  319. package/widgets/lib/widgets/editors/link-widget/link-widget-view.component.d.ts +2 -2
  320. package/widgets/lib/widgets/editors/map-box-widget/index.d.ts +0 -1
  321. package/widgets/lib/widgets/editors/map-box-widget/map-box-widget-column.component.d.ts +2 -2
  322. package/widgets/lib/widgets/editors/map-box-widget/map-box-widget-edit.component.d.ts +5 -5
  323. package/widgets/lib/widgets/editors/map-box-widget/map-box-widget-filter.component.d.ts +2 -2
  324. package/widgets/lib/widgets/editors/map-box-widget/map-box-widget-print.component.d.ts +2 -2
  325. package/widgets/lib/widgets/editors/map-box-widget/map-box-widget-view.component.d.ts +6 -6
  326. package/widgets/lib/widgets/editors/number-box-widget/index.d.ts +0 -1
  327. package/widgets/lib/widgets/editors/number-box-widget/number-box-widget-column.component.d.ts +2 -2
  328. package/widgets/lib/widgets/editors/number-box-widget/number-box-widget-edit.component.d.ts +8 -11
  329. package/widgets/lib/widgets/editors/number-box-widget/number-box-widget-filter.component.d.ts +2 -2
  330. package/widgets/lib/widgets/editors/number-box-widget/number-box-widget-print.component.d.ts +2 -2
  331. package/widgets/lib/widgets/editors/number-box-widget/number-box-widget-view.component.d.ts +5 -7
  332. package/widgets/lib/widgets/editors/password-box-widget/index.d.ts +0 -1
  333. package/widgets/lib/widgets/editors/password-box-widget/password-box-widget-column.component.d.ts +2 -2
  334. package/widgets/lib/widgets/editors/password-box-widget/password-box-widget-edit.component.d.ts +4 -2
  335. package/widgets/lib/widgets/editors/password-box-widget/password-box-widget-filter.component.d.ts +2 -2
  336. package/widgets/lib/widgets/editors/password-box-widget/password-box-widget-print.component.d.ts +2 -2
  337. package/widgets/lib/widgets/editors/password-box-widget/password-box-widget-view.component.d.ts +6 -5
  338. package/widgets/lib/widgets/editors/phone-box-widget/index.d.ts +0 -1
  339. package/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-column.component.d.ts +2 -2
  340. package/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-edit.component.d.ts +7 -8
  341. package/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-filter.component.d.ts +2 -2
  342. package/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-print.component.d.ts +2 -2
  343. package/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-view.component.d.ts +4 -4
  344. package/widgets/lib/widgets/editors/rich-text-widget/index.d.ts +0 -1
  345. package/widgets/lib/widgets/editors/rich-text-widget/rich-text-popup.component.d.ts +9 -0
  346. package/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-column.component.d.ts +11 -3
  347. package/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-edit.component.d.ts +7 -29
  348. package/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-filter.component.d.ts +2 -2
  349. package/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-print.component.d.ts +2 -2
  350. package/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-view.component.d.ts +10 -6
  351. package/widgets/lib/widgets/editors/select-box-widget/index.d.ts +0 -1
  352. package/widgets/lib/widgets/editors/select-box-widget/select-box-widget-column.component.d.ts +2 -2
  353. package/widgets/lib/widgets/editors/select-box-widget/select-box-widget-edit.component.d.ts +10 -7
  354. package/widgets/lib/widgets/editors/select-box-widget/select-box-widget-filter.component.d.ts +2 -2
  355. package/widgets/lib/widgets/editors/select-box-widget/select-box-widget-print.component.d.ts +2 -2
  356. package/widgets/lib/widgets/editors/select-box-widget/select-box-widget-view.component.d.ts +5 -5
  357. package/widgets/lib/widgets/editors/selection-list-widget/index.d.ts +0 -1
  358. package/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-column.component.d.ts +2 -2
  359. package/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-edit.component.d.ts +10 -7
  360. package/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-filter.component.d.ts +2 -2
  361. package/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-print.component.d.ts +2 -2
  362. package/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-view.component.d.ts +5 -5
  363. package/widgets/lib/widgets/editors/signature-pad-widget/index.d.ts +0 -1
  364. package/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-column.component.d.ts +2 -2
  365. package/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-edit.component.d.ts +4 -2
  366. package/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-filter.component.d.ts +2 -2
  367. package/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-print.component.d.ts +2 -2
  368. package/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-view.component.d.ts +3 -2
  369. package/widgets/lib/widgets/editors/text-box-widget/index.d.ts +0 -1
  370. package/widgets/lib/widgets/editors/text-box-widget/text-box-widget-column.component.d.ts +2 -2
  371. package/widgets/lib/widgets/editors/text-box-widget/text-box-widget-edit.component.d.ts +7 -8
  372. package/widgets/lib/widgets/editors/text-box-widget/text-box-widget-filter.component.d.ts +2 -2
  373. package/widgets/lib/widgets/editors/text-box-widget/text-box-widget-print.component.d.ts +2 -2
  374. package/widgets/lib/widgets/editors/text-box-widget/text-box-widget-view.component.d.ts +3 -3
  375. package/widgets/lib/widgets/editors/toggle-widget/index.d.ts +0 -1
  376. package/widgets/lib/widgets/editors/toggle-widget/toggle-widget-column.component.d.ts +3 -3
  377. package/widgets/lib/widgets/editors/toggle-widget/toggle-widget-edit.component.d.ts +5 -2
  378. package/widgets/lib/widgets/editors/toggle-widget/toggle-widget-filter.component.d.ts +2 -2
  379. package/widgets/lib/widgets/editors/toggle-widget/toggle-widget-print.component.d.ts +2 -2
  380. package/widgets/lib/widgets/editors/toggle-widget/toggle-widget-view.component.d.ts +5 -5
  381. package/widgets/lib/widgets/index.d.ts +1 -0
  382. package/widgets/lib/widgets/layout/block-widget/block-widget-designer.component.d.ts +11 -0
  383. package/widgets/lib/widgets/layout/block-widget/{block-widget.component.d.ts → block-widget-view.component.d.ts} +5 -3
  384. package/widgets/lib/widgets/layout/block-widget/index.d.ts +2 -1
  385. package/widgets/lib/widgets/layout/page-widget/index.d.ts +2 -0
  386. package/widgets/lib/widgets/layout/page-widget/page-widget-designer.component.d.ts +10 -0
  387. package/widgets/lib/widgets/layout/page-widget/page-widget-view.component.d.ts +8 -0
  388. package/widgets/lib/widgets/layout/page-widget/page-widget.config.d.ts +2 -0
  389. package/widgets/lib/widgets/layout/repeater-widget/index.d.ts +0 -2
  390. package/widgets/lib/widgets/layout/repeater-widget/repeater-widget-designer.component.d.ts +4 -2
  391. package/widgets/lib/widgets/layout/repeater-widget/repeater-widget-edit.component.d.ts +2 -2
  392. package/widgets/lib/widgets/layout/repeater-widget/repeater-widget-print.component.d.ts +2 -2
  393. package/widgets/lib/widgets/layout/repeater-widget/repeater-widget-view.component.d.ts +2 -2
  394. package/widgets/lib/widgets/layout/text-block-widget/index.d.ts +2 -0
  395. package/widgets/lib/widgets/layout/text-block-widget/text-block-widget-view.component.d.ts +10 -0
  396. package/widgets/lib/widgets/layout/text-block-widget/text-block-widget.config.d.ts +2 -0
  397. package/esm2022/layout/designer/lib/components/widget-property-viewer.component.mjs +0 -86
  398. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-designer.component.mjs +0 -19
  399. package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget-designer.component.mjs +0 -19
  400. package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-designer.component.mjs +0 -19
  401. package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget-designer.component.mjs +0 -19
  402. package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget-designer.component.mjs +0 -19
  403. package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget-designer.component.mjs +0 -19
  404. package/esm2022/widgets/lib/widgets/editors/large-text-widget/large-text-widget-designer.component.mjs +0 -19
  405. package/esm2022/widgets/lib/widgets/editors/link-widget/link-widget-designer.component.mjs +0 -19
  406. package/esm2022/widgets/lib/widgets/editors/map-box-widget/map-box-widget-designer.component.mjs +0 -19
  407. package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-designer.component.mjs +0 -19
  408. package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget-designer.component.mjs +0 -19
  409. package/esm2022/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-designer.component.mjs +0 -19
  410. package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-designer.component.mjs +0 -19
  411. package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget-designer.component.mjs +0 -19
  412. package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-designer.component.mjs +0 -19
  413. package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-designer.component.mjs +0 -19
  414. package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget-designer.component.mjs +0 -19
  415. package/esm2022/widgets/lib/widgets/editors/toggle-widget/toggle-widget-designer.component.mjs +0 -19
  416. package/esm2022/widgets/lib/widgets/layout/block-widget/block-widget.component.mjs +0 -34
  417. package/esm2022/widgets/lib/widgets/layout/repeater-widget/repeater-widget-column.component.mjs +0 -19
  418. package/esm2022/widgets/lib/widgets/layout/repeater-widget/repeater-widget-filter.component.mjs +0 -20
  419. package/fesm2022/acorex-platform-layouts-entity-modify-view.component-CjofXJku.mjs.map +0 -1
  420. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D1vzPrng.mjs.map +0 -1
  421. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DCE6c3Is.mjs.map +0 -1
  422. package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-CJUV6lFi.mjs.map +0 -1
  423. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-T-tXqoMd.mjs.map +0 -1
  424. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-designer.component.d.ts +0 -6
  425. package/widgets/lib/widgets/editors/contact-widget/contact-widget-designer.component.d.ts +0 -6
  426. package/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-designer.component.d.ts +0 -6
  427. package/widgets/lib/widgets/editors/email-box-widget/email-box-widget-designer.component.d.ts +0 -6
  428. package/widgets/lib/widgets/editors/file-box-widget/file-box-widget-designer.component.d.ts +0 -6
  429. package/widgets/lib/widgets/editors/gallery-widget/gallery-widget-designer.component.d.ts +0 -6
  430. package/widgets/lib/widgets/editors/large-text-widget/large-text-widget-designer.component.d.ts +0 -6
  431. package/widgets/lib/widgets/editors/link-widget/link-widget-designer.component.d.ts +0 -6
  432. package/widgets/lib/widgets/editors/map-box-widget/map-box-widget-designer.component.d.ts +0 -6
  433. package/widgets/lib/widgets/editors/number-box-widget/number-box-widget-designer.component.d.ts +0 -6
  434. package/widgets/lib/widgets/editors/password-box-widget/password-box-widget-designer.component.d.ts +0 -6
  435. package/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-designer.component.d.ts +0 -6
  436. package/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-designer.component.d.ts +0 -6
  437. package/widgets/lib/widgets/editors/select-box-widget/select-box-widget-designer.component.d.ts +0 -6
  438. package/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-designer.component.d.ts +0 -6
  439. package/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-designer.component.d.ts +0 -6
  440. package/widgets/lib/widgets/editors/text-box-widget/text-box-widget-designer.component.d.ts +0 -6
  441. package/widgets/lib/widgets/editors/toggle-widget/toggle-widget-designer.component.d.ts +0 -6
  442. package/widgets/lib/widgets/layout/repeater-widget/repeater-widget-column.component.d.ts +0 -6
  443. package/widgets/lib/widgets/layout/repeater-widget/repeater-widget-filter.component.d.ts +0 -6
@@ -0,0 +1,117 @@
1
+ import { Injectable, signal, computed } from '@angular/core';
2
+ import { cloneDeep } from 'lodash-es';
3
+ import * as i0 from "@angular/core";
4
+ export class AXPObjectHistoryManager {
5
+ constructor() {
6
+ this.undoStack = signal([]); // Undo history as a signal
7
+ this.redoStack = signal([]); // Redo history as a signal
8
+ this._currentState = signal(null); // Current state as a signal
9
+ this.maxHistorySize = 50;
10
+ this.revertedIndex = null; // Track the index when reverting
11
+ this.currentState = this._currentState.asReadonly();
12
+ this.canUndo = computed(() => this.undoStack().length > 0);
13
+ this.canRedo = computed(() => this.redoStack().length > 0);
14
+ // Get the undo history for UI with disabled future states
15
+ this.history = computed(() => {
16
+ const undoHistory = this.undoStack();
17
+ return undoHistory.map((state, index) => ({
18
+ ...state,
19
+ index,
20
+ disabled: this.revertedIndex !== null && index > this.revertedIndex
21
+ }));
22
+ });
23
+ }
24
+ // Save a new state and clear redo if necessary
25
+ saveState(newState, description) {
26
+ const newHistoryState = {
27
+ state: cloneDeep(newState),
28
+ date: new Date(),
29
+ description: description,
30
+ };
31
+ // Limit undo history size
32
+ if (this.undoStack().length >= this.maxHistorySize) {
33
+ this.undoStack.set(this.undoStack().slice(1)); // Remove oldest state
34
+ }
35
+ // Add the current state to the undo stack
36
+ //if (this._currentState()) {
37
+ this.undoStack.set([...this.undoStack(), this._currentState()]);
38
+ //}
39
+ // Set the new state as the current state
40
+ this._currentState.set(newHistoryState);
41
+ // Clear the redo stack if a new state is saved after undoing
42
+ if (this.revertedIndex !== null) {
43
+ this.redoStack.set([]);
44
+ this.revertedIndex = null; // Reset reverted index
45
+ }
46
+ }
47
+ // Update the current state's last entry in the undo stack
48
+ updateState(newState) {
49
+ const lastStateIndex = this.undoStack().length - 1;
50
+ // Check if there is a valid state to update
51
+ if (lastStateIndex >= 0) {
52
+ const lastState = this.undoStack()[lastStateIndex];
53
+ // Update the state in the last history entry
54
+ const updatedState = {
55
+ ...lastState,
56
+ state: cloneDeep(newState),
57
+ date: new Date() // Update the date to reflect the change
58
+ };
59
+ // Update the undo stack with the modified state
60
+ const updatedUndoStack = [...this.undoStack()];
61
+ updatedUndoStack[lastStateIndex] = updatedState;
62
+ this.undoStack.set(updatedUndoStack);
63
+ // Also update the currentState to reflect the latest change
64
+ this._currentState.set(updatedState);
65
+ }
66
+ }
67
+ // Undo the last action and update the current state
68
+ undo() {
69
+ if (this.undoStack().length > 0) {
70
+ const previousState = this.undoStack().pop(); // Get the last state
71
+ this.redoStack.set([...this.redoStack(), this._currentState()]); // Save current state to redo stack
72
+ this._currentState.set(previousState); // Revert to the previous state
73
+ this.revertedIndex = this.undoStack().length - 1; // Update reverted index
74
+ }
75
+ }
76
+ // Redo the last undone action and update the current state
77
+ redo() {
78
+ if (this.redoStack().length > 0) {
79
+ const nextState = this.redoStack().pop(); // Get the next state
80
+ this.undoStack.set([...this.undoStack(), this._currentState()]); // Save current state to undo stack
81
+ this._currentState.set(nextState); // Apply the redo state
82
+ this.revertedIndex = this.undoStack().length - 1; // Update reverted index
83
+ }
84
+ }
85
+ // Revert to a specific state by index in the undo stack
86
+ revert(index) {
87
+ if (index < 0 || index >= this.undoStack().length) {
88
+ return; // Invalid index, do nothing
89
+ }
90
+ const targetState = this.undoStack()[index];
91
+ const currentStateSnapshot = this._currentState(); // Save the current state for redo
92
+ // Move states after the reverted index to the redo stack
93
+ const statesToRedo = this.undoStack().slice(index + 1);
94
+ this.redoStack.set([currentStateSnapshot, ...statesToRedo]);
95
+ // Update the undo stack to the reverted point
96
+ this.undoStack.set(this.undoStack().slice(0, index + 1));
97
+ // Set the reverted state as the current state
98
+ this._currentState.set(targetState);
99
+ this.revertedIndex = index; // Track the reverted index
100
+ }
101
+ // Clear all history
102
+ clear() {
103
+ this.undoStack.set([]);
104
+ this.redoStack.set([]);
105
+ this.revertedIndex = null;
106
+ this._currentState.set(null);
107
+ }
108
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPObjectHistoryManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
109
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPObjectHistoryManager, providedIn: 'root' }); }
110
+ }
111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPObjectHistoryManager, decorators: [{
112
+ type: Injectable,
113
+ args: [{
114
+ providedIn: 'root',
115
+ }]
116
+ }] });
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS1tYW5hZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL2hpc3RvcnktbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQVd0QyxNQUFNLE9BQU8sdUJBQXVCO0lBSHBDO1FBSXFCLGNBQVMsR0FBRyxNQUFNLENBQXVCLEVBQUUsQ0FBQyxDQUFDLENBQUUsMkJBQTJCO1FBQzFFLGNBQVMsR0FBRyxNQUFNLENBQXVCLEVBQUUsQ0FBQyxDQUFDLENBQUUsMkJBQTJCO1FBQzFFLGtCQUFhLEdBQUcsTUFBTSxDQUE0QixJQUFJLENBQUMsQ0FBQyxDQUFFLDRCQUE0QjtRQUMvRixtQkFBYyxHQUFXLEVBQUUsQ0FBQztRQUM1QixrQkFBYSxHQUFrQixJQUFJLENBQUMsQ0FBRSxpQ0FBaUM7UUFFL0QsaUJBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRXhELFlBQU8sR0FBRyxRQUFRLENBQVUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvRCxZQUFPLEdBQUcsUUFBUSxDQUFVLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFnR3RFLDBEQUEwRDtRQUNuRCxZQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckMsT0FBTyxXQUFXLENBQUMs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UUFFdEYseURBQXlEO1FBQ3pELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsb0JBQXFCLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRTdELDhDQUE4QztRQUM5QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV6RCw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsQ0FBRSwyQkFBMkI7SUFDNUQsQ0FBQztJQWNELG9CQUFvQjtJQUNiLEtBQUs7UUFDUixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDOzhHQTVIUSx1QkFBdUI7a0hBQXZCLHVCQUF1QixjQUZwQixNQUFNOzsyRkFFVCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBIaXN0b3J5U3RhdGU8VD4ge1xuICAgIHN0YXRlOiBUO1xuICAgIGRhdGU6IERhdGU7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhQT2JqZWN0SGlzdG9yeU1hbmFnZXI8VD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdW5kb1N0YWNrID0gc2lnbmFsPEFYUEhpc3RvcnlTdGF0ZTxUPltdPihbXSk7ICAvLyBVbmRvIGhpc3RvcnkgYXMgYSBzaWduYWxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlZG9TdGFjayA9IHNpZ25hbDxBWFBIaXN0b3J5U3RhdGU8VD5bXT4oW10pOyAgLy8gUmVkbyBoaXN0b3J5IGFzIGEgc2lnbmFsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudFN0YXRlID0gc2lnbmFsPEFYUEhpc3RvcnlTdGF0ZTxUPiB8IG51bGw+KG51bGwpOyAgLy8gQ3VycmVudCBzdGF0ZSBhcyBhIHNpZ25hbFxuICAgIHByaXZhdGUgbWF4SGlzdG9yeVNpemU6IG51bWJlciA9IDUwO1xuICAgIHByaXZhdGUgcmV2ZXJ0ZWRJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7ICAvLyBUcmFjayB0aGUgaW5kZXggd2hlbiByZXZlcnRpbmdcblxuICAgIHB1YmxpYyByZWFkb25seSBjdXJyZW50U3RhdGUgPSB0aGlzLl9jdXJyZW50U3RhdGUuYXNSZWFkb25seSgpO1xuXG4gICAgcHVibGljIGNhblVuZG8gPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCA+IDApO1xuICAgIHB1YmxpYyBjYW5SZWRvID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4gdGhpcy5yZWRvU3RhY2soKS5sZW5ndGggPiAwKTtcblxuICAgIC8vIFNhdmUgYSBuZXcgc3RhdGUgYW5kIGNsZWFyIHJlZG8gaWYgbmVjZXNzYXJ5XG4gICAgcHVibGljIHNhdmVTdGF0ZShuZXdTdGF0ZTogVCwgZGVzY3JpcHRpb246IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdIaXN0b3J5U3RhdGU6IEFYUEhpc3RvcnlTdGF0ZTxUPiA9IHtcbiAgICAgICAgICAgIHN0YXRlOiBjbG9uZURlZXAobmV3U3RhdGUpLFxuICAgICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBMaW1pdCB1bmRvIGhpc3Rvcnkgc2l6ZVxuICAgICAgICBpZiAodGhpcy51bmRvU3RhY2soKS5sZW5ndGggPj0gdGhpcy5tYXhIaXN0b3J5U2l6ZSkge1xuICAgICAgICAgICAgdGhpcy51bmRvU3RhY2suc2V0KHRoaXMudW5kb1N0YWNrKCkuc2xpY2UoMSkpOyAgLy8gUmVtb3ZlIG9sZGVzdCBzdGF0ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWRkIHRoZSBjdXJyZW50IHN0YXRlIHRvIHRoZSB1bmRvIHN0YWNrXG4gICAgICAgIC8vaWYgKHRoaXMuX2N1cnJlbnRTdGF0ZSgpKSB7XG4gICAgICAgIHRoaXMudW5kb1N0YWNrLnNldChbLi4udGhpcy51bmRvU3RhY2soKSwgdGhpcy5fY3VycmVudFN0YXRlKCkhXSk7XG4gICAgICAgIC8vfVxuXG4gICAgICAgIC8vIFNldCB0aGUgbmV3IHN0YXRlIGFzIHRoZSBjdXJyZW50IHN0YXRlXG4gICAgICAgIHRoaXMuX2N1cnJlbnRTdGF0ZS5zZXQobmV3SGlzdG9yeVN0YXRlKTtcblxuICAgICAgICAvLyBDbGVhciB0aGUgcmVkbyBzdGFjayBpZiBhIG5ldyBzdGF0ZSBpcyBzYXZlZCBhZnRlciB1bmRvaW5nXG4gICAgICAgIGlmICh0aGlzLnJldmVydGVkSW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMucmVkb1N0YWNrLnNldChbXSk7XG4gICAgICAgICAgICB0aGlzLnJldmVydGVkSW5kZXggPSBudWxsOyAgLy8gUmVzZXQgcmV2ZXJ0ZWQgaW5kZXhcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgY3VycmVudCBzdGF0ZSdzIGxhc3QgZW50cnkgaW4gdGhlIHVuZG8gc3RhY2tcbiAgICBwdWJsaWMgdXBkYXRlU3RhdGUobmV3U3RhdGU6IFQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGFzdFN0YXRlSW5kZXggPSB0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMgYSB2YWxpZCBzdGF0ZSB0byB1cGRhdGVcbiAgICAgICAgaWYgKGxhc3RTdGF0ZUluZGV4ID49IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RTdGF0ZSA9IHRoaXMudW5kb1N0YWNrKClbbGFzdFN0YXRlSW5kZXhdO1xuXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHN0YXRlIGluIHRoZSBsYXN0IGhpc3RvcnkgZW50cnlcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRTdGF0ZTogQVhQSGlzdG9yeVN0YXRlPFQ+ID0ge1xuICAgICAgICAgICAgICAgIC4uLmxhc3RTdGF0ZSxcbiAgICAgICAgICAgICAgICBzdGF0ZTogY2xvbmVEZWVwKG5ld1N0YXRlKSxcbiAgICAgICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpICAvLyBVcGRhdGUgdGhlIGRhdGUgdG8gcmVmbGVjdCB0aGUgY2hhbmdlXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHVuZG8gc3RhY2sgd2l0aCB0aGUgbW9kaWZpZWQgc3RhdGVcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRVbmRvU3RhY2sgPSBbLi4udGhpcy51bmRvU3RhY2soKV07XG4gICAgICAgICAgICB1cGRhdGVkVW5kb1N0YWNrW2xhc3RTdGF0ZUluZGV4XSA9IHVwZGF0ZWRTdGF0ZTtcbiAgICAgICAgICAgIHRoaXMudW5kb1N0YWNrLnNldCh1cGRhdGVkVW5kb1N0YWNrKTtcblxuICAgICAgICAgICAgLy8gQWxzbyB1cGRhdGUgdGhlIGN1cnJlbnRTdGF0ZSB0byByZWZsZWN0IHRoZSBsYXRlc3QgY2hhbmdlXG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50U3RhdGUuc2V0KHVwZGF0ZWRTdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVbmRvIHRoZSBsYXN0IGFjdGlvbiBhbmQgdXBkYXRlIHRoZSBjdXJyZW50IHN0YXRlXG4gICAgcHVibGljIHVuZG8oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzU3RhdGUgPSB0aGlzLnVuZG9TdGFjaygpLnBvcCgpITsgIC8vIEdldCB0aGUgbGFzdCBzdGF0ZVxuICAgICAgICAgICAgdGhpcy5yZWRvU3RhY2suc2V0KFsuLi50aGlzLnJlZG9TdGFjaygpLCB0aGlzLl9jdXJyZW50U3RhdGUoKSFdKTsgIC8vIFNhdmUgY3VycmVudCBzdGF0ZSB0byByZWRvIHN0YWNrXG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50U3RhdGUuc2V0KHByZXZpb3VzU3RhdGUpOyAgLy8gUmV2ZXJ0IHRvIHRoZSBwcmV2aW91cyBzdGF0ZVxuICAgICAgICAgICAgdGhpcy5yZXZlcnRlZEluZGV4ID0gdGhpcy51bmRvU3RhY2soKS5sZW5ndGggLSAxOyAgLy8gVXBkYXRlIHJldmVydGVkIGluZGV4XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZWRvIHRoZSBsYXN0IHVuZG9uZSBhY3Rpb24gYW5kIHVwZGF0ZSB0aGUgY3VycmVudCBzdGF0ZVxuICAgIHB1YmxpYyByZWRvKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZWRvU3RhY2soKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0U3RhdGUgPSB0aGlzLnJlZG9TdGFjaygpLnBvcCgpITsgIC8vIEdldCB0aGUgbmV4dCBzdGF0ZVxuICAgICAgICAgICAgdGhpcy51bmRvU3RhY2suc2V0KFsuLi50aGlzLnVuZG9TdGFjaygpLCB0aGlzLl9jdXJyZW50U3RhdGUoKSFdKTsgIC8vIFNhdmUgY3VycmVudCBzdGF0ZSB0byB1bmRvIHN0YWNrXG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50U3RhdGUuc2V0KG5leHRTdGF0ZSk7ICAvLyBBcHBseSB0aGUgcmVkbyBzdGF0ZVxuICAgICAgICAgICAgdGhpcy5yZXZlcnRlZEluZGV4ID0gdGhpcy51bmRvU3RhY2soKS5sZW5ndGggLSAxOyAgLy8gVXBkYXRlIHJldmVydGVkIGluZGV4XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXZlcnQgdG8gYSBzcGVjaWZpYyBzdGF0ZSBieSBpbmRleCBpbiB0aGUgdW5kbyBzdGFja1xuICAgIHB1YmxpYyByZXZlcnQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMudW5kb1N0YWNrKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47ICAvLyBJbnZhbGlkIGluZGV4LCBkbyBub3RoaW5nXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YXJnZXRTdGF0ZSA9IHRoaXMudW5kb1N0YWNrKClbaW5kZXhdO1xuICAgICAgICBjb25zdCBjdXJyZW50U3RhdGVTbmFwc2hvdCA9IHRoaXMuX2N1cnJlbnRTdGF0ZSgpOyAgLy8gU2F2ZSB0aGUgY3VycmVudCBzdGF0ZSBmb3IgcmVkb1xuXG4gICAgICAgIC8vIE1vdmUgc3RhdGVzIGFmdGVyIHRoZSByZXZlcnRlZCBpbmRleCB0byB0aGUgcmVkbyBzdGFja1xuICAgICAgICBjb25zdCBzdGF0ZXNUb1JlZG8gPSB0aGlzLnVuZG9TdGFjaygpLnNsaWNlKGluZGV4ICsgMSk7XG4gICAgICAgIHRoaXMucmVkb1N0YWNrLnNldChbY3VycmVudFN0YXRlU25hcHNob3QhLCAuLi5zdGF0ZXNUb1JlZG9dKTtcblxuICAgICAgICAvLyBVcGRhdGUgdGhlIHVuZG8gc3RhY2sgdG8gdGhlIHJldmVydGVkIHBvaW50XG4gICAgICAgIHRoaXMudW5kb1N0YWNrLnNldCh0aGlzLnVuZG9TdGFjaygpLnNsaWNlKDAsIGluZGV4ICsgMSkpO1xuXG4gICAgICAgIC8vIFNldCB0aGUgcmV2ZXJ0ZWQgc3RhdGUgYXMgdGhlIGN1cnJlbnQgc3RhdGVcbiAgICAgICAgdGhpcy5fY3VycmVudFN0YXRlLnNldCh0YXJnZXRTdGF0ZSk7XG4gICAgICAgIHRoaXMucmV2ZXJ0ZWRJbmRleCA9IGluZGV4OyAgLy8gVHJhY2sgdGhlIHJldmVydGVkIGluZGV4XG4gICAgfVxuXG4gICAgLy8gR2V0IHRoZSB1bmRvIGhpc3RvcnkgZm9yIFVJIHdpdGggZGlzYWJsZWQgZnV0dXJlIHN0YXRlc1xuICAgIHB1YmxpYyBoaXN0b3J5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB1bmRvSGlzdG9yeSA9IHRoaXMudW5kb1N0YWNrKCk7XG4gICAgICAgIHJldHVybiB1bmRvSGlzdG9yeS5tYXAoKHN0YXRlLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5yZXZlcnRlZEluZGV4ICE9PSBudWxsICYmIGluZGV4ID4gdGhpcy5yZXZlcnRlZEluZGV4XG4gICAgICAgIH0pKTtcbiAgICB9KTtcblxuXG5cbiAgICAvLyBDbGVhciBhbGwgaGlzdG9yeVxuICAgIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bmRvU3RhY2suc2V0KFtdKTtcbiAgICAgICAgdGhpcy5yZWRvU3RhY2suc2V0KFtdKTtcbiAgICAgICAgdGhpcy5yZXZlcnRlZEluZGV4ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fY3VycmVudFN0YXRlLnNldChudWxsKTtcbiAgICB9XG59Il19
@@ -0,0 +1,55 @@
1
+ import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation } from '@angular/core';
4
+ import { AXPDesignerService } from '../designer.service';
5
+ import { get } from 'lodash-es';
6
+ import { AXDecoratorModule } from '@acorex/components/decorators';
7
+ import { merge } from 'rxjs';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/common";
10
+ import * as i2 from "@acorex/components/decorators";
11
+ export class AXPDesignerOutlineComponent {
12
+ constructor() {
13
+ this.service = inject(AXPDesignerService);
14
+ this.collapsedStates = new Map();
15
+ this.root = signal(this.service.root());
16
+ merge(this.service.onRefresh, this.service.onUpdate)
17
+ .subscribe(() => {
18
+ this.root.update(c => ({ ...this.service.root() }));
19
+ });
20
+ }
21
+ toggleCollapse(node) {
22
+ // Toggle the current state or set to true if undefined
23
+ this.collapsedStates.set(node, !this.collapsedStates.get(node));
24
+ }
25
+ isCollapsed(node) {
26
+ // Return the collapsed state, default is false (expanded)
27
+ return !!this.collapsedStates.get(node);
28
+ }
29
+ getConfig(node) {
30
+ return get(node, "__meta__.config");
31
+ }
32
+ handleClick(e, node) {
33
+ e.stopPropagation();
34
+ this.service.select({ widget: node });
35
+ }
36
+ handleToggleClick(event, item) {
37
+ event.stopPropagation(); // Prevents the event from bubbling up to parent elements
38
+ this.toggleCollapse(item);
39
+ }
40
+ handleMouseOver(e, node) {
41
+ e.stopPropagation();
42
+ this.service.focus({ widget: node });
43
+ }
44
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerOutlineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
45
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPDesignerOutlineComponent, isStandalone: true, selector: "axp-designer-outline", ngImport: i0, template: "<div class=\"ax-flex ax-flex-col ax-border-e ax-w-72\">\n <div class=\"ax-flex ax-flex-row ax-w-full ax-justify-between ax-text-white ax-p-2 ax-border-b\">\n <div class=\"ax-flex ax-flex-row ax-gap-2 ax-items-center\">\n <span class=\"ax-font-semibold\">Outline</span>\n </div>\n <ax-close-button></ax-close-button>\n </div>\n <div class=\"ax-flex-1 ax-h-full ax-overflow-auto\">\n\n @if(root().children?.length)\n {\n <ul class=\"ax-text-white ax-text-sm ax-bg-gray-800 ax-p-2 ax-rounded-md ax-space-y-1\">\n @for( node of root().children;track $index)\n {\n <ng-container [ngTemplateOutlet]=\"sideMenu\" [ngTemplateOutletContext]=\"{ $implicit: node }\">\n </ng-container>\n }\n </ul>\n <ng-template #sideMenu let-item>\n <li class=\"ax-cursor-pointer ax-transition ax-duration-150 ax-ease-in-out ax-hover:bg-gray-700\"\n (click)=\"handleClick($event,item)\" (mouseover)=\"handleMouseOver($event,item)\">\n <div [class.ax-bg-blue-200]=\"item === service.selectedNode()\"\n [class.ax-text-blue-900]=\"item === service.selectedNode()\"\n class=\"ax-flex ax-flex-row ax-items-center ax-p-1 ax-px-2\">\n <span class=\"ax-w-5\">\n @if(item.children?.length)\n {\n <i class=\"fa-solid\" [class.fa-chevron-right]=\"isCollapsed(item)\"\n (click)=\"handleToggleClick($event, item)\" [class.fa-chevron-down]=\"!isCollapsed(item)\"></i>\n }\n </span>\n @let config= getConfig(item);\n <span class=\"ax-w-5\">\n @if(config.icon)\n {\n <i [ngClass]=\"config.icon\"></i>\n }\n </span>\n <span>{{config.title}} : {{item.name}}</span>\n </div>\n @if(item.children?.length && !isCollapsed(item)) {\n <ul class=\"ax-pl-5 ax-space-y-1\">\n <ng-container *ngFor=\"let child of item.children\" [ngTemplateOutlet]=\"sideMenu\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\">\n </ng-container>\n </ul>\n }\n </li>\n </ng-template>\n }\n @else {\n <div class=\"ax-flex ax-justify-center ax-items-center ax-text-gray-300 ax-p-4\">No widgets found in the page\n </div>\n }\n </div>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
46
+ }
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerOutlineComponent, decorators: [{
48
+ type: Component,
49
+ args: [{ selector: 'axp-designer-outline', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
50
+ CommonModule,
51
+ AXPLayoutBuilderModule,
52
+ AXDecoratorModule,
53
+ ], template: "<div class=\"ax-flex ax-flex-col ax-border-e ax-w-72\">\n <div class=\"ax-flex ax-flex-row ax-w-full ax-justify-between ax-text-white ax-p-2 ax-border-b\">\n <div class=\"ax-flex ax-flex-row ax-gap-2 ax-items-center\">\n <span class=\"ax-font-semibold\">Outline</span>\n </div>\n <ax-close-button></ax-close-button>\n </div>\n <div class=\"ax-flex-1 ax-h-full ax-overflow-auto\">\n\n @if(root().children?.length)\n {\n <ul class=\"ax-text-white ax-text-sm ax-bg-gray-800 ax-p-2 ax-rounded-md ax-space-y-1\">\n @for( node of root().children;track $index)\n {\n <ng-container [ngTemplateOutlet]=\"sideMenu\" [ngTemplateOutletContext]=\"{ $implicit: node }\">\n </ng-container>\n }\n </ul>\n <ng-template #sideMenu let-item>\n <li class=\"ax-cursor-pointer ax-transition ax-duration-150 ax-ease-in-out ax-hover:bg-gray-700\"\n (click)=\"handleClick($event,item)\" (mouseover)=\"handleMouseOver($event,item)\">\n <div [class.ax-bg-blue-200]=\"item === service.selectedNode()\"\n [class.ax-text-blue-900]=\"item === service.selectedNode()\"\n class=\"ax-flex ax-flex-row ax-items-center ax-p-1 ax-px-2\">\n <span class=\"ax-w-5\">\n @if(item.children?.length)\n {\n <i class=\"fa-solid\" [class.fa-chevron-right]=\"isCollapsed(item)\"\n (click)=\"handleToggleClick($event, item)\" [class.fa-chevron-down]=\"!isCollapsed(item)\"></i>\n }\n </span>\n @let config= getConfig(item);\n <span class=\"ax-w-5\">\n @if(config.icon)\n {\n <i [ngClass]=\"config.icon\"></i>\n }\n </span>\n <span>{{config.title}} : {{item.name}}</span>\n </div>\n @if(item.children?.length && !isCollapsed(item)) {\n <ul class=\"ax-pl-5 ax-space-y-1\">\n <ng-container *ngFor=\"let child of item.children\" [ngTemplateOutlet]=\"sideMenu\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\">\n </ng-container>\n </ul>\n }\n </li>\n </ng-template>\n }\n @else {\n <div class=\"ax-flex ax-justify-center ax-items-center ax-text-gray-300 ax-p-4\">No widgets found in the page\n </div>\n }\n </div>\n</div>" }]
54
+ }], ctorParameters: () => [] });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0bGluZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL291dGxpbmUvb3V0bGluZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL291dGxpbmUvb3V0bGluZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQWtDLE1BQU0saUNBQWlDLENBQUM7QUFDekcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFlN0IsTUFBTSxPQUFPLDJCQUEyQjtJQVFwQztRQU5VLFlBQU8sR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVyQyxvQkFBZSxHQUFzQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRS9DLFNBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBR3pDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQzthQUMvQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFBO0lBQ1YsQ0FBQztJQUdPLGNBQWMsQ0FBQyxJQUFTO1FBQzVCLHVEQUF1RDtRQUN2RCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFUyxXQUFXLENBQUMsSUFBUztRQUMzQiwwREFBMEQ7UUFDMUQsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVTLFNBQVMsQ0FBQyxJQUFtQjtRQUNuQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQTJCLENBQUM7SUFDbEUsQ0FBQztJQUVTLFdBQVcsQ0FBQyxDQUFhLEVBQUUsSUFBbUI7UUFDcEQsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVTLGlCQUFpQixDQUFDLEtBQWlCLEVBQUUsSUFBUztRQUNwRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyx5REFBeUQ7UUFDbEYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRVMsZUFBZSxDQUFDLENBQWEsRUFBRSxJQUFtQjtRQUN4RCxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDOzhHQTNDUSwyQkFBMkI7a0dBQTNCLDJCQUEyQixnRkNyQnhDLDRvRkF1RE0sMkNEeENFLFlBQVksZ2FBQ1osc0JBQXNCLDhCQUN0QixpQkFBaUI7OzJGQUlaLDJCQUEyQjtrQkFidkMsU0FBUzsrQkFDSSxzQkFBc0IsaUJBRWpCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osc0JBQXNCO3dCQUN0QixpQkFBaUI7cUJBQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSwgQVhQV2lkZ2V0Q29uZmlnLCBBWFBXaWRnZXROb2RlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQsIHNpZ25hbCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUERlc2lnbmVyU2VydmljZSB9IGZyb20gJy4uL2Rlc2lnbmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheHAtZGVzaWduZXItb3V0bGluZScsXG4gICAgdGVtcGxhdGVVcmw6ICdvdXRsaW5lLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEFYUExheW91dEJ1aWxkZXJNb2R1bGUsXG4gICAgICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIF0sXG59KVxuXG5leHBvcnQgY2xhc3MgQVhQRGVzaWduZXJPdXRsaW5lQ29tcG9uZW50IHtcblxuICAgIHByb3RlY3RlZCBzZXJ2aWNlID0gaW5qZWN0KEFYUERlc2lnbmVyU2VydmljZSk7XG5cbiAgICBwcm90ZWN0ZWQgY29sbGFwc2VkU3RhdGVzOiBNYXA8YW55LCBib29sZWFuPiA9IG5ldyBNYXAoKTtcblxuICAgIHByb3RlY3RlZCByb290ID0gc2lnbmFsKHRoaXMuc2VydmljZS5yb290KCkpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIG1lcmdlKHRoaXMuc2VydmljZS5vblJlZnJlc2gsIHRoaXMuc2VydmljZS5vblVwZGF0ZSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucm9vdC51cGRhdGUoYyA9PiAoeyAuLi50aGlzLnNlcnZpY2Uucm9vdCgpIH0pKTtcbiAgICAgICAgICAgIH0pXG4gICAgfVxuXG5cbiAgICBwcml2YXRlIHRvZ2dsZUNvbGxhcHNlKG5vZGU6IGFueSkge1xuICAgICAgICAvLyBUb2dnbGUgdGhlIGN1cnJlbnQgc3RhdGUgb3Igc2V0IHRvIHRydWUgaWYgdW5kZWZpbmVkXG4gICAgICAgIHRoaXMuY29sbGFwc2VkU3RhdGVzLnNldChub2RlLCAhdGhpcy5jb2xsYXBzZWRTdGF0ZXMuZ2V0KG5vZGUpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNDb2xsYXBzZWQobm9kZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIC8vIFJldHVybiB0aGUgY29sbGFwc2VkIHN0YXRlLCBkZWZhdWx0IGlzIGZhbHNlIChleHBhbmRlZClcbiAgICAgICAgcmV0dXJuICEhdGhpcy5jb2xsYXBzZWRTdGF0ZXMuZ2V0KG5vZGUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRDb25maWcobm9kZTogQVhQV2lkZ2V0Tm9kZSk6IEFYUFdpZGdldENvbmZpZyB7XG4gICAgICAgIHJldHVybiBnZXQobm9kZSwgXCJfX21ldGFfXy5jb25maWdcIikgYXMgYW55IGFzIEFYUFdpZGdldENvbmZpZztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFuZGxlQ2xpY2soZTogTW91c2VFdmVudCwgbm9kZTogQVhQV2lkZ2V0Tm9kZSkge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnNlcnZpY2Uuc2VsZWN0KHsgd2lkZ2V0OiBub2RlIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBoYW5kbGVUb2dnbGVDbGljayhldmVudDogTW91c2VFdmVudCwgaXRlbTogYW55KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAvLyBQcmV2ZW50cyB0aGUgZXZlbnQgZnJvbSBidWJibGluZyB1cCB0byBwYXJlbnQgZWxlbWVudHNcbiAgICAgICAgdGhpcy50b2dnbGVDb2xsYXBzZShpdGVtKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFuZGxlTW91c2VPdmVyKGU6IE1vdXNlRXZlbnQsIG5vZGU6IEFYUFdpZGdldE5vZGUpIHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmZvY3VzKHsgd2lkZ2V0OiBub2RlIH0pO1xuICAgIH1cbn0iLCI8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1ib3JkZXItZSBheC13LTcyXCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1yb3cgYXgtdy1mdWxsIGF4LWp1c3RpZnktYmV0d2VlbiBheC10ZXh0LXdoaXRlIGF4LXAtMiBheC1ib3JkZXItYlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LXJvdyBheC1nYXAtMiBheC1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtZm9udC1zZW1pYm9sZFwiPk91dGxpbmU8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXgtY2xvc2UtYnV0dG9uPjwvYXgtY2xvc2UtYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4LTEgYXgtaC1mdWxsIGF4LW92ZXJmbG93LWF1dG9cIj5cblxuICAgICAgICBAaWYocm9vdCgpLmNoaWxkcmVuPy5sZW5ndGgpXG4gICAgICAgIHtcbiAgICAgICAgPHVsIGNsYXNzPVwiYXgtdGV4dC13aGl0ZSBheC10ZXh0LXNtIGF4LWJnLWdyYXktODAwIGF4LXAtMiBheC1yb3VuZGVkLW1kIGF4LXNwYWNlLXktMVwiPlxuICAgICAgICAgICAgQGZvciggbm9kZSBvZiByb290KCkuY2hpbGRyZW47dHJhY2sgJGluZGV4KVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzaWRlTWVudVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzaWRlTWVudSBsZXQtaXRlbT5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cImF4LWN1cnNvci1wb2ludGVyIGF4LXRyYW5zaXRpb24gYXgtZHVyYXRpb24tMTUwIGF4LWVhc2UtaW4tb3V0IGF4LWhvdmVyOmJnLWdyYXktNzAwXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50LGl0ZW0pXCIgKG1vdXNlb3Zlcik9XCJoYW5kbGVNb3VzZU92ZXIoJGV2ZW50LGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuYXgtYmctYmx1ZS0yMDBdPVwiaXRlbSA9PT0gc2VydmljZS5zZWxlY3RlZE5vZGUoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC10ZXh0LWJsdWUtOTAwXT1cIml0ZW0gPT09IHNlcnZpY2Uuc2VsZWN0ZWROb2RlKClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1yb3cgYXgtaXRlbXMtY2VudGVyIGF4LXAtMSBheC1weC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdy01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYoaXRlbS5jaGlsZHJlbj8ubGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZFwiIFtjbGFzcy5mYS1jaGV2cm9uLXJpZ2h0XT1cImlzQ29sbGFwc2VkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlVG9nZ2xlQ2xpY2soJGV2ZW50LCBpdGVtKVwiIFtjbGFzcy5mYS1jaGV2cm9uLWRvd25dPVwiIWlzQ29sbGFwc2VkKGl0ZW0pXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIEBsZXQgY29uZmlnPSBnZXRDb25maWcoaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdy01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYoY29uZmlnLmljb24pXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJjb25maWcuaWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2NvbmZpZy50aXRsZX19IDoge3tpdGVtLm5hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICBAaWYoaXRlbS5jaGlsZHJlbj8ubGVuZ3RoICYmICFpc0NvbGxhcHNlZChpdGVtKSkge1xuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImF4LXBsLTUgYXgtc3BhY2UteS0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGl0ZW0uY2hpbGRyZW5cIiBbbmdUZW1wbGF0ZU91dGxldF09XCJzaWRlTWVudVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNoaWxkIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtanVzdGlmeS1jZW50ZXIgYXgtaXRlbXMtY2VudGVyIGF4LXRleHQtZ3JheS0zMDAgYXgtcC00XCI+Tm8gd2lkZ2V0cyBmb3VuZCBpbiB0aGUgcGFnZVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9kaXY+Il19
@@ -0,0 +1,103 @@
1
+ import { AXCollapseModule } from '@acorex/components/collapse';
2
+ import { AXTabsModule } from '@acorex/components/tabs';
3
+ import { AXPLayoutBuilderModule, AXPWidgetRegistryService } from '@acorex/platform/layout/builder';
4
+ import { CommonModule } from '@angular/common';
5
+ import { ChangeDetectionStrategy, Component, computed, effect, EventEmitter, inject, input, Output, signal, untracked } from '@angular/core';
6
+ import { capitalize, cloneDeep, isArray, isEmpty, isNil, merge, set, sortBy, unionBy } from 'lodash-es';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@acorex/components/collapse";
9
+ import * as i2 from "@acorex/components/tabs";
10
+ import * as i3 from "@acorex/platform/layout/builder";
11
+ export class AXPWidgetPropertyViewerComponent {
12
+ constructor() {
13
+ this.widget = input.required();
14
+ this.widgetRegistryService = inject(AXPWidgetRegistryService);
15
+ this.currentTabIndex = signal(0);
16
+ this.config = signal(null);
17
+ this.allPoperties = [];
18
+ this.tabs = signal([]);
19
+ this.groups = computed(() => {
20
+ return this.tabs().length ? this.tabs()[this.currentTabIndex()].groups : [];
21
+ });
22
+ this.onChanged = new EventEmitter();
23
+ this.context = signal({});
24
+ this.initialContext = {};
25
+ effect(() => {
26
+ if (!this.widget())
27
+ return;
28
+ const config = this.widgetRegistryService.resolve(this.widget()?.type);
29
+ if (config) {
30
+ this.initialContext = {};
31
+ this.config.set(config);
32
+ this.fillTabs();
33
+ }
34
+ else {
35
+ console.error(`Invalid widget name: ${this.widget()}`);
36
+ }
37
+ }, { allowSignalWrites: true });
38
+ }
39
+ fillTabs() {
40
+ const tabs = [
41
+ {
42
+ name: 'general',
43
+ title: 'General',
44
+ groups: [],
45
+ },
46
+ ];
47
+ Object.entries(this.config()?.components ?? {}).forEach((c) => {
48
+ if (c[1].component != null && c[1].properties?.length) {
49
+ tabs.push({ name: c[0], title: capitalize(c[0]), groups: [] });
50
+ }
51
+ });
52
+ ///
53
+ this.allPoperties = [];
54
+ ///
55
+ tabs.forEach((tab) => {
56
+ const props = tab.name == 'general'
57
+ ? this.config()?.properties ?? []
58
+ : ((this.config()?.components)[tab.name]?.properties ?? []).filter((c) => c.visible);
59
+ //
60
+ this.allPoperties.push(...props);
61
+ tab.groups = unionBy(sortBy(props.map((pg) => ({
62
+ isCollapsed: false,
63
+ name: pg.group.name,
64
+ title: pg.group.title,
65
+ props: sortBy(props.filter((p) => p.group.name == pg.group.name), 'title'),
66
+ })), 'title'), 'name');
67
+ });
68
+ this.tabs.set(tabs.filter((c) => c.groups.length));
69
+ //
70
+ this.initialContext = this.allPoperties
71
+ .filter((c) => (!isArray(c.schema.defaultValue) && !isNil(c.schema.defaultValue)) || (isArray(c.schema.defaultValue) && !isEmpty(c.schema.defaultValue)))
72
+ .reduce((acc, c) => {
73
+ set(acc, c.schema.interface.path, c.schema.defaultValue); // Use lodash's set
74
+ return acc;
75
+ }, {});
76
+ //
77
+ untracked(() => {
78
+ this.context.set(merge(cloneDeep(this.initialContext), this.widget()));
79
+ this.onChanged.emit({ values: this.context(), mode: 'init' });
80
+ });
81
+ }
82
+ handleContextChange(e) {
83
+ untracked(() => {
84
+ this.context.set(e.data);
85
+ });
86
+ this.onChanged.emit({ values: this.context(), mode: 'update', });
87
+ }
88
+ handleTabChange(event) {
89
+ const indx = event.index;
90
+ if (this.currentTabIndex() != indx) {
91
+ this.currentTabIndex.set(indx);
92
+ }
93
+ }
94
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPWidgetPropertyViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
95
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPWidgetPropertyViewerComponent, isStandalone: true, selector: "axp-widget-property-viewer", inputs: { widget: { classPropertyName: "widget", publicName: "widget", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onChanged: "onChanged" }, ngImport: i0, template: "<axp-widgets-container [context]=\"context()\" (onChanged)=\"handleContextChange($event)\">\n <div class=\"ax-flex ax-flex-col\">\n <div class=\"ax-pb-2\">\n <ax-tabs look=\"default\" (onActiveTabChanged)=\"handleTabChange($event)\" [look]=\"'with-line'\">\n @for( tab of tabs();track $index){\n <ax-tab-item [text]=\"tab.title\" [key]=\"$index.toString()\" [active]=\"currentTabIndex() === $index\">\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n <div class=\"ax-flex-1 ax-overflow-auto\">\n <ax-collapse-group class=\"ax-h-fit\" look=\"blank\">\n @for( group of groups();track $index){\n <ax-collapse [caption]=\"group.title\" look=\"solid\" [(isCollapsed)]=\"group.isCollapsed\">\n <div class=\"ax-flex ax-flex-col ax-divide-y\">\n @for( p of group.props;track $index){\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-py-2 first:ax-pt-0 last:ax-pb-0\">\n <span class=\"ax-font-semibold\">{{p.title}}</span>\n @if(p.schema.interface)\n {\n <axp-widget-renderer [node]=\"p.schema.interface\" [mode]=\"'edit'\">\n </axp-widget-renderer>\n }\n </div>\n }\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n </div>\n </div>\n</axp-widgets-container>", styles: ["ax-collapse .ax-collapse-header{font-weight:600}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXCollapseModule }, { kind: "component", type: i1.AXCollapseComponent, selector: "ax-collapse", inputs: ["disabled", "look", "isCollapsed", "showHeader", "caption", "icon", "isLoading", "headerTemplate"], outputs: ["onClick", "isCollapsedChange"] }, { kind: "component", type: i1.AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: ["look", "accordion", "activeIndex"], outputs: ["accordionChange", "activeIndexChange"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i2.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i2.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i3.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "variables", "functions"], outputs: ["onChanged", "contextChange"] }, { kind: "component", type: i3.AXPWidgetRendererComponent, selector: "axp-widget-renderer", inputs: ["node", "mode", "parentNode", "index"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
96
+ }
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPWidgetPropertyViewerComponent, decorators: [{
98
+ type: Component,
99
+ args: [{ selector: 'axp-widget-property-viewer', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, AXCollapseModule, AXTabsModule, AXPLayoutBuilderModule], template: "<axp-widgets-container [context]=\"context()\" (onChanged)=\"handleContextChange($event)\">\n <div class=\"ax-flex ax-flex-col\">\n <div class=\"ax-pb-2\">\n <ax-tabs look=\"default\" (onActiveTabChanged)=\"handleTabChange($event)\" [look]=\"'with-line'\">\n @for( tab of tabs();track $index){\n <ax-tab-item [text]=\"tab.title\" [key]=\"$index.toString()\" [active]=\"currentTabIndex() === $index\">\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n <div class=\"ax-flex-1 ax-overflow-auto\">\n <ax-collapse-group class=\"ax-h-fit\" look=\"blank\">\n @for( group of groups();track $index){\n <ax-collapse [caption]=\"group.title\" look=\"solid\" [(isCollapsed)]=\"group.isCollapsed\">\n <div class=\"ax-flex ax-flex-col ax-divide-y\">\n @for( p of group.props;track $index){\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-py-2 first:ax-pt-0 last:ax-pb-0\">\n <span class=\"ax-font-semibold\">{{p.title}}</span>\n @if(p.schema.interface)\n {\n <axp-widget-renderer [node]=\"p.schema.interface\" [mode]=\"'edit'\">\n </axp-widget-renderer>\n }\n </div>\n }\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n </div>\n </div>\n</axp-widgets-container>", styles: ["ax-collapse .ax-collapse-header{font-weight:600}\n"] }]
100
+ }], ctorParameters: () => [], propDecorators: { onChanged: [{
101
+ type: Output
102
+ }] } });
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXByb3BlcnR5LXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL3Byb3BlcnR5LXZpZXdlci93aWRnZXQtcHJvcGVydHktdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvcHJvcGVydHktdmlld2VyL3dpZGdldC1wcm9wZXJ0eS12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBMEIsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQTRFLHdCQUF3QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0ssT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFTLEtBQUssRUFBUyxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDM0ssT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQU8sT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7OztBQTJCN0csTUFBTSxPQUFPLGdDQUFnQztJQXlCM0M7UUF4QkEsV0FBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWlCLENBQUM7UUFFakMsMEJBQXFCLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixD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QUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQzs4R0FoSFUsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0MsaVFDakM3Qyx1bURBK0J3QiwyR0RBWixZQUFZLDhCQUFFLGdCQUFnQiw4YkFBRSxZQUFZLGthQUFFLHNCQUFzQjs7MkZBRW5FLGdDQUFnQztrQkFSNUMsU0FBUzsrQkFDRSw0QkFBNEIsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxzQkFBc0IsQ0FBQzt3REFvQi9FLFNBQVM7c0JBRFIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29sbGFwc2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29sbGFwc2UnO1xuaW1wb3J0IHsgQVhUYWJzTW9kdWxlLCBBWFRhYlN0cmlwQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RhYnMnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSwgQVhQTGF5b3V0Q29udGV4dEV2ZW50LCBBWFBXaWRnZXRDb25maWcsIEFYUFdpZGdldE5vZGUsIEFYUFdpZGdldFByb3BlcnR5LCBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgaW5wdXQsIG1vZGVsLCBPdXRwdXQsIHNpZ25hbCwgdW50cmFja2VkLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZSwgY2xvbmVEZWVwLCBnZXQsIGlzQXJyYXksIGlzRW1wdHksIGlzTmlsLCBtZXJnZSwgc2V0LCBzb3J0QnksIHVuaW9uQnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldFByb3BlcnR5VGFiIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBncm91cHM6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBpc0NvbGxhcHNlZDogYm9vbGVhbjtcbiAgICBwcm9wczogQVhQV2lkZ2V0UHJvcGVydHlbXTtcbiAgfVtdO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0UHJvcGVydGllc0NoYW5nZWRFdmVudCB7XG4gIHZhbHVlczogYW55LFxuICBtb2RlOiAnaW5pdCcgfCAndXBkYXRlJ1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheHAtd2lkZ2V0LXByb3BlcnR5LXZpZXdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi93aWRnZXQtcHJvcGVydHktdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2lkZ2V0LXByb3BlcnR5LXZpZXdlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQVhDb2xsYXBzZU1vZHVsZSwgQVhUYWJzTW9kdWxlLCBBWFBMYXlvdXRCdWlsZGVyTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0UHJvcGVydHlWaWV3ZXJDb21wb25lbnQge1xuICB3aWRnZXQgPSBpbnB1dC5yZXF1aXJlZDxBWFBXaWRnZXROb2RlPigpO1xuXG4gIHByaXZhdGUgd2lkZ2V0UmVnaXN0cnlTZXJ2aWNlID0gaW5qZWN0KEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIGN1cnJlbnRUYWJJbmRleDogV3JpdGFibGVTaWduYWw8bnVtYmVyPiA9IHNpZ25hbCgwKTtcblxuICBwcm90ZWN0ZWQgY29uZmlnID0gc2lnbmFsPEFYUFdpZGdldENvbmZpZyB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgYWxsUG9wZXJ0aWVzOiBBWFBXaWRnZXRQcm9wZXJ0eVtdID0gW107XG5cbiAgcHJvdGVjdGVkIHRhYnMgPSBzaWduYWw8QVhQV2lkZ2V0UHJvcGVydHlUYWJbXT4oW10pO1xuXG4gIHByb3RlY3RlZCBncm91cHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMudGFicygpLmxlbmd0aCA/IHRoaXMudGFicygpW3RoaXMuY3VycmVudFRhYkluZGV4KCldLmdyb3VwcyA6IFtdO1xuICB9KTtcblxuXG4gIEBPdXRwdXQoKVxuICBvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEFYUFdpZGdldFByb3BlcnRpZXNDaGFuZ2VkRXZlbnQ+KCk7XG5cbiAgcHJvdGVjdGVkIGNvbnRleHQgPSBzaWduYWw8YW55Pih7fSk7XG5cblxuICBwcm90ZWN0ZWQgaW5pdGlhbENvbnRleHQ6IGFueSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLndpZGdldCgpKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLndpZGdldFJlZ2lzdHJ5U2VydmljZS5yZXNvbHZlKHRoaXMud2lkZ2V0KCk/LnR5cGUpO1xuICAgICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgICAgdGhpcy5pbml0aWFsQ29udGV4dCA9IHt9O1xuICAgICAgICAgIHRoaXMuY29uZmlnLnNldChjb25maWcpO1xuICAgICAgICAgIHRoaXMuZmlsbFRhYnMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIHdpZGdldCBuYW1lOiAke3RoaXMud2lkZ2V0KCl9YCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxsVGFicygpIHtcbiAgICBjb25zdCB0YWJzOiBBWFBXaWRnZXRQcm9wZXJ0eVRhYltdID0gW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnZ2VuZXJhbCcsXG4gICAgICAgIHRpdGxlOiAnR2VuZXJhbCcsXG4gICAgICAgIGdyb3VwczogW10sXG4gICAgICB9LFxuICAgIF07XG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5jb25maWcoKT8uY29tcG9uZW50cyA/PyB7fSkuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgaWYgKGNbMV0uY29tcG9uZW50ICE9IG51bGwgJiYgY1sxXS5wcm9wZXJ0aWVzPy5sZW5ndGgpIHtcbiAgICAgICAgdGFicy5wdXNoKHsgbmFtZTogY1swXSwgdGl0bGU6IGNhcGl0YWxpemUoY1swXSksIGdyb3VwczogW10gfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8vXG4gICAgdGhpcy5hbGxQb3BlcnRpZXMgPSBbXTtcbiAgICAvLy9cbiAgICB0YWJzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgY29uc3QgcHJvcHMgPVxuICAgICAgICB0YWIubmFtZSA9PSAnZ2VuZXJhbCdcbiAgICAgICAgICA/IHRoaXMuY29uZmlnKCk/LnByb3BlcnRpZXMgPz8gW11cbiAgICAgICAgICA6ICgoKHRoaXMuY29uZmlnKCk/LmNvbXBvbmVudHMgYXMgYW55KVt0YWIubmFtZV0/LnByb3BlcnRpZXMgYXMgQVhQV2lkZ2V0UHJvcGVydHlbXSkgPz8gW10pLmZpbHRlcigoYykgPT4gYy52aXNpYmxlKTtcbiAgICAgIC8vXG4gICAgICB0aGlzLmFsbFBvcGVydGllcy5wdXNoKC4uLnByb3BzKTtcbiAgICAgIHRhYi5ncm91cHMgPSB1bmlvbkJ5KFxuICAgICAgICBzb3J0QnkoXG4gICAgICAgICAgcHJvcHMubWFwKChwZykgPT4gKHtcbiAgICAgICAgICAgIGlzQ29sbGFwc2VkOiBmYWxzZSxcbiAgICAgICAgICAgIG5hbWU6IHBnLmdyb3VwLm5hbWUsXG4gICAgICAgICAgICB0aXRsZTogcGcuZ3JvdXAudGl0bGUsXG4gICAgICAgICAgICBwcm9wczogc29ydEJ5KFxuICAgICAgICAgICAgICBwcm9wcy5maWx0ZXIoKHApID0+IHAuZ3JvdXAubmFtZSA9PSBwZy5ncm91cC5uYW1lKSxcbiAgICAgICAgICAgICAgJ3RpdGxlJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgJ3RpdGxlJ1xuICAgICAgICApLFxuICAgICAgICAnbmFtZSdcbiAgICAgICk7XG4gICAgfSk7XG4gICAgdGhpcy50YWJzLnNldCh0YWJzLmZpbHRlcigoYykgPT4gYy5ncm91cHMubGVuZ3RoKSk7XG4gICAgLy9cbiAgICB0aGlzLmluaXRpYWxDb250ZXh0ID0gdGhpcy5hbGxQb3BlcnRpZXNcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChjKSA9PlxuICAgICAgICAgICghaXNBcnJheShjLnNjaGVtYS5kZWZhdWx0VmFsdWUpICYmICFpc05pbChjLnNjaGVtYS5kZWZhdWx0VmFsdWUpKSB8fCAoaXNBcnJheShjLnNjaGVtYS5kZWZhdWx0VmFsdWUpICYmICFpc0VtcHR5KGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSkpXG4gICAgICApXG4gICAgICAucmVkdWNlKChhY2MsIGMpID0+IHtcbiAgICAgICAgc2V0KGFjYywgYy5zY2hlbWEuaW50ZXJmYWNlLnBhdGgsIGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSk7IC8vIFVzZSBsb2Rhc2gncyBzZXRcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9KTtcbiAgICAvL1xuICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbnRleHQuc2V0KG1lcmdlKGNsb25lRGVlcCh0aGlzLmluaXRpYWxDb250ZXh0KSwgdGhpcy53aWRnZXQoKSkpO1xuICAgICAgdGhpcy5vbkNoYW5nZWQuZW1pdCh7IHZhbHVlczogdGhpcy5jb250ZXh0KCksIG1vZGU6ICdpbml0JyB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDb250ZXh0Q2hhbmdlKGU6IEFYUExheW91dENvbnRleHRFdmVudCkge1xuICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbnRleHQuc2V0KGUuZGF0YSk7XG4gICAgfSk7XG4gICAgdGhpcy5vbkNoYW5nZWQuZW1pdCh7IHZhbHVlczogdGhpcy5jb250ZXh0KCksIG1vZGU6ICd1cGRhdGUnLCB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVUYWJDaGFuZ2UoZXZlbnQ6IEFYVGFiU3RyaXBDaGFuZ2VkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpbmR4ID0gZXZlbnQuaW5kZXg7XG4gICAgaWYgKHRoaXMuY3VycmVudFRhYkluZGV4KCkgIT0gaW5keCkge1xuICAgICAgdGhpcy5jdXJyZW50VGFiSW5kZXguc2V0KGluZHgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGF4cC13aWRnZXRzLWNvbnRhaW5lciBbY29udGV4dF09XCJjb250ZXh0KClcIiAob25DaGFuZ2VkKT1cImhhbmRsZUNvbnRleHRDaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1wYi0yXCI+XG4gICAgICAgICAgICA8YXgtdGFicyBsb29rPVwiZGVmYXVsdFwiIChvbkFjdGl2ZVRhYkNoYW5nZWQpPVwiaGFuZGxlVGFiQ2hhbmdlKCRldmVudClcIiBbbG9va109XCInd2l0aC1saW5lJ1wiPlxuICAgICAgICAgICAgICAgIEBmb3IoIHRhYiBvZiB0YWJzKCk7dHJhY2sgJGluZGV4KXtcbiAgICAgICAgICAgICAgICA8YXgtdGFiLWl0ZW0gW3RleHRdPVwidGFiLnRpdGxlXCIgW2tleV09XCIkaW5kZXgudG9TdHJpbmcoKVwiIFthY3RpdmVdPVwiY3VycmVudFRhYkluZGV4KCkgPT09ICRpbmRleFwiPlxuICAgICAgICAgICAgICAgIDwvYXgtdGFiLWl0ZW0+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9heC10YWJzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXgtMSBheC1vdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgICAgICA8YXgtY29sbGFwc2UtZ3JvdXAgY2xhc3M9XCJheC1oLWZpdFwiIGxvb2s9XCJibGFua1wiPlxuICAgICAgICAgICAgICAgIEBmb3IoIGdyb3VwIG9mIGdyb3VwcygpO3RyYWNrICRpbmRleCl7XG4gICAgICAgICAgICAgICAgPGF4LWNvbGxhcHNlIFtjYXB0aW9uXT1cImdyb3VwLnRpdGxlXCIgbG9vaz1cInNvbGlkXCIgWyhpc0NvbGxhcHNlZCldPVwiZ3JvdXAuaXNDb2xsYXBzZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZGl2aWRlLXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IoIHAgb2YgZ3JvdXAucHJvcHM7dHJhY2sgJGluZGV4KXtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0xIGF4LXB5LTIgZmlyc3Q6YXgtcHQtMCBsYXN0OmF4LXBiLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWZvbnQtc2VtaWJvbGRcIj57e3AudGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYocC5zY2hlbWEuaW50ZXJmYWNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXhwLXdpZGdldC1yZW5kZXJlciBbbm9kZV09XCJwLnNjaGVtYS5pbnRlcmZhY2VcIiBbbW9kZV09XCInZWRpdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4cC13aWRnZXQtcmVuZGVyZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYXgtY29sbGFwc2U+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9heC1jb2xsYXBzZS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2F4cC13aWRnZXRzLWNvbnRhaW5lcj4iXX0=