taon 18.0.19 → 18.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/README.md +114 -118
  2. package/assets/shared/logo-header-admin-mode.png +0 -0
  3. package/assets/shared/shared_folder_info.txt +1 -1
  4. package/bin/start.js +279 -279
  5. package/bin/taon +6 -6
  6. package/bin/taon-debug +5 -5
  7. package/bin/taon-debug-brk +5 -5
  8. package/browser/README.md +24 -24
  9. package/browser/esm2022/lib/base-classes/base-abstract-entity.mjs +1 -1
  10. package/browser/esm2022/lib/base-classes/base-class.mjs +2 -2
  11. package/browser/esm2022/lib/base-classes/base-controller.mjs +3 -2
  12. package/browser/esm2022/lib/base-classes/base-crud-controller.mjs +1 -1
  13. package/browser/esm2022/lib/base-classes/base-migration.mjs +23 -0
  14. package/browser/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +20 -20
  15. package/browser/esm2022/lib/base-classes/base.mjs +5 -3
  16. package/browser/esm2022/lib/context-db-migrations.mjs +410 -0
  17. package/browser/esm2022/lib/create-context.mjs +22 -8
  18. package/browser/esm2022/lib/decorators/classes/controller-decorator.mjs +4 -1
  19. package/browser/esm2022/lib/decorators/classes/entity-decorator.mjs +4 -1
  20. package/browser/esm2022/lib/decorators/classes/migration-decorator.mjs +18 -0
  21. package/browser/esm2022/lib/decorators/classes/provider-decorator.mjs +4 -1
  22. package/browser/esm2022/lib/decorators/classes/repository-decorator.mjs +4 -1
  23. package/browser/esm2022/lib/decorators/classes/subscriber-decorator.mjs +5 -2
  24. package/browser/esm2022/lib/decorators/http/http-methods-decorators.mjs +1 -1
  25. package/browser/esm2022/lib/endpoint-context.mjs +105 -59
  26. package/browser/esm2022/lib/entity-process.mjs +1 -10
  27. package/browser/esm2022/lib/get-response-value.mjs +1 -15
  28. package/browser/esm2022/lib/index.mjs +4 -1
  29. package/browser/esm2022/lib/inject.mjs +1 -1
  30. package/browser/esm2022/lib/models.mjs +30 -1
  31. package/browser/esm2022/lib/symbols.mjs +2 -1
  32. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +1 -3
  33. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +55 -37
  34. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +17 -21
  35. package/browser/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +1 -1
  36. package/browser/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +1 -1
  37. package/browser/esm2022/lib/ui/taon-table/taon-table.component.mjs +1 -2
  38. package/browser/fesm2022/taon.mjs +701 -449
  39. package/browser/fesm2022/taon.mjs.map +1 -1
  40. package/browser/lib/base-classes/base-abstract-entity.d.ts +2 -1
  41. package/browser/lib/base-classes/base-class.d.ts +1 -1
  42. package/browser/lib/base-classes/base-context.d.ts +3 -0
  43. package/browser/lib/base-classes/base-controller.d.ts +2 -1
  44. package/browser/lib/base-classes/base-crud-controller.d.ts +1 -1
  45. package/browser/lib/base-classes/base-migration.d.ts +12 -0
  46. package/browser/lib/base-classes/base.d.ts +8 -2
  47. package/browser/lib/context-db-migrations.d.ts +17 -0
  48. package/browser/lib/create-context.d.ts +7 -4
  49. package/browser/lib/decorators/classes/controller-decorator.d.ts +3 -0
  50. package/browser/lib/decorators/classes/entity-decorator.d.ts +3 -0
  51. package/browser/lib/decorators/classes/migration-decorator.d.ts +8 -0
  52. package/browser/lib/decorators/classes/provider-decorator.d.ts +3 -0
  53. package/browser/lib/decorators/classes/repository-decorator.d.ts +3 -0
  54. package/browser/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  55. package/browser/lib/decorators/http/http-methods-decorators.d.ts +9 -0
  56. package/browser/lib/endpoint-context.d.ts +14 -7
  57. package/browser/lib/index.d.ts +14 -1
  58. package/browser/lib/models.d.ts +45 -22
  59. package/browser/lib/symbols.d.ts +1 -0
  60. package/browser/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  61. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +5 -8
  62. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +8 -8
  63. package/client/README.md +24 -24
  64. package/client/esm2022/lib/base-classes/base-abstract-entity.mjs +1 -1
  65. package/client/esm2022/lib/base-classes/base-class.mjs +2 -2
  66. package/client/esm2022/lib/base-classes/base-controller.mjs +3 -2
  67. package/client/esm2022/lib/base-classes/base-crud-controller.mjs +1 -1
  68. package/client/esm2022/lib/base-classes/base-migration.mjs +23 -0
  69. package/client/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +20 -20
  70. package/client/esm2022/lib/base-classes/base.mjs +5 -3
  71. package/client/esm2022/lib/context-db-migrations.mjs +410 -0
  72. package/client/esm2022/lib/create-context.mjs +22 -8
  73. package/client/esm2022/lib/decorators/classes/controller-decorator.mjs +4 -1
  74. package/client/esm2022/lib/decorators/classes/entity-decorator.mjs +4 -1
  75. package/client/esm2022/lib/decorators/classes/migration-decorator.mjs +18 -0
  76. package/client/esm2022/lib/decorators/classes/provider-decorator.mjs +4 -1
  77. package/client/esm2022/lib/decorators/classes/repository-decorator.mjs +4 -1
  78. package/client/esm2022/lib/decorators/classes/subscriber-decorator.mjs +5 -2
  79. package/client/esm2022/lib/decorators/http/http-methods-decorators.mjs +1 -1
  80. package/client/esm2022/lib/endpoint-context.mjs +105 -59
  81. package/client/esm2022/lib/entity-process.mjs +1 -10
  82. package/client/esm2022/lib/get-response-value.mjs +1 -15
  83. package/client/esm2022/lib/index.mjs +4 -1
  84. package/client/esm2022/lib/inject.mjs +1 -1
  85. package/client/esm2022/lib/models.mjs +30 -1
  86. package/client/esm2022/lib/symbols.mjs +2 -1
  87. package/client/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +1 -3
  88. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +55 -37
  89. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +17 -21
  90. package/client/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +1 -1
  91. package/client/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +1 -1
  92. package/client/esm2022/lib/ui/taon-table/taon-table.component.mjs +1 -2
  93. package/client/fesm2022/taon.mjs +701 -449
  94. package/client/fesm2022/taon.mjs.map +1 -1
  95. package/client/lib/base-classes/base-abstract-entity.d.ts +2 -1
  96. package/client/lib/base-classes/base-class.d.ts +1 -1
  97. package/client/lib/base-classes/base-context.d.ts +3 -0
  98. package/client/lib/base-classes/base-controller.d.ts +2 -1
  99. package/client/lib/base-classes/base-crud-controller.d.ts +1 -1
  100. package/client/lib/base-classes/base-migration.d.ts +12 -0
  101. package/client/lib/base-classes/base.d.ts +8 -2
  102. package/client/lib/context-db-migrations.d.ts +17 -0
  103. package/client/lib/create-context.d.ts +7 -4
  104. package/client/lib/decorators/classes/controller-decorator.d.ts +3 -0
  105. package/client/lib/decorators/classes/entity-decorator.d.ts +3 -0
  106. package/client/lib/decorators/classes/migration-decorator.d.ts +8 -0
  107. package/client/lib/decorators/classes/provider-decorator.d.ts +3 -0
  108. package/client/lib/decorators/classes/repository-decorator.d.ts +3 -0
  109. package/client/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  110. package/client/lib/decorators/http/http-methods-decorators.d.ts +9 -0
  111. package/client/lib/endpoint-context.d.ts +14 -7
  112. package/client/lib/index.d.ts +14 -1
  113. package/client/lib/models.d.ts +45 -22
  114. package/client/lib/symbols.d.ts +1 -0
  115. package/client/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  116. package/client/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +5 -8
  117. package/client/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +8 -8
  118. package/lib/base-classes/base-abstract-entity.d.ts +1 -0
  119. package/lib/base-classes/base-class.d.ts +1 -1
  120. package/lib/base-classes/base-class.js +1 -1
  121. package/lib/base-classes/base-context.d.ts +3 -0
  122. package/lib/base-classes/base-controller.d.ts +2 -1
  123. package/lib/base-classes/base-controller.js +2 -1
  124. package/lib/base-classes/base-controller.js.map +1 -1
  125. package/lib/base-classes/base-crud-controller.d.ts +1 -1
  126. package/lib/base-classes/base-migration.d.ts +11 -0
  127. package/lib/base-classes/base-migration.js +41 -0
  128. package/lib/base-classes/base-migration.js.map +1 -0
  129. package/lib/base-classes/base-repository.js +4 -4
  130. package/lib/base-classes/base-repository.js.map +1 -1
  131. package/lib/base-classes/base-subscriber-for-entity.js +19 -19
  132. package/lib/base-classes/base-subscriber-for-entity.js.map +1 -1
  133. package/lib/base-classes/base.d.ts +8 -2
  134. package/lib/base-classes/base.js +4 -2
  135. package/lib/base-classes/base.js.map +1 -1
  136. package/lib/context-db-migrations.d.ts +16 -0
  137. package/lib/context-db-migrations.js +585 -0
  138. package/lib/context-db-migrations.js.map +1 -0
  139. package/lib/create-context.d.ts +7 -4
  140. package/lib/create-context.js +34 -12
  141. package/lib/create-context.js.map +1 -1
  142. package/lib/decorators/classes/controller-decorator.d.ts +3 -0
  143. package/lib/decorators/classes/controller-decorator.js +3 -0
  144. package/lib/decorators/classes/controller-decorator.js.map +1 -1
  145. package/lib/decorators/classes/entity-decorator.d.ts +3 -0
  146. package/lib/decorators/classes/entity-decorator.js +3 -0
  147. package/lib/decorators/classes/entity-decorator.js.map +1 -1
  148. package/lib/decorators/classes/migration-decorator.d.ts +7 -0
  149. package/lib/decorators/classes/migration-decorator.js +27 -0
  150. package/lib/decorators/classes/migration-decorator.js.map +1 -0
  151. package/lib/decorators/classes/provider-decorator.d.ts +3 -0
  152. package/lib/decorators/classes/provider-decorator.js +3 -0
  153. package/lib/decorators/classes/provider-decorator.js.map +1 -1
  154. package/lib/decorators/classes/repository-decorator.d.ts +3 -0
  155. package/lib/decorators/classes/repository-decorator.js +3 -0
  156. package/lib/decorators/classes/repository-decorator.js.map +1 -1
  157. package/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  158. package/lib/decorators/classes/subscriber-decorator.js +4 -1
  159. package/lib/decorators/classes/subscriber-decorator.js.map +1 -1
  160. package/lib/decorators/http/http-methods-decorators.d.ts +9 -0
  161. package/lib/decorators/http/http-methods-decorators.js.map +1 -1
  162. package/lib/endpoint-context.d.ts +14 -7
  163. package/lib/endpoint-context.js +265 -220
  164. package/lib/endpoint-context.js.map +1 -1
  165. package/lib/entity-process.js +0 -9
  166. package/lib/entity-process.js.map +1 -1
  167. package/lib/get-response-value.js +14 -37
  168. package/lib/get-response-value.js.map +1 -1
  169. package/lib/index.d.ts +14 -1
  170. package/lib/index.js +5 -1
  171. package/lib/index.js.map +1 -1
  172. package/lib/inject.js +0 -2
  173. package/lib/inject.js.map +1 -1
  174. package/lib/models.d.ts +45 -23
  175. package/lib/models.js +45 -0
  176. package/lib/models.js.map +1 -1
  177. package/lib/symbols.d.ts +1 -0
  178. package/lib/symbols.js +1 -0
  179. package/lib/symbols.js.map +1 -1
  180. package/lib/ui/directives/index.js +2 -2
  181. package/lib/ui/index.js +2 -2
  182. package/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  183. package/lib/ui/taon-admin-mode-configuration/index.js +2 -2
  184. package/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +4 -7
  185. package/lib/ui/taon-admin-mode-configuration/{models/taon-admin-mode-tabs.js → taon-admin.models.js} +1 -1
  186. package/lib/ui/taon-admin-mode-configuration/taon-admin.models.js.map +1 -0
  187. package/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +6 -6
  188. package/lib/ui/taon-github-fork-me-corner/index.js +2 -2
  189. package/lib/ui/taon-github-fork-me-ribbon/index.js +2 -2
  190. package/lib/ui/taon-notifications/taon-notifications.models.js +2 -2
  191. package/lib/ui/taon-progress-bar/index.js +2 -2
  192. package/lib/ui/taon-session-passcode/index.js +2 -2
  193. package/lib/ui/taon-table/index.js +2 -2
  194. package/migrations/index.d.ts +1 -0
  195. package/migrations/index.js +6 -0
  196. package/migrations/index.js.map +1 -0
  197. package/migrations/migrations_index._auto-generated_.d.ts +0 -0
  198. package/migrations/migrations_index._auto-generated_.js +4 -0
  199. package/migrations/migrations_index._auto-generated_.js.map +1 -0
  200. package/package.json +7 -7
  201. package/taon.jsonc +47 -47
  202. package/tmp-environment.json +39 -31
  203. package/websql/README.md +24 -24
  204. package/websql/esm2022/lib/base-classes/base-abstract-entity.mjs +1 -1
  205. package/websql/esm2022/lib/base-classes/base-class.mjs +2 -2
  206. package/websql/esm2022/lib/base-classes/base-controller.mjs +3 -2
  207. package/websql/esm2022/lib/base-classes/base-crud-controller.mjs +1 -1
  208. package/websql/esm2022/lib/base-classes/base-migration.mjs +23 -0
  209. package/websql/esm2022/lib/base-classes/base-repository.mjs +5 -5
  210. package/websql/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +20 -20
  211. package/websql/esm2022/lib/base-classes/base.mjs +5 -3
  212. package/websql/esm2022/lib/context-db-migrations.mjs +269 -0
  213. package/websql/esm2022/lib/create-context.mjs +22 -8
  214. package/websql/esm2022/lib/decorators/classes/controller-decorator.mjs +4 -1
  215. package/websql/esm2022/lib/decorators/classes/entity-decorator.mjs +4 -1
  216. package/websql/esm2022/lib/decorators/classes/migration-decorator.mjs +18 -0
  217. package/websql/esm2022/lib/decorators/classes/provider-decorator.mjs +4 -1
  218. package/websql/esm2022/lib/decorators/classes/repository-decorator.mjs +4 -1
  219. package/websql/esm2022/lib/decorators/classes/subscriber-decorator.mjs +5 -2
  220. package/websql/esm2022/lib/decorators/http/http-methods-decorators.mjs +1 -1
  221. package/websql/esm2022/lib/endpoint-context.mjs +139 -95
  222. package/websql/esm2022/lib/entity-process.mjs +1 -10
  223. package/websql/esm2022/lib/get-response-value.mjs +4 -24
  224. package/websql/esm2022/lib/index.mjs +4 -1
  225. package/websql/esm2022/lib/inject.mjs +1 -1
  226. package/websql/esm2022/lib/models.mjs +28 -1
  227. package/websql/esm2022/lib/symbols.mjs +2 -1
  228. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +1 -3
  229. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +55 -37
  230. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +17 -21
  231. package/websql/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +1 -1
  232. package/websql/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +1 -1
  233. package/websql/esm2022/lib/ui/taon-table/taon-table.component.mjs +1 -2
  234. package/websql/fesm2022/taon.mjs +594 -497
  235. package/websql/fesm2022/taon.mjs.map +1 -1
  236. package/websql/lib/base-classes/base-abstract-entity.d.ts +2 -1
  237. package/websql/lib/base-classes/base-class.d.ts +1 -1
  238. package/websql/lib/base-classes/base-context.d.ts +3 -0
  239. package/websql/lib/base-classes/base-controller.d.ts +2 -1
  240. package/websql/lib/base-classes/base-crud-controller.d.ts +1 -1
  241. package/websql/lib/base-classes/base-migration.d.ts +12 -0
  242. package/websql/lib/base-classes/base.d.ts +8 -2
  243. package/websql/lib/context-db-migrations.d.ts +17 -0
  244. package/websql/lib/create-context.d.ts +7 -4
  245. package/websql/lib/decorators/classes/controller-decorator.d.ts +3 -0
  246. package/websql/lib/decorators/classes/entity-decorator.d.ts +3 -0
  247. package/websql/lib/decorators/classes/migration-decorator.d.ts +8 -0
  248. package/websql/lib/decorators/classes/provider-decorator.d.ts +3 -0
  249. package/websql/lib/decorators/classes/repository-decorator.d.ts +3 -0
  250. package/websql/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  251. package/websql/lib/decorators/http/http-methods-decorators.d.ts +9 -0
  252. package/websql/lib/endpoint-context.d.ts +14 -7
  253. package/websql/lib/index.d.ts +14 -1
  254. package/websql/lib/models.d.ts +45 -23
  255. package/websql/lib/symbols.d.ts +1 -0
  256. package/websql/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  257. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +5 -8
  258. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +8 -8
  259. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +0 -5
  260. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +0 -115
  261. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +0 -50
  262. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +0 -5
  263. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +0 -61
  264. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +0 -21
  265. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +0 -4
  266. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +0 -32
  267. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +0 -54
  268. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -3
  269. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -33
  270. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -16
  271. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -3
  272. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -17
  273. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -10
  274. package/browser/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +0 -6
  275. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -18
  276. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -17
  277. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +0 -5
  278. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +0 -115
  279. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +0 -50
  280. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +0 -5
  281. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +0 -61
  282. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +0 -21
  283. package/client/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +0 -4
  284. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +0 -32
  285. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +0 -54
  286. package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -3
  287. package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -33
  288. package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -16
  289. package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -3
  290. package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -17
  291. package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -10
  292. package/client/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +0 -6
  293. package/client/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -18
  294. package/client/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -17
  295. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -2
  296. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.js +0 -5
  297. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.js.map +0 -1
  298. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -29
  299. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -2
  300. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.d.ts +0 -1
  301. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.js +0 -5
  302. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.js.map +0 -1
  303. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/taon-db-admin.component.d.ts +0 -8
  304. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -2
  305. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.js +0 -5
  306. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.js.map +0 -1
  307. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -13
  308. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -2
  309. package/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.js.map +0 -1
  310. package/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -14
  311. package/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -2
  312. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +0 -5
  313. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +0 -115
  314. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +0 -50
  315. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +0 -5
  316. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +0 -61
  317. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +0 -21
  318. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +0 -4
  319. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +0 -32
  320. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +0 -54
  321. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -3
  322. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -33
  323. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -16
  324. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -3
  325. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -17
  326. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -10
  327. package/websql/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +0 -6
  328. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -18
  329. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -17
  330. /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);
