taon 18.0.20 → 18.0.21

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 (298) hide show
  1. package/README.md +114 -118
  2. package/assets/shared/logo-header-admin-mode.png +0 -0
  3. package/assets/shared/shared_folder_info.txt +1 -1
  4. package/bin/start.js +279 -279
  5. package/bin/taon +6 -6
  6. package/bin/taon-debug +5 -5
  7. package/bin/taon-debug-brk +5 -5
  8. package/browser/README.md +24 -24
  9. package/browser/esm2022/lib/base-classes/base-class.mjs +2 -2
  10. package/browser/esm2022/lib/base-classes/base-controller.mjs +3 -2
  11. package/browser/esm2022/lib/base-classes/base-migration.mjs +23 -0
  12. package/browser/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +20 -20
  13. package/browser/esm2022/lib/base-classes/base.mjs +3 -1
  14. package/browser/esm2022/lib/context-db-migrations.mjs +410 -0
  15. package/browser/esm2022/lib/create-context.mjs +17 -4
  16. package/browser/esm2022/lib/decorators/classes/controller-decorator.mjs +4 -1
  17. package/browser/esm2022/lib/decorators/classes/entity-decorator.mjs +4 -1
  18. package/browser/esm2022/lib/decorators/classes/migration-decorator.mjs +18 -0
  19. package/browser/esm2022/lib/decorators/classes/provider-decorator.mjs +4 -1
  20. package/browser/esm2022/lib/decorators/classes/repository-decorator.mjs +4 -1
  21. package/browser/esm2022/lib/decorators/classes/subscriber-decorator.mjs +5 -2
  22. package/browser/esm2022/lib/endpoint-context.mjs +83 -49
  23. package/browser/esm2022/lib/index.mjs +4 -1
  24. package/browser/esm2022/lib/inject.mjs +1 -1
  25. package/browser/esm2022/lib/models.mjs +30 -1
  26. package/browser/esm2022/lib/symbols.mjs +2 -1
  27. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +1 -3
  28. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +55 -37
  29. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +17 -21
  30. package/browser/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +1 -1
  31. package/browser/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +1 -1
  32. package/browser/esm2022/lib/ui/taon-table/taon-table.component.mjs +1 -2
  33. package/browser/fesm2022/taon.mjs +673 -420
  34. package/browser/fesm2022/taon.mjs.map +1 -1
  35. package/browser/lib/base-classes/base-class.d.ts +1 -1
  36. package/browser/lib/base-classes/base-context.d.ts +3 -0
  37. package/browser/lib/base-classes/base-controller.d.ts +2 -1
  38. package/browser/lib/base-classes/base-migration.d.ts +12 -0
  39. package/browser/lib/base-classes/base.d.ts +5 -0
  40. package/browser/lib/context-db-migrations.d.ts +17 -0
  41. package/browser/lib/create-context.d.ts +4 -1
  42. package/browser/lib/decorators/classes/controller-decorator.d.ts +3 -0
  43. package/browser/lib/decorators/classes/entity-decorator.d.ts +3 -0
  44. package/browser/lib/decorators/classes/migration-decorator.d.ts +8 -0
  45. package/browser/lib/decorators/classes/provider-decorator.d.ts +3 -0
  46. package/browser/lib/decorators/classes/repository-decorator.d.ts +3 -0
  47. package/browser/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  48. package/browser/lib/endpoint-context.d.ts +12 -5
  49. package/browser/lib/index.d.ts +14 -1
  50. package/browser/lib/models.d.ts +44 -19
  51. package/browser/lib/symbols.d.ts +1 -0
  52. package/browser/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  53. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +5 -8
  54. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +8 -8
  55. package/client/README.md +24 -24
  56. package/client/esm2022/lib/base-classes/base-class.mjs +2 -2
  57. package/client/esm2022/lib/base-classes/base-controller.mjs +3 -2
  58. package/client/esm2022/lib/base-classes/base-migration.mjs +23 -0
  59. package/client/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +20 -20
  60. package/client/esm2022/lib/base-classes/base.mjs +3 -1
  61. package/client/esm2022/lib/context-db-migrations.mjs +410 -0
  62. package/client/esm2022/lib/create-context.mjs +17 -4
  63. package/client/esm2022/lib/decorators/classes/controller-decorator.mjs +4 -1
  64. package/client/esm2022/lib/decorators/classes/entity-decorator.mjs +4 -1
  65. package/client/esm2022/lib/decorators/classes/migration-decorator.mjs +18 -0
  66. package/client/esm2022/lib/decorators/classes/provider-decorator.mjs +4 -1
  67. package/client/esm2022/lib/decorators/classes/repository-decorator.mjs +4 -1
  68. package/client/esm2022/lib/decorators/classes/subscriber-decorator.mjs +5 -2
  69. package/client/esm2022/lib/endpoint-context.mjs +83 -49
  70. package/client/esm2022/lib/index.mjs +4 -1
  71. package/client/esm2022/lib/inject.mjs +1 -1
  72. package/client/esm2022/lib/models.mjs +30 -1
  73. package/client/esm2022/lib/symbols.mjs +2 -1
  74. package/client/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +1 -3
  75. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +55 -37
  76. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +17 -21
  77. package/client/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +1 -1
  78. package/client/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +1 -1
  79. package/client/esm2022/lib/ui/taon-table/taon-table.component.mjs +1 -2
  80. package/client/fesm2022/taon.mjs +673 -420
  81. package/client/fesm2022/taon.mjs.map +1 -1
  82. package/client/lib/base-classes/base-class.d.ts +1 -1
  83. package/client/lib/base-classes/base-context.d.ts +3 -0
  84. package/client/lib/base-classes/base-controller.d.ts +2 -1
  85. package/client/lib/base-classes/base-migration.d.ts +12 -0
  86. package/client/lib/base-classes/base.d.ts +5 -0
  87. package/client/lib/context-db-migrations.d.ts +17 -0
  88. package/client/lib/create-context.d.ts +4 -1
  89. package/client/lib/decorators/classes/controller-decorator.d.ts +3 -0
  90. package/client/lib/decorators/classes/entity-decorator.d.ts +3 -0
  91. package/client/lib/decorators/classes/migration-decorator.d.ts +8 -0
  92. package/client/lib/decorators/classes/provider-decorator.d.ts +3 -0
  93. package/client/lib/decorators/classes/repository-decorator.d.ts +3 -0
  94. package/client/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  95. package/client/lib/endpoint-context.d.ts +12 -5
  96. package/client/lib/index.d.ts +14 -1
  97. package/client/lib/models.d.ts +44 -19
  98. package/client/lib/symbols.d.ts +1 -0
  99. package/client/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  100. package/client/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +5 -8
  101. package/client/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +8 -8
  102. package/lib/base-classes/base-class.d.ts +1 -1
  103. package/lib/base-classes/base-class.js +1 -1
  104. package/lib/base-classes/base-context.d.ts +3 -0
  105. package/lib/base-classes/base-controller.d.ts +2 -1
  106. package/lib/base-classes/base-controller.js +2 -1
  107. package/lib/base-classes/base-controller.js.map +1 -1
  108. package/lib/base-classes/base-migration.d.ts +11 -0
  109. package/lib/base-classes/base-migration.js +41 -0
  110. package/lib/base-classes/base-migration.js.map +1 -0
  111. package/lib/base-classes/base-repository.js +4 -4
  112. package/lib/base-classes/base-repository.js.map +1 -1
  113. package/lib/base-classes/base-subscriber-for-entity.js +19 -19
  114. package/lib/base-classes/base-subscriber-for-entity.js.map +1 -1
  115. package/lib/base-classes/base.d.ts +5 -0
  116. package/lib/base-classes/base.js +2 -0
  117. package/lib/base-classes/base.js.map +1 -1
  118. package/lib/context-db-migrations.d.ts +16 -0
  119. package/lib/context-db-migrations.js +585 -0
  120. package/lib/context-db-migrations.js.map +1 -0
  121. package/lib/create-context.d.ts +4 -1
  122. package/lib/create-context.js +30 -21
  123. package/lib/create-context.js.map +1 -1
  124. package/lib/decorators/classes/controller-decorator.d.ts +3 -0
  125. package/lib/decorators/classes/controller-decorator.js +3 -0
  126. package/lib/decorators/classes/controller-decorator.js.map +1 -1
  127. package/lib/decorators/classes/entity-decorator.d.ts +3 -0
  128. package/lib/decorators/classes/entity-decorator.js +3 -0
  129. package/lib/decorators/classes/entity-decorator.js.map +1 -1
  130. package/lib/decorators/classes/migration-decorator.d.ts +7 -0
  131. package/lib/decorators/classes/migration-decorator.js +27 -0
  132. package/lib/decorators/classes/migration-decorator.js.map +1 -0
  133. package/lib/decorators/classes/provider-decorator.d.ts +3 -0
  134. package/lib/decorators/classes/provider-decorator.js +3 -0
  135. package/lib/decorators/classes/provider-decorator.js.map +1 -1
  136. package/lib/decorators/classes/repository-decorator.d.ts +3 -0
  137. package/lib/decorators/classes/repository-decorator.js +3 -0
  138. package/lib/decorators/classes/repository-decorator.js.map +1 -1
  139. package/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  140. package/lib/decorators/classes/subscriber-decorator.js +4 -1
  141. package/lib/decorators/classes/subscriber-decorator.js.map +1 -1
  142. package/lib/endpoint-context.d.ts +12 -5
  143. package/lib/endpoint-context.js +234 -189
  144. package/lib/endpoint-context.js.map +1 -1
  145. package/lib/index.d.ts +14 -1
  146. package/lib/index.js +5 -1
  147. package/lib/index.js.map +1 -1
  148. package/lib/inject.js +0 -2
  149. package/lib/inject.js.map +1 -1
  150. package/lib/models.d.ts +44 -19
  151. package/lib/models.js +45 -0
  152. package/lib/models.js.map +1 -1
  153. package/lib/symbols.d.ts +1 -0
  154. package/lib/symbols.js +1 -0
  155. package/lib/symbols.js.map +1 -1
  156. package/lib/ui/directives/index.js +2 -2
  157. package/lib/ui/index.js +2 -2
  158. package/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  159. package/lib/ui/taon-admin-mode-configuration/index.js +2 -2
  160. package/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +4 -7
  161. package/lib/ui/taon-admin-mode-configuration/{models/taon-admin-mode-tabs.js → taon-admin.models.js} +1 -1
  162. package/lib/ui/taon-admin-mode-configuration/taon-admin.models.js.map +1 -0
  163. package/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +6 -6
  164. package/lib/ui/taon-github-fork-me-corner/index.js +2 -2
  165. package/lib/ui/taon-github-fork-me-ribbon/index.js +2 -2
  166. package/lib/ui/taon-notifications/taon-notifications.models.js +2 -2
  167. package/lib/ui/taon-progress-bar/index.js +2 -2
  168. package/lib/ui/taon-session-passcode/index.js +2 -2
  169. package/lib/ui/taon-table/index.js +2 -2
  170. package/migrations/index.d.ts +1 -0
  171. package/migrations/index.js +6 -0
  172. package/migrations/index.js.map +1 -0
  173. package/migrations/migrations_index._auto-generated_.d.ts +0 -0
  174. package/migrations/migrations_index._auto-generated_.js +4 -0
  175. package/migrations/migrations_index._auto-generated_.js.map +1 -0
  176. package/package.json +7 -7
  177. package/taon.jsonc +47 -47
  178. package/tmp-environment.json +32 -29
  179. package/websql/README.md +24 -24
  180. package/websql/esm2022/lib/base-classes/base-class.mjs +2 -2
  181. package/websql/esm2022/lib/base-classes/base-controller.mjs +3 -2
  182. package/websql/esm2022/lib/base-classes/base-migration.mjs +23 -0
  183. package/websql/esm2022/lib/base-classes/base-repository.mjs +5 -5
  184. package/websql/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +20 -20
  185. package/websql/esm2022/lib/base-classes/base.mjs +3 -1
  186. package/websql/esm2022/lib/context-db-migrations.mjs +269 -0
  187. package/websql/esm2022/lib/create-context.mjs +17 -4
  188. package/websql/esm2022/lib/decorators/classes/controller-decorator.mjs +4 -1
  189. package/websql/esm2022/lib/decorators/classes/entity-decorator.mjs +4 -1
  190. package/websql/esm2022/lib/decorators/classes/migration-decorator.mjs +18 -0
  191. package/websql/esm2022/lib/decorators/classes/provider-decorator.mjs +4 -1
  192. package/websql/esm2022/lib/decorators/classes/repository-decorator.mjs +4 -1
  193. package/websql/esm2022/lib/decorators/classes/subscriber-decorator.mjs +5 -2
  194. package/websql/esm2022/lib/endpoint-context.mjs +117 -85
  195. package/websql/esm2022/lib/index.mjs +4 -1
  196. package/websql/esm2022/lib/inject.mjs +1 -1
  197. package/websql/esm2022/lib/models.mjs +28 -1
  198. package/websql/esm2022/lib/symbols.mjs +2 -1
  199. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +1 -3
  200. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +55 -37
  201. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +17 -21
  202. package/websql/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +1 -1
  203. package/websql/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +1 -1
  204. package/websql/esm2022/lib/ui/taon-table/taon-table.component.mjs +1 -2
  205. package/websql/fesm2022/taon.mjs +564 -460
  206. package/websql/fesm2022/taon.mjs.map +1 -1
  207. package/websql/lib/base-classes/base-class.d.ts +1 -1
  208. package/websql/lib/base-classes/base-context.d.ts +3 -0
  209. package/websql/lib/base-classes/base-controller.d.ts +2 -1
  210. package/websql/lib/base-classes/base-migration.d.ts +12 -0
  211. package/websql/lib/base-classes/base.d.ts +5 -0
  212. package/websql/lib/context-db-migrations.d.ts +17 -0
  213. package/websql/lib/create-context.d.ts +4 -1
  214. package/websql/lib/decorators/classes/controller-decorator.d.ts +3 -0
  215. package/websql/lib/decorators/classes/entity-decorator.d.ts +3 -0
  216. package/websql/lib/decorators/classes/migration-decorator.d.ts +8 -0
  217. package/websql/lib/decorators/classes/provider-decorator.d.ts +3 -0
  218. package/websql/lib/decorators/classes/repository-decorator.d.ts +3 -0
  219. package/websql/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  220. package/websql/lib/endpoint-context.d.ts +12 -5
  221. package/websql/lib/index.d.ts +14 -1
  222. package/websql/lib/models.d.ts +44 -19
  223. package/websql/lib/symbols.d.ts +1 -0
  224. package/websql/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  225. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +5 -8
  226. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +8 -8
  227. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +0 -5
  228. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +0 -115
  229. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +0 -50
  230. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +0 -5
  231. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +0 -61
  232. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +0 -21
  233. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +0 -4
  234. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +0 -32
  235. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +0 -54
  236. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -3
  237. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -33
  238. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -16
  239. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -3
  240. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -17
  241. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -10
  242. package/browser/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +0 -6
  243. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -18
  244. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -17
  245. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +0 -5
  246. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +0 -115
  247. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +0 -50
  248. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +0 -5
  249. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +0 -61
  250. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +0 -21
  251. package/client/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +0 -4
  252. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +0 -32
  253. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +0 -54
  254. package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -3
  255. package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -33
  256. package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -16
  257. package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -3
  258. package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -17
  259. package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -10
  260. package/client/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +0 -6
  261. package/client/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -18
  262. package/client/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -17
  263. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -2
  264. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.js +0 -5
  265. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.js.map +0 -1
  266. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -29
  267. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -2
  268. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.d.ts +0 -1
  269. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.js +0 -5
  270. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.js.map +0 -1
  271. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/taon-db-admin.component.d.ts +0 -8
  272. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -2
  273. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.js +0 -5
  274. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.js.map +0 -1
  275. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -13
  276. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -2
  277. package/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.js.map +0 -1
  278. package/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -14
  279. package/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -2
  280. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +0 -5
  281. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +0 -115
  282. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +0 -50
  283. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +0 -5
  284. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +0 -61
  285. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +0 -21
  286. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +0 -4
  287. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +0 -32
  288. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +0 -54
  289. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -3
  290. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -33
  291. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -16
  292. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -3
  293. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -17
  294. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -10
  295. package/websql/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +0 -6
  296. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -18
  297. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -17
  298. /package/lib/ui/taon-admin-mode-configuration/{models/taon-admin-mode-tabs.d.ts → taon-admin.models.d.ts} +0 -0
