taon 18.0.20 → 18.0.22

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 (290) hide show
  1. package/README.md +3 -7
  2. package/assets/shared/logo-header-admin-mode.png +0 -0
  3. package/assets/shared/shared_folder_info.txt +1 -1
  4. package/browser/esm2022/lib/base-classes/base-class.mjs +2 -2
  5. package/browser/esm2022/lib/base-classes/base-controller.mjs +3 -2
  6. package/browser/esm2022/lib/base-classes/base-migration.mjs +23 -0
  7. package/browser/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +20 -20
  8. package/browser/esm2022/lib/base-classes/base.mjs +3 -1
  9. package/browser/esm2022/lib/context-db-migrations.mjs +425 -0
  10. package/browser/esm2022/lib/create-context.mjs +17 -4
  11. package/browser/esm2022/lib/decorators/classes/controller-decorator.mjs +4 -1
  12. package/browser/esm2022/lib/decorators/classes/entity-decorator.mjs +4 -1
  13. package/browser/esm2022/lib/decorators/classes/migration-decorator.mjs +18 -0
  14. package/browser/esm2022/lib/decorators/classes/provider-decorator.mjs +4 -1
  15. package/browser/esm2022/lib/decorators/classes/repository-decorator.mjs +4 -1
  16. package/browser/esm2022/lib/decorators/classes/subscriber-decorator.mjs +5 -2
  17. package/browser/esm2022/lib/endpoint-context.mjs +83 -49
  18. package/browser/esm2022/lib/index.mjs +4 -1
  19. package/browser/esm2022/lib/inject.mjs +1 -1
  20. package/browser/esm2022/lib/models.mjs +30 -1
  21. package/browser/esm2022/lib/symbols.mjs +2 -1
  22. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +1 -3
  23. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +55 -37
  24. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +17 -21
  25. package/browser/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +1 -1
  26. package/browser/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +1 -1
  27. package/browser/esm2022/lib/ui/taon-table/taon-table.component.mjs +1 -2
  28. package/browser/fesm2022/taon.mjs +688 -420
  29. package/browser/fesm2022/taon.mjs.map +1 -1
  30. package/browser/lib/base-classes/base-class.d.ts +1 -1
  31. package/browser/lib/base-classes/base-context.d.ts +3 -0
  32. package/browser/lib/base-classes/base-controller.d.ts +2 -1
  33. package/browser/lib/base-classes/base-migration.d.ts +12 -0
  34. package/browser/lib/base-classes/base.d.ts +5 -0
  35. package/browser/lib/context-db-migrations.d.ts +18 -0
  36. package/browser/lib/create-context.d.ts +4 -1
  37. package/browser/lib/decorators/classes/controller-decorator.d.ts +3 -0
  38. package/browser/lib/decorators/classes/entity-decorator.d.ts +3 -0
  39. package/browser/lib/decorators/classes/migration-decorator.d.ts +8 -0
  40. package/browser/lib/decorators/classes/provider-decorator.d.ts +3 -0
  41. package/browser/lib/decorators/classes/repository-decorator.d.ts +3 -0
  42. package/browser/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  43. package/browser/lib/endpoint-context.d.ts +12 -5
  44. package/browser/lib/index.d.ts +14 -1
  45. package/browser/lib/models.d.ts +44 -19
  46. package/browser/lib/symbols.d.ts +1 -0
  47. package/browser/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  48. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +5 -8
  49. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +8 -8
  50. package/client/esm2022/lib/base-classes/base-class.mjs +2 -2
  51. package/client/esm2022/lib/base-classes/base-controller.mjs +3 -2
  52. package/client/esm2022/lib/base-classes/base-migration.mjs +23 -0
  53. package/client/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +20 -20
  54. package/client/esm2022/lib/base-classes/base.mjs +3 -1
  55. package/client/esm2022/lib/context-db-migrations.mjs +425 -0
  56. package/client/esm2022/lib/create-context.mjs +17 -4
  57. package/client/esm2022/lib/decorators/classes/controller-decorator.mjs +4 -1
  58. package/client/esm2022/lib/decorators/classes/entity-decorator.mjs +4 -1
  59. package/client/esm2022/lib/decorators/classes/migration-decorator.mjs +18 -0
  60. package/client/esm2022/lib/decorators/classes/provider-decorator.mjs +4 -1
  61. package/client/esm2022/lib/decorators/classes/repository-decorator.mjs +4 -1
  62. package/client/esm2022/lib/decorators/classes/subscriber-decorator.mjs +5 -2
  63. package/client/esm2022/lib/endpoint-context.mjs +83 -49
  64. package/client/esm2022/lib/index.mjs +4 -1
  65. package/client/esm2022/lib/inject.mjs +1 -1
  66. package/client/esm2022/lib/models.mjs +30 -1
  67. package/client/esm2022/lib/symbols.mjs +2 -1
  68. package/client/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +1 -3
  69. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +55 -37
  70. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +17 -21
  71. package/client/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +1 -1
  72. package/client/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +1 -1
  73. package/client/esm2022/lib/ui/taon-table/taon-table.component.mjs +1 -2
  74. package/client/fesm2022/taon.mjs +688 -420
  75. package/client/fesm2022/taon.mjs.map +1 -1
  76. package/client/lib/base-classes/base-class.d.ts +1 -1
  77. package/client/lib/base-classes/base-context.d.ts +3 -0
  78. package/client/lib/base-classes/base-controller.d.ts +2 -1
  79. package/client/lib/base-classes/base-migration.d.ts +12 -0
  80. package/client/lib/base-classes/base.d.ts +5 -0
  81. package/client/lib/context-db-migrations.d.ts +18 -0
  82. package/client/lib/create-context.d.ts +4 -1
  83. package/client/lib/decorators/classes/controller-decorator.d.ts +3 -0
  84. package/client/lib/decorators/classes/entity-decorator.d.ts +3 -0
  85. package/client/lib/decorators/classes/migration-decorator.d.ts +8 -0
  86. package/client/lib/decorators/classes/provider-decorator.d.ts +3 -0
  87. package/client/lib/decorators/classes/repository-decorator.d.ts +3 -0
  88. package/client/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  89. package/client/lib/endpoint-context.d.ts +12 -5
  90. package/client/lib/index.d.ts +14 -1
  91. package/client/lib/models.d.ts +44 -19
  92. package/client/lib/symbols.d.ts +1 -0
  93. package/client/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  94. package/client/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +5 -8
  95. package/client/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +8 -8
  96. package/lib/base-classes/base-class.d.ts +1 -1
  97. package/lib/base-classes/base-class.js +1 -1
  98. package/lib/base-classes/base-context.d.ts +3 -0
  99. package/lib/base-classes/base-controller.d.ts +2 -1
  100. package/lib/base-classes/base-controller.js +2 -1
  101. package/lib/base-classes/base-controller.js.map +1 -1
  102. package/lib/base-classes/base-migration.d.ts +11 -0
  103. package/lib/base-classes/base-migration.js +41 -0
  104. package/lib/base-classes/base-migration.js.map +1 -0
  105. package/lib/base-classes/base-repository.js +4 -4
  106. package/lib/base-classes/base-repository.js.map +1 -1
  107. package/lib/base-classes/base-subscriber-for-entity.js +19 -19
  108. package/lib/base-classes/base-subscriber-for-entity.js.map +1 -1
  109. package/lib/base-classes/base.d.ts +5 -0
  110. package/lib/base-classes/base.js +2 -0
  111. package/lib/base-classes/base.js.map +1 -1
  112. package/lib/context-db-migrations.d.ts +17 -0
  113. package/lib/context-db-migrations.js +605 -0
  114. package/lib/context-db-migrations.js.map +1 -0
  115. package/lib/create-context.d.ts +4 -1
  116. package/lib/create-context.js +30 -21
  117. package/lib/create-context.js.map +1 -1
  118. package/lib/decorators/classes/controller-decorator.d.ts +3 -0
  119. package/lib/decorators/classes/controller-decorator.js +3 -0
  120. package/lib/decorators/classes/controller-decorator.js.map +1 -1
  121. package/lib/decorators/classes/entity-decorator.d.ts +3 -0
  122. package/lib/decorators/classes/entity-decorator.js +3 -0
  123. package/lib/decorators/classes/entity-decorator.js.map +1 -1
  124. package/lib/decorators/classes/migration-decorator.d.ts +7 -0
  125. package/lib/decorators/classes/migration-decorator.js +27 -0
  126. package/lib/decorators/classes/migration-decorator.js.map +1 -0
  127. package/lib/decorators/classes/provider-decorator.d.ts +3 -0
  128. package/lib/decorators/classes/provider-decorator.js +3 -0
  129. package/lib/decorators/classes/provider-decorator.js.map +1 -1
  130. package/lib/decorators/classes/repository-decorator.d.ts +3 -0
  131. package/lib/decorators/classes/repository-decorator.js +3 -0
  132. package/lib/decorators/classes/repository-decorator.js.map +1 -1
  133. package/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  134. package/lib/decorators/classes/subscriber-decorator.js +4 -1
  135. package/lib/decorators/classes/subscriber-decorator.js.map +1 -1
  136. package/lib/endpoint-context.d.ts +12 -5
  137. package/lib/endpoint-context.js +234 -189
  138. package/lib/endpoint-context.js.map +1 -1
  139. package/lib/index.d.ts +14 -1
  140. package/lib/index.js +5 -1
  141. package/lib/index.js.map +1 -1
  142. package/lib/inject.js +0 -2
  143. package/lib/inject.js.map +1 -1
  144. package/lib/models.d.ts +44 -19
  145. package/lib/models.js +45 -0
  146. package/lib/models.js.map +1 -1
  147. package/lib/symbols.d.ts +1 -0
  148. package/lib/symbols.js +1 -0
  149. package/lib/symbols.js.map +1 -1
  150. package/lib/ui/directives/index.js +2 -2
  151. package/lib/ui/index.js +2 -2
  152. package/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  153. package/lib/ui/taon-admin-mode-configuration/index.js +2 -2
  154. package/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +4 -7
  155. package/lib/ui/taon-admin-mode-configuration/{models/taon-admin-mode-tabs.js → taon-admin.models.js} +1 -1
  156. package/lib/ui/taon-admin-mode-configuration/taon-admin.models.js.map +1 -0
  157. package/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +6 -6
  158. package/lib/ui/taon-github-fork-me-corner/index.js +2 -2
  159. package/lib/ui/taon-github-fork-me-ribbon/index.js +2 -2
  160. package/lib/ui/taon-notifications/taon-notifications.models.js +2 -2
  161. package/lib/ui/taon-progress-bar/index.js +2 -2
  162. package/lib/ui/taon-session-passcode/index.js +2 -2
  163. package/lib/ui/taon-table/index.js +2 -2
  164. package/migrations/index.d.ts +1 -0
  165. package/migrations/index.js +6 -0
  166. package/migrations/index.js.map +1 -0
  167. package/migrations/migrations_index._auto-generated_.d.ts +0 -0
  168. package/migrations/migrations_index._auto-generated_.js +4 -0
  169. package/migrations/migrations_index._auto-generated_.js.map +1 -0
  170. package/package.json +7 -7
  171. package/tmp-environment.json +32 -29
  172. package/websql/esm2022/lib/base-classes/base-class.mjs +2 -2
  173. package/websql/esm2022/lib/base-classes/base-controller.mjs +3 -2
  174. package/websql/esm2022/lib/base-classes/base-migration.mjs +23 -0
  175. package/websql/esm2022/lib/base-classes/base-repository.mjs +5 -5
  176. package/websql/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +20 -20
  177. package/websql/esm2022/lib/base-classes/base.mjs +3 -1
  178. package/websql/esm2022/lib/context-db-migrations.mjs +274 -0
  179. package/websql/esm2022/lib/create-context.mjs +17 -4
  180. package/websql/esm2022/lib/decorators/classes/controller-decorator.mjs +4 -1
  181. package/websql/esm2022/lib/decorators/classes/entity-decorator.mjs +4 -1
  182. package/websql/esm2022/lib/decorators/classes/migration-decorator.mjs +18 -0
  183. package/websql/esm2022/lib/decorators/classes/provider-decorator.mjs +4 -1
  184. package/websql/esm2022/lib/decorators/classes/repository-decorator.mjs +4 -1
  185. package/websql/esm2022/lib/decorators/classes/subscriber-decorator.mjs +5 -2
  186. package/websql/esm2022/lib/endpoint-context.mjs +117 -85
  187. package/websql/esm2022/lib/index.mjs +4 -1
  188. package/websql/esm2022/lib/inject.mjs +1 -1
  189. package/websql/esm2022/lib/models.mjs +28 -1
  190. package/websql/esm2022/lib/symbols.mjs +2 -1
  191. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +1 -3
  192. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +55 -37
  193. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +17 -21
  194. package/websql/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +1 -1
  195. package/websql/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +1 -1
  196. package/websql/esm2022/lib/ui/taon-table/taon-table.component.mjs +1 -2
  197. package/websql/fesm2022/taon.mjs +569 -460
  198. package/websql/fesm2022/taon.mjs.map +1 -1
  199. package/websql/lib/base-classes/base-class.d.ts +1 -1
  200. package/websql/lib/base-classes/base-context.d.ts +3 -0
  201. package/websql/lib/base-classes/base-controller.d.ts +2 -1
  202. package/websql/lib/base-classes/base-migration.d.ts +12 -0
  203. package/websql/lib/base-classes/base.d.ts +5 -0
  204. package/websql/lib/context-db-migrations.d.ts +18 -0
  205. package/websql/lib/create-context.d.ts +4 -1
  206. package/websql/lib/decorators/classes/controller-decorator.d.ts +3 -0
  207. package/websql/lib/decorators/classes/entity-decorator.d.ts +3 -0
  208. package/websql/lib/decorators/classes/migration-decorator.d.ts +8 -0
  209. package/websql/lib/decorators/classes/provider-decorator.d.ts +3 -0
  210. package/websql/lib/decorators/classes/repository-decorator.d.ts +3 -0
  211. package/websql/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  212. package/websql/lib/endpoint-context.d.ts +12 -5
  213. package/websql/lib/index.d.ts +14 -1
  214. package/websql/lib/models.d.ts +44 -19
  215. package/websql/lib/symbols.d.ts +1 -0
  216. package/websql/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  217. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +5 -8
  218. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +8 -8
  219. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +0 -5
  220. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +0 -115
  221. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +0 -50
  222. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +0 -5
  223. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +0 -61
  224. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +0 -21
  225. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +0 -4
  226. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +0 -32
  227. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +0 -54
  228. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -3
  229. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -33
  230. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -16
  231. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -3
  232. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -17
  233. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -10
  234. package/browser/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +0 -6
  235. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -18
  236. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -17
  237. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +0 -5
  238. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +0 -115
  239. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +0 -50
  240. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +0 -5
  241. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +0 -61
  242. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +0 -21
  243. package/client/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +0 -4
  244. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +0 -32
  245. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +0 -54
  246. package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -3
  247. package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -33
  248. package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -16
  249. package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -3
  250. package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -17
  251. package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -10
  252. package/client/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +0 -6
  253. package/client/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -18
  254. package/client/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -17
  255. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -2
  256. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.js +0 -5
  257. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.js.map +0 -1
  258. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -29
  259. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -2
  260. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.d.ts +0 -1
  261. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.js +0 -5
  262. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.js.map +0 -1
  263. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/taon-db-admin.component.d.ts +0 -8
  264. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -2
  265. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.js +0 -5
  266. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.js.map +0 -1
  267. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -13
  268. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -2
  269. package/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.js.map +0 -1
  270. package/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -14
  271. package/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -2
  272. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +0 -5
  273. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +0 -115
  274. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +0 -50
  275. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +0 -5
  276. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +0 -61
  277. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +0 -21
  278. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +0 -4
  279. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +0 -32
  280. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +0 -54
  281. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -3
  282. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -33
  283. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -16
  284. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -3
  285. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -17
  286. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -10
  287. package/websql/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +0 -6
  288. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -18
  289. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -17
  290. /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,438 @@ 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