@@ -1846,20 +1873,6 @@ const getResponseValue = (response, options) => {
1846
1873
  /* */
1847
1874
  /* */
1848
1875
  /* */
1849
- /* */
1850
- /* */
1851
- /* */
1852
- /* */
1853
- /* */
1854
- /* */
1855
- /* */
1856
- /* */
1857
- /* */
1858
- /* */
1859
- /* */
1860
- /* */
1861
- /* */
1862
- /* */
1863
1876
  return (void 0);
1864
1877
  };
1865
1878
  ;
@@ -2912,11 +2925,423 @@ class RealtimeCore {
2912
2925
  ;
2913
2926
  ({}); // @--end-of-file-for-module=taon lib/realtime/realtime-core.ts
2914
2927
 
2928
+ class ContextDbMigrations {
2929
+ constructor(ctx) {
2930
+ this.ctx = ctx;
2931
+ this.DEFAULT_MIGRATION_TABLE_NAME = 'TAON_MIGRATION_META';
2932
+ this.MIGRATION_STATUS_COMPLETED = 'completed';
2933
+ this.MIGRATION_STATUS_PENDING = 'pending';
2934
+ this.table = new Table({
2935
+ name: this.DEFAULT_MIGRATION_TABLE_NAME,
2936
+ columns: [
2937
+ {
2938
+ name: 'id',
2939
+ type: 'integer',
2940
+ isPrimary: true, // Mark it as the primary key
2941
+ isGenerated: true, // Enable auto-generation
2942
+ generationStrategy: 'increment', // Use auto-increment strategy
2943
+ },
2944
+ {
2945
+ name: 'name',
2946
+ type: 'varchar',
2947
+ length: '255',
2948
+ isUnique: true, // Ensure the name is unique
2949
+ isNullable: false, // Ensure this field is required
2950
+ },
2951
+ {
2952
+ name: 'context',
2953
+ type: 'varchar',
2954
+ length: '255',
2955
+ isNullable: false, // Optional context for migrations (e.g., tenant or module name)
2956
+ },
2957
+ {
2958
+ name: 'applied_at',
2959
+ type: 'timestamp',
2960
+ default: 'CURRENT_TIMESTAMP', // Automatically set the timestamp
2961
+ isNullable: true,
2962
+ },
2963
+ {
2964
+ name: 'status',
2965
+ type: 'varchar',
2966
+ length: '50',
2967
+ default: `'${this.MIGRATION_STATUS_COMPLETED}'`,
2968
+ isNullable: false,
2969
+ },
2970
+ ],
2971
+ });
2972
+ }
2973
+ async ensureMigrationTableExists() {
2974
+ /* */
2975
+ /* */
2976
+ /* */
2977
+ /* */
2978
+ /* */
2979
+ /* */
2980
+ /* */
2981
+ /* */
2982
+ /* */
2983
+ /* */
2984
+ /* */
2985
+ /* */
2986
+ /* */
2987
+ /* */
2988
+ /* */
2989
+ /* */
2990
+ /* */
2991
+ /* */
2992
+ /* */
2993
+ /* */
2994
+ /* */
2995
+ /* */
2996
+ /* */
2997
+ /* */
2998
+ /* */
2999
+ /* */
3000
+ /* */
3001
+ /* */
3002
+ /* */
3003
+ /* */
3004
+ /* */
3005
+ /* */
3006
+ /* */
3007
+ /* */
3008
+ /* */
3009
+ /* */
3010
+ /* */
3011
+ /* */
3012
+ /* */
3013
+ /* */
3014
+ /* */
3015
+ /* */
3016
+ /* */
3017
+ return (void 0);
3018
+ }
3019
+ async revertMigrationToTimestamp(timestamp) {
3020
+ /* */
3021
+ /* */
3022
+ /* */
3023
+ /* */
3024
+ /* */
3025
+ /* */
3026
+ /* */
3027
+ /* */
3028
+ /* */
3029
+ /* */
3030
+ /* */
3031
+ /* */
3032
+ /* */
3033
+ /* */
3034
+ /* */
3035
+ /* */
3036
+ /* */
3037
+ /* */
3038
+ /* */
3039
+ /* */
3040
+ /* */
3041
+ /* */
3042
+ /* */
3043
+ /* */
3044
+ /* */
3045
+ /* */
3046
+ /* */
3047
+ /* */
3048
+ /* */
3049
+ /* */
3050
+ /* */
3051
+ /* */
3052
+ /* */
3053
+ /* */
3054
+ /* */
3055
+ /* */
3056
+ /* */
3057
+ /* */
3058
+ /* */
3059
+ /* */
3060
+ /* */
3061
+ /* */
3062
+ /* */
3063
+ /* */
3064
+ /* */
3065
+ /* */
3066
+ /* */
3067
+ /* */
3068
+ /* */
3069
+ /* */
3070
+ /* */
3071
+ /* */
3072
+ /* */
3073
+ /* */
3074
+ /* */
3075
+ /* */
3076
+ /* */
3077
+ /* */
3078
+ /* */
3079
+ /* */
3080
+ /* */
3081
+ /* */
3082
+ /* */
3083
+ /* */
3084
+ /* */
3085
+ /* */
3086
+ /* */
3087
+ /* */
3088
+ /* */
3089
+ /* */
3090
+ /* */
3091
+ /* */
3092
+ /* */
3093
+ /* */
3094
+ /* */
3095
+ /* */
3096
+ /* */
3097
+ /* */
3098
+ /* */
3099
+ /* */
3100
+ /* */
3101
+ /* */
3102
+ /* */
3103
+ /* */
3104
+ /* */
3105
+ /* */
3106
+ /* */
3107
+ /* */
3108
+ /* */
3109
+ /* */
3110
+ /* */
3111
+ /* */
3112
+ /* */
3113
+ /* */
3114
+ return (void 0);
3115
+ }
3116
+ async clearMigrationTable() {
3117
+ /* */
3118
+ /* */
3119
+ /* */
3120
+ /* */
3121
+ /* */
3122
+ /* */
3123
+ /* */
3124
+ /* */
3125
+ /* */
3126
+ /* */
3127
+ /* */
3128
+ /* */
3129
+ /* */
3130
+ /* */
3131
+ /* */
3132
+ /* */
3133
+ /* */
3134
+ /* */
3135
+ return (void 0);
3136
+ }
3137
+ async markAllMigrationsAsApplied() {
3138
+ /* */
3139
+ /* */
3140
+ /* */
3141
+ /* */
3142
+ /* */
3143
+ /* */
3144
+ /* */
3145
+ /* */
3146
+ /* */
3147
+ /* */
3148
+ /* */
3149
+ /* */
3150
+ /* */
3151
+ /* */
3152
+ /* */
3153
+ /* */
3154
+ /* */
3155
+ /* */
3156
+ /* */
3157
+ /* */
3158
+ /* */
3159
+ /* */
3160
+ /* */
3161
+ /* */
3162
+ /* */
3163
+ /* */
3164
+ /* */
3165
+ /* */
3166
+ /* */
3167
+ /* */
3168
+ /* */
3169
+ /* */
3170
+ /* */
3171
+ /* */
3172
+ /* */
3173
+ /* */
3174
+ /* */
3175
+ /* */
3176
+ /* */
3177
+ /* */
3178
+ /* */
3179
+ /* */
3180
+ /* */
3181
+ /* */
3182
+ /* */
3183
+ /* */
3184
+ /* */
3185
+ /* */
3186
+ /* */
3187
+ /* */
3188
+ /* */
3189
+ /* */
3190
+ /* */
3191
+ /* */
3192
+ /* */
3193
+ /* */
3194
+ /* */
3195
+ /* */
3196
+ /* */
3197
+ /* */
3198
+ /* */
3199
+ /* */
3200
+ /* */
3201
+ /* */
3202
+ /* */
3203
+ /* */
3204
+ /* */
3205
+ /* */
3206
+ /* */
3207
+ /* */
3208
+ /* */
3209
+ return (void 0);
3210
+ }
3211
+ async runAllNotCompletedMigrations() {
3212
+ /* */
3213
+ /* */
3214
+ /* */
3215
+ /* */
3216
+ /* */
3217
+ /* */
3218
+ /* */
3219
+ /* */
3220
+ /* */
3221
+ /* */
3222
+ /* */
3223
+ /* */
3224
+ /* */
3225
+ /* */
3226
+ /* */
3227
+ /* */
3228
+ /* */
3229
+ /* */
3230
+ /* */
3231
+ /* */
3232
+ /* */
3233
+ /* */
3234
+ /* */
3235
+ /* */
3236
+ /* */
3237
+ /* */
3238
+ /* */
3239
+ /* */
3240
+ /* */
3241
+ /* */
3242
+ /* */
3243
+ /* */
3244
+ /* */
3245
+ /* */
3246
+ /* */
3247
+ /* */
3248
+ /* */
3249
+ /* */
3250
+ /* */
3251
+ /* */
3252
+ /* */
3253
+ /* */
3254
+ /* */
3255
+ /* */
3256
+ /* */
3257
+ /* */
3258
+ /* */
3259
+ /* */
3260
+ /* */
3261
+ /* */
3262
+ /* */
3263
+ /* */
3264
+ /* */
3265
+ /* */
3266
+ /* */
3267
+ /* */
3268
+ /* */
3269
+ /* */
3270
+ /* */
3271
+ /* */
3272
+ /* */
3273
+ /* */
3274
+ /* */
3275
+ /* */
3276
+ /* */
3277
+ /* */
3278
+ /* */
3279
+ /* */
3280
+ /* */
3281
+ /* */
3282
+ /* */
3283
+ /* */
3284
+ /* */
3285
+ /* */
3286
+ /* */
3287
+ /* */
3288
+ /* */
3289
+ /* */
3290
+ /* */
3291
+ /* */
3292
+ /* */
3293
+ /* */
3294
+ /* */
3295
+ /* */
3296
+ /* */
3297
+ /* */
3298
+ /* */
3299
+ /* */
3300
+ /* */
3301
+ /* */
3302
+ /* */
3303
+ /* */
3304
+ /* */
3305
+ /* */
3306
+ /* */
3307
+ /* */
3308
+ /* */
3309
+ /* */
3310
+ /* */
3311
+ /* */
3312
+ /* */
3313
+ /* */
3314
+ /* */
3315
+ /* */
3316
+ /* */
3317
+ /* */
3318
+ /* */
3319
+ /* */
3320
+ /* */
3321
+ /* */
3322
+ /* */
3323
+ /* */
3324
+ /* */
3325
+ /* */
3326
+ /* */
3327
+ /* */
3328
+ /* */
3329
+ /* */
3330
+ /* */
3331
+ return (void 0);
3332
+ }
3333
+ }
3334
+ ;
3335
+ ({}); // @--end-of-file-for-module=taon lib/context-db-migrations.ts
3336
+
2915
3337
  /* eslint-disable @typescript-eslint/typedef */
2916
3338
  class EndpointContext {
2917
3339
  static initNgZone(ngZone) {
2918
3340
  this.ngZone = ngZone;
2919
3341
  }
3342
+ get isRunOrRevertOnlyMigrationAppStart() {
3343
+ return !!(this.onlyMigrationRun || this.onlyMigrationRevertToTimestamp);
3344
+ }
2920
3345
  get realtimeClient() {
2921
3346
  return this.realtime.client;
2922
3347
  }
@@ -2947,6 +3372,12 @@ class EndpointContext {
2947
3372
  }
2948
3373
  return this.config?.logs === true;
2949
3374
  }
3375
+ get logMigrations() {
3376
+ if (_$1.isObject(this.config?.logs)) {
3377
+ return !!this.config.logs.migrations;
3378
+ }
3379
+ return this.config?.logs === true;
3380
+ }
2950
3381
  constructor(originalConfig, configFn) {
2951
3382
  this.originalConfig = originalConfig;
2952
3383
  this.configFn = configFn;
@@ -2956,6 +3387,7 @@ class EndpointContext {
2956
3387
  * (with init() function )
2957
3388
  */
2958
3389
  this.inited = false;
3390
+ this.dbMigrations = new ContextDbMigrations(this);
2959
3391
  this.localInstaceObjSymbol = Symbol('localInstaceObjSymbol');
2960
3392
  /**
2961
3393
  * all instances of classes from context
@@ -2970,12 +3402,15 @@ class EndpointContext {
2970
3402
  Models.ClassType.PROVIDER,
2971
3403
  Models.ClassType.REPOSITORY,
2972
3404
  Models.ClassType.SUBSCRIBER,
3405
+ Models.ClassType.MIGRATION,
2973
3406
  ];
2974
3407
  this.allTypesfromContexts = [
2975
3408
  ...this.injectableTypesfromContexts,
2976
3409
  Models.ClassType.ENTITY,
2977
3410
  ];
2978
3411
  this.expressApp = {};
3412
+ this.onlyMigrationRun = false;
3413
+ this.onlyMigrationRevertToTimestamp = undefined;
2979
3414
  this.entitiesTriggers = {};
2980
3415
  this.cloneClassWithNewMetadata = ({ BaseClass, className, config, ctx, classType, }) => {
2981
3416
  const cloneClass = () => {
@@ -3043,19 +3478,38 @@ class EndpointContext {
3043
3478
  };
3044
3479
  }
3045
3480
  async init(options) {
3046
- const { initFromRecrusiveContextResovle, overrideHost, overrideRemoteHost } = options || {}; // TODO use it ?
3481
+ const { initFromRecrusiveContextResovle, overrideHost, overrideRemoteHost, onlyMigrationRun, onlyMigrationRevertToTimestamp, } = options || {}; // TODO use it ?
3047
3482
  this.inited = true;
3483
+ // @ts-ignore
3484
+ this.onlyMigrationRun = onlyMigrationRun;
3485
+ // @ts-ignore
3486
+ this.onlyMigrationRevertToTimestamp = onlyMigrationRevertToTimestamp;
3048
3487
  this.config = this.configFn(ENV$2);
3488
+ if (_$1.isObject(this.config.database)) {
3489
+ this.config.database = Models.DatabaseConfig.from(this.config.database).databaseConfigTypeORM;
3490
+ }
3049
3491
  if (overrideHost && overrideRemoteHost) {
3050
- if (Helpers.isWebSQL) {
3051
- throw new Error(`You can't have overrideHost and overrideRemoteHost at the same time`);
3052
- }
3053
- Helpers.error(`You can't have overrideHost and overrideRemoteHost at the same time`, false, true);
3054
- /* */
3055
- /* */
3492
+ Helpers.throw(`[taon-config] You can't have overrideHost and overrideRemoteHost at the same time`);
3493
+ }
3494
+ this.config.host = !_$1.isUndefined(overrideHost)
3495
+ ? overrideHost
3496
+ : this.config.host;
3497
+ this.config.remoteHost = !_$1.isUndefined(overrideRemoteHost)
3498
+ ? overrideRemoteHost
3499
+ : this.config.remoteHost;
3500
+ this.config.host = this.host === null ? void 0 : this.host;
3501
+ this.config.remoteHost =
3502
+ this.remoteHost === null ? void 0 : this.remoteHost;
3503
+ if (this.config.host &&
3504
+ !this.config.host.startsWith('http://') &&
3505
+ !this.config.host.startsWith('https://')) {
3506
+ Helpers.throw(`[taon-config] Your 'host' must start with http:// or https://`);
3507
+ }
3508
+ if (this.config.remoteHost &&
3509
+ !this.config.remoteHost.startsWith('http://') &&
3510
+ !this.config.remoteHost.startsWith('https://')) {
3511
+ Helpers.throw(`[taon-config] Your 'remoteHost' must start with http:// or https://`);
3056
3512
  }
3057
- this.config.host = overrideHost ? overrideHost : this.config.host;
3058
- this.config.remoteHost = overrideRemoteHost ? overrideRemoteHost : this.config.remoteHost;
3059
3513
  if (this.config.host) {
3060
3514
  this.mode = 'backend-frontend(tcp+udp)';
3061
3515
  /* */
@@ -3063,7 +3517,7 @@ class EndpointContext {
3063
3517
  }
3064
3518
  if (this.config.remoteHost) {
3065
3519
  if (this.config.host) {
3066
- Helpers.error(`[taon] You can't have remoteHost and host at the same time`, false, true);
3520
+ Helpers.throw(`[taon] You can't have remoteHost and host at the same time`);
3067
3521
  }
3068
3522
  this.mode = 'remote-backend(tcp+udp)';
3069
3523
  }
@@ -3084,7 +3538,7 @@ class EndpointContext {
3084
3538
  this.databaseConfig = this.getAutoGeneratedConfig();
3085
3539
  }
3086
3540
  else if (_$1.isObject(this.config.database)) {
3087
- this.databaseConfig = _$1.cloneDeep(this.config.database);
3541
+ this.databaseConfig = _$1.merge(this.getAutoGeneratedConfig(), _$1.cloneDeep(this.config.database));
3088
3542
  }
3089
3543
  if (this.config.session) {
3090
3544
  this.session = _$1.cloneDeep(this.config.session);
@@ -3100,6 +3554,7 @@ class EndpointContext {
3100
3554
  this.config.repositories = this.config.repositories || {};
3101
3555
  this.config.providers = this.config.providers || {};
3102
3556
  this.config.subscribers = this.config.subscribers || {};
3557
+ this.config.migrations = this.config.migrations || {};
3103
3558
  this.config.entities = {
3104
3559
  ...(await this.getRecrusiveClassesfromContextsObj(Models.ClassType.ENTITY)),
3105
3560
  ...this.config.entities,
@@ -3120,6 +3575,10 @@ class EndpointContext {
3120
3575
  ...(await this.getRecrusiveClassesfromContextsObj(Models.ClassType.REPOSITORY)),
3121
3576
  ...this.config.repositories,
3122
3577
  };
3578
+ this.config.migrations = {
3579
+ ...(await this.getRecrusiveClassesfromContextsObj(Models.ClassType.MIGRATION)),
3580
+ ...this.config.migrations,
3581
+ };
3123
3582
  this.config.controllers = this.cloneClassesObjWithNewMetadata({
3124
3583
  classesInput: this.config.controllers,
3125
3584
  config: this.config,
@@ -3142,7 +3601,13 @@ class EndpointContext {
3142
3601
  classesInput: this.config.subscribers,
3143
3602
  config: this.config,
3144
3603
  ctx: this,
3145
- classType: Models.ClassType.SUBSCRIBER,
3604
+ classType: Models.ClassType.SUBSCRIBER,
3605
+ });
3606
+ this.config.migrations = this.cloneClassesObjWithNewMetadata({
3607
+ classesInput: this.config.migrations,
3608
+ config: this.config,
3609
+ ctx: this,
3610
+ classType: Models.ClassType.MIGRATION,
3146
3611
  });
3147
3612
  for (const classTypeName of this.injectableTypesfromContexts) {
3148
3613
  this.classInstancesByNameObj[classTypeName] = {};
@@ -3151,35 +3616,37 @@ class EndpointContext {
3151
3616
  for (const classTypeName of this.injectableTypesfromContexts) {
3152
3617
  await this.createInstances(this.config[Models.ClassTypeKey[classTypeName]], classTypeName);
3153
3618
  }
3154
- if (this.mode === 'backend-frontend(tcp+udp)' && !this.config.abstract) {
3155
- /* */
3156
- /* */
3157
- /* */
3158
- /* */
3159
- /* */
3160
- /* */
3161
- /* */
3162
- /* */
3163
- /* */
3164
- /* */
3165
- /* */
3166
- /* */
3167
- /* */
3168
- /* */
3169
- /* */
3170
- /* */
3171
- /* */
3172
- /* */
3173
- /* */
3174
- }
3175
- if (!this.config.abstract) {
3176
- this.disabledRealtime = !!this.config.disabledRealtime;
3177
- /* */
3178
- /* */
3179
- /* */
3180
- /* */
3181
- /* */
3182
- this.realtime = new RealtimeCore(this);
3619
+ if (!this.isRunOrRevertOnlyMigrationAppStart) {
3620
+ if (this.mode === 'backend-frontend(tcp+udp)' && !this.config.abstract) {
3621
+ /* */
3622
+ /* */
3623
+ /* */
3624
+ /* */
3625
+ /* */
3626
+ /* */
3627
+ /* */
3628
+ /* */
3629
+ /* */
3630
+ /* */
3631
+ /* */
3632
+ /* */
3633
+ /* */
3634
+ /* */
3635
+ /* */
3636
+ /* */
3637
+ /* */
3638
+ /* */
3639
+ /* */
3640
+ }
3641
+ if (!this.config.abstract) {
3642
+ this.disabledRealtime = !!this.config.disabledRealtime;
3643
+ /* */
3644
+ /* */
3645
+ /* */
3646
+ /* */
3647
+ /* */
3648
+ this.realtime = new RealtimeCore(this);
3649
+ }
3183
3650
  }
3184
3651
  if (this.config.abstract) {
3185
3652
  this.logFramework &&
@@ -3267,21 +3734,6 @@ class EndpointContext {
3267
3734
  /* */
3268
3735
  /* */
3269
3736
  /* */
3270
- /* */
3271
- /* */
3272
- /* */
3273
- /* */
3274
- /* */
3275
- /* */
3276
- /* */
3277
- /* */
3278
- /* */
3279
- /* */
3280
- /* */
3281
- /* */
3282
- /* */
3283
- /* */
3284
- /* */
3285
3737
  return (void 0);
3286
3738
  }
3287
3739
  get ngZone() {
@@ -3442,6 +3894,8 @@ class EndpointContext {
3442
3894
  return this.config.repositories;
3443
3895
  case Models.ClassType.SUBSCRIBER:
3444
3896
  return this.config.subscribers;
3897
+ case Models.ClassType.MIGRATION:
3898
+ return this.config.migrations;
3445
3899
  }
3446
3900
  }
3447
3901
  isCLassType(classType, classFn) {
@@ -3480,7 +3934,7 @@ class EndpointContext {
3480
3934
  }
3481
3935
  }
3482
3936
  async reinitControllers() {
3483
- if (this.remoteHost) {
3937
+ if (this.remoteHost || Object.keys(this.config.migrations).length > 0) {
3484
3938
  return;
3485
3939
  }
3486
3940
  const controllers = this.getClassesInstancesArrBy(Models.ClassType.CONTROLLER);
@@ -3502,6 +3956,7 @@ class EndpointContext {
3502
3956
  Models.ClassType.REPOSITORY,
3503
3957
  Models.ClassType.CONTROLLER,
3504
3958
  Models.ClassType.ENTITY,
3959
+ Models.ClassType.MIGRATION,
3505
3960
  ]) {
3506
3961
  for (const classFun of this.getClassFunByArr(classTypeName)) {
3507
3962
  if (_$1.isFunction(classFun._)) {
@@ -3516,6 +3971,7 @@ class EndpointContext {
3516
3971
  Models.ClassType.PROVIDER,
3517
3972
  Models.ClassType.REPOSITORY,
3518
3973
  Models.ClassType.CONTROLLER,
3974
+ Models.ClassType.MIGRATION,
3519
3975
  ]) {
3520
3976
  for (const ctrl of this.getClassesInstancesArrBy(classTypeName)) {
3521
3977
  if (_$1.isFunction(ctrl._)) {
@@ -3701,9 +4157,20 @@ class EndpointContext {
3701
4157
  /* */
3702
4158
  /* */
3703
4159
  /* */
4160
+ /* */
4161
+ /* */
4162
+ /* */
4163
+ /* */
4164
+ /* */
4165
+ /* */
4166
+ /* */
4167
+ /* */
3704
4168
  return (void 0);
3705
4169
  }
3706
- initMetadata() {
4170
+ initControllers() {
4171
+ if (this.isRunOrRevertOnlyMigrationAppStart) {
4172
+ return;
4173
+ }
3707
4174
  const allControllers = this.getClassFunByArr(Models.ClassType.CONTROLLER);
3708
4175
  for (const controllerClassFn of allControllers) {
3709
4176
  controllerClassFn[Symbols.classMethodsNames] =
@@ -3783,7 +4250,7 @@ class EndpointContext {
3783
4250
  }
3784
4251
  }
3785
4252
  writeActiveRoutes() {
3786
- if (this.remoteHost) {
4253
+ if (this.remoteHost || this.isRunOrRevertOnlyMigrationAppStart) {
3787
4254
  return;
3788
4255
  }
3789
4256
  const contexts = [this];
@@ -4541,25 +5008,19 @@ instead
4541
5008
  ;
4542
5009
  ({}); // @--end-of-file-for-module=taon lib/endpoint-context.ts
4543
5010
 
4544
- const globalPublicStorage = Helpers.isBrowser ? window : global;
4545
- ;
4546
- ({}); // @--end-of-file-for-module=taon lib/storage.ts
4547
-
4548
5011
  const ENV$1 = Helpers.isBrowser ? window['ENV'] : global['ENV'];
4549
- class TaonAdmin {
5012
+ class TaonAdminService {
5013
+ static get Instance() {
5014
+ return this._instance;
5015
+ }
4550
5016
  constructor() {
4551
5017
  this.scrollableEnabled = false; // TOOD false by default
4552
5018
  this.onEditMode = new Subject();
4553
5019
  this.onEditMode$ = this.onEditMode.asObservable();
4554
5020
  this.enabledTabs = [];
5021
+ TaonAdminService._instance = this;
4555
5022
  this.scrollableEnabled = !!ENV$1?.useGlobalNgxScrollbar;
4556
5023
  }
4557
- static get Instance() {
4558
- if (!globalPublicStorage[config.frameworkNames.productionFrameworkName]) {
4559
- globalPublicStorage[config.frameworkNames.productionFrameworkName] = new TaonAdmin();
4560
- }
4561
- return globalPublicStorage[config.frameworkNames.productionFrameworkName];
4562
- }
4563
5024
  setEditMode(value) {
4564
5025
  this.onEditMode.next(value);
4565
5026
  }
@@ -4575,26 +5036,26 @@ class TaonAdmin {
4575
5036
  this.adminPanelIsOpen = true;
4576
5037
  }
4577
5038
  logout() { }
4578
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdmin, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4579
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdmin, providedIn: 'root' }); }
5039
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
5040
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, providedIn: 'root' }); }
4580
5041
  }
4581
5042
  __decorate([
4582
- Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false),
5043
+ (Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
4583
5044
  __metadata("design:type", Boolean)
4584
- ], TaonAdmin.prototype, "adminPanelIsOpen", void 0);
5045
+ ], TaonAdminService.prototype, "adminPanelIsOpen", void 0);
4585
5046
  __decorate([
4586
- Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false),
5047
+ (Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
4587
5048
  __metadata("design:type", Boolean)
4588
- ], TaonAdmin.prototype, "draggablePopupMode", void 0);
5049
+ ], TaonAdminService.prototype, "draggablePopupMode", void 0);
4589
5050
  __decorate([
4590
- Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false),
5051
+ (Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
4591
5052
  __metadata("design:type", Boolean)
4592
- ], TaonAdmin.prototype, "draggablePopupModeFullScreen", void 0);
5053
+ ], TaonAdminService.prototype, "draggablePopupModeFullScreen", void 0);
4593
5054
  __decorate([
4594
- Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false),
5055
+ (Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
4595
5056
  __metadata("design:type", Boolean)
4596
- ], TaonAdmin.prototype, "keepWebsqlDbDataAfterReload", void 0);
4597
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdmin, decorators: [{
5057
+ ], TaonAdminService.prototype, "keepWebsqlDbDataAfterReload", void 0);
5058
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, decorators: [{
4598
5059
  type: Injectable,
4599
5060
  args: [{ providedIn: 'root' }]
4600
5061
  }], ctorParameters: () => [] });
@@ -4618,6 +5079,9 @@ const createContext = (configFn) => {
4618
5079
  get subscribers() {
4619
5080
  return config.subscribers;
4620
5081
  },
5082
+ get migrations() {
5083
+ return config.migrations;
5084
+ },
4621
5085
  },
4622
5086
  get contexts() {
4623
5087
  return config.contexts;
@@ -4638,9 +5102,9 @@ const createContext = (configFn) => {
4638
5102
  return endpointContextRef;
4639
5103
  },
4640
5104
  /**
4641
- * only for internal use
4642
- * @deprecated
4643
- */
5105
+ * only for internal use
5106
+ * @deprecated
5107
+ */
4644
5108
  get __refSync() {
4645
5109
  return endpointContextRef;
4646
5110
  },
@@ -4667,20 +5131,31 @@ const createContext = (configFn) => {
4667
5131
  await endpointContextRef.initEntities();
4668
5132
  await endpointContextRef.initSubscribers();
4669
5133
  await endpointContextRef.initDatabaseConnection();
4670
- endpointContextRef.initMetadata();
5134
+ await endpointContextRef.dbMigrations.ensureMigrationTableExists();
5135
+ endpointContextRef.initControllers();
4671
5136
  endpointContextRef.startServer();
4672
5137
  /* */
4673
5138
  /* */
4674
5139
  await endpointContextRef.initClasses();
4675
5140
  let keepWebsqlDbDataAfterReload = false;
4676
5141
  keepWebsqlDbDataAfterReload =
4677
- TaonAdmin.Instance.keepWebsqlDbDataAfterReload;
5142
+ TaonAdminService.Instance?.keepWebsqlDbDataAfterReload;
4678
5143
  if (!Helpers.isNode && keepWebsqlDbDataAfterReload) {
4679
5144
  Helpers.info(`[taon] Keep websql data after reload`);
4680
5145
  }
4681
5146
  else {
4682
5147
  await endpointContextRef.reinitControllers();
4683
5148
  }
5149
+ ///#region TODO this may be usefull but for now
5150
+ if (endpointContextRef.onlyMigrationRun) {
5151
+ await endpointContextRef.dbMigrations.runAllNotCompletedMigrations();
5152
+ }
5153
+ else if (endpointContextRef.onlyMigrationRevertToTimestamp) {
5154
+ await endpointContextRef.dbMigrations.revertMigrationToTimestamp(endpointContextRef.onlyMigrationRevertToTimestamp);
5155
+ }
5156
+ else {
5157
+ await endpointContextRef.dbMigrations.runAllNotCompletedMigrations();
5158
+ }
4684
5159
  resolve(endpointContextRef);
4685
5160
  });
4686
5161
  });
@@ -4696,7 +5171,7 @@ const createContext = (configFn) => {
4696
5171
  },
4697
5172
  get server() {
4698
5173
  return endpointContextRef.realtimeServer;
4699
- }
5174
+ },
4700
5175
  };
4701
5176
  },
4702
5177
  };
@@ -4721,9 +5196,12 @@ var baseContext = /*#__PURE__*/Object.freeze({
4721
5196
  BaseContext: BaseContext
4722
5197
  });
4723
5198
 
5199
+ /**
5200
+ * Subscriber decorator
5201
+ */
4724
5202
  function TaonSubscriber(options) {
4725
5203
  return function (constructor) {
4726
- Reflect.defineMetadata(Symbols.metadata.options.repository, options, constructor);
5204
+ Reflect.defineMetadata(Symbols.metadata.options.subscriber, options, constructor);
4727
5205
  Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
4728
5206
  ClassHelpers.setName(constructor, options?.className);
4729
5207
  };
@@ -4738,133 +5216,133 @@ let BaseSubscriberForEntity = class BaseSubscriberForEntity extends BaseInjector
4738
5216
  * Called after entity is loaded.
4739
5217
  */
4740
5218
  afterLoad(entity) {
4741
- this.__endpoint_context__.logDb &&
5219
+ this.ctx.logDb &&
4742
5220
  console.log(`AFTER ENTITY LOADED: `, entity);
4743
5221
  }
4744
5222
  /**
4745
5223
  * Called before query execution.
4746
5224
  */
4747
5225
  beforeQuery(event) {
4748
- this.__endpoint_context__.logDb &&
5226
+ this.ctx.logDb &&
4749
5227
  console.log(`BEFORE QUERY: `, event.query);
4750
5228
  }
4751
5229
  /**
4752
5230
  * Called after query execution.
4753
5231
  */
4754
5232
  afterQuery(event) {
4755
- this.__endpoint_context__.logDb &&
5233
+ this.ctx.logDb &&
4756
5234
  console.log(`AFTER QUERY: `, event.query);
4757
5235
  }
4758
5236
  /**
4759
5237
  * Called before entity insertion.
4760
5238
  */
4761
5239
  beforeInsert(event) {
4762
- this.__endpoint_context__.logDb &&
5240
+ this.ctx.logDb &&
4763
5241
  console.log(`BEFORE ENTITY INSERTED: `, event.entity);
4764
5242
  }
4765
5243
  /**
4766
5244
  * Called after entity insertion.
4767
5245
  */
4768
5246
  afterInsert(event) {
4769
- this.__endpoint_context__.logDb &&
5247
+ this.ctx.logDb &&
4770
5248
  console.log(`AFTER ENTITY INSERTED: `, event.entity);
4771
5249
  }
4772
5250
  /**
4773
5251
  * Called before entity update.
4774
5252
  */
4775
5253
  beforeUpdate(event) {
4776
- this.__endpoint_context__.logDb &&
5254
+ this.ctx.logDb &&
4777
5255
  console.log(`BEFORE ENTITY UPDATED: `, event.entity);
4778
5256
  }
4779
5257
  /**
4780
5258
  * Called after entity update.
4781
5259
  */
4782
5260
  afterUpdate(event) {
4783
- this.__endpoint_context__.logDb &&
5261
+ this.ctx.logDb &&
4784
5262
  console.log(`AFTER ENTITY UPDATED: `, event.entity);
4785
5263
  }
4786
5264
  /**
4787
5265
  * Called before entity removal.
4788
5266
  */
4789
5267
  beforeRemove(event) {
4790
- this.__endpoint_context__.logDb &&
5268
+ this.ctx.logDb &&
4791
5269
  console.log(`BEFORE ENTITY WITH ID ${event.entityId} REMOVED: `, event.entity);
4792
5270
  }
4793
5271
  /**
4794
5272
  * Called after entity removal.
4795
5273
  */
4796
5274
  afterRemove(event) {
4797
- this.__endpoint_context__.logDb &&
5275
+ this.ctx.logDb &&
4798
5276
  console.log(`AFTER ENTITY WITH ID ${event.entityId} REMOVED: `, event.entity);
4799
5277
  }
4800
5278
  /**
4801
5279
  * Called before entity removal.
4802
5280
  */
4803
5281
  beforeSoftRemove(event) {
4804
- this.__endpoint_context__.logDb &&
5282
+ this.ctx.logDb &&
4805
5283
  console.log(`BEFORE ENTITY WITH ID ${event.entityId} SOFT REMOVED: `, event.entity);
4806
5284
  }
4807
5285
  /**
4808
5286
  * Called after entity removal.
4809
5287
  */
4810
5288
  afterSoftRemove(event) {
4811
- this.__endpoint_context__.logDb &&
5289
+ this.ctx.logDb &&
4812
5290
  console.log(`AFTER ENTITY WITH ID ${event.entityId} SOFT REMOVED: `, event.entity);
4813
5291
  }
4814
5292
  /**
4815
5293
  * Called before entity recovery.
4816
5294
  */
4817
5295
  beforeRecover(event) {
4818
- this.__endpoint_context__.logDb &&
5296
+ this.ctx.logDb &&
4819
5297
  console.log(`BEFORE ENTITY WITH ID ${event.entityId} RECOVERED: `, event.entity);
4820
5298
  }
4821
5299
  /**
4822
5300
  * Called after entity recovery.
4823
5301
  */
4824
5302
  afterRecover(event) {
4825
- this.__endpoint_context__.logDb &&
5303
+ this.ctx.logDb &&
4826
5304
  console.log(`AFTER ENTITY WITH ID ${event.entityId} RECOVERED: `, event.entity);
4827
5305
  }
4828
5306
  /**
4829
5307
  * Called before transaction start.
4830
5308
  */
4831
5309
  beforeTransactionStart(event) {
4832
- this.__endpoint_context__.logDb &&
5310
+ this.ctx.logDb &&
4833
5311
  console.log(`BEFORE TRANSACTION STARTED: `, event);
4834
5312
  }
4835
5313
  /**
4836
5314
  * Called after transaction start.
4837
5315
  */
4838
5316
  afterTransactionStart(event) {
4839
- this.__endpoint_context__.logDb &&
5317
+ this.ctx.logDb &&
4840
5318
  console.log(`AFTER TRANSACTION STARTED: `, event);
4841
5319
  }
4842
5320
  /**
4843
5321
  * Called before transaction commit.
4844
5322
  */
4845
5323
  beforeTransactionCommit(event) {
4846
- this.__endpoint_context__.logDb &&
5324
+ this.ctx.logDb &&
4847
5325
  console.log(`BEFORE TRANSACTION COMMITTED: `, event);
4848
5326
  }
4849
5327
  /**
4850
5328
  * Called after transaction commit.
4851
5329
  */
4852
5330
  afterTransactionCommit(event) {
4853
- this.__endpoint_context__.logDb &&
5331
+ this.ctx.logDb &&
4854
5332
  console.log(`AFTER TRANSACTION COMMITTED: `, event);
4855
5333
  }
4856
5334
  /**
4857
5335
  * Called before transaction rollback.
4858
5336
  */
4859
5337
  beforeTransactionRollback(event) {
4860
- this.__endpoint_context__.logDb &&
5338
+ this.ctx.logDb &&
4861
5339
  console.log(`BEFORE TRANSACTION ROLLBACK: `, event);
4862
5340
  }
4863
5341
  /**
4864
5342
  * Called after transaction rollback.
4865
5343
  */
4866
5344
  afterTransactionRollback(event) {
4867
- this.__endpoint_context__.logDb &&
5345
+ this.ctx.logDb &&
4868
5346
  console.log(`AFTER TRANSACTION ROLLBACK: `, event);
4869
5347
  }
4870
5348
  };
@@ -4876,6 +5354,26 @@ BaseSubscriberForEntity = __decorate([
4876
5354
  ;
4877
5355
  ({}); // @--end-of-file-for-module=taon lib/base-classes/base-subscriber-for-entity.ts
4878
5356
 
5357
+ class BaseMigration extends BaseInjector {
5358
+ /**
5359
+ * by default is READY to run
5360
+ */
5361
+ isReadyToRun() {
5362
+ return true;
5363
+ }
5364
+ getDescription() {
5365
+ return _$1.startCase(ClassHelpers.getName(this));
5366
+ }
5367
+ async up(queryRunner) {
5368
+ console.log(`Running migration UP "${ClassHelpers.getName(this)}"`);
5369
+ }
5370
+ async down(queryRunner) {
5371
+ console.log(`Running migration DOWN "${ClassHelpers.getName(this)}"`);
5372
+ }
5373
+ }
5374
+ ;
5375
+ ({}); // @--end-of-file-for-module=taon lib/base-classes/base-migration.ts
5376
+
4879
5377
  var Base;
4880
5378
  (function (Base) {
4881
5379
  Base.Controller = BaseController;
@@ -4886,6 +5384,7 @@ var Base;
4886
5384
  Base.Class = BaseClass;
4887
5385
  Base.Repository = BaseRepository;
4888
5386
  Base.SubscriberForEntity = BaseSubscriberForEntity;
5387
+ Base.Migration = BaseMigration;
4889
5388
  Base.Context = BaseContext;
4890
5389
  })(Base || (Base = {}));
4891
5390
  ;
@@ -4893,6 +5392,9 @@ var Base;
4893
5392
 
4894
5393
  /* */
4895
5394
  /* */
5395
+ /**
5396
+ * Entity decorator
5397
+ */
4896
5398
  function TaonEntity(options) {
4897
5399
  return function (constructor) {
4898
5400
  options = options || {};
@@ -4912,6 +5414,9 @@ class TaonEntityOptions extends Models.DecoratorAbstractOpt {
4912
5414
  ;
4913
5415
  ({}); // @--end-of-file-for-module=taon lib/decorators/classes/entity-decorator.ts
4914
5416
 
5417
+ /**
5418
+ * Provider decorator
5419
+ */
4915
5420
  function TaonProvider(options) {
4916
5421
  return function (constructor) {
4917
5422
  Reflect.defineMetadata(Symbols.metadata.options.provider, options, constructor);
@@ -4924,6 +5429,21 @@ class TaonProviderOptions extends Models.DecoratorAbstractOpt {
4924
5429
  ;
4925
5430
  ({}); // @--end-of-file-for-module=taon lib/decorators/classes/provider-decorator.ts
4926
5431
 
5432
+ /**
5433
+ * Migration decorator
5434
+ */
5435
+ function TaonMigration(options) {
5436
+ return function (constructor) {
5437
+ Reflect.defineMetadata(Symbols.metadata.options.migration, options, constructor);
5438
+ Reflect.defineMetadata(Symbols.metadata.className, options?.className || constructor.name, constructor);
5439
+ ClassHelpers.setName(constructor, options?.className);
5440
+ };
5441
+ }
5442
+ class TaonMigrationOptions extends Models.DecoratorAbstractOpt {
5443
+ }
5444
+ ;
5445
+ ({}); // @--end-of-file-for-module=taon lib/decorators/classes/migration-decorator.ts
5446
+
4927
5447
  const inject = (entity) => {
4928
5448
  return new Proxy({}, {
4929
5449
  get: (_, propName) => {
@@ -5700,7 +6220,6 @@ class TaonTableComponent {
5700
6220
  await this.retriveData();
5701
6221
  }
5702
6222
  async retriveData() {
5703
- // @ts-ignore
5704
6223
  }
5705
6224
  expansionRow(e) {
5706
6225
  this.expansionChange.next(e);
@@ -5709,7 +6228,7 @@ class TaonTableComponent {
5709
6228
  log.i('context menu event', e);
5710
6229
  }
5711
6230
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5712
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonTableComponent, selector: "taon-table", inputs: { pageNumber: "pageNumber", pageSize: "pageSize", allowedColumns: "allowedColumns", entity: "entity", expansionTemplate: "expansionTemplate", rows: "rows", columns: "columns", pageSizeOptions: "pageSizeOptions" }, outputs: { expansionChange: "expansionChange", addingItem: "addingItem" }, viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true, static: true }], ngImport: i0, template: "<br />\n<columns-container>\n <column grow>\n <mat-form-field class=\"search-input\">\n <input matInput placeholder=\"Type to search table...\" #search />\n </mat-form-field>\n </column>\n <column [width]=\"80\">\n <button\n mat-fab\n [ngClass]=\"{ 'half-opacity': !search.value }\"\n class=\"undo-button\"\n color=\"secondary\"\n (click)=\"search.value = ''\">\n <mat-icon>close </mat-icon>\n </button>\n </column>\n\n <column [width]=\"80\">\n <button\n mat-fab\n (click)=\"addingItem.next()\"\n class=\"undo-button\"\n color=\"primary\">\n <mat-icon>add</mat-icon>\n </button>\n </column>\n</columns-container>\n\n<mtx-grid\n *ngIf=\"rows && columns\"\n [data]=\"rows\"\n [columns]=\"columns\"\n [expandable]=\"expandable\"\n [expansionTemplate]=\"expansionTemplate\"\n (expansionChange)=\"expansionRow($event)\"\n [length]=\"totalElements\"\n [loading]=\"isLoading\"\n [pageOnFront]=\"false\"\n [pageIndex]=\"pageNumber - 1\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showPaginator]=\"showPaginator\"\n (page)=\"getNextPage($event)\">\n</mtx-grid>\n", styles: [":host{min-height:250px}.search-input{width:100%}.undo-button{margin-left:10px}.half-opacity{opacity:.2}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i3.MtxGrid, selector: "mtx-grid", inputs: ["displayedColumns", "columns", "data", "length", "loading", "trackBy", "columnResizable", "emptyValuePlaceholder", "pageOnFront", "showPaginator", "pageDisabled", "showFirstLastButtons", "pageIndex", "pageSize", "pageSizeOptions", "hidePageSize", "paginationTemplate", "sortOnFront", "sortActive", "sortDirection", "sortDisableClear", "sortDisabled", "sortStart", "rowHover", "rowStriped", "expandable", "expansionTemplate", "multiSelectable", "multiSelectionWithClick", "rowSelectable", "hideRowSelectionCheckbox", "disableRowClickSelection", "rowSelectionFormatter", "rowClassFormatter", "rowSelected", "cellSelectable", "showToolbar", "toolbarTitle", "toolbarTemplate", "columnHideable", "columnHideableChecked", "columnSortable", "columnPinnable", "columnPinOptions", "showColumnMenuButton", "columnMenuButtonText", "columnMenuButtonType", "columnMenuButtonColor", "columnMenuButtonClass", "columnMenuButtonIcon", "showColumnMenuHeader", "columnMenuHeaderText", "columnMenuHeaderTemplate", "showColumnMenuFooter", "columnMenuFooterText", "columnMenuFooterTemplate", "noResultText", "noResultTemplate", "headerTemplate", "headerExtraTemplate", "cellTemplate", "useContentRowTemplate", "useContentHeaderRowTemplate", "useContentFooterRowTemplate", "showSummary", "summaryTemplate", "showSidebar", "sidebarTemplate", "showStatusbar", "statusbarTemplate"], outputs: ["page", "sortChange", "rowClick", "rowContextMenu", "expansionChange", "rowSelectedChange", "cellSelectedChange", "columnChange"], exportAs: ["mtxGrid"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i1$3.ColumnsComponent, selector: "columns-container" }, { kind: "component", type: i1$3.ColumnComponent, selector: "column", inputs: ["width"] }, { kind: "directive", type: i1$3.DirectiveGrow, selector: "[grow]" }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6$1.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }] }); }
6231
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonTableComponent, selector: "taon-table", inputs: { pageNumber: "pageNumber", pageSize: "pageSize", allowedColumns: "allowedColumns", entity: "entity", expansionTemplate: "expansionTemplate", rows: "rows", columns: "columns", pageSizeOptions: "pageSizeOptions" }, outputs: { expansionChange: "expansionChange", addingItem: "addingItem" }, viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true, static: true }], ngImport: i0, template: "<br />\n<columns-container>\n <column grow>\n <mat-form-field class=\"search-input\">\n <input matInput placeholder=\"Type to search table...\" #search />\n </mat-form-field>\n </column>\n <column [width]=\"80\">\n <button\n mat-fab\n [ngClass]=\"{ 'half-opacity': !search.value }\"\n class=\"undo-button\"\n color=\"secondary\"\n (click)=\"search.value = ''\">\n <mat-icon>close </mat-icon>\n </button>\n </column>\n\n <column [width]=\"80\">\n <button\n mat-fab\n (click)=\"addingItem.next()\"\n class=\"undo-button\"\n color=\"primary\">\n <mat-icon>add</mat-icon>\n </button>\n </column>\n</columns-container>\n\n<mtx-grid\n *ngIf=\"rows && columns\"\n [data]=\"rows\"\n [columns]=\"columns\"\n [expandable]=\"expandable\"\n [expansionTemplate]=\"expansionTemplate\"\n (expansionChange)=\"expansionRow($event)\"\n [length]=\"totalElements\"\n [loading]=\"isLoading\"\n [pageOnFront]=\"false\"\n [pageIndex]=\"pageNumber - 1\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showPaginator]=\"showPaginator\"\n (page)=\"getNextPage($event)\">\n</mtx-grid>\n", styles: [":host{min-height:250px}.search-input{width:100%}.undo-button{margin-left:10px}.half-opacity{opacity:.2}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i3$1.MtxGrid, selector: "mtx-grid", inputs: ["displayedColumns", "columns", "data", "length", "loading", "trackBy", "columnResizable", "emptyValuePlaceholder", "pageOnFront", "showPaginator", "pageDisabled", "showFirstLastButtons", "pageIndex", "pageSize", "pageSizeOptions", "hidePageSize", "paginationTemplate", "sortOnFront", "sortActive", "sortDirection", "sortDisableClear", "sortDisabled", "sortStart", "rowHover", "rowStriped", "expandable", "expansionTemplate", "multiSelectable", "multiSelectionWithClick", "rowSelectable", "hideRowSelectionCheckbox", "disableRowClickSelection", "rowSelectionFormatter", "rowClassFormatter", "rowSelected", "cellSelectable", "showToolbar", "toolbarTitle", "toolbarTemplate", "columnHideable", "columnHideableChecked", "columnSortable", "columnPinnable", "columnPinOptions", "showColumnMenuButton", "columnMenuButtonText", "columnMenuButtonType", "columnMenuButtonColor", "columnMenuButtonClass", "columnMenuButtonIcon", "showColumnMenuHeader", "columnMenuHeaderText", "columnMenuHeaderTemplate", "showColumnMenuFooter", "columnMenuFooterText", "columnMenuFooterTemplate", "noResultText", "noResultTemplate", "headerTemplate", "headerExtraTemplate", "cellTemplate", "useContentRowTemplate", "useContentHeaderRowTemplate", "useContentFooterRowTemplate", "showSummary", "summaryTemplate", "showSidebar", "sidebarTemplate", "showStatusbar", "statusbarTemplate"], outputs: ["page", "sortChange", "rowClick", "rowContextMenu", "expansionChange", "rowSelectedChange", "cellSelectedChange", "columnChange"], exportAs: ["mtxGrid"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i1$3.ColumnsComponent, selector: "columns-container" }, { kind: "component", type: i1$3.ColumnComponent, selector: "column", inputs: ["width"] }, { kind: "directive", type: i1$3.DirectiveGrow, selector: "[grow]" }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }] }); }
5713
6232
  }
5714
6233
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonTableComponent, decorators: [{
5715
6234
  type: Component,
@@ -5789,36 +6308,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
5789
6308
  ;
5790
6309
  ({}); // @--end-of-file-for-module=taon lib/ui/taon-table/index.ts
5791
6310
 
5792
- class TaonAdminService {
5793
- /**
5794
- * @deprecated
5795
- */
5796
- disableScroll() {
5797
- }
5798
- constructor(cdr) {
5799
- this.cdr = cdr;
5800
- this.admin = window['taon'];
5801
- }
5802
- addTab(name, template) {
5803
- this.admin.cmp.tabs.push({
5804
- name,
5805
- template,
5806
- });
5807
- }
5808
- init(taonAdminModeConfigurationComponent) {
5809
- this.taonAdminModeConfigurationComponent =
5810
- taonAdminModeConfigurationComponent;
5811
- }
5812
- 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 }); }
5813
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, providedIn: 'root' }); }
5814
- }
5815
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, decorators: [{
5816
- type: Injectable,
5817
- args: [{ providedIn: 'root' }]
5818
- }], ctorParameters: () => [{ type: i0.ApplicationRef }] });
5819
- ;
5820
- ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin-control.service.ts
5821
-
5822
6311
  class TaonAdminModeConfigurationComponent {
5823
6312
  get opened() {
5824
6313
  return !this.isIframe && this.admin.adminPanelIsOpen;
@@ -5833,13 +6322,12 @@ class TaonAdminModeConfigurationComponent {
5833
6322
  }
5834
6323
  this.admin.adminPanelIsOpen = v;
5835
6324
  }
5836
- constructor(breakpointsService) {
6325
+ constructor(breakpointsService, admin) {
5837
6326
  this.breakpointsService = breakpointsService;
6327
+ this.admin = admin;
5838
6328
  this.$destroy = new Subject();
5839
6329
  this.cdr = inject$1(ChangeDetectorRef);
5840
6330
  this.taonAdminService = inject$1(TaonAdminService);
5841
- this.tabs = [];
5842
- this.admin = window['taon'];
5843
6331
  this.isWebSQLMode = Helpers.isWebSQL;
5844
6332
  this.hideTaonToolsInProduction = ENV.hideTaonToolsInProduction && ENV.angularProd;
5845
6333
  this.isIframe = window.location !== window.parent.location;
@@ -5858,7 +6346,6 @@ class TaonAdminModeConfigurationComponent {
5858
6346
  this.dragPositionZero = { x: 0, y: 0 };
5859
6347
  this.taonAdminModeConfigurationDataChanged = new EventEmitter();
5860
6348
  this.taonAdminModeConfigurationData = {};
5861
- this.admin.cmp = this;
5862
6349
  this.breakpointsService
5863
6350
  .listenTo()
5864
6351
  .pipe(takeUntil(this.$destroy))
@@ -5866,14 +6353,6 @@ class TaonAdminModeConfigurationComponent {
5866
6353
  // @ts-ignore
5867
6354
  this.isDesktop = breakpoint === 'desktop';
5868
6355
  });
5869
- this.taonAdminService.init(this);
5870
- }
5871
- reloadTabs() {
5872
- this.reloading = true;
5873
- setTimeout(() => {
5874
- this.reloading = false;
5875
- console.log('reloading done');
5876
- });
5877
6356
  }
5878
6357
  async ngOnInit() {
5879
6358
  await Stor.awaitPendingOperatios();
@@ -5897,6 +6376,16 @@ class TaonAdminModeConfigurationComponent {
5897
6376
  onResize(event) {
5898
6377
  this.height = window.innerHeight;
5899
6378
  }
6379
+ async reloadTabs() {
6380
+ return new Promise(resolve => {
6381
+ this.reloading = true;
6382
+ setTimeout(() => {
6383
+ this.reloading = false;
6384
+ console.log('reloading done');
6385
+ resolve();
6386
+ });
6387
+ });
6388
+ }
5900
6389
  async toogle() {
5901
6390
  this.opened = !this.opened;
5902
6391
  }
@@ -5918,37 +6407,47 @@ class TaonAdminModeConfigurationComponent {
5918
6407
  scrollTabs(event) {
5919
6408
  return;
5920
6409
  }
5921
- 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 }); }
5922
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonAdminModeConfigurationComponent, selector: "app-taon-admin-mode-configuration", inputs: { taonAdminModeConfigurationData: "taonAdminModeConfigurationData" }, outputs: { taonAdminModeConfigurationDataChanged: "taonAdminModeConfigurationDataChanged" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabGroup"], descendants: true }], ngImport: i0, template: "<!-- #region basic global components -->\n<taon-session-passcode\n *ngIf=\"showPasscode\"\n [passcode]=\"passcode\"\n [message]=\"message\" />\n<!-- <taon-progress-bar [isDesktop]=\"isDesktop\"></taon-progress-bar> -->\n<!-- <taon-notifications></taon-notifications> -->\n<button\n mat-fab\n class=\"fab-button\"\n color=\"accent\"\n aria-label=\"Taon Admin Mode\"\n *ngIf=\"\n !admin.draggablePopupMode &&\n isDesktop &&\n !isIframe &&\n !hideTaonToolsInProduction\n \"\n (click)=\"toogle()\">\n <mat-icon>build</mat-icon>\n</button>\n<!-- #endregion -->\n\n<!-- #region small hidden button -->\n<!-- <button class=\"admin-show-button\"\n *ngIf=\"!admin.draggablePopupMode && isDesktop\"\n (click)=\"toogle()\"> Admin </button> -->\n<!-- #endregion -->\n\n<ng-template #contentNoScroll>\n <ng-content> </ng-content>\n</ng-template>\n\n<ng-template #content>\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"contentNoScroll\"></ng-container>\n </ng-scrollbar>\n</ng-template>\n\n<!-- #region admin tabs -->\n<ng-template #adminTabs>\n <div class=\"taon-header-admin-wrapper\">\n <columns-container\n class=\"taon-header-admin\"\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column width=\"200\" class=\"logo-header\">\n <img\n *ngIf=\"openedOnce\"\n src=\"assets/assets-for/taon/shared/logo-header-admin-mode.png\" />\n </column>\n\n <column grow>\n <!-- <span>Super Admin Mode</span> -->\n </column>\n\n <column\n width=\"40\"\n *ngIf=\"\n !admin.draggablePopupModeFullScreen && !admin.draggablePopupMode\n \">\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"\n admin.draggablePopupMode = false;\n opened = false;\n wasOpenDraggablePopup = true\n \"\n class=\"admin-close-button\">\n <mat-icon>close </mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"toogle()\"\n class=\"admin-close-button\">\n <mat-icon>close</mat-icon>\n </button>\n </column>\n\n <column width=\"40\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>close_fullscreen</mat-icon>\n </button>\n </column>\n\n <column width=\"40\" *ngIf=\"!admin.draggablePopupModeFullScreen\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = true\"\n class=\"admin-close-button\">\n <mat-icon>launch</mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = false; resetDrag()\"\n class=\"admin-close-button\">\n <mat-icon style=\"transform: rotate(180deg)\">login</mat-icon>\n </button>\n </column>\n </columns-container>\n </div>\n\n <columns-container\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column grow>\n <mat-tab-group\n dynamicHeight\n (wheel)=\"scrollTabs($event)\"\n #tabGroup\n [selectedIndex]=\"selectedIndex\"\n (selectedIndexChange)=\"selectedIndex = $event\">\n <mat-tab label=\"DB/Cache\">\n <section>\n <mat-card>\n <mat-card-header>\n <mat-card-subtitle>WEBSQL MODE</mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <mat-checkbox\n [disabled]=\"!isWebSQLMode\"\n [ngModel]=\"admin.keepWebsqlDbDataAfterReload\"\n (change)=\"\n admin.setKeepWebsqlDbDataAfterReload($event.checked)\n \">\n Don't remove data when reloading\n </mat-checkbox>\n </mat-card-content>\n </mat-card>\n </section>\n <br />\n <taon-db-admin />\n </mat-tab>\n\n <mat-tab label=\"Files\" *ngIf=\"admin.enabledTabs.includes('files')\">\n <section>\n <mat-checkbox\n [ngModel]=\"admin.filesEditMode\"\n (change)=\"admin.setEditMode($event.checked)\"\n >Edit mode</mat-checkbox\n >\n </section>\n <!-- admin.filesEditMode: {{ admin.filesEditMode }} -->\n <!-- <taon-admin-edit-mode *ngIf=\"admin.filesEditMode\">\n </taon-admin-edit-mode> -->\n <br />\n <hr *ngIf=\"admin.filesEditMode\" />\n <!-- <section>\n <button mat-raised-button>[TODO] Clear Files from browser cache </button> <br>\n <button mat-raised-button>[TODO] Start files export (as zip) </button> <br>\n <button mat-raised-button>[TODO] Import whole database (from zip) </button><br>\n </section> -->\n </mat-tab>\n <mat-tab *ngFor=\"let tab of tabs\" label=\"{{ tab.name }}\">\n <div\n class=\"full-tabs\"\n [style.height.px]=\"height - 150\"\n *ngIf=\"!isIframe\">\n <ng-container *ngTemplateOutlet=\"tab.template\"></ng-container>\n </div>\n <ng-container *ngIf=\"isIframe\">\n <ng-container *ngTemplateOutlet=\"tab.template\"></ng-container>\n </ng-container>\n </mat-tab>\n\n <!-- <mat-tab label=\"Portal\">\n <section>\n <mat-checkbox>[TODO] Maintenance Mode for whole portal</mat-checkbox>\n\n <mat-expansion-panel>\n\n <mat-expansion-panel-header>\n [TODO] Active User: 80432\n </mat-expansion-panel-header>\n <section>\n <button mat-raised-button>[TODO] Send notification to users </button><br>\n <button mat-raised-button>[TODO] Send email to users </button><br>\n </section>\n </mat-expansion-panel>\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n [TODO] Enable features\n </mat-expansion-panel-header>\n <mat-checkbox>[TODO] AB testing</mat-checkbox> <br>\n <mat-checkbox>\n [TODO] Newsletter email question popup\n </mat-checkbox> <br>\n <mat-checkbox>\n [TODO] Promotion popup\n </mat-checkbox> <br>\n </mat-expansion-panel>\n </section>\n </mat-tab>\n <mat-tab label=\"User\">\n Welcome in user managements\n </mat-tab>\n <mat-tab label=\"Translations\">\n Welcome in user managements\n </mat-tab> -->\n </mat-tab-group>\n </column>\n </columns-container>\n</ng-template>\n<!-- #endregion -->\n\n<!-- #region small/mobile draggable popup windows -->\n<div\n class=\"draggable-popup-mode-window\"\n *ngIf=\"\n admin.draggablePopupMode && !admin.draggablePopupModeFullScreen && !isIframe\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPosition\"\n (cdkDragEnded)=\"moved($event)\">\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </ng-scrollbar>\n</div>\n<!-- #endregion -->\n\n<!-- #region fullscreen draggable popup window -->\n<div\n class=\"draggable-popup-mode-window-full\"\n *ngIf=\"\n admin.draggablePopupMode &&\n admin.draggablePopupModeFullScreen &&\n !isIframe &&\n !reloading\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPositionZero\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region content when not in draggable (or fullscreen draggable) popup -->\n<div\n [style.height.px]=\"height\"\n *ngIf=\"\n (isIframe ||\n !isDesktop ||\n admin.draggablePopupMode ||\n admin.draggablePopupModeFullScreen) &&\n !reloading\n \"\n style=\"width: 100%; display: block\"\n class=\"content\">\n <ng-container\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region draggable popup window -->\n<mat-drawer-container\n *ngIf=\"!admin.draggablePopupMode && isDesktop && !isIframe\"\n class=\"example-container\"\n [style.height.px]=\"height\"\n style=\"background-color: transparent\"\n (backdropClick)=\"opened = false\"\n [hasBackdrop]=\"false\">\n <mat-drawer #drawer style=\"width: 580px\" [opened]=\"opened\" [mode]=\"'side'\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </mat-drawer>\n <mat-drawer-content style=\"overflow: hidden\">\n <ng-container\n *ngIf=\"!admin.draggablePopupMode && !reloading\"\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n </mat-drawer-content>\n</mat-drawer-container>\n<!-- #endregion -->\n", styles: ["section{display:block;padding:10px}section>*{margin-top:0!important;margin-bottom:10px!important}section>*:last-child{margin-bottom:0!important}:host{display:block}.draggable-column{display:block!important;width:100%!important}.admin-show-button{position:fixed;bottom:100px;left:-15px;z-index:2147483647;transform:rotate(90deg);border:0px;color:#fff;background:gray;opacity:.1;cursor:pointer}.admin-show-button:hover{opacity:1}.taon-ui-super-admin-mode{font-family:JosefinSans-Bold;text-align:right;margin-right:10px}mat-drawer{margin:0;background-color:#dcdcdc!important}.taon-header-admin-wrapper{overflow:hidden;width:100%;display:block}.taon-header-admin{background:#fff;box-shadow:0 -9px 6px 6px #000;height:47px}.taon-header-admin .logo-header img{height:18px;padding:8px;position:relative;float:left;top:7px;box-sizing:content-box;transform:scale(1.5);left:49px}.draggable-popup-mode-window{width:600px;height:500px;border:solid 1px #ccc;color:#000000de;cursor:move;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important;transition:box-shadow .2s cubic-bezier(0,0,.2,1);box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.draggable-popup-mode-window:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.draggable-popup-mode-window-full{width:100%;height:100%;overflow:scroll;color:#000000de;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important}.admin-close-button{float:right}.fab-button{position:fixed;right:110px;bottom:100px;z-index:10;background-color:#dcdcdc;color:#8f8f8f}.full-tabs{padding:10px}.mat-drawer-container-full-screen{background-color:red}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$3.ColumnsComponent, selector: "columns-container" }, { kind: "component", type: i1$3.ColumnComponent, selector: "column", inputs: ["width"] }, { kind: "directive", type: i1$3.DirectiveGrow, selector: "[grow]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$1.NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "directive", type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i6$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6$1.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i7.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i7.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i7.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i10.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i10.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "component", type: i11.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i11.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: TaonSessionPasscodeComponent, selector: "taon-session-passcode", inputs: ["passcode", "message"] }] }); }
6410
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationComponent, deps: [{ token: i1$3.BreakpointsService }, { token: TaonAdminService }], target: i0.ɵɵFactoryTarget.Component }); }
6411
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonAdminModeConfigurationComponent, isStandalone: true, selector: "taon-admin-mode-configuration", inputs: { taonAdminModeConfigurationData: "taonAdminModeConfigurationData" }, outputs: { taonAdminModeConfigurationDataChanged: "taonAdminModeConfigurationDataChanged" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabGroup"], descendants: true }], ngImport: i0, template: "<!-- #region basic global components -->\n<taon-session-passcode\n *ngIf=\"showPasscode\"\n [passcode]=\"passcode\"\n [message]=\"message\" />\n<!-- <taon-progress-bar [isDesktop]=\"isDesktop\"></taon-progress-bar> -->\n<!-- <taon-notifications></taon-notifications> -->\n<button\n mat-fab\n class=\"fab-button\"\n color=\"accent\"\n aria-label=\"Taon Admin Mode\"\n *ngIf=\"\n !admin.draggablePopupMode &&\n isDesktop &&\n !isIframe &&\n !hideTaonToolsInProduction\n \"\n (click)=\"toogle()\">\n <mat-icon>build</mat-icon>\n</button>\n<!-- #endregion -->\n\n<!-- #region small hidden button -->\n<!-- <button class=\"admin-show-button\"\n *ngIf=\"!admin.draggablePopupMode && isDesktop\"\n (click)=\"toogle()\"> Admin </button> -->\n<!-- #endregion -->\n\n<ng-template #contentNoScroll>\n <ng-content> </ng-content>\n</ng-template>\n\n<ng-template #content>\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"contentNoScroll\"></ng-container>\n </ng-scrollbar>\n</ng-template>\n\n<!-- #region admin tabs -->\n<ng-template #adminTabs>\n <!-- #region admin tabs / header -->\n <div class=\"taon-header-admin-wrapper\">\n <columns-container\n class=\"taon-header-admin\"\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column\n width=\"200\"\n class=\"logo-header\">\n <img\n *ngIf=\"openedOnce\"\n src=\"assets/assets-for/taon/shared/logo-header-admin-mode.png\" />\n </column>\n\n <column grow>\n <!-- <span>Super Admin Mode</span> -->\n </column>\n\n <column\n width=\"40\"\n *ngIf=\"\n !admin.draggablePopupModeFullScreen && !admin.draggablePopupMode\n \">\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"\n admin.draggablePopupMode = false;\n opened = false;\n wasOpenDraggablePopup = true\n \"\n class=\"admin-close-button\">\n <mat-icon>close </mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"toogle()\"\n class=\"admin-close-button\">\n <mat-icon>close</mat-icon>\n </button>\n </column>\n\n <column width=\"40\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>close_fullscreen</mat-icon>\n </button>\n </column>\n\n <column\n width=\"40\"\n *ngIf=\"!admin.draggablePopupModeFullScreen\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = true\"\n class=\"admin-close-button\">\n <mat-icon>launch</mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = false; resetDrag()\"\n class=\"admin-close-button\">\n <mat-icon style=\"transform: rotate(180deg)\">login</mat-icon>\n </button>\n </column>\n </columns-container>\n </div>\n <!-- #endregion -->\n\n <columns-container\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column grow>\n <mat-tab-group\n dynamicHeight\n (wheel)=\"scrollTabs($event)\"\n #tabGroup\n [selectedIndex]=\"selectedIndex\"\n (selectedIndexChange)=\"selectedIndex = $event\">\n <mat-tab label=\"DB/Cache\">\n <section>\n <mat-card>\n <mat-card-header>\n <mat-card-subtitle>WEBSQL MODE</mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <mat-checkbox\n [disabled]=\"!isWebSQLMode\"\n [ngModel]=\"admin.keepWebsqlDbDataAfterReload\"\n (change)=\"\n admin.setKeepWebsqlDbDataAfterReload($event.checked)\n \">\n Don't remove data when reloading\n </mat-checkbox>\n </mat-card-content>\n </mat-card>\n </section>\n <br />\n <taon-db-admin />\n </mat-tab>\n </mat-tab-group>\n </column>\n </columns-container>\n</ng-template>\n<!-- #endregion -->\n\n<!-- #region small/mobile draggable popup windows -->\n<div\n class=\"draggable-popup-mode-window\"\n *ngIf=\"\n admin.draggablePopupMode && !admin.draggablePopupModeFullScreen && !isIframe\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPosition\"\n (cdkDragEnded)=\"moved($event)\">\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </ng-scrollbar>\n</div>\n<!-- #endregion -->\n\n<!-- #region fullscreen draggable popup window -->\n<div\n class=\"draggable-popup-mode-window-full\"\n *ngIf=\"\n admin.draggablePopupMode &&\n admin.draggablePopupModeFullScreen &&\n !isIframe &&\n !reloading\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPositionZero\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region content when not in draggable (or fullscreen draggable) popup -->\n<div\n [style.height.px]=\"height\"\n *ngIf=\"\n (isIframe ||\n !isDesktop ||\n admin.draggablePopupMode ||\n admin.draggablePopupModeFullScreen) &&\n !reloading\n \"\n style=\"width: 100%; display: block\"\n class=\"content\">\n <ng-container\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region draggable popup window -->\n<mat-drawer-container\n *ngIf=\"!admin.draggablePopupMode && isDesktop && !isIframe\"\n class=\"example-container\"\n [style.height.px]=\"height\"\n style=\"background-color: transparent\"\n (backdropClick)=\"opened = false\"\n [hasBackdrop]=\"false\">\n <mat-drawer\n #drawer\n style=\"width: 580px\"\n [opened]=\"opened\"\n [mode]=\"'side'\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </mat-drawer>\n <mat-drawer-content style=\"overflow: hidden\">\n <ng-container\n *ngIf=\"!admin.draggablePopupMode && !reloading\"\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n </mat-drawer-content>\n</mat-drawer-container>\n<!-- #endregion -->\n", styles: ["section{display:block;padding:10px}section>*{margin-top:0!important;margin-bottom:10px!important}section>*:last-child{margin-bottom:0!important}:host{display:block}.draggable-column{display:block!important;width:100%!important}.admin-show-button{position:fixed;bottom:100px;left:-15px;z-index:2147483647;transform:rotate(90deg);border:0px;color:#fff;background:gray;opacity:.1;cursor:pointer}.admin-show-button:hover{opacity:1}.taon-ui-super-admin-mode{font-family:JosefinSans-Bold;text-align:right;margin-right:10px}mat-drawer{margin:0;background-color:#dcdcdc!important}.taon-header-admin-wrapper{overflow:hidden;width:100%;display:block}.taon-header-admin{background:#fff;box-shadow:0 -9px 6px 6px #000;height:47px}.taon-header-admin .logo-header img{height:18px;padding:8px;position:relative;float:left;top:7px;box-sizing:content-box;transform:scale(1.5);left:49px}.draggable-popup-mode-window{width:600px;height:500px;border:solid 1px #ccc;color:#000000de;cursor:move;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important;transition:box-shadow .2s cubic-bezier(0,0,.2,1);box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.draggable-popup-mode-window:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.draggable-popup-mode-window-full{width:100%;height:100%;overflow:scroll;color:#000000de;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important}.admin-close-button{float:right}.fab-button{position:fixed;right:110px;bottom:100px;z-index:10;background-color:#dcdcdc;color:#8f8f8f}.full-tabs{padding:10px}.mat-drawer-container-full-screen{background-color:red}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: StaticColumnsModule }, { kind: "component", type: i1$3.ColumnsComponent, selector: "columns-container" }, { kind: "component", type: i1$3.ColumnComponent, selector: "column", inputs: ["width"] }, { kind: "directive", type: i1$3.DirectiveGrow, selector: "[grow]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NgScrollbarModule }, { kind: "component", type: i5.NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "ngmodule", type: TaonProgressBarModule }, { kind: "ngmodule", type: TaonNotificationsModule }, { kind: "ngmodule", type: TaonFullMaterialModule }, { kind: "directive", type: i6$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i7.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i8.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i8.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "component", type: i9.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i11.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i11.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i11.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "component", type: i12.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i12.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: // TODO import only partial things
6412
+ TaonSessionPasscodeComponent, selector: "taon-session-passcode", inputs: ["passcode", "message"] }] }); }
5923
6413
  }
5924
6414
  __decorate([
5925
- Stor.property.in.localstorage
6415
+ (Stor.property.in.localstorage
5926
6416
  .for(TaonAdminModeConfigurationComponent)
5927
- .withDefaultValue(0),
6417
+ .withDefaultValue(0)),
5928
6418
  __metadata("design:type", Number)
5929
6419
  ], TaonAdminModeConfigurationComponent.prototype, "dragPositionX", void 0);
5930
6420
  __decorate([
5931
- Stor.property.in.localstorage
6421
+ (Stor.property.in.localstorage
5932
6422
  .for(TaonAdminModeConfigurationComponent)
5933
- .withDefaultValue(0),
6423
+ .withDefaultValue(0)),
5934
6424
  __metadata("design:type", Number)
5935
6425
  ], TaonAdminModeConfigurationComponent.prototype, "dragPositionY", void 0);
5936
6426
  __decorate([
5937
- Stor.property.in.localstorage
6427
+ (Stor.property.in.localstorage
5938
6428
  .for(TaonAdminModeConfigurationComponent)
5939
- .withDefaultValue(0),
6429
+ .withDefaultValue(0)),
5940
6430
  __metadata("design:type", Number)
5941
6431
  ], TaonAdminModeConfigurationComponent.prototype, "selectedIndex", void 0);
5942
6432
  __decorate([
5943
- Stor.property.in.localstorage
6433
+ (Stor.property.in.localstorage
5944
6434
  .for(TaonAdminModeConfigurationComponent)
5945
- .withDefaultValue(false),
6435
+ .withDefaultValue(false)),
5946
6436
  __metadata("design:type", Boolean)
5947
6437
  ], TaonAdminModeConfigurationComponent.prototype, "wasOpenDraggablePopup", void 0);
5948
6438
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationComponent, decorators: [{
5949
6439
  type: Component,
5950
- 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"] }]
5951
- }], ctorParameters: () => [{ type: i1$3.BreakpointsService }], propDecorators: { tabGroup: [{
6440
+ args: [{ selector: 'taon-admin-mode-configuration', standalone: true, imports: [
6441
+ CommonModule,
6442
+ StaticColumnsModule,
6443
+ FormsModule,
6444
+ NgScrollbarModule,
6445
+ TaonProgressBarModule,
6446
+ TaonNotificationsModule,
6447
+ TaonFullMaterialModule, // TODO import only partial things
6448
+ TaonSessionPasscodeComponent,
6449
+ ], template: "<!-- #region basic global components -->\n<taon-session-passcode\n *ngIf=\"showPasscode\"\n [passcode]=\"passcode\"\n [message]=\"message\" />\n<!-- <taon-progress-bar [isDesktop]=\"isDesktop\"></taon-progress-bar> -->\n<!-- <taon-notifications></taon-notifications> -->\n<button\n mat-fab\n class=\"fab-button\"\n color=\"accent\"\n aria-label=\"Taon Admin Mode\"\n *ngIf=\"\n !admin.draggablePopupMode &&\n isDesktop &&\n !isIframe &&\n !hideTaonToolsInProduction\n \"\n (click)=\"toogle()\">\n <mat-icon>build</mat-icon>\n</button>\n<!-- #endregion -->\n\n<!-- #region small hidden button -->\n<!-- <button class=\"admin-show-button\"\n *ngIf=\"!admin.draggablePopupMode && isDesktop\"\n (click)=\"toogle()\"> Admin </button> -->\n<!-- #endregion -->\n\n<ng-template #contentNoScroll>\n <ng-content> </ng-content>\n</ng-template>\n\n<ng-template #content>\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"contentNoScroll\"></ng-container>\n </ng-scrollbar>\n</ng-template>\n\n<!-- #region admin tabs -->\n<ng-template #adminTabs>\n <!-- #region admin tabs / header -->\n <div class=\"taon-header-admin-wrapper\">\n <columns-container\n class=\"taon-header-admin\"\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column\n width=\"200\"\n class=\"logo-header\">\n <img\n *ngIf=\"openedOnce\"\n src=\"assets/assets-for/taon/shared/logo-header-admin-mode.png\" />\n </column>\n\n <column grow>\n <!-- <span>Super Admin Mode</span> -->\n </column>\n\n <column\n width=\"40\"\n *ngIf=\"\n !admin.draggablePopupModeFullScreen && !admin.draggablePopupMode\n \">\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"\n admin.draggablePopupMode = false;\n opened = false;\n wasOpenDraggablePopup = true\n \"\n class=\"admin-close-button\">\n <mat-icon>close </mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"toogle()\"\n class=\"admin-close-button\">\n <mat-icon>close</mat-icon>\n </button>\n </column>\n\n <column width=\"40\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>close_fullscreen</mat-icon>\n </button>\n </column>\n\n <column\n width=\"40\"\n *ngIf=\"!admin.draggablePopupModeFullScreen\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = true\"\n class=\"admin-close-button\">\n <mat-icon>launch</mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = false; resetDrag()\"\n class=\"admin-close-button\">\n <mat-icon style=\"transform: rotate(180deg)\">login</mat-icon>\n </button>\n </column>\n </columns-container>\n </div>\n <!-- #endregion -->\n\n <columns-container\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column grow>\n <mat-tab-group\n dynamicHeight\n (wheel)=\"scrollTabs($event)\"\n #tabGroup\n [selectedIndex]=\"selectedIndex\"\n (selectedIndexChange)=\"selectedIndex = $event\">\n <mat-tab label=\"DB/Cache\">\n <section>\n <mat-card>\n <mat-card-header>\n <mat-card-subtitle>WEBSQL MODE</mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <mat-checkbox\n [disabled]=\"!isWebSQLMode\"\n [ngModel]=\"admin.keepWebsqlDbDataAfterReload\"\n (change)=\"\n admin.setKeepWebsqlDbDataAfterReload($event.checked)\n \">\n Don't remove data when reloading\n </mat-checkbox>\n </mat-card-content>\n </mat-card>\n </section>\n <br />\n <taon-db-admin />\n </mat-tab>\n </mat-tab-group>\n </column>\n </columns-container>\n</ng-template>\n<!-- #endregion -->\n\n<!-- #region small/mobile draggable popup windows -->\n<div\n class=\"draggable-popup-mode-window\"\n *ngIf=\"\n admin.draggablePopupMode && !admin.draggablePopupModeFullScreen && !isIframe\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPosition\"\n (cdkDragEnded)=\"moved($event)\">\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </ng-scrollbar>\n</div>\n<!-- #endregion -->\n\n<!-- #region fullscreen draggable popup window -->\n<div\n class=\"draggable-popup-mode-window-full\"\n *ngIf=\"\n admin.draggablePopupMode &&\n admin.draggablePopupModeFullScreen &&\n !isIframe &&\n !reloading\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPositionZero\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region content when not in draggable (or fullscreen draggable) popup -->\n<div\n [style.height.px]=\"height\"\n *ngIf=\"\n (isIframe ||\n !isDesktop ||\n admin.draggablePopupMode ||\n admin.draggablePopupModeFullScreen) &&\n !reloading\n \"\n style=\"width: 100%; display: block\"\n class=\"content\">\n <ng-container\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region draggable popup window -->\n<mat-drawer-container\n *ngIf=\"!admin.draggablePopupMode && isDesktop && !isIframe\"\n class=\"example-container\"\n [style.height.px]=\"height\"\n style=\"background-color: transparent\"\n (backdropClick)=\"opened = false\"\n [hasBackdrop]=\"false\">\n <mat-drawer\n #drawer\n style=\"width: 580px\"\n [opened]=\"opened\"\n [mode]=\"'side'\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </mat-drawer>\n <mat-drawer-content style=\"overflow: hidden\">\n <ng-container\n *ngIf=\"!admin.draggablePopupMode && !reloading\"\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n </mat-drawer-content>\n</mat-drawer-container>\n<!-- #endregion -->\n", styles: ["section{display:block;padding:10px}section>*{margin-top:0!important;margin-bottom:10px!important}section>*:last-child{margin-bottom:0!important}:host{display:block}.draggable-column{display:block!important;width:100%!important}.admin-show-button{position:fixed;bottom:100px;left:-15px;z-index:2147483647;transform:rotate(90deg);border:0px;color:#fff;background:gray;opacity:.1;cursor:pointer}.admin-show-button:hover{opacity:1}.taon-ui-super-admin-mode{font-family:JosefinSans-Bold;text-align:right;margin-right:10px}mat-drawer{margin:0;background-color:#dcdcdc!important}.taon-header-admin-wrapper{overflow:hidden;width:100%;display:block}.taon-header-admin{background:#fff;box-shadow:0 -9px 6px 6px #000;height:47px}.taon-header-admin .logo-header img{height:18px;padding:8px;position:relative;float:left;top:7px;box-sizing:content-box;transform:scale(1.5);left:49px}.draggable-popup-mode-window{width:600px;height:500px;border:solid 1px #ccc;color:#000000de;cursor:move;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important;transition:box-shadow .2s cubic-bezier(0,0,.2,1);box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.draggable-popup-mode-window:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.draggable-popup-mode-window-full{width:100%;height:100%;overflow:scroll;color:#000000de;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important}.admin-close-button{float:right}.fab-button{position:fixed;right:110px;bottom:100px;z-index:10;background-color:#dcdcdc;color:#8f8f8f}.full-tabs{padding:10px}.mat-drawer-container-full-screen{background-color:red}\n"] }]
6450
+ }], ctorParameters: () => [{ type: i1$3.BreakpointsService }, { type: TaonAdminService }], propDecorators: { tabGroup: [{
5952
6451
  type: ViewChild,
5953
6452
  args: ['tabGroup']
5954
6453
  }], taonAdminModeConfigurationDataChanged: [{
@@ -5962,254 +6461,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
5962
6461
  ;
5963
6462
  ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.ts
5964
6463
 
5965
- class TaonAdminEditModeComponent {
5966
- constructor(router) {
5967
- this.router = router;
5968
- this.inited$ = of(true);
5969
- this.destroyed$ = new Subject();
5970
- this.handlers = [];
5971
- this.columns = [
5972
- {
5973
- header: 'ID',
5974
- field: 'id',
5975
- maxWidth: 100,
5976
- showExpand: true,
5977
- },
5978
- {
5979
- header: 'src',
5980
- field: 'src',
5981
- maxWidth: 250,
5982
- },
5983
- {
5984
- header: 'Content Type',
5985
- field: 'contentType',
5986
- maxWidth: 120,
5987
- },
5988
- ];
5989
- this.taonAdminEditModeDataChanged = new EventEmitter();
5990
- this.taonAdminEditModeData = {};
5991
- }
5992
- ngOnInit() {
5993
- this.files = this.admin.currentFiles;
5994
- this.handlers.push(this.admin.onEditMode$.subscribe(() => {
5995
- this.refresFilesList();
5996
- }));
5997
- this.admin.onRegisterFile().pipe(takeUntil(this.destroyed$), tap(() => {
5998
- this.refresFilesList();
5999
- }));
6000
- }
6001
- ngOnDestroy() {
6002
- this.handlers.forEach(h => h.unsubscribe());
6003
- this.destroyed$.next(void 0);
6004
- this.destroyed$.unsubscribe();
6005
- }
6006
- ngAfterViewInit() {
6007
- //Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.
6008
- //Add 'implements AfterViewInit' to the class.
6009
- setTimeout(() => {
6010
- this.refresFilesList();
6011
- }, 500);
6012
- }
6013
- expansionRow(e) {
6014
- console.log(e);
6015
- }
6016
- refresFilesList() {
6017
- this.files = this.admin.currentFiles;
6018
- }
6019
- searchFind(file) {
6020
- if (!!this?.fileToSearch) {
6021
- return file?.src?.search(this?.fileToSearch) !== -1;
6022
- }
6023
- return true;
6024
- }
6025
- 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 }); }
6026
- 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" }] }); }
6027
- }
6028
- __decorate([
6029
- (Stor.property.in.localstorage
6030
- .for(TaonAdminEditModeComponent)
6031
- .withDefaultValue(0)),
6032
- __metadata("design:type", Number)
6033
- ], TaonAdminEditModeComponent.prototype, "selectedTabIndex", void 0);
6034
- __decorate([
6035
- (Stor.property.in.localstorage
6036
- .for(TaonAdminEditModeComponent)
6037
- .withDefaultValue('')),
6038
- __metadata("design:type", String)
6039
- ], TaonAdminEditModeComponent.prototype, "fileToSearch", void 0);
6040
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeComponent, decorators: [{
6041
- type: Component,
6042
- 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"] }]
6043
- }], ctorParameters: () => [{ type: i1$4.Router }], propDecorators: { taonAdminEditModeDataChanged: [{
6044
- type: Output
6045
- }], taonAdminEditModeData: [{
6046
- type: Input
6047
- }] } });
6048
- ;
6049
- ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.ts
6050
-
6051
- class TaonFileGeneralOptComponent {
6052
- constructor() {
6053
- this.height = 100;
6054
- this.handlers = [];
6055
- this.fieldsOrder = [];
6056
- this.fields = [
6057
- {
6058
- key: 'width',
6059
- },
6060
- {
6061
- key: 'height',
6062
- },
6063
- {
6064
- key: 'display',
6065
- },
6066
- {
6067
- key: 'widthUnit',
6068
- },
6069
- {
6070
- key: 'heightUnit', // @ts-ignore
6071
- },
6072
- {
6073
- key: 'action',
6074
- type: 'action',
6075
- templateOptions: {
6076
- label: 'Reset',
6077
- icon: 'cancel',
6078
- raised: true,
6079
- action: () => {
6080
- console.log('reset');
6081
- },
6082
- },
6083
- },
6084
- ].map(f => {
6085
- f.className = 'formly-field-half-size';
6086
- return f;
6087
- });
6088
- }
6089
- ngOnInit() { }
6090
- ngOnDestroy() {
6091
- this.handlers.forEach(h => h.unsubscribe());
6092
- }
6093
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6094
- 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"] }); }
6095
- }
6096
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptComponent, decorators: [{
6097
- type: Component,
6098
- 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"] }]
6099
- }], ctorParameters: () => [], propDecorators: { height: [{
6100
- type: HostBinding,
6101
- args: ['style.minHeight.px']
6102
- }, {
6103
- type: Input
6104
- }], file: [{
6105
- type: Input
6106
- }] } });
6107
- ;
6108
- ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.ts
6109
-
6110
- class TaonFileGeneralOptModule {
6111
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6112
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptModule, declarations: [TaonFileGeneralOptComponent], imports: [CommonModule, TaonFullMaterialModule], exports: [TaonFileGeneralOptComponent] }); }
6113
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptModule, imports: [CommonModule, TaonFullMaterialModule] }); }
6114
- }
6115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonFileGeneralOptModule, decorators: [{
6116
- type: NgModule,
6117
- args: [{
6118
- imports: [CommonModule, TaonFullMaterialModule],
6119
- declarations: [TaonFileGeneralOptComponent],
6120
- exports: [TaonFileGeneralOptComponent],
6121
- }]
6122
- }] });
6123
- ;
6124
- ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.ts
6125
-
6126
- ;
6127
- ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.ts
6128
-
6129
- class TaonAdminEditModeModule {
6130
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6131
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeModule, declarations: [TaonAdminEditModeComponent], imports: [CommonModule,
6132
- StaticColumnsModule,
6133
- NgScrollbarModule,
6134
- TaonFileGeneralOptModule,
6135
- FormsModule,
6136
- NgArrayPipesModule,
6137
- TaonTableModule,
6138
- TaonFullMaterialModule], exports: [TaonAdminEditModeComponent] }); }
6139
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeModule, imports: [CommonModule,
6140
- StaticColumnsModule,
6141
- NgScrollbarModule,
6142
- TaonFileGeneralOptModule,
6143
- FormsModule,
6144
- NgArrayPipesModule,
6145
- TaonTableModule,
6146
- TaonFullMaterialModule] }); }
6147
- }
6148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminEditModeModule, decorators: [{
6149
- type: NgModule,
6150
- args: [{
6151
- imports: [
6152
- CommonModule,
6153
- StaticColumnsModule,
6154
- NgScrollbarModule,
6155
- TaonFileGeneralOptModule,
6156
- FormsModule,
6157
- NgArrayPipesModule,
6158
- TaonTableModule,
6159
- TaonFullMaterialModule, // TODO import only partial things
6160
- ],
6161
- declarations: [TaonAdminEditModeComponent],
6162
- exports: [TaonAdminEditModeComponent],
6163
- }]
6164
- }] });
6165
- ;
6166
- ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.ts
6167
-
6168
- ;
6169
- ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.ts
6170
-
6171
- class TaonAdminModeConfigurationModule {
6172
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6173
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationModule, declarations: [TaonAdminModeConfigurationComponent], imports: [CommonModule,
6174
- StaticColumnsModule,
6175
- FormsModule,
6176
- NgScrollbarModule,
6177
- TaonAdminEditModeModule,
6178
- TaonProgressBarModule,
6179
- TaonNotificationsModule,
6180
- TaonFullMaterialModule, // TODO import only partial things
6181
- TaonSessionPasscodeComponent], exports: [TaonAdminModeConfigurationComponent] }); }
6182
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationModule, imports: [CommonModule,
6183
- StaticColumnsModule,
6184
- FormsModule,
6185
- NgScrollbarModule,
6186
- TaonAdminEditModeModule,
6187
- TaonProgressBarModule,
6188
- TaonNotificationsModule,
6189
- TaonFullMaterialModule, // TODO import only partial things
6190
- TaonSessionPasscodeComponent] }); }
6191
- }
6192
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationModule, decorators: [{
6193
- type: NgModule,
6194
- args: [{
6195
- imports: [
6196
- CommonModule,
6197
- StaticColumnsModule,
6198
- FormsModule,
6199
- NgScrollbarModule,
6200
- TaonAdminEditModeModule,
6201
- TaonProgressBarModule,
6202
- TaonNotificationsModule,
6203
- TaonFullMaterialModule, // TODO import only partial things
6204
- TaonSessionPasscodeComponent,
6205
- ],
6206
- declarations: [TaonAdminModeConfigurationComponent],
6207
- exports: [TaonAdminModeConfigurationComponent],
6208
- }]
6209
- }] });
6210
- ;
6211
- ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.ts
6212
-
6213
6464
  ;
