@acorex/platform 18.0.12 → 18.0.13

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 (531) hide show
  1. package/common/lib/app/application.types.d.ts +3 -2
  2. package/common/lib/layout/sticky.directive.d.ts +1 -1
  3. package/common/lib/schema/widget/widget-renderer.d.ts +1 -0
  4. package/esm2022/common/lib/app/application.types.mjs +1 -1
  5. package/esm2022/common/lib/layout/sticky.directive.mjs +2 -2
  6. package/esm2022/common/lib/schema/widget/widget-renderer.mjs +20 -16
  7. package/esm2022/common/lib/schema/widgets/text/text-widget-column.component.mjs +3 -3
  8. package/esm2022/layout/builder/lib/builder/builder.service.mjs +15 -12
  9. package/esm2022/layout/builder/lib/builder/index.mjs +7 -6
  10. package/esm2022/layout/builder/lib/builder/widget-catalog.mjs +33 -0
  11. package/esm2022/layout/builder/lib/builder/widget-groups.mjs +27 -0
  12. package/esm2022/layout/builder/lib/builder/widget-registery.service.mjs +3 -3
  13. package/esm2022/layout/builder/lib/builder/widget.types.mjs +5 -5
  14. package/esm2022/layout/designer/index.mjs +3 -3
  15. package/esm2022/layout/designer/lib/board/board.component.mjs +5 -40
  16. package/esm2022/layout/designer/lib/command.mjs +185 -0
  17. package/esm2022/layout/designer/lib/designer/designer.component.mjs +54 -5
  18. package/esm2022/layout/designer/lib/designer.service.mjs +136 -95
  19. package/esm2022/layout/designer/lib/{buttons → helpers}/add-widget-button/add-widget-button.component.mjs +5 -5
  20. package/esm2022/layout/designer/lib/helpers/grid-drawer/grid-drawer.component.mjs +82 -0
  21. package/esm2022/layout/designer/lib/history/history.component.mjs +11 -4
  22. package/esm2022/layout/designer/lib/outline/outline.component.mjs +16 -15
  23. package/esm2022/layout/designer/lib/pages/pages.component.mjs +28 -0
  24. package/esm2022/layout/designer/lib/property-viewer/widget-property-viewer.component.mjs +5 -2
  25. package/esm2022/layout/designer/lib/widget-designer-renderer.component.mjs +3 -3
  26. package/esm2022/layout/designer/lib/widget-picker/widget-picker.component.mjs +80 -6
  27. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget.config.mjs +6 -4
  28. package/esm2022/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.component.mjs +17 -7
  29. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.mjs +1 -1
  30. package/esm2022/layouts/lib/admin/entity-layout/entity-modify-view/entity-modify-view.component.mjs +10 -5
  31. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.mjs +1 -2
  32. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.mjs +2 -2
  33. package/esm2022/themes/default/lib/layouts/root-layout/root-layout.component.mjs +1 -1
  34. package/esm2022/widgets/lib/properties/editors.props.mjs +80 -45
  35. package/esm2022/widgets/lib/properties/layout.props.mjs +60 -0
  36. package/esm2022/widgets/lib/properties/table-column.props.mjs +3 -2
  37. package/esm2022/widgets/lib/widgets/actions/button/button-widget-view.component.mjs +52 -0
  38. package/esm2022/widgets/lib/widgets/actions/button/button-widget.config.mjs +27 -0
  39. package/esm2022/widgets/lib/widgets/actions/button/index.mjs +3 -0
  40. package/esm2022/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget-column.component.mjs +1 -1
  41. package/esm2022/widgets/lib/widgets/advance/file/file-box-widget-edit.component.mjs +122 -0
  42. package/esm2022/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget-filter.component.mjs +1 -1
  43. package/esm2022/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget-print.component.mjs +1 -1
  44. package/esm2022/widgets/lib/widgets/advance/file/file-box-widget-view.component.mjs +215 -0
  45. package/esm2022/widgets/lib/widgets/advance/file/file-box-widget.config.mjs +51 -0
  46. package/esm2022/widgets/lib/widgets/advance/file/file-box-widget.service.mjs +3 -0
  47. package/esm2022/widgets/lib/widgets/advance/file/index.mjs +8 -0
  48. package/esm2022/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget-column.component.mjs +1 -1
  49. package/esm2022/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget-edit.component.mjs +1 -1
  50. package/esm2022/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget-filter.component.mjs +1 -1
  51. package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget-print.component.mjs +19 -0
  52. package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget-types.mjs +2 -0
  53. package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget-view.component.mjs +160 -0
  54. package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget.config.mjs +29 -0
  55. package/esm2022/widgets/lib/widgets/advance/gallery/index.mjs +7 -0
  56. package/esm2022/widgets/lib/widgets/advance/map/index.mjs +7 -0
  57. package/esm2022/widgets/lib/widgets/{editors/link-widget/link-widget-print.component.mjs → advance/map/map-box-widget-column.component.mjs} +5 -5
  58. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-edit.component.mjs +171 -0
  59. package/esm2022/widgets/lib/widgets/{editors/map-box-widget → advance/map}/map-box-widget-filter.component.mjs +1 -1
  60. package/esm2022/widgets/lib/widgets/{editors/map-box-widget → advance/map}/map-box-widget-print.component.mjs +1 -1
  61. package/esm2022/widgets/lib/widgets/{editors/map-box-widget → advance/map}/map-box-widget-view.component.mjs +3 -3
  62. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget.config.mjs +31 -0
  63. package/esm2022/widgets/lib/widgets/advance/qrcode/index.mjs +3 -0
  64. package/esm2022/widgets/lib/widgets/advance/qrcode/qrcode-widget-view.component.mjs +51 -0
  65. package/esm2022/widgets/lib/widgets/advance/qrcode/qrcode-widget.config.mjs +62 -0
  66. package/esm2022/widgets/lib/widgets/advance/signature/index.mjs +7 -0
  67. package/esm2022/widgets/lib/widgets/{editors/select-box-widget/select-box-widget-print.component.mjs → advance/signature/signature-pad-widget-column.component.mjs} +5 -5
  68. package/esm2022/widgets/lib/widgets/advance/signature/signature-pad-widget-edit.component.mjs +142 -0
  69. package/esm2022/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/signature-pad-widget-filter.component.mjs +1 -1
  70. package/esm2022/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/signature-pad-widget-print.component.mjs +1 -1
  71. package/esm2022/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/signature-pad-widget-view.component.mjs +1 -1
  72. package/esm2022/widgets/lib/widgets/advance/signature/signature-pad-widget.config.mjs +31 -0
  73. package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget.config.mjs +9 -12
  74. package/esm2022/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget-column.component.mjs +1 -1
  75. package/esm2022/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget-edit.component.mjs +1 -1
  76. package/esm2022/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget-filter.component.mjs +1 -1
  77. package/esm2022/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget-print.component.mjs +1 -1
  78. package/esm2022/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget-view.component.mjs +1 -1
  79. package/esm2022/widgets/lib/widgets/editors/color/color-box-widget.config.mjs +31 -0
  80. package/esm2022/widgets/lib/widgets/editors/color/index.mjs +7 -0
  81. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-column.component.mjs +36 -0
  82. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-edit.component.mjs +297 -0
  83. package/esm2022/widgets/lib/widgets/editors/{contact-widget → contact}/contact-widget-filter.component.mjs +1 -1
  84. package/esm2022/widgets/lib/widgets/editors/{contact-widget → contact}/contact-widget-print.component.mjs +1 -1
  85. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-view.component.mjs +122 -0
  86. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget.config.mjs +81 -0
  87. package/esm2022/widgets/lib/widgets/editors/contact/contact.type.mjs +2 -0
  88. package/esm2022/widgets/lib/widgets/editors/contact/index.mjs +7 -0
  89. package/esm2022/widgets/lib/widgets/editors/{contact-widget → contact}/popup-component.mjs +1 -1
  90. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-column.component.mjs +44 -0
  91. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-edit.component.mjs +133 -0
  92. package/esm2022/widgets/lib/widgets/editors/{date-time-box-widget → date-time}/date-time-box-widget-filter.component.mjs +1 -1
  93. package/esm2022/widgets/lib/widgets/editors/{date-time-box-widget → date-time}/date-time-box-widget-print.component.mjs +1 -1
  94. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-view.component.mjs +54 -0
  95. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget.config.mjs +40 -0
  96. package/esm2022/widgets/lib/widgets/editors/date-time/index.mjs +7 -0
  97. package/esm2022/widgets/lib/widgets/editors/email/email-box-widget-column.component.mjs +66 -0
  98. package/esm2022/widgets/lib/widgets/editors/email/email-box-widget-edit.component.mjs +249 -0
  99. package/esm2022/widgets/lib/widgets/editors/{email-box-widget → email}/email-box-widget-filter.component.mjs +1 -1
  100. package/esm2022/widgets/lib/widgets/editors/{email-box-widget → email}/email-box-widget-print.component.mjs +1 -1
  101. package/esm2022/widgets/lib/widgets/editors/{email-box-widget → email}/email-box-widget-view.component.mjs +1 -1
  102. package/esm2022/widgets/lib/widgets/editors/email/email-box-widget.config.mjs +39 -0
  103. package/esm2022/widgets/lib/widgets/editors/email/index.mjs +7 -0
  104. package/esm2022/widgets/lib/widgets/editors/large-text/index.mjs +7 -0
  105. package/esm2022/widgets/lib/widgets/editors/{large-text-widget → large-text}/large-text-widget-column.component.mjs +1 -1
  106. package/esm2022/widgets/lib/widgets/editors/{large-text-widget → large-text}/large-text-widget-edit.component.mjs +1 -1
  107. package/esm2022/widgets/lib/widgets/editors/{large-text-widget → large-text}/large-text-widget-filter.component.mjs +1 -1
  108. package/esm2022/widgets/lib/widgets/editors/{map-box-widget/map-box-widget-column.component.mjs → large-text/large-text-widget-print.component.mjs} +5 -5
  109. package/esm2022/widgets/lib/widgets/editors/{large-text-widget → large-text}/large-text-widget-view.component.mjs +1 -1
  110. package/esm2022/widgets/lib/widgets/editors/large-text/large-text-widget.config.mjs +39 -0
  111. package/esm2022/widgets/lib/widgets/editors/link/index.mjs +7 -0
  112. package/esm2022/widgets/lib/widgets/editors/{link-widget → link}/link-widget-column.component.mjs +1 -1
  113. package/esm2022/widgets/lib/widgets/editors/link/link-widget-edit.component.mjs +391 -0
  114. package/esm2022/widgets/lib/widgets/editors/link/link-widget-filter.component.mjs +20 -0
  115. package/esm2022/widgets/lib/widgets/editors/link/link-widget-print.component.mjs +19 -0
  116. package/esm2022/widgets/lib/widgets/editors/{link-widget → link}/link-widget-view.component.mjs +1 -1
  117. package/esm2022/widgets/lib/widgets/editors/link/link-widget.config.mjs +29 -0
  118. package/esm2022/widgets/lib/widgets/editors/number/index.mjs +7 -0
  119. package/esm2022/widgets/lib/widgets/editors/number/number-box-widget-column.component.mjs +38 -0
  120. package/esm2022/widgets/lib/widgets/editors/number/number-box-widget-edit.component.mjs +157 -0
  121. package/esm2022/widgets/lib/widgets/{layout/repeater-widget/repeater-widget-edit.component.mjs → editors/number/number-box-widget-filter.component.mjs} +5 -5
  122. package/esm2022/widgets/lib/widgets/editors/{number-box-widget → number}/number-box-widget-print.component.mjs +1 -1
  123. package/esm2022/widgets/lib/widgets/editors/number/number-box-widget-view.component.mjs +56 -0
  124. package/esm2022/widgets/lib/widgets/editors/number/number-box-widget.config.mjs +39 -0
  125. package/esm2022/widgets/lib/widgets/editors/password/index.mjs +7 -0
  126. package/esm2022/widgets/lib/widgets/editors/{phone-box-widget/phone-box-widget-print.component.mjs → password/password-box-widget-column.component.mjs} +5 -5
  127. package/esm2022/widgets/lib/widgets/editors/{password-box-widget → password}/password-box-widget-edit.component.mjs +1 -1
  128. package/esm2022/widgets/lib/widgets/editors/{password-box-widget → password}/password-box-widget-filter.component.mjs +1 -1
  129. package/esm2022/widgets/lib/widgets/editors/{password-box-widget → password}/password-box-widget-print.component.mjs +1 -1
  130. package/esm2022/widgets/lib/widgets/editors/password/password-box-widget-view.component.mjs +76 -0
  131. package/esm2022/widgets/lib/widgets/editors/password/password-box-widget.config.mjs +38 -0
  132. package/esm2022/widgets/lib/widgets/editors/phone/index.mjs +7 -0
  133. package/esm2022/widgets/lib/widgets/editors/phone/phone-box-widget-column.component.mjs +66 -0
  134. package/esm2022/widgets/lib/widgets/editors/{phone-box-widget → phone}/phone-box-widget-edit.component.mjs +1 -1
  135. package/esm2022/widgets/lib/widgets/editors/{phone-box-widget → phone}/phone-box-widget-filter.component.mjs +1 -1
  136. package/esm2022/widgets/lib/widgets/editors/phone/phone-box-widget-print.component.mjs +19 -0
  137. package/esm2022/widgets/lib/widgets/editors/{phone-box-widget → phone}/phone-box-widget-view.component.mjs +1 -1
  138. package/esm2022/widgets/lib/widgets/editors/phone/phone-box-widget.config.mjs +32 -0
  139. package/esm2022/widgets/lib/widgets/editors/rich-text/index.mjs +7 -0
  140. package/esm2022/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/rich-text-popup.component.mjs +1 -1
  141. package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget-column.component.mjs +46 -0
  142. package/esm2022/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/rich-text-widget-edit.component.mjs +1 -1
  143. package/esm2022/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/rich-text-widget-filter.component.mjs +1 -1
  144. package/esm2022/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/rich-text-widget-print.component.mjs +1 -1
  145. package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget-view.component.mjs +45 -0
  146. package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget.config.mjs +39 -0
  147. package/esm2022/widgets/lib/widgets/editors/select/index.mjs +7 -0
  148. package/esm2022/widgets/lib/widgets/editors/{select-box-widget → select}/select-box-widget-column.component.mjs +1 -1
  149. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-edit.component.mjs +85 -0
  150. package/esm2022/widgets/lib/widgets/editors/{gallery-widget/gallery-widget-print.component.mjs → select/select-box-widget-filter.component.mjs} +5 -5
  151. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-print.component.mjs +19 -0
  152. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-view.component.mjs +60 -0
  153. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget.config.mjs +38 -0
  154. package/esm2022/widgets/lib/widgets/editors/selection-list/index.mjs +7 -0
  155. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-column.component.mjs +41 -0
  156. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-edit.component.mjs +72 -0
  157. package/esm2022/widgets/lib/widgets/editors/{selection-list-widget → selection-list}/selection-list-widget-filter.component.mjs +1 -1
  158. package/esm2022/widgets/lib/widgets/editors/{selection-list-widget → selection-list}/selection-list-widget-print.component.mjs +1 -1
  159. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-view.component.mjs +44 -0
  160. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget.config.mjs +29 -0
  161. package/esm2022/widgets/lib/widgets/editors/text/index.mjs +7 -0
  162. package/esm2022/widgets/lib/widgets/editors/{text-box-widget → text}/text-box-widget-column.component.mjs +1 -1
  163. package/esm2022/widgets/lib/widgets/editors/text/text-box-widget-edit.component.mjs +121 -0
  164. package/esm2022/widgets/lib/widgets/editors/{text-box-widget → text}/text-box-widget-filter.component.mjs +1 -1
  165. package/esm2022/widgets/lib/widgets/editors/{text-box-widget → text}/text-box-widget-print.component.mjs +1 -1
  166. package/esm2022/widgets/lib/widgets/editors/text/text-box-widget-view.component.mjs +47 -0
  167. package/esm2022/widgets/lib/widgets/editors/text/text-box-widget.config.mjs +41 -0
  168. package/esm2022/widgets/lib/widgets/editors/toggle/index.mjs +7 -0
  169. package/esm2022/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-column.component.mjs +1 -1
  170. package/esm2022/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-edit.component.mjs +1 -1
  171. package/esm2022/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-filter.component.mjs +1 -1
  172. package/esm2022/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-print.component.mjs +1 -1
  173. package/esm2022/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-view.component.mjs +1 -1
  174. package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget.config.mjs +40 -0
  175. package/esm2022/widgets/lib/widgets/index.mjs +23 -22
  176. package/esm2022/widgets/lib/widgets/layout/block/block-widget-designer.component.mjs +65 -0
  177. package/esm2022/widgets/lib/widgets/layout/{block-widget → block}/block-widget-view.component.mjs +1 -1
  178. package/esm2022/widgets/lib/widgets/layout/block/block-widget.config.mjs +26 -0
  179. package/esm2022/widgets/lib/widgets/layout/block/index.mjs +4 -0
  180. package/esm2022/widgets/lib/widgets/layout/document/document-widget.config.mjs +13 -0
  181. package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget-designer.component.mjs +56 -0
  182. package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget-view.component.mjs +41 -0
  183. package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget.config.mjs +25 -0
  184. package/esm2022/widgets/lib/widgets/layout/form-field/index.mjs +4 -0
  185. package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-designer.component.mjs +101 -0
  186. package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-print.component.mjs +19 -0
  187. package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-view.component.mjs +18 -0
  188. package/esm2022/widgets/lib/widgets/layout/grid/grid-widget.config.mjs +26 -0
  189. package/esm2022/widgets/lib/widgets/layout/grid/index.mjs +5 -0
  190. package/esm2022/widgets/lib/widgets/layout/page/index.mjs +3 -0
  191. package/esm2022/widgets/lib/widgets/layout/page/page-widget-designer.component.mjs +65 -0
  192. package/esm2022/widgets/lib/widgets/layout/{page-widget → page}/page-widget-view.component.mjs +1 -1
  193. package/esm2022/widgets/lib/widgets/layout/page/page-widget.config.mjs +27 -0
  194. package/esm2022/widgets/lib/widgets/layout/repeater/index.mjs +6 -0
  195. package/esm2022/widgets/lib/widgets/layout/{repeater-widget → repeater}/repeater-widget-designer.component.mjs +1 -1
  196. package/esm2022/widgets/lib/widgets/{editors/link-widget/link-widget-filter.component.mjs → layout/repeater/repeater-widget-edit.component.mjs} +5 -5
  197. package/esm2022/widgets/lib/widgets/layout/{repeater-widget → repeater}/repeater-widget-print.component.mjs +1 -1
  198. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-view.component.mjs +52 -0
  199. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget.config.mjs +24 -0
  200. package/esm2022/widgets/lib/widgets/layout/text-block/index.mjs +3 -0
  201. package/esm2022/widgets/lib/widgets/layout/text-block/text-block-widget-view.component.mjs +29 -0
  202. package/esm2022/widgets/lib/widgets/layout/text-block/text-block-widget.config.mjs +42 -0
  203. package/esm2022/widgets/lib/widgets.module.mjs +17 -3
  204. package/fesm2022/{acorex-platform-common-text-widget-column.component-D-mLfzKJ.mjs → acorex-platform-common-text-widget-column.component-ytX4OqZX.mjs} +3 -3
  205. package/fesm2022/acorex-platform-common-text-widget-column.component-ytX4OqZX.mjs.map +1 -0
  206. package/fesm2022/acorex-platform-common.mjs +21 -17
  207. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  208. package/fesm2022/acorex-platform-layout-builder.mjs +162 -129
  209. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  210. package/fesm2022/acorex-platform-layout-designer-widget-picker.component-CaMaBGON.mjs +100 -0
  211. package/fesm2022/acorex-platform-layout-designer-widget-picker.component-CaMaBGON.mjs.map +1 -0
  212. package/fesm2022/acorex-platform-layout-designer.mjs +484 -272
  213. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  214. package/fesm2022/acorex-platform-layout-entity.mjs +5 -4
  215. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  216. package/fesm2022/{acorex-platform-layouts-entity-create-view.component-B2XtNJo1.mjs → acorex-platform-layouts-entity-create-view.component-C2pYReAo.mjs} +17 -7
  217. package/fesm2022/acorex-platform-layouts-entity-create-view.component-C2pYReAo.mjs.map +1 -0
  218. package/fesm2022/{acorex-platform-layouts-entity-modify-view.component-C9L8cyBm.mjs → acorex-platform-layouts-entity-modify-view.component-Bt4MLEou.mjs} +10 -5
  219. package/fesm2022/acorex-platform-layouts-entity-modify-view.component-Bt4MLEou.mjs.map +1 -0
  220. package/fesm2022/acorex-platform-layouts.mjs +4 -4
  221. package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
  222. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-Cv0mt0pU.mjs → acorex-platform-themes-default-entity-master-create-view.component-DKNRxpQk.mjs} +1 -2
  223. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-DKNRxpQk.mjs.map +1 -0
  224. package/fesm2022/acorex-platform-themes-default.mjs +4 -4
  225. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  226. package/fesm2022/acorex-platform-widgets-page-widget-designer.component-DlfG4EP1.mjs.map +1 -1
  227. package/fesm2022/acorex-platform-widgets-rich-text-popup.component-RCdFIz45.mjs.map +1 -1
  228. package/fesm2022/acorex-platform-widgets.mjs +3796 -3187
  229. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  230. package/layout/builder/lib/builder/builder.service.d.ts +1 -1
  231. package/layout/builder/lib/builder/index.d.ts +6 -5
  232. package/layout/builder/lib/builder/widget-catalog.d.ts +3 -0
  233. package/layout/builder/lib/builder/widget-groups.d.ts +6 -0
  234. package/layout/builder/lib/builder/widget-registery.service.d.ts +1 -1
  235. package/layout/builder/lib/builder/widget.types.d.ts +43 -5
  236. package/layout/designer/index.d.ts +2 -2
  237. package/layout/designer/lib/board/board.component.d.ts +0 -1
  238. package/layout/designer/lib/command.d.ts +70 -0
  239. package/layout/designer/lib/designer/designer.component.d.ts +3 -0
  240. package/layout/designer/lib/designer.service.d.ts +20 -9
  241. package/layout/designer/lib/helpers/grid-drawer/grid-drawer.component.d.ts +19 -0
  242. package/layout/designer/lib/outline/outline.component.d.ts +1 -0
  243. package/layout/designer/lib/pages/pages.component.d.ts +7 -0
  244. package/layout/designer/lib/property-viewer/widget-property-viewer.component.d.ts +1 -0
  245. package/layout/designer/lib/widget-picker/widget-picker.component.d.ts +22 -4
  246. package/layout/entity/lib/widgets/lookup-widget/lookup-widget.config.d.ts +5 -0
  247. package/package.json +7 -7
  248. package/widgets/lib/properties/editors.props.d.ts +4 -1
  249. package/widgets/lib/properties/layout.props.d.ts +4 -0
  250. package/widgets/lib/widgets/actions/button/button-widget.config.d.ts +7 -0
  251. package/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget.config.d.ts +5 -0
  252. package/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget.config.d.ts +5 -0
  253. package/widgets/lib/widgets/advance/map/map-box-widget-edit.component.d.ts +37 -0
  254. package/widgets/lib/widgets/{editors/map-box-widget → advance/map}/map-box-widget.config.d.ts +5 -0
  255. package/widgets/lib/widgets/advance/qrcode/index.d.ts +2 -0
  256. package/widgets/lib/widgets/advance/qrcode/qrcode-widget-view.component.d.ts +12 -0
  257. package/widgets/lib/widgets/advance/qrcode/qrcode-widget.config.d.ts +7 -0
  258. package/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/signature-pad-widget.config.d.ts +5 -0
  259. package/widgets/lib/widgets/editors/checkbox/checkbox-widget.config.d.ts +5 -0
  260. package/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget.config.d.ts +5 -0
  261. package/widgets/lib/widgets/editors/{contact-widget → contact}/contact-widget-edit.component.d.ts +1 -1
  262. package/widgets/lib/widgets/editors/{contact-widget → contact}/contact-widget-view.component.d.ts +1 -1
  263. package/widgets/lib/widgets/editors/contact/contact-widget.config.d.ts +7 -0
  264. package/widgets/lib/widgets/editors/date-time/date-time-box-widget.config.d.ts +7 -0
  265. package/widgets/lib/widgets/editors/{email-box-widget → email}/email-box-widget.config.d.ts +5 -0
  266. package/widgets/lib/widgets/editors/large-text/large-text-widget.config.d.ts +7 -0
  267. package/widgets/lib/widgets/editors/link/link-widget.config.d.ts +7 -0
  268. package/widgets/lib/widgets/editors/{number-box-widget → number}/number-box-widget-edit.component.d.ts +2 -0
  269. package/widgets/lib/widgets/editors/number/number-box-widget.config.d.ts +7 -0
  270. package/widgets/lib/widgets/editors/password/password-box-widget.config.d.ts +7 -0
  271. package/widgets/lib/widgets/editors/{phone-box-widget → phone}/phone-box-widget.config.d.ts +5 -0
  272. package/widgets/lib/widgets/editors/rich-text/rich-text-widget.config.d.ts +7 -0
  273. package/widgets/lib/widgets/editors/select/select-box-widget.config.d.ts +7 -0
  274. package/widgets/lib/widgets/editors/selection-list/selection-list-widget.config.d.ts +7 -0
  275. package/widgets/lib/widgets/editors/{text-box-widget → text}/text-box-widget.config.d.ts +5 -0
  276. package/widgets/lib/widgets/editors/toggle/toggle-widget.config.d.ts +7 -0
  277. package/widgets/lib/widgets/index.d.ts +21 -21
  278. package/widgets/lib/widgets/layout/block/block-widget.config.d.ts +7 -0
  279. package/widgets/lib/widgets/layout/document/document-widget.config.d.ts +7 -0
  280. package/widgets/lib/widgets/layout/form-field/form-field-widget-designer.component.d.ts +7 -0
  281. package/widgets/lib/widgets/layout/form-field/form-field-widget-view.component.d.ts +7 -0
  282. package/widgets/lib/widgets/layout/form-field/form-field-widget.config.d.ts +7 -0
  283. package/widgets/lib/widgets/layout/form-field/index.d.ts +3 -0
  284. package/widgets/lib/widgets/layout/grid/grid-widget-designer.component.d.ts +20 -0
  285. package/widgets/lib/widgets/layout/grid/grid-widget-print.component.d.ts +6 -0
  286. package/widgets/lib/widgets/layout/grid/grid-widget-view.component.d.ts +6 -0
  287. package/widgets/lib/widgets/layout/grid/grid-widget.config.d.ts +7 -0
  288. package/widgets/lib/widgets/layout/grid/index.d.ts +4 -0
  289. package/widgets/lib/widgets/layout/page/page-widget.config.d.ts +7 -0
  290. package/widgets/lib/widgets/layout/repeater/repeater-widget.config.d.ts +7 -0
  291. package/widgets/lib/widgets/layout/text-block/text-block-widget.config.d.ts +7 -0
  292. package/esm2022/layout/builder/lib/builder/layout.types.mjs +0 -30
  293. package/esm2022/layout/designer/lib/designer.module.mjs +0 -16
  294. package/esm2022/layout/designer/lib/history-manager.service.mjs +0 -117
  295. package/esm2022/widgets/lib/widgets/actions/button-widget/button-widget-view.component.mjs +0 -52
  296. package/esm2022/widgets/lib/widgets/actions/button-widget/button-widget.config.mjs +0 -25
  297. package/esm2022/widgets/lib/widgets/actions/button-widget/index.mjs +0 -3
  298. package/esm2022/widgets/lib/widgets/editors/color-box-widget/color-box-widget.config.mjs +0 -34
  299. package/esm2022/widgets/lib/widgets/editors/color-box-widget/index.mjs +0 -7
  300. package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget-column.component.mjs +0 -36
  301. package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget-edit.component.mjs +0 -297
  302. package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget-view.component.mjs +0 -122
  303. package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget.config.mjs +0 -78
  304. package/esm2022/widgets/lib/widgets/editors/contact-widget/contact.type.mjs +0 -2
  305. package/esm2022/widgets/lib/widgets/editors/contact-widget/index.mjs +0 -7
  306. package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-column.component.mjs +0 -44
  307. package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-edit.component.mjs +0 -133
  308. package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-view.component.mjs +0 -54
  309. package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget.config.mjs +0 -38
  310. package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/index.mjs +0 -7
  311. package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget-column.component.mjs +0 -66
  312. package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget-edit.component.mjs +0 -249
  313. package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget.config.mjs +0 -36
  314. package/esm2022/widgets/lib/widgets/editors/email-box-widget/index.mjs +0 -7
  315. package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget-edit.component.mjs +0 -122
  316. package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget-view.component.mjs +0 -215
  317. package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget.config.mjs +0 -48
  318. package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget.service.mjs +0 -3
  319. package/esm2022/widgets/lib/widgets/editors/file-box-widget/index.mjs +0 -8
  320. package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget-types.mjs +0 -2
  321. package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget-view.component.mjs +0 -160
  322. package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget.config.mjs +0 -26
  323. package/esm2022/widgets/lib/widgets/editors/gallery-widget/index.mjs +0 -7
  324. package/esm2022/widgets/lib/widgets/editors/large-text-widget/index.mjs +0 -7
  325. package/esm2022/widgets/lib/widgets/editors/large-text-widget/large-text-widget-print.component.mjs +0 -19
  326. package/esm2022/widgets/lib/widgets/editors/large-text-widget/large-text-widget.config.mjs +0 -37
  327. package/esm2022/widgets/lib/widgets/editors/link-widget/index.mjs +0 -7
  328. package/esm2022/widgets/lib/widgets/editors/link-widget/link-widget-edit.component.mjs +0 -391
  329. package/esm2022/widgets/lib/widgets/editors/link-widget/link-widget.config.mjs +0 -26
  330. package/esm2022/widgets/lib/widgets/editors/map-box-widget/index.mjs +0 -7
  331. package/esm2022/widgets/lib/widgets/editors/map-box-widget/map-box-widget-edit.component.mjs +0 -96
  332. package/esm2022/widgets/lib/widgets/editors/map-box-widget/map-box-widget.config.mjs +0 -28
  333. package/esm2022/widgets/lib/widgets/editors/number-box-widget/index.mjs +0 -7
  334. package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-column.component.mjs +0 -38
  335. package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-edit.component.mjs +0 -151
  336. package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-filter.component.mjs +0 -20
  337. package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-view.component.mjs +0 -56
  338. package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget.config.mjs +0 -37
  339. package/esm2022/widgets/lib/widgets/editors/password-box-widget/index.mjs +0 -7
  340. package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget-column.component.mjs +0 -19
  341. package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget-view.component.mjs +0 -76
  342. package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget.config.mjs +0 -35
  343. package/esm2022/widgets/lib/widgets/editors/phone-box-widget/index.mjs +0 -7
  344. package/esm2022/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-column.component.mjs +0 -66
  345. package/esm2022/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget.config.mjs +0 -29
  346. package/esm2022/widgets/lib/widgets/editors/rich-text-widget/index.mjs +0 -7
  347. package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-column.component.mjs +0 -46
  348. package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-view.component.mjs +0 -45
  349. package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget.config.mjs +0 -37
  350. package/esm2022/widgets/lib/widgets/editors/select-box-widget/index.mjs +0 -7
  351. package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget-edit.component.mjs +0 -85
  352. package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget-filter.component.mjs +0 -19
  353. package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget-view.component.mjs +0 -60
  354. package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget.config.mjs +0 -35
  355. package/esm2022/widgets/lib/widgets/editors/selection-list-widget/index.mjs +0 -7
  356. package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-column.component.mjs +0 -41
  357. package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-edit.component.mjs +0 -72
  358. package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-view.component.mjs +0 -44
  359. package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget.config.mjs +0 -26
  360. package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/index.mjs +0 -7
  361. package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-column.component.mjs +0 -19
  362. package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-edit.component.mjs +0 -142
  363. package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget.config.mjs +0 -34
  364. package/esm2022/widgets/lib/widgets/editors/text-box-widget/index.mjs +0 -7
  365. package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget-edit.component.mjs +0 -119
  366. package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget-view.component.mjs +0 -47
  367. package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget.config.mjs +0 -39
  368. package/esm2022/widgets/lib/widgets/editors/toggle-widget/index.mjs +0 -7
  369. package/esm2022/widgets/lib/widgets/editors/toggle-widget/toggle-widget.config.mjs +0 -37
  370. package/esm2022/widgets/lib/widgets/layout/block-widget/block-widget-designer.component.mjs +0 -65
  371. package/esm2022/widgets/lib/widgets/layout/block-widget/block-widget.config.mjs +0 -27
  372. package/esm2022/widgets/lib/widgets/layout/block-widget/index.mjs +0 -4
  373. package/esm2022/widgets/lib/widgets/layout/page-widget/index.mjs +0 -3
  374. package/esm2022/widgets/lib/widgets/layout/page-widget/page-widget-designer.component.mjs +0 -65
  375. package/esm2022/widgets/lib/widgets/layout/page-widget/page-widget.config.mjs +0 -28
  376. package/esm2022/widgets/lib/widgets/layout/repeater-widget/index.mjs +0 -6
  377. package/esm2022/widgets/lib/widgets/layout/repeater-widget/repeater-widget-view.component.mjs +0 -52
  378. package/esm2022/widgets/lib/widgets/layout/repeater-widget/repeater-widget.config.mjs +0 -21
  379. package/esm2022/widgets/lib/widgets/layout/text-block-widget/index.mjs +0 -3
  380. package/esm2022/widgets/lib/widgets/layout/text-block-widget/text-block-widget-view.component.mjs +0 -29
  381. package/esm2022/widgets/lib/widgets/layout/text-block-widget/text-block-widget.config.mjs +0 -39
  382. package/fesm2022/acorex-platform-common-text-widget-column.component-D-mLfzKJ.mjs.map +0 -1
  383. package/fesm2022/acorex-platform-layout-designer-widget-picker.component-DkZGbnkz.mjs +0 -26
  384. package/fesm2022/acorex-platform-layout-designer-widget-picker.component-DkZGbnkz.mjs.map +0 -1
  385. package/fesm2022/acorex-platform-layouts-entity-create-view.component-B2XtNJo1.mjs.map +0 -1
  386. package/fesm2022/acorex-platform-layouts-entity-modify-view.component-C9L8cyBm.mjs.map +0 -1
  387. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cv0mt0pU.mjs.map +0 -1
  388. package/layout/builder/lib/builder/layout.types.d.ts +0 -1
  389. package/layout/designer/lib/designer.module.d.ts +0 -6
  390. package/layout/designer/lib/history-manager.service.d.ts +0 -31
  391. package/widgets/lib/widgets/actions/button-widget/button-widget.config.d.ts +0 -2
  392. package/widgets/lib/widgets/editors/contact-widget/contact-widget.config.d.ts +0 -2
  393. package/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget.config.d.ts +0 -2
  394. package/widgets/lib/widgets/editors/large-text-widget/large-text-widget.config.d.ts +0 -2
  395. package/widgets/lib/widgets/editors/link-widget/link-widget.config.d.ts +0 -2
  396. package/widgets/lib/widgets/editors/map-box-widget/map-box-widget-edit.component.d.ts +0 -15
  397. package/widgets/lib/widgets/editors/number-box-widget/number-box-widget.config.d.ts +0 -2
  398. package/widgets/lib/widgets/editors/password-box-widget/password-box-widget.config.d.ts +0 -2
  399. package/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget.config.d.ts +0 -2
  400. package/widgets/lib/widgets/editors/select-box-widget/select-box-widget.config.d.ts +0 -2
  401. package/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget.config.d.ts +0 -2
  402. package/widgets/lib/widgets/editors/toggle-widget/toggle-widget.config.d.ts +0 -2
  403. package/widgets/lib/widgets/layout/block-widget/block-widget.config.d.ts +0 -2
  404. package/widgets/lib/widgets/layout/page-widget/page-widget.config.d.ts +0 -2
  405. package/widgets/lib/widgets/layout/repeater-widget/repeater-widget.config.d.ts +0 -2
  406. package/widgets/lib/widgets/layout/text-block-widget/text-block-widget.config.d.ts +0 -2
  407. /package/layout/designer/lib/{buttons → helpers}/add-widget-button/add-widget-button.component.d.ts +0 -0
  408. /package/widgets/lib/widgets/actions/{button-widget → button}/button-widget-view.component.d.ts +0 -0
  409. /package/widgets/lib/widgets/actions/{button-widget → button}/index.d.ts +0 -0
  410. /package/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget-column.component.d.ts +0 -0
  411. /package/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget-edit.component.d.ts +0 -0
  412. /package/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget-filter.component.d.ts +0 -0
  413. /package/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget-print.component.d.ts +0 -0
  414. /package/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget-view.component.d.ts +0 -0
  415. /package/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget.service.d.ts +0 -0
  416. /package/widgets/lib/widgets/{editors/file-box-widget → advance/file}/index.d.ts +0 -0
  417. /package/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget-column.component.d.ts +0 -0
  418. /package/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget-edit.component.d.ts +0 -0
  419. /package/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget-filter.component.d.ts +0 -0
  420. /package/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget-print.component.d.ts +0 -0
  421. /package/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget-types.d.ts +0 -0
  422. /package/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget-view.component.d.ts +0 -0
  423. /package/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/index.d.ts +0 -0
  424. /package/widgets/lib/widgets/{editors/map-box-widget → advance/map}/index.d.ts +0 -0
  425. /package/widgets/lib/widgets/{editors/map-box-widget → advance/map}/map-box-widget-column.component.d.ts +0 -0
  426. /package/widgets/lib/widgets/{editors/map-box-widget → advance/map}/map-box-widget-filter.component.d.ts +0 -0
  427. /package/widgets/lib/widgets/{editors/map-box-widget → advance/map}/map-box-widget-print.component.d.ts +0 -0
  428. /package/widgets/lib/widgets/{editors/map-box-widget → advance/map}/map-box-widget-view.component.d.ts +0 -0
  429. /package/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/index.d.ts +0 -0
  430. /package/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/signature-pad-widget-column.component.d.ts +0 -0
  431. /package/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/signature-pad-widget-edit.component.d.ts +0 -0
  432. /package/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/signature-pad-widget-filter.component.d.ts +0 -0
  433. /package/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/signature-pad-widget-print.component.d.ts +0 -0
  434. /package/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/signature-pad-widget-view.component.d.ts +0 -0
  435. /package/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget-column.component.d.ts +0 -0
  436. /package/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget-edit.component.d.ts +0 -0
  437. /package/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget-filter.component.d.ts +0 -0
  438. /package/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget-print.component.d.ts +0 -0
  439. /package/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget-view.component.d.ts +0 -0
  440. /package/widgets/lib/widgets/editors/{color-box-widget → color}/index.d.ts +0 -0
  441. /package/widgets/lib/widgets/editors/{contact-widget → contact}/contact-widget-column.component.d.ts +0 -0
  442. /package/widgets/lib/widgets/editors/{contact-widget → contact}/contact-widget-filter.component.d.ts +0 -0
  443. /package/widgets/lib/widgets/editors/{contact-widget → contact}/contact-widget-print.component.d.ts +0 -0
  444. /package/widgets/lib/widgets/editors/{contact-widget → contact}/contact.type.d.ts +0 -0
  445. /package/widgets/lib/widgets/editors/{contact-widget → contact}/index.d.ts +0 -0
  446. /package/widgets/lib/widgets/editors/{contact-widget → contact}/popup-component.d.ts +0 -0
  447. /package/widgets/lib/widgets/editors/{date-time-box-widget → date-time}/date-time-box-widget-column.component.d.ts +0 -0
  448. /package/widgets/lib/widgets/editors/{date-time-box-widget → date-time}/date-time-box-widget-edit.component.d.ts +0 -0
  449. /package/widgets/lib/widgets/editors/{date-time-box-widget → date-time}/date-time-box-widget-filter.component.d.ts +0 -0
  450. /package/widgets/lib/widgets/editors/{date-time-box-widget → date-time}/date-time-box-widget-print.component.d.ts +0 -0
  451. /package/widgets/lib/widgets/editors/{date-time-box-widget → date-time}/date-time-box-widget-view.component.d.ts +0 -0
  452. /package/widgets/lib/widgets/editors/{date-time-box-widget → date-time}/index.d.ts +0 -0
  453. /package/widgets/lib/widgets/editors/{email-box-widget → email}/email-box-widget-column.component.d.ts +0 -0
  454. /package/widgets/lib/widgets/editors/{email-box-widget → email}/email-box-widget-edit.component.d.ts +0 -0
  455. /package/widgets/lib/widgets/editors/{email-box-widget → email}/email-box-widget-filter.component.d.ts +0 -0
  456. /package/widgets/lib/widgets/editors/{email-box-widget → email}/email-box-widget-print.component.d.ts +0 -0
  457. /package/widgets/lib/widgets/editors/{email-box-widget → email}/email-box-widget-view.component.d.ts +0 -0
  458. /package/widgets/lib/widgets/editors/{email-box-widget → email}/index.d.ts +0 -0
  459. /package/widgets/lib/widgets/editors/{large-text-widget → large-text}/index.d.ts +0 -0
  460. /package/widgets/lib/widgets/editors/{large-text-widget → large-text}/large-text-widget-column.component.d.ts +0 -0
  461. /package/widgets/lib/widgets/editors/{large-text-widget → large-text}/large-text-widget-edit.component.d.ts +0 -0
  462. /package/widgets/lib/widgets/editors/{large-text-widget → large-text}/large-text-widget-filter.component.d.ts +0 -0
  463. /package/widgets/lib/widgets/editors/{large-text-widget → large-text}/large-text-widget-print.component.d.ts +0 -0
  464. /package/widgets/lib/widgets/editors/{large-text-widget → large-text}/large-text-widget-view.component.d.ts +0 -0
  465. /package/widgets/lib/widgets/editors/{link-widget → link}/index.d.ts +0 -0
  466. /package/widgets/lib/widgets/editors/{link-widget → link}/link-widget-column.component.d.ts +0 -0
  467. /package/widgets/lib/widgets/editors/{link-widget → link}/link-widget-edit.component.d.ts +0 -0
  468. /package/widgets/lib/widgets/editors/{link-widget → link}/link-widget-filter.component.d.ts +0 -0
  469. /package/widgets/lib/widgets/editors/{link-widget → link}/link-widget-print.component.d.ts +0 -0
  470. /package/widgets/lib/widgets/editors/{link-widget → link}/link-widget-view.component.d.ts +0 -0
  471. /package/widgets/lib/widgets/editors/{number-box-widget → number}/index.d.ts +0 -0
  472. /package/widgets/lib/widgets/editors/{number-box-widget → number}/number-box-widget-column.component.d.ts +0 -0
  473. /package/widgets/lib/widgets/editors/{number-box-widget → number}/number-box-widget-filter.component.d.ts +0 -0
  474. /package/widgets/lib/widgets/editors/{number-box-widget → number}/number-box-widget-print.component.d.ts +0 -0
  475. /package/widgets/lib/widgets/editors/{number-box-widget → number}/number-box-widget-view.component.d.ts +0 -0
  476. /package/widgets/lib/widgets/editors/{password-box-widget → password}/index.d.ts +0 -0
  477. /package/widgets/lib/widgets/editors/{password-box-widget → password}/password-box-widget-column.component.d.ts +0 -0
  478. /package/widgets/lib/widgets/editors/{password-box-widget → password}/password-box-widget-edit.component.d.ts +0 -0
  479. /package/widgets/lib/widgets/editors/{password-box-widget → password}/password-box-widget-filter.component.d.ts +0 -0
  480. /package/widgets/lib/widgets/editors/{password-box-widget → password}/password-box-widget-print.component.d.ts +0 -0
  481. /package/widgets/lib/widgets/editors/{password-box-widget → password}/password-box-widget-view.component.d.ts +0 -0
  482. /package/widgets/lib/widgets/editors/{phone-box-widget → phone}/index.d.ts +0 -0
  483. /package/widgets/lib/widgets/editors/{phone-box-widget → phone}/phone-box-widget-column.component.d.ts +0 -0
  484. /package/widgets/lib/widgets/editors/{phone-box-widget → phone}/phone-box-widget-edit.component.d.ts +0 -0
  485. /package/widgets/lib/widgets/editors/{phone-box-widget → phone}/phone-box-widget-filter.component.d.ts +0 -0
  486. /package/widgets/lib/widgets/editors/{phone-box-widget → phone}/phone-box-widget-print.component.d.ts +0 -0
  487. /package/widgets/lib/widgets/editors/{phone-box-widget → phone}/phone-box-widget-view.component.d.ts +0 -0
  488. /package/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/index.d.ts +0 -0
  489. /package/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/rich-text-popup.component.d.ts +0 -0
  490. /package/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/rich-text-widget-column.component.d.ts +0 -0
  491. /package/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/rich-text-widget-edit.component.d.ts +0 -0
  492. /package/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/rich-text-widget-filter.component.d.ts +0 -0
  493. /package/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/rich-text-widget-print.component.d.ts +0 -0
  494. /package/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/rich-text-widget-view.component.d.ts +0 -0
  495. /package/widgets/lib/widgets/editors/{select-box-widget → select}/index.d.ts +0 -0
  496. /package/widgets/lib/widgets/editors/{select-box-widget → select}/select-box-widget-column.component.d.ts +0 -0
  497. /package/widgets/lib/widgets/editors/{select-box-widget → select}/select-box-widget-edit.component.d.ts +0 -0
  498. /package/widgets/lib/widgets/editors/{select-box-widget → select}/select-box-widget-filter.component.d.ts +0 -0
  499. /package/widgets/lib/widgets/editors/{select-box-widget → select}/select-box-widget-print.component.d.ts +0 -0
  500. /package/widgets/lib/widgets/editors/{select-box-widget → select}/select-box-widget-view.component.d.ts +0 -0
  501. /package/widgets/lib/widgets/editors/{selection-list-widget → selection-list}/index.d.ts +0 -0
  502. /package/widgets/lib/widgets/editors/{selection-list-widget → selection-list}/selection-list-widget-column.component.d.ts +0 -0
  503. /package/widgets/lib/widgets/editors/{selection-list-widget → selection-list}/selection-list-widget-edit.component.d.ts +0 -0
  504. /package/widgets/lib/widgets/editors/{selection-list-widget → selection-list}/selection-list-widget-filter.component.d.ts +0 -0
  505. /package/widgets/lib/widgets/editors/{selection-list-widget → selection-list}/selection-list-widget-print.component.d.ts +0 -0
  506. /package/widgets/lib/widgets/editors/{selection-list-widget → selection-list}/selection-list-widget-view.component.d.ts +0 -0
  507. /package/widgets/lib/widgets/editors/{text-box-widget → text}/index.d.ts +0 -0
  508. /package/widgets/lib/widgets/editors/{text-box-widget → text}/text-box-widget-column.component.d.ts +0 -0
  509. /package/widgets/lib/widgets/editors/{text-box-widget → text}/text-box-widget-edit.component.d.ts +0 -0
  510. /package/widgets/lib/widgets/editors/{text-box-widget → text}/text-box-widget-filter.component.d.ts +0 -0
  511. /package/widgets/lib/widgets/editors/{text-box-widget → text}/text-box-widget-print.component.d.ts +0 -0
  512. /package/widgets/lib/widgets/editors/{text-box-widget → text}/text-box-widget-view.component.d.ts +0 -0
  513. /package/widgets/lib/widgets/editors/{toggle-widget → toggle}/index.d.ts +0 -0
  514. /package/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-column.component.d.ts +0 -0
  515. /package/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-edit.component.d.ts +0 -0
  516. /package/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-filter.component.d.ts +0 -0
  517. /package/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-print.component.d.ts +0 -0
  518. /package/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-view.component.d.ts +0 -0
  519. /package/widgets/lib/widgets/layout/{block-widget → block}/block-widget-designer.component.d.ts +0 -0
  520. /package/widgets/lib/widgets/layout/{block-widget → block}/block-widget-view.component.d.ts +0 -0
  521. /package/widgets/lib/widgets/layout/{block-widget → block}/index.d.ts +0 -0
  522. /package/widgets/lib/widgets/layout/{page-widget → page}/index.d.ts +0 -0
  523. /package/widgets/lib/widgets/layout/{page-widget → page}/page-widget-designer.component.d.ts +0 -0
  524. /package/widgets/lib/widgets/layout/{page-widget → page}/page-widget-view.component.d.ts +0 -0
  525. /package/widgets/lib/widgets/layout/{repeater-widget → repeater}/index.d.ts +0 -0
  526. /package/widgets/lib/widgets/layout/{repeater-widget → repeater}/repeater-widget-designer.component.d.ts +0 -0
  527. /package/widgets/lib/widgets/layout/{repeater-widget → repeater}/repeater-widget-edit.component.d.ts +0 -0
  528. /package/widgets/lib/widgets/layout/{repeater-widget → repeater}/repeater-widget-print.component.d.ts +0 -0
  529. /package/widgets/lib/widgets/layout/{repeater-widget → repeater}/repeater-widget-view.component.d.ts +0 -0
  530. /package/widgets/lib/widgets/layout/{text-block-widget → text-block}/index.d.ts +0 -0
  531. /package/widgets/lib/widgets/layout/{text-block-widget → text-block}/text-block-widget-view.component.d.ts +0 -0