+ /* */
3018
+ return (void 0);
3019
+ }
3020
+ async logSelectALl(name, queryRunner) {
3021
+ console.log(name, (await queryRunner.query(`SELECT * FROM ${this.DEFAULT_MIGRATION_TABLE_NAME} WHERE context = $1`, [this.ctx.contextName])).map(m => m.name));
3022
+ }
3023
+ async revertMigrationToTimestamp(timestamp) {
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
+ /* */
3115
+ /* */
3116
+ /* */
3117
+ /* */
3118
+ /* */
3119
+ return (void 0);
3120
+ }
3121
+ async clearMigrationTable() {
3122
+ /* */
3123
+ /* */
3124
+ /* */
3125
+ /* */
3126
+ /* */
3127
+ /* */
3128
+ /* */
3129
+ /* */
3130
+ /* */
3131
+ /* */
3132
+ /* */
3133
+ /* */
3134
+ /* */
3135
+ /* */
3136
+ /* */
3137
+ /* */
3138
+ /* */
3139
+ /* */
3140
+ return (void 0);
3141
+ }
3142
+ async markAllMigrationsAsApplied() {
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
+ /* */
3210
+ /* */
3211
+ /* */
3212
+ /* */
3213
+ /* */
3214
+ return (void 0);
3215
+ }
3216
+ async runAllNotCompletedMigrations() {
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
+ /* */
3332
+ /* */
3333
+ /* */
3334
+ /* */
3335
+ /* */
3336
+ /* */
3337
+ /* */
3338
+ /* */
3339
+ /* */
3340
+ /* */
3341
+ /* */
3342
+ /* */
3343
+ /* */
3344
+ /* */
3345
+ /* */
3346
+ return (void 0);
3347
+ }
3348
+ }
3349
+ ;
3350
+ ({}); // @--end-of-file-for-module=taon lib/context-db-migrations.ts
3351
+
2901
3352
  /* eslint-disable @typescript-eslint/typedef */
