taon 18.0.17 → 18.0.19

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 (519) hide show
  1. package/README.md +6 -3
  2. package/assets/shared/shared_folder_info.txt +1 -1
  3. package/browser/esm2022/lib/base-classes/base-injector.mjs +8 -1
  4. package/browser/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +39 -20
  5. package/browser/esm2022/lib/base-classes/base.mjs +1 -3
  6. package/browser/esm2022/lib/create-context.mjs +24 -3
  7. package/browser/esm2022/lib/decorators/classes/subscriber-decorator.mjs +3 -29
  8. package/browser/esm2022/lib/decorators/http/http-decorators.mjs +3 -1
  9. package/browser/esm2022/lib/endpoint-context.mjs +36 -136
  10. package/browser/esm2022/lib/entity-process.mjs +3 -3
  11. package/browser/esm2022/lib/helpers/class-helpers.mjs +2 -2
  12. package/browser/esm2022/lib/index.mjs +2 -14
  13. package/browser/esm2022/lib/inject.mjs +4 -38
  14. package/browser/esm2022/lib/models.mjs +1 -1
  15. package/browser/esm2022/lib/realtime/realtime-client.mjs +32 -20
  16. package/browser/esm2022/lib/realtime/realtime-core.mjs +15 -7
  17. package/browser/esm2022/lib/realtime/realtime-server.mjs +34 -16
  18. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc.mjs +198 -29
  19. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock.mjs +206 -10
  20. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-socket-io.mjs +3 -7
  21. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy.mjs +6 -2
  22. package/browser/esm2022/lib/realtime/realtime-subs-manager.mjs +10 -8
  23. package/browser/esm2022/lib/realtime/realtime.models.mjs +1 -1
  24. package/browser/esm2022/lib/symbols.mjs +45 -38
  25. package/browser/esm2022/lib/ui/directives/index.mjs +6 -0
  26. package/browser/esm2022/lib/ui/directives/safe.pipe.mjs +43 -0
  27. package/browser/esm2022/lib/ui/directives/taon-inject-html.directive.mjs +24 -0
  28. package/browser/esm2022/lib/ui/directives/taon-long-press.directive.mjs +120 -0
  29. package/browser/esm2022/lib/ui/index.mjs +12 -0
  30. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +5 -0
  31. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +115 -0
  32. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +50 -0
  33. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +5 -0
  34. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +61 -0
  35. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +21 -0
  36. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +6 -0
  37. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +14 -3
  38. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +54 -0
  39. package/browser/esm2022/lib/ui/taon-full-material.module.mjs +179 -0
  40. package/browser/esm2022/lib/ui/taon-github-fork-me-corner/index.mjs +5 -0
  41. package/browser/esm2022/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.mjs +18 -0
  42. package/browser/esm2022/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.mjs +21 -0
  43. package/browser/esm2022/lib/ui/taon-notifications/index.mjs +7 -0
  44. package/browser/esm2022/lib/ui/taon-notifications/taon-notifications.component.mjs +25 -0
  45. package/browser/esm2022/lib/ui/taon-notifications/taon-notifications.models.mjs +5 -0
  46. package/browser/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +21 -0
  47. package/browser/esm2022/lib/ui/taon-notifications/taon-notifications.service.mjs +48 -0
  48. package/browser/esm2022/lib/ui/taon-progress-bar/index.mjs +5 -0
  49. package/browser/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +98 -0
  50. package/browser/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.module.mjs +22 -0
  51. package/browser/esm2022/lib/ui/taon-session-passcode/index.mjs +4 -0
  52. package/browser/esm2022/lib/ui/taon-session-passcode/taon-session-passcode.component.mjs +120 -0
  53. package/browser/esm2022/lib/ui/taon-table/index.mjs +5 -0
  54. package/browser/esm2022/lib/ui/taon-table/taon-table.component.mjs +161 -0
  55. package/browser/esm2022/lib/ui/taon-table/taon-table.module.mjs +57 -0
  56. package/browser/fesm2022/taon.mjs +2004 -636
  57. package/browser/fesm2022/taon.mjs.map +1 -1
  58. package/browser/lib/base-classes/base-context.d.ts +8 -1
  59. package/browser/lib/base-classes/base-injector.d.ts +5 -0
  60. package/browser/lib/base-classes/base.d.ts +8 -3
  61. package/browser/lib/create-context.d.ts +17 -1
  62. package/browser/lib/decorators/classes/subscriber-decorator.d.ts +2 -2
  63. package/browser/lib/decorators/http/http-decorators.d.ts +2 -0
  64. package/browser/lib/endpoint-context.d.ts +3 -2
  65. package/browser/lib/helpers/class-helpers.d.ts +1 -1
  66. package/browser/lib/index.d.ts +25 -16
  67. package/browser/lib/inject.d.ts +1 -8
  68. package/browser/lib/models.d.ts +17 -9
  69. package/browser/lib/realtime/realtime-client.d.ts +8 -2
  70. package/browser/lib/realtime/realtime-core.d.ts +6 -6
  71. package/browser/lib/realtime/realtime-server.d.ts +9 -4
  72. package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc.d.ts +71 -12
  73. package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock.d.ts +4 -4
  74. package/browser/lib/realtime/realtime-strategy/realtime-strategy-socket-io.d.ts +2 -3
  75. package/browser/lib/realtime/realtime-strategy/realtime-strategy.d.ts +4 -5
  76. package/browser/lib/realtime/realtime.models.d.ts +1 -0
  77. package/browser/lib/symbols.d.ts +30 -36
  78. package/browser/lib/ui/directives/index.d.ts +4 -0
  79. package/browser/lib/ui/directives/safe.pipe.d.ts +11 -0
  80. package/browser/lib/ui/directives/taon-inject-html.directive.d.ts +10 -0
  81. package/browser/lib/ui/directives/taon-long-press.directive.d.ts +26 -0
  82. package/browser/lib/ui/index.d.ts +10 -0
  83. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +3 -0
  84. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +33 -0
  85. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +16 -0
  86. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +3 -0
  87. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +17 -0
  88. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +10 -0
  89. package/browser/lib/ui/taon-admin-mode-configuration/index.d.ts +4 -0
  90. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +17 -0
  91. package/browser/lib/ui/taon-full-material.module.d.ts +47 -0
  92. package/browser/lib/ui/taon-github-fork-me-corner/index.d.ts +3 -0
  93. package/browser/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.d.ts +7 -0
  94. package/browser/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.d.ts +9 -0
  95. package/browser/lib/ui/taon-notifications/index.d.ts +5 -0
  96. package/browser/lib/ui/taon-notifications/taon-notifications.component.d.ts +13 -0
  97. package/browser/lib/ui/taon-notifications/taon-notifications.models.d.ts +7 -0
  98. package/browser/lib/ui/taon-notifications/taon-notifications.module.d.ts +8 -0
  99. package/browser/lib/ui/taon-notifications/taon-notifications.service.d.ts +15 -0
  100. package/browser/lib/ui/taon-progress-bar/index.d.ts +3 -0
  101. package/browser/lib/ui/taon-progress-bar/taon-progress-bar.component.d.ts +19 -0
  102. package/browser/lib/ui/taon-progress-bar/taon-progress-bar.module.d.ts +10 -0
  103. package/browser/lib/ui/taon-session-passcode/index.d.ts +2 -0
  104. package/browser/lib/ui/taon-session-passcode/taon-session-passcode.component.d.ts +39 -0
  105. package/browser/lib/ui/taon-table/index.d.ts +3 -0
  106. package/browser/lib/ui/taon-table/taon-table.component.d.ts +37 -0
  107. package/browser/lib/ui/taon-table/taon-table.module.d.ts +17 -0
  108. package/client/esm2022/lib/base-classes/base-injector.mjs +8 -1
  109. package/client/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +39 -20
  110. package/client/esm2022/lib/base-classes/base.mjs +1 -3
  111. package/client/esm2022/lib/create-context.mjs +24 -3
  112. package/client/esm2022/lib/decorators/classes/subscriber-decorator.mjs +3 -29
  113. package/client/esm2022/lib/decorators/http/http-decorators.mjs +3 -1
  114. package/client/esm2022/lib/endpoint-context.mjs +36 -136
  115. package/client/esm2022/lib/entity-process.mjs +3 -3
  116. package/client/esm2022/lib/helpers/class-helpers.mjs +2 -2
  117. package/client/esm2022/lib/index.mjs +2 -14
  118. package/client/esm2022/lib/inject.mjs +4 -38
  119. package/client/esm2022/lib/models.mjs +1 -1
  120. package/client/esm2022/lib/realtime/realtime-client.mjs +32 -20
  121. package/client/esm2022/lib/realtime/realtime-core.mjs +15 -7
  122. package/client/esm2022/lib/realtime/realtime-server.mjs +34 -16
  123. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc.mjs +198 -29
  124. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock.mjs +206 -10
  125. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-socket-io.mjs +3 -7
  126. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy.mjs +6 -2
  127. package/client/esm2022/lib/realtime/realtime-subs-manager.mjs +10 -8
  128. package/client/esm2022/lib/realtime/realtime.models.mjs +1 -1
  129. package/client/esm2022/lib/symbols.mjs +45 -38
  130. package/client/esm2022/lib/ui/directives/index.mjs +6 -0
  131. package/client/esm2022/lib/ui/directives/safe.pipe.mjs +43 -0
  132. package/client/esm2022/lib/ui/directives/taon-inject-html.directive.mjs +24 -0
  133. package/client/esm2022/lib/ui/directives/taon-long-press.directive.mjs +120 -0
  134. package/client/esm2022/lib/ui/index.mjs +12 -0
  135. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +5 -0
  136. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +115 -0
  137. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +50 -0
  138. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +5 -0
  139. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +61 -0
  140. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +21 -0
  141. package/client/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +6 -0
  142. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +14 -3
  143. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +54 -0
  144. package/client/esm2022/lib/ui/taon-full-material.module.mjs +179 -0
  145. package/client/esm2022/lib/ui/taon-github-fork-me-corner/index.mjs +5 -0
  146. package/client/esm2022/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.mjs +18 -0
  147. package/client/esm2022/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.mjs +21 -0
  148. package/client/esm2022/lib/ui/taon-notifications/index.mjs +7 -0
  149. package/client/esm2022/lib/ui/taon-notifications/taon-notifications.component.mjs +25 -0
  150. package/client/esm2022/lib/ui/taon-notifications/taon-notifications.models.mjs +5 -0
  151. package/client/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +21 -0
  152. package/client/esm2022/lib/ui/taon-notifications/taon-notifications.service.mjs +48 -0
  153. package/client/esm2022/lib/ui/taon-progress-bar/index.mjs +5 -0
  154. package/client/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +98 -0
  155. package/client/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.module.mjs +22 -0
  156. package/client/esm2022/lib/ui/taon-session-passcode/index.mjs +4 -0
  157. package/client/esm2022/lib/ui/taon-session-passcode/taon-session-passcode.component.mjs +120 -0
  158. package/client/esm2022/lib/ui/taon-table/index.mjs +5 -0
  159. package/client/esm2022/lib/ui/taon-table/taon-table.component.mjs +161 -0
  160. package/client/esm2022/lib/ui/taon-table/taon-table.module.mjs +57 -0
  161. package/client/fesm2022/taon.mjs +2004 -636
  162. package/client/fesm2022/taon.mjs.map +1 -1
  163. package/client/lib/base-classes/base-context.d.ts +8 -1
  164. package/client/lib/base-classes/base-injector.d.ts +5 -0
  165. package/client/lib/base-classes/base.d.ts +8 -3
  166. package/client/lib/create-context.d.ts +17 -1
  167. package/client/lib/decorators/classes/subscriber-decorator.d.ts +2 -2
  168. package/client/lib/decorators/http/http-decorators.d.ts +2 -0
  169. package/client/lib/endpoint-context.d.ts +3 -2
  170. package/client/lib/helpers/class-helpers.d.ts +1 -1
  171. package/client/lib/index.d.ts +25 -16
  172. package/client/lib/inject.d.ts +1 -8
  173. package/client/lib/models.d.ts +17 -9
  174. package/client/lib/realtime/realtime-client.d.ts +8 -2
  175. package/client/lib/realtime/realtime-core.d.ts +6 -6
  176. package/client/lib/realtime/realtime-server.d.ts +9 -4
  177. package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc.d.ts +71 -12
  178. package/client/lib/realtime/realtime-strategy/realtime-strategy-mock.d.ts +4 -4
  179. package/client/lib/realtime/realtime-strategy/realtime-strategy-socket-io.d.ts +2 -3
  180. package/client/lib/realtime/realtime-strategy/realtime-strategy.d.ts +4 -5
  181. package/client/lib/realtime/realtime.models.d.ts +1 -0
  182. package/client/lib/symbols.d.ts +30 -36
  183. package/client/lib/ui/directives/index.d.ts +4 -0
  184. package/client/lib/ui/directives/safe.pipe.d.ts +11 -0
  185. package/client/lib/ui/directives/taon-inject-html.directive.d.ts +10 -0
  186. package/client/lib/ui/directives/taon-long-press.directive.d.ts +26 -0
  187. package/client/lib/ui/index.d.ts +10 -0
  188. package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +3 -0
  189. package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +33 -0
  190. package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +16 -0
  191. package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +3 -0
  192. package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +17 -0
  193. package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +10 -0
  194. package/client/lib/ui/taon-admin-mode-configuration/index.d.ts +4 -0
  195. package/client/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +17 -0
  196. package/client/lib/ui/taon-full-material.module.d.ts +47 -0
  197. package/client/lib/ui/taon-github-fork-me-corner/index.d.ts +3 -0
  198. package/client/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.d.ts +7 -0
  199. package/client/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.d.ts +9 -0
  200. package/client/lib/ui/taon-notifications/index.d.ts +5 -0
  201. package/client/lib/ui/taon-notifications/taon-notifications.component.d.ts +13 -0
  202. package/client/lib/ui/taon-notifications/taon-notifications.models.d.ts +7 -0
  203. package/client/lib/ui/taon-notifications/taon-notifications.module.d.ts +8 -0
  204. package/client/lib/ui/taon-notifications/taon-notifications.service.d.ts +15 -0
  205. package/client/lib/ui/taon-progress-bar/index.d.ts +3 -0
  206. package/client/lib/ui/taon-progress-bar/taon-progress-bar.component.d.ts +19 -0
  207. package/client/lib/ui/taon-progress-bar/taon-progress-bar.module.d.ts +10 -0
  208. package/client/lib/ui/taon-session-passcode/index.d.ts +2 -0
  209. package/client/lib/ui/taon-session-passcode/taon-session-passcode.component.d.ts +39 -0
  210. package/client/lib/ui/taon-table/index.d.ts +3 -0
  211. package/client/lib/ui/taon-table/taon-table.component.d.ts +37 -0
  212. package/client/lib/ui/taon-table/taon-table.module.d.ts +17 -0
  213. package/lib/base-classes/base-context.d.ts +8 -1
  214. package/lib/base-classes/base-injector.d.ts +5 -0
  215. package/lib/base-classes/base-injector.js +11 -0
  216. package/lib/base-classes/base-injector.js.map +1 -1
  217. package/lib/base-classes/base-subscriber-for-entity.js +38 -19
  218. package/lib/base-classes/base-subscriber-for-entity.js.map +1 -1
  219. package/lib/base-classes/base.d.ts +8 -3
  220. package/lib/base-classes/base.js +0 -2
  221. package/lib/base-classes/base.js.map +1 -1
  222. package/lib/create-context.d.ts +17 -1
  223. package/lib/create-context.js +21 -10
  224. package/lib/create-context.js.map +1 -1
  225. package/lib/decorators/classes/subscriber-decorator.d.ts +1 -1
  226. package/lib/decorators/classes/subscriber-decorator.js +7 -58
  227. package/lib/decorators/classes/subscriber-decorator.js.map +1 -1
  228. package/lib/decorators/http/http-decorators.d.ts +3 -1
  229. package/lib/decorators/http/http-decorators.js +2 -0
  230. package/lib/decorators/http/http-decorators.js.map +1 -1
  231. package/lib/endpoint-context.d.ts +3 -2
  232. package/lib/endpoint-context.js +169 -106
  233. package/lib/endpoint-context.js.map +1 -1
  234. package/lib/entity-process.js +2 -2
  235. package/lib/entity-process.js.map +1 -1
  236. package/lib/formly/formly-repeat-component.js +1 -1
  237. package/lib/formly/formly-repeat-component.js.map +1 -1
  238. package/lib/helpers/class-helpers.d.ts +1 -1
  239. package/lib/helpers/class-helpers.js +2 -2
  240. package/lib/helpers/class-helpers.js.map +1 -1
  241. package/lib/index.d.ts +25 -16
  242. package/lib/index.js +1 -17
  243. package/lib/index.js.map +1 -1
  244. package/lib/inject.d.ts +3 -7
  245. package/lib/inject.js +57 -42
  246. package/lib/inject.js.map +1 -1
  247. package/lib/models.d.ts +17 -9
  248. package/lib/models.js.map +1 -1
  249. package/lib/realtime/realtime-client.d.ts +8 -2
  250. package/lib/realtime/realtime-client.js +36 -21
  251. package/lib/realtime/realtime-client.js.map +1 -1
  252. package/lib/realtime/realtime-core.d.ts +6 -6
  253. package/lib/realtime/realtime-core.js +17 -6
  254. package/lib/realtime/realtime-core.js.map +1 -1
  255. package/lib/realtime/realtime-server.d.ts +9 -4
  256. package/lib/realtime/realtime-server.js +98 -76
  257. package/lib/realtime/realtime-server.js.map +1 -1
  258. package/lib/realtime/realtime-strategy/realtime-strategy-ipc.d.ts +71 -11
  259. package/lib/realtime/realtime-strategy/realtime-strategy-ipc.js +301 -40
  260. package/lib/realtime/realtime-strategy/realtime-strategy-ipc.js.map +1 -1
  261. package/lib/realtime/realtime-strategy/realtime-strategy-mock.d.ts +4 -4
  262. package/lib/realtime/realtime-strategy/realtime-strategy-mock.js +358 -14
  263. package/lib/realtime/realtime-strategy/realtime-strategy-mock.js.map +1 -1
  264. package/lib/realtime/realtime-strategy/realtime-strategy-socket-io.d.ts +3 -3
  265. package/lib/realtime/realtime-strategy/realtime-strategy-socket-io.js +10 -14
  266. package/lib/realtime/realtime-strategy/realtime-strategy-socket-io.js.map +1 -1
  267. package/lib/realtime/realtime-strategy/realtime-strategy.d.ts +4 -5
  268. package/lib/realtime/realtime-strategy/realtime-strategy.js +9 -2
  269. package/lib/realtime/realtime-strategy/realtime-strategy.js.map +1 -1
  270. package/lib/realtime/realtime-subs-manager.js +10 -8
  271. package/lib/realtime/realtime-subs-manager.js.map +1 -1
  272. package/lib/realtime/realtime.models.d.ts +1 -0
  273. package/lib/symbols.d.ts +30 -36
  274. package/lib/symbols.js +63 -39
  275. package/lib/symbols.js.map +1 -1
  276. package/lib/ui/directives/index.d.ts +3 -4
  277. package/lib/ui/directives/index.js +2 -2
  278. package/lib/ui/index.d.ts +9 -0
  279. package/lib/ui/index.js +5 -0
  280. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.js +2 -2
  281. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +3 -5
  282. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.js +2 -2
  283. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/taon-db-admin.component.d.ts +2 -3
  284. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.js +2 -2
  285. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +1 -2
  286. package/lib/ui/taon-admin-mode-configuration/index.d.ts +0 -1
  287. package/lib/ui/taon-admin-mode-configuration/index.js +2 -2
  288. package/lib/ui/taon-github-fork-me-corner/index.js +2 -2
  289. package/lib/ui/taon-github-fork-me-ribbon/index.js +2 -2
  290. package/lib/ui/taon-notifications/taon-notifications.models.js +2 -2
  291. package/lib/ui/taon-progress-bar/index.js +2 -2
  292. package/lib/ui/taon-progress-bar/taon-progress-bar.component.d.ts +1 -0
  293. package/lib/ui/taon-session-passcode/index.js +2 -2
  294. package/lib/ui/taon-table/index.d.ts +2 -0
  295. package/lib/ui/taon-table/index.js +5 -0
  296. package/lib/ui/taon-table/index.js.map +1 -0
  297. package/lib/ui/taon-table/taon-table.component.d.ts +33 -0
  298. package/lib/ui/taon-table/taon-table.module.d.ts +2 -0
  299. package/package.json +10 -8
  300. package/tmp-environment.json +34 -30
  301. package/websql/esm2022/lib/base-classes/base-injector.mjs +8 -1
  302. package/websql/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +39 -20
  303. package/websql/esm2022/lib/base-classes/base.mjs +1 -3
  304. package/websql/esm2022/lib/create-context.mjs +24 -3
  305. package/websql/esm2022/lib/decorators/classes/subscriber-decorator.mjs +3 -29
  306. package/websql/esm2022/lib/decorators/http/http-decorators.mjs +3 -1
  307. package/websql/esm2022/lib/endpoint-context.mjs +48 -24
  308. package/websql/esm2022/lib/entity-process.mjs +3 -3
  309. package/websql/esm2022/lib/helpers/class-helpers.mjs +2 -2
  310. package/websql/esm2022/lib/index.mjs +2 -14
  311. package/websql/esm2022/lib/inject.mjs +4 -38
  312. package/websql/esm2022/lib/models.mjs +1 -1
  313. package/websql/esm2022/lib/realtime/realtime-client.mjs +32 -20
  314. package/websql/esm2022/lib/realtime/realtime-core.mjs +15 -7
  315. package/websql/esm2022/lib/realtime/realtime-server.mjs +90 -72
  316. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc.mjs +200 -30
  317. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock.mjs +206 -10
  318. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-socket-io.mjs +3 -7
  319. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy.mjs +6 -2
  320. package/websql/esm2022/lib/realtime/realtime-subs-manager.mjs +10 -8
  321. package/websql/esm2022/lib/realtime/realtime.models.mjs +1 -1
  322. package/websql/esm2022/lib/symbols.mjs +45 -38
  323. package/websql/esm2022/lib/ui/directives/index.mjs +6 -0
  324. package/websql/esm2022/lib/ui/directives/safe.pipe.mjs +43 -0
  325. package/websql/esm2022/lib/ui/directives/taon-inject-html.directive.mjs +24 -0
  326. package/websql/esm2022/lib/ui/directives/taon-long-press.directive.mjs +120 -0
  327. package/websql/esm2022/lib/ui/index.mjs +12 -0
  328. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +5 -0
  329. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +115 -0
  330. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +50 -0
  331. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +5 -0
  332. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +61 -0
  333. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +21 -0
  334. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +6 -0
  335. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +14 -3
  336. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +54 -0
  337. package/websql/esm2022/lib/ui/taon-full-material.module.mjs +179 -0
  338. package/websql/esm2022/lib/ui/taon-github-fork-me-corner/index.mjs +5 -0
  339. package/websql/esm2022/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.mjs +18 -0
  340. package/websql/esm2022/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.mjs +21 -0
  341. package/websql/esm2022/lib/ui/taon-notifications/index.mjs +7 -0
  342. package/websql/esm2022/lib/ui/taon-notifications/taon-notifications.component.mjs +25 -0
  343. package/websql/esm2022/lib/ui/taon-notifications/taon-notifications.models.mjs +5 -0
  344. package/websql/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +21 -0
  345. package/websql/esm2022/lib/ui/taon-notifications/taon-notifications.service.mjs +48 -0
  346. package/websql/esm2022/lib/ui/taon-progress-bar/index.mjs +5 -0
  347. package/websql/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +50 -0
  348. package/websql/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.module.mjs +22 -0
  349. package/websql/esm2022/lib/ui/taon-session-passcode/index.mjs +4 -0
  350. package/websql/esm2022/lib/ui/taon-session-passcode/taon-session-passcode.component.mjs +120 -0
  351. package/websql/esm2022/lib/ui/taon-table/index.mjs +5 -0
  352. package/websql/esm2022/lib/ui/taon-table/taon-table.component.mjs +161 -0
  353. package/websql/esm2022/lib/ui/taon-table/taon-table.module.mjs +57 -0
  354. package/websql/fesm2022/taon.mjs +2140 -836
  355. package/websql/fesm2022/taon.mjs.map +1 -1
  356. package/websql/lib/base-classes/base-context.d.ts +8 -1
  357. package/websql/lib/base-classes/base-injector.d.ts +5 -0
  358. package/websql/lib/base-classes/base.d.ts +8 -3
  359. package/websql/lib/create-context.d.ts +17 -1
  360. package/websql/lib/decorators/classes/subscriber-decorator.d.ts +2 -2
  361. package/websql/lib/decorators/http/http-decorators.d.ts +2 -0
  362. package/websql/lib/endpoint-context.d.ts +3 -2
  363. package/websql/lib/helpers/class-helpers.d.ts +1 -1
  364. package/websql/lib/index.d.ts +25 -16
  365. package/websql/lib/inject.d.ts +1 -8
  366. package/websql/lib/models.d.ts +17 -9
  367. package/websql/lib/realtime/realtime-client.d.ts +8 -2
  368. package/websql/lib/realtime/realtime-core.d.ts +6 -6
  369. package/websql/lib/realtime/realtime-server.d.ts +9 -4
  370. package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc.d.ts +71 -12
  371. package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock.d.ts +4 -4
  372. package/websql/lib/realtime/realtime-strategy/realtime-strategy-socket-io.d.ts +2 -3
  373. package/websql/lib/realtime/realtime-strategy/realtime-strategy.d.ts +4 -5
  374. package/websql/lib/realtime/realtime.models.d.ts +1 -0
  375. package/websql/lib/symbols.d.ts +30 -36
  376. package/websql/lib/ui/directives/index.d.ts +4 -0
  377. package/websql/lib/ui/directives/safe.pipe.d.ts +11 -0
  378. package/websql/lib/ui/directives/taon-inject-html.directive.d.ts +10 -0
  379. package/websql/lib/ui/directives/taon-long-press.directive.d.ts +26 -0
  380. package/websql/lib/ui/index.d.ts +10 -0
  381. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +3 -0
  382. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +33 -0
  383. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +16 -0
  384. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +3 -0
  385. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +17 -0
  386. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +10 -0
  387. package/websql/lib/ui/taon-admin-mode-configuration/index.d.ts +4 -0
  388. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +17 -0
  389. package/websql/lib/ui/taon-full-material.module.d.ts +47 -0
  390. package/websql/lib/ui/taon-github-fork-me-corner/index.d.ts +3 -0
  391. package/websql/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.d.ts +7 -0
  392. package/websql/lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.d.ts +9 -0
  393. package/websql/lib/ui/taon-notifications/index.d.ts +5 -0
  394. package/websql/lib/ui/taon-notifications/taon-notifications.component.d.ts +13 -0
  395. package/websql/lib/ui/taon-notifications/taon-notifications.models.d.ts +7 -0
  396. package/websql/lib/ui/taon-notifications/taon-notifications.module.d.ts +8 -0
  397. package/websql/lib/ui/taon-notifications/taon-notifications.service.d.ts +15 -0
  398. package/websql/lib/ui/taon-progress-bar/index.d.ts +3 -0
  399. package/websql/lib/ui/taon-progress-bar/taon-progress-bar.component.d.ts +19 -0
  400. package/websql/lib/ui/taon-progress-bar/taon-progress-bar.module.d.ts +10 -0
  401. package/websql/lib/ui/taon-session-passcode/index.d.ts +2 -0
  402. package/websql/lib/ui/taon-session-passcode/taon-session-passcode.component.d.ts +39 -0
  403. package/websql/lib/ui/taon-table/index.d.ts +3 -0
  404. package/websql/lib/ui/taon-table/taon-table.component.d.ts +37 -0
  405. package/websql/lib/ui/taon-table/taon-table.module.d.ts +17 -0
  406. package/browser/esm2022/lib/base-classes/base-subscriber.mjs +0 -27
  407. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.mjs +0 -98
  408. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.mjs +0 -45
  409. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.mjs +0 -40
  410. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.mjs +0 -25
  411. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.mjs +0 -4
  412. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.mjs +0 -5
  413. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.mjs +0 -50
  414. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.mjs +0 -48
  415. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.mjs +0 -35
  416. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.mjs +0 -43
  417. package/browser/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.mjs +0 -4
  418. package/browser/lib/base-classes/base-subscriber.d.ts +0 -5
  419. package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.d.ts +0 -22
  420. package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.d.ts +0 -17
  421. package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.d.ts +0 -11
  422. package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.d.ts +0 -11
  423. package/browser/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.d.ts +0 -14
  424. package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.d.ts +0 -3
  425. package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.d.ts +0 -17
  426. package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.d.ts +0 -18
  427. package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.d.ts +0 -12
  428. package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.d.ts +0 -14
  429. package/browser/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.d.ts +0 -12
  430. package/client/esm2022/lib/base-classes/base-subscriber.mjs +0 -27
  431. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.mjs +0 -98
  432. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.mjs +0 -45
  433. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.mjs +0 -40
  434. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.mjs +0 -25
  435. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.mjs +0 -4
  436. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.mjs +0 -5
  437. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.mjs +0 -50
  438. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.mjs +0 -48
  439. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.mjs +0 -35
  440. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.mjs +0 -43
  441. package/client/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.mjs +0 -4
  442. package/client/lib/base-classes/base-subscriber.d.ts +0 -5
  443. package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.d.ts +0 -22
  444. package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.d.ts +0 -17
  445. package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.d.ts +0 -11
  446. package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.d.ts +0 -11
  447. package/client/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.d.ts +0 -14
  448. package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.d.ts +0 -3
  449. package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.d.ts +0 -17
  450. package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.d.ts +0 -18
  451. package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.d.ts +0 -12
  452. package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.d.ts +0 -14
  453. package/client/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.d.ts +0 -12
  454. package/lib/base-classes/base-subscriber.d.ts +0 -4
  455. package/lib/base-classes/base-subscriber.js +0 -25
  456. package/lib/base-classes/base-subscriber.js.map +0 -1
  457. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/index.d.ts +0 -0
  458. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/index.js +0 -5
  459. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.d.ts +0 -22
  460. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.js +0 -139
  461. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.js.map +0 -1
  462. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.d.ts +0 -16
  463. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.js +0 -68
  464. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.js.map +0 -1
  465. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.d.ts +0 -10
  466. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.js +0 -56
  467. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.js.map +0 -1
  468. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.d.ts +0 -10
  469. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.js +0 -50
  470. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.js.map +0 -1
  471. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.d.ts +0 -13
  472. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.js +0 -3
  473. package/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.js.map +0 -1
  474. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.d.ts +0 -2
  475. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.js +0 -6
  476. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.js.map +0 -1
  477. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.d.ts +0 -16
  478. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.js +0 -54
  479. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.js.map +0 -1
  480. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.d.ts +0 -17
  481. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.js +0 -52
  482. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.js.map +0 -1
  483. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.d.ts +0 -11
  484. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.js +0 -39
  485. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.js.map +0 -1
  486. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.d.ts +0 -13
  487. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.js +0 -46
  488. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.js.map +0 -1
  489. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.d.ts +0 -11
  490. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.js +0 -3
  491. package/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.js.map +0 -1
  492. package/websql/esm2022/lib/base-classes/base-subscriber.mjs +0 -27
  493. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.mjs +0 -98
  494. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.mjs +0 -45
  495. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.mjs +0 -40
  496. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.mjs +0 -25
  497. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.mjs +0 -4
  498. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.mjs +0 -5
  499. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.mjs +0 -50
  500. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.mjs +0 -48
  501. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.mjs +0 -35
  502. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.mjs +0 -43
  503. package/websql/esm2022/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.mjs +0 -4
  504. package/websql/lib/base-classes/base-subscriber.d.ts +0 -5
  505. package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.d.ts +0 -22
  506. package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.d.ts +0 -17
  507. package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.d.ts +0 -11
  508. package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.d.ts +0 -11
  509. package/websql/lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc.models.d.ts +0 -14
  510. package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.d.ts +0 -3
  511. package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.d.ts +0 -17
  512. package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.d.ts +0 -18
  513. package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.d.ts +0 -12
  514. package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.d.ts +0 -14
  515. package/websql/lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock.models.d.ts +0 -12
  516. /package/lib/ui/directives/{firedev-inject-html.directive.d.ts → taon-inject-html.directive.d.ts} +0 -0
  517. /package/lib/ui/directives/{firedev-long-press.directive.d.ts → taon-long-press.directive.d.ts} +0 -0
  518. /package/lib/{realtime/realtime-strategy/realtime-strategy-ipc-models → ui}/index.js.map +0 -0
  519. /package/lib/ui/{toan-full-material.module.d.ts → taon-full-material.module.d.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  import 'reflect-metadata';
2
2
  import * as coreHelpers from 'tnp-core/websql';
3
- import { _, Helpers, path } from 'tnp-core/websql';
3
+ import { _ as _$1, Helpers, path } from 'tnp-core/websql';
4
4
  import { Models as Models$1, RestHeaders, Resource, Mapping } from 'ng2-rest/websql';
5
5
  import * as tsorm from 'taon-typeorm/websql';
6
6
  import { OrignalClassKey, Entity, EventSubscriber, DataSource } from 'taon-typeorm/websql';
@@ -9,13 +9,89 @@ import * as JSON5 from 'json5';
9
9
  import { __decorate, __param, __metadata } from 'tslib';
10
10
  import { MySqlQuerySource } from 'taon-type-sql/websql';
11
11
  import { Stor } from 'taon-storage/websql';
12
- import { Subject, Observable, from } from 'rxjs';
12
+ import { Subject, Observable, from, interval, tap, defer, fromEvent, map, debounceTime, distinctUntilChanged, share, Subscription, takeUntil, of } from 'rxjs';
13
13
  import { config } from 'tnp-config/websql';
14
14
  import * as i0 from '@angular/core';
15
- import { Injectable, inject as inject$1 } from '@angular/core';
15
+ import { Injectable, inject as inject$1, EventEmitter, Directive, Input, Output, HostBinding, HostListener, Pipe, NgModule, Component, DestroyRef, Self, ViewChild, ChangeDetectorRef } from '@angular/core';
16
16
  import { JSON10 } from 'json10/websql';
17
17
  import axios from 'axios';
18
18
  import { io } from 'socket.io-client';
19
+ import { Log, Level } from 'ng2-logger/websql';
20
+ import * as i1 from '@angular/platform-browser';
21
+ import { A11yModule } from '@angular/cdk/a11y';
22
+ import * as i5 from '@angular/cdk/drag-drop';
23
+ import { DragDropModule } from '@angular/cdk/drag-drop';
24
+ import { ScrollingModule } from '@angular/cdk/scrolling';
25
+ import { CdkStepperModule } from '@angular/cdk/stepper';
26
+ import { CdkTableModule } from '@angular/cdk/table';
27
+ import { CdkTreeModule } from '@angular/cdk/tree';
28
+ import { MatAutocompleteModule } from '@angular/material/autocomplete';
29
+ import { MatBadgeModule } from '@angular/material/badge';
30
+ import { MatBottomSheetModule } from '@angular/material/bottom-sheet';
31
+ import * as i6$1 from '@angular/material/button';
32
+ import { MatButtonModule } from '@angular/material/button';
33
+ import * as i7 from '@angular/material/card';
34
+ import { MatCardModule } from '@angular/material/card';
35
+ import * as i8 from '@angular/material/checkbox';
36
+ import { MatCheckboxModule } from '@angular/material/checkbox';
37
+ import { MatButtonToggleModule } from '@angular/material/button-toggle';
38
+ import { MatStepperModule } from '@angular/material/stepper';
39
+ import { MatDialogModule } from '@angular/material/dialog';
40
+ import { MatExpansionModule } from '@angular/material/expansion';
41
+ import { MatGridListModule } from '@angular/material/grid-list';
42
+ import * as i6 from '@angular/material/icon';
43
+ import { MatIconModule } from '@angular/material/icon';
44
+ import * as i11$1 from '@angular/material/list';
45
+ import { MatListModule } from '@angular/material/list';
46
+ import { MatDatepickerModule } from '@angular/material/datepicker';
47
+ import { MatPaginatorModule } from '@angular/material/paginator';
48
+ import { MatProgressBarModule } from '@angular/material/progress-bar';
49
+ import { MatChipsModule } from '@angular/material/chips';
50
+ import { MatDividerModule } from '@angular/material/divider';
51
+ import * as i4 from '@angular/material/input';
52
+ import { MatInputModule } from '@angular/material/input';
53
+ import { MatMenuModule } from '@angular/material/menu';
54
+ import { MatNativeDateModule, MatRippleModule } from '@angular/material/core';
55
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
56
+ import { MatRadioModule } from '@angular/material/radio';
57
+ import { MatSelectModule } from '@angular/material/select';
58
+ import * as i10 from '@angular/material/sidenav';
59
+ import { MatSidenavModule } from '@angular/material/sidenav';
60
+ import { MatSliderModule } from '@angular/material/slider';
61
+ import { MatSlideToggleModule } from '@angular/material/slide-toggle';
62
+ import { MatSnackBarModule } from '@angular/material/snack-bar';
63
+ import { MatSortModule } from '@angular/material/sort';
64
+ import { MatTableModule } from '@angular/material/table';
65
+ import * as i11 from '@angular/material/tabs';
66
+ import { MatTabsModule } from '@angular/material/tabs';
67
+ import { MatToolbarModule } from '@angular/material/toolbar';
68
+ import { MatTooltipModule } from '@angular/material/tooltip';
69
+ import { MatTreeModule } from '@angular/material/tree';
70
+ import * as i2$1 from '@angular/common';
71
+ import { CommonModule } from '@angular/common';
72
+ import * as i1$1 from '@ngneat/hot-toast';
73
+ import * as i2 from '@angular/forms';
74
+ import { FormGroup, FormControl, ReactiveFormsModule, FormsModule } from '@angular/forms';
75
+ import { PasswordModule } from 'primeng/password';
76
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
77
+ import * as i1$2 from 'ngx-progressbar';
78
+ import { NgProgressModule } from 'ngx-progressbar';
79
+ import * as _ from 'lodash';
80
+ import * as i2$2 from '@angular/material/form-field';
81
+ import { MatFormFieldModule } from '@angular/material/form-field';
82
+ import * as i3 from '@ng-matero/extensions/grid';
83
+ import { MtxGridModule } from '@ng-matero/extensions/grid';
84
+ import * as i1$3 from 'static-columns/websql';
85
+ import { StaticColumnsModule } from 'static-columns/websql';
86
+ import * as i4$1 from 'ngx-scrollbar';
87
+ import { NgScrollbarModule } from 'ngx-scrollbar';
88
+ import * as i1$4 from '@angular/router';
89
+ import 'brace';
90
+ import 'brace/mode/css';
91
+ import 'brace/mode/typescript';
92
+ import 'brace/theme/github';
93
+ import * as i13 from 'ngx-pipes';
94
+ import { NgArrayPipesModule } from 'ngx-pipes';
19
95
 
20
96
  var Symbols;
21
97
  (function (Symbols) {
@@ -25,45 +101,52 @@ var Symbols;
25
101
  Symbols.orignalClass = OrignalClassKey;
26
102
  Symbols.orignalClassClonesObj = `$$originalClassClonesObj$$`;
27
103
  Symbols.classMethodsNames = `$$classMethodsNames$$`;
28
- Symbols.REALTIME = {
29
- NAMESPACE: (contextName) => `${contextName}:taonRealtimeNsp`,
104
+ /**
105
+ * for backendSocket.in(ROOM_NAME).emit(EVENT)
106
+ *
107
+ * Room names are uniqe..
108
+ * here I am limiting number of event for clients.
109
+ */
110
+ class Realtime {
111
+ constructor() {
112
+ this.KEYroomSubscribe = `roomSubscribe`;
113
+ this.KEYroomUnsubscribe = `roomUnsubscribe`;
114
+ }
115
+ NAMESPACE(contextName) {
116
+ return `${contextName}-taonRealtimeNsp`;
117
+ }
30
118
  TABLE_CHANGE(contextName, tableName) {
31
119
  return `${contextName}:listentablename${tableName}`;
32
- },
33
- /**
34
- * for backendSocket.in(ROOM_NAME).emit(EVENT)
35
- *
36
- * Room names are uniqe..
37
- * here I am limiting number of event for clients.
38
- */
39
- ROOM_NAME: {
40
- CUSTOM(contextName, customEvent) {
41
- return `${contextName}:roomcustomevnet${customEvent}`;
42
- },
43
- /**
44
- * @LAST TODO
45
- */
46
- SUBSCRIBER_EVENT(contextName, className, propertyName) {
47
- return `${contextName}:room${_.camelCase(className)}${propertyName}`.toLowerCase();
48
- },
49
- UPDATE_ENTITY(contextName, className, entityId) {
50
- return `${contextName}:room${_.camelCase(className)}${entityId}`.toLowerCase();
51
- },
52
- UPDATE_ENTITY_PROPERTY(contextName, className, property, entityId) {
53
- return `${contextName}:room${_.camelCase(className)}${_.camelCase(property)}${entityId}`.toLowerCase();
54
- },
55
- SUBSCRIBE: {
56
- CUSTOM: (contextName) => `${contextName}:roomSubscribeCustomRoomEvent`,
57
- ENTITY_UPDATE_EVENTS: (contextName) => `${contextName}:roomSubscribeEntityEvents`,
58
- ENTITY_PROPERTY_UPDATE_EVENTS: (contextName) => `${contextName}:roomSubscribeEntityPropertyEvents`,
59
- },
60
- UNSUBSCRIBE: {
61
- CUSTOM: (contextName) => `${contextName}:roomUnsubscribeCustomRoomEvent`,
62
- ENTITY_UPDATE_EVENTS: (contextName) => `${contextName}:roomUnsubscribeEntityEvents`,
63
- ENTITY_PROPERTY_UPDATE_EVENTS: (contextName) => `${contextName}:roomUnsubscribeEntityPropertyEvents`,
64
- },
65
- },
66
- };
120
+ }
121
+ ROOM_NAME_CUSTOM(contextName, customEvent) {
122
+ return `${contextName}:CustomRoomEvent${customEvent}`;
123
+ }
124
+ ROOM_SUBSCRIBE_CUSTOM(contextName) {
125
+ return `${contextName}:${this.KEYroomSubscribe}CustomRoomEvent`;
126
+ }
127
+ ROOM_UNSUBSCRIBE_CUSTOM(contextName) {
128
+ return `${contextName}:${this.KEYroomUnsubscribe}CustomRoomEvent`;
129
+ }
130
+ ROOM_NAME_UPDATE_ENTITY(contextName, className, entityId) {
131
+ return `${contextName}:room${_$1.camelCase(className)}${entityId}`.toLowerCase();
132
+ }
133
+ ROOM_SUBSCRIBE_ENTITY_UPDATE_EVENTS(contextName) {
134
+ return `${contextName}:${this.KEYroomSubscribe}EntityEvents`;
135
+ }
136
+ ROOM_UNSUBSCRIBE_ENTITY_UPDATE_EVENTS(contextName) {
137
+ return `${contextName}:${this.KEYroomUnsubscribe}EntityEvents`;
138
+ }
139
+ ROOM_NAME_UPDATE_ENTITY_PROPERTY(contextName, className, property, entityId) {
140
+ return `${contextName}:room${_$1.camelCase(className)}${_$1.camelCase(property)}${entityId}`.toLowerCase();
141
+ }
142
+ ROOM_SUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(contextName) {
143
+ return `${contextName}:${this.KEYroomSubscribe}EntityPropertyEvents`;
144
+ }
145
+ ROOM_UNSUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(contextName) {
146
+ return `${contextName}:${this.KEYroomUnsubscribe}EntityPropertyEvents`;
147
+ }
148
+ }
149
+ Symbols.REALTIME = new Realtime();
67
150
  Symbols.metadata = {
68
151
  className: `class:realname`,
69
152
  options: {
@@ -107,7 +190,7 @@ var Validators;
107
190
  (function (Validators) {
108
191
  Validators.classNameVlidation = (className, target) => {
109
192
  setTimeout(() => {
110
- if (_.isUndefined(className)) {
193
+ if (_$1.isUndefined(className)) {
111
194
  throw `[Taon]
112
195
  Please provide "className" property for each Controller and Entity:
113
196
 
@@ -127,7 +210,7 @@ var Validators;
127
210
  `;
128
211
  }
129
212
  });
130
- return _.isUndefined(className) ? target.name : className;
213
+ return _$1.isUndefined(className) ? target.name : className;
131
214
  };
132
215
  Validators.checkIfMethodsWithReponseTYpeAlowed = (methods, current) => {
133
216
  const defaultResponseType = 'text or JSON';
@@ -150,8 +233,8 @@ var Validators;
150
233
  }
151
234
  };
152
235
  Validators.validateClassFunctions = (controllers, entities, proviers, repositories) => {
153
- if (_.isArray(controllers) &&
154
- controllers.filter(f => !_.isFunction(f)).length > 0) {
236
+ if (_$1.isArray(controllers) &&
237
+ controllers.filter(f => !_$1.isFunction(f)).length > 0) {
155
238
  console.error('controllers', controllers);
156
239
  throw `
157
240
 
@@ -159,8 +242,8 @@ var Validators;
159
242
 
160
243
  `;
161
244
  }
162
- if (_.isArray(entities) &&
163
- entities.filter(f => !_.isFunction(f)).length > 0) {
245
+ if (_$1.isArray(entities) &&
246
+ entities.filter(f => !_$1.isFunction(f)).length > 0) {
164
247
  console.error('entites', entities);
165
248
  throw `
166
249
 
@@ -170,7 +253,7 @@ var Validators;
170
253
  }
171
254
  };
172
255
  Validators.preventUndefinedModel = (model, id) => {
173
- if (_.isUndefined(model)) {
256
+ if (_$1.isUndefined(model)) {
174
257
  throw `Bad update by id, config, id: ${id}`;
175
258
  }
176
259
  };
@@ -181,7 +264,7 @@ var Validators;
181
264
  var TaonHelpers;
182
265
  (function (TaonHelpers) {
183
266
  TaonHelpers.fillUpTo = (s, nCharacters) => {
184
- return _.times(nCharacters, n => {
267
+ return _$1.times(nCharacters, n => {
185
268
  if (s.charAt(n)) {
186
269
  return s.charAt(n);
187
270
  }
@@ -229,7 +312,7 @@ var TaonHelpers;
229
312
  return {};
230
313
  };
231
314
  TaonHelpers.parseJSONwithStringJSONs = (object, waring = false) => {
232
- if (!_.isObject(object)) {
315
+ if (!_$1.isObject(object)) {
233
316
  if (waring) {
234
317
  console.error(`
235
318
  parseJSONwithStringJSONs(...)
@@ -238,7 +321,7 @@ var TaonHelpers;
238
321
  }
239
322
  return object;
240
323
  }
241
- let res = _.cloneDeep(object);
324
+ let res = _$1.cloneDeep(object);
242
325
  Object.keys(res).forEach(key => {
243
326
  let isJson = false;
244
327
  try {
@@ -303,7 +386,7 @@ var ClassHelpers;
303
386
  * TODO - repalce in every place when getting class fn from object
304
387
  */
305
388
  ClassHelpers.getClassFnFromObject = (json) => {
306
- if (_.isUndefined(json) || _.isNull(json)) {
389
+ if (_$1.isUndefined(json) || _$1.isNull(json)) {
307
390
  return;
308
391
  }
309
392
  if (json.constructor) {
@@ -343,26 +426,26 @@ var ClassHelpers;
343
426
  : classFnOrObject?.constructor[Symbols.fullClassNameStaticProperty]) ||
344
427
  void 0);
345
428
  };
346
- ClassHelpers.getUniquKey = (classFnOrObject) => {
347
- const classFn = _.isFunction(classFnOrObject)
429
+ ClassHelpers.getUniqueKey = (classFnOrObject) => {
430
+ const classFn = _$1.isFunction(classFnOrObject)
348
431
  ? classFnOrObject
349
432
  : classFnOrObject.constructor;
350
433
  const config = Reflect.getMetadata(Symbols.metadata.options.controller, classFn);
351
434
  return config.uniqueKeyProp;
352
435
  };
353
436
  ClassHelpers.isContextClassObject = (obj) => {
354
- if (!_.isObject(obj) ||
355
- _.isArray(obj) ||
356
- _.isRegExp(obj) ||
357
- _.isBuffer(obj) ||
358
- _.isArrayBuffer(obj)) {
437
+ if (!_$1.isObject(obj) ||
438
+ _$1.isArray(obj) ||
439
+ _$1.isRegExp(obj) ||
440
+ _$1.isBuffer(obj) ||
441
+ _$1.isArrayBuffer(obj)) {
359
442
  return false;
360
443
  }
361
- if (_.isDate(obj)) {
444
+ if (_$1.isDate(obj)) {
362
445
  return true;
363
446
  }
364
447
  const className = ClassHelpers.getName(obj);
365
- return _.isString(className) && className !== 'Object';
448
+ return _$1.isString(className) && className !== 'Object';
366
449
  };
367
450
  ClassHelpers.setName = (target, className) => {
368
451
  Validators.classNameVlidation(className, target);
@@ -374,7 +457,7 @@ var ClassHelpers;
374
457
  }
375
458
  targets.push(target);
376
459
  let targetProto = Object.getPrototypeOf(target);
377
- if (_.isFunction(targetProto) &&
460
+ if (_$1.isFunction(targetProto) &&
378
461
  ClassHelpers.getName(targetProto) === className) {
379
462
  return true;
380
463
  }
@@ -382,7 +465,7 @@ var ClassHelpers;
382
465
  };
383
466
  ClassHelpers.getControllerConfig = (target) => {
384
467
  const classMetadataOptions = Reflect.getMetadata(Symbols.metadata.options.controller, target);
385
- const classMetadata = _.merge(new Models.ControllerConfig(), classMetadataOptions);
468
+ const classMetadata = _$1.merge(new Models.ControllerConfig(), classMetadataOptions);
386
469
  const methodNames = ClassHelpers.getMethodsNames(target); // Object.getOwnPropertyNames(target.prototype);
387
470
  for (const methodName of methodNames) {
388
471
  const methodMetadata = Reflect.getMetadata(Symbols.metadata.options.controllerMethod, target, methodName);
@@ -417,7 +500,7 @@ var ClassHelpers;
417
500
  if (!classOrClassInstance) {
418
501
  return allMethodsNames;
419
502
  }
420
- const isClassFunction = _.isFunction(classOrClassInstance);
503
+ const isClassFunction = _$1.isFunction(classOrClassInstance);
421
504
  const classFun = isClassFunction
422
505
  ? classOrClassInstance
423
506
  : Object.getPrototypeOf(classOrClassInstance);
@@ -425,7 +508,7 @@ var ClassHelpers;
425
508
  ? classOrClassInstance?.prototype
426
509
  : classOrClassInstance;
427
510
  const prototypeObj = Object.getPrototypeOf(objectToCheck || {});
428
- const properties = _.uniq([
511
+ const properties = _$1.uniq([
429
512
  ...Object.getOwnPropertyNames(objectToCheck || {}),
430
513
  ...Object.getOwnPropertyNames(prototypeObj || {}),
431
514
  ...Object.keys(objectToCheck || {}),
@@ -442,13 +525,13 @@ var ClassHelpers;
442
525
  return ClassHelpers.getMethodsNames(Object.getPrototypeOf(classFun), allMethodsNames);
443
526
  };
444
527
  ClassHelpers.getControllerConfigs = (target, configs = [], callerTarget) => {
445
- if (!_.isFunction(target)) {
528
+ if (!_$1.isFunction(target)) {
446
529
  throw `[typescript-class-helper][getClassConfig] Cannot get class config from: ${target}`;
447
530
  }
448
531
  let config;
449
532
  const parentClass = Object.getPrototypeOf(target);
450
533
  const parentName = parentClass ? ClassHelpers.getName(parentClass) : void 0;
451
- const isValidParent = _.isFunction(parentClass) && parentName !== '';
534
+ const isValidParent = _$1.isFunction(parentClass) && parentName !== '';
452
535
  config = ClassHelpers.getControllerConfig(target);
453
536
  configs.push(config);
454
537
  return isValidParent
@@ -457,7 +540,7 @@ var ClassHelpers;
457
540
  };
458
541
  ClassHelpers.getCalculatedPathFor = (target) => {
459
542
  const configs = ClassHelpers.getControllerConfigs(target);
460
- const parentscalculatedPath = _.slice(configs, 1)
543
+ const parentscalculatedPath = _$1.slice(configs, 1)
461
544
  .reverse()
462
545
  .map(bc => {
463
546
  if (TaonHelpers.isGoodPath(bc.path)) {
@@ -565,7 +648,7 @@ const metaReq = (method, path, target, propertyKey, descriptor, pathOrOptions, p
565
648
  if (methodConfig.parameters.hasOwnProperty(key)) {
566
649
  const element = methodConfig.parameters[key];
567
650
  if (element.paramType === 'Path' &&
568
- _.isString(element.paramName) &&
651
+ _$1.isString(element.paramName) &&
569
652
  element.paramName.trim().length > 0) {
570
653
  paramsPathConcatedPath += `/${element.paramName}/:${element.paramName}`;
571
654
  }
@@ -668,6 +751,7 @@ var Http;
668
751
  Http.DELETE = DELETE;
669
752
  Http.PATCH = PATCH;
670
753
  Http.HEAD = HEAD;
754
+ Http.Response = Models$1.HttpResponse;
671
755
  let Param;
672
756
  (function (Param) {
673
757
  Param.Query = Query;
@@ -710,11 +794,18 @@ class BaseInjector {
710
794
  }
711
795
  }
712
796
  /**
797
+ * @deprecated use ctx instead
713
798
  * Current endpoint context
714
799
  */
715
800
  get __endpoint_context__() {
716
801
  return this[Symbols.ctxInClassOrClassObj];
717
802
  }
803
+ /**
804
+ * get current endpoint context
805
+ */
806
+ get ctx() {
807
+ return this.__endpoint_context__;
808
+ }
718
809
  /**
719
810
  * inject crud repo for entity
720
811
  */
@@ -842,7 +933,7 @@ class BaseInjector {
842
933
  }
843
934
  clone(override) {
844
935
  const classFn = ClassHelpers.getClassFnFromObject(this);
845
- const result = _.merge(new classFn(), _.merge(_.cloneDeep(this), override));
936
+ const result = _$1.merge(new classFn(), _$1.merge(_$1.cloneDeep(this), override));
846
937
  return result;
847
938
  }
848
939
  }
@@ -868,7 +959,7 @@ BaseController = __decorate([
868
959
  */
869
960
  let BaseCrudController = class BaseCrudController extends BaseController {
870
961
  async _() {
871
- if (!_.isFunction(this.entityClassResolveFn)) {
962
+ if (!_$1.isFunction(this.entityClassResolveFn)) {
872
963
  Helpers.warn(`Skipping initing CRUD controller ${ClassHelpers.getName(this)} because entityClassResolveFn is not provided.`);
873
964
  return;
874
965
  }
@@ -904,7 +995,7 @@ let BaseCrudController = class BaseCrudController extends BaseController {
904
995
  Validators.preventUndefinedModel(model, id);
905
996
  let value = model[property];
906
997
  let result;
907
- if (_.isString(value) || _.isArray(value)) {
998
+ if (_$1.isString(value) || _$1.isArray(value)) {
908
999
  result = value.slice(alreadyLength);
909
1000
  }
910
1001
  return result;
@@ -1090,7 +1181,7 @@ class BaseClass {
1090
1181
  async _() { }
1091
1182
  clone(override) {
1092
1183
  const classFn = ClassHelpers.getClassFnFromObject(this);
1093
- const result = _.merge(new classFn(), _.merge(_.cloneDeep(this), override));
1184
+ const result = _$1.merge(new classFn(), _$1.merge(_$1.cloneDeep(this), override));
1094
1185
  return result;
1095
1186
  }
1096
1187
  }
@@ -1351,7 +1442,7 @@ let BaseRepository = class BaseRepository extends BaseInjector {
1351
1442
  * Removes a given entities from the database.
1352
1443
  */
1353
1444
  async remove(idOrEntity) {
1354
- if (_.isObject(idOrEntity)) {
1445
+ if (_$1.isObject(idOrEntity)) {
1355
1446
  idOrEntity = idOrEntity.id;
1356
1447
  }
1357
1448
  const deletedEntity = await this.repo.findOne({
@@ -1376,7 +1467,7 @@ let BaseRepository = class BaseRepository extends BaseInjector {
1376
1467
  }
1377
1468
  async bulkRemove(idsOrEntities) {
1378
1469
  idsOrEntities = idsOrEntities.map(id => {
1379
- return _.isObject(id) ? id.id : id;
1470
+ return _$1.isObject(id) ? id.id : id;
1380
1471
  });
1381
1472
  const models = [];
1382
1473
  for (let index = 0; index < idsOrEntities.length; index++) {
@@ -1417,10 +1508,10 @@ let BaseRepository = class BaseRepository extends BaseInjector {
1417
1508
  async updateById(id, item) {
1418
1509
  const allowedPropsToUpdate = [];
1419
1510
  for (const key in item) {
1420
- if (_.isObject(item) &&
1511
+ if (_$1.isObject(item) &&
1421
1512
  item.hasOwnProperty(key) &&
1422
1513
  typeof item[key] !== 'object' &&
1423
- !_.isUndefined(this.repo.metadata.ownColumns.find(c => c.propertyName === key))) {
1514
+ !_$1.isUndefined(this.repo.metadata.ownColumns.find(c => c.propertyName === key))) {
1424
1515
  allowedPropsToUpdate.push(key);
1425
1516
  }
1426
1517
  }
@@ -1632,14 +1723,14 @@ const globalPublicStorage = Helpers.isBrowser ? window : global;
1632
1723
  ;
1633
1724
  ({}); // @--end-of-file-for-module=taon lib/storage.ts
1634
1725
 
1635
- const ENV$1 = Helpers.isBrowser ? window['ENV'] : global['ENV'];
1726
+ const ENV$2 = Helpers.isBrowser ? window['ENV'] : global['ENV'];
1636
1727
  class TaonAdmin {
1637
1728
  constructor() {
1638
1729
  this.scrollableEnabled = false; // TOOD false by default
1639
1730
  this.onEditMode = new Subject();
1640
1731
  this.onEditMode$ = this.onEditMode.asObservable();
1641
1732
  this.enabledTabs = [];
1642
- this.scrollableEnabled = !!ENV$1?.useGlobalNgxScrollbar;
1733
+ this.scrollableEnabled = !!ENV$2?.useGlobalNgxScrollbar;
1643
1734
  }
1644
1735
  static get Instance() {
1645
1736
  if (!globalPublicStorage[config.frameworkNames.productionFrameworkName]) {
@@ -1764,7 +1855,7 @@ const getResponseValue = (response, options) => {
1764
1855
  ;
1765
1856
  ({}); // @--end-of-file-for-module=taon lib/get-response-value.ts
1766
1857
 
1767
- const ENV = Helpers.isBrowser ? window['ENV'] : global['ENV'];
1858
+ const ENV$1 = Helpers.isBrowser ? window['ENV'] : global['ENV'];
1768
1859
  ;
1769
1860
  ({}); // @--end-of-file-for-module=taon lib/env.ts
1770
1861
 
@@ -1786,17 +1877,19 @@ class RealtimeSubsManager {
1786
1877
  return;
1787
1878
  }
1788
1879
  if (!this.isListening) {
1789
- const subscribeEvent = Symbols.REALTIME.ROOM_NAME.SUBSCRIBE.CUSTOM(this.options.core.ctx.contextName);
1790
1880
  this.isListening = true;
1791
1881
  if (this.options.customEvent) {
1882
+ const subscribeEvent = Symbols.REALTIME.ROOM_SUBSCRIBE_CUSTOM(this.options.core.ctx.contextName);
1792
1883
  realtime.emit(subscribeEvent, this.options.roomName);
1793
1884
  }
1794
1885
  else {
1795
- if (_.isString(this.options.property)) {
1796
- realtime.emit(Symbols.REALTIME.ROOM_NAME.SUBSCRIBE.ENTITY_PROPERTY_UPDATE_EVENTS(this.options.core.ctx.contextName), this.options.roomName);
1886
+ if (_$1.isString(this.options.property)) {
1887
+ const subscribeEvent = Symbols.REALTIME.ROOM_SUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(this.options.core.ctx.contextName);
1888
+ realtime.emit(subscribeEvent, this.options.roomName);
1797
1889
  }
1798
1890
  else {
1799
- realtime.emit(Symbols.REALTIME.ROOM_NAME.SUBSCRIBE.ENTITY_UPDATE_EVENTS(this.options.core.ctx.contextName), this.options.roomName);
1891
+ const subscribeEvent = Symbols.REALTIME.ROOM_SUBSCRIBE_ENTITY_UPDATE_EVENTS(this.options.core.ctx.contextName);
1892
+ realtime.emit(subscribeEvent, this.options.roomName);
1800
1893
  }
1801
1894
  }
1802
1895
  realtime.on(this.options.roomName, data => {
@@ -1812,16 +1905,16 @@ class RealtimeSubsManager {
1812
1905
  if (this.observers.length === 0) {
1813
1906
  this.isListening = false;
1814
1907
  const { core, customEvent, roomName, property } = this.options;
1815
- const realtime = core.FE_REALTIME;
1908
+ const realtime = core.socketFE;
1816
1909
  if (customEvent) {
1817
- realtime.emit(Symbols.REALTIME.ROOM_NAME.UNSUBSCRIBE.CUSTOM(this.options.core.ctx.contextName), roomName);
1910
+ realtime.emit(Symbols.REALTIME.ROOM_UNSUBSCRIBE_CUSTOM(this.options.core.ctx.contextName), roomName);
1818
1911
  }
1819
1912
  else {
1820
- if (_.isString(property)) {
1821
- realtime.emit(Symbols.REALTIME.ROOM_NAME.UNSUBSCRIBE.ENTITY_PROPERTY_UPDATE_EVENTS(this.options.core.ctx.contextName), roomName);
1913
+ if (_$1.isString(property)) {
1914
+ realtime.emit(Symbols.REALTIME.ROOM_UNSUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(this.options.core.ctx.contextName), roomName);
1822
1915
  }
1823
1916
  else {
1824
- realtime.emit(Symbols.REALTIME.ROOM_NAME.UNSUBSCRIBE.ENTITY_UPDATE_EVENTS(this.options.core.ctx.contextName), roomName);
1917
+ realtime.emit(Symbols.REALTIME.ROOM_UNSUBSCRIBE_ENTITY_UPDATE_EVENTS(this.options.core.ctx.contextName), roomName);
1825
1918
  }
1826
1919
  }
1827
1920
  }
@@ -1848,7 +1941,7 @@ class RealtimeSubsManager {
1848
1941
  class RealtimeClient {
1849
1942
  constructor(core) {
1850
1943
  this.core = core;
1851
- this.subsmanagers = {};
1944
+ this.subsManagers = {};
1852
1945
  this.core = core;
1853
1946
  if (!core.ctx.disabledRealtime) {
1854
1947
  this.init();
@@ -1863,20 +1956,24 @@ class RealtimeClient {
1863
1956
  console.info('[CLIENT] NAMESPACE GLOBAL ', nspPath.global.href + ` host: ${this.core.ctx.host}`);
1864
1957
  this.core.ctx.logRealtime &&
1865
1958
  console.info('[CLIENT] NAMESPACE REALTIME', nspPath.realtime.href + ` host: ${this.core.ctx.host}`);
1866
- this.core.FE = this.core.strategy.io(nspPath.global.origin, {
1959
+ this.core.conectSocketFE = this.core.strategy.ioClient(nspPath.global.origin, {
1867
1960
  path: nspPath.global.pathname,
1868
1961
  });
1869
- if (this.core.FE.on) {
1870
- this.core.FE.on('connect', () => {
1871
- console.info(`[CLIENT] conented to GLOBAL namespace ${this.core.FE.id} of host: ${this.core.ctx.host}`);
1962
+ if (this.core.conectSocketFE.on) {
1963
+ this.core.conectSocketFE.on('connect', () => {
1964
+ this.core.ctx.logRealtime &&
1965
+ console.info(`[CLIENT] connected to GLOBAL namespace ${nspPath.global.pathname}` +
1966
+ ` of host: ${this.core.ctx.host}`);
1872
1967
  });
1873
1968
  }
1874
- this.core.FE_REALTIME = this.core.strategy.io(nspPath.realtime.origin, {
1969
+ this.core.socketFE = this.core.strategy.ioClient(nspPath.realtime.origin, {
1875
1970
  path: nspPath.realtime.pathname,
1876
1971
  });
1877
- if (this.core.FE_REALTIME.on) {
1878
- this.core.FE_REALTIME.on('connect', () => {
1879
- console.info(`[CLIENT] conented to REALTIME namespace ${this.core.FE_REALTIME.id} host: ${this.core.ctx.host}`);
1972
+ if (this.core.socketFE.on) {
1973
+ this.core.socketFE.on('connect', () => {
1974
+ this.core.ctx.logRealtime &&
1975
+ console.info(`[CLIENT] connected to REALTIME namespace ${nspPath.realtime.pathname}` +
1976
+ ` host: ${this.core.ctx.host}`);
1880
1977
  });
1881
1978
  }
1882
1979
  }
@@ -1891,7 +1988,7 @@ class RealtimeClient {
1891
1988
  options = options || {};
1892
1989
  const { property, customEvent } = options;
1893
1990
  const className = !customEvent && ClassHelpers.getName(entityClassFn);
1894
- if (_.isString(property)) {
1991
+ if (_$1.isString(property)) {
1895
1992
  if (property.trim() === '') {
1896
1993
  throw new Error(`[Taon][listenChangesEntity.. incorect property '' for ${className}`);
1897
1994
  }
@@ -1911,12 +2008,12 @@ to use socket realtime connection;
1911
2008
  }
1912
2009
  let roomName;
1913
2010
  if (customEvent) {
1914
- roomName = Symbols.REALTIME.ROOM_NAME.CUSTOM(this.core.ctx.contextName, customEvent);
2011
+ roomName = Symbols.REALTIME.ROOM_NAME_CUSTOM(this.core.ctx.contextName, customEvent);
1915
2012
  }
1916
2013
  else {
1917
- roomName = _.isString(property)
1918
- ? Symbols.REALTIME.ROOM_NAME.UPDATE_ENTITY_PROPERTY(this.core.ctx.contextName, className, property, idOrUniqValue)
1919
- : Symbols.REALTIME.ROOM_NAME.UPDATE_ENTITY(this.core.ctx.contextName, className, idOrUniqValue);
2014
+ roomName = _$1.isString(property)
2015
+ ? Symbols.REALTIME.ROOM_NAME_UPDATE_ENTITY_PROPERTY(this.core.ctx.contextName, className, property, idOrUniqValue)
2016
+ : Symbols.REALTIME.ROOM_NAME_UPDATE_ENTITY(this.core.ctx.contextName, className, idOrUniqValue);
1920
2017
  }
1921
2018
  const roomSubOptions = {
1922
2019
  core: this.core,
@@ -1924,13 +2021,13 @@ to use socket realtime connection;
1924
2021
  roomName,
1925
2022
  customEvent,
1926
2023
  };
1927
- const subManagerId = this.getRoomIdFrom(roomSubOptions);
1928
- if (!this.subsmanagers[subManagerId]) {
1929
- this.subsmanagers[subManagerId] = new RealtimeSubsManager(roomSubOptions);
2024
+ const subManagerId = this.getUniqueIdentifierForConnection(roomSubOptions);
2025
+ if (!this.subsManagers[subManagerId]) {
2026
+ this.subsManagers[subManagerId] = new RealtimeSubsManager(roomSubOptions);
1930
2027
  }
1931
- const inst = this.subsmanagers[subManagerId];
2028
+ const inst = this.subsManagers[subManagerId];
1932
2029
  inst.add(observer);
1933
- inst.startListenIfNotStarted(this.core.FE_REALTIME);
2030
+ inst.startListenIfNotStarted(this.core.socketFE);
1934
2031
  return () => {
1935
2032
  inst.remove(observer);
1936
2033
  };
@@ -1953,7 +2050,7 @@ to use socket realtime connection;
1953
2050
  */
1954
2051
  listenChangesEntityObj(entity, options) {
1955
2052
  const classFn = ClassHelpers.getClassFnFromObject(entity);
1956
- const uniqueKey = ClassHelpers.getUniquKey(classFn);
2053
+ const uniqueKey = ClassHelpers.getUniqueKey(classFn);
1957
2054
  return this.listenChangesEntity(classFn, entity[uniqueKey], options);
1958
2055
  }
1959
2056
  listenChangesCustomEvent(customEvent) {
@@ -1961,7 +2058,15 @@ to use socket realtime connection;
1961
2058
  customEvent,
1962
2059
  });
1963
2060
  }
1964
- getRoomIdFrom(options) {
2061
+ /**
2062
+ * Trigger custom event on backend
2063
+ * @param customEvent global event name
2064
+ * @param dataToPush
2065
+ */
2066
+ triggerCustomEvent(customEvent, dataToPush) {
2067
+ this.core.socketFE.emit(customEvent, dataToPush);
2068
+ }
2069
+ getUniqueIdentifierForConnection(options) {
1965
2070
  const url = new URL(options.core.ctx.host);
1966
2071
  return `${this.core.ctx.contextName}:${url.origin}|${options.roomName}|${options.property}|${options.customEvent}`;
1967
2072
  }
@@ -1969,138 +2074,142 @@ to use socket realtime connection;
1969
2074
  ;
1970
2075
  ({}); // @--end-of-file-for-module=taon lib/realtime/realtime-client.ts
1971
2076
 
1972
- const SOCKET_EVENT_DEBOUNCE = 500;
1973
2077
  class RealtimeServer {
1974
2078
  constructor(core) {
1975
2079
  this.core = core;
1976
- this.jobs = {};
1977
2080
  this.core = core;
1978
2081
  if (!core.ctx.disabledRealtime) {
1979
2082
  this.init();
1980
2083
  }
1981
2084
  }
1982
2085
  init() {
2086
+ if (!this.core.ctx.config.frontendHost) {
2087
+ console.warn(`[Taon][Realtime]
2088
+
2089
+ Frontend host is not defined
2090
+ REALTIME COMMUNICATION WILL NOT WORK
2091
+
2092
+ provide "frontendHost" property in your taon config
2093
+
2094
+ `);
2095
+ }
1983
2096
  const nspPath = {
1984
2097
  global: this.core.pathFor(),
1985
2098
  realtime: this.core.pathFor(Symbols.REALTIME.NAMESPACE(this.core.ctx.contextName)),
1986
2099
  };
1987
- this.core.BE = new this.core.strategy.Server(this.core.ctx.serverTcpUdp, {
2100
+ this.core.connectSocketBE = this.core.strategy.ioServer(Helpers.isWebSQL ? this.core.ctx.uri.origin : this.core.ctx.serverTcpUdp, {
1988
2101
  path: nspPath.global.pathname,
1989
2102
  cors: {
1990
2103
  origin: this.core.ctx.config.frontendHost,
1991
2104
  methods: this.core.allHttpMethods,
1992
2105
  },
1993
- });
2106
+ }, // @ts-ignore
2107
+ this.core.ctx);
1994
2108
  this.core.ctx.logRealtime &&
1995
- console.info(`CREATE GLOBAL NAMESPACE: '${this.core.BE.path()}' , path: '${nspPath.global.pathname}'`);
1996
- this.core.BE.on('connection', clientSocket => {
1997
- if (Helpers.isElectron) {
1998
- // @ts-ignore
1999
- this.core.BE.emit('connect'); // TODO QUICK_FIX
2000
- }
2001
- console.info(`client conected to namespace "${clientSocket.nsp?.name}", host: ${this.core.ctx.host}`);
2109
+ console.info(`[backend] CREATE GLOBAL NAMESPACE: '${this.core.connectSocketBE.path()}'` +
2110
+ ` , path: '${nspPath.global.pathname}'`);
2111
+ this.core.connectSocketBE.on('connection', clientSocket => {
2112
+ console.info(`[backend] client connected to namespace "${nspPath.global.pathname}", ` +
2113
+ ` host: ${this.core.ctx.host}`);
2002
2114
  });
2003
- this.core.BE_REALTIME = new this.core.strategy.Server(this.core.ctx.serverTcpUdp, {
2115
+ this.core.socketBE = this.core.strategy.ioServer(Helpers.isWebSQL || Helpers.isElectron
2116
+ ? this.core.ctx.uri.origin
2117
+ : this.core.ctx.serverTcpUdp, {
2004
2118
  path: nspPath.realtime.pathname,
2005
2119
  cors: {
2006
2120
  origin: this.core.ctx.config.frontendHost,
2007
2121
  methods: this.core.allHttpMethods,
2008
2122
  },
2009
- });
2123
+ }, // @ts-ignore
2124
+ this.core.ctx);
2010
2125
  this.core.ctx.logRealtime &&
2011
- console.info(`CREATE REALTIME NAMESPACE: '${this.core.BE_REALTIME.path()}' , path: '${nspPath.realtime.pathname}' `);
2012
- this.core.BE_REALTIME.on('connection', backendSocketForClient => {
2013
- console.info(`client conected to namespace "${backendSocketForClient.nsp?.name}", host: ${this.core.ctx.host}`);
2014
- if (Helpers.isElectron) {
2015
- // @ts-ignore
2016
- backendSocketForClient = this.core.BE_REALTIME; // TODO QUICK_FIX
2017
- this.core.BE_REALTIME.emit('connect');
2018
- }
2019
- backendSocketForClient.on(Symbols.REALTIME.ROOM_NAME.SUBSCRIBE.CUSTOM(this.core.ctx.contextName), roomName => {
2020
- console.info(`Joining room ${roomName} in namespace REALTIME` +
2021
- ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`);
2126
+ console.info(`[backend] CREATE REALTIME NAMESPACE: '${this.core.socketBE.path()}'` +
2127
+ ` , path: '${nspPath.realtime.pathname}' `);
2128
+ this.core.socketBE.on('connection', backendSocketForClient => {
2129
+ console.info(`[backend] client connected to namespace "${nspPath.realtime.pathname}", ` +
2130
+ ` host: ${this.core.ctx.host}`);
2131
+ backendSocketForClient.on(Symbols.REALTIME.ROOM_SUBSCRIBE_CUSTOM(this.core.ctx.contextName), roomName => {
2132
+ this.core.ctx.logRealtime &&
2133
+ console.info(`Joining room ${roomName} in namespace REALTIME` +
2134
+ ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`);
2022
2135
  backendSocketForClient.join(roomName);
2023
2136
  });
2024
- backendSocketForClient.on(Symbols.REALTIME.ROOM_NAME.SUBSCRIBE.ENTITY_UPDATE_EVENTS(this.core.ctx.contextName), roomName => {
2025
- console.info(`Joining room ${roomName} in namespace REALTIME` +
2026
- ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`);
2137
+ backendSocketForClient.on(Symbols.REALTIME.ROOM_SUBSCRIBE_ENTITY_UPDATE_EVENTS(this.core.ctx.contextName), roomName => {
2138
+ this.core.ctx.logRealtime &&
2139
+ console.info(`[backend] Joining room ${roomName} in namespace REALTIME` +
2140
+ ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`);
2027
2141
  backendSocketForClient.join(roomName);
2028
2142
  });
2029
- backendSocketForClient.on(Symbols.REALTIME.ROOM_NAME.SUBSCRIBE.ENTITY_PROPERTY_UPDATE_EVENTS(this.core.ctx.contextName), roomName => {
2030
- console.info(`Joining room ${roomName} in namespace REALTIME ` +
2031
- ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`);
2143
+ backendSocketForClient.on(Symbols.REALTIME.ROOM_SUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(this.core.ctx.contextName), roomName => {
2144
+ this.core.ctx.logRealtime &&
2145
+ console.info(`[backend] Joining room ${roomName} in namespace REALTIME ` +
2146
+ ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`);
2032
2147
  backendSocketForClient.join(roomName);
2033
2148
  });
2034
- backendSocketForClient.on(Symbols.REALTIME.ROOM_NAME.UNSUBSCRIBE.CUSTOM(this.core.ctx.contextName), roomName => {
2035
- console.info(`Leaving room ${roomName} in namespace REALTIME` +
2036
- ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`);
2149
+ backendSocketForClient.on(Symbols.REALTIME.ROOM_UNSUBSCRIBE_CUSTOM(this.core.ctx.contextName), roomName => {
2150
+ this.core.ctx.logRealtime &&
2151
+ console.info(`[backend] Leaving room ${roomName} in namespace REALTIME` +
2152
+ ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`);
2037
2153
  backendSocketForClient.leave(roomName);
2038
2154
  });
2039
- backendSocketForClient.on(Symbols.REALTIME.ROOM_NAME.UNSUBSCRIBE.ENTITY_UPDATE_EVENTS(this.core.ctx.contextName), roomName => {
2040
- console.info(`Leaving room ${roomName} in namespace REALTIME ` +
2041
- ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`);
2155
+ backendSocketForClient.on(Symbols.REALTIME.ROOM_UNSUBSCRIBE_ENTITY_UPDATE_EVENTS(this.core.ctx.contextName), roomName => {
2156
+ this.core.ctx.logRealtime &&
2157
+ console.info(`[backend] Leaving room ${roomName} in namespace REALTIME ` +
2158
+ ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`);
2042
2159
  backendSocketForClient.leave(roomName);
2043
2160
  });
2044
- backendSocketForClient.on(Symbols.REALTIME.ROOM_NAME.UNSUBSCRIBE.ENTITY_PROPERTY_UPDATE_EVENTS(this.core.ctx.contextName), roomName => {
2045
- console.info(`Leaving room ${roomName} in namespace REALTIME ` +
2046
- ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`);
2161
+ backendSocketForClient.on(Symbols.REALTIME.ROOM_UNSUBSCRIBE_ENTITY_PROPERTY_UPDATE_EVENTS(this.core.ctx.contextName), roomName => {
2162
+ this.core.ctx.logRealtime &&
2163
+ console.info(`[backend] Leaving room ${roomName} in namespace REALTIME ` +
2164
+ ` host: ${this.core.ctx.contextName}/${this.core.ctx.host}`);
2047
2165
  backendSocketForClient.leave(roomName);
2048
2166
  });
2049
2167
  });
2050
2168
  }
2051
- triggerChanges(entityObjOrClass, property, valueOfUniquPropery, customEvent, customEventData) {
2169
+ triggerChanges(entityObjOrClass, property, valueOfUniqueProperty, customEvent, customEventData) {
2052
2170
  let roomName;
2053
2171
  if (this.core.ctx.disabledRealtime) {
2054
2172
  return;
2055
2173
  }
2056
2174
  if (customEvent) {
2057
- roomName = Symbols.REALTIME.ROOM_NAME.CUSTOM(this.core.ctx.contextName, customEvent);
2175
+ roomName = Symbols.REALTIME.ROOM_NAME_CUSTOM(this.core.ctx.contextName, customEvent);
2058
2176
  }
2059
2177
  else {
2060
2178
  let entityFn = entityObjOrClass;
2061
- const enittyIsObject = !_.isFunction(entityObjOrClass) && _.isObject(entityObjOrClass);
2062
- if (enittyIsObject) {
2179
+ const entityIsObject = !_$1.isFunction(entityObjOrClass) && _$1.isObject(entityObjOrClass);
2180
+ if (entityIsObject) {
2063
2181
  entityFn = ClassHelpers.getClassFnFromObject(entityObjOrClass);
2064
2182
  }
2065
- const uniqueKey = ClassHelpers.getUniquKey(entityFn);
2066
- if (enittyIsObject) {
2067
- valueOfUniquPropery = entityObjOrClass[uniqueKey];
2183
+ const uniqueKey = ClassHelpers.getUniqueKey(entityFn);
2184
+ if (entityIsObject) {
2185
+ valueOfUniqueProperty = entityObjOrClass[uniqueKey];
2068
2186
  }
2069
- if (!valueOfUniquPropery) {
2187
+ if (!valueOfUniqueProperty) {
2070
2188
  Helpers.error(`[Taon][Realtime] Entity without iD ! ${ClassHelpers.getName(entityFn)} `, true, true);
2071
2189
  return;
2072
2190
  }
2073
- roomName = _.isString(property)
2074
- ? Symbols.REALTIME.ROOM_NAME.UPDATE_ENTITY_PROPERTY(this.core.ctx.contextName, ClassHelpers.getName(entityFn), property, valueOfUniquPropery)
2075
- : Symbols.REALTIME.ROOM_NAME.UPDATE_ENTITY(this.core.ctx.contextName, ClassHelpers.getName(entityFn), valueOfUniquPropery);
2076
- }
2077
- const job = () => {
2078
- console.log(`Trigger realtime: ${this.core.ctx.contextName}/${roomName}`);
2079
- this.core.BE_REALTIME.in(roomName).emit(roomName, // roomName == eventName in room na
2080
- customEventData ? customEventData : '');
2081
- };
2082
- if (!_.isFunction(this.jobs[roomName])) {
2083
- this.jobs[roomName] = _.debounce(() => {
2084
- job();
2085
- }, SOCKET_EVENT_DEBOUNCE);
2191
+ roomName = _$1.isString(property)
2192
+ ? Symbols.REALTIME.ROOM_NAME_UPDATE_ENTITY_PROPERTY(this.core.ctx.contextName, ClassHelpers.getName(entityFn), property, valueOfUniqueProperty)
2193
+ : Symbols.REALTIME.ROOM_NAME_UPDATE_ENTITY(this.core.ctx.contextName, ClassHelpers.getName(entityFn), valueOfUniqueProperty);
2086
2194
  }
2087
- this.jobs[roomName]();
2195
+ this.core.socketBE.in(roomName).emit(roomName, // roomName == eventName in room na
2196
+ customEvent ? customEventData : '');
2088
2197
  }
2089
- trigggerEntityChanges(entityObjOrClass, idToTrigger) {
2198
+ triggerEntityChanges(entityObjOrClass, idToTrigger) {
2090
2199
  if (this.core.ctx.disabledRealtime) {
2091
2200
  const className = ClassHelpers.getName(entityObjOrClass);
2092
- console.warn(`[Taon][TrigggerEntityChanges] Entity "${className}' is not realtime`);
2201
+ console.warn(`[Taon][TriggerEntityChanges] Entity "${className}' is not realtime`);
2093
2202
  return;
2094
2203
  }
2095
2204
  this.triggerChanges(entityObjOrClass, void 0, idToTrigger);
2096
2205
  }
2097
- trigggerEntityPropertyChanges(entityObjOrClass, property, idToTrigger) {
2206
+ triggerEntityPropertyChanges(entityObjOrClass, property, idToTrigger) {
2098
2207
  if (this.core.ctx.disabledRealtime) {
2099
2208
  const className = ClassHelpers.getName(entityObjOrClass);
2100
- console.warn(`[Taon][TrigggerEntityPropertyChanges][property=${property}] Entity "${className}' is not realtime`);
2209
+ console.warn(`[Taon][TriggerEntityPropertyChanges][property=${property}] Entity "${className}' is not realtime`);
2101
2210
  return;
2102
2211
  }
2103
- if (_.isArray(property)) {
2212
+ if (_$1.isArray(property)) {
2104
2213
  property.forEach(propertyFromArr => {
2105
2214
  this.triggerChanges(entityObjOrClass, propertyFromArr, idToTrigger);
2106
2215
  });
@@ -2109,16 +2218,29 @@ class RealtimeServer {
2109
2218
  this.triggerChanges(entityObjOrClass, property, idToTrigger);
2110
2219
  }
2111
2220
  }
2112
- triggerCustomEvent(customEvent, dataToPush) {
2113
- this.triggerChanges(void 0, void 0, void 0, customEvent, dataToPush);
2114
- }
2115
- trigggerEntityTableChanges(entityClass) {
2116
- const className = ClassHelpers.getName(entityClass);
2221
+ triggerEntityTableChanges(entityClassOrInstance) {
2222
+ const className = ClassHelpers.getName(entityClassOrInstance);
2117
2223
  if (this.core.ctx.disabledRealtime) {
2118
- console.warn(`[Taon][TrigggerEntityTableChanges] Entity "${className}' is not realtime`);
2224
+ console.warn(`[Taon][TriggerEntityTableChanges] Entity "${className}' is not realtime`);
2119
2225
  return;
2120
2226
  }
2121
- this.triggerChanges(entityClass, void 0, void 0, Symbols.REALTIME.TABLE_CHANGE(this.core.ctx.contextName, className));
2227
+ this.triggerChanges(entityClassOrInstance, void 0, void 0, Symbols.REALTIME.TABLE_CHANGE(this.core.ctx.contextName, className));
2228
+ }
2229
+ triggerCustomEvent(customEvent, dataToPush) {
2230
+ this.triggerChanges(void 0, void 0, void 0, customEvent, dataToPush);
2231
+ }
2232
+ /**
2233
+ * Listen to custom events from users
2234
+ * @param customEvent global event name
2235
+ */
2236
+ listenChangesCustomEvent(customEvent) {
2237
+ const sub = new Subject();
2238
+ this.core.socketBE.on('connection', backendSocketForClient => {
2239
+ backendSocketForClient.on(customEvent, (data, ...args) => {
2240
+ sub.next(data);
2241
+ });
2242
+ });
2243
+ return sub.asObservable();
2122
2244
  }
2123
2245
  }
2124
2246
  ;
@@ -2128,22 +2250,69 @@ class RealtimeStrategy {
2128
2250
  constructor(ctx) {
2129
2251
  this.ctx = ctx;
2130
2252
  }
2131
- testTypes() {
2253
+ get ioClient() {
2254
+ throw new Error('Not implemented');
2255
+ }
2256
+ ioServer(url, opt) {
2257
+ throw new Error('Not implemented');
2132
2258
  }
2133
2259
  }
2134
2260
  ;
2135
2261
  ({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy.ts
2136
2262
 
2137
- /* */
2138
- /* */
2139
- /* */
2140
- class IpcMainNamespace {
2141
- constructor(name) {
2263
+ class MockServerIpc {
2264
+ static { this.serverByContextName = new Map(); }
2265
+ static from(contextName) {
2266
+ if (!MockServerIpc.serverByContextName.has(contextName)) {
2267
+ MockServerIpc.serverByContextName.set(contextName, new MockServerIpc(contextName));
2268
+ }
2269
+ return MockServerIpc.serverByContextName.get(contextName);
2270
+ }
2271
+ constructor(contextName) {
2272
+ this.contextName = contextName;
2273
+ this.namespacesByName = new Map();
2274
+ MockServerIpc.serverByContextName.set(contextName, this);
2275
+ }
2276
+ of(namespace) {
2277
+ if (!this.namespacesByName.has(namespace)) {
2278
+ this.namespacesByName.set(namespace, new MockNamespaceIpc(namespace, this));
2279
+ }
2280
+ return this.namespacesByName.get(namespace);
2281
+ }
2282
+ }
2283
+ class MockNamespaceIpc {
2284
+ constructor(
2285
+ /**
2286
+ * Namespace name
2287
+ */
2288
+ name, server) {
2142
2289
  this.name = name;
2143
- this.rooms = {};
2144
- this.listeners = {};
2290
+ this.server = server;
2291
+ this.electronClients = new Set();
2292
+ this.roomsByRoomName = {};
2293
+ this.namespaceEventHandlers = {};
2145
2294
  }
2146
- on(event, callback) {
2295
+ on(eventName, callback) {
2296
+ /* */
2297
+ /* */
2298
+ /* */
2299
+ /* */
2300
+ /* */
2301
+ /* */
2302
+ /* */
2303
+ /* */
2304
+ /* */
2305
+ /* */
2306
+ /* */
2307
+ /* */
2308
+ /* */
2309
+ /* */
2310
+ /* */
2311
+ /* */
2312
+ /* */
2313
+ /* */
2314
+ /* */
2315
+ /* */
2147
2316
  /* */
2148
2317
  /* */
2149
2318
  /* */
@@ -2168,10 +2337,11 @@ class IpcMainNamespace {
2168
2337
  /* */
2169
2338
  /* */
2170
2339
  /* */
2171
- /* */
2172
2340
  return (void 0);
2173
2341
  }
2174
- emit(event, ...args) {
2342
+ emit(eventName, ...args) {
2343
+ /* */
2344
+ /* */
2175
2345
  /* */
2176
2346
  /* */
2177
2347
  /* */
@@ -2181,39 +2351,25 @@ class IpcMainNamespace {
2181
2351
  /* */
2182
2352
  return (void 0);
2183
2353
  }
2184
- to(room) {
2185
- return {
2186
- emit: (event, ...args) => {
2187
- const emitEvent = `(${this.name}) "${event}"`;
2188
- const allWindows = Electron.BrowserWindow.getAllWindows();
2189
- allWindows.forEach((win, index) => {
2190
- win.webContents.send(emitEvent, ...args);
2191
- });
2192
- },
2193
- };
2354
+ to(roomName) {
2355
+ const electronClientsInroom = this.roomsByRoomName[roomName];
2356
+ return new RoomEmitterIpc(electronClientsInroom, this.name, true);
2194
2357
  }
2195
- in(room) {
2196
- return {
2197
- emit: (event, ...args) => {
2198
- const sendEventKey = `(${this.name}) "${event}"`;
2199
- const allWindows = Electron.BrowserWindow.getAllWindows();
2200
- allWindows.forEach((win, index) => {
2201
- win.webContents.send(sendEventKey, ...args);
2202
- });
2203
- },
2204
- };
2358
+ in(roomName) {
2359
+ const electronClientsInroom = this.roomsByRoomName[roomName];
2360
+ return new RoomEmitterIpc(electronClientsInroom, this.name, false);
2205
2361
  }
2206
- join(webContents, room) {
2207
- if (!this.rooms[room]) {
2208
- this.rooms[room] = new Set();
2362
+ join(webContents, roomName) {
2363
+ if (!this.roomsByRoomName[roomName]) {
2364
+ this.roomsByRoomName[roomName] = new Set();
2209
2365
  }
2210
- this.rooms[room].add(webContents);
2366
+ this.roomsByRoomName[roomName].add(webContents);
2211
2367
  }
2212
- leave(webContents, room) {
2213
- if (this.rooms[room]) {
2214
- this.rooms[room].delete(webContents);
2215
- if (this.rooms[room].size === 0) {
2216
- delete this.rooms[room];
2368
+ leave(webContents, roomName) {
2369
+ if (this.roomsByRoomName[roomName]) {
2370
+ this.roomsByRoomName[roomName].delete(webContents);
2371
+ if (this.roomsByRoomName[roomName].size === 0) {
2372
+ delete this.roomsByRoomName[roomName];
2217
2373
  }
2218
2374
  }
2219
2375
  }
@@ -2229,117 +2385,70 @@ class IpcMainNamespace {
2229
2385
  };
2230
2386
  }
2231
2387
  }
2232
- ;
2233
- ({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-namespace.ts
2234
-
2235
- class ioIpcStrategy {
2236
- constructor(contextName) {
2237
- this.contextName = contextName;
2238
- this.namespaces = {
2239
- ' /': new IpcMainNamespace('/'),
2240
- };
2241
- }
2242
- of(namespace) {
2243
- if (!this.namespaces[namespace]) {
2244
- this.namespaces[namespace] = new IpcMainNamespace(namespace);
2245
- }
2246
- return this.namespaces[namespace];
2247
- }
2248
- on(event, callback) {
2249
- const eventKey = `(${this.contextName}) "${event}"`;
2250
- this.namespaces['/'].on(eventKey, callback);
2251
- }
2252
- emit(event, ...args) {
2253
- const eventKey = `(${this.contextName}) "${event}"`;
2254
- this.namespaces['/'].emit(eventKey, ...args);
2255
- }
2256
- path() {
2257
- return '/';
2258
- }
2259
- get nsp() {
2260
- return {
2261
- get name() {
2262
- return '/';
2263
- },
2264
- };
2388
+ class RoomEmitterIpc {
2389
+ constructor(electronClients,
2390
+ /**
2391
+ * namespace name
2392
+ */
2393
+ name, includeSender = false, sender = null) {
2394
+ this.electronClients = electronClients;
2395
+ this.name = name;
2396
+ this.includeSender = includeSender;
2397
+ this.sender = sender;
2265
2398
  }
2266
- in(room) {
2267
- return {
2268
- emit: (event, ...args) => {
2269
- Object.values(this.namespaces).forEach(namespace => {
2270
- namespace.to(room).emit(event, ...args);
2271
- });
2272
- },
2273
- };
2399
+ emit(eventName, ...args) {
2400
+ const emitEvent = `(${this.name}) "${eventName}"`;
2401
+ this.electronClients?.forEach(webContents => {
2402
+ webContents.send(emitEvent, ...args);
2403
+ });
2274
2404
  }
2275
2405
  }
2276
- ;
2277
- ({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-main-wrapper.ts
2278
-
2279
- class IpcRendererNamespace {
2280
- constructor(name) {
2281
- this.name = name;
2282
- this.listeners = {};
2406
+ class MockSocketIpc {
2407
+ get name() {
2408
+ return this.namespaceName;
2409
+ }
2410
+ /**
2411
+ * @param namespaceName instead url for ipc
2412
+ */
2413
+ constructor(namespaceName) {
2414
+ this.namespaceName = namespaceName;
2415
+ this.socketEventHandlers = {};
2283
2416
  this.ipcRenderer = window.require('electron').ipcRenderer;
2284
2417
  }
2285
2418
  on(eventName, callback) {
2286
- if (!this.listeners[eventName]) {
2287
- this.listeners[eventName] = [];
2419
+ if (!this.socketEventHandlers[eventName]) {
2420
+ this.socketEventHandlers[eventName] = new Set();
2288
2421
  }
2289
- this.listeners[eventName].push(callback);
2422
+ this.socketEventHandlers[eventName].add(callback);
2290
2423
  const listenToEvent = `(${this.name}) "${eventName}"`;
2291
- this.ipcRenderer.on(listenToEvent, callback);
2424
+ this.ipcRenderer.on(listenToEvent, (rendereEvent, data) => {
2425
+ callback(data);
2426
+ });
2292
2427
  if (eventName === 'connect') {
2293
- this.emit('connection');
2294
- }
2295
- else {
2296
- this.emit(eventName);
2428
+ const connectionEventKey = `(${this.name}) "connection"`;
2429
+ this.ipcRenderer.send(connectionEventKey, this.name);
2297
2430
  }
2298
2431
  }
2299
2432
  off(event, callback) {
2300
- if (!this.listeners[event])
2433
+ if (!this.socketEventHandlers[event]) {
2301
2434
  return;
2435
+ }
2302
2436
  if (callback) {
2303
- this.listeners[event] = this.listeners[event].filter(listener => listener !== callback);
2437
+ this.socketEventHandlers[event].delete(callback);
2304
2438
  }
2305
2439
  else {
2306
- delete this.listeners[event];
2440
+ delete this.socketEventHandlers[event];
2307
2441
  }
2308
2442
  const removeListener = `(${this.name}) "${event}"`;
2309
- this.ipcRenderer.removeListener(removeListener, callback);
2443
+ this.ipcRenderer.removeListener(removeListener, data => {
2444
+ callback(data);
2445
+ });
2310
2446
  }
2311
2447
  emit(event, ...args) {
2312
2448
  const emitEvent = `(${this.name}) "${event}"`;
2313
2449
  this.ipcRenderer.send(emitEvent, ...args);
2314
2450
  }
2315
2451
  }
2316
- ;
2317
- ({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-namespace.ts
2318
-
2319
- class IpcRendererWrapper {
2320
- constructor(contextName) {
2321
- this.contextName = contextName;
2322
- this.namespaces = {
2323
- '/': new IpcRendererNamespace('/'),
2324
- };
2325
- this.connected = false;
2326
- }
2327
- of(namespace) {
2328
- if (!this.namespaces[namespace]) {
2329
- this.namespaces[namespace] = new IpcRendererNamespace(namespace);
2330
- }
2331
- return this.namespaces[namespace];
2332
- }
2333
- on(event, callback) {
2334
- this.namespaces['/'].on(event, callback);
2335
- }
2336
- emit(event, ...args) {
2337
- this.namespaces['/'].emit(event, ...args);
2338
- }
2339
- }
2340
- ;
2341
- ({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-ipc-models/realtime-strategy-ipc-renderer-wrapper.ts
2342
-
2343
2452
  /**
2344
2453
  * Purpose:
2345
2454
  * - backend-browser communication between 2 processes in electron mode
@@ -2348,220 +2457,222 @@ class RealtimeStrategyIpc extends RealtimeStrategy {
2348
2457
  toString() {
2349
2458
  return 'ipc';
2350
2459
  }
2351
- establishConnection() {
2352
- throw new Error('Method not implemented.');
2353
- }
2354
2460
  constructor(ctx) {
2355
2461
  super(ctx);
2356
2462
  this.ctx = ctx;
2357
- this.contextsServers = {};
2358
- this.contextsIO = {};
2359
2463
  }
2360
- get io() {
2361
- return ((__, { path: namespacePath }) => {
2362
- if (this.contextsIO[namespacePath]) {
2363
- return this.contextsIO[namespacePath];
2364
- }
2365
- const wrap = new IpcRendererWrapper(this.ctx.contextName);
2366
- const nsp = wrap.of(namespacePath);
2367
- this.contextsIO[namespacePath] = nsp;
2368
- return nsp;
2369
- });
2370
- return void 0;
2464
+ ioServer(__, opt) {
2465
+ const namespace = opt?.path || '/';
2466
+ const server = MockServerIpc.from(this.ctx.contextName);
2467
+ return server.of(namespace);
2371
2468
  }
2372
- get Server() {
2373
- return ((___, { path: namespacePath }) => {
2374
- if (this.contextsServers[namespacePath]) {
2375
- return this.contextsServers[namespacePath];
2376
- }
2377
- const wrap = new ioIpcStrategy(this.ctx.contextName);
2378
- const nsp = wrap.of(namespacePath);
2379
- this.contextsServers[namespacePath] = nsp;
2380
- return nsp;
2381
- });
2382
- return void 0;
2469
+ get ioClient() {
2470
+ const clientIo = (__, opt) => {
2471
+ const namespace = opt?.path || '/';
2472
+ return new MockSocketIpc(namespace);
2473
+ };
2474
+ return clientIo;
2383
2475
  }
2384
2476
  }
2385
2477
  ;
2386
2478
  ({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-ipc.ts
2387
2479
 
2388
- class MockNamespace {
2389
- constructor(name, contextName) {
2390
- this.name = name;
2391
- this.contextName = contextName;
2392
- this.rooms = {};
2393
- this.sockets = new Set();
2394
- }
2395
- on(event, callback) {
2396
- if (event === 'connection') {
2397
- this.sockets.forEach(socket => callback(socket));
2480
+ class MockServer {
2481
+ static { this.serverByUrl = new Map(); }
2482
+ static from(url) {
2483
+ if (!MockServer.serverByUrl.has(url)) {
2484
+ MockServer.serverByUrl.set(url, new MockServer(url));
2398
2485
  }
2486
+ return MockServer.serverByUrl.get(url);
2399
2487
  }
2400
- emit(event, data) {
2401
- this.sockets.forEach(socket => socket.emit(event, data));
2402
- }
2403
- to(room) {
2404
- return {
2405
- emit: (event, data) => {
2406
- if (this.rooms[room]) {
2407
- this.rooms[room].forEach(socket => socket.emit(event, data));
2408
- }
2409
- }
2410
- };
2488
+ get allServers() {
2489
+ return Array.from(MockServer.serverByUrl.values());
2411
2490
  }
2412
- joinRoom(socket, room) {
2413
- if (!this.rooms[room]) {
2414
- this.rooms[room] = new Set();
2415
- }
2416
- this.rooms[room].add(socket);
2491
+ constructor(url) {
2492
+ this.url = url;
2493
+ this.namespacesByName = new Map();
2494
+ MockServer.serverByUrl.set(url, this);
2417
2495
  }
2418
- leaveRoom(socket, room) {
2419
- if (this.rooms[room]) {
2420
- this.rooms[room].delete(socket);
2421
- if (this.rooms[room].size === 0) {
2422
- delete this.rooms[room];
2423
- }
2496
+ of(namespace) {
2497
+ if (!this.namespacesByName.has(namespace)) {
2498
+ this.namespacesByName.set(namespace, new MockNamespace(namespace, this));
2424
2499
  }
2500
+ return this.namespacesByName.get(namespace);
2425
2501
  }
2426
- addSocket(socket) {
2427
- this.sockets.add(socket);
2428
- }
2429
- removeSocket(socket) {
2430
- this.sockets.delete(socket);
2502
+ path() {
2503
+ return this.url;
2431
2504
  }
2432
2505
  }
2433
- ;
2434
- ({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-namespaces.ts
2435
-
2436
- class MockSocket {
2437
- constructor(id, namespace) {
2438
- this.id = id;
2439
- this.namespace = namespace;
2440
- this.listeners = {};
2441
- this.namespace.addSocket(this);
2442
- }
2443
- on(event, callback) {
2444
- if (!this.listeners[event]) {
2445
- this.listeners[event] = [];
2446
- }
2447
- this.listeners[event].push(callback);
2506
+ class MockNamespace {
2507
+ constructor(
2508
+ /**
2509
+ * unique namespace name
2510
+ */
2511
+ name, server) {
2512
+ this.name = name;
2513
+ this.server = server;
2514
+ /**
2515
+ * All sockets connected to this namespace
2516
+ */
2517
+ this.allSocketsForNamespace = new Set();
2518
+ /**
2519
+ * Rooms and their sockets
2520
+ */
2521
+ this.socketByRoomName = {};
2522
+ /**
2523
+ * Event handlers for this namespace
2524
+ */
2525
+ this.namespaceEventHandlers = {};
2448
2526
  }
2449
- off(event, callback) {
2450
- if (!this.listeners[event])
2451
- return;
2452
- if (callback) {
2453
- this.listeners[event] = this.listeners[event].filter(listener => listener !== callback);
2527
+ on(eventName, handler) {
2528
+ if (!this.namespaceEventHandlers[eventName]) {
2529
+ this.namespaceEventHandlers[eventName] =
2530
+ new Set();
2454
2531
  }
2455
- else {
2456
- delete this.listeners[event];
2532
+ if (!this.namespaceEventHandlers[eventName].has(handler)) {
2533
+ this.namespaceEventHandlers[eventName].add(handler);
2457
2534
  }
2458
- }
2459
- emit(event, data) {
2460
- if (this.listeners[event]) {
2461
- this.listeners[event].forEach(listener => listener(data));
2535
+ if (eventName === 'connection') {
2536
+ setTimeout(() => {
2537
+ this.emit('connection', this);
2538
+ });
2462
2539
  }
2463
2540
  }
2464
- join(room) {
2465
- this.namespace.joinRoom(this, room);
2541
+ emit(event, ...args) {
2542
+ this.allSocketsForNamespace?.forEach(socket => {
2543
+ socket.emit(event, ...args);
2544
+ });
2466
2545
  }
2467
- leave(room) {
2468
- this.namespace.leaveRoom(this, room);
2546
+ connect(socket) {
2547
+ this.allSocketsForNamespace.add(socket);
2548
+ socket.namespaceInstance = this;
2469
2549
  }
2470
- disconnect() {
2471
- this.emit('disconnect');
2472
- this.namespace.removeSocket(this);
2473
- this.listeners = {};
2550
+ to(roomName) {
2551
+ const socketsInRoom = this.socketByRoomName[roomName];
2552
+ return new RoomEmitter(socketsInRoom, true);
2474
2553
  }
2475
- }
2476
- ;
2477
- ({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-socket.ts
2478
-
2479
- class MockServer {
2480
- constructor(contextName) {
2481
- this.contextName = contextName;
2482
- this.namespaces = {
2483
- '/': new MockNamespace('/', this.contextName)
2484
- };
2554
+ in(roomName) {
2555
+ const socketsInRoom = this.socketByRoomName[roomName];
2556
+ return new RoomEmitter(socketsInRoom, false);
2485
2557
  }
2486
- of(namespace) {
2487
- if (!this.namespaces[namespace]) {
2488
- this.namespaces[namespace] = new MockNamespace(namespace, this.contextName);
2558
+ joinRoom(roomName, socket) {
2559
+ if (!this.socketByRoomName[roomName]) {
2560
+ this.socketByRoomName[roomName] = new Set();
2489
2561
  }
2490
- return this.namespaces[namespace];
2562
+ this.socketByRoomName[roomName].add(socket);
2491
2563
  }
2492
- on(event, callback) {
2493
- if (event === 'connection') {
2494
- this.namespaces['/'].on('connection', callback);
2564
+ leaveRoom(roomName, socket) {
2565
+ const roomSockets = this.socketByRoomName[roomName];
2566
+ if (roomSockets) {
2567
+ this.socketByRoomName[roomName].delete(socket);
2495
2568
  }
2496
2569
  }
2497
- emit(event, data) {
2498
- this.namespaces['/'].emit(event, data);
2570
+ get nsp() {
2571
+ const self = this;
2572
+ return {
2573
+ get name() {
2574
+ return self.name;
2575
+ },
2576
+ };
2499
2577
  }
2500
- connect(id, namespace = '/') {
2501
- const ns = this.of(namespace);
2502
- const socket = new MockSocket(id, ns);
2503
- ns.on('connection', (socket) => {
2504
- socket.emit('connect');
2505
- });
2506
- return socket;
2578
+ path() {
2579
+ return this.name;
2507
2580
  }
2508
2581
  }
2509
- ;
2510
- ({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-server.ts
2511
-
2512
- class MockClientSocket {
2513
- constructor(serverSocket, contextName) {
2514
- this.serverSocket = serverSocket;
2515
- this.contextName = contextName;
2516
- this.listeners = {};
2517
- serverSocket.on('message', (data) => this.emit('message', data));
2582
+ class RoomEmitter {
2583
+ constructor(sockets, includeSender = false, sender = null) {
2584
+ this.sockets = sockets;
2585
+ this.includeSender = includeSender;
2586
+ this.sender = sender;
2518
2587
  }
2519
- on(event, callback) {
2520
- if (!this.listeners[event]) {
2521
- this.listeners[event] = [];
2522
- }
2523
- this.listeners[event].push(callback);
2588
+ emit(event, ...args) {
2589
+ this.sockets?.forEach(socket => {
2590
+ if (this.includeSender || socket !== this.sender) {
2591
+ socket.emit(event, ...args);
2592
+ }
2593
+ });
2524
2594
  }
2525
- off(event, callback) {
2526
- if (!this.listeners[event])
2527
- return;
2528
- if (callback) {
2529
- this.listeners[event] = this.listeners[event].filter(listener => listener !== callback);
2530
- }
2531
- else {
2532
- delete this.listeners[event];
2533
- }
2595
+ }
2596
+ class MockSocket {
2597
+ get id() {
2598
+ return this.nsp.name;
2534
2599
  }
2535
- emit(event, data) {
2536
- this.serverSocket.emit(event, data);
2537
- if (this.listeners[event]) {
2538
- this.listeners[event].forEach(listener => listener(data));
2539
- }
2600
+ constructor(url, opts) {
2601
+ this.url = url;
2602
+ this.socketEventHandlers = {};
2603
+ // @ts-ignore
2604
+ const [baseUrl, namespace] = [url, opts.path || '/'];
2605
+ const namespaceName = namespace || '/';
2606
+ const server = MockServer.from(url);
2607
+ const ns = server.of(namespaceName);
2608
+ ns.connect(this);
2540
2609
  }
2541
- disconnect() {
2542
- this.serverSocket.disconnect();
2543
- this.listeners = {};
2610
+ get nsp() {
2611
+ const self = this;
2612
+ return {
2613
+ get name() {
2614
+ return self.namespaceInstance?.name;
2615
+ },
2616
+ };
2544
2617
  }
2545
- join(room) {
2546
- this.serverSocket.join(room);
2618
+ path() {
2619
+ return this.namespaceInstance?.name;
2547
2620
  }
2548
- leave(room) {
2549
- this.serverSocket.leave(room);
2621
+ on(eventName, handler) {
2622
+ if (!this.socketEventHandlers[eventName]) {
2623
+ this.socketEventHandlers[eventName] =
2624
+ new Set();
2625
+ }
2626
+ this.socketEventHandlers[eventName].add(handler);
2627
+ if (eventName === 'connect') {
2628
+ setTimeout(() => {
2629
+ this.emit('connect');
2630
+ });
2631
+ }
2632
+ }
2633
+ emit(eventName, ...args) {
2634
+ eventName = eventName || '';
2635
+ if (eventName.includes(`:${Symbols.REALTIME.KEYroomSubscribe}`)) {
2636
+ const room = args[0];
2637
+ this.join(room);
2638
+ }
2639
+ else if (eventName.includes(`:${Symbols.REALTIME.KEYroomUnsubscribe}`)) {
2640
+ const room = args[0];
2641
+ this.leave(room);
2642
+ }
2643
+ else {
2644
+ if (this.namespaceInstance) {
2645
+ const namespaceEventHandlers = this.namespaceInstance.namespaceEventHandlers[eventName] || [];
2646
+ for (const namespaceEventHandler of namespaceEventHandlers) {
2647
+ if (namespaceEventHandler) {
2648
+ namespaceEventHandler(...args);
2649
+ }
2650
+ }
2651
+ const allSocketsForNamespaceExceptCurrent = Array.from(this.namespaceInstance.allSocketsForNamespace.values()).filter(socket => socket !== this);
2652
+ for (const socket of allSocketsForNamespaceExceptCurrent) {
2653
+ const socketEventHandlers = socket.socketEventHandlers[eventName];
2654
+ for (const socketEventHandler of socketEventHandlers) {
2655
+ if (socketEventHandler) {
2656
+ socketEventHandler(...args);
2657
+ }
2658
+ }
2659
+ }
2660
+ const socketEventHandlers = this.socketEventHandlers[eventName] || [];
2661
+ for (const clientHandler of socketEventHandlers) {
2662
+ if (clientHandler) {
2663
+ clientHandler(...args);
2664
+ }
2665
+ }
2666
+ }
2667
+ }
2668
+ }
2669
+ join(roomName) {
2670
+ this.namespaceInstance.joinRoom(roomName, this);
2671
+ }
2672
+ leave(roomName) {
2673
+ this.namespaceInstance.leaveRoom(roomName, this);
2550
2674
  }
2551
2675
  }
2552
- function mockIo(server) {
2553
- return (namespace = '/') => {
2554
- const socketId = Math.random().toString(36).substring(2);
2555
- const serverSocket = server.connect(socketId, namespace);
2556
- return new MockClientSocket(serverSocket, server.contextName);
2557
- };
2558
- }
2559
- ;
2560
- ({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock-models/realtime-strategy-mock-client.ts
2561
-
2562
- ;
2563
- ({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-mock-models/index.ts
2564
-
2565
2676
  /**
2566
2677
  * Purpose:
2567
2678
  * - browser-browser communication mock (in websql mode)
@@ -2574,15 +2685,15 @@ class RealtimeStrategyMock extends RealtimeStrategy {
2574
2685
  super(ctx);
2575
2686
  this.ctx = ctx;
2576
2687
  }
2577
- get Server() {
2578
- return MockServer;
2579
- }
2580
- ;
2581
- get io() {
2582
- return mockIo;
2688
+ ioServer(url, opt) {
2689
+ const server = MockServer.from(url || this.ctx.uri.origin);
2690
+ return server.of(opt?.path || '/');
2583
2691
  }
2584
- establishConnection() {
2585
- throw new Error('Method not implemented.');
2692
+ get ioClient() {
2693
+ const clientIo = (uri, opts) => {
2694
+ return new MockSocket(uri || this.ctx.uri.origin, opts);
2695
+ };
2696
+ return clientIo;
2586
2697
  }
2587
2698
  }
2588
2699
  ;
@@ -2601,18 +2712,14 @@ class RealtimeStrategySocketIO extends RealtimeStrategy {
2601
2712
  super(ctx);
2602
2713
  this.ctx = ctx;
2603
2714
  }
2604
- get Server() {
2715
+ ioServer(...args) {
2605
2716
  /* */
2606
2717
  /* */
2607
2718
  return (void 0);
2608
2719
  }
2609
- ;
2610
- get io() {
2720
+ get ioClient() {
2611
2721
  return io;
2612
2722
  }
2613
- establishConnection() {
2614
- throw new Error('Method not implemented.');
2615
- }
2616
2723
  }
2617
2724
  ;
2618
2725
  ({}); // @--end-of-file-for-module=taon lib/realtime/realtime-strategy/realtime-strategy-socket-io.ts
@@ -2639,14 +2746,22 @@ class RealtimeCore {
2639
2746
  'OPTIONS',
2640
2747
  'HEAD',
2641
2748
  ];
2749
+ this.ctx = ctx;
2642
2750
  this.strategy = this.resolveStrategy();
2643
- ctx.logFramework &&
2751
+ this.ctx.logRealtime &&
2644
2752
  console.log(`[taon] realtime strategy: ${this.strategy}`);
2645
- this.client = new RealtimeClient(this);
2646
- this.server = new RealtimeServer(this);
2753
+ if (Helpers.isWebSQL) {
2754
+ this.server = new RealtimeServer(this);
2755
+ this.client = new RealtimeClient(this);
2756
+ }
2757
+ else {
2758
+ this.client = new RealtimeClient(this);
2759
+ this.server = new RealtimeServer(this);
2760
+ }
2647
2761
  }
2648
2762
  resolveStrategy() {
2649
- if (this.ctx.mode === 'backend-frontend(websql)') {
2763
+ if (this.ctx.mode === 'backend-frontend(websql)' ||
2764
+ this.ctx.mode === 'backend-frontend(websql-electron)') {
2650
2765
  return new RealtimeStrategyMock(this.ctx);
2651
2766
  }
2652
2767
  if (this.ctx.mode === 'backend-frontend(ipc-electron)') {
@@ -2659,189 +2774,22 @@ class RealtimeCore {
2659
2774
  let nsp = namespace ? namespace : '';
2660
2775
  nsp = nsp === '/' ? '' : nsp;
2661
2776
  const pathname = uri.pathname !== '/' ? uri.pathname : '';
2662
- let prefix = `taonContext-`;
2777
+ let prefix = `taonContext`;
2663
2778
  if (Helpers.isElectron) {
2664
2779
  prefix = ``;
2665
2780
  }
2666
- const href = `${uri.origin}${pathname}/${prefix}${nsp}`;
2781
+ const href = `${uri.origin}${pathname}/${prefix}${prefix && nsp ? '-' + nsp : nsp}`;
2667
2782
  return new URL(href);
2668
2783
  }
2669
2784
  }
2670
2785
  ;
2671
2786
  ({}); // @--end-of-file-for-module=taon lib/realtime/realtime-core.ts
2672
2787
 
2673
- class TaonSubscriberOptions extends Models.DecoratorAbstractOpt {
2674
- }
2675
- function TaonSubscriber(options) {
2676
- return function (constructor) {
2677
- Reflect.defineMetadata(Symbols.metadata.options.repository, options, constructor);
2678
- Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
2679
- ClassHelpers.setName(constructor, options?.className);
2680
- return class extends constructor {
2681
- constructor(...args) {
2682
- super(...args);
2683
- const methodNamesAll = ClassHelpers.getMethodsNames(constructor.prototype);
2684
- const methodNames = methodNamesAll.filter(m => {
2685
- return (!['__trigger_event__', 'clone'].includes(m) &&
2686
- !m.startsWith('_') &&
2687
- !m.startsWith('inject'));
2688
- });
2689
- methodNames.forEach(methodName => {
2690
- const originalMethod = this[methodName];
2691
- this[methodName] = async (...methodArgs) => {
2692
- const result = originalMethod.apply(this, methodArgs);
2693
- if (result instanceof Promise) {
2694
- await result;
2695
- }
2696
- if (options.allowedEvents === undefined ||
2697
- options.allowedEvents.includes(methodName)) {
2698
- // @ts-ignore
2699
- this.__trigger_event__(methodName);
2700
- }
2701
- return result;
2702
- };
2703
- });
2704
- }
2705
- };
2706
- };
2707
- }
2708
- ;
2709
- ({}); // @--end-of-file-for-module=taon lib/decorators/classes/subscriber-decorator.ts
2710
-
2711
- let BaseSubscriberForEntity = class BaseSubscriberForEntity extends BaseInjector {
2712
- /**
2713
- * Called after entity is loaded.
2714
- */
2715
- afterLoad(entity) {
2716
- console.log(`AFTER ENTITY LOADED: `, entity);
2717
- }
2718
- /**
2719
- * Called before query execution.
2720
- */
2721
- beforeQuery(event) {
2722
- console.log(`BEFORE QUERY: `, event.query);
2723
- }
2724
- /**
2725
- * Called after query execution.
2726
- */
2727
- afterQuery(event) {
2728
- console.log(`AFTER QUERY: `, event.query);
2729
- }
2730
- /**
2731
- * Called before entity insertion.
2732
- */
2733
- beforeInsert(event) {
2734
- console.log(`BEFORE ENTITY INSERTED: `, event.entity);
2735
- }
2736
- /**
2737
- * Called after entity insertion.
2738
- */
2739
- afterInsert(event) {
2740
- console.log(`AFTER ENTITY INSERTED: `, event.entity);
2741
- }
2742
- /**
2743
- * Called before entity update.
2744
- */
2745
- beforeUpdate(event) {
2746
- console.log(`BEFORE ENTITY UPDATED: `, event.entity);
2747
- }
2748
- /**
2749
- * Called after entity update.
2750
- */
2751
- afterUpdate(event) {
2752
- console.log(`AFTER ENTITY UPDATED: `, event.entity);
2753
- }
2754
- /**
2755
- * Called before entity removal.
2756
- */
2757
- beforeRemove(event) {
2758
- console.log(`BEFORE ENTITY WITH ID ${event.entityId} REMOVED: `, event.entity);
2759
- }
2760
- /**
2761
- * Called after entity removal.
2762
- */
2763
- afterRemove(event) {
2764
- console.log(`AFTER ENTITY WITH ID ${event.entityId} REMOVED: `, event.entity);
2765
- }
2766
- /**
2767
- * Called before entity removal.
2768
- */
2769
- beforeSoftRemove(event) {
2770
- console.log(`BEFORE ENTITY WITH ID ${event.entityId} SOFT REMOVED: `, event.entity);
2771
- }
2772
- /**
2773
- * Called after entity removal.
2774
- */
2775
- afterSoftRemove(event) {
2776
- console.log(`AFTER ENTITY WITH ID ${event.entityId} SOFT REMOVED: `, event.entity);
2777
- }
2778
- /**
2779
- * Called before entity recovery.
2780
- */
2781
- beforeRecover(event) {
2782
- console.log(`BEFORE ENTITY WITH ID ${event.entityId} RECOVERED: `, event.entity);
2783
- }
2784
- /**
2785
- * Called after entity recovery.
2786
- */
2787
- afterRecover(event) {
2788
- console.log(`AFTER ENTITY WITH ID ${event.entityId} RECOVERED: `, event.entity);
2789
- }
2790
- /**
2791
- * Called before transaction start.
2792
- */
2793
- beforeTransactionStart(event) {
2794
- console.log(`BEFORE TRANSACTION STARTED: `, event);
2795
- }
2796
- /**
2797
- * Called after transaction start.
2798
- */
2799
- afterTransactionStart(event) {
2800
- console.log(`AFTER TRANSACTION STARTED: `, event);
2801
- }
2802
- /**
2803
- * Called before transaction commit.
2804
- */
2805
- beforeTransactionCommit(event) {
2806
- console.log(`BEFORE TRANSACTION COMMITTED: `, event);
2807
- }
2808
- /**
2809
- * Called after transaction commit.
2810
- */
2811
- afterTransactionCommit(event) {
2812
- console.log(`AFTER TRANSACTION COMMITTED: `, event);
2813
- }
2814
- /**
2815
- * Called before transaction rollback.
2816
- */
2817
- beforeTransactionRollback(event) {
2818
- console.log(`BEFORE TRANSACTION ROLLBACK: `, event);
2819
- }
2820
- /**
2821
- * Called after transaction rollback.
2822
- */
2823
- afterTransactionRollback(event) {
2824
- console.log(`AFTER TRANSACTION ROLLBACK: `, event);
2825
- }
2826
- };
2827
- BaseSubscriberForEntity = __decorate([
2828
- TaonSubscriber({
2829
- className: 'BaseSubscriberForEntity',
2830
- })
2831
- ], BaseSubscriberForEntity);
2832
- ;
2833
- ({}); // @--end-of-file-for-module=taon lib/base-classes/base-subscriber-for-entity.ts
2834
-
2835
2788
  /* eslint-disable @typescript-eslint/typedef */
2836
2789
  class EndpointContext {
2837
2790
  static initNgZone(ngZone) {
2838
2791
  this.ngZone = ngZone;
2839
2792
  }
2840
- static findForTraget(classFnOrObject) {
2841
- const obj = ClassHelpers.getClassFnFromObject(classFnOrObject) || {};
2842
- return (classFnOrObject[Symbols.ctxInClassOrClassObj] ||
2843
- obj[Symbols.ctxInClassOrClassObj]);
2844
- }
2845
2793
  get realtimeClient() {
2846
2794
  return this.realtime.client;
2847
2795
  }
@@ -2849,25 +2797,25 @@ class EndpointContext {
2849
2797
  return this.realtime.server;
2850
2798
  }
2851
2799
  get logHttp() {
2852
- if (_.isObject(this.config?.logs)) {
2800
+ if (_$1.isObject(this.config?.logs)) {
2853
2801
  return !!this.config.logs.http;
2854
2802
  }
2855
2803
  return this.config?.logs === true;
2856
2804
  }
2857
2805
  get logRealtime() {
2858
- if (_.isObject(this.config?.logs)) {
2806
+ if (_$1.isObject(this.config?.logs)) {
2859
2807
  return !!this.config.logs.realtime;
2860
2808
  }
2861
2809
  return this.config?.logs === true;
2862
2810
  }
2863
2811
  get logFramework() {
2864
- if (_.isObject(this.config?.logs)) {
2812
+ if (_$1.isObject(this.config?.logs)) {
2865
2813
  return !!this.config.logs.framework;
2866
2814
  }
2867
2815
  return this.config?.logs === true;
2868
2816
  }
2869
2817
  get logDb() {
2870
- if (_.isObject(this.config?.logs)) {
2818
+ if (_$1.isObject(this.config?.logs)) {
2871
2819
  return !!this.config.logs.db;
2872
2820
  }
2873
2821
  return this.config?.logs === true;
@@ -2968,9 +2916,19 @@ class EndpointContext {
2968
2916
  };
2969
2917
  }
2970
2918
  async init(options) {
2971
- const { initFromRecrusiveContextResovle } = options || {}; // TODO use it ?
2919
+ const { initFromRecrusiveContextResovle, overrideHost, overrideRemoteHost } = options || {}; // TODO use it ?
2972
2920
  this.inited = true;
2973
- this.config = this.configFn(ENV);
2921
+ this.config = this.configFn(ENV$1);
2922
+ if (overrideHost && overrideRemoteHost) {
2923
+ if (Helpers.isWebSQL) {
2924
+ throw new Error(`You can't have overrideHost and overrideRemoteHost at the same time`);
2925
+ }
2926
+ Helpers.error(`You can't have overrideHost and overrideRemoteHost at the same time`, false, true);
2927
+ /* */
2928
+ /* */
2929
+ }
2930
+ this.config.host = overrideHost ? overrideHost : this.config.host;
2931
+ this.config.remoteHost = overrideRemoteHost ? overrideRemoteHost : this.config.remoteHost;
2974
2932
  if (this.config.host) {
2975
2933
  this.mode = 'backend-frontend(tcp+udp)';
2976
2934
  this.mode = 'backend-frontend(websql)';
@@ -2982,7 +2940,12 @@ class EndpointContext {
2982
2940
  this.mode = 'remote-backend(tcp+udp)';
2983
2941
  }
2984
2942
  if (this.config.useIpcWhenElectron && Helpers.isElectron) {
2985
- this.mode = 'backend-frontend(ipc-electron)';
2943
+ if (Helpers.isWebSQL) {
2944
+ this.mode = 'backend-frontend(websql-electron)';
2945
+ }
2946
+ else {
2947
+ this.mode = 'backend-frontend(ipc-electron)';
2948
+ }
2986
2949
  }
2987
2950
  if (!this.mode && !this.config.abstract) {
2988
2951
  Helpers.error(`[taon] Context "${this.contextName}": You need to provide host or remoteHost or useIpcWhenElectron`, false, true);
@@ -2992,11 +2955,11 @@ class EndpointContext {
2992
2955
  if (this.config.database === true) {
2993
2956
  this.databaseConfig = this.getAutoGeneratedConfig();
2994
2957
  }
2995
- else if (_.isObject(this.config.database)) {
2996
- this.databaseConfig = _.cloneDeep(this.config.database);
2958
+ else if (_$1.isObject(this.config.database)) {
2959
+ this.databaseConfig = _$1.cloneDeep(this.config.database);
2997
2960
  }
2998
2961
  if (this.config.session) {
2999
- this.session = _.cloneDeep(this.config.session);
2962
+ this.session = _$1.cloneDeep(this.config.session);
3000
2963
  const oneHour = 1000 * 60 * 60 * 1; // 24;
3001
2964
  if (!this.session.cookieMaxAge) {
3002
2965
  this.session.cookieMaxAge = oneHour;
@@ -3113,7 +3076,7 @@ class EndpointContext {
3113
3076
  if (Helpers.isRunningInDocker()) {
3114
3077
  Helpers.info('Running in docker, using in mysql database');
3115
3078
  databaseConfig = {
3116
- database: `tmp-db-${_.kebabCase(this.contextName)}.sqljs.db`,
3079
+ database: `tmp-db-${_$1.kebabCase(this.contextName)}.sqljs.db`,
3117
3080
  type: 'mysql',
3118
3081
  autoSave: true,
3119
3082
  synchronize: true,
@@ -3131,7 +3094,7 @@ class EndpointContext {
3131
3094
  switch (this.mode) {
3132
3095
  case 'backend-frontend(ipc-electron)':
3133
3096
  return {
3134
- location: `tmp-db-${_.kebabCase(this.contextName)}.sqljs`,
3097
+ location: `tmp-db-${_$1.kebabCase(this.contextName)}.sqljs`,
3135
3098
  type: 'sqljs',
3136
3099
  autoSave: true,
3137
3100
  synchronize: true,
@@ -3139,9 +3102,10 @@ class EndpointContext {
3139
3102
  logging: this.logDb,
3140
3103
  };
3141
3104
  break;
3105
+ case 'backend-frontend(websql-electron)':
3142
3106
  case 'backend-frontend(websql)':
3143
3107
  databaseConfig = {
3144
- location: `tmp-db-${_.kebabCase(this.contextName)}.sqljs`,
3108
+ location: `tmp-db-${_$1.kebabCase(this.contextName)}.sqljs`,
3145
3109
  type: 'sqljs',
3146
3110
  useLocalForage: true, // !!window['localforage'], // TODO this need to be checked in runtime
3147
3111
  autoSave: true,
@@ -3163,8 +3127,8 @@ class EndpointContext {
3163
3127
  break;
3164
3128
  case 'backend-frontend(tcp+udp)':
3165
3129
  databaseConfig = {
3166
- database: `context-db-${_.kebabCase(this.contextName)}`,
3167
- location: `tmp-db-${_.kebabCase(this.contextName)}.sqlite`,
3130
+ database: `context-db-${_$1.kebabCase(this.contextName)}`,
3131
+ location: `tmp-db-${_$1.kebabCase(this.contextName)}.sqlite`,
3168
3132
  type: 'sqljs',
3169
3133
  autoSave: true,
3170
3134
  synchronize: true,
@@ -3194,6 +3158,9 @@ class EndpointContext {
3194
3158
  /* */
3195
3159
  /* */
3196
3160
  /* */
3161
+ /* */
3162
+ /* */
3163
+ /* */
3197
3164
  return (void 0);
3198
3165
  }
3199
3166
  displayRoutes(app) {
@@ -3307,8 +3274,8 @@ class EndpointContext {
3307
3274
  return this.inject(ctor, { localInstance: false });
3308
3275
  }
3309
3276
  checkIfContextInitialized() {
3310
- if (_.isUndefined(this.config)) {
3311
- throw new Error(`Please check if your context has been initilized.
3277
+ if (_$1.isUndefined(this.config)) {
3278
+ throw new Error(`Please check if your context has been initialized.
3312
3279
 
3313
3280
 
3314
3281
  await Context.initialize();
@@ -3369,9 +3336,12 @@ class EndpointContext {
3369
3336
  }
3370
3337
  }
3371
3338
  async reinitControllers() {
3339
+ if (this.remoteHost) {
3340
+ return;
3341
+ }
3372
3342
  const controllers = this.getClassesInstancesArrBy(Models.ClassType.CONTROLLER);
3373
3343
  for (const ctrl of controllers) {
3374
- if (_.isFunction(ctrl.initExampleDbData)) {
3344
+ if (_$1.isFunction(ctrl.initExampleDbData)) {
3375
3345
  await Helpers.runSyncOrAsync({
3376
3346
  functionFn: ctrl.initExampleDbData,
3377
3347
  context: ctrl,
@@ -3380,6 +3350,9 @@ class EndpointContext {
3380
3350
  }
3381
3351
  }
3382
3352
  async initClasses() {
3353
+ if (this.remoteHost) {
3354
+ return;
3355
+ }
3383
3356
  for (const classTypeName of [
3384
3357
  Models.ClassType.PROVIDER,
3385
3358
  Models.ClassType.REPOSITORY,
@@ -3387,7 +3360,7 @@ class EndpointContext {
3387
3360
  Models.ClassType.ENTITY,
3388
3361
  ]) {
3389
3362
  for (const classFun of this.getClassFunByArr(classTypeName)) {
3390
- if (_.isFunction(classFun._)) {
3363
+ if (_$1.isFunction(classFun._)) {
3391
3364
  await Helpers.runSyncOrAsync({
3392
3365
  functionFn: classFun._,
3393
3366
  context: classFun,
@@ -3401,7 +3374,7 @@ class EndpointContext {
3401
3374
  Models.ClassType.CONTROLLER,
3402
3375
  ]) {
3403
3376
  for (const ctrl of this.getClassesInstancesArrBy(classTypeName)) {
3404
- if (_.isFunction(ctrl._)) {
3377
+ if (_$1.isFunction(ctrl._)) {
3405
3378
  await Helpers.runSyncOrAsync({
3406
3379
  functionFn: ctrl._,
3407
3380
  context: ctrl,
@@ -3447,30 +3420,27 @@ class EndpointContext {
3447
3420
  return this.uri?.origin;
3448
3421
  }
3449
3422
  async initSubscribers() {
3450
- return; // TODO
3451
- if (!this.connection?.initialize) {
3423
+ if (this.remoteHost) {
3452
3424
  return;
3453
3425
  }
3454
- const subscribers = this.getClassFunByArr(Models.ClassType.SUBSCRIBER);
3455
- for (const subscriber of subscribers) {
3456
- const options = Reflect.getMetadata(Symbols.metadata.options.subscriber, subscriber);
3457
- EventSubscriber()(subscriber);
3458
- }
3459
- console.log(this.config.subscribers);
3460
- return;
3461
- const entities = this.getClassFunByArr(Models.ClassType.ENTITY);
3462
- for (let index = 0; index < entities.length; index++) {
3426
+ const subscriberClasses = this.getClassFunByArr(Models.ClassType.SUBSCRIBER);
3427
+ for (const subscriberClassFn of subscriberClasses) {
3428
+ const options = Reflect.getMetadata(Symbols.metadata.options.subscriber, subscriberClassFn);
3429
+ EventSubscriber()(subscriberClassFn);
3463
3430
  }
3464
3431
  }
3465
3432
  async initEntities() {
3433
+ if (this.remoteHost) {
3434
+ return;
3435
+ }
3466
3436
  const entities = this.getClassFunByArr(Models.ClassType.ENTITY);
3467
3437
  for (const entity of entities) {
3468
3438
  const options = Reflect.getMetadata(Symbols.metadata.options.entity, entity);
3469
- const createTable = _.isUndefined(options.createTable)
3439
+ const createTable = _$1.isUndefined(options.createTable)
3470
3440
  ? true
3471
3441
  : options.createTable;
3472
3442
  const nameForEntity = ClassHelpers.getName(entity);
3473
- if (_.isUndefined(options.createTable) ? true : options.createTable) {
3443
+ if (_$1.isUndefined(options.createTable) ? true : options.createTable) {
3474
3444
  this.logDb &&
3475
3445
  console.info(`[taon][typeorm] create table for entity "${nameForEntity}" ? '${createTable}'`);
3476
3446
  Entity(nameForEntity)(entity);
@@ -3482,15 +3452,18 @@ class EndpointContext {
3482
3452
  }
3483
3453
  }
3484
3454
  async initDatabaseConnection() {
3455
+ if (this.remoteHost) {
3456
+ return;
3457
+ }
3485
3458
  const entities = (this.config.override?.entities
3486
3459
  ? this.config.override.entities
3487
3460
  : this.getClassFunByArr(Models.ClassType.ENTITY)).map(entityFn => {
3488
3461
  return ClassHelpers.getOrginalClass(entityFn);
3489
3462
  });
3490
- const subscribers = (this.config.override?.subscribers
3463
+ const subscribers = this.config.override?.subscribers
3491
3464
  ? this.config.override.subscribers
3492
- : this.getClassFunByArr(Models.ClassType.SUBSCRIBER)).filter(f => f instanceof BaseSubscriberForEntity);
3493
- const dataSourceDbConfig = _.isObject(this.databaseConfig)
3465
+ : this.getClassFunByArr(Models.ClassType.SUBSCRIBER);
3466
+ const dataSourceDbConfig = _$1.isObject(this.databaseConfig)
3494
3467
  ? {
3495
3468
  type: this.databaseConfig.type,
3496
3469
  port: this.databaseConfig.databasePort,
@@ -3508,6 +3481,8 @@ class EndpointContext {
3508
3481
  location: this.databaseConfig.location,
3509
3482
  }
3510
3483
  : {};
3484
+ this.logFramework &&
3485
+ console.log(`[Context: "${this.contextName}"] dataSourceDbConfig`, dataSourceDbConfig);
3511
3486
  if (this.modeAllowsDatabaseCreation && this.databaseConfig) {
3512
3487
  this.logDb &&
3513
3488
  this.logFramework &&
@@ -3547,7 +3522,7 @@ class EndpointContext {
3547
3522
  ClassHelpers.getMethodsNames(controllerClassFn);
3548
3523
  const configs = ClassHelpers.getControllerConfigs(controllerClassFn);
3549
3524
  const classConfig = configs[0];
3550
- const parentscalculatedPath = _.slice(configs, 1)
3525
+ const parentscalculatedPath = _$1.slice(configs, 1)
3551
3526
  .reverse()
3552
3527
  .map(bc => {
3553
3528
  if (TaonHelpers.isGoodPath(bc.path)) {
@@ -3565,13 +3540,13 @@ class EndpointContext {
3565
3540
  .replace(/\/\//g, '/')
3566
3541
  .split('/')
3567
3542
  .reduce((acc, bc) => {
3568
- return _.last(acc) === bc ? acc : [...acc, bc];
3543
+ return _$1.last(acc) === bc ? acc : [...acc, bc];
3569
3544
  }, [])
3570
3545
  .join('/');
3571
3546
  }
3572
- _.slice(configs, 1).forEach(bc => {
3547
+ _$1.slice(configs, 1).forEach(bc => {
3573
3548
  const alreadyIs = classConfig.methods;
3574
- const toMerge = _.cloneDeep(bc.methods);
3549
+ const toMerge = _$1.cloneDeep(bc.methods);
3575
3550
  for (const key in toMerge) {
3576
3551
  if (toMerge.hasOwnProperty(key) && !alreadyIs[key]) {
3577
3552
  const element = toMerge[key];
@@ -3611,6 +3586,9 @@ class EndpointContext {
3611
3586
  }
3612
3587
  }
3613
3588
  writeActiveRoutes() {
3589
+ if (this.remoteHost) {
3590
+ return;
3591
+ }
3614
3592
  const contexts = [this];
3615
3593
  const troutes = this.activeRoutes.map(({ method, routePath }) => {
3616
3594
  return (TaonHelpers.fillUpTo(method.toUpperCase() + ':', 10) +
@@ -3624,7 +3602,7 @@ class EndpointContext {
3624
3602
  const fileName = path.join(
3625
3603
  /* */
3626
3604
  /* */
3627
- `tmp-routes-${_.kebabCase(this.config.contextName)}.json`);
3605
+ `tmp-routes-${_$1.kebabCase(this.config.contextName)}.json`);
3628
3606
  this.logFramework && console.log(`[taon] routes file: ${fileName} `);
3629
3607
  /* */
3630
3608
  /* */
@@ -3637,7 +3615,7 @@ class EndpointContext {
3637
3615
  /* */
3638
3616
  return (void 0);
3639
3617
  }
3640
- initMidleware() {
3618
+ initMiddlewares() {
3641
3619
  /* */
3642
3620
  /* */
3643
3621
  /* */
@@ -4047,7 +4025,7 @@ class EndpointContext {
4047
4025
  method: methodConfig.type,
4048
4026
  url: `${ctx.uri.origin}${'' // TODO express path
4049
4027
  }${methodConfig.path} `,
4050
- }, Helpers.isBlob(body) || _.isString(body)
4028
+ }, Helpers.isBlob(body) || _$1.isString(body)
4051
4029
  ? body
4052
4030
  : JSON.stringify(body), RestHeaders.from(headers), void 0, () => body);
4053
4031
  resolve(res);
@@ -4139,7 +4117,7 @@ class EndpointContext {
4139
4117
  method: methodConfig.type,
4140
4118
  url: `${ctx.uri.origin}${'' // TODO express path
4141
4119
  }${methodConfig.path} `,
4142
- }, Helpers.isBlob(body) || _.isString(body)
4120
+ }, Helpers.isBlob(body) || _$1.isString(body)
4143
4121
  ? body
4144
4122
  : JSON.stringify(body), RestHeaders.from(headers), void 0, () => body);
4145
4123
  await periods();
@@ -4226,7 +4204,7 @@ class EndpointContext {
4226
4204
  if (mapping) {
4227
4205
  rest.headers.set(Symbols.old.MAPPING_CONFIG_HEADER_QUERY_PARAMS, JSON.stringify(mapping));
4228
4206
  }
4229
- queryParams = _.cloneDeep(param);
4207
+ queryParams = _$1.cloneDeep(param);
4230
4208
  }
4231
4209
  }
4232
4210
  if (currentParam.paramType === 'Header') {
@@ -4305,7 +4283,7 @@ instead
4305
4283
  ({}); // @--end-of-file-for-module=taon lib/endpoint-context.ts
4306
4284
 
4307
4285
  const createContext = (configFn) => {
4308
- let config = configFn(ENV);
4286
+ let config = configFn(ENV$1);
4309
4287
  const endpointContextRef = new EndpointContext(config, configFn);
4310
4288
  const res = {
4311
4289
  types: {
@@ -4329,6 +4307,7 @@ const createContext = (configFn) => {
4329
4307
  return config.contextName;
4330
4308
  },
4331
4309
  /**
4310
+ * @deprecated
4332
4311
  * - get reference to internal context
4333
4312
  */
4334
4313
  async __ref() {
@@ -4339,6 +4318,10 @@ const createContext = (configFn) => {
4339
4318
  }
4340
4319
  return endpointContextRef;
4341
4320
  },
4321
+ /**
4322
+ * only for internal use
4323
+ * @deprecated
4324
+ */
4342
4325
  get __refSync() {
4343
4326
  return endpointContextRef;
4344
4327
  },
@@ -4353,10 +4336,12 @@ const createContext = (configFn) => {
4353
4336
  * - create controller instances for context
4354
4337
  * - init database (if enable) + migation scripts
4355
4338
  */
4356
- initialize: async () => {
4339
+ initialize: async (overrideOptions) => {
4357
4340
  return await new Promise(async (resolve, reject) => {
4358
4341
  setTimeout(async () => {
4359
- await endpointContextRef.init();
4342
+ await endpointContextRef.init({
4343
+ ...overrideOptions,
4344
+ });
4360
4345
  if (config.abstract) {
4361
4346
  throw new Error(`Abstract context can not be initialized`);
4362
4347
  }
@@ -4380,6 +4365,20 @@ const createContext = (configFn) => {
4380
4365
  });
4381
4366
  });
4382
4367
  },
4368
+ /**
4369
+ * realtime communication with server
4370
+ * Udp socket.io (or ipc) based.
4371
+ */
4372
+ get realtime() {
4373
+ return {
4374
+ get client() {
4375
+ return endpointContextRef.realtimeClient;
4376
+ },
4377
+ get server() {
4378
+ return endpointContextRef.realtimeServer;
4379
+ }
4380
+ };
4381
+ },
4383
4382
  };
4384
4383
  return res;
4385
4384
  };
@@ -4402,86 +4401,226 @@ var baseContext = /*#__PURE__*/Object.freeze({
4402
4401
  BaseContext: BaseContext
4403
4402
  });
4404
4403
 
4405
- let BaseSubscriber = class BaseSubscriber extends BaseInjector {
4406
- __trigger_event__(eventName) {
4407
- const ctx = this.__endpoint_context__;
4408
- console.log('Trigger event', eventName, ctx);
4409
- }
4410
- };
4411
- BaseSubscriber = __decorate([
4412
- TaonSubscriber({
4413
- className: 'BaseSubscriber',
4414
- })
4415
- ], BaseSubscriber);
4416
- ;
4417
- ({}); // @--end-of-file-for-module=taon lib/base-classes/base-subscriber.ts
4418
-
4419
- var Base;
4420
- (function (Base) {
4421
- Base.Controller = BaseController;
4422
- Base.CrudController = BaseCrudController;
4423
- Base.Entity = BaseEntity;
4424
- Base.AbstractEntity = BaseAbstractEntity;
4425
- Base.Provider = BaseProvider;
4426
- Base.Class = BaseClass;
4427
- Base.Repository = BaseRepository;
4428
- Base.Subscriber = BaseSubscriber;
4429
- Base.SubscriberForEntity = BaseSubscriberForEntity;
4430
- Base.Context = BaseContext;
4431
- })(Base || (Base = {}));
4432
- ;
4433
- ({}); // @--end-of-file-for-module=taon lib/base-classes/base.ts
4434
-
4435
- function TaonEntity(options) {
4436
- return function (constructor) {
4437
- options = options || {};
4438
- options.uniqueKeyProp = options.uniqueKeyProp || 'id';
4439
- ClassHelpers.setName(constructor, options?.className);
4440
- Mapping.DefaultModelWithMapping(options?.defaultModelValues || {}, _.merge(options?.defaultModelMapping || {}, (options?.defaultModelMappingDeep || {})))(constructor);
4441
- Mapping.DefaultModelWithMapping(void 0, {})(constructor);
4442
- Reflect.defineMetadata(Symbols.metadata.options.entity, options, constructor);
4443
- Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
4444
- Entity(options?.className)(constructor);
4445
- CLASS.setName(constructor, options?.className); // TODO QUICK_FIX for ng2-rest
4446
- };
4447
- }
4448
- class TaonEntityOptions extends Models.DecoratorAbstractOpt {
4449
- }
4450
- ;
4451
- ({}); // @--end-of-file-for-module=taon lib/decorators/classes/entity-decorator.ts
4452
-
4453
- function TaonProvider(options) {
4404
+ function TaonSubscriber(options) {
4454
4405
  return function (constructor) {
4455
- Reflect.defineMetadata(Symbols.metadata.options.provider, options, constructor);
4406
+ Reflect.defineMetadata(Symbols.metadata.options.repository, options, constructor);
4456
4407
  Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
4457
- ClassHelpers.setName(constructor, options?.className || constructor.name);
4408
+ ClassHelpers.setName(constructor, options?.className);
4458
4409
  };
4459
4410
  }
4460
- class TaonProviderOptions extends Models.DecoratorAbstractOpt {
4411
+ class TaonSubscriberOptions extends Models.DecoratorAbstractOpt {
4461
4412
  }
4462
4413
  ;
4463
- ({}); // @--end-of-file-for-module=taon lib/decorators/classes/provider-decorator.ts
4414
+ ({}); // @--end-of-file-for-module=taon lib/decorators/classes/subscriber-decorator.ts
4464
4415
 
4465
- const inject = (entity) => {
4466
- return new Proxy({}, {
4467
- get: (_, propName) => {
4468
- if (propName === 'hasOwnProperty') {
4469
- return () => false;
4470
- }
4471
- const ctor = entity();
4472
- const contextFromClass = ctor[Symbols.ctxInClassOrClassObj];
4473
- const resultContext = contextFromClass;
4474
- if (resultContext) {
4475
- let instance = resultContext.inject(ctor);
4476
- if (propName === 'getOriginalPrototype') {
4477
- return () => Object.getPrototypeOf(instance);
4478
- }
4479
- if (propName === 'getOriginalConstructor') {
4480
- return () => instance.constructor;
4481
- }
4482
- const methods = ctor[Symbols.classMethodsNames] || [];
4483
- const isMethods = methods.includes(propName);
4484
- const methodOrProperty = isMethods
4416
+ let BaseSubscriberForEntity = class BaseSubscriberForEntity extends BaseInjector {
4417
+ /**
4418
+ * Called after entity is loaded.
4419
+ */
4420
+ afterLoad(entity) {
4421
+ this.__endpoint_context__.logDb &&
4422
+ console.log(`AFTER ENTITY LOADED: `, entity);
4423
+ }
4424
+ /**
4425
+ * Called before query execution.
4426
+ */
4427
+ beforeQuery(event) {
4428
+ this.__endpoint_context__.logDb &&
4429
+ console.log(`BEFORE QUERY: `, event.query);
4430
+ }
4431
+ /**
4432
+ * Called after query execution.
4433
+ */
4434
+ afterQuery(event) {
4435
+ this.__endpoint_context__.logDb &&
4436
+ console.log(`AFTER QUERY: `, event.query);
4437
+ }
4438
+ /**
4439
+ * Called before entity insertion.
4440
+ */
4441
+ beforeInsert(event) {
4442
+ this.__endpoint_context__.logDb &&
4443
+ console.log(`BEFORE ENTITY INSERTED: `, event.entity);
4444
+ }
4445
+ /**
4446
+ * Called after entity insertion.
4447
+ */
4448
+ afterInsert(event) {
4449
+ this.__endpoint_context__.logDb &&
4450
+ console.log(`AFTER ENTITY INSERTED: `, event.entity);
4451
+ }
4452
+ /**
4453
+ * Called before entity update.
4454
+ */
4455
+ beforeUpdate(event) {
4456
+ this.__endpoint_context__.logDb &&
4457
+ console.log(`BEFORE ENTITY UPDATED: `, event.entity);
4458
+ }
4459
+ /**
4460
+ * Called after entity update.
4461
+ */
4462
+ afterUpdate(event) {
4463
+ this.__endpoint_context__.logDb &&
4464
+ console.log(`AFTER ENTITY UPDATED: `, event.entity);
4465
+ }
4466
+ /**
4467
+ * Called before entity removal.
4468
+ */
4469
+ beforeRemove(event) {
4470
+ this.__endpoint_context__.logDb &&
4471
+ console.log(`BEFORE ENTITY WITH ID ${event.entityId} REMOVED: `, event.entity);
4472
+ }
4473
+ /**
4474
+ * Called after entity removal.
4475
+ */
4476
+ afterRemove(event) {
4477
+ this.__endpoint_context__.logDb &&
4478
+ console.log(`AFTER ENTITY WITH ID ${event.entityId} REMOVED: `, event.entity);
4479
+ }
4480
+ /**
4481
+ * Called before entity removal.
4482
+ */
4483
+ beforeSoftRemove(event) {
4484
+ this.__endpoint_context__.logDb &&
4485
+ console.log(`BEFORE ENTITY WITH ID ${event.entityId} SOFT REMOVED: `, event.entity);
4486
+ }
4487
+ /**
4488
+ * Called after entity removal.
4489
+ */
4490
+ afterSoftRemove(event) {
4491
+ this.__endpoint_context__.logDb &&
4492
+ console.log(`AFTER ENTITY WITH ID ${event.entityId} SOFT REMOVED: `, event.entity);
4493
+ }
4494
+ /**
4495
+ * Called before entity recovery.
4496
+ */
4497
+ beforeRecover(event) {
4498
+ this.__endpoint_context__.logDb &&
4499
+ console.log(`BEFORE ENTITY WITH ID ${event.entityId} RECOVERED: `, event.entity);
4500
+ }
4501
+ /**
4502
+ * Called after entity recovery.
4503
+ */
4504
+ afterRecover(event) {
4505
+ this.__endpoint_context__.logDb &&
4506
+ console.log(`AFTER ENTITY WITH ID ${event.entityId} RECOVERED: `, event.entity);
4507
+ }
4508
+ /**
4509
+ * Called before transaction start.
4510
+ */
4511
+ beforeTransactionStart(event) {
4512
+ this.__endpoint_context__.logDb &&
4513
+ console.log(`BEFORE TRANSACTION STARTED: `, event);
4514
+ }
4515
+ /**
4516
+ * Called after transaction start.
4517
+ */
4518
+ afterTransactionStart(event) {
4519
+ this.__endpoint_context__.logDb &&
4520
+ console.log(`AFTER TRANSACTION STARTED: `, event);
4521
+ }
4522
+ /**
4523
+ * Called before transaction commit.
4524
+ */
4525
+ beforeTransactionCommit(event) {
4526
+ this.__endpoint_context__.logDb &&
4527
+ console.log(`BEFORE TRANSACTION COMMITTED: `, event);
4528
+ }
4529
+ /**
4530
+ * Called after transaction commit.
4531
+ */
4532
+ afterTransactionCommit(event) {
4533
+ this.__endpoint_context__.logDb &&
4534
+ console.log(`AFTER TRANSACTION COMMITTED: `, event);
4535
+ }
4536
+ /**
4537
+ * Called before transaction rollback.
4538
+ */
4539
+ beforeTransactionRollback(event) {
4540
+ this.__endpoint_context__.logDb &&
4541
+ console.log(`BEFORE TRANSACTION ROLLBACK: `, event);
4542
+ }
4543
+ /**
4544
+ * Called after transaction rollback.
4545
+ */
4546
+ afterTransactionRollback(event) {
4547
+ this.__endpoint_context__.logDb &&
4548
+ console.log(`AFTER TRANSACTION ROLLBACK: `, event);
4549
+ }
4550
+ };
4551
+ BaseSubscriberForEntity = __decorate([
4552
+ TaonSubscriber({
4553
+ className: 'BaseSubscriberForEntity',
4554
+ })
4555
+ ], BaseSubscriberForEntity);
4556
+ ;
4557
+ ({}); // @--end-of-file-for-module=taon lib/base-classes/base-subscriber-for-entity.ts
4558
+
4559
+ var Base;
4560
+ (function (Base) {
4561
+ Base.Controller = BaseController;
4562
+ Base.CrudController = BaseCrudController;
4563
+ Base.Entity = BaseEntity;
4564
+ Base.AbstractEntity = BaseAbstractEntity;
4565
+ Base.Provider = BaseProvider;
4566
+ Base.Class = BaseClass;
4567
+ Base.Repository = BaseRepository;
4568
+ Base.SubscriberForEntity = BaseSubscriberForEntity;
4569
+ Base.Context = BaseContext;
4570
+ })(Base || (Base = {}));
4571
+ ;
4572
+ ({}); // @--end-of-file-for-module=taon lib/base-classes/base.ts
4573
+
4574
+ function TaonEntity(options) {
4575
+ return function (constructor) {
4576
+ options = options || {};
4577
+ options.uniqueKeyProp = options.uniqueKeyProp || 'id';
4578
+ ClassHelpers.setName(constructor, options?.className);
4579
+ Mapping.DefaultModelWithMapping(options?.defaultModelValues || {}, _$1.merge(options?.defaultModelMapping || {}, (options?.defaultModelMappingDeep || {})))(constructor);
4580
+ Mapping.DefaultModelWithMapping(void 0, {})(constructor);
4581
+ Reflect.defineMetadata(Symbols.metadata.options.entity, options, constructor);
4582
+ Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
4583
+ Entity(options?.className)(constructor);
4584
+ CLASS.setName(constructor, options?.className); // TODO QUICK_FIX for ng2-rest
4585
+ };
4586
+ }
4587
+ class TaonEntityOptions extends Models.DecoratorAbstractOpt {
4588
+ }
4589
+ ;
4590
+ ({}); // @--end-of-file-for-module=taon lib/decorators/classes/entity-decorator.ts
4591
+
4592
+ function TaonProvider(options) {
4593
+ return function (constructor) {
4594
+ Reflect.defineMetadata(Symbols.metadata.options.provider, options, constructor);
4595
+ Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
4596
+ ClassHelpers.setName(constructor, options?.className || constructor.name);
4597
+ };
4598
+ }
4599
+ class TaonProviderOptions extends Models.DecoratorAbstractOpt {
4600
+ }
4601
+ ;
4602
+ ({}); // @--end-of-file-for-module=taon lib/decorators/classes/provider-decorator.ts
4603
+
4604
+ const inject = (entity) => {
4605
+ return new Proxy({}, {
4606
+ get: (_, propName) => {
4607
+ if (propName === 'hasOwnProperty') {
4608
+ return () => false;
4609
+ }
4610
+ const ctor = entity();
4611
+ const contextFromClass = ctor[Symbols.ctxInClassOrClassObj];
4612
+ const resultContext = contextFromClass;
4613
+ if (resultContext) {
4614
+ let instance = resultContext.inject(ctor);
4615
+ if (propName === 'getOriginalPrototype') {
4616
+ return () => Object.getPrototypeOf(instance);
4617
+ }
4618
+ if (propName === 'getOriginalConstructor') {
4619
+ return () => instance.constructor;
4620
+ }
4621
+ const methods = ctor[Symbols.classMethodsNames] || [];
4622
+ const isMethods = methods.includes(propName);
4623
+ const methodOrProperty = isMethods
4485
4624
  ? instance[propName].bind(instance)
4486
4625
  : instance[propName];
4487
4626
  return methodOrProperty;
@@ -4490,44 +4629,1221 @@ const inject = (entity) => {
4490
4629
  },
4491
4630
  });
4492
4631
  };
4493
- const injectController = inject;
4494
- const injectSubscriberEvents = (subscriberClassResolveFn, eventName) => {
4495
- const eventsSrc = new Subject();
4496
- const obs = eventsSrc.asObservable();
4497
- let isFirstSubscription = true;
4498
- const proxiedObservable = new Proxy(obs, {
4499
- get(target, prop, receiver) {
4500
- if (prop === 'subscribe') {
4501
- return (...args) => {
4502
- if (isFirstSubscription) {
4503
- isFirstSubscription = false;
4504
- const subscriberClassFN = subscriberClassResolveFn();
4505
- const ctx = subscriberClassFN[Symbols.ctxInClassOrClassObj];
4506
- if (!ctx) {
4507
- throw new Error(`You are trying to inject class without context. Use context like this;
4508
-
4509
- Taon.injectSubscriberEvents( ()=> ` +
4510
- `MyContext.getInstance(${subscriberClassFN?.name}), '${eventName}' )
4632
+ /**
4633
+ * TODO
4634
+ */
4635
+ ;
4636
+ ({}); // @--end-of-file-for-module=taon lib/inject.ts
4511
4637
 
4638
+ const log$1 = Log.create(`[taon-helpers] long-press`, Level.__NOTHING);
4639
+ class TaonLongPress {
4640
+ constructor() {
4641
+ this.pressDuration = 1000;
4642
+ this.onLongPress = new EventEmitter();
4643
+ this.onLongPressing = new EventEmitter();
4644
+ this.onLongPressEnd = new EventEmitter();
4645
+ this.mouseX = 0;
4646
+ this.mouseY = 0;
4647
+ this.allowTrigger = false;
4648
+ this.triggerEnd = _$1.debounce(() => {
4649
+ this.endPress();
4650
+ }, 500);
4651
+ }
4652
+ get press() {
4653
+ return this.pressing;
4654
+ }
4655
+ get longPress() {
4656
+ return this.longPressing;
4657
+ }
4658
+ onMouseDown(event) {
4659
+ log$1.d(`MOUSE DOWN `);
4660
+ if (event.which !== 1)
4661
+ return;
4662
+ this.allowTrigger = true;
4663
+ this.mouseX = event.clientX;
4664
+ this.mouseY = event.clientY;
4665
+ this.pressing = true;
4666
+ this.longPressing = false;
4667
+ this.timeout = setTimeout(() => {
4668
+ if (this.allowTrigger) {
4669
+ this.longPressing = true;
4670
+ log$1.d(`long pressing start pressDuration:${this.pressDuration} `);
4671
+ this.onLongPress.emit(event);
4672
+ this.loop(event);
4673
+ }
4674
+ }, this.pressDuration);
4675
+ this.loop(event);
4676
+ }
4677
+ onMouseMove(event) {
4678
+ if (this.pressing && !this.longPressing) {
4679
+ const xThres = event.clientX - this.mouseX > 10;
4680
+ const yThres = event.clientY - this.mouseY > 10;
4681
+ if (xThres || yThres) {
4682
+ this.endPress();
4683
+ }
4684
+ }
4685
+ }
4686
+ loop(event) {
4687
+ if (this.longPressing) {
4688
+ this.timeout = setTimeout(() => {
4689
+ log$1.d(`emil longpressing`);
4690
+ this.triggerEnd();
4691
+ this.onLongPressing.emit(event);
4692
+ this.loop(event);
4693
+ }, 50);
4694
+ }
4695
+ }
4696
+ endPress(emit = true) {
4697
+ this.allowTrigger = false;
4698
+ clearTimeout(this.timeout);
4699
+ this.longPressing = false;
4700
+ this.pressing = false;
4701
+ if (emit) {
4702
+ log$1.d(`EMIT END`);
4703
+ this.onLongPressEnd.emit(true);
4704
+ }
4705
+ else {
4706
+ log$1.d(`NOT EMIT END`);
4707
+ }
4708
+ }
4709
+ onMouseUp() {
4710
+ this.endPress(false);
4711
+ }
4712
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonLongPress, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
4713
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.5", type: TaonLongPress, isStandalone: true, selector: "[taonLongPress]", inputs: { pressDuration: "pressDuration" }, outputs: { onLongPress: "onLongPress", onLongPressing: "onLongPressing", onLongPressEnd: "onLongPressEnd" }, host: { listeners: { "mousedown": "onMouseDown($event)", "mousemove": "onMouseMove($event)", "mouseup": "onMouseUp()" }, properties: { "class.press": "this.press", "class.longpress": "this.longPress" } }, ngImport: i0 }); }
4714
+ }
4715
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonLongPress, decorators: [{
4716
+ type: Directive,
4717
+ args: [{
4718
+ selector: '[taonLongPress]',
4719
+ standalone: true,
4720
+ }]
4721
+ }], propDecorators: { pressDuration: [{
4722
+ type: Input
4723
+ }], onLongPress: [{
4724
+ type: Output
4725
+ }], onLongPressing: [{
4726
+ type: Output
4727
+ }], onLongPressEnd: [{
4728
+ type: Output
4729
+ }], press: [{
4730
+ type: HostBinding,
4731
+ args: ['class.press']
4732
+ }], longPress: [{
4733
+ type: HostBinding,
4734
+ args: ['class.longpress']
4735
+ }], onMouseDown: [{
4736
+ type: HostListener,
4737
+ args: ['mousedown', ['$event']]
4738
+ }], onMouseMove: [{
4739
+ type: HostListener,
4740
+ args: ['mousemove', ['$event']]
4741
+ }], onMouseUp: [{
4742
+ type: HostListener,
4743
+ args: ['mouseup']
4744
+ }] } });
4745
+ ;
4746
+ ({}); // @--end-of-file-for-module=taon lib/ui/directives/taon-long-press.directive.ts
4512
4747
 
4513
- `);
4514
- }
4515
- const subscriberInstance = ctx.getInstanceBy(subscriberClassFN);
4516
- console.log('First subscription, you can access arguments here:', {
4517
- subscriberClassFN,
4518
- eventName,
4519
- });
4748
+ class TaonInjectHTMLDirective {
4749
+ set taonInjectHTML(content) {
4750
+ this.host.nativeElement.innerHTML = content;
4751
+ }
4752
+ constructor(host) {
4753
+ this.host = host;
4754
+ }
4755
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonInjectHTMLDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
4756
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.5", type: TaonInjectHTMLDirective, isStandalone: true, selector: "[taonInjectHTML]", inputs: { taonInjectHTML: "taonInjectHTML" }, ngImport: i0 }); }
4757
+ }
4758
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonInjectHTMLDirective, decorators: [{
4759
+ type: Directive,
4760
+ args: [{
4761
+ selector: '[taonInjectHTML]',
4762
+ standalone: true,
4763
+ }]
4764
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { taonInjectHTML: [{
4765
+ type: Input
4766
+ }] } });
4767
+ ;
4768
+ ({}); // @--end-of-file-for-module=taon lib/ui/directives/taon-inject-html.directive.ts
4769
+
4770
+ /* */
4771
+ /* */
4772
+ /* */
4773
+ /* */
4774
+ /* */
4775
+ /* */
4776
+ class SafePipe {
4777
+ constructor(sanitizer) {
4778
+ this.sanitizer = sanitizer;
4779
+ }
4780
+ transform(value, type) {
4781
+ switch (type) {
4782
+ case 'html':
4783
+ return this.sanitizer.bypassSecurityTrustHtml(value);
4784
+ case 'style':
4785
+ return this.sanitizer.bypassSecurityTrustStyle(value);
4786
+ case 'script':
4787
+ return this.sanitizer.bypassSecurityTrustScript(value);
4788
+ case 'url':
4789
+ return this.sanitizer.bypassSecurityTrustUrl(value);
4790
+ case 'resourceUrl':
4791
+ return this.sanitizer.bypassSecurityTrustResourceUrl(value);
4792
+ default:
4793
+ throw new Error(`Invalid safe type specified: ${type}`);
4794
+ }
4795
+ }
4796
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: SafePipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }
4797
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: SafePipe, isStandalone: true, name: "safe" }); }
4798
+ }
4799
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: SafePipe, decorators: [{
4800
+ type: Pipe,
4801
+ args: [{
4802
+ name: 'safe',
4803
+ standalone: true,
4804
+ }]
4805
+ }], ctorParameters: () => [{ type: i1.DomSanitizer }] });
4806
+ ;
4807
+ ({}); // @--end-of-file-for-module=taon lib/ui/directives/safe.pipe.ts
4808
+
4809
+ ;
4810
+ ({}); // @--end-of-file-for-module=taon lib/ui/directives/index.ts
4811
+
4812
+ class TaonFullMaterialModule {
4813
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFullMaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4814
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonFullMaterialModule, exports: [A11yModule,
4815
+ CdkStepperModule,
4816
+ CdkTableModule,
4817
+ CdkTreeModule,
4818
+ DragDropModule,
4819
+ MatAutocompleteModule,
4820
+ MatBadgeModule,
4821
+ MatBottomSheetModule,
4822
+ MatButtonModule,
4823
+ MatButtonToggleModule,
4824
+ MatCardModule,
4825
+ MatCheckboxModule,
4826
+ MatChipsModule,
4827
+ MatStepperModule,
4828
+ MatDatepickerModule,
4829
+ MatDialogModule,
4830
+ MatDividerModule,
4831
+ MatExpansionModule,
4832
+ MatGridListModule,
4833
+ MatIconModule,
4834
+ MatInputModule,
4835
+ MatListModule,
4836
+ MatMenuModule,
4837
+ MatNativeDateModule,
4838
+ MatPaginatorModule,
4839
+ MatProgressBarModule,
4840
+ MatProgressSpinnerModule,
4841
+ MatRadioModule,
4842
+ MatRippleModule,
4843
+ MatSelectModule,
4844
+ MatSidenavModule,
4845
+ MatSliderModule,
4846
+ MatSlideToggleModule,
4847
+ MatSnackBarModule,
4848
+ MatSortModule,
4849
+ MatTableModule,
4850
+ MatTabsModule,
4851
+ MatToolbarModule,
4852
+ MatTooltipModule,
4853
+ MatTreeModule,
4854
+ ScrollingModule] }); }
4855
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFullMaterialModule, imports: [A11yModule,
4856
+ CdkStepperModule,
4857
+ CdkTableModule,
4858
+ CdkTreeModule,
4859
+ DragDropModule,
4860
+ MatAutocompleteModule,
4861
+ MatBadgeModule,
4862
+ MatBottomSheetModule,
4863
+ MatButtonModule,
4864
+ MatButtonToggleModule,
4865
+ MatCardModule,
4866
+ MatCheckboxModule,
4867
+ MatChipsModule,
4868
+ MatStepperModule,
4869
+ MatDatepickerModule,
4870
+ MatDialogModule,
4871
+ MatDividerModule,
4872
+ MatExpansionModule,
4873
+ MatGridListModule,
4874
+ MatIconModule,
4875
+ MatInputModule,
4876
+ MatListModule,
4877
+ MatMenuModule,
4878
+ MatNativeDateModule,
4879
+ MatPaginatorModule,
4880
+ MatProgressBarModule,
4881
+ MatProgressSpinnerModule,
4882
+ MatRadioModule,
4883
+ MatRippleModule,
4884
+ MatSelectModule,
4885
+ MatSidenavModule,
4886
+ MatSliderModule,
4887
+ MatSlideToggleModule,
4888
+ MatSnackBarModule,
4889
+ MatSortModule,
4890
+ MatTableModule,
4891
+ MatTabsModule,
4892
+ MatToolbarModule,
4893
+ MatTooltipModule,
4894
+ MatTreeModule,
4895
+ ScrollingModule] }); }
4896
+ }
4897
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFullMaterialModule, decorators: [{
4898
+ type: NgModule,
4899
+ args: [{
4900
+ exports: [
4901
+ A11yModule,
4902
+ CdkStepperModule,
4903
+ CdkTableModule,
4904
+ CdkTreeModule,
4905
+ DragDropModule,
4906
+ MatAutocompleteModule,
4907
+ MatBadgeModule,
4908
+ MatBottomSheetModule,
4909
+ MatButtonModule,
4910
+ MatButtonToggleModule,
4911
+ MatCardModule,
4912
+ MatCheckboxModule,
4913
+ MatChipsModule,
4914
+ MatStepperModule,
4915
+ MatDatepickerModule,
4916
+ MatDialogModule,
4917
+ MatDividerModule,
4918
+ MatExpansionModule,
4919
+ MatGridListModule,
4920
+ MatIconModule,
4921
+ MatInputModule,
4922
+ MatListModule,
4923
+ MatMenuModule,
4924
+ MatNativeDateModule,
4925
+ MatPaginatorModule,
4926
+ MatProgressBarModule,
4927
+ MatProgressSpinnerModule,
4928
+ MatRadioModule,
4929
+ MatRippleModule,
4930
+ MatSelectModule,
4931
+ MatSidenavModule,
4932
+ MatSliderModule,
4933
+ MatSlideToggleModule,
4934
+ MatSnackBarModule,
4935
+ MatSortModule,
4936
+ MatTableModule,
4937
+ MatTabsModule,
4938
+ MatToolbarModule,
4939
+ MatTooltipModule,
4940
+ MatTreeModule,
4941
+ ScrollingModule,
4942
+ ],
4943
+ }]
4944
+ }] });
4945
+ ;
4946
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-full-material.module.ts
4947
+
4948
+ class TaonGithubForkMeCornerComponent {
4949
+ constructor() {
4950
+ this.url = 'https://github.com';
4951
+ }
4952
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonGithubForkMeCornerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4953
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonGithubForkMeCornerComponent, selector: "taon-github-fork-me-corner", inputs: { url: "url" }, ngImport: i0, template: "<a href=\"{{ url }}\" class=\"github-corner\" aria-label=\"View source on GitHub\"\n ><svg\n width=\"80\"\n height=\"80\"\n viewBox=\"0 0 250 250\"\n style=\"\n fill: #151513;\n color: #fff;\n position: absolute;\n top: 0;\n border: 0;\n right: 0;\n \"\n aria-hidden=\"true\">\n <path d=\"M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z\"></path>\n <path\n d=\"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2\"\n fill=\"currentColor\"\n style=\"transform-origin: 130px 106px\"\n class=\"octo-arm\"></path>\n <path\n d=\"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z\"\n fill=\"currentColor\"\n class=\"octo-body\"></path>\n </svg>\n</a>\n", styles: ["a{opacity:.7}a:hover{opacity:1}.github-corner:hover .octo-arm{opacity:1;animation:octocat-wave .56s ease-in-out}@keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width: 500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave .56s ease-in-out}}\n"] }); }
4954
+ }
4955
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonGithubForkMeCornerComponent, decorators: [{
4956
+ type: Component,
4957
+ args: [{ selector: 'taon-github-fork-me-corner', template: "<a href=\"{{ url }}\" class=\"github-corner\" aria-label=\"View source on GitHub\"\n ><svg\n width=\"80\"\n height=\"80\"\n viewBox=\"0 0 250 250\"\n style=\"\n fill: #151513;\n color: #fff;\n position: absolute;\n top: 0;\n border: 0;\n right: 0;\n \"\n aria-hidden=\"true\">\n <path d=\"M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z\"></path>\n <path\n d=\"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2\"\n fill=\"currentColor\"\n style=\"transform-origin: 130px 106px\"\n class=\"octo-arm\"></path>\n <path\n d=\"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z\"\n fill=\"currentColor\"\n class=\"octo-body\"></path>\n </svg>\n</a>\n", styles: ["a{opacity:.7}a:hover{opacity:1}.github-corner:hover .octo-arm{opacity:1;animation:octocat-wave .56s ease-in-out}@keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width: 500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave .56s ease-in-out}}\n"] }]
4958
+ }], propDecorators: { url: [{
4959
+ type: Input
4960
+ }] } });
4961
+ ;
4962
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.component.ts
4963
+
4964
+ class TaonGithubForkMeCornerModule {
4965
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonGithubForkMeCornerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4966
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonGithubForkMeCornerModule, declarations: [TaonGithubForkMeCornerComponent], imports: [CommonModule], exports: [TaonGithubForkMeCornerComponent] }); }
4967
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonGithubForkMeCornerModule, imports: [CommonModule] }); }
4968
+ }
4969
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonGithubForkMeCornerModule, decorators: [{
4970
+ type: NgModule,
4971
+ args: [{
4972
+ imports: [CommonModule],
4973
+ exports: [TaonGithubForkMeCornerComponent],
4974
+ declarations: [TaonGithubForkMeCornerComponent],
4975
+ providers: [],
4976
+ }]
4977
+ }] });
4978
+ ;
4979
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-github-fork-me-corner/taon-github-fork-me-corner.module.ts
4980
+
4981
+ ;
4982
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-github-fork-me-corner/index.ts
4983
+
4984
+ /* */
4985
+ /* */
4986
+ class TaonNotificationsService {
4987
+ constructor(toast) {
4988
+ this.toast = toast;
4989
+ }
4990
+ options(type, options) {
4991
+ if (_$1.isString(options)) {
4992
+ options = {
4993
+ // @ts-ignore
4994
+ title: options,
4995
+ };
4996
+ }
4997
+ return options;
4998
+ }
4999
+ success(options) {
5000
+ const opt = this.options('success', options);
5001
+ return this.toast.success(opt.title);
5002
+ }
5003
+ error(options) {
5004
+ const opt = this.options('error', options);
5005
+ return this.toast.error(opt.title);
5006
+ }
5007
+ warn(options) {
5008
+ const opt = this.options('warning', options);
5009
+ return this.toast.warning(opt.title);
5010
+ }
5011
+ info(options) {
5012
+ const opt = this.options('info', options);
5013
+ return this.toast.info(opt.title);
5014
+ }
5015
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonNotificationsService, deps: [{ token: i1$1.HotToastService }], target: i0.ɵɵFactoryTarget.Injectable }); }
5016
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonNotificationsService, providedIn: 'root' }); }
5017
+ }
5018
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonNotificationsService, decorators: [{
5019
+ type: Injectable,
5020
+ args: [{
5021
+ providedIn: 'root',
5022
+ }]
5023
+ }], ctorParameters: () => [{ type: i1$1.HotToastService }] });
5024
+ ;
5025
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/taon-notifications.service.ts
5026
+
5027
+ class TaonNotificationsComponent {
5028
+ constructor(notification) {
5029
+ this.notification = notification;
5030
+ }
5031
+ ngOnInit() { }
5032
+ init(subscribtionsArray, template, callback) {
5033
+ subscribtionsArray.push(Resource.listenErrors.subscribe(err => {
5034
+ this.notification.error(err.msg);
5035
+ }));
5036
+ }
5037
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonNotificationsComponent, deps: [{ token: TaonNotificationsService }], target: i0.ɵɵFactoryTarget.Component }); }
5038
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonNotificationsComponent, selector: "taon-notifications", ngImport: i0, template: "<!-- <p>\n notyfications works!\n</p> -->\n", styles: [":host{position:absolute;width:0px;height:0px}\n"] }); }
5039
+ }
5040
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonNotificationsComponent, decorators: [{
5041
+ type: Component,
5042
+ args: [{ selector: 'taon-notifications', template: "<!-- <p>\n notyfications works!\n</p> -->\n", styles: [":host{position:absolute;width:0px;height:0px}\n"] }]
5043
+ }], ctorParameters: () => [{ type: TaonNotificationsService }] });
5044
+ ;
5045
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/taon-notifications.component.ts
5046
+
5047
+ class TaonNotificationOptions {
5048
+ }
5049
+ ;
5050
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/taon-notifications.models.ts
5051
+
5052
+ class TaonNotificationsModule {
5053
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonNotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5054
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonNotificationsModule, declarations: [TaonNotificationsComponent], exports: [TaonNotificationsComponent] }); }
5055
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonNotificationsModule, providers: [TaonNotificationsService] }); }
5056
+ }
5057
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonNotificationsModule, decorators: [{
5058
+ type: NgModule,
5059
+ args: [{
5060
+ imports: [],
5061
+ exports: [TaonNotificationsComponent],
5062
+ declarations: [TaonNotificationsComponent],
5063
+ providers: [TaonNotificationsService],
5064
+ }]
5065
+ }] });
5066
+ ;
5067
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/taon-notifications.module.ts
5068
+
5069
+ ;
5070
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/index.ts
5071
+
5072
+ class TaonSessionPasscodeComponent {
5073
+ constructor(element, domSanitizer, cdr) {
5074
+ this.element = element;
5075
+ this.domSanitizer = domSanitizer;
5076
+ this.cdr = cdr;
5077
+ this.destroyRef = inject$1(DestroyRef);
5078
+ this.display = 'none';
5079
+ this.form = new FormGroup({
5080
+ passcode: new FormControl(),
5081
+ });
5082
+ }
5083
+ ngOnInit() {
5084
+ if (!this.passcode) {
5085
+ this.passcode = '123456';
5086
+ }
5087
+ if (!this.message) {
5088
+ this.message = `
5089
+ This website is only for testing purpose. Please type passcode bellow to see content.
5090
+
5091
+ `;
5092
+ }
5093
+ this.safeMessage = this.domSanitizer.bypassSecurityTrustHtml(this.message);
5094
+ if (this.lastPasscode?.toString() === this.passcode?.toString()) {
5095
+ this.hide();
5096
+ }
5097
+ else {
5098
+ this.show();
5099
+ this.focus();
5100
+ }
5101
+ interval(1000)
5102
+ .pipe(takeUntilDestroyed(this.destroyRef), tap(() => {
5103
+ this.focus();
5104
+ }))
5105
+ .subscribe();
5106
+ }
5107
+ submit({ passcode }) {
5108
+ if (this.isPasscodeOK(passcode || '')) {
5109
+ this.hide();
5110
+ }
5111
+ else {
5112
+ this.clear();
5113
+ }
5114
+ }
5115
+ isPasscodeOK(passcode) {
5116
+ this.lastPasscode = passcode.toString();
5117
+ return this.passcode.toString() === passcode;
5118
+ }
5119
+ ngAfterViewInit() { }
5120
+ focus() {
5121
+ this.element.nativeElement.querySelector('input')?.focus();
5122
+ }
5123
+ hide() {
5124
+ this.display = 'none';
5125
+ }
5126
+ show() {
5127
+ this.display = 'block';
5128
+ }
5129
+ clear() {
5130
+ this.form.controls.passcode.setValue('');
5131
+ }
5132
+ onKeyup(event) {
5133
+ if (this.isPasscodeOK(event.target.value || '')) {
5134
+ this.hide();
5135
+ return;
5136
+ }
5137
+ const key = event.keyCode || event.charCode;
5138
+ if (key === 8 || key === 46 || this.lastPasscode?.length > 5) {
5139
+ this.clear();
5140
+ }
5141
+ }
5142
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonSessionPasscodeComponent, deps: [{ token: i0.ElementRef, self: true }, { token: i1.DomSanitizer }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
5143
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonSessionPasscodeComponent, isStandalone: true, selector: "taon-session-passcode", inputs: { passcode: "passcode", message: "message" }, host: { properties: { "style.display": "this.display" } }, ngImport: i0, template: "<form\n [formGroup]=\"form\"\n content=\"notranslate\"\n autocomplete=\"off\"\n (click)=\"focus()\"\n (ngSubmit)=\"submit(form.value)\"\n class=\"flex flex-column align-items-center w-full h-full\">\n <div class=\"flex align-content-center w-full justify-content-center mt-8\">\n <p\n class=\"p-3\"\n style=\"max-width: 400px; min-height: 100px\"\n [innerHtml]=\"safeMessage\"></p>\n </div>\n <input\n type=\"password\"\n class=\"text-5xl md:text-8xl pointer-events-none\"\n #taonpasscode\n (keyup)=\"onKeyup($event)\"\n formControlName=\"passcode\" />\n <!-- placeholder=\"Enter passcode\" -->\n</form>\n", styles: [":host{position:fixed;background-color:#9f9f9f57;z-index:99999;-webkit-backdrop-filter:blur(50px);backdrop-filter:blur(50px);width:100%;height:100%;display:none}input{background:#fff;border-radius:6px;outline:0px;border:0px;color:gray;text-align:center;width:500px}\n"], dependencies: [{ kind: "ngmodule", type: PasswordModule }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }] }); }
5144
+ }
5145
+ __decorate([
5146
+ (Stor.property.in.localstorage
5147
+ .for(TaonSessionPasscodeComponent)
5148
+ .withDefaultValue('')),
5149
+ __metadata("design:type", String)
5150
+ ], TaonSessionPasscodeComponent.prototype, "lastPasscode", void 0);
5151
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonSessionPasscodeComponent, decorators: [{
5152
+ type: Component,
5153
+ args: [{ selector: 'taon-session-passcode', standalone: true, imports: [PasswordModule, CommonModule, ReactiveFormsModule, FormsModule], template: "<form\n [formGroup]=\"form\"\n content=\"notranslate\"\n autocomplete=\"off\"\n (click)=\"focus()\"\n (ngSubmit)=\"submit(form.value)\"\n class=\"flex flex-column align-items-center w-full h-full\">\n <div class=\"flex align-content-center w-full justify-content-center mt-8\">\n <p\n class=\"p-3\"\n style=\"max-width: 400px; min-height: 100px\"\n [innerHtml]=\"safeMessage\"></p>\n </div>\n <input\n type=\"password\"\n class=\"text-5xl md:text-8xl pointer-events-none\"\n #taonpasscode\n (keyup)=\"onKeyup($event)\"\n formControlName=\"passcode\" />\n <!-- placeholder=\"Enter passcode\" -->\n</form>\n", styles: [":host{position:fixed;background-color:#9f9f9f57;z-index:99999;-webkit-backdrop-filter:blur(50px);backdrop-filter:blur(50px);width:100%;height:100%;display:none}input{background:#fff;border-radius:6px;outline:0px;border:0px;color:gray;text-align:center;width:500px}\n"] }]
5154
+ }], ctorParameters: () => [{ type: i0.ElementRef, decorators: [{
5155
+ type: Self
5156
+ }] }, { type: i1.DomSanitizer }, { type: i0.ChangeDetectorRef }], propDecorators: { passcode: [{
5157
+ type: Input
5158
+ }], message: [{
5159
+ type: Input
5160
+ }], display: [{
5161
+ type: HostBinding,
5162
+ args: ['style.display']
5163
+ }] } });
5164
+ ;
5165
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-session-passcode/taon-session-passcode.component.ts
5166
+
5167
+ ;
5168
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-session-passcode/index.ts
5169
+
5170
+ const calculatePercentage = (loaded, total) => Math.floor(loaded * 1.0) / total;
5171
+ class TaonProgressBarComponent {
5172
+ constructor() {
5173
+ this.handlers = [];
5174
+ this.options = _$1.merge({
5175
+ min: 8,
5176
+ max: 100,
5177
+ speed: 200,
5178
+ trickleSpeed: 300,
5179
+ debounceTime: 0,
5180
+ ease: 'linear',
5181
+ spinnerPosition: 'right',
5182
+ direction: 'ltr+',
5183
+ color: 'gray',
5184
+ fixed: true,
5185
+ meteor: true,
5186
+ spinner: true,
5187
+ thick: false,
5188
+ }, _$1.get(ENV, `plugins['ngx-progressbar']`));
5189
+ }
5190
+ ngOnInit() { }
5191
+ ngOnDestroy() {
5192
+ this.handlers.forEach(h => h.unsubscribe());
5193
+ }
5194
+ ngAfterViewInit() {
5195
+ this.loadProgressBar(void 0, axios);
5196
+ }
5197
+ loadProgressBar(config, instance = axios) {
5198
+ }
5199
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5200
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonProgressBarComponent, selector: "taon-progress-bar", inputs: { isDesktop: "isDesktop" }, viewQueries: [{ propertyName: "labProgress", first: true, predicate: ["labProgress"], descendants: true }], ngImport: i0, template: "<ng-progress\n #labProgress\n id=\"lab\"\n [meteor]=\"options.meteor\"\n [color]=\"options.color\"\n [min]=\"options.min\"\n [max]=\"options.max\"\n [speed]=\"options.speed\"\n [spinner]=\"\n options.spinner &&\n (!admin.adminPanelIsOpen ||\n (admin.adminPanelIsOpen && (admin.draggablePopupMode || !isDesktop)))\n \"\n [spinnerPosition]=\"options.spinnerPosition\"\n [direction]=\"options.direction\"\n [trickleSpeed]=\"options.trickleSpeed\"\n [debounceTime]=\"options.debounceTime\"\n [ease]=\"options.ease\"\n [thick]=\"options.thick\"\n [fixed]=\"options.fixed\">\n</ng-progress>\n<!-- (started)=\"onProgressStarted()\"\n (completed)=\"onProgressCompleted()\" -->\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: i1$2.NgProgressComponent, selector: "ng-progress", inputs: ["id", "min", "max", "ease", "color", "speed", "thick", "fixed", "meteor", "spinner", "trickleSpeed", "debounceTime", "trickleFunc", "spinnerPosition", "direction"], outputs: ["started", "completed"] }] }); }
5201
+ }
5202
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonProgressBarComponent, decorators: [{
5203
+ type: Component,
5204
+ args: [{ selector: 'taon-progress-bar', template: "<ng-progress\n #labProgress\n id=\"lab\"\n [meteor]=\"options.meteor\"\n [color]=\"options.color\"\n [min]=\"options.min\"\n [max]=\"options.max\"\n [speed]=\"options.speed\"\n [spinner]=\"\n options.spinner &&\n (!admin.adminPanelIsOpen ||\n (admin.adminPanelIsOpen && (admin.draggablePopupMode || !isDesktop)))\n \"\n [spinnerPosition]=\"options.spinnerPosition\"\n [direction]=\"options.direction\"\n [trickleSpeed]=\"options.trickleSpeed\"\n [debounceTime]=\"options.debounceTime\"\n [ease]=\"options.ease\"\n [thick]=\"options.thick\"\n [fixed]=\"options.fixed\">\n</ng-progress>\n<!-- (started)=\"onProgressStarted()\"\n (completed)=\"onProgressCompleted()\" -->\n", styles: [":host{display:block}\n"] }]
5205
+ }], ctorParameters: () => [], propDecorators: { labProgress: [{
5206
+ type: ViewChild,
5207
+ args: ['labProgress']
5208
+ }], isDesktop: [{
5209
+ type: Input
5210
+ }] } });
5211
+ ;
5212
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-progress-bar/taon-progress-bar.component.ts
5213
+
5214
+ class TaonProgressBarModule {
5215
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5216
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonProgressBarModule, declarations: [TaonProgressBarComponent], imports: [CommonModule, i1$2.NgProgressModule], exports: [TaonProgressBarComponent] }); }
5217
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonProgressBarModule, imports: [CommonModule, NgProgressModule.withConfig({})] }); }
5218
+ }
5219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonProgressBarModule, decorators: [{
5220
+ type: NgModule,
5221
+ args: [{
5222
+ imports: [CommonModule, NgProgressModule.withConfig({})],
5223
+ declarations: [TaonProgressBarComponent],
5224
+ exports: [TaonProgressBarComponent],
5225
+ }]
5226
+ }] });
5227
+ ;
5228
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-progress-bar/taon-progress-bar.module.ts
5229
+
5230
+ ;
5231
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-progress-bar/index.ts
5232
+
5233
+ const log = Log.create('Table wrapper', Level.__NOTHING);
5234
+ const defaultColumns = [
5235
+ {
5236
+ header: 'ID',
5237
+ field: 'id',
5238
+ },
5239
+ {
5240
+ header: 'NAME',
5241
+ field: 'name',
5242
+ },
5243
+ ];
5244
+ class TaonTableComponent {
5245
+ constructor() {
5246
+ this.pageNumber = 1;
5247
+ this.pageSize = 5;
5248
+ this.allowedColumns = [];
5249
+ this.rows = _.times(20, id => {
5250
+ return {
5251
+ id,
5252
+ name: `Amazing ${id} row `,
5253
+ };
5254
+ });
5255
+ this.columns = defaultColumns;
5256
+ this.pageSizeOptions = [5, 10, 20];
5257
+ this.expansionChange = new EventEmitter();
5258
+ this.addingItem = new EventEmitter();
5259
+ this.searchInputChange$ = defer(() => fromEvent(this.search?.nativeElement, 'keyup')).pipe(map(c => c.target['value']), debounceTime(500), distinctUntilChanged(), share(), tap(data => {
5260
+ console.log({ data });
5261
+ }));
5262
+ this.expandable = false;
5263
+ this.showPaginator = true;
5264
+ this.isLoading = false;
5265
+ this.totalElements = 100;
5266
+ this.sub = new Subscription();
5267
+ }
5268
+ async ngOnInit() {
5269
+ if (_.isString(this.entity)) {
5270
+ this.entity = CLASS.getBy(this.entity);
5271
+ }
5272
+ this.sub.add(this.searchInputChange$.subscribe());
5273
+ if (!!this.entity) {
5274
+ this.rows = [];
5275
+ }
5276
+ this.expandable = !!this.expansionTemplate;
5277
+ log.i('this.columns,', this.columns);
5278
+ const columnsConfigSameAsDefault = _.isEqual(this.columns, defaultColumns);
5279
+ const entityClass = this.entity;
5280
+ if (entityClass && columnsConfigSameAsDefault) {
5281
+ log.i('this.crud.entity', CLASS.describeProperites(entityClass));
5282
+ try {
5283
+ const props = CLASS.describeProperites(entityClass);
5284
+ let columns = props
5285
+ .filter(prop => this.allowedColumns.length > 0
5286
+ ? this.allowedColumns.includes(prop)
5287
+ : true)
5288
+ .map(prop => {
5289
+ return {
5290
+ header: _.upperCase(prop),
5291
+ field: prop,
5292
+ };
5293
+ });
5294
+ const extra = this.allowedColumns.filter(f => !props.includes(f));
5295
+ columns = [
5296
+ ...columns,
5297
+ ...extra.map(prop => {
5298
+ return {
5299
+ header: _.upperCase(prop),
5300
+ field: prop,
5301
+ };
5302
+ }),
5303
+ ];
5304
+ if (!this.expandable) {
5305
+ for (let index = 0; index < columns.length; index++) {
5306
+ const col = columns[index];
5307
+ delete col.showExpand;
4520
5308
  }
4521
- return target.subscribe(...args);
4522
- };
5309
+ }
5310
+ this.columns = columns;
4523
5311
  }
4524
- return Reflect.get(target, prop, receiver);
4525
- },
4526
- });
4527
- return proxiedObservable;
4528
- };
5312
+ catch (error) {
5313
+ console.error(error);
5314
+ }
5315
+ }
5316
+ else {
5317
+ }
5318
+ if (!this.entity) {
5319
+ this.showPaginator = false;
5320
+ }
5321
+ await this.retriveData();
5322
+ }
5323
+ ngOnDestroy() {
5324
+ this.sub.unsubscribe();
5325
+ }
5326
+ async getNextPage(e) {
5327
+ this.pageNumber = e.pageIndex + 1;
5328
+ this.pageSize = e.pageSize;
5329
+ await this.retriveData();
5330
+ }
5331
+ async retriveData() {
5332
+ // @ts-ignore
5333
+ }
5334
+ expansionRow(e) {
5335
+ this.expansionChange.next(e);
5336
+ }
5337
+ onTableContextMenu(e) {
5338
+ log.i('context menu event', e);
5339
+ }
5340
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5341
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonTableComponent, selector: "taon-table", inputs: { pageNumber: "pageNumber", pageSize: "pageSize", allowedColumns: "allowedColumns", entity: "entity", expansionTemplate: "expansionTemplate", rows: "rows", columns: "columns", pageSizeOptions: "pageSizeOptions" }, outputs: { expansionChange: "expansionChange", addingItem: "addingItem" }, viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true, static: true }], ngImport: i0, template: "<br />\n<columns-container>\n <column grow>\n <mat-form-field class=\"search-input\">\n <input matInput placeholder=\"Type to search table...\" #search />\n </mat-form-field>\n </column>\n <column [width]=\"80\">\n <button\n mat-fab\n [ngClass]=\"{ 'half-opacity': !search.value }\"\n class=\"undo-button\"\n color=\"secondary\"\n (click)=\"search.value = ''\">\n <mat-icon>close </mat-icon>\n </button>\n </column>\n\n <column [width]=\"80\">\n <button\n mat-fab\n (click)=\"addingItem.next()\"\n class=\"undo-button\"\n color=\"primary\">\n <mat-icon>add</mat-icon>\n </button>\n </column>\n</columns-container>\n\n<mtx-grid\n *ngIf=\"rows && columns\"\n [data]=\"rows\"\n [columns]=\"columns\"\n [expandable]=\"expandable\"\n [expansionTemplate]=\"expansionTemplate\"\n (expansionChange)=\"expansionRow($event)\"\n [length]=\"totalElements\"\n [loading]=\"isLoading\"\n [pageOnFront]=\"false\"\n [pageIndex]=\"pageNumber - 1\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showPaginator]=\"showPaginator\"\n (page)=\"getNextPage($event)\">\n</mtx-grid>\n", styles: [":host{min-height:250px}.search-input{width:100%}.undo-button{margin-left:10px}.half-opacity{opacity:.2}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i3.MtxGrid, selector: "mtx-grid", inputs: ["displayedColumns", "columns", "data", "length", "loading", "trackBy", "columnResizable", "emptyValuePlaceholder", "pageOnFront", "showPaginator", "pageDisabled", "showFirstLastButtons", "pageIndex", "pageSize", "pageSizeOptions", "hidePageSize", "paginationTemplate", "sortOnFront", "sortActive", "sortDirection", "sortDisableClear", "sortDisabled", "sortStart", "rowHover", "rowStriped", "expandable", "expansionTemplate", "multiSelectable", "multiSelectionWithClick", "rowSelectable", "hideRowSelectionCheckbox", "disableRowClickSelection", "rowSelectionFormatter", "rowClassFormatter", "rowSelected", "cellSelectable", "showToolbar", "toolbarTitle", "toolbarTemplate", "columnHideable", "columnHideableChecked", "columnSortable", "columnPinnable", "columnPinOptions", "showColumnMenuButton", "columnMenuButtonText", "columnMenuButtonType", "columnMenuButtonColor", "columnMenuButtonClass", "columnMenuButtonIcon", "showColumnMenuHeader", "columnMenuHeaderText", "columnMenuHeaderTemplate", "showColumnMenuFooter", "columnMenuFooterText", "columnMenuFooterTemplate", "noResultText", "noResultTemplate", "headerTemplate", "headerExtraTemplate", "cellTemplate", "useContentRowTemplate", "useContentHeaderRowTemplate", "useContentFooterRowTemplate", "showSummary", "summaryTemplate", "showSidebar", "sidebarTemplate", "showStatusbar", "statusbarTemplate"], outputs: ["page", "sortChange", "rowClick", "rowContextMenu", "expansionChange", "rowSelectedChange", "cellSelectedChange", "columnChange"], exportAs: ["mtxGrid"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i1$3.ColumnsComponent, selector: "columns-container" }, { kind: "component", type: i1$3.ColumnComponent, selector: "column", inputs: ["width"] }, { kind: "directive", type: i1$3.DirectiveGrow, selector: "[grow]" }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6$1.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }] }); }
5342
+ }
5343
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonTableComponent, decorators: [{
5344
+ type: Component,
5345
+ args: [{ selector: 'taon-table', template: "<br />\n<columns-container>\n <column grow>\n <mat-form-field class=\"search-input\">\n <input matInput placeholder=\"Type to search table...\" #search />\n </mat-form-field>\n </column>\n <column [width]=\"80\">\n <button\n mat-fab\n [ngClass]=\"{ 'half-opacity': !search.value }\"\n class=\"undo-button\"\n color=\"secondary\"\n (click)=\"search.value = ''\">\n <mat-icon>close </mat-icon>\n </button>\n </column>\n\n <column [width]=\"80\">\n <button\n mat-fab\n (click)=\"addingItem.next()\"\n class=\"undo-button\"\n color=\"primary\">\n <mat-icon>add</mat-icon>\n </button>\n </column>\n</columns-container>\n\n<mtx-grid\n *ngIf=\"rows && columns\"\n [data]=\"rows\"\n [columns]=\"columns\"\n [expandable]=\"expandable\"\n [expansionTemplate]=\"expansionTemplate\"\n (expansionChange)=\"expansionRow($event)\"\n [length]=\"totalElements\"\n [loading]=\"isLoading\"\n [pageOnFront]=\"false\"\n [pageIndex]=\"pageNumber - 1\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showPaginator]=\"showPaginator\"\n (page)=\"getNextPage($event)\">\n</mtx-grid>\n", styles: [":host{min-height:250px}.search-input{width:100%}.undo-button{margin-left:10px}.half-opacity{opacity:.2}\n"] }]
5346
+ }], ctorParameters: () => [], propDecorators: { pageNumber: [{
5347
+ type: Input
5348
+ }], pageSize: [{
5349
+ type: Input
5350
+ }], allowedColumns: [{
5351
+ type: Input
5352
+ }], entity: [{
5353
+ type: Input
5354
+ }], expansionTemplate: [{
5355
+ type: Input
5356
+ }], rows: [{
5357
+ type: Input
5358
+ }], columns: [{
5359
+ type: Input
5360
+ }], pageSizeOptions: [{
5361
+ type: Input
5362
+ }], expansionChange: [{
5363
+ type: Output
5364
+ }], addingItem: [{
5365
+ type: Output
5366
+ }], search: [{
5367
+ type: ViewChild,
5368
+ args: ['search', { static: true }]
5369
+ }] } });
4529
5370
  ;
4530
- ({}); // @--end-of-file-for-module=taon lib/inject.ts
5371
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-table/taon-table.component.ts
5372
+
5373
+ class TaonTableModule {
5374
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5375
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonTableModule, declarations: [TaonTableComponent], imports: [CommonModule,
5376
+ MatSelectModule,
5377
+ MtxGridModule,
5378
+ MatFormFieldModule,
5379
+ MatInputModule,
5380
+ StaticColumnsModule,
5381
+ MatIconModule,
5382
+ MatButtonModule,
5383
+ FormsModule,
5384
+ ReactiveFormsModule], exports: [TaonTableComponent] }); }
5385
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonTableModule, imports: [CommonModule,
5386
+ MatSelectModule,
5387
+ MtxGridModule,
5388
+ MatFormFieldModule,
5389
+ MatInputModule,
5390
+ StaticColumnsModule,
5391
+ MatIconModule,
5392
+ MatButtonModule,
5393
+ FormsModule,
5394
+ ReactiveFormsModule] }); }
5395
+ }
5396
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonTableModule, decorators: [{
5397
+ type: NgModule,
5398
+ args: [{
5399
+ imports: [
5400
+ CommonModule,
5401
+ MatSelectModule,
5402
+ MtxGridModule,
5403
+ MatFormFieldModule,
5404
+ MatInputModule,
5405
+ StaticColumnsModule,
5406
+ MatIconModule,
5407
+ MatButtonModule,
5408
+ FormsModule,
5409
+ ReactiveFormsModule,
5410
+ ],
5411
+ exports: [TaonTableComponent],
5412
+ declarations: [TaonTableComponent],
5413
+ }]
5414
+ }] });
5415
+ ;
5416
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-table/taon-table.module.ts
5417
+
5418
+ ;
5419
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-table/index.ts
5420
+
5421
+ class TaonAdminService {
5422
+ /**
5423
+ * @deprecated
5424
+ */
5425
+ disableScroll() {
5426
+ }
5427
+ constructor(cdr) {
5428
+ this.cdr = cdr;
5429
+ this.admin = window['taon'];
5430
+ }
5431
+ addTab(name, template) {
5432
+ this.admin.cmp.tabs.push({
5433
+ name,
5434
+ template,
5435
+ });
5436
+ }
5437
+ init(taonAdminModeConfigurationComponent) {
5438
+ this.taonAdminModeConfigurationComponent =
5439
+ taonAdminModeConfigurationComponent;
5440
+ }
5441
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, deps: [{ token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
5442
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, providedIn: 'root' }); }
5443
+ }
5444
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, decorators: [{
5445
+ type: Injectable,
5446
+ args: [{ providedIn: 'root' }]
5447
+ }], ctorParameters: () => [{ type: i0.ApplicationRef }] });
5448
+ ;
5449
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin-control.service.ts
5450
+
5451
+ class TaonAdminModeConfigurationComponent {
5452
+ get opened() {
5453
+ return !this.isIframe && this.admin.adminPanelIsOpen;
5454
+ }
5455
+ set opened(v) {
5456
+ if (v && !this.openedOnce) {
5457
+ this.openedOnce = true;
5458
+ }
5459
+ if (this.wasOpenDraggablePopup) {
5460
+ this.wasOpenDraggablePopup = false;
5461
+ this.admin.draggablePopupMode = true;
5462
+ }
5463
+ this.admin.adminPanelIsOpen = v;
5464
+ }
5465
+ constructor(breakpointsService) {
5466
+ this.breakpointsService = breakpointsService;
5467
+ this.$destroy = new Subject();
5468
+ this.cdr = inject$1(ChangeDetectorRef);
5469
+ this.taonAdminService = inject$1(TaonAdminService);
5470
+ this.tabs = [];
5471
+ this.admin = window['taon'];
5472
+ this.isWebSQLMode = Helpers.isWebSQL;
5473
+ this.hideTaonToolsInProduction = ENV.hideTaonToolsInProduction && ENV.angularProd;
5474
+ this.isIframe = window.location !== window.parent.location;
5475
+ this.height = 100;
5476
+ this.openedOnce = false;
5477
+ this.reloading = false;
5478
+ this.showPasscode = _$1.isString(ENV.passcode) || _$1.isObject(ENV.passcode);
5479
+ this.passcode = _$1.isString(ENV.passcode)
5480
+ ? ENV.passcode
5481
+ : _$1.isObject(ENV.passcode)
5482
+ ? ENV.passcode.code
5483
+ : '';
5484
+ this.message = _$1.isObject(ENV.passcode)
5485
+ ? ENV.passcode.message
5486
+ : void 0;
5487
+ this.dragPositionZero = { x: 0, y: 0 };
5488
+ this.taonAdminModeConfigurationDataChanged = new EventEmitter();
5489
+ this.taonAdminModeConfigurationData = {};
5490
+ this.admin.cmp = this;
5491
+ this.breakpointsService
5492
+ .listenTo()
5493
+ .pipe(takeUntil(this.$destroy))
5494
+ .subscribe(breakpoint => {
5495
+ // @ts-ignore
5496
+ this.isDesktop = breakpoint === 'desktop';
5497
+ });
5498
+ this.taonAdminService.init(this);
5499
+ }
5500
+ reloadTabs() {
5501
+ this.reloading = true;
5502
+ setTimeout(() => {
5503
+ this.reloading = false;
5504
+ console.log('reloading done');
5505
+ });
5506
+ }
5507
+ async ngOnInit() {
5508
+ await Stor.awaitPendingOperatios();
5509
+ this.dragPosition = { x: this.dragPositionX, y: this.dragPositionY };
5510
+ this.openedOnce = this.opened;
5511
+ }
5512
+ ngAfterViewInit() {
5513
+ //Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.
5514
+ //Add 'implements AfterViewInit' to the class.
5515
+ setTimeout(() => {
5516
+ this.height = window.innerHeight;
5517
+ if (this.admin.draggablePopupMode) {
5518
+ this.reloadTabs();
5519
+ }
5520
+ });
5521
+ }
5522
+ ngOnDestroy() {
5523
+ this.$destroy.next(void 0);
5524
+ this.$destroy.complete();
5525
+ }
5526
+ onResize(event) {
5527
+ this.height = window.innerHeight;
5528
+ }
5529
+ async toogle() {
5530
+ this.opened = !this.opened;
5531
+ }
5532
+ async toogleFullScreen() {
5533
+ this.admin.draggablePopupMode = true;
5534
+ this.admin.draggablePopupModeFullScreen =
5535
+ !this.admin.draggablePopupModeFullScreen;
5536
+ this.resetDrag();
5537
+ }
5538
+ resetDrag() {
5539
+ this.dragPositionX = 0;
5540
+ this.dragPositionY = 0;
5541
+ this.dragPosition = { x: this.dragPositionX, y: this.dragPositionY };
5542
+ }
5543
+ moved(c) {
5544
+ this.dragPositionX += c.distance.x;
5545
+ this.dragPositionY += c.distance.y;
5546
+ }
5547
+ scrollTabs(event) {
5548
+ return;
5549
+ }
5550
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationComponent, deps: [{ token: i1$3.BreakpointsService }], target: i0.ɵɵFactoryTarget.Component }); }
5551
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonAdminModeConfigurationComponent, selector: "app-taon-admin-mode-configuration", inputs: { taonAdminModeConfigurationData: "taonAdminModeConfigurationData" }, outputs: { taonAdminModeConfigurationDataChanged: "taonAdminModeConfigurationDataChanged" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabGroup"], descendants: true }], ngImport: i0, template: "<!-- #region basic global components -->\n<taon-session-passcode\n *ngIf=\"showPasscode\"\n [passcode]=\"passcode\"\n [message]=\"message\" />\n<!-- <taon-progress-bar [isDesktop]=\"isDesktop\"></taon-progress-bar> -->\n<!-- <taon-notifications></taon-notifications> -->\n<button\n mat-fab\n class=\"fab-button\"\n color=\"accent\"\n aria-label=\"Taon Admin Mode\"\n *ngIf=\"\n !admin.draggablePopupMode &&\n isDesktop &&\n !isIframe &&\n !hideTaonToolsInProduction\n \"\n (click)=\"toogle()\">\n <mat-icon>build</mat-icon>\n</button>\n<!-- #endregion -->\n\n<!-- #region small hidden button -->\n<!-- <button class=\"admin-show-button\"\n *ngIf=\"!admin.draggablePopupMode && isDesktop\"\n (click)=\"toogle()\"> Admin </button> -->\n<!-- #endregion -->\n\n<ng-template #contentNoScroll>\n <ng-content> </ng-content>\n</ng-template>\n\n<ng-template #content>\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"contentNoScroll\"></ng-container>\n </ng-scrollbar>\n</ng-template>\n\n<!-- #region admin tabs -->\n<ng-template #adminTabs>\n <div class=\"taon-header-admin-wrapper\">\n <columns-container\n class=\"taon-header-admin\"\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column width=\"200\" class=\"logo-header\">\n <img\n *ngIf=\"openedOnce\"\n src=\"assets/assets-for/taon/shared/logo-header-admin-mode.png\" />\n </column>\n\n <column grow>\n <!-- <span>Super Admin Mode</span> -->\n </column>\n\n <column\n width=\"40\"\n *ngIf=\"\n !admin.draggablePopupModeFullScreen && !admin.draggablePopupMode\n \">\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"\n admin.draggablePopupMode = false;\n opened = false;\n wasOpenDraggablePopup = true\n \"\n class=\"admin-close-button\">\n <mat-icon>close </mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"toogle()\"\n class=\"admin-close-button\">\n <mat-icon>close</mat-icon>\n </button>\n </column>\n\n <column width=\"40\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>close_fullscreen</mat-icon>\n </button>\n </column>\n\n <column width=\"40\" *ngIf=\"!admin.draggablePopupModeFullScreen\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = true\"\n class=\"admin-close-button\">\n <mat-icon>launch</mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = false; resetDrag()\"\n class=\"admin-close-button\">\n <mat-icon style=\"transform: rotate(180deg)\">login</mat-icon>\n </button>\n </column>\n </columns-container>\n </div>\n\n <columns-container\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column grow>\n <mat-tab-group\n dynamicHeight\n (wheel)=\"scrollTabs($event)\"\n #tabGroup\n [selectedIndex]=\"selectedIndex\"\n (selectedIndexChange)=\"selectedIndex = $event\">\n <mat-tab label=\"DB/Cache\">\n <section>\n <mat-card>\n <mat-card-header>\n <mat-card-subtitle>WEBSQL MODE</mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <mat-checkbox\n [disabled]=\"!isWebSQLMode\"\n [ngModel]=\"admin.keepWebsqlDbDataAfterReload\"\n (change)=\"\n admin.setKeepWebsqlDbDataAfterReload($event.checked)\n \">\n Don't remove data when reloading\n </mat-checkbox>\n </mat-card-content>\n </mat-card>\n </section>\n <br />\n <taon-db-admin />\n </mat-tab>\n\n <mat-tab label=\"Files\" *ngIf=\"admin.enabledTabs.includes('files')\">\n <section>\n <mat-checkbox\n [ngModel]=\"admin.filesEditMode\"\n (change)=\"admin.setEditMode($event.checked)\"\n >Edit mode</mat-checkbox\n >\n </section>\n <!-- admin.filesEditMode: {{ admin.filesEditMode }} -->\n <!-- <taon-admin-edit-mode *ngIf=\"admin.filesEditMode\">\n </taon-admin-edit-mode> -->\n <br />\n <hr *ngIf=\"admin.filesEditMode\" />\n <!-- <section>\n <button mat-raised-button>[TODO] Clear Files from browser cache </button> <br>\n <button mat-raised-button>[TODO] Start files export (as zip) </button> <br>\n <button mat-raised-button>[TODO] Import whole database (from zip) </button><br>\n </section> -->\n </mat-tab>\n <mat-tab *ngFor=\"let tab of tabs\" label=\"{{ tab.name }}\">\n <div\n class=\"full-tabs\"\n [style.height.px]=\"height - 150\"\n *ngIf=\"!isIframe\">\n <ng-container *ngTemplateOutlet=\"tab.template\"></ng-container>\n </div>\n <ng-container *ngIf=\"isIframe\">\n <ng-container *ngTemplateOutlet=\"tab.template\"></ng-container>\n </ng-container>\n </mat-tab>\n\n <!-- <mat-tab label=\"Portal\">\n <section>\n <mat-checkbox>[TODO] Maintenance Mode for whole portal</mat-checkbox>\n\n <mat-expansion-panel>\n\n <mat-expansion-panel-header>\n [TODO] Active User: 80432\n </mat-expansion-panel-header>\n <section>\n <button mat-raised-button>[TODO] Send notification to users </button><br>\n <button mat-raised-button>[TODO] Send email to users </button><br>\n </section>\n </mat-expansion-panel>\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n [TODO] Enable features\n </mat-expansion-panel-header>\n <mat-checkbox>[TODO] AB testing</mat-checkbox> <br>\n <mat-checkbox>\n [TODO] Newsletter email question popup\n </mat-checkbox> <br>\n <mat-checkbox>\n [TODO] Promotion popup\n </mat-checkbox> <br>\n </mat-expansion-panel>\n </section>\n </mat-tab>\n <mat-tab label=\"User\">\n Welcome in user managements\n </mat-tab>\n <mat-tab label=\"Translations\">\n Welcome in user managements\n </mat-tab> -->\n </mat-tab-group>\n </column>\n </columns-container>\n</ng-template>\n<!-- #endregion -->\n\n<!-- #region small/mobile draggable popup windows -->\n<div\n class=\"draggable-popup-mode-window\"\n *ngIf=\"\n admin.draggablePopupMode && !admin.draggablePopupModeFullScreen && !isIframe\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPosition\"\n (cdkDragEnded)=\"moved($event)\">\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </ng-scrollbar>\n</div>\n<!-- #endregion -->\n\n<!-- #region fullscreen draggable popup window -->\n<div\n class=\"draggable-popup-mode-window-full\"\n *ngIf=\"\n admin.draggablePopupMode &&\n admin.draggablePopupModeFullScreen &&\n !isIframe &&\n !reloading\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPositionZero\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region content when not in draggable (or fullscreen draggable) popup -->\n<div\n [style.height.px]=\"height\"\n *ngIf=\"\n (isIframe ||\n !isDesktop ||\n admin.draggablePopupMode ||\n admin.draggablePopupModeFullScreen) &&\n !reloading\n \"\n style=\"width: 100%; display: block\"\n class=\"content\">\n <ng-container\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region draggable popup window -->\n<mat-drawer-container\n *ngIf=\"!admin.draggablePopupMode && isDesktop && !isIframe\"\n class=\"example-container\"\n [style.height.px]=\"height\"\n style=\"background-color: transparent\"\n (backdropClick)=\"opened = false\"\n [hasBackdrop]=\"false\">\n <mat-drawer #drawer style=\"width: 580px\" [opened]=\"opened\" [mode]=\"'side'\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </mat-drawer>\n <mat-drawer-content style=\"overflow: hidden\">\n <ng-container\n *ngIf=\"!admin.draggablePopupMode && !reloading\"\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n </mat-drawer-content>\n</mat-drawer-container>\n<!-- #endregion -->\n", styles: ["section{display:block;padding:10px}section>*{margin-top:0!important;margin-bottom:10px!important}section>*:last-child{margin-bottom:0!important}:host{display:block}.draggable-column{display:block!important;width:100%!important}.admin-show-button{position:fixed;bottom:100px;left:-15px;z-index:2147483647;transform:rotate(90deg);border:0px;color:#fff;background:gray;opacity:.1;cursor:pointer}.admin-show-button:hover{opacity:1}.taon-ui-super-admin-mode{font-family:JosefinSans-Bold;text-align:right;margin-right:10px}mat-drawer{margin:0;background-color:#dcdcdc!important}.taon-header-admin-wrapper{overflow:hidden;width:100%;display:block}.taon-header-admin{background:#fff;box-shadow:0 -9px 6px 6px #000;height:47px}.taon-header-admin .logo-header img{height:18px;padding:8px;position:relative;float:left;top:7px;box-sizing:content-box;transform:scale(1.5);left:49px}.draggable-popup-mode-window{width:600px;height:500px;border:solid 1px #ccc;color:#000000de;cursor:move;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important;transition:box-shadow .2s cubic-bezier(0,0,.2,1);box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.draggable-popup-mode-window:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.draggable-popup-mode-window-full{width:100%;height:100%;overflow:scroll;color:#000000de;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important}.admin-close-button{float:right}.fab-button{position:fixed;right:110px;bottom:100px;z-index:10;background-color:#dcdcdc;color:#8f8f8f}.full-tabs{padding:10px}.mat-drawer-container-full-screen{background-color:red}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$3.ColumnsComponent, selector: "columns-container" }, { kind: "component", type: i1$3.ColumnComponent, selector: "column", inputs: ["width"] }, { kind: "directive", type: i1$3.DirectiveGrow, selector: "[grow]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$1.NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "directive", type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i6$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6$1.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i7.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i7.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i7.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i10.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i10.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "component", type: i11.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i11.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: TaonSessionPasscodeComponent, selector: "taon-session-passcode", inputs: ["passcode", "message"] }] }); }
5552
+ }
5553
+ __decorate([
5554
+ Stor.property.in.localstorage
5555
+ .for(TaonAdminModeConfigurationComponent)
5556
+ .withDefaultValue(0),
5557
+ __metadata("design:type", Number)
5558
+ ], TaonAdminModeConfigurationComponent.prototype, "dragPositionX", void 0);
5559
+ __decorate([
5560
+ Stor.property.in.localstorage
5561
+ .for(TaonAdminModeConfigurationComponent)
5562
+ .withDefaultValue(0),
5563
+ __metadata("design:type", Number)
5564
+ ], TaonAdminModeConfigurationComponent.prototype, "dragPositionY", void 0);
5565
+ __decorate([
5566
+ Stor.property.in.localstorage
5567
+ .for(TaonAdminModeConfigurationComponent)
5568
+ .withDefaultValue(0),
5569
+ __metadata("design:type", Number)
5570
+ ], TaonAdminModeConfigurationComponent.prototype, "selectedIndex", void 0);
5571
+ __decorate([
5572
+ Stor.property.in.localstorage
5573
+ .for(TaonAdminModeConfigurationComponent)
5574
+ .withDefaultValue(false),
5575
+ __metadata("design:type", Boolean)
5576
+ ], TaonAdminModeConfigurationComponent.prototype, "wasOpenDraggablePopup", void 0);
5577
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationComponent, decorators: [{
5578
+ type: Component,
5579
+ args: [{ selector: 'app-taon-admin-mode-configuration', template: "<!-- #region basic global components -->\n<taon-session-passcode\n *ngIf=\"showPasscode\"\n [passcode]=\"passcode\"\n [message]=\"message\" />\n<!-- <taon-progress-bar [isDesktop]=\"isDesktop\"></taon-progress-bar> -->\n<!-- <taon-notifications></taon-notifications> -->\n<button\n mat-fab\n class=\"fab-button\"\n color=\"accent\"\n aria-label=\"Taon Admin Mode\"\n *ngIf=\"\n !admin.draggablePopupMode &&\n isDesktop &&\n !isIframe &&\n !hideTaonToolsInProduction\n \"\n (click)=\"toogle()\">\n <mat-icon>build</mat-icon>\n</button>\n<!-- #endregion -->\n\n<!-- #region small hidden button -->\n<!-- <button class=\"admin-show-button\"\n *ngIf=\"!admin.draggablePopupMode && isDesktop\"\n (click)=\"toogle()\"> Admin </button> -->\n<!-- #endregion -->\n\n<ng-template #contentNoScroll>\n <ng-content> </ng-content>\n</ng-template>\n\n<ng-template #content>\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"contentNoScroll\"></ng-container>\n </ng-scrollbar>\n</ng-template>\n\n<!-- #region admin tabs -->\n<ng-template #adminTabs>\n <div class=\"taon-header-admin-wrapper\">\n <columns-container\n class=\"taon-header-admin\"\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column width=\"200\" class=\"logo-header\">\n <img\n *ngIf=\"openedOnce\"\n src=\"assets/assets-for/taon/shared/logo-header-admin-mode.png\" />\n </column>\n\n <column grow>\n <!-- <span>Super Admin Mode</span> -->\n </column>\n\n <column\n width=\"40\"\n *ngIf=\"\n !admin.draggablePopupModeFullScreen && !admin.draggablePopupMode\n \">\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"\n admin.draggablePopupMode = false;\n opened = false;\n wasOpenDraggablePopup = true\n \"\n class=\"admin-close-button\">\n <mat-icon>close </mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"toogle()\"\n class=\"admin-close-button\">\n <mat-icon>close</mat-icon>\n </button>\n </column>\n\n <column width=\"40\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>close_fullscreen</mat-icon>\n </button>\n </column>\n\n <column width=\"40\" *ngIf=\"!admin.draggablePopupModeFullScreen\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = true\"\n class=\"admin-close-button\">\n <mat-icon>launch</mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = false; resetDrag()\"\n class=\"admin-close-button\">\n <mat-icon style=\"transform: rotate(180deg)\">login</mat-icon>\n </button>\n </column>\n </columns-container>\n </div>\n\n <columns-container\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column grow>\n <mat-tab-group\n dynamicHeight\n (wheel)=\"scrollTabs($event)\"\n #tabGroup\n [selectedIndex]=\"selectedIndex\"\n (selectedIndexChange)=\"selectedIndex = $event\">\n <mat-tab label=\"DB/Cache\">\n <section>\n <mat-card>\n <mat-card-header>\n <mat-card-subtitle>WEBSQL MODE</mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <mat-checkbox\n [disabled]=\"!isWebSQLMode\"\n [ngModel]=\"admin.keepWebsqlDbDataAfterReload\"\n (change)=\"\n admin.setKeepWebsqlDbDataAfterReload($event.checked)\n \">\n Don't remove data when reloading\n </mat-checkbox>\n </mat-card-content>\n </mat-card>\n </section>\n <br />\n <taon-db-admin />\n </mat-tab>\n\n <mat-tab label=\"Files\" *ngIf=\"admin.enabledTabs.includes('files')\">\n <section>\n <mat-checkbox\n [ngModel]=\"admin.filesEditMode\"\n (change)=\"admin.setEditMode($event.checked)\"\n >Edit mode</mat-checkbox\n >\n </section>\n <!-- admin.filesEditMode: {{ admin.filesEditMode }} -->\n <!-- <taon-admin-edit-mode *ngIf=\"admin.filesEditMode\">\n </taon-admin-edit-mode> -->\n <br />\n <hr *ngIf=\"admin.filesEditMode\" />\n <!-- <section>\n <button mat-raised-button>[TODO] Clear Files from browser cache </button> <br>\n <button mat-raised-button>[TODO] Start files export (as zip) </button> <br>\n <button mat-raised-button>[TODO] Import whole database (from zip) </button><br>\n </section> -->\n </mat-tab>\n <mat-tab *ngFor=\"let tab of tabs\" label=\"{{ tab.name }}\">\n <div\n class=\"full-tabs\"\n [style.height.px]=\"height - 150\"\n *ngIf=\"!isIframe\">\n <ng-container *ngTemplateOutlet=\"tab.template\"></ng-container>\n </div>\n <ng-container *ngIf=\"isIframe\">\n <ng-container *ngTemplateOutlet=\"tab.template\"></ng-container>\n </ng-container>\n </mat-tab>\n\n <!-- <mat-tab label=\"Portal\">\n <section>\n <mat-checkbox>[TODO] Maintenance Mode for whole portal</mat-checkbox>\n\n <mat-expansion-panel>\n\n <mat-expansion-panel-header>\n [TODO] Active User: 80432\n </mat-expansion-panel-header>\n <section>\n <button mat-raised-button>[TODO] Send notification to users </button><br>\n <button mat-raised-button>[TODO] Send email to users </button><br>\n </section>\n </mat-expansion-panel>\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n [TODO] Enable features\n </mat-expansion-panel-header>\n <mat-checkbox>[TODO] AB testing</mat-checkbox> <br>\n <mat-checkbox>\n [TODO] Newsletter email question popup\n </mat-checkbox> <br>\n <mat-checkbox>\n [TODO] Promotion popup\n </mat-checkbox> <br>\n </mat-expansion-panel>\n </section>\n </mat-tab>\n <mat-tab label=\"User\">\n Welcome in user managements\n </mat-tab>\n <mat-tab label=\"Translations\">\n Welcome in user managements\n </mat-tab> -->\n </mat-tab-group>\n </column>\n </columns-container>\n</ng-template>\n<!-- #endregion -->\n\n<!-- #region small/mobile draggable popup windows -->\n<div\n class=\"draggable-popup-mode-window\"\n *ngIf=\"\n admin.draggablePopupMode && !admin.draggablePopupModeFullScreen && !isIframe\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPosition\"\n (cdkDragEnded)=\"moved($event)\">\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </ng-scrollbar>\n</div>\n<!-- #endregion -->\n\n<!-- #region fullscreen draggable popup window -->\n<div\n class=\"draggable-popup-mode-window-full\"\n *ngIf=\"\n admin.draggablePopupMode &&\n admin.draggablePopupModeFullScreen &&\n !isIframe &&\n !reloading\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPositionZero\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region content when not in draggable (or fullscreen draggable) popup -->\n<div\n [style.height.px]=\"height\"\n *ngIf=\"\n (isIframe ||\n !isDesktop ||\n admin.draggablePopupMode ||\n admin.draggablePopupModeFullScreen) &&\n !reloading\n \"\n style=\"width: 100%; display: block\"\n class=\"content\">\n <ng-container\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region draggable popup window -->\n<mat-drawer-container\n *ngIf=\"!admin.draggablePopupMode && isDesktop && !isIframe\"\n class=\"example-container\"\n [style.height.px]=\"height\"\n style=\"background-color: transparent\"\n (backdropClick)=\"opened = false\"\n [hasBackdrop]=\"false\">\n <mat-drawer #drawer style=\"width: 580px\" [opened]=\"opened\" [mode]=\"'side'\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </mat-drawer>\n <mat-drawer-content style=\"overflow: hidden\">\n <ng-container\n *ngIf=\"!admin.draggablePopupMode && !reloading\"\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n </mat-drawer-content>\n</mat-drawer-container>\n<!-- #endregion -->\n", styles: ["section{display:block;padding:10px}section>*{margin-top:0!important;margin-bottom:10px!important}section>*:last-child{margin-bottom:0!important}:host{display:block}.draggable-column{display:block!important;width:100%!important}.admin-show-button{position:fixed;bottom:100px;left:-15px;z-index:2147483647;transform:rotate(90deg);border:0px;color:#fff;background:gray;opacity:.1;cursor:pointer}.admin-show-button:hover{opacity:1}.taon-ui-super-admin-mode{font-family:JosefinSans-Bold;text-align:right;margin-right:10px}mat-drawer{margin:0;background-color:#dcdcdc!important}.taon-header-admin-wrapper{overflow:hidden;width:100%;display:block}.taon-header-admin{background:#fff;box-shadow:0 -9px 6px 6px #000;height:47px}.taon-header-admin .logo-header img{height:18px;padding:8px;position:relative;float:left;top:7px;box-sizing:content-box;transform:scale(1.5);left:49px}.draggable-popup-mode-window{width:600px;height:500px;border:solid 1px #ccc;color:#000000de;cursor:move;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important;transition:box-shadow .2s cubic-bezier(0,0,.2,1);box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.draggable-popup-mode-window:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.draggable-popup-mode-window-full{width:100%;height:100%;overflow:scroll;color:#000000de;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important}.admin-close-button{float:right}.fab-button{position:fixed;right:110px;bottom:100px;z-index:10;background-color:#dcdcdc;color:#8f8f8f}.full-tabs{padding:10px}.mat-drawer-container-full-screen{background-color:red}\n"] }]
5580
+ }], ctorParameters: () => [{ type: i1$3.BreakpointsService }], propDecorators: { tabGroup: [{
5581
+ type: ViewChild,
5582
+ args: ['tabGroup']
5583
+ }], taonAdminModeConfigurationDataChanged: [{
5584
+ type: Output
5585
+ }], taonAdminModeConfigurationData: [{
5586
+ type: Input
5587
+ }], onResize: [{
5588
+ type: HostListener,
5589
+ args: ['window:resize', ['$event']]
5590
+ }] } });
5591
+ ;
5592
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.ts
5593
+
5594
+ class TaonAdminEditModeComponent {
5595
+ constructor(router) {
5596
+ this.router = router;
5597
+ this.inited$ = of(true);
5598
+ this.destroyed$ = new Subject();
5599
+ this.handlers = [];
5600
+ this.columns = [
5601
+ {
5602
+ header: 'ID',
5603
+ field: 'id',
5604
+ maxWidth: 100,
5605
+ showExpand: true,
5606
+ },
5607
+ {
5608
+ header: 'src',
5609
+ field: 'src',
5610
+ maxWidth: 250,
5611
+ },
5612
+ {
5613
+ header: 'Content Type',
5614
+ field: 'contentType',
5615
+ maxWidth: 120,
5616
+ },
5617
+ ];
5618
+ this.taonAdminEditModeDataChanged = new EventEmitter();
5619
+ this.taonAdminEditModeData = {};
5620
+ }
5621
+ ngOnInit() {
5622
+ this.files = this.admin.currentFiles;
5623
+ this.handlers.push(this.admin.onEditMode$.subscribe(() => {
5624
+ this.refresFilesList();
5625
+ }));
5626
+ this.admin.onRegisterFile().pipe(takeUntil(this.destroyed$), tap(() => {
5627
+ this.refresFilesList();
5628
+ }));
5629
+ }
5630
+ ngOnDestroy() {
5631
+ this.handlers.forEach(h => h.unsubscribe());
5632
+ this.destroyed$.next(void 0);
5633
+ this.destroyed$.unsubscribe();
5634
+ }
5635
+ ngAfterViewInit() {
5636
+ //Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.
5637
+ //Add 'implements AfterViewInit' to the class.
5638
+ setTimeout(() => {
5639
+ this.refresFilesList();
5640
+ }, 500);
5641
+ }
5642
+ expansionRow(e) {
5643
+ console.log(e);
5644
+ }
5645
+ refresFilesList() {
5646
+ this.files = this.admin.currentFiles;
5647
+ }
5648
+ searchFind(file) {
5649
+ if (!!this?.fileToSearch) {
5650
+ return file?.src?.search(this?.fileToSearch) !== -1;
5651
+ }
5652
+ return true;
5653
+ }
5654
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeComponent, deps: [{ token: i1$4.Router }], target: i0.ɵɵFactoryTarget.Component }); }
5655
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonAdminEditModeComponent, selector: "taon-admin-edit-mode", inputs: { taonAdminEditModeData: "taonAdminEditModeData" }, outputs: { taonAdminEditModeDataChanged: "taonAdminEditModeDataChanged" }, ngImport: i0, template: "<ng-template #expansionTpl let-row>\n hello from expansion {{ row.src }}\n</ng-template>\n\n<mat-card *ngIf=\"inited$ | async\">\n <div *ngIf=\"!admin.selectedFile\">Please select file from portal to edit</div>\n <taon-file\n *ngIf=\"admin.selectedFile\"\n class=\"file-inside-admin\"\n [insideAdmin]=\"true\"\n [file]=\"admin.selectedFile\"></taon-file>\n\n <hr />\n\n <mat-tab-group\n dynamicHeight\n [selectedIndex]=\"selectedTabIndex\"\n (selectedIndexChange)=\"selectedTabIndex = $event; refresFilesList()\">\n <mat-tab label=\"General\">\n <!-- <taon-file-general-opt\n [file]=\"admin.selectedFile\"></taon-file-general-opt> -->\n </mat-tab>\n <!-- <mat-tab label=\"CSS Editing\">\n <ace [mode]=\"'css'\"\n *ngIf=\"admin.selectedFile\"\n [(value)]=\"admin.selectedFile.css\"\n [theme]=\"'github'\"\n style=\"width: 100%; height: 300px;\"></ace>\n </mat-tab> -->\n\n <mat-tab label=\"Files Picker\">\n <!-- <taon-table\n [entity]=\"entity\"\n [allowedColumns]=\"['src', 'contentType']\"\n [columns]=\"columns\"\n [expansionTemplate]=\"expansionTpl\"\n (expansionChange)=\"expansionRow($event)\">\n </taon-table> -->\n </mat-tab>\n <mat-tab label=\"File Version History\">\n <!-- <taon-table\n [entity]=\"entity\"\n [allowedColumns]=\"['src', 'contentType']\"\n [columns]=\"columns\"\n [expansionTemplate]=\"expansionTpl\"\n (expansionChange)=\"expansionRow($event)\">\n </taon-table> -->\n </mat-tab>\n <mat-tab label=\"Current File\">\n <columns-container *ngIf=\"files.length > 0\">\n <column grow>\n <mat-form-field style=\"width: 100%\">\n <input\n matInput\n [(ngModel)]=\"fileToSearch\"\n (focus)=\"refresFilesList()\"\n placeholder=\"Search by name\" />\n </mat-form-field>\n </column>\n <column [width]=\"40\">\n <button\n mat-icon-button\n (click)=\"fileToSearch = ''; refresFilesList()\"\n *ngIf=\"fileToSearch && fileToSearch?.trim() !== ''\">\n <mat-icon>backspace</mat-icon>\n </button>\n </column>\n <!-- <column [width]=\"40\">\n <button mat-icon-button (click)=\"refresFilesList();\" >\n <mat-icon >refresh</mat-icon>\n </button>\n </column> -->\n </columns-container>\n <columns-container *ngIf=\"files.length == 0\">\n <section>\n <code\n >No &lt;taon-file/&gt; - s components detected on this page</code\n >\n </section>\n </columns-container>\n\n <div class=\"scrollable-files-list\" *ngIf=\"files.length > 0\">\n <ng-scrollbar>\n <!-- selected: \"{{ selectedFile?.src }}\" -->\n <!-- {{ filesSelection.selectedOptions | json }} -->\n <mat-selection-list\n [multiple]=\"false\"\n #filesToSelect\n (selectionChange)=\"\n admin.selectedFile = filesToSelect.selectedOptions.hasValue()\n ? filesToSelect.selectedOptions.selected[0].value\n : null\n \">\n <mat-list-option\n *ngFor=\"let file of files | filterBy: ['src'] : fileToSearch\"\n [value]=\"file\">\n <strong *ngIf=\"file?.src === admin.selectedFile?.src\">\n {{ file.src }}\n </strong>\n <span *ngIf=\"file?.src !== admin.selectedFile?.src\">\n {{ file.src }}\n </span>\n </mat-list-option>\n </mat-selection-list>\n </ng-scrollbar>\n </div>\n </mat-tab>\n </mat-tab-group>\n</mat-card>\n", styles: [":host{display:block}.scrollable-files-list{height:150px;background:#8080801c;display:block}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1$3.ColumnsComponent, selector: "columns-container" }, { kind: "component", type: i1$3.ColumnComponent, selector: "column", inputs: ["width"] }, { kind: "directive", type: i1$3.DirectiveGrow, selector: "[grow]" }, { kind: "component", type: i4$1.NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i7.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i11$1.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i11$1.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "component", type: i11.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i11.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i13.FilterByPipe, name: "filterBy" }] }); }
5656
+ }
5657
+ __decorate([
5658
+ (Stor.property.in.localstorage
5659
+ .for(TaonAdminEditModeComponent)
5660
+ .withDefaultValue(0)),
5661
+ __metadata("design:type", Number)
5662
+ ], TaonAdminEditModeComponent.prototype, "selectedTabIndex", void 0);
5663
+ __decorate([
5664
+ (Stor.property.in.localstorage
5665
+ .for(TaonAdminEditModeComponent)
5666
+ .withDefaultValue('')),
5667
+ __metadata("design:type", String)
5668
+ ], TaonAdminEditModeComponent.prototype, "fileToSearch", void 0);
5669
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeComponent, decorators: [{
5670
+ type: Component,
5671
+ args: [{ selector: 'taon-admin-edit-mode', template: "<ng-template #expansionTpl let-row>\n hello from expansion {{ row.src }}\n</ng-template>\n\n<mat-card *ngIf=\"inited$ | async\">\n <div *ngIf=\"!admin.selectedFile\">Please select file from portal to edit</div>\n <taon-file\n *ngIf=\"admin.selectedFile\"\n class=\"file-inside-admin\"\n [insideAdmin]=\"true\"\n [file]=\"admin.selectedFile\"></taon-file>\n\n <hr />\n\n <mat-tab-group\n dynamicHeight\n [selectedIndex]=\"selectedTabIndex\"\n (selectedIndexChange)=\"selectedTabIndex = $event; refresFilesList()\">\n <mat-tab label=\"General\">\n <!-- <taon-file-general-opt\n [file]=\"admin.selectedFile\"></taon-file-general-opt> -->\n </mat-tab>\n <!-- <mat-tab label=\"CSS Editing\">\n <ace [mode]=\"'css'\"\n *ngIf=\"admin.selectedFile\"\n [(value)]=\"admin.selectedFile.css\"\n [theme]=\"'github'\"\n style=\"width: 100%; height: 300px;\"></ace>\n </mat-tab> -->\n\n <mat-tab label=\"Files Picker\">\n <!-- <taon-table\n [entity]=\"entity\"\n [allowedColumns]=\"['src', 'contentType']\"\n [columns]=\"columns\"\n [expansionTemplate]=\"expansionTpl\"\n (expansionChange)=\"expansionRow($event)\">\n </taon-table> -->\n </mat-tab>\n <mat-tab label=\"File Version History\">\n <!-- <taon-table\n [entity]=\"entity\"\n [allowedColumns]=\"['src', 'contentType']\"\n [columns]=\"columns\"\n [expansionTemplate]=\"expansionTpl\"\n (expansionChange)=\"expansionRow($event)\">\n </taon-table> -->\n </mat-tab>\n <mat-tab label=\"Current File\">\n <columns-container *ngIf=\"files.length > 0\">\n <column grow>\n <mat-form-field style=\"width: 100%\">\n <input\n matInput\n [(ngModel)]=\"fileToSearch\"\n (focus)=\"refresFilesList()\"\n placeholder=\"Search by name\" />\n </mat-form-field>\n </column>\n <column [width]=\"40\">\n <button\n mat-icon-button\n (click)=\"fileToSearch = ''; refresFilesList()\"\n *ngIf=\"fileToSearch && fileToSearch?.trim() !== ''\">\n <mat-icon>backspace</mat-icon>\n </button>\n </column>\n <!-- <column [width]=\"40\">\n <button mat-icon-button (click)=\"refresFilesList();\" >\n <mat-icon >refresh</mat-icon>\n </button>\n </column> -->\n </columns-container>\n <columns-container *ngIf=\"files.length == 0\">\n <section>\n <code\n >No &lt;taon-file/&gt; - s components detected on this page</code\n >\n </section>\n </columns-container>\n\n <div class=\"scrollable-files-list\" *ngIf=\"files.length > 0\">\n <ng-scrollbar>\n <!-- selected: \"{{ selectedFile?.src }}\" -->\n <!-- {{ filesSelection.selectedOptions | json }} -->\n <mat-selection-list\n [multiple]=\"false\"\n #filesToSelect\n (selectionChange)=\"\n admin.selectedFile = filesToSelect.selectedOptions.hasValue()\n ? filesToSelect.selectedOptions.selected[0].value\n : null\n \">\n <mat-list-option\n *ngFor=\"let file of files | filterBy: ['src'] : fileToSearch\"\n [value]=\"file\">\n <strong *ngIf=\"file?.src === admin.selectedFile?.src\">\n {{ file.src }}\n </strong>\n <span *ngIf=\"file?.src !== admin.selectedFile?.src\">\n {{ file.src }}\n </span>\n </mat-list-option>\n </mat-selection-list>\n </ng-scrollbar>\n </div>\n </mat-tab>\n </mat-tab-group>\n</mat-card>\n", styles: [":host{display:block}.scrollable-files-list{height:150px;background:#8080801c;display:block}\n"] }]
5672
+ }], ctorParameters: () => [{ type: i1$4.Router }], propDecorators: { taonAdminEditModeDataChanged: [{
5673
+ type: Output
5674
+ }], taonAdminEditModeData: [{
5675
+ type: Input
5676
+ }] } });
5677
+ ;
5678
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.ts
5679
+
5680
+ class TaonFileGeneralOptComponent {
5681
+ constructor() {
5682
+ this.height = 100;
5683
+ this.handlers = [];
5684
+ this.fieldsOrder = [];
5685
+ this.fields = [
5686
+ {
5687
+ key: 'width',
5688
+ },
5689
+ {
5690
+ key: 'height',
5691
+ },
5692
+ {
5693
+ key: 'display',
5694
+ },
5695
+ {
5696
+ key: 'widthUnit',
5697
+ },
5698
+ {
5699
+ key: 'heightUnit', // @ts-ignore
5700
+ },
5701
+ {
5702
+ key: 'action',
5703
+ type: 'action',
5704
+ templateOptions: {
5705
+ label: 'Reset',
5706
+ icon: 'cancel',
5707
+ raised: true,
5708
+ action: () => {
5709
+ console.log('reset');
5710
+ },
5711
+ },
5712
+ },
5713
+ ].map(f => {
5714
+ f.className = 'formly-field-half-size';
5715
+ return f;
5716
+ });
5717
+ }
5718
+ ngOnInit() { }
5719
+ ngOnDestroy() {
5720
+ this.handlers.forEach(h => h.unsubscribe());
5721
+ }
5722
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5723
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonFileGeneralOptComponent, selector: "taon-file-general-opt", inputs: { height: "height", file: "file" }, host: { properties: { "style.minHeight.px": "this.height" } }, ngImport: i0, template: "<!-- <taon-formly-form\n *ngIf=\"file\"\n [fields]=\"fields\"\n [fieldsOrder]=\"fieldsOrder\"\n [exclude]=\"['id']\"\n [(model)]=\"file.css\">\n</taon-formly-form> -->\n", styles: [":host{display:block}\n"] }); }
5724
+ }
5725
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptComponent, decorators: [{
5726
+ type: Component,
5727
+ args: [{ selector: 'taon-file-general-opt', template: "<!-- <taon-formly-form\n *ngIf=\"file\"\n [fields]=\"fields\"\n [fieldsOrder]=\"fieldsOrder\"\n [exclude]=\"['id']\"\n [(model)]=\"file.css\">\n</taon-formly-form> -->\n", styles: [":host{display:block}\n"] }]
5728
+ }], ctorParameters: () => [], propDecorators: { height: [{
5729
+ type: HostBinding,
5730
+ args: ['style.minHeight.px']
5731
+ }, {
5732
+ type: Input
5733
+ }], file: [{
5734
+ type: Input
5735
+ }] } });
5736
+ ;
5737
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.ts
5738
+
5739
+ class TaonFileGeneralOptModule {
5740
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5741
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptModule, declarations: [TaonFileGeneralOptComponent], imports: [CommonModule, TaonFullMaterialModule], exports: [TaonFileGeneralOptComponent] }); }
5742
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptModule, imports: [CommonModule, TaonFullMaterialModule] }); }
5743
+ }
5744
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptModule, decorators: [{
5745
+ type: NgModule,
5746
+ args: [{
5747
+ imports: [CommonModule, TaonFullMaterialModule],
5748
+ declarations: [TaonFileGeneralOptComponent],
5749
+ exports: [TaonFileGeneralOptComponent],
5750
+ }]
5751
+ }] });
5752
+ ;
5753
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.ts
5754
+
5755
+ ;
5756
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.ts
5757
+
5758
+ class TaonAdminEditModeModule {
5759
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5760
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeModule, declarations: [TaonAdminEditModeComponent], imports: [CommonModule,
5761
+ StaticColumnsModule,
5762
+ NgScrollbarModule,
5763
+ TaonFileGeneralOptModule,
5764
+ FormsModule,
5765
+ NgArrayPipesModule,
5766
+ TaonTableModule,
5767
+ TaonFullMaterialModule], exports: [TaonAdminEditModeComponent] }); }
5768
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeModule, imports: [CommonModule,
5769
+ StaticColumnsModule,
5770
+ NgScrollbarModule,
5771
+ TaonFileGeneralOptModule,
5772
+ FormsModule,
5773
+ NgArrayPipesModule,
5774
+ TaonTableModule,
5775
+ TaonFullMaterialModule] }); }
5776
+ }
5777
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeModule, decorators: [{
5778
+ type: NgModule,
5779
+ args: [{
5780
+ imports: [
5781
+ CommonModule,
5782
+ StaticColumnsModule,
5783
+ NgScrollbarModule,
5784
+ TaonFileGeneralOptModule,
5785
+ FormsModule,
5786
+ NgArrayPipesModule,
5787
+ TaonTableModule,
5788
+ TaonFullMaterialModule, // TODO import only partial things
5789
+ ],
5790
+ declarations: [TaonAdminEditModeComponent],
5791
+ exports: [TaonAdminEditModeComponent],
5792
+ }]
5793
+ }] });
5794
+ ;
5795
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.ts
5796
+
5797
+ ;
5798
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.ts
5799
+
5800
+ class TaonAdminModeConfigurationModule {
5801
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5802
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationModule, declarations: [TaonAdminModeConfigurationComponent], imports: [CommonModule,
5803
+ StaticColumnsModule,
5804
+ FormsModule,
5805
+ NgScrollbarModule,
5806
+ TaonAdminEditModeModule,
5807
+ TaonProgressBarModule,
5808
+ TaonNotificationsModule,
5809
+ TaonFullMaterialModule, // TODO import only partial things
5810
+ TaonSessionPasscodeComponent], exports: [TaonAdminModeConfigurationComponent] }); }
5811
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationModule, imports: [CommonModule,
5812
+ StaticColumnsModule,
5813
+ FormsModule,
5814
+ NgScrollbarModule,
5815
+ TaonAdminEditModeModule,
5816
+ TaonProgressBarModule,
5817
+ TaonNotificationsModule,
5818
+ TaonFullMaterialModule, // TODO import only partial things
5819
+ TaonSessionPasscodeComponent] }); }
5820
+ }
5821
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationModule, decorators: [{
5822
+ type: NgModule,
5823
+ args: [{
5824
+ imports: [
5825
+ CommonModule,
5826
+ StaticColumnsModule,
5827
+ FormsModule,
5828
+ NgScrollbarModule,
5829
+ TaonAdminEditModeModule,
5830
+ TaonProgressBarModule,
5831
+ TaonNotificationsModule,
5832
+ TaonFullMaterialModule, // TODO import only partial things
5833
+ TaonSessionPasscodeComponent,
5834
+ ],
5835
+ declarations: [TaonAdminModeConfigurationComponent],
5836
+ exports: [TaonAdminModeConfigurationComponent],
5837
+ }]
5838
+ }] });
5839
+ ;
5840
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.ts
5841
+
5842
+ ;
5843
+ ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/index.ts
5844
+
5845
+ ;
5846
+ ({}); // @--end-of-file-for-module=taon lib/ui/index.ts
4531
5847
 
4532
5848
  ;
4533
5849
  ({}); // @--end-of-file-for-module=taon lib/constants.ts
@@ -4543,21 +5859,9 @@ var Taon;
4543
5859
  Taon.Provider = TaonProvider;
4544
5860
  Taon.Repository = TaonRepository;
4545
5861
  Taon.Subscriber = TaonSubscriber;
4546
- /**
4547
- * @deprecated
4548
- */
4549
5862
  Taon.isBrowser = coreHelpers.Helpers.isBrowser;
4550
- /**
4551
- * @deprecated
4552
- */
4553
5863
  Taon.isNode = coreHelpers.Helpers.isNode;
4554
- /**
4555
- * @deprecated
4556
- */
4557
5864
  Taon.isWebSQL = coreHelpers.Helpers.isWebSQL;
4558
- /**
4559
- * @deprecated
4560
- */
4561
5865
  Taon.isElectron = coreHelpers.Helpers.isElectron;
4562
5866
  Taon.createContext = createContext;
4563
5867
  Taon.inject = inject;
@@ -4591,5 +5895,5 @@ var Taon;
4591
5895
  * Generated bundle index. Do not edit.
4592
5896
  */
4593
5897
 
4594
- export { BaseContext, BaseController, BaseEntity, BaseProvider, BaseRepository, BaseSubscriber, ClassHelpers, Models, Taon, createContext, inject };
4595
- //# sourceMappingURL=taon.mjs.map
5898
+ export { BaseContext, BaseController, BaseEntity, BaseProvider, BaseRepository, ClassHelpers, Models, SafePipe, Taon, TaonAdminModeConfigurationComponent, TaonAdminModeConfigurationModule, TaonAdminService, TaonFullMaterialModule, TaonGithubForkMeCornerComponent, TaonGithubForkMeCornerModule, TaonInjectHTMLDirective, TaonLongPress, TaonNotificationOptions, TaonNotificationsComponent, TaonNotificationsModule, TaonNotificationsService, TaonProgressBarComponent, TaonProgressBarModule, TaonSessionPasscodeComponent, TaonTableComponent, TaonTableModule, createContext, inject };
5899
+ //# sourceMappingURL=taon.mjs.map