@@ -1,8 +1,8 @@
1
1
  export * from './lib/board/board.component';
2
- export * from './lib/buttons/add-widget-button/add-widget-button.component';
3
- export * from './lib/designer.module';
2
+ export * from './lib/helpers/add-widget-button/add-widget-button.component';
3
+ export * from './lib/helpers/grid-drawer/grid-drawer.component';
4
4
  export * from './lib/designer.service';
5
5
  export * from './lib/designer/designer.component';
6
6
  export * from './lib/property-viewer/widget-property-viewer.component';
7
7
  export * from './lib/widget-designer-renderer.component';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDZEQUE2RCxDQUFDO0FBQzVFLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYywwQ0FBMEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2JvYXJkL2JvYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9idXR0b25zL2FkZC13aWRnZXQtYnV0dG9uL2FkZC13aWRnZXQtYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kZXNpZ25lci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGVzaWduZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kZXNpZ25lci9kZXNpZ25lci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvcGVydHktdmlld2VyL3dpZGdldC1wcm9wZXJ0eS12aWV3ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dpZGdldC1kZXNpZ25lci1yZW5kZXJlci5jb21wb25lbnQnO1xuIl19
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDZEQUE2RCxDQUFDO0FBQzVFLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYywwQ0FBMEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2JvYXJkL2JvYXJkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9oZWxwZXJzL2FkZC13aWRnZXQtYnV0dG9uL2FkZC13aWRnZXQtYnV0dG9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9oZWxwZXJzL2dyaWQtZHJhd2VyL2dyaWQtZHJhd2VyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kZXNpZ25lci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Rlc2lnbmVyL2Rlc2lnbmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcm9wZXJ0eS12aWV3ZXIvd2lkZ2V0LXByb3BlcnR5LXZpZXdlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvd2lkZ2V0LWRlc2lnbmVyLXJlbmRlcmVyLmNvbXBvbmVudCc7XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
2
2
  import { CommonModule } from '@angular/common';