2902
3353
  class EndpointContext {
2903
3354
  static initNgZone(ngZone) {
2904
3355
  this.ngZone = ngZone;
2905
3356
  }
3357
+ get isRunOrRevertOnlyMigrationAppStart() {
3358
+ return !!(this.onlyMigrationRun || this.onlyMigrationRevertToTimestamp);
3359
+ }
2906
3360
  get realtimeClient() {
2907
3361
  return this.realtime.client;
2908
3362
  }
@@ -2933,6 +3387,12 @@ class EndpointContext {
2933
3387
  }
2934
3388
  return this.config?.logs === true;
2935
3389
  }
3390
+ get logMigrations() {
3391
+ if (_$1.isObject(this.config?.logs)) {
3392
+ return !!this.config.logs.migrations;
3393
+ }
3394
+ return this.config?.logs === true;
3395
+ }
2936
3396
  constructor(originalConfig, configFn) {
2937
3397
  this.originalConfig = originalConfig;
2938
3398
  this.configFn = configFn;
@@ -2942,6 +3402,7 @@ class EndpointContext {
2942
3402
  * (with init() function )
2943
3403
  */
2944
3404
  this.inited = false;
3405
+ this.dbMigrations = new ContextDbMigrations(this);
2945
3406
  this.localInstaceObjSymbol = Symbol('localInstaceObjSymbol');
2946
3407
  /**
2947
3408
  * all instances of classes from context
@@ -2956,12 +3417,15 @@ class EndpointContext {
2956
3417
  Models.ClassType.PROVIDER,
2957
3418
  Models.ClassType.REPOSITORY,
2958
3419
  Models.ClassType.SUBSCRIBER,
3420
+ Models.ClassType.MIGRATION,
2959
3421
  ];
2960
3422
  this.allTypesfromContexts = [
2961
3423
  ...this.injectableTypesfromContexts,
2962
3424
  Models.ClassType.ENTITY,
2963
3425
  ];
2964
3426
  this.expressApp = {};
3427
+ this.onlyMigrationRun = false;
3428
+ this.onlyMigrationRevertToTimestamp = undefined;
2965
3429
  this.entitiesTriggers = {};
2966
3430
  this.cloneClassWithNewMetadata = ({ BaseClass, className, config, ctx, classType, }) => {
2967
3431
  const cloneClass = () => {
@@ -3029,9 +3493,16 @@ class EndpointContext {
3029
3493
  };
3030
3494
  }
3031
3495
  async init(options) {
3032
- const { initFromRecrusiveContextResovle, overrideHost, overrideRemoteHost, } = options || {}; // TODO use it ?
3496
+ const { initFromRecrusiveContextResovle, overrideHost, overrideRemoteHost, onlyMigrationRun, onlyMigrationRevertToTimestamp, } = options || {}; // TODO use it ?
3033
3497
  this.inited = true;
3498
+ // @ts-ignore
3499
+ this.onlyMigrationRun = onlyMigrationRun;
3500
+ // @ts-ignore
3501
+ this.onlyMigrationRevertToTimestamp = onlyMigrationRevertToTimestamp;
3034
3502
  this.config = this.configFn(ENV$2);
3503
+ if (_$1.isObject(this.config.database)) {
3504
+ this.config.database = Models.DatabaseConfig.from(this.config.database).databaseConfigTypeORM;
3505
+ }
3035
3506
  if (overrideHost && overrideRemoteHost) {
3036
3507
  Helpers.throw(`[taon-config] You can't have overrideHost and overrideRemoteHost at the same time`);
3037
3508
  }
@@ -3098,6 +3569,7 @@ class EndpointContext {
3098
3569
  this.config.repositories = this.config.repositories || {};
3099
3570
  this.config.providers = this.config.providers || {};
3100
3571
  this.config.subscribers = this.config.subscribers || {};
3572
+ this.config.migrations = this.config.migrations || {};
3101
3573
  this.config.entities = {
3102
3574
  ...(await this.getRecrusiveClassesfromContextsObj(Models.ClassType.ENTITY)),
3103
3575
  ...this.config.entities,
@@ -3118,6 +3590,10 @@ class EndpointContext {
3118
3590
  ...(await this.getRecrusiveClassesfromContextsObj(Models.ClassType.REPOSITORY)),
3119
3591
  ...this.config.repositories,
3120
3592
  };
3593
+ this.config.migrations = {
3594
+ ...(await this.getRecrusiveClassesfromContextsObj(Models.ClassType.MIGRATION)),
3595
+ ...this.config.migrations,
3596
+ };
3121
3597
  this.config.controllers = this.cloneClassesObjWithNewMetadata({
3122
3598
  classesInput: this.config.controllers,
3123
3599
  config: this.config,
@@ -3142,6 +3618,12 @@ class EndpointContext {
3142
3618
  ctx: this,
3143
3619
  classType: Models.ClassType.SUBSCRIBER,
3144
3620
  });
3621
+ this.config.migrations = this.cloneClassesObjWithNewMetadata({
3622
+ classesInput: this.config.migrations,
3623
+ config: this.config,
3624
+ ctx: this,
3625
+ classType: Models.ClassType.MIGRATION,
3626
+ });
3145
3627
  for (const classTypeName of this.injectableTypesfromContexts) {
3146
3628
  this.classInstancesByNameObj[classTypeName] = {};
3147
3629
  this.objWithClassesInstancesArr[classTypeName] = [];
@@ -3149,35 +3631,37 @@ class EndpointContext {
3149
3631
  for (const classTypeName of this.injectableTypesfromContexts) {
3150
3632
  await this.createInstances(this.config[Models.ClassTypeKey[classTypeName]], classTypeName);
3151
3633
  }
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);
3634
+ if (!this.isRunOrRevertOnlyMigrationAppStart) {
3635
+ if (this.mode === 'backend-frontend(tcp+udp)' && !this.config.abstract) {
3636
+ /* */
3637
+ /* */
3638
+ /* */
3639
+ /* */
3640
+ /* */
3641
+ /* */
3642
+ /* */
3643
+ /* */
3644
+ /* */
3645
+ /* */
3646
+ /* */
3647
+ /* */
3648
+ /* */
3649
+ /* */
3650
+ /* */
3651
+ /* */
3652
+ /* */
3653
+ /* */
3654
+ /* */
3655
+ }
3656
+ if (!this.config.abstract) {
3657
+ this.disabledRealtime = !!this.config.disabledRealtime;
3658
+ /* */
3659
+ /* */
3660
+ /* */
3661
+ /* */
3662
+ /* */
3663
+ this.realtime = new RealtimeCore(this);
3664
+ }
3181
3665
  }