@@ -2,22 +2,21 @@ import 'reflect-metadata';
2
2
  import * as coreHelpers from 'tnp-core/browser';
3
3
  import { _ as _$1, Helpers } from 'tnp-core/browser';
4
4
  import { Models as Models$1, RestHeaders, Resource, Mapping } from 'ng2-rest/browser';
5
- import { OrignalClassKey } from 'taon-typeorm/browser';
5
+ import { OrignalClassKey, Table } from 'taon-typeorm/browser';
6
6
  import { SYMBOL, CLASS } from 'typescript-class-helpers/browser';
7
7
  import * as JSON5 from 'json5';
8
8
  import { __decorate, __param, __metadata } from 'tslib';
9
9
  import { JSON10 } from 'json10/browser';
10
- import { Observable, from, Subject, interval, tap, defer, fromEvent, map, debounceTime, distinctUntilChanged, share, Subscription, takeUntil, of } from 'rxjs';
10
+ import { Observable, from, Subject, interval, tap, defer, fromEvent, map, debounceTime, distinctUntilChanged, share, Subscription, takeUntil } from 'rxjs';
11
11
  import axios from 'axios';
12
12
  import { io } from 'socket.io-client';
13
13
  import { Stor } from 'taon-storage/browser';
14
- import { config } from 'tnp-config/browser';
15
14
  import * as i0 from '@angular/core';
16
15
  import { Injectable, inject as inject$1, EventEmitter, Directive, Input, Output, HostBinding, HostListener, Pipe, NgModule, Component, DestroyRef, Self, ViewChild, ChangeDetectorRef } from '@angular/core';
17
16
  import { Log, Level } from 'ng2-logger/browser';
18
17
  import * as i1 from '@angular/platform-browser';
19
18
  import { A11yModule } from '@angular/cdk/a11y';
20
- import * as i5 from '@angular/cdk/drag-drop';
19
+ import * as i6$1 from '@angular/cdk/drag-drop';
21
20
  import { DragDropModule } from '@angular/cdk/drag-drop';
22
21
  import { ScrollingModule } from '@angular/cdk/scrolling';
23
22
  import { CdkStepperModule } from '@angular/cdk/stepper';
@@ -26,11 +25,11 @@ import { CdkTreeModule } from '@angular/cdk/tree';
26
25
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
27
26
  import { MatBadgeModule } from '@angular/material/badge';
28
27
  import { MatBottomSheetModule } from '@angular/material/bottom-sheet';
29
- import * as i6$1 from '@angular/material/button';
28
+ import * as i7 from '@angular/material/button';
30
29
  import { MatButtonModule } from '@angular/material/button';
31
- import * as i7 from '@angular/material/card';
30
+ import * as i8 from '@angular/material/card';
32
31
  import { MatCardModule } from '@angular/material/card';
33
- import * as i8 from '@angular/material/checkbox';
32
+ import * as i9 from '@angular/material/checkbox';
34
33
  import { MatCheckboxModule } from '@angular/material/checkbox';
35
34
  import { MatButtonToggleModule } from '@angular/material/button-toggle';
36
35
  import { MatStepperModule } from '@angular/material/stepper';
@@ -39,7 +38,6 @@ import { MatExpansionModule } from '@angular/material/expansion';
39
38
  import { MatGridListModule } from '@angular/material/grid-list';
40
39
  import * as i6 from '@angular/material/icon';
41
40
  import { MatIconModule } from '@angular/material/icon';
42
- import * as i11$1 from '@angular/material/list';
43
41
  import { MatListModule } from '@angular/material/list';
44
42
  import { MatDatepickerModule } from '@angular/material/datepicker';
45
43
  import { MatPaginatorModule } from '@angular/material/paginator';
@@ -53,19 +51,19 @@ import { MatNativeDateModule, MatRippleModule } from '@angular/material/core';
53
51
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
54
52
  import { MatRadioModule } from '@angular/material/radio';
55
53
  import { MatSelectModule } from '@angular/material/select';
56
- import * as i10 from '@angular/material/sidenav';
54
+ import * as i11 from '@angular/material/sidenav';
57
55
  import { MatSidenavModule } from '@angular/material/sidenav';
58
56
  import { MatSliderModule } from '@angular/material/slider';
59
57
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
60
58
  import { MatSnackBarModule } from '@angular/material/snack-bar';
61
59
  import { MatSortModule } from '@angular/material/sort';
62
60
  import { MatTableModule } from '@angular/material/table';