3
- import { Component, inject, ViewEncapsulation, ChangeDetectionStrategy, HostListener, computed, effect, ElementRef } from '@angular/core';
3
+ import { Component, inject, ViewEncapsulation, ChangeDetectionStrategy, computed, effect, ElementRef } from '@angular/core';
4
4
  import { AXPWidgetDesignerRendererComponent } from '../widget-designer-renderer.component';
5
5
  import { AXPDesignerService } from '../designer.service';
6
6
  import { get } from 'lodash-es';
@@ -78,40 +78,8 @@ export class AXPDesignerBoardComponent {
78
78
  removeCustomClass() {
79
79
  this.elementRef.nativeElement.querySelectorAll('style').forEach(s => s.remove());
80
80
  }
81
- handleKeyboardEvent(event) {
82
- if (event.ctrlKey) {
83
- switch (event.key.toLowerCase()) { // Convert the key to lowercase to ensure case insensitivity
84
- case 'z':
85
- event.preventDefault(); // Prevent the browser's default undo action
86
- this.service.undo();
87
- break;
88
- case 'y':
89
- event.preventDefault(); // Prevent the browser's default redo action
90
- this.service.redo();
91
- break;
92
- case 'c':
93
- if (this.service.canCutCopy()) {
94
- event.preventDefault(); // Prevent the browser's default copy action
95
- this.service.copy();
96
- }
97
- break;
98
- case 'x':
99
- if (this.service.canCutCopy()) {
100
- event.preventDefault(); // Prevent the browser's default cut action
101
- this.service.cut();
102
- }
103
- break;
104
- case 'v':
105
- if (this.service.canPaste()) {
106
- event.preventDefault(); // Prevent the browser's default paste action
107
- this.service.paste();
108
- }
109
- break;
110
- }
111
- }
112
- }
113
81
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerBoardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
114
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXPDesignerBoardComponent, isStandalone: true, selector: "axp-designer-board", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, ngImport: i0, template: "<div class=\"axp-designer-board axp-state-design axp-preview-{{service.size()}}\" [style.width]=\"width()\">\n <axp-widgets-container [(context)]=\"context\">\n <axp-widget-designer-renderer [node]=\"service.root()\" [mode]=\"service.mode()\">\n </axp-widget-designer-renderer>\n </axp-widgets-container>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i1.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "variables", "functions"], outputs: ["onChanged", "contextChange"] }, { kind: "component", type: AXPWidgetDesignerRendererComponent, selector: "axp-widget-designer-renderer", inputs: ["parentNode", "index", "mode", "node"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
82
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXPDesignerBoardComponent, isStandalone: true, selector: "axp-designer-board", ngImport: i0, template: "<div class=\"axp-designer-board axp-state-design axp-preview-{{service.size()}}\" [style.width]=\"width()\">\n <axp-widgets-container [(context)]=\"context\">\n <axp-widget-designer-renderer [node]=\"service.currentPage()\" [mode]=\"service.mode()\">\n </axp-widget-designer-renderer>\n </axp-widgets-container>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i1.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "variables", "functions"], outputs: ["onChanged", "contextChange"] }, { kind: "component", type: AXPWidgetDesignerRendererComponent, selector: "axp-widget-designer-renderer", inputs: ["parentNode", "index", "mode", "node"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
115
83
  }