3182
3666
  if (this.config.abstract) {
3183
3667
  this.logFramework &&
@@ -3265,21 +3749,6 @@ class EndpointContext {
3265
3749
  /* */
3266
3750
  /* */
3267
3751
  /* */
3268
- /* */
3269
- /* */
3270
- /* */
3271
- /* */
3272
- /* */
3273
- /* */
3274
- /* */
3275
- /* */
3276
- /* */
3277
- /* */
3278
- /* */
3279
- /* */
3280
- /* */
3281
- /* */
3282
- /* */
3283
3752
  return (void 0);
3284
3753
  }
3285
3754
  get ngZone() {
@@ -3440,6 +3909,8 @@ class EndpointContext {
3440
3909
  return this.config.repositories;
3441
3910
  case Models.ClassType.SUBSCRIBER:
3442
3911
  return this.config.subscribers;
3912
+ case Models.ClassType.MIGRATION:
3913
+ return this.config.migrations;
3443
3914
  }
3444
3915
  }
3445
3916
  isCLassType(classType, classFn) {
@@ -3478,7 +3949,7 @@ class EndpointContext {
3478
3949
  }
3479
3950
  }
3480
3951
  async reinitControllers() {
3481
- if (this.remoteHost) {
3952
+ if (this.remoteHost || Object.keys(this.config.migrations).length > 0) {
3482
3953
  return;
3483
3954
  }
3484
3955
  const controllers = this.getClassesInstancesArrBy(Models.ClassType.CONTROLLER);
@@ -3500,6 +3971,7 @@ class EndpointContext {
3500
3971
  Models.ClassType.REPOSITORY,
3501
3972
  Models.ClassType.CONTROLLER,
3502
3973
  Models.ClassType.ENTITY,
3974
+ Models.ClassType.MIGRATION,
3503
3975
  ]) {
3504
3976
  for (const classFun of this.getClassFunByArr(classTypeName)) {
3505
3977
  if (_$1.isFunction(classFun._)) {
@@ -3514,6 +3986,7 @@ class EndpointContext {
3514
3986
  Models.ClassType.PROVIDER,
3515
3987
  Models.ClassType.REPOSITORY,
3516
3988
  Models.ClassType.CONTROLLER,
3989
+ Models.ClassType.MIGRATION,
3517
3990
  ]) {
3518
3991
  for (const ctrl of this.getClassesInstancesArrBy(classTypeName)) {
3519
3992
  if (_$1.isFunction(ctrl._)) {
@@ -3699,9 +4172,20 @@ class EndpointContext {
3699
4172
  /* */
3700
4173
  /* */
3701
4174
  /* */
4175
+ /* */
4176
+ /* */
4177
+ /* */
4178
+ /* */
4179
+ /* */
4180
+ /* */
4181
+ /* */
4182
+ /* */
3702
4183
  return (void 0);
3703
4184
  }
3704
- initMetadata() {
4185
+ initControllers() {
4186
+ if (this.isRunOrRevertOnlyMigrationAppStart) {
4187
+ return;
4188
+ }
3705
4189
  const allControllers = this.getClassFunByArr(Models.ClassType.CONTROLLER);
3706
4190
  for (const controllerClassFn of allControllers) {
3707
4191
  controllerClassFn[Symbols.classMethodsNames] =
@@ -3781,7 +4265,7 @@ class EndpointContext {
3781
4265
  }
3782
4266
  }
3783
4267
  writeActiveRoutes() {
3784
- if (this.remoteHost) {
4268
+ if (this.remoteHost || this.isRunOrRevertOnlyMigrationAppStart) {
3785
4269
  return;
3786
4270
  }
3787
4271
  const contexts = [this];
@@ -4539,25 +5023,19 @@ instead
4539
5023
  ;
4540
5024
  ({}); // @--end-of-file-for-module=taon lib/endpoint-context.ts
4541
5025
 
4542
- const globalPublicStorage = Helpers.isBrowser ? window : global;
4543
- ;
4544
- ({}); // @--end-of-file-for-module=taon lib/storage.ts
4545
-
4546
5026
  const ENV$1 = Helpers.isBrowser ? window['ENV'] : global['ENV'];
4547
- class TaonAdmin {
5027
+ class TaonAdminService {
5028
+ static get Instance() {
5029
+ return this._instance;
5030
+ }
4548
5031
  constructor() {
4549
5032
  this.scrollableEnabled = false; // TOOD false by default
4550
5033
  this.onEditMode = new Subject();
4551
5034
  this.onEditMode$ = this.onEditMode.asObservable();
4552
5035
  this.enabledTabs = [];
5036
+ TaonAdminService._instance = this;
4553
5037
  this.scrollableEnabled = !!ENV$1?.useGlobalNgxScrollbar;
4554
5038
  }
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
5039
  setEditMode(value) {
4562
5040
  this.onEditMode.next(value);
4563
5041
  }
@@ -4573,26 +5051,26 @@ class TaonAdmin {
4573
5051
  this.adminPanelIsOpen = true;
4574
5052
  }
4575
5053
  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' }); }
5054
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5055
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, providedIn: 'root' }); }
4578
5056
  }
4579
5057
  __decorate([
4580
- Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false),
5058
+ (Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
4581
5059
  __metadata("design:type", Boolean)
4582
- ], TaonAdmin.prototype, "adminPanelIsOpen", void 0);
5060
+ ], TaonAdminService.prototype, "adminPanelIsOpen", void 0);
4583
5061
  __decorate([
4584
- Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false),
5062
+ (Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
4585
5063
  __metadata("design:type", Boolean)
4586
- ], TaonAdmin.prototype, "draggablePopupMode", void 0);
5064
+ ], TaonAdminService.prototype, "draggablePopupMode", void 0);
4587
5065
  __decorate([
4588
- Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false),
5066
+ (Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
4589
5067
  __metadata("design:type", Boolean)
4590
- ], TaonAdmin.prototype, "draggablePopupModeFullScreen", void 0);
5068
+ ], TaonAdminService.prototype, "draggablePopupModeFullScreen", void 0);
4591
5069
  __decorate([
4592
- Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false),
5070
+ (Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
4593
5071
  __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: [{
5072
+ ], TaonAdminService.prototype, "keepWebsqlDbDataAfterReload", void 0);
5073
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, decorators: [{
4596
5074
  type: Injectable,
4597
5075
  args: [{ providedIn: 'root' }]
4598
5076
  }], ctorParameters: () => [] });
@@ -4616,6 +5094,9 @@ const createContext = (configFn) => {
4616
5094
  get subscribers() {
4617
5095
  return config.subscribers;
4618
5096
  },
5097
+ get migrations() {
5098
+ return config.migrations;
5099
+ },
4619
5100
  },
4620
5101
  get contexts() {
4621
5102
  return config.contexts;
@@ -4665,14 +5146,15 @@ const createContext = (configFn) => {
4665
5146
  await endpointContextRef.initEntities();
4666
5147
  await endpointContextRef.initSubscribers();
4667
5148
  await endpointContextRef.initDatabaseConnection();
4668
- endpointContextRef.initMetadata();
5149
+ await endpointContextRef.dbMigrations.ensureMigrationTableExists();
5150
+ endpointContextRef.initControllers();
4669
5151
  endpointContextRef.startServer();
4670
5152
  /* */
4671
5153
  /* */
4672
5154
  await endpointContextRef.initClasses();
4673
5155
  let keepWebsqlDbDataAfterReload = false;
4674
5156
  keepWebsqlDbDataAfterReload =
4675
- TaonAdmin.Instance.keepWebsqlDbDataAfterReload;
5157
+ TaonAdminService.Instance?.keepWebsqlDbDataAfterReload;
4676
5158
  if (!Helpers.isNode && keepWebsqlDbDataAfterReload) {
4677
5159
  Helpers.info(`[taon] Keep websql data after reload`);
4678
5160
  }
@@ -4680,6 +5162,15 @@ const createContext = (configFn) => {
4680
5162
  await endpointContextRef.reinitControllers();
4681
5163
  }
4682
5164
  ///#region TODO this may be usefull but for now
5165
+ if (endpointContextRef.onlyMigrationRun) {
5166
+ await endpointContextRef.dbMigrations.runAllNotCompletedMigrations();
5167
+ }
5168
+ else if (endpointContextRef.onlyMigrationRevertToTimestamp) {
5169
+ await endpointContextRef.dbMigrations.revertMigrationToTimestamp(endpointContextRef.onlyMigrationRevertToTimestamp);
5170
+ }
5171
+ else {
5172
+ await endpointContextRef.dbMigrations.runAllNotCompletedMigrations();
5173
+ }
4683
5174
  resolve(endpointContextRef);
4684
5175
  });
4685
5176
  });
@@ -4720,9 +5211,12 @@ var baseContext = /*#__PURE__*/Object.freeze({
4720
5211
  BaseContext: BaseContext
4721
5212
  });
4722
5213
 
5214
+ /**
5215
+ * Subscriber decorator
5216
+ */
4723
5217
  function TaonSubscriber(options) {
4724
5218
  return function (constructor) {
4725
- Reflect.defineMetadata(Symbols.metadata.options.repository, options, constructor);
5219
+ Reflect.defineMetadata(Symbols.metadata.options.subscriber, options, constructor);
4726
5220
  Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
4727
5221
  ClassHelpers.setName(constructor, options?.className);
4728
5222
  };
@@ -4737,133 +5231,133 @@ let BaseSubscriberForEntity = class BaseSubscriberForEntity extends BaseInjector
4737
5231
  * Called after entity is loaded.
4738
5232
  */
4739
5233
  afterLoad(entity) {
4740
- this.__endpoint_context__.logDb &&
5234
+ this.ctx.logDb &&
4741
5235
  console.log(`AFTER ENTITY LOADED: `, entity);
4742
5236
  }
4743
5237
  /**
4744
5238
  * Called before query execution.
4745
5239
  */
4746
5240
  beforeQuery(event) {
4747
- this.__endpoint_context__.logDb &&
5241
+ this.ctx.logDb &&
4748
5242
  console.log(`BEFORE QUERY: `, event.query);
4749
5243
  }
4750
5244
  /**
4751
5245
  * Called after query execution.
4752
5246
  */
4753
5247
  afterQuery(event) {
4754
- this.__endpoint_context__.logDb &&
5248
+ this.ctx.logDb &&
4755
5249
  console.log(`AFTER QUERY: `, event.query);
4756
5250
  }
4757
5251
  /**
4758
5252
  * Called before entity insertion.
4759
5253
  */
4760
5254
  beforeInsert(event) {
4761
- this.__endpoint_context__.logDb &&
5255
+ this.ctx.logDb &&
4762
5256
  console.log(`BEFORE ENTITY INSERTED: `, event.entity);
4763
5257
  }
4764
5258
  /**
4765
5259
  * Called after entity insertion.
4766
5260
  */
4767
5261
  afterInsert(event) {
4768
- this.__endpoint_context__.logDb &&
5262
+ this.ctx.logDb &&
4769
5263
  console.log(`AFTER ENTITY INSERTED: `, event.entity);
4770
5264
  }
4771
5265
  /**
4772
5266
  * Called before entity update.
4773
5267
  */
4774
5268
  beforeUpdate(event) {
4775
- this.__endpoint_context__.logDb &&
5269
+ this.ctx.logDb &&
4776
5270
  console.log(`BEFORE ENTITY UPDATED: `, event.entity);
4777
5271
  }
4778
5272
  /**
4779
5273
  * Called after entity update.
4780
5274
  */
4781
5275
  afterUpdate(event) {
4782
- this.__endpoint_context__.logDb &&
5276
+ this.ctx.logDb &&
4783
5277
  console.log(`AFTER ENTITY UPDATED: `, event.entity);
4784
5278
  }
4785
5279
  /**
4786
5280
  * Called before entity removal.
4787
5281
  */
4788
5282
  beforeRemove(event) {
4789
- this.__endpoint_context__.logDb &&
5283
+ this.ctx.logDb &&
4790
5284
  console.log(`BEFORE ENTITY WITH ID ${event.entityId} REMOVED: `, event.entity);
4791
5285
  }
4792
5286
  /**
4793
5287
  * Called after entity removal.
4794
5288
  */
4795
5289
  afterRemove(event) {
4796
- this.__endpoint_context__.logDb &&
5290
+ this.ctx.logDb &&
4797
5291
  console.log(`AFTER ENTITY WITH ID ${event.entityId} REMOVED: `, event.entity);
4798
5292
  }
4799
5293
  /**
4800
5294
  * Called before entity removal.
4801
5295
  */
4802
5296
  beforeSoftRemove(event) {
4803
- this.__endpoint_context__.logDb &&
5297
+ this.ctx.logDb &&
4804
5298
  console.log(`BEFORE ENTITY WITH ID ${event.entityId} SOFT REMOVED: `, event.entity);
4805
5299
  }
4806
5300
  /**
4807
5301
  * Called after entity removal.
4808
5302
  */
4809
5303
  afterSoftRemove(event) {
4810
- this.__endpoint_context__.logDb &&
5304
+ this.ctx.logDb &&
4811
5305
  console.log(`AFTER ENTITY WITH ID ${event.entityId} SOFT REMOVED: `, event.entity);
4812
5306
  }
4813
5307
  /**
4814
5308
  * Called before entity recovery.
4815
5309
  */
4816
5310
  beforeRecover(event) {
4817
- this.__endpoint_context__.logDb &&
5311
+ this.ctx.logDb &&
4818
5312
  console.log(`BEFORE ENTITY WITH ID ${event.entityId} RECOVERED: `, event.entity);
4819
5313
  }
4820
5314
  /**
4821
5315
  * Called after entity recovery.
4822
5316
  */
4823
5317
  afterRecover(event) {
4824
- this.__endpoint_context__.logDb &&
5318
+ this.ctx.logDb &&
4825
5319
  console.log(`AFTER ENTITY WITH ID ${event.entityId} RECOVERED: `, event.entity);
4826
5320
  }
4827
5321
  /**
4828
5322
  * Called before transaction start.
4829
5323
  */
4830
5324
  beforeTransactionStart(event) {
4831
- this.__endpoint_context__.logDb &&
5325
+ this.ctx.logDb &&
4832
5326
  console.log(`BEFORE TRANSACTION STARTED: `, event);
4833
5327
  }
4834
5328
  /**
4835
5329
  * Called after transaction start.
4836
5330
  */
4837
5331
  afterTransactionStart(event) {
4838
- this.__endpoint_context__.logDb &&
5332
+ this.ctx.logDb &&
4839
5333
  console.log(`AFTER TRANSACTION STARTED: `, event);
4840
5334
  }
4841
5335
  /**
4842
5336
  * Called before transaction commit.
4843
5337
  */
4844
5338
  beforeTransactionCommit(event) {
4845
- this.__endpoint_context__.logDb &&
5339
+ this.ctx.logDb &&
4846
5340
  console.log(`BEFORE TRANSACTION COMMITTED: `, event);
4847
5341
  }
4848
5342
  /**
4849
5343
  * Called after transaction commit.
4850
5344
  */
4851
5345
  afterTransactionCommit(event) {
4852
- this.__endpoint_context__.logDb &&
5346
+ this.ctx.logDb &&
4853
5347
  console.log(`AFTER TRANSACTION COMMITTED: `, event);
4854
5348
  }
4855
5349
  /**
4856
5350
  * Called before transaction rollback.
4857
5351
  */
4858
5352
  beforeTransactionRollback(event) {
4859
- this.__endpoint_context__.logDb &&
5353
+ this.ctx.logDb &&
4860
5354
  console.log(`BEFORE TRANSACTION ROLLBACK: `, event);
4861
5355
  }
4862
5356
  /**
4863
5357
  * Called after transaction rollback.
4864
5358
  */
4865
5359
  afterTransactionRollback(event) {
4866
- this.__endpoint_context__.logDb &&
5360
+ this.ctx.logDb &&
4867
5361
  console.log(`AFTER TRANSACTION ROLLBACK: `, event);
4868
5362
  }
4869
5363
  };
@@ -4875,6 +5369,26 @@ BaseSubscriberForEntity = __decorate([
4875
5369
  ;
4876
5370
  ({}); // @--end-of-file-for-module=taon lib/base-classes/base-subscriber-for-entity.ts
4877
5371
 
5372
+ class BaseMigration extends BaseInjector {
5373
+ /**
5374
+ * by default is READY to run
5375
+ */
5376
+ isReadyToRun() {
5377
+ return true;
5378
+ }
5379
+ getDescription() {
5380
+ return _$1.startCase(ClassHelpers.getName(this));
5381
+ }
5382
+ async up(queryRunner) {
5383
+ console.log(`[BaseMigration] Running migration UP "${ClassHelpers.getName(this)}"`);
5384
+ }
5385
+ async down(queryRunner) {
5386
+ console.log(`[BaseMigration] Running migration DOWN "${ClassHelpers.getName(this)}"`);
5387
+ }
5388
+ }
5389
+ ;
5390
+ ({}); // @--end-of-file-for-module=taon lib/base-classes/base-migration.ts
5391
+
4878
5392
  var Base;
4879
5393
  (function (Base) {
4880
5394
  Base.Controller = BaseController;
@@ -4885,6 +5399,7 @@ var Base;
4885
5399
  Base.Class = BaseClass;
4886
5400
  Base.Repository = BaseRepository;
4887
5401
  Base.SubscriberForEntity = BaseSubscriberForEntity;
5402
+ Base.Migration = BaseMigration;
4888
5403
  Base.Context = BaseContext;
4889
5404
  })(Base || (Base = {}));
4890
5405
  ;
@@ -4892,6 +5407,9 @@ var Base;
4892
5407
 
4893
5408
  /* */
4894
5409
  /* */
5410
+ /**
5411
+ * Entity decorator
5412
+ */
4895
5413
  function TaonEntity(options) {
4896
5414
  return function (constructor) {
4897
5415
  options = options || {};
@@ -4911,6 +5429,9 @@ class TaonEntityOptions extends Models.DecoratorAbstractOpt {
4911
5429
  ;
4912
5430
  ({}); // @--end-of-file-for-module=taon lib/decorators/classes/entity-decorator.ts
4913
5431
 
5432
+ /**
5433
+ * Provider decorator
5434
+ */
4914
5435
  function TaonProvider(options) {
4915
5436
  return function (constructor) {
4916
5437
  Reflect.defineMetadata(Symbols.metadata.options.provider, options, constructor);
@@ -4923,6 +5444,21 @@ class TaonProviderOptions extends Models.DecoratorAbstractOpt {
4923
5444
  ;
4924
5445
  ({}); // @--end-of-file-for-module=taon lib/decorators/classes/provider-decorator.ts
4925
5446
 
5447
+ /**
5448
+ * Migration decorator
5449
+ */
5450
+ function TaonMigration(options) {
5451
+ return function (constructor) {
5452
+ Reflect.defineMetadata(Symbols.metadata.options.migration, options, constructor);
5453
+ Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
5454
+ ClassHelpers.setName(constructor, options?.className);
5455
+ };
5456
+ }
5457
+ class TaonMigrationOptions extends Models.DecoratorAbstractOpt {
5458
+ }
5459
+ ;
5460
+ ({}); // @--end-of-file-for-module=taon lib/decorators/classes/migration-decorator.ts
5461
+
4926
5462
  const inject = (entity) => {
4927
5463
  return new Proxy({}, {
4928
5464
  get: (_, propName) => {
@@ -5699,7 +6235,6 @@ class TaonTableComponent {
5699
6235
  await this.retriveData();
5700
6236
  }
5701
6237
  async retriveData() {
5702
- // @ts-ignore
5703
6238
  }
5704
6239
  expansionRow(e) {
5705
6240
  this.expansionChange.next(e);
@@ -5708,7 +6243,7 @@ class TaonTableComponent {
5708
6243
  log.i('context menu event', e);
5709
6244
  }
5710
6245
  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"] }] }); }
6246
+ 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
6247
  }
5713
6248
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonTableComponent, decorators: [{
5714
6249
  type: Component,
@@ -5788,36 +6323,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
5788
6323
  ;
5789
6324
  ({}); // @--end-of-file-for-module=taon lib/ui/taon-table/index.ts
5790
6325
 
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
6326
  class TaonAdminModeConfigurationComponent {
5822
6327
  get opened() {
5823
6328
  return !this.isIframe && this.admin.adminPanelIsOpen;
@@ -5832,13 +6337,12 @@ class TaonAdminModeConfigurationComponent {
5832
6337
  }
5833
6338
  this.admin.adminPanelIsOpen = v;
5834
6339
  }
5835
- constructor(breakpointsService) {
6340
+ constructor(breakpointsService, admin) {
5836
6341
  this.breakpointsService = breakpointsService;
6342
+ this.admin = admin;
5837
6343
  this.$destroy = new Subject();
5838
6344
  this.cdr = inject$1(ChangeDetectorRef);
5839
6345
  this.taonAdminService = inject$1(TaonAdminService);
5840
- this.tabs = [];
5841
- this.admin = window['taon'];
5842
6346
  this.isWebSQLMode = Helpers.isWebSQL;
5843
6347
  this.hideTaonToolsInProduction = ENV.hideTaonToolsInProduction && ENV.angularProd;
5844
6348
  this.isIframe = window.location !== window.parent.location;
@@ -5857,7 +6361,6 @@ class TaonAdminModeConfigurationComponent {
5857
6361
  this.dragPositionZero = { x: 0, y: 0 };
5858
6362
  this.taonAdminModeConfigurationDataChanged = new EventEmitter();
5859
6363
  this.taonAdminModeConfigurationData = {};
5860
- this.admin.cmp = this;
5861
6364
  this.breakpointsService
5862
6365
  .listenTo()
5863
6366
  .pipe(takeUntil(this.$destroy))
@@ -5865,14 +6368,6 @@ class TaonAdminModeConfigurationComponent {
5865
6368
  // @ts-ignore
5866
6369
  this.isDesktop = breakpoint === 'desktop';
5867
6370
  });
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
6371
  }
5877
6372
  async ngOnInit() {
5878
6373
  await Stor.awaitPendingOperatios();
@@ -5896,6 +6391,16 @@ class TaonAdminModeConfigurationComponent {
5896
6391
  onResize(event) {
5897
6392
  this.height = window.innerHeight;
5898
6393
  }
6394
+ async reloadTabs() {
6395
+ return new Promise(resolve => {
6396
+ this.reloading = true;
6397
+ setTimeout(() => {
6398
+ this.reloading = false;
6399
+ console.log('reloading done');
6400
+ resolve();
6401
+ });
6402
+ });
6403
+ }
5899
6404
  async toogle() {
5900
6405
  this.opened = !this.opened;
5901
6406
  }
@@ -5917,37 +6422,47 @@ class TaonAdminModeConfigurationComponent {
5917
6422
  scrollTabs(event) {
5918
6423
  return;
5919
6424
  }
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"] }] }); }
6425
+ 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 }); }
6426
+ 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
6427
+ TaonSessionPasscodeComponent, selector: "taon-session-passcode", inputs: ["passcode", "message"] }] }); }
5922
6428
  }
5923
6429
  __decorate([
5924
- Stor.property.in.localstorage
6430
+ (Stor.property.in.localstorage
5925
6431
  .for(TaonAdminModeConfigurationComponent)
5926
- .withDefaultValue(0),
6432
+ .withDefaultValue(0)),
5927
6433
  __metadata("design:type", Number)
5928
6434
  ], TaonAdminModeConfigurationComponent.prototype, "dragPositionX", void 0);
5929
6435
  __decorate([
5930
- Stor.property.in.localstorage
6436
+ (Stor.property.in.localstorage
5931
6437
  .for(TaonAdminModeConfigurationComponent)
5932
- .withDefaultValue(0),
6438
+ .withDefaultValue(0)),
5933
6439
  __metadata("design:type", Number)
5934
6440
  ], TaonAdminModeConfigurationComponent.prototype, "dragPositionY", void 0);
5935
6441
  __decorate([
5936
- Stor.property.in.localstorage
6442
+ (Stor.property.in.localstorage
5937
6443
  .for(TaonAdminModeConfigurationComponent)
5938
- .withDefaultValue(0),
6444
+ .withDefaultValue(0)),
5939
6445
  __metadata("design:type", Number)
5940
6446
  ], TaonAdminModeConfigurationComponent.prototype, "selectedIndex", void 0);
5941
6447
  __decorate([
5942
- Stor.property.in.localstorage
6448
+ (Stor.property.in.localstorage
5943
6449
  .for(TaonAdminModeConfigurationComponent)
5944
- .withDefaultValue(false),
6450
+ .withDefaultValue(false)),
5945
6451
  __metadata("design:type", Boolean)
5946
6452
  ], TaonAdminModeConfigurationComponent.prototype, "wasOpenDraggablePopup", void 0);
5947
6453
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationComponent, decorators: [{
5948
6454
  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: [{
6455
+ args: [{ selector: 'taon-admin-mode-configuration', standalone: true, imports: [
6456
+ CommonModule,
6457
+ StaticColumnsModule,
6458
+ FormsModule,
6459
+ NgScrollbarModule,
6460
+ TaonProgressBarModule,
6461
+ TaonNotificationsModule,
6462
+ TaonFullMaterialModule, // TODO import only partial things
6463
+ TaonSessionPasscodeComponent,
6464
+ ], 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"] }]
6465
+ }], ctorParameters: () => [{ type: i1$3.BreakpointsService }, { type: TaonAdminService }], propDecorators: { tabGroup: [{
5951
6466
  type: ViewChild,
5952
6467
  args: ['tabGroup']
5953
6468
  }], taonAdminModeConfigurationDataChanged: [{
@@ -5961,254 +6476,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
5961
6476
  ;
5962
6477
  ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.ts
5963
6478
 
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
6479
  ;
6213
6480
  ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/index.ts
6214
6481
 
@@ -6228,6 +6495,7 @@ var Taon;
6228
6495
  Taon.Provider = TaonProvider;
6229
6496
  Taon.Repository = TaonRepository;
6230
6497
  Taon.Subscriber = TaonSubscriber;
6498
+ Taon.Migration = TaonMigration;
6231
6499
  Taon.isBrowser = coreHelpers.Helpers.isBrowser;
6232
6500
  Taon.isNode = coreHelpers.Helpers.isNode;
6233
6501
  Taon.isWebSQL = coreHelpers.Helpers.isWebSQL;
@@ -6264,5 +6532,5 @@ var Taon;
6264
6532
  * Generated bundle index. Do not edit.
6265
6533
  */
6266
6534
 
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 };
6535
+ 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
6536
  //# sourceMappingURL=taon.mjs.map