63
- import * as i11 from '@angular/material/tabs';
61
+ import * as i12 from '@angular/material/tabs';
64
62
  import { MatTabsModule } from '@angular/material/tabs';
65
63
  import { MatToolbarModule } from '@angular/material/toolbar';
66
64
  import { MatTooltipModule } from '@angular/material/tooltip';
67
65
  import { MatTreeModule } from '@angular/material/tree';
68
- import * as i2$1 from '@angular/common';
66
+ import * as i3 from '@angular/common';
69
67
  import { CommonModule } from '@angular/common';
70
68
  import * as i1$1 from '@ngneat/hot-toast';
71
69
  import * as i2 from '@angular/forms';
@@ -75,21 +73,14 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
75
73
  import * as i1$2 from 'ngx-progressbar';
76
74
  import { NgProgressModule } from 'ngx-progressbar';
77
75
  import * as _ from 'lodash';
78
- import * as i2$2 from '@angular/material/form-field';
76
+ import * as i2$1 from '@angular/material/form-field';
79
77
  import { MatFormFieldModule } from '@angular/material/form-field';
80
- import * as i3 from '@ng-matero/extensions/grid';
78
+ import * as i3$1 from '@ng-matero/extensions/grid';
81
79
  import { MtxGridModule } from '@ng-matero/extensions/grid';
82
80
  import * as i1$3 from 'static-columns/browser';
83
81
  import { StaticColumnsModule } from 'static-columns/browser';
84
- import * as i4$1 from 'ngx-scrollbar';
82
+ import * as i5 from 'ngx-scrollbar';
85
83
  import { NgScrollbarModule } from 'ngx-scrollbar';
86
- import * as i1$4 from '@angular/router';
87
- import 'brace';
88
- import 'brace/mode/css';
89
- import 'brace/mode/typescript';
90
- import 'brace/theme/github';
91
- import * as i13 from 'ngx-pipes';
92
- import { NgArrayPipesModule } from 'ngx-pipes';
93
84
 
94
85
  var Symbols;
95
86
  (function (Symbols) {
@@ -155,6 +146,7 @@ var Symbols;
155
146
  repository: `repository:options`,
156
147
  provider: `provider:options`,
157
148
  subscriber: `subscriber:options`,
149
+ migration: `migration:options`,
158
150
  },
159
151
  };
160
152
  Symbols.old = {
@@ -564,6 +556,7 @@ var Models;
564
556
  ClassType["REPOSITORY"] = "REPOSITORY";
565
557
  ClassType["PROVIDER"] = "PROVIDER";
566
558
  ClassType["SUBSCRIBER"] = "SUBSCRIBER";
559
+ ClassType["MIGRATION"] = "MIGRATION";
567
560
  })(ClassType = Models.ClassType || (Models.ClassType = {}));
568
561
  Models.ClassTypeKey = {
569
562
  [ClassType.ENTITY]: 'entities',
@@ -571,7 +564,34 @@ var Models;
571
564
  [ClassType.REPOSITORY]: 'repositories',
572
565
  [ClassType.PROVIDER]: 'providers',
573
566
  [ClassType.SUBSCRIBER]: 'subscribers',
567
+ [ClassType.MIGRATION]: 'migrations',
574
568
  };
569
+ class DatabaseConfigTypeOrm {
570
+ }
571
+ Models.DatabaseConfigTypeOrm = DatabaseConfigTypeOrm;
572
+ class DatabaseConfig extends DatabaseConfigTypeOrm {
573
+ static from(databasePartialConfig) {
574
+ return _$1.merge(new DatabaseConfig(), databasePartialConfig);
575
+ }
576
+ get databaseConfigTypeORM() {
577
+ /* */
578
+ /* */
579
+ /* */
580
+ /* */
581
+ /* */
582
+ /* */
583
+ /* */
584
+ /* */
585
+ /* */
586
+ /* */
587
+ /* */
588
+ /* */
589
+ /* */
590
+ /* */
591
+ return (void 0);
592
+ }
593
+ }
594
+ Models.DatabaseConfig = DatabaseConfig;
575
595
  class DecoratorAbstractOpt {
576
596
  }
577
597
  Models.DecoratorAbstractOpt = DecoratorAbstractOpt;
@@ -769,6 +789,9 @@ var Http;
769
789
  ;
770
790
  ({}); // @--end-of-file-for-module=taon lib/decorators/http/http-decorators.ts
771
791
 