6214
6465
  ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/index.ts
6215
6466
 
@@ -6229,6 +6480,7 @@ var Taon;
6229
6480
  Taon.Provider = TaonProvider;
6230
6481
  Taon.Repository = TaonRepository;
6231
6482
  Taon.Subscriber = TaonSubscriber;
6483
+ Taon.Migration = TaonMigration;
6232
6484
  Taon.isBrowser = coreHelpers.Helpers.isBrowser;
6233
6485
  Taon.isNode = coreHelpers.Helpers.isNode;
6234
6486
  Taon.isWebSQL = coreHelpers.Helpers.isWebSQL;
@@ -6265,5 +6517,5 @@ var Taon;
6265
6517
  * Generated bundle index. Do not edit.
6266
6518
  */
6267
6519
 
6268
- export { BaseContext, BaseController, BaseEntity, BaseProvider, BaseRepository, ClassHelpers, Models, SafePipe, Taon, TaonAdminModeConfigurationComponent, TaonAdminModeConfigurationModule, TaonAdminService, TaonFullMaterialModule, TaonGithubForkMeCornerComponent, TaonGithubForkMeCornerModule, TaonInjectHTMLDirective, TaonLongPress, TaonNotificationOptions, TaonNotificationsComponent, TaonNotificationsModule, TaonNotificationsService, TaonProgressBarComponent, TaonProgressBarModule, TaonSessionPasscodeComponent, TaonTableComponent, TaonTableModule, createContext, inject };
6520
+ export { BaseContext, BaseController, BaseEntity, BaseMigration, BaseProvider, BaseRepository, ClassHelpers, Models, SafePipe, Taon, TaonAdminModeConfigurationComponent, TaonFullMaterialModule, TaonGithubForkMeCornerComponent, TaonGithubForkMeCornerModule, TaonInjectHTMLDirective, TaonLongPress, TaonNotificationOptions, TaonNotificationsComponent, TaonNotificationsModule, TaonNotificationsService, TaonProgressBarComponent, TaonProgressBarModule, TaonSessionPasscodeComponent, TaonTableComponent, TaonTableModule, createContext, inject };
6269
6521
  //# sourceMappingURL=taon.mjs.map