116
84
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerBoardComponent, decorators: [{
117
85
  type: Component,
@@ -119,9 +87,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
119
87
  CommonModule,
120
88
  AXPLayoutBuilderModule,
121
89
  AXPWidgetDesignerRendererComponent
122
- ], template: "<div class=\"axp-designer-board axp-state-design axp-preview-{{service.size()}}\" [style.width]=\"width()\">\n <axp-widgets-container [(context)]=\"context\">\n <axp-widget-designer-renderer [node]=\"service.root()\" [mode]=\"service.mode()\">\n </axp-widget-designer-renderer>\n </axp-widgets-container>\n</div>" }]
123
- }], propDecorators: { handleKeyboardEvent: [{
124
- type: HostListener,
125
- args: ['document:keydown', ['$event']]
126
- }] } });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9ib2FyZC9ib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL2JvYXJkL2JvYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBZSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkosT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBZWhDLE1BQU0sT0FBTyx5QkFBeUI7SUFadEM7UUFjYyxZQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLGVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUEwQixDQUFBLENBQStCLENBQUM7UUFFOUUsa0JBQWEsR0FBRztZQUNwQixJQUFJLEVBQUUsR0FBRztZQUNULElBQUksRUFBRSxHQUFHO1lBQ1QsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUUsSUFBSTtZQUNWLEtBQUssRUFBRSxJQUFJO1NBQ2QsQ0FBQztRQWtEUSxZQUFPLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFHckMsVUFBSyxHQUFH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QztvQkFDRCxNQUFNO2dCQUNWLEtBQUssR0FBRztvQkFDSixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQzt3QkFDMUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUUsNkNBQTZDO3dCQUN0RSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUN6QixDQUFDO29CQUNELE1BQU07WUFDZCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7OEdBckhRLHlCQUF5QjtrR0FBekIseUJBQXlCLDBKQ3BCdEMsOFVBS00sMkNEVUUsWUFBWSw4QkFDWixzQkFBc0IsdU5BQ3RCLGtDQUFrQzs7MkZBRzdCLHlCQUF5QjtrQkFackMsU0FBUzsrQkFDSSxvQkFBb0IsaUJBRWYsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixzQkFBc0I7d0JBQ3RCLGtDQUFrQztxQkFDckM7OEJBd0ZPLG1CQUFtQjtzQkFEMUIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgVmlld0VuY2Fwc3VsYXRpb24sIEhvc3RCaW5kaW5nLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSG9zdExpc3RlbmVyLCBjb21wdXRlZCwgZWZmZWN0LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXREZXNpZ25lclJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vd2lkZ2V0LWRlc2lnbmVyLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lclNlcnZpY2UgfSBmcm9tICcuLi9kZXNpZ25lci5zZXJ2aWNlJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheHAtZGVzaWduZXItYm9hcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ib2FyZC5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBBWFBMYXlvdXRCdWlsZGVyTW9kdWxlLFxuICAgICAgICBBWFBXaWRnZXREZXNpZ25lclJlbmRlcmVyQ29tcG9uZW50XG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQRGVzaWduZXJCb2FyZENvbXBvbmVudCB7XG5cbiAgICBwcm90ZWN0ZWQgY29udGV4dDogYW55ID0ge307XG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+KSBhcyBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIHByaXZhdGUgYnJlYWtwb2ludE1hcCA9IHtcbiAgICAgICAgJ3NtJzogNjQwLFxuICAgICAgICAnbWQnOiA3NjgsXG4gICAgICAgICdsZyc6IDEwMjQsXG4gICAgICAgICd4bCc6IDEyODAsXG4gICAgICAgICd4eGwnOiAxNTM2XG4gICAgfTtcblxuICAgIC8vIFVuaWZpZWQgbWV0aG9kIHRvIGV4dHJhY3QgbWVkaWEgcXVlcmllcyBhbmQgY3JlYXRlIGEgY3VzdG9tIGNsYXNzXG4gICAgYXBwbHlSZXNwb25zaXZlU3R5bGVzKGJyZWFrcG9pbnQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBtaW5XaWR0aCA9IGdldCh0aGlzLmJyZWFrcG9pbnRNYXAsIGJyZWFrcG9pbnQpIGFzIG51bWJlcjtcbiAgICAgICAgY29uc3QgbWVkaWFSdWxlcyA9IFtdO1xuXG4gICAgICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIHN0eWxlc2hlZXRzXG4gICAgICAgIGZvciAobGV0IHNoZWV0IG9mIEFycmF5LmZyb20oZG9jdW1lbnQuc3R5bGVTaGVldHMpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIC8vIExvb3AgdGhyb3VnaCBDU1MgcnVsZXNcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBydWxlIG9mIEFycmF5LmZyb20oc2hlZXQuY3NzUnVsZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBydWxlIGlzIGEgQ1NTTWVkaWFSdWxlXG4gICAgICAgICAgICAgICAgICAgIGlmIChydWxlIGluc3RhbmNlb2YgQ1NTTWVkaWFSdWxlICYmIHJ1bGUubWVkaWEubWVkaWFUZXh0LmluY2x1ZGVzKGBtaW4td2lkdGg6ICR7bWluV2lkdGh9cHhgKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTG9vcCB0aHJvdWdoIHRoZSBtZWRpYSBydWxlJ3MgQ1NTIHJ1bGVzXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBzdWJSdWxlIG9mIEFycmF5LmZyb20ocnVsZS5jc3NSdWxlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWRpYVJ1bGVzLnB1c2goc3ViUnVsZS5jc3NUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBhY2Nlc3Npbmcgc3R5bGVzaGVldDonLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBhIGR5bmFtaWMgY2xhc3MgZm9yIHRoZSBtZWRpYSBxdWVyaWVzXG4gICAgICAgIHRoaXMuY3JlYXRlQ3VzdG9tQ2xhc3MoYGF4cC1wcmV2aWV3LSR7YnJlYWtwb2ludH1gLCBtZWRpYVJ1bGVzLCBicmVha3BvaW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUN1c3RvbUNsYXNzKGNsYXNzTmFtZTogc3RyaW5nLCBzdHlsZXM6IHN0cmluZ1tdLCBicmVha3BvaW50OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qgc3R5bGVTaGVldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgIHN0eWxlU2hlZXQuc2V0QXR0cmlidXRlKFwiZGF0YS1zY3JlZW5cIiwgYnJlYWtwb2ludCk7XG5cbiAgICAgICAgLy8gQ29uc3RydWN0IGEgcHVyZSBDU1Mgc3RyaW5nLCBkeW5hbWljYWxseSByZXBsYWNpbmcgdGhlIGJyZWFrcG9pbnQgcHJlZml4XG4gICAgICAgIGxldCBzdHlsZVN0cmluZyA9IFwiXCI7XG4gICAgICAgIHN0eWxlcy5mb3JFYWNoKHN0eWxlID0+IHtcbiAgICAgICAgICAgIC8vIFJlcGxhY2UgYW55IHByZWZpeGVkIGNsYXNzZXMgbGlrZSAnbGc6JyBvciAnbWQ6JyBkeW5hbWljYWxseVxuICAgICAgICAgICAgY29uc3QgZHluYW1pY1ByZWZpeCA9IG5ldyBSZWdFeHAoYFxcXFwuJHticmVha3BvaW50fVxcXFxcXFxcOmAsICdnJyk7XG4gICAgICAgICAgICBzdHlsZVN0cmluZyArPSBgLiR7Y2xhc3NOYW1lfSAke3N0eWxlLnJlcGxhY2UoZHluYW1pY1ByZWZpeCwgJy4nKX1gOyAvLyBSZXBsYWNlIHRoZSBicmVha3BvaW50IHByZWZpeFxuICAgICAgICB9KTtcblxuICAgICAgICBzdHlsZVNoZWV0LmlubmVyVGV4dCA9IHN0eWxlU3RyaW5nO1xuICAgICAgICB0aGlzLnJlbW92ZUN1c3RvbUNsYXNzKCk7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHN0eWxlU2hlZXQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlQ3VzdG9tQ2xhc3MoKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3N0eWxlJykuZm9yRWFjaChzID0+IHMucmVtb3ZlKCkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXJ2aWNlID0gaW5qZWN0KEFYUERlc2lnbmVyU2VydmljZSk7XG5cblxuICAgIHByb3RlY3RlZCB3aWR0aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgc3dpdGNoICh0aGlzLnNlcnZpY2Uuc2l6ZSgpKSB7XG4gICAgICAgICAgICBjYXNlICdzbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICczNDBweCc7XG4gICAgICAgICAgICBjYXNlICdtZCc6XG4gICAgICAgICAgICBjYXNlICdsZyc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICc3NjhweCc7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAnMTAwJSc7XG4gICAgICAgIH1cbiAgICB9KTtcblxuXG4gICAgcHJpdmF0ZSBlZiA9IGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVtb3ZlQ3VzdG9tQ2xhc3MoKTtcbiAgICAgICAgaWYgKHRoaXMuc2VydmljZS5zaXplKCkgIT0gJ3hsJykge1xuICAgICAgICAgICAgdGhpcy5hcHBseVJlc3BvbnNpdmVTdHlsZXModGhpcy5zZXJ2aWNlLnNpemUoKSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgcHJpdmF0ZSBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5jdHJsS2V5KSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpKSB7IC8vIENvbnZlcnQgdGhlIGtleSB0byBsb3dlcmNhc2UgdG8gZW5zdXJlIGNhc2UgaW5zZW5zaXRpdml0eVxuICAgICAgICAgICAgICAgIGNhc2UgJ3onOlxuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAgLy8gUHJldmVudCB0aGUgYnJvd3NlcidzIGRlZmF1bHQgdW5kbyBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnVuZG8oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICAvLyBQcmV2ZW50IHRoZSBicm93c2VyJ3MgZGVmYXVsdCByZWRvIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UucmVkbygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdjJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VydmljZS5jYW5DdXRDb3B5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICAvLyBQcmV2ZW50IHRoZSBicm93c2VyJ3MgZGVmYXVsdCBjb3B5IGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmNvcHkoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd4JzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VydmljZS5jYW5DdXRDb3B5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICAvLyBQcmV2ZW50IHRoZSBicm93c2VyJ3MgZGVmYXVsdCBjdXQgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UuY3V0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAndic6XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlcnZpY2UuY2FuUGFzdGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgIC8vIFByZXZlbnQgdGhlIGJyb3dzZXIncyBkZWZhdWx0IHBhc3RlIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnBhc3RlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJheHAtZGVzaWduZXItYm9hcmQgYXhwLXN0YXRlLWRlc2lnbiBheHAtcHJldmlldy17e3NlcnZpY2Uuc2l6ZSgpfX1cIiBbc3R5bGUud2lkdGhdPVwid2lkdGgoKVwiPlxuICAgIDxheHAtd2lkZ2V0cy1jb250YWluZXIgWyhjb250ZXh0KV09XCJjb250ZXh0XCI+XG4gICAgICAgIDxheHAtd2lkZ2V0LWRlc2lnbmVyLXJlbmRlcmVyIFtub2RlXT1cInNlcnZpY2Uucm9vdCgpXCIgW21vZGVdPVwic2VydmljZS5tb2RlKClcIj5cbiAgICAgICAgPC9heHAtd2lkZ2V0LWRlc2lnbmVyLXJlbmRlcmVyPlxuICAgIDwvYXhwLXdpZGdldHMtY29udGFpbmVyPlxuPC9kaXY+Il19
90
+ ], template: "<div class=\"axp-designer-board axp-state-design axp-preview-{{service.size()}}\" [style.width]=\"width()\">\n <axp-widgets-container [(context)]=\"context\">\n <axp-widget-designer-renderer [node]=\"service.currentPage()\" [mode]=\"service.mode()\">\n </axp-widget-designer-renderer>\n </axp-widgets-container>\n</div>" }]
91
+ }] });
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9ib2FyZC9ib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL2JvYXJkL2JvYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBZ0IsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBaUJoQyxNQUFNLE9BQU8seUJBQXlCO0lBWnRDO1FBY2MsWUFBTyxHQUFRLEVBQUUsQ0FBQztRQUNwQixlQUFVLEdBQUcsTUFBTSxDQUFDLENBQUEsVUFBMEIsQ0FBQSxDQUErQixDQUFDO1FBRTlFLGtCQUFhLEdBQUc7WUFDcEIsSUFBSSxFQUFFLEdBQUc7WUFDVCxJQUFJLEVBQUUsR0FBRztZQUNULElBQUksRUFBRSxJQUFJO1lBQ1YsSUFBSSxFQUFFLElBQUk7WUFDVixLQUFLLEVBQUUsSUFBSTtTQUNkLENBQUM7UUFrRFEsWUFBTyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBR3JDLFVBQUssR0FBRyxRQUFRLENB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VUFBVSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNyRixDQUFDOzhHQTNEUSx5QkFBeUI7a0dBQXpCLHlCQUF5Qiw4RUN0QnRDLHFWQUtNLDJDRFlFLFlBQVksOEJBQ1osc0JBQXNCLHVOQUN0QixrQ0FBa0M7OzJGQUc3Qix5QkFBeUI7a0JBWnJDLFNBQVM7K0JBQ0ksb0JBQW9CLGlCQUVmLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osc0JBQXNCO3dCQUN0QixrQ0FBa0M7cUJBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEhvc3RMaXN0ZW5lciwgY29tcHV0ZWQsIGVmZmVjdCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0RGVzaWduZXJSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4uL3dpZGdldC1kZXNpZ25lci1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZGVzaWduZXIuc2VydmljZSc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IGh0bWwyY2FudmFzIGZyb20gJ2h0bWwyY2FudmFzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWVyZ2UgfSBmcm9tICdyeGpzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2F4cC1kZXNpZ25lci1ib2FyZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JvYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEFYUExheW91dEJ1aWxkZXJNb2R1bGUsXG4gICAgICAgIEFYUFdpZGdldERlc2lnbmVyUmVuZGVyZXJDb21wb25lbnRcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBEZXNpZ25lckJvYXJkQ29tcG9uZW50IHtcblxuICAgIHByb3RlY3RlZCBjb250ZXh0OiBhbnkgPSB7fTtcbiAgICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4pIGFzIEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgcHJpdmF0ZSBicmVha3BvaW50TWFwID0ge1xuICAgICAgICAnc20nOiA2NDAsXG4gICAgICAgICdtZCc6IDc2OCxcbiAgICAgICAgJ2xnJzogMTAyNCxcbiAgICAgICAgJ3hsJzogMTI4MCxcbiAgICAgICAgJ3h4bCc6IDE1MzZcbiAgICB9O1xuXG4gICAgLy8gVW5pZmllZCBtZXRob2QgdG8gZXh0cmFjdCBtZWRpYSBxdWVyaWVzIGFuZCBjcmVhdGUgYSBjdXN0b20gY2xhc3NcbiAgICBhcHBseVJlc3BvbnNpdmVTdHlsZXMoYnJlYWtwb2ludDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IG1pbldpZHRoID0gZ2V0KHRoaXMuYnJlYWtwb2ludE1hcCwgYnJlYWtwb2ludCkgYXMgbnVtYmVyO1xuICAgICAgICBjb25zdCBtZWRpYVJ1bGVzID0gW107XG5cbiAgICAgICAgLy8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgc3R5bGVzaGVldHNcbiAgICAgICAgZm9yIChsZXQgc2hlZXQgb2YgQXJyYXkuZnJvbShkb2N1bWVudC5zdHlsZVNoZWV0cykpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgLy8gTG9vcCB0aHJvdWdoIENTUyBydWxlc1xuICAgICAgICAgICAgICAgIGZvciAobGV0IHJ1bGUgb2YgQXJyYXkuZnJvbShzaGVldC5jc3NSdWxlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHJ1bGUgaXMgYSBDU1NNZWRpYVJ1bGVcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGUgaW5zdGFuY2VvZiBDU1NNZWRpYVJ1bGUgJiYgcnVsZS5tZWRpYS5tZWRpYVRleHQuaW5jbHVkZXMoYG1pbi13aWR0aDogJHttaW5XaWR0aH1weGApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBMb29wIHRocm91Z2ggdGhlIG1lZGlhIHJ1bGUncyBDU1MgcnVsZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHN1YlJ1bGUgb2YgQXJyYXkuZnJvbShydWxlLmNzc1J1bGVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhUnVsZXMucHVzaChzdWJSdWxlLmNzc1RleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFjY2Vzc2luZyBzdHlsZXNoZWV0OicsIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGEgZHluYW1pYyBjbGFzcyBmb3IgdGhlIG1lZGlhIHF1ZXJpZXNcbiAgICAgICAgdGhpcy5jcmVhdGVDdXN0b21DbGFzcyhgYXhwLXByZXZpZXctJHticmVha3BvaW50fWAsIG1lZGlhUnVsZXMsIGJyZWFrcG9pbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQ3VzdG9tQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcsIHN0eWxlczogc3RyaW5nW10sIGJyZWFrcG9pbnQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBzdHlsZVNoZWV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgICAgc3R5bGVTaGVldC5zZXRBdHRyaWJ1dGUoXCJkYXRhLXNjcmVlblwiLCBicmVha3BvaW50KTtcblxuICAgICAgICAvLyBDb25zdHJ1Y3QgYSBwdXJlIENTUyBzdHJpbmcsIGR5bmFtaWNhbGx5IHJlcGxhY2luZyB0aGUgYnJlYWtwb2ludCBwcmVmaXhcbiAgICAgICAgbGV0IHN0eWxlU3RyaW5nID0gXCJcIjtcbiAgICAgICAgc3R5bGVzLmZvckVhY2goc3R5bGUgPT4ge1xuICAgICAgICAgICAgLy8gUmVwbGFjZSBhbnkgcHJlZml4ZWQgY2xhc3NlcyBsaWtlICdsZzonIG9yICdtZDonIGR5bmFtaWNhbGx5XG4gICAgICAgICAgICBjb25zdCBkeW5hbWljUHJlZml4ID0gbmV3IFJlZ0V4cChgXFxcXC4ke2JyZWFrcG9pbnR9XFxcXFxcXFw6YCwgJ2cnKTtcbiAgICAgICAgICAgIHN0eWxlU3RyaW5nICs9IGAuJHtjbGFzc05hbWV9ICR7c3R5bGUucmVwbGFjZShkeW5hbWljUHJlZml4LCAnLicpfWA7IC8vIFJlcGxhY2UgdGhlIGJyZWFrcG9pbnQgcHJlZml4XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHN0eWxlU2hlZXQuaW5uZXJUZXh0ID0gc3R5bGVTdHJpbmc7XG4gICAgICAgIHRoaXMucmVtb3ZlQ3VzdG9tQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoc3R5bGVTaGVldCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVDdXN0b21DbGFzcygpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc3R5bGUnKS5mb3JFYWNoKHMgPT4gcy5yZW1vdmUoKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNlcnZpY2UgPSBpbmplY3QoQVhQRGVzaWduZXJTZXJ2aWNlKTtcblxuXG4gICAgcHJvdGVjdGVkIHdpZHRoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuc2VydmljZS5zaXplKCkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJzM0MHB4JztcbiAgICAgICAgICAgIGNhc2UgJ21kJzpcbiAgICAgICAgICAgIGNhc2UgJ2xnJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJzc2OHB4JztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICcxMDAlJztcbiAgICAgICAgfVxuICAgIH0pO1xuXG5cbiAgICBwcml2YXRlIGVmID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgdGhpcy5yZW1vdmVDdXN0b21DbGFzcygpO1xuICAgICAgICBpZiAodGhpcy5zZXJ2aWNlLnNpemUoKSAhPSAneGwnKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5UmVzcG9uc2l2ZVN0eWxlcyh0aGlzLnNlcnZpY2Uuc2l6ZSgpKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG5cblxufVxuIiwiPGRpdiBjbGFzcz1cImF4cC1kZXNpZ25lci1ib2FyZCBheHAtc3RhdGUtZGVzaWduIGF4cC1wcmV2aWV3LXt7c2VydmljZS5zaXplKCl9fVwiIFtzdHlsZS53aWR0aF09XCJ3aWR0aCgpXCI+XG4gICAgPGF4cC13aWRnZXRzLWNvbnRhaW5lciBbKGNvbnRleHQpXT1cImNvbnRleHRcIj5cbiAgICAgICAgPGF4cC13aWRnZXQtZGVzaWduZXItcmVuZGVyZXIgW25vZGVdPVwic2VydmljZS5jdXJyZW50UGFnZSgpXCIgW21vZGVdPVwic2VydmljZS5tb2RlKClcIj5cbiAgICAgICAgPC9heHAtd2lkZ2V0LWRlc2lnbmVyLXJlbmRlcmVyPlxuICAgIDwvYXhwLXdpZGdldHMtY29udGFpbmVyPlxuPC9kaXY+Il19
@@ -0,0 +1,185 @@
1
+ import { computed, Injectable, signal } from "@angular/core";
2
+ import { cloneDeep, merge } from "lodash-es";
3
+ import * as i0 from "@angular/core";
4
+ // AddWidgetCommand
5
+ export class AddWidgetCommand {
6
+ constructor(widget, parent, previousSelection) {
7
+ this.widget = widget;
8
+ this.parent = parent;
9
+ this.previousSelection = previousSelection;
10
+ }
11
+ execute() {
12
+ this.parent.children = this.parent.children || [];
13
+ this.parent.children.push(this.widget);
14
+ }
15
+ undo() {
16
+ this.parent.children = this.parent.children || [];
17
+ const index = this.parent.children.indexOf(this.widget);
18
+ if (index > -1) {
19
+ this.parent.children.splice(index, 1);
20
+ }
21
+ }
22
+ description() {
23
+ return `Added widget ${this.widget.name}`;
24
+ }
25
+ icon() {
26
+ return `fa-solid fa-square-plus`;
27
+ }
28
+ getExecutionSelection() {
29
+ return this.widget; // After executing, select the newly added widget
30
+ }
31
+ getUndoSelection() {
32
+ return this.previousSelection; // After undo, select the previously selected widget
33
+ }
34
+ }
35
+ export class RemoveWidgetCommand {
36
+ constructor(widget, parent, previousSelection) {
37
+ this.widget = widget;
38
+ this.parent = parent;
39
+ this.previousSelection = previousSelection;
40
+ parent.children = parent.children || [];
41
+ this.index = parent.children.indexOf(widget); // Capture the index for undo purposes
42
+ }
43
+ execute() {
44
+ this.parent.children = this.parent.children || [];
45
+ this.index = this.parent.children.indexOf(this.widget); // Re-assert the index in case it has changed
46
+ this.parent.children.splice(this.index, 1);
47
+ }
48
+ undo() {
49
+ this.parent.children = this.parent.children || [];
50
+ this.parent.children.splice(this.index, 0, this.widget); // Reinsert at the original index
51
+ }
52
+ description() {
53
+ return `Removed widget ${this.widget.name}`;
54
+ }
55
+ icon() {
56
+ return `fa-solid fa-square-minus`;
57
+ }
58
+ getExecutionSelection() {
59
+ return this.previousSelection; // Typically the parent or a nearby sibling could be focused
60
+ }
61
+ getUndoSelection() {
62
+ return this.widget; // Select the widget itself when the operation is undone
63
+ }
64
+ }
65
+ export class UpdateWidgetCommand {
66
+ constructor(widget, values, previousSelection) {
67
+ this.widget = widget;
68
+ this.newState = merge(cloneDeep(widget), values);
69
+ this.previousSelection = previousSelection;
70
+ this.previousState = cloneDeep(widget);
71
+ }
72
+ execute() {
73
+ merge(this.widget, this.newState);
74
+ }
75
+ undo() {
76
+ this.deepPruneAndRestore(this.widget, this.previousState);
77
+ }
78
+ description() {
79
+ return `Updated widget ${this.widget.name}`;
80
+ }
81
+ icon() {
82
+ return `fa-solid fa-pen-to-square`;
83
+ }
84
+ getExecutionSelection() {
85
+ return this.widget; // Focus the widget after it's updated
86
+ }
87
+ getUndoSelection() {
88
+ return this.previousSelection; // Restore the focus to where it was before the update
89
+ }
90
+ deepPruneAndRestore(current, original) {
91
+ Object.keys(current).forEach(key => {
92
+ if (original.hasOwnProperty(key)) {
93
+ if (typeof current[key] === 'object' && current[key] !== null && !(current[key] instanceof Array)) {
94
+ this.deepPruneAndRestore(current[key], original[key]);
95
+ }
96
+ }
97
+ else {
98
+ delete current[key]; // Remove properties not present in original
99
+ }
100
+ });
101
+ // Restore the original properties
102
+ merge(current, original);
103
+ }
104
+ }
105
+ export class CommandManager {
106
+ constructor() {
107
+ this.undoStack = signal([]);
108
+ this.currentIndex = signal(-1);
109
+ this.selectedNode = signal(null);
110
+ this.canUndo = computed(() => this.currentIndex() >= 0);
111
+ this.canRedo = computed(() => this.currentIndex() < this.undoStack().length - 1);
112
+ this.history = computed(() => this.undoStack().map((cmd, index) => ({
113
+ description: cmd.description(),
114
+ icon: cmd.icon(),
115
+ isPast: this.currentIndex() > index,
116
+ isFuture: this.currentIndex() < index,
117
+ isCurrent: this.currentIndex() == index
118
+ })));
119
+ }
120
+ executeCommand(command) {
121
+ // Check if the currentIndex is not at the end of the undoStack
122
+ if (this.currentIndex() !== this.undoStack().length - 1) {
123
+ // Remove all commands beyond the current index to discard the "future" commands
124
+ const newUndoStack = this.undoStack().slice(0, this.currentIndex() + 1);
125
+ this.undoStack.set(newUndoStack);
126
+ }
127
+ command.execute();
128
+ this.undoStack.set([...this.undoStack(), command]); // Add the new command to the stack
129
+ this.currentIndex.set(this.undoStack().length - 1); // Update currentIndex to the end of the stack
130
+ this.selectedNode.set(command.getExecutionSelection()); // Update the selected node
131
+ }
132
+ undo() {
133
+ if (this.currentIndex() >= 0) {
134
+ const command = this.undoStack()[this.currentIndex()];
135
+ command.undo();
136
+ this.currentIndex.set(this.currentIndex() - 1);
137
+ if (this.currentIndex() >= 0) {
138
+ this.selectedNode.set(this.undoStack()[this.currentIndex()].getUndoSelection());
139
+ }
140
+ else {
141
+ this.selectedNode.set(null); // No selection if all commands are undone
142
+ }
143
+ }
144
+ }
145
+ redo() {
146
+ if (this.currentIndex() < this.undoStack().length - 1) {
147
+ this.currentIndex.set(this.currentIndex() + 1);
148
+ const command = this.undoStack()[this.currentIndex()];
149
+ command.execute();
150
+ this.selectedNode.set(command.getExecutionSelection());
151
+ }
152
+ }
153
+ goToCommand(index) {
154
+ if (index < 0 || index >= this.undoStack().length || index === this.currentIndex()) {
155
+ return; // Out of bounds or already at the desired index
156
+ }
157
+ if (index > this.currentIndex()) {
158
+ // Need to redo until reaching the desired index
159
+ while (this.currentIndex() < index) {
160
+ this.redo();
161
+ }
162
+ }
163
+ else {
164
+ // Need to undo until reaching the desired index
165
+ while (this.currentIndex() > index) {
166
+ this.undo();
167
+ }
168
+ }
169
+ // Optionally update any UI components or state here
170
+ this.selectedNode.set(this.undoStack()[this.currentIndex()].getExecutionSelection());
171
+ }
172
+ clear() {
173
+ this.undoStack.set([]);
174
+ this.currentIndex.set(-1);
175
+ }
176
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CommandManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
177
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CommandManager, providedIn: 'root' }); }
178
+ }
179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CommandManager, decorators: [{
180
+ type: Injectable,
181
+ args: [{
182
+ providedIn: 'root'
183
+ }]
184
+ }] });
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvY29tbWFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBWTdDLG1CQUFtQjtBQUNuQixNQUFNLE9BQU8sZ0JBQWdCO0lBS3pCLFlBQVksTUFBcUIsRUFBRSxNQUFxQixFQUFFLGlCQUFnQztRQUN0RixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7SUFDL0MsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSTtRQUNBLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNsRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFF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QUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBYU0sS0FBSztRQUNSLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQzs4R0EvRVEsY0FBYztrSEFBZCxjQUFjLGNBRlgsTUFBTTs7MkZBRVQsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBXaWRnZXROb2RlIH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXJcIjtcbmltcG9ydCB7IGNvbXB1dGVkLCBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBtZXJnZSB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuLy8gQ29tbWFuZCBpbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWFuZCB7XG4gICAgZXhlY3V0ZSgpOiB2b2lkO1xuICAgIHVuZG8oKTogdm9pZDtcbiAgICBkZXNjcmlwdGlvbigpOiBzdHJpbmc7XG4gICAgaWNvbigpOiBzdHJpbmc7XG4gICAgZ2V0RXhlY3V0aW9uU2VsZWN0aW9uKCk6IEFYUFdpZGdldE5vZGU7ICAvLyBOb2RlIHRvIHNlbGVjdCBhZnRlciBleGVjdXRpb25cbiAgICBnZXRVbmRvU2VsZWN0aW9uKCk6IEFYUFdpZGdldE5vZGU7ICAgICAgIC8vIE5vZGUgdG8gc2VsZWN0IGFmdGVyIHVuZG9cbn1cblxuLy8gQWRkV2lkZ2V0Q29tbWFuZFxuZXhwb3J0IGNsYXNzIEFkZFdpZGdldENvbW1hbmQgaW1wbGVtZW50cyBDb21tYW5kIHtcbiAgICBwcml2YXRlIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIHBhcmVudDogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIHByZXZpb3VzU2VsZWN0aW9uOiBBWFBXaWRnZXROb2RlO1xuXG4gICAgY29uc3RydWN0b3Iod2lkZ2V0OiBBWFBXaWRnZXROb2RlLCBwYXJlbnQ6IEFYUFdpZGdldE5vZGUsIHByZXZpb3VzU2VsZWN0aW9uOiBBWFBXaWRnZXROb2RlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0ID0gd2lkZ2V0O1xuICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHByZXZpb3VzU2VsZWN0aW9uO1xuICAgIH1cblxuICAgIGV4ZWN1dGUoKSB7XG4gICAgICAgIHRoaXMucGFyZW50LmNoaWxkcmVuID0gdGhpcy5wYXJlbnQuY2hpbGRyZW4gfHwgW107XG4gICAgICAgIHRoaXMucGFyZW50LmNoaWxkcmVuLnB1c2godGhpcy53aWRnZXQpO1xuICAgIH1cblxuICAgIHVuZG8oKSB7XG4gICAgICAgIHRoaXMucGFyZW50LmNoaWxkcmVuID0gdGhpcy5wYXJlbnQuY2hpbGRyZW4gfHwgW107XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZih0aGlzLndpZGdldCk7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzY3JpcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBgQWRkZWQgd2lkZ2V0ICR7dGhpcy53aWRnZXQubmFtZX1gO1xuICAgIH1cblxuICAgIGljb24oKSB7XG4gICAgICAgIHJldHVybiBgZmEtc29saWQgZmEtc3F1YXJlLXBsdXNgO1xuICAgIH1cblxuICAgIGdldEV4ZWN1dGlvblNlbGVjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2lkZ2V0OyAgLy8gQWZ0ZXIgZXhlY3V0aW5nLCBzZWxlY3QgdGhlIG5ld2x5IGFkZGVkIHdpZGdldFxuICAgIH1cblxuICAgIGdldFVuZG9TZWxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXZpb3VzU2VsZWN0aW9uOyAgLy8gQWZ0ZXIgdW5kbywgc2VsZWN0IHRoZSBwcmV2aW91c2x5IHNlbGVjdGVkIHdpZGdldFxuICAgIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgUmVtb3ZlV2lkZ2V0Q29tbWFuZCBpbXBsZW1lbnRzIENvbW1hbmQge1xuICAgIHByaXZhdGUgd2lkZ2V0OiBBWFBXaWRnZXROb2RlO1xuICAgIHByaXZhdGUgcGFyZW50OiBBWFBXaWRnZXROb2RlO1xuICAgIHByaXZhdGUgcHJldmlvdXNTZWxlY3Rpb246IEFYUFdpZGdldE5vZGU7XG4gICAgcHJpdmF0ZSBpbmRleDogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3Iod2lkZ2V0OiBBWFBXaWRnZXROb2RlLCBwYXJlbnQ6IEFYUFdpZGdldE5vZGUsIHByZXZpb3VzU2VsZWN0aW9uOiBBWFBXaWRnZXROb2RlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0ID0gd2lkZ2V0O1xuICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHByZXZpb3VzU2VsZWN0aW9uO1xuICAgICAgICBwYXJlbnQuY2hpbGRyZW4gPSBwYXJlbnQuY2hpbGRyZW4gfHwgW107XG4gICAgICAgIHRoaXMuaW5kZXggPSBwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZih3aWRnZXQpOyAgLy8gQ2FwdHVyZSB0aGUgaW5kZXggZm9yIHVuZG8gcHVycG9zZXNcbiAgICB9XG5cbiAgICBleGVjdXRlKCkge1xuICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbiA9IHRoaXMucGFyZW50LmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICB0aGlzLmluZGV4ID0gdGhpcy5wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZih0aGlzLndpZGdldCk7ICAvLyBSZS1hc3NlcnQgdGhlIGluZGV4IGluIGNhc2UgaXQgaGFzIGNoYW5nZWRcbiAgICAgICAgdGhpcy5wYXJlbnQuY2hpbGRyZW4uc3BsaWNlKHRoaXMuaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHVuZG8oKSB7XG4gICAgICAgIHRoaXMucGFyZW50LmNoaWxkcmVuID0gdGhpcy5wYXJlbnQuY2hpbGRyZW4gfHwgW107XG4gICAgICAgIHRoaXMucGFyZW50LmNoaWxkcmVuLnNwbGljZSh0aGlzLmluZGV4LCAwLCB0aGlzLndpZGdldCk7ICAvLyBSZWluc2VydCBhdCB0aGUgb3JpZ2luYWwgaW5kZXhcbiAgICB9XG5cbiAgICBkZXNjcmlwdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGBSZW1vdmVkIHdpZGdldCAke3RoaXMud2lkZ2V0Lm5hbWV9YDtcbiAgICB9XG5cbiAgICBpY29uKCkge1xuICAgICAgICByZXR1cm4gYGZhLXNvbGlkIGZhLXNxdWFyZS1taW51c2A7XG4gICAgfVxuXG4gICAgZ2V0RXhlY3V0aW9uU2VsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmV2aW91c1NlbGVjdGlvbjsgIC8vIFR5cGljYWxseSB0aGUgcGFyZW50IG9yIGEgbmVhcmJ5IHNpYmxpbmcgY291bGQgYmUgZm9jdXNlZFxuICAgIH1cblxuICAgIGdldFVuZG9TZWxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldDsgIC8vIFNlbGVjdCB0aGUgd2lkZ2V0IGl0c2VsZiB3aGVuIHRoZSBvcGVyYXRpb24gaXMgdW5kb25lXG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRlV2lkZ2V0Q29tbWFuZCBpbXBsZW1lbnRzIENvbW1hbmQge1xuICAgIHByaXZhdGUgd2lkZ2V0OiBBWFBXaWRnZXROb2RlO1xuICAgIHByaXZhdGUgcHJldmlvdXNTdGF0ZTogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIG5ld1N0YXRlOiBBWFBXaWRnZXROb2RlO1xuICAgIHByaXZhdGUgcHJldmlvdXNTZWxlY3Rpb246IEFYUFdpZGdldE5vZGU7XG5cbiAgICBjb25zdHJ1Y3Rvcih3aWRnZXQ6IEFYUFdpZGdldE5vZGUsIHZhbHVlczogUGFydGlhbDxBWFBXaWRnZXROb2RlPiwgcHJldmlvdXNTZWxlY3Rpb246IEFYUFdpZGdldE5vZGUpIHtcbiAgICAgICAgdGhpcy53aWRnZXQgPSB3aWRnZXQ7XG4gICAgICAgIHRoaXMubmV3U3RhdGUgPSBtZXJnZShjbG9uZURlZXAod2lkZ2V0KSwgdmFsdWVzKTtcbiAgICAgICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHByZXZpb3VzU2VsZWN0aW9uO1xuICAgICAgICB0aGlzLnByZXZpb3VzU3RhdGUgPSBjbG9uZURlZXAod2lkZ2V0KTtcbiAgICB9XG5cbiAgICBleGVjdXRlKCkge1xuICAgICAgICBtZXJnZSh0aGlzLndpZGdldCwgdGhpcy5uZXdTdGF0ZSlcbiAgICB9XG5cbiAgICB1bmRvKCkge1xuICAgICAgICB0aGlzLmRlZXBQcnVuZUFuZFJlc3RvcmUodGhpcy53aWRnZXQsIHRoaXMucHJldmlvdXNTdGF0ZSk7XG4gICAgfVxuXG4gICAgZGVzY3JpcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBgVXBkYXRlZCB3aWRnZXQgJHt0aGlzLndpZGdldC5uYW1lfWA7XG4gICAgfVxuXG4gICAgaWNvbigpIHtcbiAgICAgICAgcmV0dXJuIGBmYS1zb2xpZCBmYS1wZW4tdG8tc3F1YXJlYDtcbiAgICB9XG5cbiAgICBnZXRFeGVjdXRpb25TZWxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldDsgIC8vIEZvY3VzIHRoZSB3aWRnZXQgYWZ0ZXIgaXQncyB1cGRhdGVkXG4gICAgfVxuXG4gICAgZ2V0VW5kb1NlbGVjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXNTZWxlY3Rpb247ICAvLyBSZXN0b3JlIHRoZSBmb2N1cyB0byB3aGVyZSBpdCB3YXMgYmVmb3JlIHRoZSB1cGRhdGVcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlZXBQcnVuZUFuZFJlc3RvcmUoY3VycmVudDogYW55LCBvcmlnaW5hbDogYW55KSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGN1cnJlbnQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGlmIChvcmlnaW5hbC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50W2tleV0gPT09ICdvYmplY3QnICYmIGN1cnJlbnRba2V5XSAhPT0gbnVsbCAmJiAhKGN1cnJlbnRba2V5XSBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZXBQcnVuZUFuZFJlc3RvcmUoY3VycmVudFtrZXldLCBvcmlnaW5hbFtrZXldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBjdXJyZW50W2tleV07ICAvLyBSZW1vdmUgcHJvcGVydGllcyBub3QgcHJlc2VudCBpbiBvcmlnaW5hbFxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBwcm9wZXJ0aWVzXG4gICAgICAgIG1lcmdlKGN1cnJlbnQsIG9yaWdpbmFsKTtcbiAgICB9XG59XG5cblxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbW1hbmRNYW5hZ2VyIHtcbiAgICBwcml2YXRlIHVuZG9TdGFjayA9IHNpZ25hbDxDb21tYW5kW10+KFtdKTtcbiAgICBwcml2YXRlIGN1cnJlbnRJbmRleCA9IHNpZ25hbDxudW1iZXI+KC0xKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWROb2RlID0gc2lnbmFsPEFYUFdpZGdldE5vZGUgfCBudWxsPihudWxsKTtcblxuICAgIHB1YmxpYyBjYW5VbmRvID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jdXJyZW50SW5kZXgoKSA+PSAwKVxuICAgIHB1YmxpYyBjYW5SZWRvID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jdXJyZW50SW5kZXgoKSA8IHRoaXMudW5kb1N0YWNrKCkubGVuZ3RoIC0gMSlcblxuICAgIGV4ZWN1dGVDb21tYW5kKGNvbW1hbmQ6IENvbW1hbmQpIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnRJbmRleCBpcyBub3QgYXQgdGhlIGVuZCBvZiB0aGUgdW5kb1N0YWNrXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbmRleCgpICE9PSB0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIC8vIFJlbW92ZSBhbGwgY29tbWFuZHMgYmV5b25kIHRoZSBjdXJyZW50IGluZGV4IHRvIGRpc2NhcmQgdGhlIFwiZnV0dXJlXCIgY29tbWFuZHNcbiAgICAgICAgICAgIGNvbnN0IG5ld1VuZG9TdGFjayA9IHRoaXMudW5kb1N0YWNrKCkuc2xpY2UoMCwgdGhpcy5jdXJyZW50SW5kZXgoKSArIDEpO1xuICAgICAgICAgICAgdGhpcy51bmRvU3RhY2suc2V0KG5ld1VuZG9TdGFjayk7XG4gICAgICAgIH1cblxuICAgICAgICBjb21tYW5kLmV4ZWN1dGUoKTtcbiAgICAgICAgdGhpcy51bmRvU3RhY2suc2V0KFsuLi50aGlzLnVuZG9TdGFjaygpLCBjb21tYW5kXSk7IC8vIEFkZCB0aGUgbmV3IGNvbW1hbmQgdG8gdGhlIHN0YWNrXG4gICAgICAgIHRoaXMuY3VycmVudEluZGV4LnNldCh0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCAtIDEpOyAvLyBVcGRhdGUgY3VycmVudEluZGV4IHRvIHRoZSBlbmQgb2YgdGhlIHN0YWNrXG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlLnNldChjb21tYW5kLmdldEV4ZWN1dGlvblNlbGVjdGlvbigpKTsgLy8gVXBkYXRlIHRoZSBzZWxlY3RlZCBub2RlXG4gICAgfVxuXG4gICAgdW5kbygpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEluZGV4KCkgPj0gMCkge1xuICAgICAgICAgICAgY29uc3QgY29tbWFuZCA9IHRoaXMudW5kb1N0YWNrKClbdGhpcy5jdXJyZW50SW5kZXgoKV07XG4gICAgICAgICAgICBjb21tYW5kLnVuZG8oKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEluZGV4LnNldCh0aGlzLmN1cnJlbnRJbmRleCgpIC0gMSk7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50SW5kZXgoKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUuc2V0KHRoaXMudW5kb1N0YWNrKClbdGhpcy5jdXJyZW50SW5kZXgoKV0uZ2V0VW5kb1NlbGVjdGlvbigpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUuc2V0KG51bGwpOyAvLyBObyBzZWxlY3Rpb24gaWYgYWxsIGNvbW1hbmRzIGFyZSB1bmRvbmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZG8oKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbmRleCgpIDwgdGhpcy51bmRvU3RhY2soKS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleC5zZXQodGhpcy5jdXJyZW50SW5kZXgoKSArIDEpO1xuICAgICAgICAgICAgY29uc3QgY29tbWFuZCA9IHRoaXMudW5kb1N0YWNrKClbdGhpcy5jdXJyZW50SW5kZXgoKV07XG4gICAgICAgICAgICBjb21tYW5kLmV4ZWN1dGUoKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlLnNldChjb21tYW5kLmdldEV4ZWN1dGlvblNlbGVjdGlvbigpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdvVG9Db21tYW5kKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCB8fCBpbmRleCA9PT0gdGhpcy5jdXJyZW50SW5kZXgoKSkge1xuICAgICAgICAgICAgcmV0dXJuOyAgLy8gT3V0IG9mIGJvdW5kcyBvciBhbHJlYWR5IGF0IHRoZSBkZXNpcmVkIGluZGV4XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5kZXggPiB0aGlzLmN1cnJlbnRJbmRleCgpKSB7XG4gICAgICAgICAgICAvLyBOZWVkIHRvIHJlZG8gdW50aWwgcmVhY2hpbmcgdGhlIGRlc2lyZWQgaW5kZXhcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLmN1cnJlbnRJbmRleCgpIDwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZG8oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE5lZWQgdG8gdW5kbyB1bnRpbCByZWFjaGluZyB0aGUgZGVzaXJlZCBpbmRleFxuICAgICAgICAgICAgd2hpbGUgKHRoaXMuY3VycmVudEluZGV4KCkgPiBpbmRleCkge1xuICAgICAgICAgICAgICAgIHRoaXMudW5kbygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3B0aW9uYWxseSB1cGRhdGUgYW55IFVJIGNvbXBvbmVudHMgb3Igc3RhdGUgaGVyZVxuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZS5zZXQodGhpcy51bmRvU3RhY2soKVt0aGlzLmN1cnJlbnRJbmRleCgpXS5nZXRFeGVjdXRpb25TZWxlY3Rpb24oKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGhpc3RvcnkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnVuZG9TdGFjaygpLm1hcCgoY21kLCBpbmRleCkgPT4gKFxuICAgICAgICB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogY21kLmRlc2NyaXB0aW9uKCksXG4gICAgICAgICAgICBpY29uOiBjbWQuaWNvbigpLFxuICAgICAgICAgICAgaXNQYXN0OiB0aGlzLmN1cnJlbnRJbmRleCgpID4gaW5kZXgsXG4gICAgICAgICAgICBpc0Z1dHVyZTogdGhpcy5jdXJyZW50SW5kZXgoKSA8IGluZGV4LFxuICAgICAgICAgICAgaXNDdXJyZW50OiB0aGlzLmN1cnJlbnRJbmRleCgpID09IGluZGV4XG4gICAgICAgIH1cbiAgICApKSlcblxuXG4gICAgcHVibGljIGNsZWFyKCkge1xuICAgICAgICB0aGlzLnVuZG9TdGFjay5zZXQoW10pO1xuICAgICAgICB0aGlzLmN1cnJlbnRJbmRleC5zZXQoLTEpO1xuICAgIH1cbn0iXX0=