792
+ /**
793
+ * Controller decorator
794
+ */
772
795
  function TaonController(options) {
773
796
  return function (constructor) {
774
797
  ClassHelpers.setName(constructor, options?.className);
@@ -947,7 +970,8 @@ class BaseInjector {
947
970
 
948
971
  let BaseController = class BaseController extends BaseInjector {
949
972
  /**
950
- * init example data for db
973
+ * THIS ONLY WORKS IF NO MIGRATIONS PROVIDED IN CONFIG
974
+ * Purpose: init example data for db.
951
975
  */
952
976
  initExampleDbData() {
953
977
  return void 0;
@@ -1223,7 +1247,7 @@ BaseCrudController = __decorate([
1223
1247
  class BaseClass {
1224
1248
  /**
1225
1249
  * class initialization hook
1226
- * taon after class instace creation
1250
+ * taon after class instance creation
1227
1251
  */
1228
1252
  async _() { }
1229
1253
  clone(override) {
@@ -1265,6 +1289,9 @@ BaseAbstractEntity = __decorate([
1265
1289
  ;
1266
1290
  ({}); // @--end-of-file-for-module=taon lib/base-classes/base-abstract-entity.ts
1267
1291
 
1292
+ /**
1293
+ * Repository decorator
1294
+ */
1268
1295
  function TaonRepository(options) {
1269
1296
  return function (constructor) {
1270
1297
  Reflect.defineMetadata(Symbols.metadata.options.repository, options, constructor);
@@ -2898,11 +2925,423 @@ class RealtimeCore {
2898
2925
  ;
2899
2926
  ({}); // @--end-of-file-for-module=taon lib/realtime/realtime-core.ts
2900
2927
 
2928
+ class ContextDbMigrations {
2929
+ constructor(ctx) {
2930
+ this.ctx = ctx;
2931
+ this.DEFAULT_MIGRATION_TABLE_NAME = 'TAON_MIGRATION_META';
2932
+ this.MIGRATION_STATUS_COMPLETED = 'completed';
2933
+ this.MIGRATION_STATUS_PENDING = 'pending';
2934
+ this.table = new Table({
2935
+ name: this.DEFAULT_MIGRATION_TABLE_NAME,
2936
+ columns: [
2937
+ {
2938
+ name: 'id',
2939
+ type: 'integer',
2940
+ isPrimary: true, // Mark it as the primary key
2941
+ isGenerated: true, // Enable auto-generation
2942
+ generationStrategy: 'increment', // Use auto-increment strategy
2943
+ },
2944
+ {
2945
+ name: 'name',
2946
+ type: 'varchar',
2947
+ length: '255',
2948
+ isUnique: true, // Ensure the name is unique
2949
+ isNullable: false, // Ensure this field is required
2950
+ },
2951
+ {
2952
+ name: 'context',
2953
+ type: 'varchar',
2954
+ length: '255',
2955
+ isNullable: false, // Optional context for migrations (e.g., tenant or module name)
2956
+ },
2957
+ {
2958
+ name: 'applied_at',
2959
+ type: 'timestamp',
2960
+ default: 'CURRENT_TIMESTAMP', // Automatically set the timestamp
2961
+ isNullable: true,
2962
+ },
2963
+ {
2964
+ name: 'status',
2965
+ type: 'varchar',
2966
+ length: '50',
2967
+ default: `'${this.MIGRATION_STATUS_COMPLETED}'`,
2968
+ isNullable: false,
2969
+ },
2970
+ ],
2971
+ });
2972
+ }
2973
+ async ensureMigrationTableExists() {
2974
+ /* */
2975
+ /* */
2976
+ /* */
2977
+ /* */
2978
+ /* */
2979
+ /* */
2980
+ /* */
2981
+ /* */
2982
+ /* */
2983
+ /* */
2984
+ /* */
2985
+ /* */
2986
+ /* */
2987
+ /* */
2988
+ /* */
2989
+ /* */
2990
+ /* */
2991
+ /* */
2992
+ /* */
2993
+ /* */
2994
+ /* */
2995
+ /* */
2996
+ /* */
2997
+ /* */
2998
+ /* */
2999
+ /* */
3000
+ /* */
3001
+ /* */
3002
+ /* */
3003
+ /* */
3004
+ /* */
3005
+ /* */
3006
+ /* */
3007
+ /* */
3008
+ /* */
3009
+ /* */
3010
+ /* */
3011
+ /* */
3012
+ /* */
3013
+ /* */
3014
+ /* */
3015
+ /* */
3016
+ /* */
3017
+ return (void 0);
3018
+ }
3019
+ async revertMigrationToTimestamp(timestamp) {
3020
+ /* */
3021
+ /* */
3022
+ /* */
3023
+ /* */
3024
+ /* */
3025
+ /* */
3026
+ /* */
3027
+ /* */
3028
+ /* */
3029
+ /* */
3030
+ /* */
3031
+ /* */
3032
+ /* */
3033
+ /* */
3034
+ /* */
3035
+ /* */
3036
+ /* */
3037
+ /* */
3038
+ /* */
3039
+ /* */
3040
+ /* */
3041
+ /* */
3042
+ /* */
3043
+ /* */
3044
+ /* */
3045
+ /* */
3046
+ /* */
3047
+ /* */
3048
+ /* */
3049
+ /* */
3050
+ /* */
3051
+ /* */
3052
+ /* */
3053
+ /* */
3054
+ /* */
3055
+ /* */
3056
+ /* */
3057
+ /* */
3058
+ /* */
3059
+ /* */
3060
+ /* */
3061
+ /* */
3062
+ /* */
3063
+ /* */
3064
+ /* */
3065
+ /* */
3066
+ /* */
3067
+ /* */
3068
+ /* */
3069
+ /* */
3070
+ /* */
3071
+ /* */
3072
+ /* */
3073
+ /* */
3074
+ /* */
3075
+ /* */
3076
+ /* */
3077
+ /* */
3078
+ /* */
3079
+ /* */
3080
+ /* */
3081
+ /* */
3082
+ /* */
3083
+ /* */
3084
+ /* */
3085
+ /* */
3086
+ /* */
3087
+ /* */
3088
+ /* */
3089
+ /* */
3090
+ /* */
3091
+ /* */
3092
+ /* */
3093
+ /* */
3094
+ /* */
3095
+ /* */
3096
+ /* */
3097
+ /* */
3098
+ /* */
3099
+ /* */
3100
+ /* */
3101
+ /* */
3102
+ /* */
3103
+ /* */
3104
+ /* */
3105
+ /* */
3106
+ /* */
3107
+ /* */
3108
+ /* */
3109
+ /* */
3110
+ /* */
3111
+ /* */
3112
+ /* */
3113
+ /* */
3114
+ return (void 0);
3115
+ }
3116
+ async clearMigrationTable() {
3117
+ /* */
3118
+ /* */
3119
+ /* */
3120
+ /* */
3121
+ /* */
3122
+ /* */
3123
+ /* */
3124
+ /* */
3125
+ /* */
3126
+ /* */
3127
+ /* */
3128
+ /* */
3129
+ /* */
3130
+ /* */
3131
+ /* */
3132
+ /* */
3133
+ /* */
3134
+ /* */
3135
+ return (void 0);
3136
+ }
3137
+ async markAllMigrationsAsApplied() {
3138
+ /* */
3139
+ /* */
3140
+ /* */
3141
+ /* */
3142
+ /* */
3143
+ /* */
3144
+ /* */
3145
+ /* */
3146
+ /* */
3147
+ /* */
3148
+ /* */
3149
+ /* */
3150
+ /* */
3151
+ /* */
3152
+ /* */
3153
+ /* */
3154
+ /* */
3155
+ /* */
3156
+ /* */
3157
+ /* */
3158
+ /* */
3159
+ /* */
3160
+ /* */
3161
+ /* */
3162
+ /* */
3163
+ /* */
3164
+ /* */
3165
+ /* */
3166
+ /* */
3167
+ /* */
3168
+ /* */
3169
+ /* */
3170
+ /* */
3171
+ /* */
3172
+ /* */
3173
+ /* */
3174
+ /* */
3175
+ /* */
3176
+ /* */
3177
+ /* */
3178
+ /* */
3179
+ /* */
3180
+ /* */
3181
+ /* */
3182
+ /* */
3183
+ /* */
3184
+ /* */
3185
+ /* */
3186
+ /* */
3187
+ /* */
3188
+ /* */
3189
+ /* */
3190
+ /* */
3191
+ /* */
3192
+ /* */
3193
+ /* */
3194
+ /* */
3195
+ /* */
3196
+ /* */
3197
+ /* */
3198
+ /* */
3199
+ /* */
3200
+ /* */
3201
+ /* */
3202
+ /* */
3203
+ /* */
3204
+ /* */
3205
+ /* */
3206
+ /* */
3207
+ /* */
3208
+ /* */
3209
+ return (void 0);
3210
+ }
3211
+ async runAllNotCompletedMigrations() {
3212
+ /* */
3213
+ /* */
3214
+ /* */
3215
+ /* */
3216
+ /* */
3217
+ /* */
3218
+ /* */
3219
+ /* */
3220
+ /* */
3221
+ /* */
3222
+ /* */
3223
+ /* */
3224
+ /* */
3225
+ /* */
3226
+ /* */
3227
+ /* */
3228
+ /* */
3229
+ /* */
3230
+ /* */
3231
+ /* */
3232
+ /* */
3233
+ /* */
3234
+ /* */
3235
+ /* */
3236
+ /* */
3237
+ /* */
3238
+ /* */
3239
+ /* */
3240
+ /* */
3241
+ /* */
3242
+ /* */
3243
+ /* */
3244
+ /* */
3245
+ /* */
3246
+ /* */
3247
+ /* */
3248
+ /* */
3249
+ /* */
3250
+ /* */
3251
+ /* */
3252
+ /* */
3253
+ /* */
3254
+ /* */
3255
+ /* */
3256
+ /* */
3257
+ /* */
3258
+ /* */
3259
+ /* */
3260
+ /* */
3261
+ /* */
3262
+ /* */
3263
+ /* */
3264
+ /* */
3265
+ /* */
3266
+ /* */
3267
+ /* */
3268
+ /* */
3269
+ /* */
3270
+ /* */
3271
+ /* */
3272
+ /* */
3273
+ /* */
3274
+ /* */
3275
+ /* */
3276
+ /* */
3277
+ /* */
3278
+ /* */
3279
+ /* */
3280
+ /* */
3281
+ /* */
3282
+ /* */
3283
+ /* */
3284
+ /* */
3285
+ /* */
3286
+ /* */
3287
+ /* */
3288
+ /* */
3289
+ /* */
3290
+ /* */
3291
+ /* */
3292
+ /* */
3293
+ /* */
3294
+ /* */
3295
+ /* */
3296
+ /* */
3297
+ /* */
3298
+ /* */
3299
+ /* */
3300
+ /* */
3301
+ /* */
3302
+ /* */
3303
+ /* */
3304
+ /* */
3305
+ /* */
3306
+ /* */
3307
+ /* */
3308
+ /* */
3309
+ /* */
3310
+ /* */
3311
+ /* */
3312
+ /* */
3313
+ /* */
3314
+ /* */
3315
+ /* */
3316
+ /* */
3317
+ /* */
3318
+ /* */
3319
+ /* */
3320
+ /* */
3321
+ /* */
3322
+ /* */
3323
+ /* */
3324
+ /* */
3325
+ /* */
3326
+ /* */
3327
+ /* */
3328
+ /* */
3329
+ /* */
3330
+ /* */
3331
+ return (void 0);
3332
+ }
3333
+ }
3334
+ ;
3335
+ ({}); // @--end-of-file-for-module=taon lib/context-db-migrations.ts
3336
+
2901
3337
  /* eslint-disable @typescript-eslint/typedef */
2902
3338
  class EndpointContext {
2903
3339
  static initNgZone(ngZone) {
2904
3340
  this.ngZone = ngZone;
2905
3341
  }
3342
+ get isRunOrRevertOnlyMigrationAppStart() {
3343
+ return !!(this.onlyMigrationRun || this.onlyMigrationRevertToTimestamp);
3344
+ }
2906
3345
  get realtimeClient() {
2907
3346
  return this.realtime.client;
2908
3347
  }
@@ -2933,6 +3372,12 @@ class EndpointContext {
2933
3372
  }
2934
3373
  return this.config?.logs === true;
2935
3374
  }
3375
+ get logMigrations() {
3376
+ if (_$1.isObject(this.config?.logs)) {
3377
+ return !!this.config.logs.migrations;
3378
+ }
3379
+ return this.config?.logs === true;
3380
+ }
2936
3381
  constructor(originalConfig, configFn) {
2937
3382
  this.originalConfig = originalConfig;
2938
3383
  this.configFn = configFn;
@@ -2942,6 +3387,7 @@ class EndpointContext {
2942
3387
  * (with init() function )
2943
3388
  */
2944
3389
  this.inited = false;
3390
+ this.dbMigrations = new ContextDbMigrations(this);
2945
3391
  this.localInstaceObjSymbol = Symbol('localInstaceObjSymbol');
2946
3392
  /**
2947
3393
  * all instances of classes from context
@@ -2956,12 +3402,15 @@ class EndpointContext {
2956
3402
  Models.ClassType.PROVIDER,
2957
3403
  Models.ClassType.REPOSITORY,
2958
3404
  Models.ClassType.SUBSCRIBER,
3405
+ Models.ClassType.MIGRATION,
2959
3406
  ];
2960
3407
  this.allTypesfromContexts = [
2961
3408
  ...this.injectableTypesfromContexts,
2962
3409
  Models.ClassType.ENTITY,
2963
3410
  ];
2964
3411
  this.expressApp = {};
3412
+ this.onlyMigrationRun = false;
3413
+ this.onlyMigrationRevertToTimestamp = undefined;
2965
3414
  this.entitiesTriggers = {};
2966
3415
  this.cloneClassWithNewMetadata = ({ BaseClass, className, config, ctx, classType, }) => {
2967
3416
  const cloneClass = () => {
@@ -3029,9 +3478,16 @@ class EndpointContext {
3029
3478
  };
3030
3479
  }
3031
3480
  async init(options) {
3032
- const { initFromRecrusiveContextResovle, overrideHost, overrideRemoteHost, } = options || {}; // TODO use it ?
3481
+ const { initFromRecrusiveContextResovle, overrideHost, overrideRemoteHost, onlyMigrationRun, onlyMigrationRevertToTimestamp, } = options || {}; // TODO use it ?
3033
3482
  this.inited = true;
3483
+ // @ts-ignore
3484
+ this.onlyMigrationRun = onlyMigrationRun;
3485
+ // @ts-ignore
3486
+ this.onlyMigrationRevertToTimestamp = onlyMigrationRevertToTimestamp;
3034
3487
  this.config = this.configFn(ENV$2);
3488
+ if (_$1.isObject(this.config.database)) {
3489
+ this.config.database = Models.DatabaseConfig.from(this.config.database).databaseConfigTypeORM;
3490
+ }
3035
3491
  if (overrideHost && overrideRemoteHost) {
3036
3492
  Helpers.throw(`[taon-config] You can't have overrideHost and overrideRemoteHost at the same time`);
3037
3493
  }
@@ -3098,6 +3554,7 @@ class EndpointContext {
3098
3554
  this.config.repositories = this.config.repositories || {};
3099
3555
  this.config.providers = this.config.providers || {};
3100
3556
  this.config.subscribers = this.config.subscribers || {};
3557
+ this.config.migrations = this.config.migrations || {};
3101
3558
  this.config.entities = {
3102
3559
  ...(await this.getRecrusiveClassesfromContextsObj(Models.ClassType.ENTITY)),
3103
3560
  ...this.config.entities,
@@ -3118,6 +3575,10 @@ class EndpointContext {
3118
3575
  ...(await this.getRecrusiveClassesfromContextsObj(Models.ClassType.REPOSITORY)),
3119
3576
  ...this.config.repositories,
3120
3577
  };
3578
+ this.config.migrations = {
3579
+ ...(await this.getRecrusiveClassesfromContextsObj(Models.ClassType.MIGRATION)),
3580
+ ...this.config.migrations,
3581
+ };
3121
3582
  this.config.controllers = this.cloneClassesObjWithNewMetadata({
3122
3583
  classesInput: this.config.controllers,
3123
3584
  config: this.config,
@@ -3142,6 +3603,12 @@ class EndpointContext {
3142
3603
  ctx: this,
3143
3604
  classType: Models.ClassType.SUBSCRIBER,
3144
3605
  });
3606
+ this.config.migrations = this.cloneClassesObjWithNewMetadata({
3607
+ classesInput: this.config.migrations,
3608
+ config: this.config,
3609
+ ctx: this,
3610
+ classType: Models.ClassType.MIGRATION,
3611
+ });
3145
3612
  for (const classTypeName of this.injectableTypesfromContexts) {
3146
3613
  this.classInstancesByNameObj[classTypeName] = {};
3147
3614
  this.objWithClassesInstancesArr[classTypeName] = [];
@@ -3149,35 +3616,37 @@ class EndpointContext {
3149
3616
  for (const classTypeName of this.injectableTypesfromContexts) {
3150
3617
  await this.createInstances(this.config[Models.ClassTypeKey[classTypeName]], classTypeName);
3151
3618
  }
3152
- if (this.mode === 'backend-frontend(tcp+udp)' && !this.config.abstract) {
3153
- /* */
3154
- /* */
3155
- /* */
3156
- /* */
3157
- /* */
3158
- /* */
3159
- /* */
3160
- /* */
3161
- /* */
3162
- /* */
3163
- /* */
3164
- /* */
3165
- /* */
3166
- /* */
3167
- /* */
3168
- /* */
3169
- /* */
3170
- /* */
3171
- /* */
3172
- }
3173
- if (!this.config.abstract) {
3174
- this.disabledRealtime = !!this.config.disabledRealtime;
3175
- /* */
3176
- /* */
3177
- /* */
3178
- /* */
3179
- /* */
3180
- this.realtime = new RealtimeCore(this);
3619
+ if (!this.isRunOrRevertOnlyMigrationAppStart) {
3620
+ if (this.mode === 'backend-frontend(tcp+udp)' && !this.config.abstract) {
3621
+ /* */
3622
+ /* */
3623
+ /* */
3624
+ /* */
3625
+ /* */
3626
+ /* */
3627
+ /* */
3628
+ /* */
3629
+ /* */
3630
+ /* */
3631
+ /* */
3632
+ /* */
3633
+ /* */
3634
+ /* */
3635
+ /* */
3636
+ /* */
3637
+ /* */
3638
+ /* */
3639
+ /* */
3640
+ }
3641
+ if (!this.config.abstract) {
3642
+ this.disabledRealtime = !!this.config.disabledRealtime;
3643
+ /* */
3644
+ /* */
3645
+ /* */
3646
+ /* */
3647
+ /* */
3648
+ this.realtime = new RealtimeCore(this);
3649
+ }
3181
3650
  }
3182
3651
  if (this.config.abstract) {
3183
3652
  this.logFramework &&
@@ -3265,21 +3734,6 @@ class EndpointContext {
3265
3734
  /* */
3266
3735
  /* */
3267
3736
  /* */
3268
- /* */
3269
- /* */
3270
- /* */
3271
- /* */
3272
- /* */
3273
- /* */
3274
- /* */
3275
- /* */
3276
- /* */
3277
- /* */
3278
- /* */
3279
- /* */
3280
- /* */
3281
- /* */
3282
- /* */
3283
3737
  return (void 0);
3284
3738
  }
3285
3739
  get ngZone() {
@@ -3440,6 +3894,8 @@ class EndpointContext {
3440
3894
  return this.config.repositories;
3441
3895
  case Models.ClassType.SUBSCRIBER:
3442
3896
  return this.config.subscribers;
3897
+ case Models.ClassType.MIGRATION:
3898
+ return this.config.migrations;
3443
3899
  }
3444
3900
  }
3445
3901
  isCLassType(classType, classFn) {
@@ -3478,7 +3934,7 @@ class EndpointContext {
3478
3934
  }
3479
3935
  }
3480
3936
  async reinitControllers() {
3481
- if (this.remoteHost) {
3937
+ if (this.remoteHost || Object.keys(this.config.migrations).length > 0) {
3482
3938
  return;
3483
3939
  }
3484
3940
  const controllers = this.getClassesInstancesArrBy(Models.ClassType.CONTROLLER);
@@ -3500,6 +3956,7 @@ class EndpointContext {
3500
3956
  Models.ClassType.REPOSITORY,
3501
3957
  Models.ClassType.CONTROLLER,
3502
3958
  Models.ClassType.ENTITY,
3959
+ Models.ClassType.MIGRATION,
3503
3960
  ]) {
3504
3961
  for (const classFun of this.getClassFunByArr(classTypeName)) {
3505
3962
  if (_$1.isFunction(classFun._)) {
@@ -3514,6 +3971,7 @@ class EndpointContext {
3514
3971
  Models.ClassType.PROVIDER,
3515
3972
  Models.ClassType.REPOSITORY,
3516
3973
  Models.ClassType.CONTROLLER,
3974
+ Models.ClassType.MIGRATION,
3517
3975
  ]) {
3518
3976
  for (const ctrl of this.getClassesInstancesArrBy(classTypeName)) {
3519
3977
  if (_$1.isFunction(ctrl._)) {
@@ -3699,9 +4157,20 @@ class EndpointContext {
3699
4157
  /* */
3700
4158
  /* */
3701
4159
  /* */
4160
+ /* */
4161
+ /* */
4162
+ /* */
4163
+ /* */
4164
+ /* */
4165
+ /* */
4166
+ /* */
4167
+ /* */
3702
4168
  return (void 0);
3703
4169
  }
3704
- initMetadata() {
4170
+ initControllers() {
4171
+ if (this.isRunOrRevertOnlyMigrationAppStart) {
4172
+ return;
4173
+ }
3705
4174
  const allControllers = this.getClassFunByArr(Models.ClassType.CONTROLLER);
3706
4175
  for (const controllerClassFn of allControllers) {
3707
4176
  controllerClassFn[Symbols.classMethodsNames] =
@@ -3781,7 +4250,7 @@ class EndpointContext {
3781
4250
  }
3782
4251
  }
3783
4252
  writeActiveRoutes() {
3784
- if (this.remoteHost) {
4253
+ if (this.remoteHost || this.isRunOrRevertOnlyMigrationAppStart) {
3785
4254
  return;
3786
4255
  }
3787
4256
  const contexts = [this];
@@ -4539,25 +5008,19 @@ instead
4539
5008
  ;
4540
5009
  ({}); // @--end-of-file-for-module=taon lib/endpoint-context.ts
4541
5010
 
4542
- const globalPublicStorage = Helpers.isBrowser ? window : global;
4543
- ;
4544
- ({}); // @--end-of-file-for-module=taon lib/storage.ts
4545
-
4546
5011
  const ENV$1 = Helpers.isBrowser ? window['ENV'] : global['ENV'];
4547
- class TaonAdmin {
5012
+ class TaonAdminService {
5013
+ static get Instance() {
5014
+ return this._instance;
5015
+ }
4548
5016
  constructor() {
4549
5017
  this.scrollableEnabled = false; // TOOD false by default
4550
5018
  this.onEditMode = new Subject();
4551
5019
  this.onEditMode$ = this.onEditMode.asObservable();
4552
5020
  this.enabledTabs = [];
5021
+ TaonAdminService._instance = this;
4553
5022
  this.scrollableEnabled = !!ENV$1?.useGlobalNgxScrollbar;
4554
5023
  }
4555
- static get Instance() {
4556
- if (!globalPublicStorage[config.frameworkNames.productionFrameworkName]) {
4557
- globalPublicStorage[config.frameworkNames.productionFrameworkName] = new TaonAdmin();
4558
- }
4559
- return globalPublicStorage[config.frameworkNames.productionFrameworkName];
4560
- }
4561
5024
  setEditMode(value) {
4562
5025
  this.onEditMode.next(value);
4563
5026
  }
@@ -4573,26 +5036,26 @@ class TaonAdmin {
4573
5036
  this.adminPanelIsOpen = true;
4574
5037
  }
4575
5038
  logout() { }
4576
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdmin, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4577
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdmin, providedIn: 'root' }); }
5039
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5040
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, providedIn: 'root' }); }
4578
5041
  }
4579
5042
  __decorate([
4580
- Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false),
5043
+ (Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
4581
5044
  __metadata("design:type", Boolean)
4582
- ], TaonAdmin.prototype, "adminPanelIsOpen", void 0);
5045
+ ], TaonAdminService.prototype, "adminPanelIsOpen", void 0);
4583
5046
  __decorate([
4584
- Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false),
5047
+ (Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
4585
5048
  __metadata("design:type", Boolean)
4586
- ], TaonAdmin.prototype, "draggablePopupMode", void 0);
5049
+ ], TaonAdminService.prototype, "draggablePopupMode", void 0);
4587
5050
  __decorate([
4588
- Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false),
5051
+ (Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
4589
5052
  __metadata("design:type", Boolean)
4590
- ], TaonAdmin.prototype, "draggablePopupModeFullScreen", void 0);
5053
+ ], TaonAdminService.prototype, "draggablePopupModeFullScreen", void 0);
4591
5054
  __decorate([
4592
- Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false),
5055
+ (Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
4593
5056
  __metadata("design:type", Boolean)
4594
- ], TaonAdmin.prototype, "keepWebsqlDbDataAfterReload", void 0);
4595
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdmin, decorators: [{
5057
+ ], TaonAdminService.prototype, "keepWebsqlDbDataAfterReload", void 0);
5058
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, decorators: [{
4596
5059
  type: Injectable,
4597
5060
  args: [{ providedIn: 'root' }]
4598
5061
  }], ctorParameters: () => [] });
@@ -4616,6 +5079,9 @@ const createContext = (configFn) => {
4616
5079
  get subscribers() {
4617
5080
  return config.subscribers;
4618
5081
  },
5082
+ get migrations() {
5083
+ return config.migrations;
5084
+ },
4619
5085
  },
4620
5086
  get contexts() {
4621
5087
  return config.contexts;
@@ -4665,14 +5131,15 @@ const createContext = (configFn) => {
4665
5131
  await endpointContextRef.initEntities();
4666
5132
  await endpointContextRef.initSubscribers();
4667
5133
  await endpointContextRef.initDatabaseConnection();
4668
- endpointContextRef.initMetadata();
5134
+ await endpointContextRef.dbMigrations.ensureMigrationTableExists();
5135
+ endpointContextRef.initControllers();
4669
5136
  endpointContextRef.startServer();
4670
5137
  /* */
4671
5138
  /* */
4672
5139
  await endpointContextRef.initClasses();
4673
5140
  let keepWebsqlDbDataAfterReload = false;
4674
5141
  keepWebsqlDbDataAfterReload =
4675
- TaonAdmin.Instance.keepWebsqlDbDataAfterReload;
5142
+ TaonAdminService.Instance?.keepWebsqlDbDataAfterReload;
4676
5143
  if (!Helpers.isNode && keepWebsqlDbDataAfterReload) {
4677
5144
  Helpers.info(`[taon] Keep websql data after reload`);
4678
5145
  }
@@ -4680,6 +5147,15 @@ const createContext = (configFn) => {
4680
5147
  await endpointContextRef.reinitControllers();
4681
5148
  }
4682
5149
  ///#region TODO this may be usefull but for now
5150
+ if (endpointContextRef.onlyMigrationRun) {
5151
+ await endpointContextRef.dbMigrations.runAllNotCompletedMigrations();
5152
+ }
5153
+ else if (endpointContextRef.onlyMigrationRevertToTimestamp) {
5154
+ await endpointContextRef.dbMigrations.revertMigrationToTimestamp(endpointContextRef.onlyMigrationRevertToTimestamp);
5155
+ }
5156
+ else {
5157
+ await endpointContextRef.dbMigrations.runAllNotCompletedMigrations();
5158
+ }
4683
5159
  resolve(endpointContextRef);
4684
5160
  });
4685
5161
  });
@@ -4720,9 +5196,12 @@ var baseContext = /*#__PURE__*/Object.freeze({
4720
5196
  BaseContext: BaseContext
4721
5197
  });
4722
5198
 
5199
+ /**
5200
+ * Subscriber decorator
5201
+ */
4723
5202
  function TaonSubscriber(options) {
4724
5203
  return function (constructor) {
4725
- Reflect.defineMetadata(Symbols.metadata.options.repository, options, constructor);
5204
+ Reflect.defineMetadata(Symbols.metadata.options.subscriber, options, constructor);
4726
5205
  Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
4727
5206
  ClassHelpers.setName(constructor, options?.className);
4728
5207
  };
@@ -4737,133 +5216,133 @@ let BaseSubscriberForEntity = class BaseSubscriberForEntity extends BaseInjector
4737
5216
  * Called after entity is loaded.
4738
5217
  */
4739
5218
  afterLoad(entity) {
4740
- this.__endpoint_context__.logDb &&
5219
+ this.ctx.logDb &&
4741
5220
  console.log(`AFTER ENTITY LOADED: `, entity);
4742
5221
  }
4743
5222
  /**
4744
5223
  * Called before query execution.
4745
5224
  */
4746
5225
  beforeQuery(event) {
4747
- this.__endpoint_context__.logDb &&
5226
+ this.ctx.logDb &&
4748
5227
  console.log(`BEFORE QUERY: `, event.query);
4749
5228
  }
4750
5229
  /**
4751
5230
  * Called after query execution.
4752
5231
  */
4753
5232
  afterQuery(event) {
4754
- this.__endpoint_context__.logDb &&
5233
+ this.ctx.logDb &&
4755
5234
  console.log(`AFTER QUERY: `, event.query);
4756
5235
  }
4757
5236
  /**
4758
5237
  * Called before entity insertion.
4759
5238
  */
4760
5239
  beforeInsert(event) {
4761
- this.__endpoint_context__.logDb &&
5240
+ this.ctx.logDb &&
4762
5241
  console.log(`BEFORE ENTITY INSERTED: `, event.entity);
4763
5242
  }
4764
5243
  /**
4765
5244
  * Called after entity insertion.
4766
5245
  */
4767
5246
  afterInsert(event) {
4768
- this.__endpoint_context__.logDb &&
5247
+ this.ctx.logDb &&
4769
5248
  console.log(`AFTER ENTITY INSERTED: `, event.entity);
4770
5249
  }
4771
5250
  /**
4772
5251
  * Called before entity update.
4773
5252
  */
4774
5253
  beforeUpdate(event) {
4775
- this.__endpoint_context__.logDb &&
5254
+ this.ctx.logDb &&
4776
5255
  console.log(`BEFORE ENTITY UPDATED: `, event.entity);
4777
5256
  }
4778
5257
  /**
4779
5258
  * Called after entity update.
4780
5259
  */
4781
5260
  afterUpdate(event) {
4782
- this.__endpoint_context__.logDb &&
5261
+ this.ctx.logDb &&
4783
5262
  console.log(`AFTER ENTITY UPDATED: `, event.entity);
4784
5263
  }
4785
5264
  /**
4786
5265
  * Called before entity removal.
4787
5266
  */
4788
5267
  beforeRemove(event) {
4789
- this.__endpoint_context__.logDb &&
5268
+ this.ctx.logDb &&
4790
5269
  console.log(`BEFORE ENTITY WITH ID ${event.entityId} REMOVED: `, event.entity);
4791
5270
  }
4792
5271
  /**
4793
5272
  * Called after entity removal.
4794
5273
  */
4795
5274
  afterRemove(event) {
4796
- this.__endpoint_context__.logDb &&
5275
+ this.ctx.logDb &&
4797
5276
  console.log(`AFTER ENTITY WITH ID ${event.entityId} REMOVED: `, event.entity);
4798
5277
  }
4799
5278
  /**
4800
5279
  * Called before entity removal.
4801
5280
  */
4802
5281
  beforeSoftRemove(event) {
4803
- this.__endpoint_context__.logDb &&
5282
+ this.ctx.logDb &&
4804
5283
  console.log(`BEFORE ENTITY WITH ID ${event.entityId} SOFT REMOVED: `, event.entity);
4805
5284
  }
4806
5285
  /**
4807
5286
  * Called after entity removal.
4808
5287
  */
4809
5288
  afterSoftRemove(event) {
4810
- this.__endpoint_context__.logDb &&
5289
+ this.ctx.logDb &&
4811
5290
  console.log(`AFTER ENTITY WITH ID ${event.entityId} SOFT REMOVED: `, event.entity);
4812
5291
  }
4813
5292
  /**
4814
5293
  * Called before entity recovery.
4815
5294
  */
4816
5295
  beforeRecover(event) {
4817
- this.__endpoint_context__.logDb &&
5296
+ this.ctx.logDb &&
4818
5297
  console.log(`BEFORE ENTITY WITH ID ${event.entityId} RECOVERED: `, event.entity);
4819
5298
  }
4820
5299
  /**
4821
5300
  * Called after entity recovery.
4822
5301
  */
4823
5302
  afterRecover(event) {
4824
- this.__endpoint_context__.logDb &&
5303
+ this.ctx.logDb &&
4825
5304
  console.log(`AFTER ENTITY WITH ID ${event.entityId} RECOVERED: `, event.entity);
4826
5305
  }
4827
5306
  /**
4828
5307
  * Called before transaction start.
4829
5308
  */
4830
5309
  beforeTransactionStart(event) {
4831
- this.__endpoint_context__.logDb &&
5310
+ this.ctx.logDb &&
4832
5311
  console.log(`BEFORE TRANSACTION STARTED: `, event);
4833
5312
  }
4834
5313
  /**
4835
5314
  * Called after transaction start.
4836
5315
  */
4837
5316
  afterTransactionStart(event) {
4838
- this.__endpoint_context__.logDb &&
5317
+ this.ctx.logDb &&
4839
5318
  console.log(`AFTER TRANSACTION STARTED: `, event);
4840
5319
  }
4841
5320
  /**
4842
5321
  * Called before transaction commit.
4843
5322
  */
4844
5323
  beforeTransactionCommit(event) {
4845
- this.__endpoint_context__.logDb &&
5324
+ this.ctx.logDb &&
4846
5325
  console.log(`BEFORE TRANSACTION COMMITTED: `, event);
4847
5326
  }
4848
5327
  /**
4849
5328
  * Called after transaction commit.
4850
5329
  */
4851
5330
  afterTransactionCommit(event) {
4852
- this.__endpoint_context__.logDb &&
5331
+ this.ctx.logDb &&
4853
5332
  console.log(`AFTER TRANSACTION COMMITTED: `, event);
4854
5333
  }
4855
5334
  /**
4856
5335
  * Called before transaction rollback.
4857
5336
  */
4858
5337
  beforeTransactionRollback(event) {
4859
- this.__endpoint_context__.logDb &&
5338
+ this.ctx.logDb &&
4860
5339
  console.log(`BEFORE TRANSACTION ROLLBACK: `, event);
4861
5340
  }
4862
5341
  /**
4863
5342
  * Called after transaction rollback.
4864
5343
  */
4865
5344
  afterTransactionRollback(event) {
4866
- this.__endpoint_context__.logDb &&
5345
+ this.ctx.logDb &&
4867
5346
  console.log(`AFTER TRANSACTION ROLLBACK: `, event);
4868
5347
  }
4869
5348
  };
@@ -4875,6 +5354,26 @@ BaseSubscriberForEntity = __decorate([
4875
5354
  ;
4876
5355
  ({}); // @--end-of-file-for-module=taon lib/base-classes/base-subscriber-for-entity.ts
4877
5356
 
5357
+ class BaseMigration extends BaseInjector {
5358
+ /**
5359
+ * by default is READY to run
5360
+ */
5361
+ isReadyToRun() {
5362
+ return true;
5363
+ }
5364
+ getDescription() {
5365
+ return _$1.startCase(ClassHelpers.getName(this));
5366
+ }
5367
+ async up(queryRunner) {
5368
+ console.log(`Running migration UP "${ClassHelpers.getName(this)}"`);
5369
+ }
5370
+ async down(queryRunner) {
5371
+ console.log(`Running migration DOWN "${ClassHelpers.getName(this)}"`);
5372
+ }
5373
+ }
5374
+ ;
5375
+ ({}); // @--end-of-file-for-module=taon lib/base-classes/base-migration.ts
5376
+
4878
5377
  var Base;
4879
5378
  (function (Base) {
4880
5379
  Base.Controller = BaseController;
@@ -4885,6 +5384,7 @@ var Base;
4885
5384
  Base.Class = BaseClass;
4886
5385
  Base.Repository = BaseRepository;
4887
5386
  Base.SubscriberForEntity = BaseSubscriberForEntity;
5387
+ Base.Migration = BaseMigration;
4888
5388
  Base.Context = BaseContext;
4889
5389
  })(Base || (Base = {}));
4890
5390
  ;
@@ -4892,6 +5392,9 @@ var Base;
4892
5392
 
4893
5393
  /* */
4894
5394
  /* */
5395
+ /**
5396
+ * Entity decorator
5397
+ */
4895
5398
  function TaonEntity(options) {
4896
5399
  return function (constructor) {
4897
5400
  options = options || {};
@@ -4911,6 +5414,9 @@ class TaonEntityOptions extends Models.DecoratorAbstractOpt {
4911
5414
  ;
4912
5415
  ({}); // @--end-of-file-for-module=taon lib/decorators/classes/entity-decorator.ts
4913
5416
 
5417
+ /**
5418
+ * Provider decorator
5419
+ */
4914
5420
  function TaonProvider(options) {
4915
5421
  return function (constructor) {
4916
5422
  Reflect.defineMetadata(Symbols.metadata.options.provider, options, constructor);
@@ -4923,6 +5429,21 @@ class TaonProviderOptions extends Models.DecoratorAbstractOpt {
4923
5429
  ;
4924
5430
  ({}); // @--end-of-file-for-module=taon lib/decorators/classes/provider-decorator.ts
4925
5431
 
5432
+ /**
5433
+ * Migration decorator
5434
+ */
5435
+ function TaonMigration(options) {
5436
+ return function (constructor) {
5437
+ Reflect.defineMetadata(Symbols.metadata.options.migration, options, constructor);
5438
+ Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
5439
+ ClassHelpers.setName(constructor, options?.className);
5440
+ };
5441
+ }
5442
+ class TaonMigrationOptions extends Models.DecoratorAbstractOpt {
5443
+ }
5444
+ ;
5445
+ ({}); // @--end-of-file-for-module=taon lib/decorators/classes/migration-decorator.ts
5446
+
4926
5447
  const inject = (entity) => {
4927
5448
  return new Proxy({}, {
4928
5449
  get: (_, propName) => {
@@ -5699,7 +6220,6 @@ class TaonTableComponent {
5699
6220
  await this.retriveData();
5700
6221
  }
5701
6222
  async retriveData() {
5702
- // @ts-ignore
5703
6223
  }
5704
6224
  expansionRow(e) {
5705
6225
  this.expansionChange.next(e);
@@ -5708,7 +6228,7 @@ class TaonTableComponent {
5708
6228
  log.i('context menu event', e);
5709
6229
  }
5710
6230
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5711
- 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"] }] }); }
6231
+ 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: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i3$1.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: i7.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }] }); }
5712
6232
  }
5713
6233
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonTableComponent, decorators: [{
5714
6234
  type: Component,
@@ -5788,36 +6308,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
5788
6308
  ;
5789
6309
  ({}); // @--end-of-file-for-module=taon lib/ui/taon-table/index.ts
5790
6310
 
5791
- class TaonAdminService {
5792
- /**
5793
- * @deprecated
5794
- */
5795
- disableScroll() {
5796
- }
5797
- constructor(cdr) {
5798
- this.cdr = cdr;
5799
- this.admin = window['taon'];
5800
- }
5801
- addTab(name, template) {
5802
- this.admin.cmp.tabs.push({
5803
- name,
5804
- template,
5805
- });
5806
- }
5807
- init(taonAdminModeConfigurationComponent) {
5808
- this.taonAdminModeConfigurationComponent =
5809
- taonAdminModeConfigurationComponent;
5810
- }
5811
- 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 }); }
5812
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, providedIn: 'root' }); }
5813
- }
5814
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, decorators: [{
5815
- type: Injectable,
5816
- args: [{ providedIn: 'root' }]
5817
- }], ctorParameters: () => [{ type: i0.ApplicationRef }] });
5818
- ;
5819
- ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin-control.service.ts
5820
-
5821
6311
  class TaonAdminModeConfigurationComponent {
5822
6312
  get opened() {
5823
6313
  return !this.isIframe && this.admin.adminPanelIsOpen;
@@ -5832,13 +6322,12 @@ class TaonAdminModeConfigurationComponent {
5832
6322
  }
5833
6323
  this.admin.adminPanelIsOpen = v;
5834
6324
  }
5835
- constructor(breakpointsService) {
6325
+ constructor(breakpointsService, admin) {
5836
6326
  this.breakpointsService = breakpointsService;
6327
+ this.admin = admin;
5837
6328
  this.$destroy = new Subject();
5838
6329
  this.cdr = inject$1(ChangeDetectorRef);
5839
6330
  this.taonAdminService = inject$1(TaonAdminService);
5840
- this.tabs = [];
5841
- this.admin = window['taon'];
5842
6331
  this.isWebSQLMode = Helpers.isWebSQL;
5843
6332
  this.hideTaonToolsInProduction = ENV.hideTaonToolsInProduction && ENV.angularProd;
5844
6333
  this.isIframe = window.location !== window.parent.location;
@@ -5857,7 +6346,6 @@ class TaonAdminModeConfigurationComponent {
5857
6346
  this.dragPositionZero = { x: 0, y: 0 };
5858
6347
  this.taonAdminModeConfigurationDataChanged = new EventEmitter();
5859
6348
  this.taonAdminModeConfigurationData = {};
5860
- this.admin.cmp = this;
5861
6349
  this.breakpointsService
5862
6350
  .listenTo()
5863
6351
  .pipe(takeUntil(this.$destroy))
@@ -5865,14 +6353,6 @@ class TaonAdminModeConfigurationComponent {
5865
6353
  // @ts-ignore
5866
6354
  this.isDesktop = breakpoint === 'desktop';
5867
6355
  });
5868
- this.taonAdminService.init(this);
5869
- }
5870
- reloadTabs() {
5871
- this.reloading = true;
5872
- setTimeout(() => {
5873
- this.reloading = false;
5874
- console.log('reloading done');
5875
- });
5876
6356
  }
5877
6357
  async ngOnInit() {
5878
6358
  await Stor.awaitPendingOperatios();
@@ -5896,6 +6376,16 @@ class TaonAdminModeConfigurationComponent {
5896
6376
  onResize(event) {
5897
6377
  this.height = window.innerHeight;
5898
6378
  }
6379
+ async reloadTabs() {
6380
+ return new Promise(resolve => {
6381
+ this.reloading = true;
6382
+ setTimeout(() => {
6383
+ this.reloading = false;
6384
+ console.log('reloading done');
6385
+ resolve();
6386
+ });
6387
+ });
6388
+ }
5899
6389
  async toogle() {
5900
6390
  this.opened = !this.opened;
5901
6391
  }
@@ -5917,37 +6407,47 @@ class TaonAdminModeConfigurationComponent {
5917
6407
  scrollTabs(event) {
5918
6408
  return;
5919
6409
  }
5920
- 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 }); }
5921
- 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"] }] }); }
6410
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationComponent, deps: [{ token: i1$3.BreakpointsService }, { token: TaonAdminService }], target: i0.ɵɵFactoryTarget.Component }); }
6411
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonAdminModeConfigurationComponent, isStandalone: true, selector: "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 <!-- #region admin tabs / header -->\n <div class=\"taon-header-admin-wrapper\">\n <columns-container\n class=\"taon-header-admin\"\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column\n width=\"200\"\n 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\n width=\"40\"\n *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 <!-- #endregion -->\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 </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\n #drawer\n style=\"width: 580px\"\n [opened]=\"opened\"\n [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: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: StaticColumnsModule }, { 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: "ngmodule", type: FormsModule }, { 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: "ngmodule", type: NgScrollbarModule }, { kind: "component", type: i5.NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "ngmodule", type: TaonProgressBarModule }, { kind: "ngmodule", type: TaonNotificationsModule }, { kind: "ngmodule", type: TaonFullMaterialModule }, { kind: "directive", type: i6$1.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: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i7.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i8.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i8.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "component", type: i9.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: i11.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i11.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i11.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "component", type: i12.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i12.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: // TODO import only partial things
6412
+ TaonSessionPasscodeComponent, selector: "taon-session-passcode", inputs: ["passcode", "message"] }] }); }
5922
6413
  }
5923
6414
  __decorate([
5924
- Stor.property.in.localstorage
6415
+ (Stor.property.in.localstorage
5925
6416
  .for(TaonAdminModeConfigurationComponent)
5926
- .withDefaultValue(0),
6417
+ .withDefaultValue(0)),
5927
6418
  __metadata("design:type", Number)
5928
6419
  ], TaonAdminModeConfigurationComponent.prototype, "dragPositionX", void 0);
5929
6420
  __decorate([
5930
- Stor.property.in.localstorage
6421
+ (Stor.property.in.localstorage
5931
6422
  .for(TaonAdminModeConfigurationComponent)
5932
- .withDefaultValue(0),
6423
+ .withDefaultValue(0)),
5933
6424
  __metadata("design:type", Number)
5934
6425
  ], TaonAdminModeConfigurationComponent.prototype, "dragPositionY", void 0);
5935
6426
  __decorate([
5936
- Stor.property.in.localstorage
6427
+ (Stor.property.in.localstorage
5937
6428
  .for(TaonAdminModeConfigurationComponent)
5938
- .withDefaultValue(0),
6429
+ .withDefaultValue(0)),
5939
6430
  __metadata("design:type", Number)
5940
6431
  ], TaonAdminModeConfigurationComponent.prototype, "selectedIndex", void 0);
5941
6432
  __decorate([
5942
- Stor.property.in.localstorage
6433
+ (Stor.property.in.localstorage
5943
6434
  .for(TaonAdminModeConfigurationComponent)
5944
- .withDefaultValue(false),
6435
+ .withDefaultValue(false)),
5945
6436
  __metadata("design:type", Boolean)
5946
6437
  ], TaonAdminModeConfigurationComponent.prototype, "wasOpenDraggablePopup", void 0);
5947
6438
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationComponent, decorators: [{
5948
6439
  type: Component,
5949
- 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"] }]
5950
- }], ctorParameters: () => [{ type: i1$3.BreakpointsService }], propDecorators: { tabGroup: [{
6440
+ args: [{ selector: 'taon-admin-mode-configuration', standalone: true, imports: [
6441
+ CommonModule,
6442
+ StaticColumnsModule,
6443
+ FormsModule,
6444
+ NgScrollbarModule,
6445
+ TaonProgressBarModule,
6446
+ TaonNotificationsModule,
6447
+ TaonFullMaterialModule, // TODO import only partial things
6448
+ TaonSessionPasscodeComponent,
6449
+ ], 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 <!-- #region admin tabs / header -->\n <div class=\"taon-header-admin-wrapper\">\n <columns-container\n class=\"taon-header-admin\"\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column\n width=\"200\"\n 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\n width=\"40\"\n *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 <!-- #endregion -->\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 </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\n #drawer\n style=\"width: 580px\"\n [opened]=\"opened\"\n [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"] }]
6450
+ }], ctorParameters: () => [{ type: i1$3.BreakpointsService }, { type: TaonAdminService }], propDecorators: { tabGroup: [{
5951
6451
  type: ViewChild,
5952
6452
  args: ['tabGroup']
5953
6453
  }], taonAdminModeConfigurationDataChanged: [{
@@ -5961,254 +6461,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
5961
6461
  ;
5962
6462
  ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.ts
5963
6463
 
5964
- class TaonAdminEditModeComponent {
5965
- constructor(router) {
5966
- this.router = router;
5967
- this.inited$ = of(true);
5968
- this.destroyed$ = new Subject();
5969
- this.handlers = [];
5970
- this.columns = [
5971
- {
5972
- header: 'ID',
5973
- field: 'id',
5974
- maxWidth: 100,
5975
- showExpand: true,
5976
- },
5977
- {
5978
- header: 'src',
5979
- field: 'src',
5980
- maxWidth: 250,
5981
- },
5982
- {
5983
- header: 'Content Type',
5984
- field: 'contentType',
5985
- maxWidth: 120,
5986
- },
5987
- ];
5988
- this.taonAdminEditModeDataChanged = new EventEmitter();
5989
- this.taonAdminEditModeData = {};
5990
- }
5991
- ngOnInit() {
5992
- this.files = this.admin.currentFiles;
5993
- this.handlers.push(this.admin.onEditMode$.subscribe(() => {
5994
- this.refresFilesList();
5995
- }));
5996
- this.admin.onRegisterFile().pipe(takeUntil(this.destroyed$), tap(() => {
5997
- this.refresFilesList();
5998
- }));
5999
- }
6000
- ngOnDestroy() {
6001
- this.handlers.forEach(h => h.unsubscribe());
6002
- this.destroyed$.next(void 0);
6003
- this.destroyed$.unsubscribe();
6004
- }
6005
- ngAfterViewInit() {
6006
- //Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.
6007
- //Add 'implements AfterViewInit' to the class.
6008
- setTimeout(() => {
6009
- this.refresFilesList();
6010
- }, 500);
6011
- }
6012
- expansionRow(e) {
6013
- console.log(e);
6014
- }
6015
- refresFilesList() {
6016
- this.files = this.admin.currentFiles;
6017
- }
6018
- searchFind(file) {
6019
- if (!!this?.fileToSearch) {
6020
- return file?.src?.search(this?.fileToSearch) !== -1;
6021
- }
6022
- return true;
6023
- }
6024
- 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 }); }
6025
- 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" }] }); }
6026
- }
6027
- __decorate([
6028
- (Stor.property.in.localstorage
6029
- .for(TaonAdminEditModeComponent)
6030
- .withDefaultValue(0)),
6031
- __metadata("design:type", Number)
6032
- ], TaonAdminEditModeComponent.prototype, "selectedTabIndex", void 0);
6033
- __decorate([
6034
- (Stor.property.in.localstorage
6035
- .for(TaonAdminEditModeComponent)
6036
- .withDefaultValue('')),
6037
- __metadata("design:type", String)
6038
- ], TaonAdminEditModeComponent.prototype, "fileToSearch", void 0);
6039
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeComponent, decorators: [{
6040
- type: Component,
6041
- 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"] }]
6042
- }], ctorParameters: () => [{ type: i1$4.Router }], propDecorators: { taonAdminEditModeDataChanged: [{
6043
- type: Output
6044
- }], taonAdminEditModeData: [{
6045
- type: Input
6046
- }] } });
6047
- ;
6048
- ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.ts
6049
-
6050
- class TaonFileGeneralOptComponent {
6051
- constructor() {
6052
- this.height = 100;
6053
- this.handlers = [];
6054
- this.fieldsOrder = [];
6055
- this.fields = [
6056
- {
6057
- key: 'width',
6058
- },
6059
- {
6060
- key: 'height',
6061
- },
6062
- {
6063
- key: 'display',
6064
- },
6065
- {
6066
- key: 'widthUnit',
6067
- },
6068
- {
6069
- key: 'heightUnit', // @ts-ignore
6070
- },
6071
- {
6072
- key: 'action',
6073
- type: 'action',
6074
- templateOptions: {
6075
- label: 'Reset',
6076
- icon: 'cancel',
6077
- raised: true,
6078
- action: () => {
6079
- console.log('reset');
6080
- },
6081
- },
6082
- },
6083
- ].map(f => {
6084
- f.className = 'formly-field-half-size';
6085
- return f;
6086
- });
6087
- }
6088
- ngOnInit() { }
6089
- ngOnDestroy() {
6090
- this.handlers.forEach(h => h.unsubscribe());
6091
- }
6092
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6093
- 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"] }); }
6094
- }
6095
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptComponent, decorators: [{
6096
- type: Component,
6097
- 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"] }]
6098
- }], ctorParameters: () => [], propDecorators: { height: [{
6099
- type: HostBinding,
6100
- args: ['style.minHeight.px']
6101
- }, {
6102
- type: Input
6103
- }], file: [{
6104
- type: Input
6105
- }] } });
6106
- ;
6107
- ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.ts
6108
-
6109
- class TaonFileGeneralOptModule {
6110
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6111
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptModule, declarations: [TaonFileGeneralOptComponent], imports: [CommonModule, TaonFullMaterialModule], exports: [TaonFileGeneralOptComponent] }); }
6112
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptModule, imports: [CommonModule, TaonFullMaterialModule] }); }
6113
- }
6114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptModule, decorators: [{
6115
- type: NgModule,
6116
- args: [{
6117
- imports: [CommonModule, TaonFullMaterialModule],
6118
- declarations: [TaonFileGeneralOptComponent],
6119
- exports: [TaonFileGeneralOptComponent],
6120
- }]
6121
- }] });
6122
- ;
6123
- ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.ts
6124
-
6125
- ;
6126
- ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.ts
6127
-
6128
- class TaonAdminEditModeModule {
6129
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6130
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeModule, declarations: [TaonAdminEditModeComponent], imports: [CommonModule,
6131
- StaticColumnsModule,
6132
- NgScrollbarModule,
6133
- TaonFileGeneralOptModule,
6134
- FormsModule,
6135
- NgArrayPipesModule,
6136
- TaonTableModule,
6137
- TaonFullMaterialModule], exports: [TaonAdminEditModeComponent] }); }
6138
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeModule, imports: [CommonModule,
6139
- StaticColumnsModule,
6140
- NgScrollbarModule,
6141
- TaonFileGeneralOptModule,
6142
- FormsModule,
6143
- NgArrayPipesModule,
6144
- TaonTableModule,
6145
- TaonFullMaterialModule] }); }
6146
- }
6147
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeModule, decorators: [{
6148
- type: NgModule,
6149
- args: [{
6150
- imports: [
6151
- CommonModule,
6152
- StaticColumnsModule,
6153
- NgScrollbarModule,
6154
- TaonFileGeneralOptModule,
6155
- FormsModule,
6156
- NgArrayPipesModule,
6157
- TaonTableModule,
6158
- TaonFullMaterialModule, // TODO import only partial things
6159
- ],
6160
- declarations: [TaonAdminEditModeComponent],
6161
- exports: [TaonAdminEditModeComponent],
6162
- }]
6163
- }] });
6164
- ;
6165
- ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.ts
6166
-
6167
- ;
6168
- ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.ts
6169
-
6170
- class TaonAdminModeConfigurationModule {
6171
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6172
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationModule, declarations: [TaonAdminModeConfigurationComponent], imports: [CommonModule,
6173
- StaticColumnsModule,
6174
- FormsModule,
6175
- NgScrollbarModule,
6176
- TaonAdminEditModeModule,
6177
- TaonProgressBarModule,
6178
- TaonNotificationsModule,
6179
- TaonFullMaterialModule, // TODO import only partial things
6180
- TaonSessionPasscodeComponent], exports: [TaonAdminModeConfigurationComponent] }); }
6181
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationModule, imports: [CommonModule,
6182
- StaticColumnsModule,
6183
- FormsModule,
6184
- NgScrollbarModule,
6185
- TaonAdminEditModeModule,
6186
- TaonProgressBarModule,
6187
- TaonNotificationsModule,
6188
- TaonFullMaterialModule, // TODO import only partial things
6189
- TaonSessionPasscodeComponent] }); }
6190
- }
6191
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationModule, decorators: [{
6192
- type: NgModule,
6193
- args: [{
6194
- imports: [
6195
- CommonModule,
6196
- StaticColumnsModule,
6197
- FormsModule,
6198
- NgScrollbarModule,
6199
- TaonAdminEditModeModule,
6200
- TaonProgressBarModule,
6201
- TaonNotificationsModule,
6202
- TaonFullMaterialModule, // TODO import only partial things
6203
- TaonSessionPasscodeComponent,
6204
- ],
6205
- declarations: [TaonAdminModeConfigurationComponent],
6206
- exports: [TaonAdminModeConfigurationComponent],
6207
- }]
6208
- }] });
6209
- ;
6210
- ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.ts
6211
-
6212
6464
  ;
6213
6465
  ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/index.ts
6214
6466
 
@@ -6228,6 +6480,7 @@ var Taon;
6228
6480
  Taon.Provider = TaonProvider;
6229
6481
  Taon.Repository = TaonRepository;
6230
6482
  Taon.Subscriber = TaonSubscriber;
6483
+ Taon.Migration = TaonMigration;
6231
6484
  Taon.isBrowser = coreHelpers.Helpers.isBrowser;
6232
6485
  Taon.isNode = coreHelpers.Helpers.isNode;
6233
6486
  Taon.isWebSQL = coreHelpers.Helpers.isWebSQL;
@@ -6264,5 +6517,5 @@ var Taon;
6264
6517
  * Generated bundle index. Do not edit.
6265
6518
  */
6266
6519
 
6267
- 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 };
6520
+ export { BaseContext, BaseController, BaseEntity, BaseMigration, BaseProvider, BaseRepository, ClassHelpers, Models, SafePipe, Taon, TaonAdminModeConfigurationComponent, TaonFullMaterialModule, TaonGithubForkMeCornerComponent, TaonGithubForkMeCornerModule, TaonInjectHTMLDirective, TaonLongPress, TaonNotificationOptions, TaonNotificationsComponent, TaonNotificationsModule, TaonNotificationsService, TaonProgressBarComponent, TaonProgressBarModule, TaonSessionPasscodeComponent, TaonTableComponent, TaonTableModule, createContext, inject };
6268
6521
  //# sourceMappingURL=taon.mjs.map