@taon-dev/cms 21.0.16 → 21.0.18

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 (2665) hide show
  1. package/VERIFIED-BUILD-DATA.jsonc +3 -3
  2. package/browser/fesm2022/cms-browser-taon-cms-asset-preview.component.html.de-DE.i18n.data-BVtSn2fs.mjs +31 -0
  3. package/browser/fesm2022/cms-browser-taon-cms-asset-preview.component.html.de-DE.i18n.data-BVtSn2fs.mjs.map +1 -0
  4. package/browser/fesm2022/cms-browser-taon-cms-asset-preview.component.html.en-US.i18n.data-BSUcs0Id.mjs +31 -0
  5. package/browser/fesm2022/cms-browser-taon-cms-asset-preview.component.html.en-US.i18n.data-BSUcs0Id.mjs.map +1 -0
  6. package/browser/fesm2022/cms-browser-taon-cms-asset-preview.component.html.pl-PL.i18n.data-dwvVUvD1.mjs +31 -0
  7. package/browser/fesm2022/cms-browser-taon-cms-asset-preview.component.html.pl-PL.i18n.data-dwvVUvD1.mjs.map +1 -0
  8. package/browser/fesm2022/cms-browser-taon-cms-asset-preview.component.ts.de-DE.i18n.data-B48c-CYU.mjs +21 -0
  9. package/browser/fesm2022/cms-browser-taon-cms-asset-preview.component.ts.de-DE.i18n.data-B48c-CYU.mjs.map +1 -0
  10. package/browser/fesm2022/cms-browser-taon-cms-asset-preview.component.ts.en-US.i18n.data-D9BCToFT.mjs +21 -0
  11. package/browser/fesm2022/cms-browser-taon-cms-asset-preview.component.ts.en-US.i18n.data-D9BCToFT.mjs.map +1 -0
  12. package/browser/fesm2022/cms-browser-taon-cms-asset-preview.component.ts.pl-PL.i18n.data-DsqGl3cF.mjs +21 -0
  13. package/browser/fesm2022/cms-browser-taon-cms-asset-preview.component.ts.pl-PL.i18n.data-DsqGl3cF.mjs.map +1 -0
  14. package/browser/fesm2022/cms-browser-taon-cms-assets-backoffice.component.html.de-DE.i18n.data-BuXLlArJ.mjs +26 -0
  15. package/browser/fesm2022/cms-browser-taon-cms-assets-backoffice.component.html.de-DE.i18n.data-BuXLlArJ.mjs.map +1 -0
  16. package/browser/fesm2022/cms-browser-taon-cms-assets-backoffice.component.html.en-US.i18n.data-BdtTQ_Jl.mjs +26 -0
  17. package/browser/fesm2022/cms-browser-taon-cms-assets-backoffice.component.html.en-US.i18n.data-BdtTQ_Jl.mjs.map +1 -0
  18. package/browser/fesm2022/cms-browser-taon-cms-assets-backoffice.component.html.pl-PL.i18n.data-CoDrYDRK.mjs +26 -0
  19. package/browser/fesm2022/cms-browser-taon-cms-assets-backoffice.component.html.pl-PL.i18n.data-CoDrYDRK.mjs.map +1 -0
  20. package/browser/fesm2022/cms-browser-taon-cms-assets-backoffice.component.ts.de-DE.i18n.data-V7WX2R2o.mjs +26 -0
  21. package/browser/fesm2022/cms-browser-taon-cms-assets-backoffice.component.ts.de-DE.i18n.data-V7WX2R2o.mjs.map +1 -0
  22. package/browser/fesm2022/cms-browser-taon-cms-assets-backoffice.component.ts.en-US.i18n.data-MGwWRhfj.mjs +26 -0
  23. package/browser/fesm2022/cms-browser-taon-cms-assets-backoffice.component.ts.en-US.i18n.data-MGwWRhfj.mjs.map +1 -0
  24. package/browser/fesm2022/cms-browser-taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data-7gEiqQTu.mjs +26 -0
  25. package/browser/fesm2022/cms-browser-taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data-7gEiqQTu.mjs.map +1 -0
  26. package/browser/fesm2022/cms-browser-taon-cms-backoffice.component.html.de-DE.i18n.data-B5x4stX6.mjs +16 -0
  27. package/browser/fesm2022/cms-browser-taon-cms-backoffice.component.html.de-DE.i18n.data-B5x4stX6.mjs.map +1 -0
  28. package/browser/fesm2022/cms-browser-taon-cms-backoffice.component.html.en-US.i18n.data-DthWh8nt.mjs +16 -0
  29. package/browser/fesm2022/cms-browser-taon-cms-backoffice.component.html.en-US.i18n.data-DthWh8nt.mjs.map +1 -0
  30. package/browser/fesm2022/cms-browser-taon-cms-backoffice.component.html.pl-PL.i18n.data-iT7Urr8M.mjs +16 -0
  31. package/browser/fesm2022/cms-browser-taon-cms-backoffice.component.html.pl-PL.i18n.data-iT7Urr8M.mjs.map +1 -0
  32. package/browser/fesm2022/cms-browser-taon-cms-backoffice.component.ts.de-DE.i18n.data-D-UQjC58.mjs +10 -0
  33. package/browser/fesm2022/cms-browser-taon-cms-backoffice.component.ts.de-DE.i18n.data-D-UQjC58.mjs.map +1 -0
  34. package/browser/fesm2022/cms-browser-taon-cms-backoffice.component.ts.en-US.i18n.data-CoKyFRC0.mjs +10 -0
  35. package/browser/fesm2022/cms-browser-taon-cms-backoffice.component.ts.en-US.i18n.data-CoKyFRC0.mjs.map +1 -0
  36. package/browser/fesm2022/cms-browser-taon-cms-backoffice.component.ts.pl-PL.i18n.data-Bly4iRV_.mjs +10 -0
  37. package/browser/fesm2022/cms-browser-taon-cms-backoffice.component.ts.pl-PL.i18n.data-Bly4iRV_.mjs.map +1 -0
  38. package/browser/fesm2022/cms-browser-taon-cms-backoffice.routes.ts.de-DE.i18n.data-DF2t3FGq.mjs +31 -0
  39. package/browser/fesm2022/cms-browser-taon-cms-backoffice.routes.ts.de-DE.i18n.data-DF2t3FGq.mjs.map +1 -0
  40. package/browser/fesm2022/cms-browser-taon-cms-backoffice.routes.ts.en-US.i18n.data-HaVV1PUK.mjs +31 -0
  41. package/browser/fesm2022/cms-browser-taon-cms-backoffice.routes.ts.en-US.i18n.data-HaVV1PUK.mjs.map +1 -0
  42. package/browser/fesm2022/cms-browser-taon-cms-backoffice.routes.ts.pl-PL.i18n.data-CM8U1Jru.mjs +31 -0
  43. package/browser/fesm2022/cms-browser-taon-cms-backoffice.routes.ts.pl-PL.i18n.data-CM8U1Jru.mjs.map +1 -0
  44. package/browser/fesm2022/cms-browser-taon-cms-category.controller.ts.de-DE.i18n.data-CmIHY-Qb.mjs +16 -0
  45. package/browser/fesm2022/cms-browser-taon-cms-category.controller.ts.de-DE.i18n.data-CmIHY-Qb.mjs.map +1 -0
  46. package/browser/fesm2022/cms-browser-taon-cms-category.controller.ts.en-US.i18n.data-B3p2KGMd.mjs +16 -0
  47. package/browser/fesm2022/cms-browser-taon-cms-category.controller.ts.en-US.i18n.data-B3p2KGMd.mjs.map +1 -0
  48. package/browser/fesm2022/cms-browser-taon-cms-category.controller.ts.pl-PL.i18n.data-BmIn1qix.mjs +16 -0
  49. package/browser/fesm2022/cms-browser-taon-cms-category.controller.ts.pl-PL.i18n.data-BmIn1qix.mjs.map +1 -0
  50. package/browser/fesm2022/cms-browser-taon-cms-category.repository.ts.de-DE.i18n.data-zcPs4FvI.mjs +26 -0
  51. package/browser/fesm2022/cms-browser-taon-cms-category.repository.ts.de-DE.i18n.data-zcPs4FvI.mjs.map +1 -0
  52. package/browser/fesm2022/cms-browser-taon-cms-category.repository.ts.en-US.i18n.data-DAaZJ_9F.mjs +26 -0
  53. package/browser/fesm2022/cms-browser-taon-cms-category.repository.ts.en-US.i18n.data-DAaZJ_9F.mjs.map +1 -0
  54. package/browser/fesm2022/cms-browser-taon-cms-category.repository.ts.pl-PL.i18n.data-CVvSGHBy.mjs +26 -0
  55. package/browser/fesm2022/cms-browser-taon-cms-category.repository.ts.pl-PL.i18n.data-CVvSGHBy.mjs.map +1 -0
  56. package/browser/fesm2022/cms-browser-taon-cms-post-details-page.component.ts.de-DE.i18n.data-DcMMeJhf.mjs +16 -0
  57. package/browser/fesm2022/cms-browser-taon-cms-post-details-page.component.ts.de-DE.i18n.data-DcMMeJhf.mjs.map +1 -0
  58. package/browser/fesm2022/cms-browser-taon-cms-post-details-page.component.ts.en-US.i18n.data-Gx0bf2nC.mjs +16 -0
  59. package/browser/fesm2022/cms-browser-taon-cms-post-details-page.component.ts.en-US.i18n.data-Gx0bf2nC.mjs.map +1 -0
  60. package/browser/fesm2022/cms-browser-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-DzObZW39.mjs +16 -0
  61. package/browser/fesm2022/cms-browser-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-DzObZW39.mjs.map +1 -0
  62. package/browser/fesm2022/cms-browser-taon-cms-post.component.html.de-DE.i18n.data-_sQHaM7p.mjs +325 -0
  63. package/browser/fesm2022/cms-browser-taon-cms-post.component.html.de-DE.i18n.data-_sQHaM7p.mjs.map +1 -0
  64. package/browser/fesm2022/cms-browser-taon-cms-post.component.html.en-US.i18n.data-CAAYTQWn.mjs +325 -0
  65. package/browser/fesm2022/cms-browser-taon-cms-post.component.html.en-US.i18n.data-CAAYTQWn.mjs.map +1 -0
  66. package/browser/fesm2022/cms-browser-taon-cms-post.component.html.pl-PL.i18n.data-5tuvjPPZ.mjs +325 -0
  67. package/browser/fesm2022/cms-browser-taon-cms-post.component.html.pl-PL.i18n.data-5tuvjPPZ.mjs.map +1 -0
  68. package/browser/fesm2022/cms-browser-taon-cms-post.component.ts.de-DE.i18n.data-PjXxw70Q.mjs +175 -0
  69. package/browser/fesm2022/cms-browser-taon-cms-post.component.ts.de-DE.i18n.data-PjXxw70Q.mjs.map +1 -0
  70. package/browser/fesm2022/cms-browser-taon-cms-post.component.ts.en-US.i18n.data-n_jdOSMO.mjs +172 -0
  71. package/browser/fesm2022/cms-browser-taon-cms-post.component.ts.en-US.i18n.data-n_jdOSMO.mjs.map +1 -0
  72. package/browser/fesm2022/cms-browser-taon-cms-post.component.ts.pl-PL.i18n.data-747DKNI9.mjs +175 -0
  73. package/browser/fesm2022/cms-browser-taon-cms-post.component.ts.pl-PL.i18n.data-747DKNI9.mjs.map +1 -0
  74. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-PTv8IVQS.mjs +21 -0
  75. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-PTv8IVQS.mjs.map +1 -0
  76. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.html.en-US.i18n.data-D1XI6u8V.mjs +21 -0
  77. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.html.en-US.i18n.data-D1XI6u8V.mjs.map +1 -0
  78. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-Sv8mvv7F.mjs +21 -0
  79. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-Sv8mvv7F.mjs.map +1 -0
  80. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-XC6VHQ4p.mjs +70 -0
  81. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-XC6VHQ4p.mjs.map +1 -0
  82. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-DdTJ6jBq.mjs +70 -0
  83. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-DdTJ6jBq.mjs.map +1 -0
  84. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-VmJCCpyW.mjs +70 -0
  85. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-VmJCCpyW.mjs.map +1 -0
  86. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-DR3QDl8i.mjs +21 -0
  87. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-DR3QDl8i.mjs.map +1 -0
  88. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-BMHc1eXs.mjs +21 -0
  89. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-BMHc1eXs.mjs.map +1 -0
  90. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-D6vB4Elu.mjs +21 -0
  91. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-D6vB4Elu.mjs.map +1 -0
  92. package/browser/fesm2022/cms-browser-taon-cms-revision-chooser.component.html.de-DE.i18n.data-0-FosMdd.mjs +71 -0
  93. package/browser/fesm2022/cms-browser-taon-cms-revision-chooser.component.html.de-DE.i18n.data-0-FosMdd.mjs.map +1 -0
  94. package/browser/fesm2022/cms-browser-taon-cms-revision-chooser.component.html.en-US.i18n.data-CdG7f6f1.mjs +71 -0
  95. package/browser/fesm2022/cms-browser-taon-cms-revision-chooser.component.html.en-US.i18n.data-CdG7f6f1.mjs.map +1 -0
  96. package/browser/fesm2022/cms-browser-taon-cms-revision-chooser.component.html.pl-PL.i18n.data-BRJitr3A.mjs +71 -0
  97. package/browser/fesm2022/cms-browser-taon-cms-revision-chooser.component.html.pl-PL.i18n.data-BRJitr3A.mjs.map +1 -0
  98. package/browser/fesm2022/cms-browser-taon-cms-revision-chooser.component.ts.de-DE.i18n.data-BWfc44Gu.mjs +26 -0
  99. package/browser/fesm2022/cms-browser-taon-cms-revision-chooser.component.ts.de-DE.i18n.data-BWfc44Gu.mjs.map +1 -0
  100. package/browser/fesm2022/cms-browser-taon-cms-revision-chooser.component.ts.en-US.i18n.data-C2H_Eckx.mjs +26 -0
  101. package/browser/fesm2022/cms-browser-taon-cms-revision-chooser.component.ts.en-US.i18n.data-C2H_Eckx.mjs.map +1 -0
  102. package/browser/fesm2022/cms-browser-taon-cms-revision-chooser.component.ts.pl-PL.i18n.data-qQEyNc_O.mjs +26 -0
  103. package/browser/fesm2022/cms-browser-taon-cms-revision-chooser.component.ts.pl-PL.i18n.data-qQEyNc_O.mjs.map +1 -0
  104. package/browser/fesm2022/cms-browser-taon-cms-tag.controller.ts.de-DE.i18n.data-C1Dm6TEf.mjs +16 -0
  105. package/browser/fesm2022/cms-browser-taon-cms-tag.controller.ts.de-DE.i18n.data-C1Dm6TEf.mjs.map +1 -0
  106. package/browser/fesm2022/cms-browser-taon-cms-tag.controller.ts.en-US.i18n.data-B-j9Oo0W.mjs +16 -0
  107. package/browser/fesm2022/cms-browser-taon-cms-tag.controller.ts.en-US.i18n.data-B-j9Oo0W.mjs.map +1 -0
  108. package/browser/fesm2022/cms-browser-taon-cms-tag.controller.ts.pl-PL.i18n.data-1Ou1o4gZ.mjs +16 -0
  109. package/browser/fesm2022/cms-browser-taon-cms-tag.controller.ts.pl-PL.i18n.data-1Ou1o4gZ.mjs.map +1 -0
  110. package/browser/fesm2022/cms-browser-taon-cms-tag.repository.ts.de-DE.i18n.data-DhAUtQSa.mjs +21 -0
  111. package/browser/fesm2022/cms-browser-taon-cms-tag.repository.ts.de-DE.i18n.data-DhAUtQSa.mjs.map +1 -0
  112. package/browser/fesm2022/cms-browser-taon-cms-tag.repository.ts.en-US.i18n.data-Dq7PnSmq.mjs +21 -0
  113. package/browser/fesm2022/cms-browser-taon-cms-tag.repository.ts.en-US.i18n.data-Dq7PnSmq.mjs.map +1 -0
  114. package/browser/fesm2022/cms-browser-taon-cms-tag.repository.ts.pl-PL.i18n.data-CsT5vExK.mjs +21 -0
  115. package/browser/fesm2022/cms-browser-taon-cms-tag.repository.ts.pl-PL.i18n.data-CsT5vExK.mjs.map +1 -0
  116. package/browser/fesm2022/cms-browser-taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data-DX6YHkgg.mjs +91 -0
  117. package/browser/fesm2022/cms-browser-taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data-DX6YHkgg.mjs.map +1 -0
  118. package/browser/fesm2022/cms-browser-taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data-Ccmf9_pZ.mjs +91 -0
  119. package/browser/fesm2022/cms-browser-taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data-Ccmf9_pZ.mjs.map +1 -0
  120. package/browser/fesm2022/cms-browser-taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data-B849p720.mjs +91 -0
  121. package/browser/fesm2022/cms-browser-taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data-B849p720.mjs.map +1 -0
  122. package/browser/fesm2022/cms-browser-taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data-BQYY3Beh.mjs +76 -0
  123. package/browser/fesm2022/cms-browser-taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data-BQYY3Beh.mjs.map +1 -0
  124. package/browser/fesm2022/cms-browser-taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data-BS97U_dV.mjs +76 -0
  125. package/browser/fesm2022/cms-browser-taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data-BS97U_dV.mjs.map +1 -0
  126. package/browser/fesm2022/cms-browser-taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data-DkguMZ1c.mjs +76 -0
  127. package/browser/fesm2022/cms-browser-taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data-DkguMZ1c.mjs.map +1 -0
  128. package/browser/fesm2022/cms-browser-taon-cms-taxonomy.validation.ts.de-DE.i18n.data-7qzkXXtn.mjs +26 -0
  129. package/browser/fesm2022/cms-browser-taon-cms-taxonomy.validation.ts.de-DE.i18n.data-7qzkXXtn.mjs.map +1 -0
  130. package/browser/fesm2022/cms-browser-taon-cms-taxonomy.validation.ts.en-US.i18n.data-D1eP5S95.mjs +26 -0
  131. package/browser/fesm2022/cms-browser-taon-cms-taxonomy.validation.ts.en-US.i18n.data-D1eP5S95.mjs.map +1 -0
  132. package/browser/fesm2022/cms-browser-taon-cms-taxonomy.validation.ts.pl-PL.i18n.data-Cc6hut5r.mjs +26 -0
  133. package/browser/fesm2022/cms-browser-taon-cms-taxonomy.validation.ts.pl-PL.i18n.data-Cc6hut5r.mjs.map +1 -0
  134. package/browser/fesm2022/cms-browser-taon-related-post-chooser.component.html.de-DE.i18n.data-D0T-rq7s.mjs +46 -0
  135. package/browser/fesm2022/cms-browser-taon-related-post-chooser.component.html.de-DE.i18n.data-D0T-rq7s.mjs.map +1 -0
  136. package/browser/fesm2022/cms-browser-taon-related-post-chooser.component.html.en-US.i18n.data-mZeFTFaF.mjs +46 -0
  137. package/browser/fesm2022/cms-browser-taon-related-post-chooser.component.html.en-US.i18n.data-mZeFTFaF.mjs.map +1 -0
  138. package/browser/fesm2022/cms-browser-taon-related-post-chooser.component.html.pl-PL.i18n.data-D7X5-yeN.mjs +46 -0
  139. package/browser/fesm2022/cms-browser-taon-related-post-chooser.component.html.pl-PL.i18n.data-D7X5-yeN.mjs.map +1 -0
  140. package/browser/fesm2022/cms-browser-taon-related-post-chooser.component.ts.de-DE.i18n.data-D2tZ4gOm.mjs +21 -0
  141. package/browser/fesm2022/cms-browser-taon-related-post-chooser.component.ts.de-DE.i18n.data-D2tZ4gOm.mjs.map +1 -0
  142. package/browser/fesm2022/cms-browser-taon-related-post-chooser.component.ts.en-US.i18n.data-B5vaympv.mjs +21 -0
  143. package/browser/fesm2022/cms-browser-taon-related-post-chooser.component.ts.en-US.i18n.data-B5vaympv.mjs.map +1 -0
  144. package/browser/fesm2022/cms-browser-taon-related-post-chooser.component.ts.pl-PL.i18n.data-CZxR2iCt.mjs +21 -0
  145. package/browser/fesm2022/cms-browser-taon-related-post-chooser.component.ts.pl-PL.i18n.data-CZxR2iCt.mjs.map +1 -0
  146. package/browser/fesm2022/cms-browser.mjs +2754 -542
  147. package/browser/fesm2022/cms-browser.mjs.map +1 -1
  148. package/browser/package.json +1 -1
  149. package/browser/types/cms-browser.d.ts +395 -145
  150. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-asset-preview.component.html.de-DE.i18n.data-Cnee0qF_.mjs +31 -0
  151. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-asset-preview.component.html.de-DE.i18n.data-Cnee0qF_.mjs.map +1 -0
  152. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-asset-preview.component.html.en-US.i18n.data-BnfBa5FP.mjs +31 -0
  153. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-asset-preview.component.html.en-US.i18n.data-BnfBa5FP.mjs.map +1 -0
  154. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-asset-preview.component.html.pl-PL.i18n.data-CI9R_TWY.mjs +31 -0
  155. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-asset-preview.component.html.pl-PL.i18n.data-CI9R_TWY.mjs.map +1 -0
  156. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-asset-preview.component.ts.de-DE.i18n.data-CuJ1DFEy.mjs +21 -0
  157. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-asset-preview.component.ts.de-DE.i18n.data-CuJ1DFEy.mjs.map +1 -0
  158. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-asset-preview.component.ts.en-US.i18n.data-COrEvH90.mjs +21 -0
  159. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-asset-preview.component.ts.en-US.i18n.data-COrEvH90.mjs.map +1 -0
  160. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-asset-preview.component.ts.pl-PL.i18n.data-IX85Hp7B.mjs +21 -0
  161. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-asset-preview.component.ts.pl-PL.i18n.data-IX85Hp7B.mjs.map +1 -0
  162. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-assets-backoffice.component.html.de-DE.i18n.data-DJo4v6QY.mjs +26 -0
  163. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-assets-backoffice.component.html.de-DE.i18n.data-DJo4v6QY.mjs.map +1 -0
  164. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-assets-backoffice.component.html.en-US.i18n.data-B866wa9u.mjs +26 -0
  165. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-assets-backoffice.component.html.en-US.i18n.data-B866wa9u.mjs.map +1 -0
  166. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-assets-backoffice.component.html.pl-PL.i18n.data-BY-OWFhb.mjs +26 -0
  167. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-assets-backoffice.component.html.pl-PL.i18n.data-BY-OWFhb.mjs.map +1 -0
  168. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-assets-backoffice.component.ts.de-DE.i18n.data-CsC2V1RP.mjs +26 -0
  169. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-assets-backoffice.component.ts.de-DE.i18n.data-CsC2V1RP.mjs.map +1 -0
  170. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-assets-backoffice.component.ts.en-US.i18n.data-CDumPCL3.mjs +26 -0
  171. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-assets-backoffice.component.ts.en-US.i18n.data-CDumPCL3.mjs.map +1 -0
  172. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data-CnlTu58H.mjs +26 -0
  173. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data-CnlTu58H.mjs.map +1 -0
  174. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-backoffice.component.html.de-DE.i18n.data-CqIu3bBE.mjs +16 -0
  175. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-backoffice.component.html.de-DE.i18n.data-CqIu3bBE.mjs.map +1 -0
  176. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-backoffice.component.html.en-US.i18n.data-q7WqXEJw.mjs +16 -0
  177. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-backoffice.component.html.en-US.i18n.data-q7WqXEJw.mjs.map +1 -0
  178. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-backoffice.component.html.pl-PL.i18n.data-BSwBNQpH.mjs +16 -0
  179. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-backoffice.component.html.pl-PL.i18n.data-BSwBNQpH.mjs.map +1 -0
  180. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-backoffice.component.ts.de-DE.i18n.data-CvbuuDAa.mjs +10 -0
  181. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-backoffice.component.ts.de-DE.i18n.data-CvbuuDAa.mjs.map +1 -0
  182. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-backoffice.component.ts.en-US.i18n.data-BdhGIeUK.mjs +10 -0
  183. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-backoffice.component.ts.en-US.i18n.data-BdhGIeUK.mjs.map +1 -0
  184. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-backoffice.component.ts.pl-PL.i18n.data-BVwuFYPF.mjs +10 -0
  185. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-backoffice.component.ts.pl-PL.i18n.data-BVwuFYPF.mjs.map +1 -0
  186. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-backoffice.routes.ts.de-DE.i18n.data-BbCjJoVh.mjs +31 -0
  187. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-backoffice.routes.ts.de-DE.i18n.data-BbCjJoVh.mjs.map +1 -0
  188. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-backoffice.routes.ts.en-US.i18n.data-BUBi6h_q.mjs +31 -0
  189. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-backoffice.routes.ts.en-US.i18n.data-BUBi6h_q.mjs.map +1 -0
  190. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-backoffice.routes.ts.pl-PL.i18n.data-BJ03B4ix.mjs +31 -0
  191. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-backoffice.routes.ts.pl-PL.i18n.data-BJ03B4ix.mjs.map +1 -0
  192. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-category.controller.ts.de-DE.i18n.data-CDUBs36X.mjs +16 -0
  193. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-category.controller.ts.de-DE.i18n.data-CDUBs36X.mjs.map +1 -0
  194. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-category.controller.ts.en-US.i18n.data-Ckuw2o-a.mjs +16 -0
  195. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-category.controller.ts.en-US.i18n.data-Ckuw2o-a.mjs.map +1 -0
  196. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-category.controller.ts.pl-PL.i18n.data-CP8q0EDA.mjs +16 -0
  197. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-category.controller.ts.pl-PL.i18n.data-CP8q0EDA.mjs.map +1 -0
  198. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-category.repository.ts.de-DE.i18n.data-BAt9wXhq.mjs +26 -0
  199. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-category.repository.ts.de-DE.i18n.data-BAt9wXhq.mjs.map +1 -0
  200. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-category.repository.ts.en-US.i18n.data-DEDAUHCN.mjs +26 -0
  201. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-category.repository.ts.en-US.i18n.data-DEDAUHCN.mjs.map +1 -0
  202. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-category.repository.ts.pl-PL.i18n.data-vfVCRZ0l.mjs +26 -0
  203. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-category.repository.ts.pl-PL.i18n.data-vfVCRZ0l.mjs.map +1 -0
  204. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post-details-page.component.ts.de-DE.i18n.data-CCMZ2Grc.mjs +16 -0
  205. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post-details-page.component.ts.de-DE.i18n.data-CCMZ2Grc.mjs.map +1 -0
  206. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post-details-page.component.ts.en-US.i18n.data-CfETMKWw.mjs +16 -0
  207. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post-details-page.component.ts.en-US.i18n.data-CfETMKWw.mjs.map +1 -0
  208. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-BJUC-bxd.mjs +16 -0
  209. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-BJUC-bxd.mjs.map +1 -0
  210. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.html.de-DE.i18n.data-BaPmxkoJ.mjs +325 -0
  211. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.html.de-DE.i18n.data-BaPmxkoJ.mjs.map +1 -0
  212. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.html.en-US.i18n.data-WYUL_IjF.mjs +325 -0
  213. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.html.en-US.i18n.data-WYUL_IjF.mjs.map +1 -0
  214. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.html.pl-PL.i18n.data-B1zLXqUZ.mjs +325 -0
  215. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.html.pl-PL.i18n.data-B1zLXqUZ.mjs.map +1 -0
  216. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.ts.de-DE.i18n.data-qu1MSO3K.mjs +175 -0
  217. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.ts.de-DE.i18n.data-qu1MSO3K.mjs.map +1 -0
  218. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.ts.en-US.i18n.data-CbSJQ1ae.mjs +172 -0
  219. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.ts.en-US.i18n.data-CbSJQ1ae.mjs.map +1 -0
  220. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.ts.pl-PL.i18n.data-8FEfL47i.mjs +175 -0
  221. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.ts.pl-PL.i18n.data-8FEfL47i.mjs.map +1 -0
  222. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-_vYyLJO0.mjs +21 -0
  223. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-_vYyLJO0.mjs.map +1 -0
  224. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.html.en-US.i18n.data-C7o8B-38.mjs +21 -0
  225. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.html.en-US.i18n.data-C7o8B-38.mjs.map +1 -0
  226. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-DHsO0ILx.mjs +21 -0
  227. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-DHsO0ILx.mjs.map +1 -0
  228. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-B6oI0NXX.mjs +70 -0
  229. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-B6oI0NXX.mjs.map +1 -0
  230. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-CE7oFpqW.mjs +70 -0
  231. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-CE7oFpqW.mjs.map +1 -0
  232. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-DN7jpzXv.mjs +70 -0
  233. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-DN7jpzXv.mjs.map +1 -0
  234. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-CvRKVC5m.mjs +21 -0
  235. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-CvRKVC5m.mjs.map +1 -0
  236. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-BGx0VfEv.mjs +21 -0
  237. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-BGx0VfEv.mjs.map +1 -0
  238. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-CJyoZejS.mjs +21 -0
  239. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-CJyoZejS.mjs.map +1 -0
  240. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-revision-chooser.component.html.de-DE.i18n.data-jYWuVaax.mjs +71 -0
  241. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-revision-chooser.component.html.de-DE.i18n.data-jYWuVaax.mjs.map +1 -0
  242. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-revision-chooser.component.html.en-US.i18n.data-NF4fmGLN.mjs +71 -0
  243. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-revision-chooser.component.html.en-US.i18n.data-NF4fmGLN.mjs.map +1 -0
  244. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-revision-chooser.component.html.pl-PL.i18n.data-C5g2G3jI.mjs +71 -0
  245. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-revision-chooser.component.html.pl-PL.i18n.data-C5g2G3jI.mjs.map +1 -0
  246. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-revision-chooser.component.ts.de-DE.i18n.data-BfluLtxD.mjs +26 -0
  247. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-revision-chooser.component.ts.de-DE.i18n.data-BfluLtxD.mjs.map +1 -0
  248. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-revision-chooser.component.ts.en-US.i18n.data-CiAd1cu4.mjs +26 -0
  249. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-revision-chooser.component.ts.en-US.i18n.data-CiAd1cu4.mjs.map +1 -0
  250. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-revision-chooser.component.ts.pl-PL.i18n.data-C2pNRLNK.mjs +26 -0
  251. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-revision-chooser.component.ts.pl-PL.i18n.data-C2pNRLNK.mjs.map +1 -0
  252. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-tag.controller.ts.de-DE.i18n.data-mHMHPrI-.mjs +16 -0
  253. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-tag.controller.ts.de-DE.i18n.data-mHMHPrI-.mjs.map +1 -0
  254. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-tag.controller.ts.en-US.i18n.data-3oxZelGB.mjs +16 -0
  255. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-tag.controller.ts.en-US.i18n.data-3oxZelGB.mjs.map +1 -0
  256. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-tag.controller.ts.pl-PL.i18n.data-z6ufNE6q.mjs +16 -0
  257. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-tag.controller.ts.pl-PL.i18n.data-z6ufNE6q.mjs.map +1 -0
  258. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-tag.repository.ts.de-DE.i18n.data-CY1yB1IT.mjs +21 -0
  259. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-tag.repository.ts.de-DE.i18n.data-CY1yB1IT.mjs.map +1 -0
  260. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-tag.repository.ts.en-US.i18n.data-StHinq7f.mjs +21 -0
  261. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-tag.repository.ts.en-US.i18n.data-StHinq7f.mjs.map +1 -0
  262. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-tag.repository.ts.pl-PL.i18n.data-DYbKxB3P.mjs +21 -0
  263. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-tag.repository.ts.pl-PL.i18n.data-DYbKxB3P.mjs.map +1 -0
  264. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data-DJmJnTy1.mjs +91 -0
  265. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data-DJmJnTy1.mjs.map +1 -0
  266. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data-B9egtKwh.mjs +91 -0
  267. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data-B9egtKwh.mjs.map +1 -0
  268. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data-DSWzgw_0.mjs +91 -0
  269. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data-DSWzgw_0.mjs.map +1 -0
  270. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data-CCcCm4XG.mjs +76 -0
  271. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data-CCcCm4XG.mjs.map +1 -0
  272. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data-DOFKJuxr.mjs +76 -0
  273. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data-DOFKJuxr.mjs.map +1 -0
  274. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data-DUfeE0cw.mjs +76 -0
  275. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data-DUfeE0cw.mjs.map +1 -0
  276. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy.validation.ts.de-DE.i18n.data-CEKXSxan.mjs +26 -0
  277. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy.validation.ts.de-DE.i18n.data-CEKXSxan.mjs.map +1 -0
  278. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy.validation.ts.en-US.i18n.data-BjGkpdq6.mjs +26 -0
  279. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy.validation.ts.en-US.i18n.data-BjGkpdq6.mjs.map +1 -0
  280. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy.validation.ts.pl-PL.i18n.data-CzWbeuv5.mjs +26 -0
  281. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy.validation.ts.pl-PL.i18n.data-CzWbeuv5.mjs.map +1 -0
  282. package/browser-prod/fesm2022/cms-browser-prod-taon-related-post-chooser.component.html.de-DE.i18n.data-ByAMAthp.mjs +46 -0
  283. package/browser-prod/fesm2022/cms-browser-prod-taon-related-post-chooser.component.html.de-DE.i18n.data-ByAMAthp.mjs.map +1 -0
  284. package/browser-prod/fesm2022/cms-browser-prod-taon-related-post-chooser.component.html.en-US.i18n.data-BN-WdlzW.mjs +46 -0
  285. package/browser-prod/fesm2022/cms-browser-prod-taon-related-post-chooser.component.html.en-US.i18n.data-BN-WdlzW.mjs.map +1 -0
  286. package/browser-prod/fesm2022/cms-browser-prod-taon-related-post-chooser.component.html.pl-PL.i18n.data-DzGNKH0I.mjs +46 -0
  287. package/browser-prod/fesm2022/cms-browser-prod-taon-related-post-chooser.component.html.pl-PL.i18n.data-DzGNKH0I.mjs.map +1 -0
  288. package/browser-prod/fesm2022/cms-browser-prod-taon-related-post-chooser.component.ts.de-DE.i18n.data-CeRmjGOX.mjs +21 -0
  289. package/browser-prod/fesm2022/cms-browser-prod-taon-related-post-chooser.component.ts.de-DE.i18n.data-CeRmjGOX.mjs.map +1 -0
  290. package/browser-prod/fesm2022/cms-browser-prod-taon-related-post-chooser.component.ts.en-US.i18n.data-CNpn80st.mjs +21 -0
  291. package/browser-prod/fesm2022/cms-browser-prod-taon-related-post-chooser.component.ts.en-US.i18n.data-CNpn80st.mjs.map +1 -0
  292. package/browser-prod/fesm2022/cms-browser-prod-taon-related-post-chooser.component.ts.pl-PL.i18n.data-BL0v395O.mjs +21 -0
  293. package/browser-prod/fesm2022/cms-browser-prod-taon-related-post-chooser.component.ts.pl-PL.i18n.data-BL0v395O.mjs.map +1 -0
  294. package/browser-prod/fesm2022/cms-browser-prod.mjs +2675 -463
  295. package/browser-prod/fesm2022/cms-browser-prod.mjs.map +1 -1
  296. package/browser-prod/package.json +1 -1
  297. package/browser-prod/types/cms-browser-prod.d.ts +395 -145
  298. package/full-dts/build-info._auto-generated_.d.ts +1 -1
  299. package/full-dts/decorators/taon-cms-authorization.d.ts +4 -0
  300. package/full-dts/index._auto-generated_.d.ts +6 -1
  301. package/full-dts/migrations/1792579000000_postPermissionInheritance.d.ts +7 -0
  302. package/full-dts/migrations/1793043000000_postThumbnails.d.ts +7 -0
  303. package/full-dts/migrations/index.d.ts +10 -1
  304. package/full-dts/migrations/migrations_index._auto-generated_.d.ts +4 -0
  305. package/full-dts/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.de-DE.i18n.data.d.ts +20 -0
  306. package/full-dts/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.en-US.i18n.data.d.ts +20 -0
  307. package/full-dts/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.pl-PL.i18n.data.d.ts +20 -0
  308. package/full-dts/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.de-DE.i18n.data.d.ts +18 -0
  309. package/full-dts/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.en-US.i18n.data.d.ts +18 -0
  310. package/full-dts/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.pl-PL.i18n.data.d.ts +18 -0
  311. package/full-dts/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.de-DE.i18n.data.d.ts +19 -0
  312. package/full-dts/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.en-US.i18n.data.d.ts +19 -0
  313. package/full-dts/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.pl-PL.i18n.data.d.ts +19 -0
  314. package/full-dts/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.de-DE.i18n.data.d.ts +19 -0
  315. package/full-dts/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.en-US.i18n.data.d.ts +19 -0
  316. package/full-dts/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data.d.ts +19 -0
  317. package/full-dts/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.translation.d.ts +15 -0
  318. package/full-dts/taon-cms-assets-backoffice/taon-cms-asset-preview.component.d.ts +17 -0
  319. package/full-dts/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.d.ts +15 -6
  320. package/full-dts/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.de-DE.i18n.data.d.ts +17 -0
  321. package/full-dts/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.en-US.i18n.data.d.ts +17 -0
  322. package/full-dts/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.pl-PL.i18n.data.d.ts +17 -0
  323. package/full-dts/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.de-DE.i18n.data.d.ts +9 -0
  324. package/full-dts/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.en-US.i18n.data.d.ts +9 -0
  325. package/full-dts/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.pl-PL.i18n.data.d.ts +9 -0
  326. package/full-dts/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.de-DE.i18n.data.d.ts +20 -0
  327. package/full-dts/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.en-US.i18n.data.d.ts +20 -0
  328. package/full-dts/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.pl-PL.i18n.data.d.ts +20 -0
  329. package/full-dts/taon-cms-backoffice/i18n/taon-cms-backoffice.translation.d.ts +12 -0
  330. package/full-dts/taon-cms-backoffice/taon-cms-backoffice.component.d.ts +2 -0
  331. package/full-dts/taon-cms-category/i18n/taon-cms-category.controller.ts.de-DE.i18n.data.d.ts +17 -0
  332. package/full-dts/taon-cms-category/i18n/taon-cms-category.controller.ts.en-US.i18n.data.d.ts +17 -0
  333. package/full-dts/taon-cms-category/i18n/taon-cms-category.controller.ts.pl-PL.i18n.data.d.ts +17 -0
  334. package/full-dts/taon-cms-category/i18n/taon-cms-category.repository.ts.de-DE.i18n.data.d.ts +19 -0
  335. package/full-dts/taon-cms-category/i18n/taon-cms-category.repository.ts.en-US.i18n.data.d.ts +19 -0
  336. package/full-dts/taon-cms-category/i18n/taon-cms-category.repository.ts.pl-PL.i18n.data.d.ts +19 -0
  337. package/full-dts/taon-cms-category/i18n/taon-cms-category.translation.d.ts +12 -0
  338. package/full-dts/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.de-DE.i18n.data.d.ts +19 -0
  339. package/full-dts/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.en-US.i18n.data.d.ts +19 -0
  340. package/full-dts/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.pl-PL.i18n.data.d.ts +19 -0
  341. package/full-dts/taon-cms-category/taon-cms-category-api.service.d.ts +3 -0
  342. package/full-dts/taon-cms-category/taon-cms-category.controller.d.ts +7 -1
  343. package/full-dts/taon-cms-category/taon-cms-category.repository.d.ts +3 -0
  344. package/full-dts/taon-cms-category/taon-cms-taxonomy.validation.d.ts +15 -0
  345. package/full-dts/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.de-DE.i18n.data.d.ts +17 -0
  346. package/full-dts/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.en-US.i18n.data.d.ts +17 -0
  347. package/full-dts/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.pl-PL.i18n.data.d.ts +17 -0
  348. package/full-dts/taon-cms-content/i18n/taon-cms-content.controller.ts.de-DE.i18n.data.d.ts +22 -0
  349. package/full-dts/taon-cms-content/i18n/taon-cms-content.controller.ts.en-US.i18n.data.d.ts +6 -0
  350. package/full-dts/taon-cms-content/i18n/taon-cms-content.controller.ts.pl-PL.i18n.data.d.ts +6 -0
  351. package/full-dts/taon-cms-content/i18n/taon-cms-content.translation.d.ts +5 -1
  352. package/full-dts/taon-cms-content/taon-cms-content-api.service.d.ts +21 -2
  353. package/full-dts/taon-cms-content/taon-cms-content-storage.controller.d.ts +24 -4
  354. package/full-dts/taon-cms-content/taon-cms-content.controller.d.ts +15 -1
  355. package/full-dts/taon-cms-content/taon-cms-content.entity.d.ts +2 -0
  356. package/full-dts/taon-cms-content/taon-cms-content.models.d.ts +10 -0
  357. package/full-dts/taon-cms-content/taon-cms-content.repository.d.ts +11 -1
  358. package/full-dts/taon-cms-content/taon-cms-upload-progress.d.ts +2 -0
  359. package/full-dts/taon-cms-tag/i18n/taon-cms-tag.controller.ts.de-DE.i18n.data.d.ts +17 -0
  360. package/full-dts/taon-cms-tag/i18n/taon-cms-tag.controller.ts.en-US.i18n.data.d.ts +17 -0
  361. package/full-dts/taon-cms-tag/i18n/taon-cms-tag.controller.ts.pl-PL.i18n.data.d.ts +17 -0
  362. package/full-dts/taon-cms-tag/i18n/taon-cms-tag.repository.ts.de-DE.i18n.data.d.ts +18 -0
  363. package/full-dts/taon-cms-tag/i18n/taon-cms-tag.repository.ts.en-US.i18n.data.d.ts +18 -0
  364. package/full-dts/taon-cms-tag/i18n/taon-cms-tag.repository.ts.pl-PL.i18n.data.d.ts +18 -0
  365. package/full-dts/taon-cms-tag/i18n/taon-cms-tag.translation.d.ts +9 -0
  366. package/full-dts/taon-cms-tag/taon-cms-tag-api.service.d.ts +6 -0
  367. package/full-dts/taon-cms-tag/taon-cms-tag.controller.d.ts +7 -1
  368. package/full-dts/taon-cms-tag/taon-cms-tag.repository.d.ts +3 -0
  369. package/full-dts/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data.d.ts +32 -0
  370. package/full-dts/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data.d.ts +32 -0
  371. package/full-dts/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data.d.ts +32 -0
  372. package/full-dts/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data.d.ts +28 -0
  373. package/full-dts/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data.d.ts +28 -0
  374. package/full-dts/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data.d.ts +28 -0
  375. package/full-dts/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.d.ts +9 -0
  376. package/full-dts/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.d.ts +48 -0
  377. package/full-dts/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.routes.d.ts +4 -0
  378. package/full-dts/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.d.ts +74 -0
  379. package/full-dts/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.d.ts +74 -0
  380. package/full-dts/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.d.ts +74 -0
  381. package/full-dts/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.d.ts +52 -0
  382. package/full-dts/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.d.ts +52 -0
  383. package/full-dts/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.d.ts +52 -0
  384. package/full-dts/taon-posts/taon-cms-post/i18n/taon-cms-post.translation.d.ts +9 -0
  385. package/full-dts/taon-posts/taon-cms-post/taon-cms-post.component.d.ts +58 -6
  386. package/full-dts/taon-posts/taon-cms-post/taon-cms-post.models.d.ts +2 -1
  387. package/full-dts/taon-posts/taon-cms-post/taon-cms-thumbnail.d.ts +6 -0
  388. package/full-dts/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.d.ts +17 -0
  389. package/full-dts/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.d.ts +17 -0
  390. package/full-dts/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.d.ts +17 -0
  391. package/full-dts/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.translation.d.ts +6 -0
  392. package/full-dts/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.d.ts +11 -1
  393. package/full-dts/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.d.ts +18 -0
  394. package/full-dts/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.d.ts +18 -0
  395. package/full-dts/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.d.ts +18 -0
  396. package/full-dts/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.d.ts +32 -0
  397. package/full-dts/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.d.ts +32 -0
  398. package/full-dts/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.d.ts +32 -0
  399. package/full-dts/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data.d.ts +18 -0
  400. package/full-dts/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data.d.ts +18 -0
  401. package/full-dts/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data.d.ts +18 -0
  402. package/full-dts/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.translation.d.ts +12 -0
  403. package/full-dts/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.d.ts +5 -3
  404. package/full-dts/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.de-DE.i18n.data.d.ts +27 -0
  405. package/full-dts/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.en-US.i18n.data.d.ts +27 -0
  406. package/full-dts/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.pl-PL.i18n.data.d.ts +27 -0
  407. package/full-dts/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.de-DE.i18n.data.d.ts +19 -0
  408. package/full-dts/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.en-US.i18n.data.d.ts +19 -0
  409. package/full-dts/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.pl-PL.i18n.data.d.ts +19 -0
  410. package/full-dts/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.translation.d.ts +9 -0
  411. package/full-dts/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.d.ts +3 -0
  412. package/full-dts/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.de-DE.i18n.data.d.ts +22 -0
  413. package/full-dts/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.en-US.i18n.data.d.ts +22 -0
  414. package/full-dts/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.pl-PL.i18n.data.d.ts +22 -0
  415. package/full-dts/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.de-DE.i18n.data.d.ts +18 -0
  416. package/full-dts/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.en-US.i18n.data.d.ts +18 -0
  417. package/full-dts/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.pl-PL.i18n.data.d.ts +18 -0
  418. package/full-dts/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.translation.d.ts +9 -0
  419. package/full-dts/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.d.ts +2 -0
  420. package/html/app/baseline-backoffice/taon-baseline-backoffice.component.html +2 -2
  421. package/html/app/cms-example/cms-example.component.html +1 -1
  422. package/html/app/session-example/session-example.component.html +1 -1
  423. package/html/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.html +44 -0
  424. package/html/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html +29 -0
  425. package/html/lib/taon-cms-backoffice/taon-cms-backoffice.component.html +3 -1
  426. package/html/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.html +104 -0
  427. package/html/lib/taon-posts/taon-cms-post/taon-cms-post.component.html +518 -92
  428. package/html/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html +2 -2
  429. package/html/lib/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.html +55 -14
  430. package/html/lib/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.html +40 -11
  431. package/i18n/app.ts.de-DE.i18n.data.d.ts +38 -0
  432. package/i18n/app.ts.de-DE.i18n.data.js +2 -0
  433. package/i18n/app.ts.de-DE.i18n.data.js.map +1 -0
  434. package/i18n/app.ts.en-US.i18n.data.d.ts +10 -0
  435. package/i18n/app.ts.pl-PL.i18n.data.d.ts +10 -0
  436. package/i18n/src.translation.d.ts +2 -1
  437. package/lib/build-info._auto-generated_.d.ts +1 -1
  438. package/lib/build-info._auto-generated_.js +1 -1
  439. package/lib/decorators/taon-cms-authorization.d.ts +4 -0
  440. package/lib/decorators/taon-cms-authorization.js +10 -0
  441. package/lib/decorators/taon-cms-authorization.js.map +1 -1
  442. package/lib/index._auto-generated_.d.ts +3 -0
  443. package/lib/index._auto-generated_.js +6 -1
  444. package/lib/index._auto-generated_.js.map +1 -1
  445. package/lib/migrations/1792579000000_postPermissionInheritance.d.ts +6 -0
  446. package/lib/migrations/1792579000000_postPermissionInheritance.js +37 -0
  447. package/lib/migrations/1792579000000_postPermissionInheritance.js.map +1 -0
  448. package/lib/migrations/1793043000000_postThumbnails.d.ts +6 -0
  449. package/lib/migrations/1793043000000_postThumbnails.js +35 -0
  450. package/lib/migrations/1793043000000_postThumbnails.js.map +1 -0
  451. package/lib/migrations/index.d.ts +9 -0
  452. package/lib/migrations/index.js +11 -0
  453. package/lib/migrations/index.js.map +1 -1
  454. package/lib/migrations/migrations_index._auto-generated_.d.ts +4 -0
  455. package/lib/migrations/migrations_index._auto-generated_.js +4 -0
  456. package/lib/migrations/migrations_index._auto-generated_.js.map +1 -1
  457. package/lib/package.json +1 -1
  458. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.de-DE.i18n.data.d.ts +19 -0
  459. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.de-DE.i18n.data.js +31 -0
  460. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.de-DE.i18n.data.js.map +1 -0
  461. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.en-US.i18n.data.d.ts +19 -0
  462. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.en-US.i18n.data.js +31 -0
  463. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.en-US.i18n.data.js.map +1 -0
  464. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.pl-PL.i18n.data.d.ts +19 -0
  465. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.pl-PL.i18n.data.js +31 -0
  466. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.pl-PL.i18n.data.js.map +1 -0
  467. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.de-DE.i18n.data.d.ts +17 -0
  468. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.de-DE.i18n.data.js +21 -0
  469. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.de-DE.i18n.data.js.map +1 -0
  470. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.en-US.i18n.data.d.ts +17 -0
  471. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.en-US.i18n.data.js +21 -0
  472. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.en-US.i18n.data.js.map +1 -0
  473. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.pl-PL.i18n.data.d.ts +17 -0
  474. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.pl-PL.i18n.data.js +21 -0
  475. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.pl-PL.i18n.data.js.map +1 -0
  476. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.de-DE.i18n.data.d.ts +18 -0
  477. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.de-DE.i18n.data.js +26 -0
  478. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.de-DE.i18n.data.js.map +1 -0
  479. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.en-US.i18n.data.d.ts +18 -0
  480. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.en-US.i18n.data.js +26 -0
  481. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.en-US.i18n.data.js.map +1 -0
  482. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.pl-PL.i18n.data.d.ts +18 -0
  483. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.pl-PL.i18n.data.js +26 -0
  484. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.pl-PL.i18n.data.js.map +1 -0
  485. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.de-DE.i18n.data.d.ts +18 -0
  486. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.de-DE.i18n.data.js +26 -0
  487. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.de-DE.i18n.data.js.map +1 -0
  488. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.en-US.i18n.data.d.ts +18 -0
  489. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.en-US.i18n.data.js +26 -0
  490. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.en-US.i18n.data.js.map +1 -0
  491. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data.d.ts +18 -0
  492. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data.js +26 -0
  493. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data.js.map +1 -0
  494. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.translation.d.ts +14 -0
  495. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.translation.js +5 -0
  496. package/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.translation.js.map +1 -0
  497. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.de-DE.i18n.data.d.ts +16 -0
  498. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.de-DE.i18n.data.js +16 -0
  499. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.de-DE.i18n.data.js.map +1 -0
  500. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.en-US.i18n.data.d.ts +16 -0
  501. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.en-US.i18n.data.js +16 -0
  502. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.en-US.i18n.data.js.map +1 -0
  503. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.pl-PL.i18n.data.d.ts +16 -0
  504. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.pl-PL.i18n.data.js +16 -0
  505. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.pl-PL.i18n.data.js.map +1 -0
  506. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.de-DE.i18n.data.d.ts +8 -0
  507. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.de-DE.i18n.data.js +10 -0
  508. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.de-DE.i18n.data.js.map +1 -0
  509. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.en-US.i18n.data.d.ts +8 -0
  510. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.en-US.i18n.data.js +10 -0
  511. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.en-US.i18n.data.js.map +1 -0
  512. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.pl-PL.i18n.data.d.ts +8 -0
  513. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.pl-PL.i18n.data.js +10 -0
  514. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.pl-PL.i18n.data.js.map +1 -0
  515. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.de-DE.i18n.data.d.ts +19 -0
  516. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.de-DE.i18n.data.js +31 -0
  517. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.de-DE.i18n.data.js.map +1 -0
  518. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.en-US.i18n.data.d.ts +19 -0
  519. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.en-US.i18n.data.js +31 -0
  520. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.en-US.i18n.data.js.map +1 -0
  521. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.pl-PL.i18n.data.d.ts +19 -0
  522. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.pl-PL.i18n.data.js +31 -0
  523. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.pl-PL.i18n.data.js.map +1 -0
  524. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.translation.d.ts +11 -0
  525. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.translation.js +5 -0
  526. package/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.translation.js.map +1 -0
  527. package/lib/taon-cms-backoffice/index.d.ts +1 -1
  528. package/lib/taon-cms-backoffice/index.js +2 -2
  529. package/lib/taon-cms-category/i18n/taon-cms-category.controller.ts.de-DE.i18n.data.d.ts +16 -0
  530. package/lib/taon-cms-category/i18n/taon-cms-category.controller.ts.de-DE.i18n.data.js +16 -0
  531. package/lib/taon-cms-category/i18n/taon-cms-category.controller.ts.de-DE.i18n.data.js.map +1 -0
  532. package/lib/taon-cms-category/i18n/taon-cms-category.controller.ts.en-US.i18n.data.d.ts +16 -0
  533. package/lib/taon-cms-category/i18n/taon-cms-category.controller.ts.en-US.i18n.data.js +16 -0
  534. package/lib/taon-cms-category/i18n/taon-cms-category.controller.ts.en-US.i18n.data.js.map +1 -0
  535. package/lib/taon-cms-category/i18n/taon-cms-category.controller.ts.pl-PL.i18n.data.d.ts +16 -0
  536. package/lib/taon-cms-category/i18n/taon-cms-category.controller.ts.pl-PL.i18n.data.js +16 -0
  537. package/lib/taon-cms-category/i18n/taon-cms-category.controller.ts.pl-PL.i18n.data.js.map +1 -0
  538. package/lib/taon-cms-category/i18n/taon-cms-category.repository.ts.de-DE.i18n.data.d.ts +18 -0
  539. package/lib/taon-cms-category/i18n/taon-cms-category.repository.ts.de-DE.i18n.data.js +26 -0
  540. package/lib/taon-cms-category/i18n/taon-cms-category.repository.ts.de-DE.i18n.data.js.map +1 -0
  541. package/lib/taon-cms-category/i18n/taon-cms-category.repository.ts.en-US.i18n.data.d.ts +18 -0
  542. package/lib/taon-cms-category/i18n/taon-cms-category.repository.ts.en-US.i18n.data.js +26 -0
  543. package/lib/taon-cms-category/i18n/taon-cms-category.repository.ts.en-US.i18n.data.js.map +1 -0
  544. package/lib/taon-cms-category/i18n/taon-cms-category.repository.ts.pl-PL.i18n.data.d.ts +18 -0
  545. package/lib/taon-cms-category/i18n/taon-cms-category.repository.ts.pl-PL.i18n.data.js +26 -0
  546. package/lib/taon-cms-category/i18n/taon-cms-category.repository.ts.pl-PL.i18n.data.js.map +1 -0
  547. package/lib/taon-cms-category/i18n/taon-cms-category.translation.d.ts +11 -0
  548. package/lib/taon-cms-category/i18n/taon-cms-category.translation.js +5 -0
  549. package/lib/taon-cms-category/i18n/taon-cms-category.translation.js.map +1 -0
  550. package/lib/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.de-DE.i18n.data.d.ts +18 -0
  551. package/lib/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.de-DE.i18n.data.js +26 -0
  552. package/lib/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.de-DE.i18n.data.js.map +1 -0
  553. package/lib/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.en-US.i18n.data.d.ts +18 -0
  554. package/lib/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.en-US.i18n.data.js +26 -0
  555. package/lib/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.en-US.i18n.data.js.map +1 -0
  556. package/lib/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.pl-PL.i18n.data.d.ts +18 -0
  557. package/lib/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.pl-PL.i18n.data.js +26 -0
  558. package/lib/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.pl-PL.i18n.data.js.map +1 -0
  559. package/lib/taon-cms-category/taon-cms-category.controller.d.ts +7 -1
  560. package/lib/taon-cms-category/taon-cms-category.controller.js +46 -1
  561. package/lib/taon-cms-category/taon-cms-category.controller.js.map +1 -1
  562. package/lib/taon-cms-category/taon-cms-category.repository.d.ts +3 -0
  563. package/lib/taon-cms-category/taon-cms-category.repository.js +57 -0
  564. package/lib/taon-cms-category/taon-cms-category.repository.js.map +1 -1
  565. package/lib/taon-cms-category/taon-cms-taxonomy.validation.d.ts +14 -0
  566. package/lib/taon-cms-category/taon-cms-taxonomy.validation.js +36 -0
  567. package/lib/taon-cms-category/taon-cms-taxonomy.validation.js.map +1 -0
  568. package/lib/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.de-DE.i18n.data.d.ts +16 -0
  569. package/lib/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.de-DE.i18n.data.js +16 -0
  570. package/lib/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.de-DE.i18n.data.js.map +1 -0
  571. package/lib/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.en-US.i18n.data.d.ts +16 -0
  572. package/lib/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.en-US.i18n.data.js +16 -0
  573. package/lib/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.en-US.i18n.data.js.map +1 -0
  574. package/lib/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.pl-PL.i18n.data.d.ts +16 -0
  575. package/lib/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.pl-PL.i18n.data.js +16 -0
  576. package/lib/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.pl-PL.i18n.data.js.map +1 -0
  577. package/lib/taon-cms-content/i18n/taon-cms-content.controller.ts.de-DE.i18n.data.d.ts +21 -0
  578. package/lib/taon-cms-content/i18n/taon-cms-content.controller.ts.de-DE.i18n.data.js +41 -0
  579. package/lib/taon-cms-content/i18n/taon-cms-content.controller.ts.de-DE.i18n.data.js.map +1 -0
  580. package/lib/taon-cms-content/i18n/taon-cms-content.controller.ts.en-US.i18n.data.d.ts +6 -0
  581. package/lib/taon-cms-content/i18n/taon-cms-content.controller.ts.en-US.i18n.data.js +27 -1
  582. package/lib/taon-cms-content/i18n/taon-cms-content.controller.ts.en-US.i18n.data.js.map +1 -1
  583. package/lib/taon-cms-content/i18n/taon-cms-content.controller.ts.pl-PL.i18n.data.d.ts +6 -0
  584. package/lib/taon-cms-content/i18n/taon-cms-content.controller.ts.pl-PL.i18n.data.js +27 -1
  585. package/lib/taon-cms-content/i18n/taon-cms-content.controller.ts.pl-PL.i18n.data.js.map +1 -1
  586. package/lib/taon-cms-content/i18n/taon-cms-content.translation.d.ts +5 -1
  587. package/lib/taon-cms-content/i18n/taon-cms-content.translation.js.map +1 -1
  588. package/lib/taon-cms-content/taon-cms-content-storage.controller.d.ts +24 -4
  589. package/lib/taon-cms-content/taon-cms-content-storage.controller.js +103 -10
  590. package/lib/taon-cms-content/taon-cms-content-storage.controller.js.map +1 -1
  591. package/lib/taon-cms-content/taon-cms-content.constants.js +1 -0
  592. package/lib/taon-cms-content/taon-cms-content.constants.js.map +1 -1
  593. package/lib/taon-cms-content/taon-cms-content.controller.d.ts +15 -1
  594. package/lib/taon-cms-content/taon-cms-content.controller.js +280 -4
  595. package/lib/taon-cms-content/taon-cms-content.controller.js.map +1 -1
  596. package/lib/taon-cms-content/taon-cms-content.entity.d.ts +2 -0
  597. package/lib/taon-cms-content/taon-cms-content.entity.js +18 -0
  598. package/lib/taon-cms-content/taon-cms-content.entity.js.map +1 -1
  599. package/lib/taon-cms-content/taon-cms-content.models.d.ts +11 -1
  600. package/lib/taon-cms-content/taon-cms-content.models.js.map +1 -1
  601. package/lib/taon-cms-content/taon-cms-content.repository.d.ts +11 -1
  602. package/lib/taon-cms-content/taon-cms-content.repository.js +220 -29
  603. package/lib/taon-cms-content/taon-cms-content.repository.js.map +1 -1
  604. package/lib/taon-cms-content/taon-cms-content.validation.js +10 -1
  605. package/lib/taon-cms-content/taon-cms-content.validation.js.map +1 -1
  606. package/lib/taon-cms-content/taon-cms-upload-progress.d.ts +1 -0
  607. package/lib/taon-cms-content/taon-cms-upload-progress.js +80 -0
  608. package/lib/taon-cms-content/taon-cms-upload-progress.js.map +1 -0
  609. package/lib/taon-cms-tag/i18n/taon-cms-tag.controller.ts.de-DE.i18n.data.d.ts +16 -0
  610. package/lib/taon-cms-tag/i18n/taon-cms-tag.controller.ts.de-DE.i18n.data.js +16 -0
  611. package/lib/taon-cms-tag/i18n/taon-cms-tag.controller.ts.de-DE.i18n.data.js.map +1 -0
  612. package/lib/taon-cms-tag/i18n/taon-cms-tag.controller.ts.en-US.i18n.data.d.ts +16 -0
  613. package/lib/taon-cms-tag/i18n/taon-cms-tag.controller.ts.en-US.i18n.data.js +16 -0
  614. package/lib/taon-cms-tag/i18n/taon-cms-tag.controller.ts.en-US.i18n.data.js.map +1 -0
  615. package/lib/taon-cms-tag/i18n/taon-cms-tag.controller.ts.pl-PL.i18n.data.d.ts +16 -0
  616. package/lib/taon-cms-tag/i18n/taon-cms-tag.controller.ts.pl-PL.i18n.data.js +16 -0
  617. package/lib/taon-cms-tag/i18n/taon-cms-tag.controller.ts.pl-PL.i18n.data.js.map +1 -0
  618. package/lib/taon-cms-tag/i18n/taon-cms-tag.repository.ts.de-DE.i18n.data.d.ts +17 -0
  619. package/lib/taon-cms-tag/i18n/taon-cms-tag.repository.ts.de-DE.i18n.data.js +21 -0
  620. package/lib/taon-cms-tag/i18n/taon-cms-tag.repository.ts.de-DE.i18n.data.js.map +1 -0
  621. package/lib/taon-cms-tag/i18n/taon-cms-tag.repository.ts.en-US.i18n.data.d.ts +17 -0
  622. package/lib/taon-cms-tag/i18n/taon-cms-tag.repository.ts.en-US.i18n.data.js +21 -0
  623. package/lib/taon-cms-tag/i18n/taon-cms-tag.repository.ts.en-US.i18n.data.js.map +1 -0
  624. package/lib/taon-cms-tag/i18n/taon-cms-tag.repository.ts.pl-PL.i18n.data.d.ts +17 -0
  625. package/lib/taon-cms-tag/i18n/taon-cms-tag.repository.ts.pl-PL.i18n.data.js +21 -0
  626. package/lib/taon-cms-tag/i18n/taon-cms-tag.repository.ts.pl-PL.i18n.data.js.map +1 -0
  627. package/lib/taon-cms-tag/i18n/taon-cms-tag.translation.d.ts +8 -0
  628. package/lib/taon-cms-tag/i18n/taon-cms-tag.translation.js +5 -0
  629. package/lib/taon-cms-tag/i18n/taon-cms-tag.translation.js.map +1 -0
  630. package/lib/taon-cms-tag/taon-cms-tag.controller.d.ts +7 -1
  631. package/lib/taon-cms-tag/taon-cms-tag.controller.js +40 -1
  632. package/lib/taon-cms-tag/taon-cms-tag.controller.js.map +1 -1
  633. package/lib/taon-cms-tag/taon-cms-tag.repository.d.ts +3 -0
  634. package/lib/taon-cms-tag/taon-cms-tag.repository.js +45 -0
  635. package/lib/taon-cms-tag/taon-cms-tag.repository.js.map +1 -1
  636. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data.d.ts +31 -0
  637. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data.js +91 -0
  638. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data.js.map +1 -0
  639. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data.d.ts +31 -0
  640. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data.js +91 -0
  641. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data.js.map +1 -0
  642. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data.d.ts +31 -0
  643. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data.js +91 -0
  644. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data.js.map +1 -0
  645. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data.d.ts +27 -0
  646. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data.js +76 -0
  647. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data.js.map +1 -0
  648. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data.d.ts +27 -0
  649. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data.js +76 -0
  650. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data.js.map +1 -0
  651. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data.d.ts +27 -0
  652. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data.js +76 -0
  653. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data.js.map +1 -0
  654. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.d.ts +8 -0
  655. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.js +5 -0
  656. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.js.map +1 -0
  657. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.d.ts +73 -0
  658. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.js +325 -0
  659. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.js.map +1 -0
  660. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.d.ts +73 -0
  661. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.js +325 -0
  662. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.js.map +1 -0
  663. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.d.ts +73 -0
  664. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.js +325 -0
  665. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.js.map +1 -0
  666. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.d.ts +51 -0
  667. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.js +175 -0
  668. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.js.map +1 -0
  669. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.d.ts +51 -0
  670. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.js +172 -0
  671. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.js.map +1 -0
  672. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.d.ts +51 -0
  673. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.js +175 -0
  674. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.js.map +1 -0
  675. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.translation.d.ts +8 -0
  676. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.translation.js +5 -0
  677. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.translation.js.map +1 -0
  678. package/lib/taon-posts/taon-cms-post/index.d.ts +1 -1
  679. package/lib/taon-posts/taon-cms-post/index.js +2 -2
  680. package/lib/taon-posts/taon-cms-post/taon-cms-post.models.d.ts +2 -1
  681. package/lib/taon-posts/taon-cms-post/taon-cms-thumbnail.d.ts +5 -0
  682. package/lib/taon-posts/taon-cms-post/taon-cms-thumbnail.js +144 -0
  683. package/lib/taon-posts/taon-cms-post/taon-cms-thumbnail.js.map +1 -0
  684. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.d.ts +16 -0
  685. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.js +16 -0
  686. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.js.map +1 -0
  687. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.d.ts +16 -0
  688. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.js +16 -0
  689. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.js.map +1 -0
  690. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.d.ts +16 -0
  691. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.js +16 -0
  692. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.js.map +1 -0
  693. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.translation.d.ts +5 -0
  694. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.translation.js +5 -0
  695. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.translation.js.map +1 -0
  696. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.d.ts +17 -0
  697. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.js +21 -0
  698. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.js.map +1 -0
  699. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.d.ts +17 -0
  700. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.js +21 -0
  701. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.js.map +1 -0
  702. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.d.ts +17 -0
  703. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.js +21 -0
  704. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.js.map +1 -0
  705. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.d.ts +31 -0
  706. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.js +70 -0
  707. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.js.map +1 -0
  708. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.d.ts +31 -0
  709. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.js +70 -0
  710. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.js.map +1 -0
  711. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.d.ts +31 -0
  712. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.js +70 -0
  713. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.js.map +1 -0
  714. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data.d.ts +17 -0
  715. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data.js +21 -0
  716. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data.js.map +1 -0
  717. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data.d.ts +17 -0
  718. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data.js +21 -0
  719. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data.js.map +1 -0
  720. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data.d.ts +17 -0
  721. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data.js +21 -0
  722. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data.js.map +1 -0
  723. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.translation.d.ts +11 -0
  724. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.translation.js +5 -0
  725. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.translation.js.map +1 -0
  726. package/lib/taon-posts/taon-cms-posts-backoffice/index.d.ts +1 -1
  727. package/lib/taon-posts/taon-cms-posts-backoffice/index.js +2 -2
  728. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.de-DE.i18n.data.d.ts +26 -0
  729. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.de-DE.i18n.data.js +71 -0
  730. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.de-DE.i18n.data.js.map +1 -0
  731. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.en-US.i18n.data.d.ts +26 -0
  732. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.en-US.i18n.data.js +71 -0
  733. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.en-US.i18n.data.js.map +1 -0
  734. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.pl-PL.i18n.data.d.ts +26 -0
  735. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.pl-PL.i18n.data.js +71 -0
  736. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.pl-PL.i18n.data.js.map +1 -0
  737. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.de-DE.i18n.data.d.ts +18 -0
  738. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.de-DE.i18n.data.js +26 -0
  739. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.de-DE.i18n.data.js.map +1 -0
  740. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.en-US.i18n.data.d.ts +18 -0
  741. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.en-US.i18n.data.js +26 -0
  742. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.en-US.i18n.data.js.map +1 -0
  743. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.pl-PL.i18n.data.d.ts +18 -0
  744. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.pl-PL.i18n.data.js +26 -0
  745. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.pl-PL.i18n.data.js.map +1 -0
  746. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.translation.d.ts +8 -0
  747. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.translation.js +5 -0
  748. package/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.translation.js.map +1 -0
  749. package/lib/taon-posts/taon-cms-revision-chooser/index.d.ts +1 -1
  750. package/lib/taon-posts/taon-cms-revision-chooser/index.js +2 -2
  751. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.de-DE.i18n.data.d.ts +21 -0
  752. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.de-DE.i18n.data.js +46 -0
  753. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.de-DE.i18n.data.js.map +1 -0
  754. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.en-US.i18n.data.d.ts +21 -0
  755. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.en-US.i18n.data.js +46 -0
  756. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.en-US.i18n.data.js.map +1 -0
  757. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.pl-PL.i18n.data.d.ts +21 -0
  758. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.pl-PL.i18n.data.js +46 -0
  759. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.pl-PL.i18n.data.js.map +1 -0
  760. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.de-DE.i18n.data.d.ts +17 -0
  761. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.de-DE.i18n.data.js +21 -0
  762. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.de-DE.i18n.data.js.map +1 -0
  763. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.en-US.i18n.data.d.ts +17 -0
  764. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.en-US.i18n.data.js +21 -0
  765. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.en-US.i18n.data.js.map +1 -0
  766. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.pl-PL.i18n.data.d.ts +17 -0
  767. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.pl-PL.i18n.data.js +21 -0
  768. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.pl-PL.i18n.data.js.map +1 -0
  769. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.translation.d.ts +8 -0
  770. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.translation.js +5 -0
  771. package/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.translation.js.map +1 -0
  772. package/lib/taon-posts/taon-related-post-chooser/index.d.ts +1 -1
  773. package/lib/taon-posts/taon-related-post-chooser/index.js +2 -2
  774. package/lib-esm/i18n/app.ts.de-DE.i18n.data.d.ts +0 -0
  775. package/lib-esm/i18n/app.ts.de-DE.i18n.data.js +2 -0
  776. package/lib-esm/i18n/app.ts.de-DE.i18n.data.js.map +1 -0
  777. package/lib-esm/lib/build-info._auto-generated_.d.ts +1 -1
  778. package/lib-esm/lib/build-info._auto-generated_.js +1 -1
  779. package/lib-esm/lib/decorators/taon-cms-authorization.d.ts +4 -0
  780. package/lib-esm/lib/decorators/taon-cms-authorization.js +10 -0
  781. package/lib-esm/lib/decorators/taon-cms-authorization.js.map +1 -1
  782. package/lib-esm/lib/index._auto-generated_.d.ts +3 -0
  783. package/lib-esm/lib/index._auto-generated_.js +6 -1
  784. package/lib-esm/lib/index._auto-generated_.js.map +1 -1
  785. package/lib-esm/lib/migrations/1792579000000_postPermissionInheritance.d.ts +6 -0
  786. package/lib-esm/lib/migrations/1792579000000_postPermissionInheritance.js +28 -0
  787. package/lib-esm/lib/migrations/1792579000000_postPermissionInheritance.js.map +1 -0
  788. package/lib-esm/lib/migrations/1793043000000_postThumbnails.d.ts +6 -0
  789. package/lib-esm/lib/migrations/1793043000000_postThumbnails.js +26 -0
  790. package/lib-esm/lib/migrations/1793043000000_postThumbnails.js.map +1 -0
  791. package/lib-esm/lib/migrations/index.d.ts +9 -0
  792. package/lib-esm/lib/migrations/index.js +10 -0
  793. package/lib-esm/lib/migrations/index.js.map +1 -1
  794. package/lib-esm/lib/migrations/migrations_index._auto-generated_.d.ts +4 -0
  795. package/lib-esm/lib/migrations/migrations_index._auto-generated_.js +4 -0
  796. package/lib-esm/lib/migrations/migrations_index._auto-generated_.js.map +1 -1
  797. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.de-DE.i18n.data.d.ts +19 -0
  798. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.de-DE.i18n.data.js +29 -0
  799. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.de-DE.i18n.data.js.map +1 -0
  800. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.en-US.i18n.data.d.ts +19 -0
  801. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.en-US.i18n.data.js +29 -0
  802. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.en-US.i18n.data.js.map +1 -0
  803. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.pl-PL.i18n.data.d.ts +19 -0
  804. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.pl-PL.i18n.data.js +29 -0
  805. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.pl-PL.i18n.data.js.map +1 -0
  806. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.de-DE.i18n.data.d.ts +17 -0
  807. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.de-DE.i18n.data.js +19 -0
  808. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.de-DE.i18n.data.js.map +1 -0
  809. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.en-US.i18n.data.d.ts +17 -0
  810. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.en-US.i18n.data.js +19 -0
  811. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.en-US.i18n.data.js.map +1 -0
  812. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.pl-PL.i18n.data.d.ts +17 -0
  813. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.pl-PL.i18n.data.js +19 -0
  814. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.pl-PL.i18n.data.js.map +1 -0
  815. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.de-DE.i18n.data.d.ts +18 -0
  816. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.de-DE.i18n.data.js +24 -0
  817. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.de-DE.i18n.data.js.map +1 -0
  818. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.en-US.i18n.data.d.ts +18 -0
  819. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.en-US.i18n.data.js +24 -0
  820. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.en-US.i18n.data.js.map +1 -0
  821. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.pl-PL.i18n.data.d.ts +18 -0
  822. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.pl-PL.i18n.data.js +24 -0
  823. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.pl-PL.i18n.data.js.map +1 -0
  824. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.de-DE.i18n.data.d.ts +18 -0
  825. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.de-DE.i18n.data.js +24 -0
  826. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.de-DE.i18n.data.js.map +1 -0
  827. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.en-US.i18n.data.d.ts +18 -0
  828. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.en-US.i18n.data.js +24 -0
  829. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.en-US.i18n.data.js.map +1 -0
  830. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data.d.ts +18 -0
  831. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data.js +24 -0
  832. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data.js.map +1 -0
  833. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.translation.d.ts +14 -0
  834. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.translation.js +4 -0
  835. package/lib-esm/lib/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.translation.js.map +1 -0
  836. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.de-DE.i18n.data.d.ts +16 -0
  837. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.de-DE.i18n.data.js +14 -0
  838. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.de-DE.i18n.data.js.map +1 -0
  839. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.en-US.i18n.data.d.ts +16 -0
  840. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.en-US.i18n.data.js +14 -0
  841. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.en-US.i18n.data.js.map +1 -0
  842. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.pl-PL.i18n.data.d.ts +16 -0
  843. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.pl-PL.i18n.data.js +14 -0
  844. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.pl-PL.i18n.data.js.map +1 -0
  845. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.de-DE.i18n.data.d.ts +8 -0
  846. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.de-DE.i18n.data.js +8 -0
  847. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.de-DE.i18n.data.js.map +1 -0
  848. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.en-US.i18n.data.d.ts +8 -0
  849. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.en-US.i18n.data.js +8 -0
  850. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.en-US.i18n.data.js.map +1 -0
  851. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.pl-PL.i18n.data.d.ts +8 -0
  852. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.pl-PL.i18n.data.js +8 -0
  853. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.pl-PL.i18n.data.js.map +1 -0
  854. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.de-DE.i18n.data.d.ts +19 -0
  855. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.de-DE.i18n.data.js +29 -0
  856. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.de-DE.i18n.data.js.map +1 -0
  857. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.en-US.i18n.data.d.ts +19 -0
  858. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.en-US.i18n.data.js +29 -0
  859. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.en-US.i18n.data.js.map +1 -0
  860. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.pl-PL.i18n.data.d.ts +19 -0
  861. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.pl-PL.i18n.data.js +29 -0
  862. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.pl-PL.i18n.data.js.map +1 -0
  863. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.translation.d.ts +11 -0
  864. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.translation.js +4 -0
  865. package/lib-esm/lib/taon-cms-backoffice/i18n/taon-cms-backoffice.translation.js.map +1 -0
  866. package/lib-esm/lib/taon-cms-backoffice/index.d.ts +1 -1
  867. package/lib-esm/lib/taon-cms-backoffice/index.js +1 -1
  868. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.controller.ts.de-DE.i18n.data.d.ts +16 -0
  869. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.controller.ts.de-DE.i18n.data.js +14 -0
  870. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.controller.ts.de-DE.i18n.data.js.map +1 -0
  871. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.controller.ts.en-US.i18n.data.d.ts +16 -0
  872. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.controller.ts.en-US.i18n.data.js +14 -0
  873. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.controller.ts.en-US.i18n.data.js.map +1 -0
  874. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.controller.ts.pl-PL.i18n.data.d.ts +16 -0
  875. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.controller.ts.pl-PL.i18n.data.js +14 -0
  876. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.controller.ts.pl-PL.i18n.data.js.map +1 -0
  877. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.repository.ts.de-DE.i18n.data.d.ts +18 -0
  878. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.repository.ts.de-DE.i18n.data.js +24 -0
  879. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.repository.ts.de-DE.i18n.data.js.map +1 -0
  880. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.repository.ts.en-US.i18n.data.d.ts +18 -0
  881. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.repository.ts.en-US.i18n.data.js +24 -0
  882. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.repository.ts.en-US.i18n.data.js.map +1 -0
  883. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.repository.ts.pl-PL.i18n.data.d.ts +18 -0
  884. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.repository.ts.pl-PL.i18n.data.js +24 -0
  885. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.repository.ts.pl-PL.i18n.data.js.map +1 -0
  886. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.translation.d.ts +11 -0
  887. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.translation.js +4 -0
  888. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-category.translation.js.map +1 -0
  889. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.de-DE.i18n.data.d.ts +18 -0
  890. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.de-DE.i18n.data.js +24 -0
  891. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.de-DE.i18n.data.js.map +1 -0
  892. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.en-US.i18n.data.d.ts +18 -0
  893. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.en-US.i18n.data.js +24 -0
  894. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.en-US.i18n.data.js.map +1 -0
  895. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.pl-PL.i18n.data.d.ts +18 -0
  896. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.pl-PL.i18n.data.js +24 -0
  897. package/lib-esm/lib/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.pl-PL.i18n.data.js.map +1 -0
  898. package/lib-esm/lib/taon-cms-category/taon-cms-category.controller.d.ts +7 -1
  899. package/lib-esm/lib/taon-cms-category/taon-cms-category.controller.js +41 -2
  900. package/lib-esm/lib/taon-cms-category/taon-cms-category.controller.js.map +1 -1
  901. package/lib-esm/lib/taon-cms-category/taon-cms-category.repository.d.ts +3 -0
  902. package/lib-esm/lib/taon-cms-category/taon-cms-category.repository.js +57 -0
  903. package/lib-esm/lib/taon-cms-category/taon-cms-category.repository.js.map +1 -1
  904. package/lib-esm/lib/taon-cms-category/taon-cms-taxonomy.validation.d.ts +14 -0
  905. package/lib-esm/lib/taon-cms-category/taon-cms-taxonomy.validation.js +32 -0
  906. package/lib-esm/lib/taon-cms-category/taon-cms-taxonomy.validation.js.map +1 -0
  907. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.de-DE.i18n.data.d.ts +16 -0
  908. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.de-DE.i18n.data.js +14 -0
  909. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.de-DE.i18n.data.js.map +1 -0
  910. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.en-US.i18n.data.d.ts +16 -0
  911. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.en-US.i18n.data.js +14 -0
  912. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.en-US.i18n.data.js.map +1 -0
  913. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.pl-PL.i18n.data.d.ts +16 -0
  914. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.pl-PL.i18n.data.js +14 -0
  915. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.pl-PL.i18n.data.js.map +1 -0
  916. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content.controller.ts.de-DE.i18n.data.d.ts +21 -0
  917. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content.controller.ts.de-DE.i18n.data.js +39 -0
  918. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content.controller.ts.de-DE.i18n.data.js.map +1 -0
  919. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content.controller.ts.en-US.i18n.data.d.ts +6 -0
  920. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content.controller.ts.en-US.i18n.data.js +27 -1
  921. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content.controller.ts.en-US.i18n.data.js.map +1 -1
  922. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content.controller.ts.pl-PL.i18n.data.d.ts +6 -0
  923. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content.controller.ts.pl-PL.i18n.data.js +27 -1
  924. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content.controller.ts.pl-PL.i18n.data.js.map +1 -1
  925. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content.translation.d.ts +5 -1
  926. package/lib-esm/lib/taon-cms-content/i18n/taon-cms-content.translation.js.map +1 -1
  927. package/lib-esm/lib/taon-cms-content/taon-cms-content-storage.controller.d.ts +24 -4
  928. package/lib-esm/lib/taon-cms-content/taon-cms-content-storage.controller.js +101 -8
  929. package/lib-esm/lib/taon-cms-content/taon-cms-content-storage.controller.js.map +1 -1
  930. package/lib-esm/lib/taon-cms-content/taon-cms-content.constants.js +1 -0
  931. package/lib-esm/lib/taon-cms-content/taon-cms-content.constants.js.map +1 -1
  932. package/lib-esm/lib/taon-cms-content/taon-cms-content.controller.d.ts +15 -1
  933. package/lib-esm/lib/taon-cms-content/taon-cms-content.controller.js +280 -4
  934. package/lib-esm/lib/taon-cms-content/taon-cms-content.controller.js.map +1 -1
  935. package/lib-esm/lib/taon-cms-content/taon-cms-content.entity.d.ts +2 -0
  936. package/lib-esm/lib/taon-cms-content/taon-cms-content.entity.js +18 -0
  937. package/lib-esm/lib/taon-cms-content/taon-cms-content.entity.js.map +1 -1
  938. package/lib-esm/lib/taon-cms-content/taon-cms-content.models.d.ts +10 -0
  939. package/lib-esm/lib/taon-cms-content/taon-cms-content.models.js.map +1 -1
  940. package/lib-esm/lib/taon-cms-content/taon-cms-content.repository.d.ts +11 -1
  941. package/lib-esm/lib/taon-cms-content/taon-cms-content.repository.js +220 -29
  942. package/lib-esm/lib/taon-cms-content/taon-cms-content.repository.js.map +1 -1
  943. package/lib-esm/lib/taon-cms-content/taon-cms-content.validation.js +10 -1
  944. package/lib-esm/lib/taon-cms-content/taon-cms-content.validation.js.map +1 -1
  945. package/lib-esm/lib/taon-cms-content/taon-cms-upload-progress.d.ts +1 -0
  946. package/lib-esm/lib/taon-cms-content/taon-cms-upload-progress.js +77 -0
  947. package/lib-esm/lib/taon-cms-content/taon-cms-upload-progress.js.map +1 -0
  948. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.controller.ts.de-DE.i18n.data.d.ts +16 -0
  949. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.controller.ts.de-DE.i18n.data.js +14 -0
  950. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.controller.ts.de-DE.i18n.data.js.map +1 -0
  951. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.controller.ts.en-US.i18n.data.d.ts +16 -0
  952. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.controller.ts.en-US.i18n.data.js +14 -0
  953. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.controller.ts.en-US.i18n.data.js.map +1 -0
  954. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.controller.ts.pl-PL.i18n.data.d.ts +16 -0
  955. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.controller.ts.pl-PL.i18n.data.js +14 -0
  956. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.controller.ts.pl-PL.i18n.data.js.map +1 -0
  957. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.repository.ts.de-DE.i18n.data.d.ts +17 -0
  958. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.repository.ts.de-DE.i18n.data.js +19 -0
  959. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.repository.ts.de-DE.i18n.data.js.map +1 -0
  960. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.repository.ts.en-US.i18n.data.d.ts +17 -0
  961. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.repository.ts.en-US.i18n.data.js +19 -0
  962. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.repository.ts.en-US.i18n.data.js.map +1 -0
  963. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.repository.ts.pl-PL.i18n.data.d.ts +17 -0
  964. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.repository.ts.pl-PL.i18n.data.js +19 -0
  965. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.repository.ts.pl-PL.i18n.data.js.map +1 -0
  966. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.translation.d.ts +8 -0
  967. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.translation.js +4 -0
  968. package/lib-esm/lib/taon-cms-tag/i18n/taon-cms-tag.translation.js.map +1 -0
  969. package/lib-esm/lib/taon-cms-tag/taon-cms-tag.controller.d.ts +7 -1
  970. package/lib-esm/lib/taon-cms-tag/taon-cms-tag.controller.js +41 -2
  971. package/lib-esm/lib/taon-cms-tag/taon-cms-tag.controller.js.map +1 -1
  972. package/lib-esm/lib/taon-cms-tag/taon-cms-tag.repository.d.ts +3 -0
  973. package/lib-esm/lib/taon-cms-tag/taon-cms-tag.repository.js +45 -0
  974. package/lib-esm/lib/taon-cms-tag/taon-cms-tag.repository.js.map +1 -1
  975. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data.d.ts +31 -0
  976. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data.js +89 -0
  977. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data.js.map +1 -0
  978. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data.d.ts +31 -0
  979. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data.js +89 -0
  980. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data.js.map +1 -0
  981. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data.d.ts +31 -0
  982. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data.js +89 -0
  983. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data.js.map +1 -0
  984. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data.d.ts +27 -0
  985. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data.js +74 -0
  986. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data.js.map +1 -0
  987. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data.d.ts +27 -0
  988. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data.js +74 -0
  989. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data.js.map +1 -0
  990. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data.d.ts +27 -0
  991. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data.js +74 -0
  992. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data.js.map +1 -0
  993. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.d.ts +8 -0
  994. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.js +4 -0
  995. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.js.map +1 -0
  996. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.d.ts +73 -0
  997. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.js +323 -0
  998. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.js.map +1 -0
  999. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.d.ts +73 -0
  1000. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.js +323 -0
  1001. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.js.map +1 -0
  1002. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.d.ts +73 -0
  1003. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.js +323 -0
  1004. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.js.map +1 -0
  1005. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.d.ts +51 -0
  1006. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.js +173 -0
  1007. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.js.map +1 -0
  1008. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.d.ts +51 -0
  1009. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.js +170 -0
  1010. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.js.map +1 -0
  1011. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.d.ts +51 -0
  1012. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.js +173 -0
  1013. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.js.map +1 -0
  1014. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.translation.d.ts +8 -0
  1015. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.translation.js +4 -0
  1016. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.translation.js.map +1 -0
  1017. package/lib-esm/lib/taon-posts/taon-cms-post/index.d.ts +1 -1
  1018. package/lib-esm/lib/taon-posts/taon-cms-post/index.js +1 -1
  1019. package/lib-esm/lib/taon-posts/taon-cms-post/taon-cms-post.models.d.ts +2 -1
  1020. package/lib-esm/lib/taon-posts/taon-cms-post/taon-cms-thumbnail.d.ts +5 -0
  1021. package/lib-esm/lib/taon-posts/taon-cms-post/taon-cms-thumbnail.js +138 -0
  1022. package/lib-esm/lib/taon-posts/taon-cms-post/taon-cms-thumbnail.js.map +1 -0
  1023. package/lib-esm/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.d.ts +16 -0
  1024. package/lib-esm/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.js +14 -0
  1025. package/lib-esm/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.js.map +1 -0
  1026. package/lib-esm/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.d.ts +16 -0
  1027. package/lib-esm/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.js +14 -0
  1028. package/lib-esm/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.js.map +1 -0
  1029. package/lib-esm/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.d.ts +16 -0
  1030. package/lib-esm/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.js +14 -0
  1031. package/lib-esm/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.js.map +1 -0
  1032. package/lib-esm/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.translation.d.ts +5 -0
  1033. package/lib-esm/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.translation.js +4 -0
  1034. package/lib-esm/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.translation.js.map +1 -0
  1035. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.d.ts +17 -0
  1036. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.js +19 -0
  1037. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.js.map +1 -0
  1038. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.d.ts +17 -0
  1039. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.js +19 -0
  1040. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.js.map +1 -0
  1041. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.d.ts +17 -0
  1042. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.js +19 -0
  1043. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.js.map +1 -0
  1044. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.d.ts +31 -0
  1045. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.js +68 -0
  1046. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.js.map +1 -0
  1047. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.d.ts +31 -0
  1048. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.js +68 -0
  1049. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.js.map +1 -0
  1050. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.d.ts +31 -0
  1051. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.js +68 -0
  1052. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.js.map +1 -0
  1053. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data.d.ts +17 -0
  1054. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data.js +19 -0
  1055. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data.js.map +1 -0
  1056. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data.d.ts +17 -0
  1057. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data.js +19 -0
  1058. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data.js.map +1 -0
  1059. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data.d.ts +17 -0
  1060. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data.js +19 -0
  1061. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data.js.map +1 -0
  1062. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.translation.d.ts +11 -0
  1063. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.translation.js +4 -0
  1064. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.translation.js.map +1 -0
  1065. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/index.d.ts +1 -1
  1066. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/index.js +1 -1
  1067. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.de-DE.i18n.data.d.ts +26 -0
  1068. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.de-DE.i18n.data.js +69 -0
  1069. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.de-DE.i18n.data.js.map +1 -0
  1070. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.en-US.i18n.data.d.ts +26 -0
  1071. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.en-US.i18n.data.js +69 -0
  1072. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.en-US.i18n.data.js.map +1 -0
  1073. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.pl-PL.i18n.data.d.ts +26 -0
  1074. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.pl-PL.i18n.data.js +69 -0
  1075. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.pl-PL.i18n.data.js.map +1 -0
  1076. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.de-DE.i18n.data.d.ts +18 -0
  1077. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.de-DE.i18n.data.js +24 -0
  1078. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.de-DE.i18n.data.js.map +1 -0
  1079. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.en-US.i18n.data.d.ts +18 -0
  1080. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.en-US.i18n.data.js +24 -0
  1081. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.en-US.i18n.data.js.map +1 -0
  1082. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.pl-PL.i18n.data.d.ts +18 -0
  1083. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.pl-PL.i18n.data.js +24 -0
  1084. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.pl-PL.i18n.data.js.map +1 -0
  1085. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.translation.d.ts +8 -0
  1086. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.translation.js +4 -0
  1087. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.translation.js.map +1 -0
  1088. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/index.d.ts +1 -1
  1089. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/index.js +1 -1
  1090. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.de-DE.i18n.data.d.ts +21 -0
  1091. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.de-DE.i18n.data.js +44 -0
  1092. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.de-DE.i18n.data.js.map +1 -0
  1093. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.en-US.i18n.data.d.ts +21 -0
  1094. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.en-US.i18n.data.js +44 -0
  1095. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.en-US.i18n.data.js.map +1 -0
  1096. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.pl-PL.i18n.data.d.ts +21 -0
  1097. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.pl-PL.i18n.data.js +44 -0
  1098. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.pl-PL.i18n.data.js.map +1 -0
  1099. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.de-DE.i18n.data.d.ts +17 -0
  1100. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.de-DE.i18n.data.js +19 -0
  1101. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.de-DE.i18n.data.js.map +1 -0
  1102. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.en-US.i18n.data.d.ts +17 -0
  1103. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.en-US.i18n.data.js +19 -0
  1104. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.en-US.i18n.data.js.map +1 -0
  1105. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.pl-PL.i18n.data.d.ts +17 -0
  1106. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.pl-PL.i18n.data.js +19 -0
  1107. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.pl-PL.i18n.data.js.map +1 -0
  1108. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.translation.d.ts +8 -0
  1109. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.translation.js +4 -0
  1110. package/lib-esm/lib/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.translation.js.map +1 -0
  1111. package/lib-esm/lib/taon-posts/taon-related-post-chooser/index.d.ts +1 -1
  1112. package/lib-esm/lib/taon-posts/taon-related-post-chooser/index.js +1 -1
  1113. package/lib-prod/build-info._auto-generated_.d.ts +1 -1
  1114. package/lib-prod/build-info._auto-generated_.js +1 -1
  1115. package/lib-prod/decorators/taon-cms-authorization.d.ts +4 -0
  1116. package/lib-prod/decorators/taon-cms-authorization.js +10 -0
  1117. package/lib-prod/decorators/taon-cms-authorization.js.map +1 -1
  1118. package/lib-prod/index._auto-generated_.d.ts +3 -0
  1119. package/lib-prod/index._auto-generated_.js +6 -1
  1120. package/lib-prod/index._auto-generated_.js.map +1 -1
  1121. package/lib-prod/migrations/1792579000000_postPermissionInheritance.d.ts +6 -0
  1122. package/lib-prod/migrations/1792579000000_postPermissionInheritance.js +28 -0
  1123. package/lib-prod/migrations/1792579000000_postPermissionInheritance.js.map +1 -0
  1124. package/lib-prod/migrations/1793043000000_postThumbnails.d.ts +6 -0
  1125. package/lib-prod/migrations/1793043000000_postThumbnails.js +26 -0
  1126. package/lib-prod/migrations/1793043000000_postThumbnails.js.map +1 -0
  1127. package/lib-prod/migrations/index.d.ts +9 -0
  1128. package/lib-prod/migrations/index.js +10 -0
  1129. package/lib-prod/migrations/index.js.map +1 -1
  1130. package/lib-prod/migrations/migrations_index._auto-generated_.d.ts +4 -0
  1131. package/lib-prod/migrations/migrations_index._auto-generated_.js +4 -0
  1132. package/lib-prod/migrations/migrations_index._auto-generated_.js.map +1 -1
  1133. package/lib-prod/package.json +1 -1
  1134. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.de-DE.i18n.data.d.ts +19 -0
  1135. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.de-DE.i18n.data.js +29 -0
  1136. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.de-DE.i18n.data.js.map +1 -0
  1137. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.en-US.i18n.data.d.ts +19 -0
  1138. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.en-US.i18n.data.js +29 -0
  1139. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.en-US.i18n.data.js.map +1 -0
  1140. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.pl-PL.i18n.data.d.ts +19 -0
  1141. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.pl-PL.i18n.data.js +29 -0
  1142. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.pl-PL.i18n.data.js.map +1 -0
  1143. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.de-DE.i18n.data.d.ts +17 -0
  1144. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.de-DE.i18n.data.js +19 -0
  1145. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.de-DE.i18n.data.js.map +1 -0
  1146. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.en-US.i18n.data.d.ts +17 -0
  1147. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.en-US.i18n.data.js +19 -0
  1148. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.en-US.i18n.data.js.map +1 -0
  1149. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.pl-PL.i18n.data.d.ts +17 -0
  1150. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.pl-PL.i18n.data.js +19 -0
  1151. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.pl-PL.i18n.data.js.map +1 -0
  1152. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.de-DE.i18n.data.d.ts +18 -0
  1153. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.de-DE.i18n.data.js +24 -0
  1154. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.de-DE.i18n.data.js.map +1 -0
  1155. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.en-US.i18n.data.d.ts +18 -0
  1156. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.en-US.i18n.data.js +24 -0
  1157. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.en-US.i18n.data.js.map +1 -0
  1158. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.pl-PL.i18n.data.d.ts +18 -0
  1159. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.pl-PL.i18n.data.js +24 -0
  1160. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.pl-PL.i18n.data.js.map +1 -0
  1161. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.de-DE.i18n.data.d.ts +18 -0
  1162. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.de-DE.i18n.data.js +24 -0
  1163. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.de-DE.i18n.data.js.map +1 -0
  1164. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.en-US.i18n.data.d.ts +18 -0
  1165. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.en-US.i18n.data.js +24 -0
  1166. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.en-US.i18n.data.js.map +1 -0
  1167. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data.d.ts +18 -0
  1168. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data.js +24 -0
  1169. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data.js.map +1 -0
  1170. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.translation.d.ts +14 -0
  1171. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.translation.js +4 -0
  1172. package/lib-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.translation.js.map +1 -0
  1173. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.de-DE.i18n.data.d.ts +16 -0
  1174. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.de-DE.i18n.data.js +14 -0
  1175. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.de-DE.i18n.data.js.map +1 -0
  1176. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.en-US.i18n.data.d.ts +16 -0
  1177. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.en-US.i18n.data.js +14 -0
  1178. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.en-US.i18n.data.js.map +1 -0
  1179. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.pl-PL.i18n.data.d.ts +16 -0
  1180. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.pl-PL.i18n.data.js +14 -0
  1181. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.pl-PL.i18n.data.js.map +1 -0
  1182. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.de-DE.i18n.data.d.ts +8 -0
  1183. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.de-DE.i18n.data.js +8 -0
  1184. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.de-DE.i18n.data.js.map +1 -0
  1185. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.en-US.i18n.data.d.ts +8 -0
  1186. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.en-US.i18n.data.js +8 -0
  1187. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.en-US.i18n.data.js.map +1 -0
  1188. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.pl-PL.i18n.data.d.ts +8 -0
  1189. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.pl-PL.i18n.data.js +8 -0
  1190. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.pl-PL.i18n.data.js.map +1 -0
  1191. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.de-DE.i18n.data.d.ts +19 -0
  1192. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.de-DE.i18n.data.js +29 -0
  1193. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.de-DE.i18n.data.js.map +1 -0
  1194. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.en-US.i18n.data.d.ts +19 -0
  1195. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.en-US.i18n.data.js +29 -0
  1196. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.en-US.i18n.data.js.map +1 -0
  1197. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.pl-PL.i18n.data.d.ts +19 -0
  1198. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.pl-PL.i18n.data.js +29 -0
  1199. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.pl-PL.i18n.data.js.map +1 -0
  1200. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.translation.d.ts +11 -0
  1201. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.translation.js +4 -0
  1202. package/lib-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.translation.js.map +1 -0
  1203. package/lib-prod/taon-cms-backoffice/index.d.ts +1 -1
  1204. package/lib-prod/taon-cms-backoffice/index.js +1 -1
  1205. package/lib-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.de-DE.i18n.data.d.ts +16 -0
  1206. package/lib-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.de-DE.i18n.data.js +14 -0
  1207. package/lib-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.de-DE.i18n.data.js.map +1 -0
  1208. package/lib-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.en-US.i18n.data.d.ts +16 -0
  1209. package/lib-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.en-US.i18n.data.js +14 -0
  1210. package/lib-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.en-US.i18n.data.js.map +1 -0
  1211. package/lib-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.pl-PL.i18n.data.d.ts +16 -0
  1212. package/lib-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.pl-PL.i18n.data.js +14 -0
  1213. package/lib-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.pl-PL.i18n.data.js.map +1 -0
  1214. package/lib-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.de-DE.i18n.data.d.ts +18 -0
  1215. package/lib-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.de-DE.i18n.data.js +24 -0
  1216. package/lib-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.de-DE.i18n.data.js.map +1 -0
  1217. package/lib-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.en-US.i18n.data.d.ts +18 -0
  1218. package/lib-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.en-US.i18n.data.js +24 -0
  1219. package/lib-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.en-US.i18n.data.js.map +1 -0
  1220. package/lib-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.pl-PL.i18n.data.d.ts +18 -0
  1221. package/lib-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.pl-PL.i18n.data.js +24 -0
  1222. package/lib-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.pl-PL.i18n.data.js.map +1 -0
  1223. package/lib-prod/taon-cms-category/i18n/taon-cms-category.translation.d.ts +11 -0
  1224. package/lib-prod/taon-cms-category/i18n/taon-cms-category.translation.js +4 -0
  1225. package/lib-prod/taon-cms-category/i18n/taon-cms-category.translation.js.map +1 -0
  1226. package/lib-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.de-DE.i18n.data.d.ts +18 -0
  1227. package/lib-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.de-DE.i18n.data.js +24 -0
  1228. package/lib-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.de-DE.i18n.data.js.map +1 -0
  1229. package/lib-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.en-US.i18n.data.d.ts +18 -0
  1230. package/lib-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.en-US.i18n.data.js +24 -0
  1231. package/lib-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.en-US.i18n.data.js.map +1 -0
  1232. package/lib-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.pl-PL.i18n.data.d.ts +18 -0
  1233. package/lib-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.pl-PL.i18n.data.js +24 -0
  1234. package/lib-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.pl-PL.i18n.data.js.map +1 -0
  1235. package/lib-prod/taon-cms-category/taon-cms-category.controller.d.ts +7 -1
  1236. package/lib-prod/taon-cms-category/taon-cms-category.controller.js +41 -2
  1237. package/lib-prod/taon-cms-category/taon-cms-category.controller.js.map +1 -1
  1238. package/lib-prod/taon-cms-category/taon-cms-category.repository.d.ts +3 -0
  1239. package/lib-prod/taon-cms-category/taon-cms-category.repository.js +57 -0
  1240. package/lib-prod/taon-cms-category/taon-cms-category.repository.js.map +1 -1
  1241. package/lib-prod/taon-cms-category/taon-cms-taxonomy.validation.d.ts +14 -0
  1242. package/lib-prod/taon-cms-category/taon-cms-taxonomy.validation.js +32 -0
  1243. package/lib-prod/taon-cms-category/taon-cms-taxonomy.validation.js.map +1 -0
  1244. package/lib-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.de-DE.i18n.data.d.ts +16 -0
  1245. package/lib-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.de-DE.i18n.data.js +14 -0
  1246. package/lib-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.de-DE.i18n.data.js.map +1 -0
  1247. package/lib-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.en-US.i18n.data.d.ts +16 -0
  1248. package/lib-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.en-US.i18n.data.js +14 -0
  1249. package/lib-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.en-US.i18n.data.js.map +1 -0
  1250. package/lib-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.pl-PL.i18n.data.d.ts +16 -0
  1251. package/lib-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.pl-PL.i18n.data.js +14 -0
  1252. package/lib-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.pl-PL.i18n.data.js.map +1 -0
  1253. package/lib-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.de-DE.i18n.data.d.ts +21 -0
  1254. package/lib-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.de-DE.i18n.data.js +39 -0
  1255. package/lib-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.de-DE.i18n.data.js.map +1 -0
  1256. package/lib-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.en-US.i18n.data.d.ts +6 -0
  1257. package/lib-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.en-US.i18n.data.js +27 -1
  1258. package/lib-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.en-US.i18n.data.js.map +1 -1
  1259. package/lib-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.pl-PL.i18n.data.d.ts +6 -0
  1260. package/lib-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.pl-PL.i18n.data.js +27 -1
  1261. package/lib-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.pl-PL.i18n.data.js.map +1 -1
  1262. package/lib-prod/taon-cms-content/i18n/taon-cms-content.translation.d.ts +5 -1
  1263. package/lib-prod/taon-cms-content/i18n/taon-cms-content.translation.js.map +1 -1
  1264. package/lib-prod/taon-cms-content/taon-cms-content-storage.controller.d.ts +24 -4
  1265. package/lib-prod/taon-cms-content/taon-cms-content-storage.controller.js +101 -8
  1266. package/lib-prod/taon-cms-content/taon-cms-content-storage.controller.js.map +1 -1
  1267. package/lib-prod/taon-cms-content/taon-cms-content.constants.js +1 -0
  1268. package/lib-prod/taon-cms-content/taon-cms-content.constants.js.map +1 -1
  1269. package/lib-prod/taon-cms-content/taon-cms-content.controller.d.ts +15 -1
  1270. package/lib-prod/taon-cms-content/taon-cms-content.controller.js +280 -4
  1271. package/lib-prod/taon-cms-content/taon-cms-content.controller.js.map +1 -1
  1272. package/lib-prod/taon-cms-content/taon-cms-content.entity.d.ts +2 -0
  1273. package/lib-prod/taon-cms-content/taon-cms-content.entity.js +18 -0
  1274. package/lib-prod/taon-cms-content/taon-cms-content.entity.js.map +1 -1
  1275. package/lib-prod/taon-cms-content/taon-cms-content.models.d.ts +10 -0
  1276. package/lib-prod/taon-cms-content/taon-cms-content.models.js.map +1 -1
  1277. package/lib-prod/taon-cms-content/taon-cms-content.repository.d.ts +11 -1
  1278. package/lib-prod/taon-cms-content/taon-cms-content.repository.js +220 -29
  1279. package/lib-prod/taon-cms-content/taon-cms-content.repository.js.map +1 -1
  1280. package/lib-prod/taon-cms-content/taon-cms-content.validation.js +10 -1
  1281. package/lib-prod/taon-cms-content/taon-cms-content.validation.js.map +1 -1
  1282. package/lib-prod/taon-cms-content/taon-cms-upload-progress.d.ts +1 -0
  1283. package/lib-prod/taon-cms-content/taon-cms-upload-progress.js +77 -0
  1284. package/lib-prod/taon-cms-content/taon-cms-upload-progress.js.map +1 -0
  1285. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.de-DE.i18n.data.d.ts +16 -0
  1286. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.de-DE.i18n.data.js +14 -0
  1287. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.de-DE.i18n.data.js.map +1 -0
  1288. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.en-US.i18n.data.d.ts +16 -0
  1289. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.en-US.i18n.data.js +14 -0
  1290. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.en-US.i18n.data.js.map +1 -0
  1291. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.pl-PL.i18n.data.d.ts +16 -0
  1292. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.pl-PL.i18n.data.js +14 -0
  1293. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.pl-PL.i18n.data.js.map +1 -0
  1294. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.de-DE.i18n.data.d.ts +17 -0
  1295. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.de-DE.i18n.data.js +19 -0
  1296. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.de-DE.i18n.data.js.map +1 -0
  1297. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.en-US.i18n.data.d.ts +17 -0
  1298. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.en-US.i18n.data.js +19 -0
  1299. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.en-US.i18n.data.js.map +1 -0
  1300. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.pl-PL.i18n.data.d.ts +17 -0
  1301. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.pl-PL.i18n.data.js +19 -0
  1302. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.pl-PL.i18n.data.js.map +1 -0
  1303. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.translation.d.ts +8 -0
  1304. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.translation.js +4 -0
  1305. package/lib-prod/taon-cms-tag/i18n/taon-cms-tag.translation.js.map +1 -0
  1306. package/lib-prod/taon-cms-tag/taon-cms-tag.controller.d.ts +7 -1
  1307. package/lib-prod/taon-cms-tag/taon-cms-tag.controller.js +41 -2
  1308. package/lib-prod/taon-cms-tag/taon-cms-tag.controller.js.map +1 -1
  1309. package/lib-prod/taon-cms-tag/taon-cms-tag.repository.d.ts +3 -0
  1310. package/lib-prod/taon-cms-tag/taon-cms-tag.repository.js +45 -0
  1311. package/lib-prod/taon-cms-tag/taon-cms-tag.repository.js.map +1 -1
  1312. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data.d.ts +31 -0
  1313. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data.js +89 -0
  1314. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data.js.map +1 -0
  1315. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data.d.ts +31 -0
  1316. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data.js +89 -0
  1317. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data.js.map +1 -0
  1318. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data.d.ts +31 -0
  1319. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data.js +89 -0
  1320. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data.js.map +1 -0
  1321. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data.d.ts +27 -0
  1322. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data.js +74 -0
  1323. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data.js.map +1 -0
  1324. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data.d.ts +27 -0
  1325. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data.js +74 -0
  1326. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data.js.map +1 -0
  1327. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data.d.ts +27 -0
  1328. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data.js +74 -0
  1329. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data.js.map +1 -0
  1330. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.d.ts +8 -0
  1331. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.js +4 -0
  1332. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.js.map +1 -0
  1333. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.d.ts +73 -0
  1334. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.js +323 -0
  1335. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.js.map +1 -0
  1336. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.d.ts +73 -0
  1337. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.js +323 -0
  1338. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.js.map +1 -0
  1339. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.d.ts +73 -0
  1340. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.js +323 -0
  1341. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.js.map +1 -0
  1342. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.d.ts +51 -0
  1343. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.js +173 -0
  1344. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.js.map +1 -0
  1345. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.d.ts +51 -0
  1346. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.js +170 -0
  1347. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.js.map +1 -0
  1348. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.d.ts +51 -0
  1349. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.js +173 -0
  1350. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.js.map +1 -0
  1351. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.translation.d.ts +8 -0
  1352. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.translation.js +4 -0
  1353. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.translation.js.map +1 -0
  1354. package/lib-prod/taon-posts/taon-cms-post/index.d.ts +1 -1
  1355. package/lib-prod/taon-posts/taon-cms-post/index.js +1 -1
  1356. package/lib-prod/taon-posts/taon-cms-post/taon-cms-post.models.d.ts +2 -1
  1357. package/lib-prod/taon-posts/taon-cms-post/taon-cms-thumbnail.d.ts +5 -0
  1358. package/lib-prod/taon-posts/taon-cms-post/taon-cms-thumbnail.js +138 -0
  1359. package/lib-prod/taon-posts/taon-cms-post/taon-cms-thumbnail.js.map +1 -0
  1360. package/lib-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.d.ts +16 -0
  1361. package/lib-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.js +14 -0
  1362. package/lib-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.js.map +1 -0
  1363. package/lib-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.d.ts +16 -0
  1364. package/lib-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.js +14 -0
  1365. package/lib-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.js.map +1 -0
  1366. package/lib-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.d.ts +16 -0
  1367. package/lib-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.js +14 -0
  1368. package/lib-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.js.map +1 -0
  1369. package/lib-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.translation.d.ts +5 -0
  1370. package/lib-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.translation.js +4 -0
  1371. package/lib-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.translation.js.map +1 -0
  1372. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.d.ts +17 -0
  1373. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.js +19 -0
  1374. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.js.map +1 -0
  1375. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.d.ts +17 -0
  1376. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.js +19 -0
  1377. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.js.map +1 -0
  1378. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.d.ts +17 -0
  1379. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.js +19 -0
  1380. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.js.map +1 -0
  1381. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.d.ts +31 -0
  1382. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.js +68 -0
  1383. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.js.map +1 -0
  1384. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.d.ts +31 -0
  1385. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.js +68 -0
  1386. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.js.map +1 -0
  1387. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.d.ts +31 -0
  1388. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.js +68 -0
  1389. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.js.map +1 -0
  1390. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data.d.ts +17 -0
  1391. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data.js +19 -0
  1392. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data.js.map +1 -0
  1393. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data.d.ts +17 -0
  1394. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data.js +19 -0
  1395. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data.js.map +1 -0
  1396. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data.d.ts +17 -0
  1397. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data.js +19 -0
  1398. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data.js.map +1 -0
  1399. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.translation.d.ts +11 -0
  1400. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.translation.js +4 -0
  1401. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.translation.js.map +1 -0
  1402. package/lib-prod/taon-posts/taon-cms-posts-backoffice/index.d.ts +1 -1
  1403. package/lib-prod/taon-posts/taon-cms-posts-backoffice/index.js +1 -1
  1404. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.de-DE.i18n.data.d.ts +26 -0
  1405. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.de-DE.i18n.data.js +69 -0
  1406. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.de-DE.i18n.data.js.map +1 -0
  1407. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.en-US.i18n.data.d.ts +26 -0
  1408. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.en-US.i18n.data.js +69 -0
  1409. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.en-US.i18n.data.js.map +1 -0
  1410. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.pl-PL.i18n.data.d.ts +26 -0
  1411. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.pl-PL.i18n.data.js +69 -0
  1412. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.pl-PL.i18n.data.js.map +1 -0
  1413. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.de-DE.i18n.data.d.ts +18 -0
  1414. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.de-DE.i18n.data.js +24 -0
  1415. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.de-DE.i18n.data.js.map +1 -0
  1416. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.en-US.i18n.data.d.ts +18 -0
  1417. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.en-US.i18n.data.js +24 -0
  1418. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.en-US.i18n.data.js.map +1 -0
  1419. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.pl-PL.i18n.data.d.ts +18 -0
  1420. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.pl-PL.i18n.data.js +24 -0
  1421. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.pl-PL.i18n.data.js.map +1 -0
  1422. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.translation.d.ts +8 -0
  1423. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.translation.js +4 -0
  1424. package/lib-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.translation.js.map +1 -0
  1425. package/lib-prod/taon-posts/taon-cms-revision-chooser/index.d.ts +1 -1
  1426. package/lib-prod/taon-posts/taon-cms-revision-chooser/index.js +1 -1
  1427. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.de-DE.i18n.data.d.ts +21 -0
  1428. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.de-DE.i18n.data.js +44 -0
  1429. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.de-DE.i18n.data.js.map +1 -0
  1430. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.en-US.i18n.data.d.ts +21 -0
  1431. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.en-US.i18n.data.js +44 -0
  1432. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.en-US.i18n.data.js.map +1 -0
  1433. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.pl-PL.i18n.data.d.ts +21 -0
  1434. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.pl-PL.i18n.data.js +44 -0
  1435. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.pl-PL.i18n.data.js.map +1 -0
  1436. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.de-DE.i18n.data.d.ts +17 -0
  1437. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.de-DE.i18n.data.js +19 -0
  1438. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.de-DE.i18n.data.js.map +1 -0
  1439. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.en-US.i18n.data.d.ts +17 -0
  1440. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.en-US.i18n.data.js +19 -0
  1441. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.en-US.i18n.data.js.map +1 -0
  1442. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.pl-PL.i18n.data.d.ts +17 -0
  1443. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.pl-PL.i18n.data.js +19 -0
  1444. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.pl-PL.i18n.data.js.map +1 -0
  1445. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.translation.d.ts +8 -0
  1446. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.translation.js +4 -0
  1447. package/lib-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.translation.js.map +1 -0
  1448. package/lib-prod/taon-posts/taon-related-post-chooser/index.d.ts +1 -1
  1449. package/lib-prod/taon-posts/taon-related-post-chooser/index.js +1 -1
  1450. package/package.json +1 -1
  1451. package/scss/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.scss +11 -0
  1452. package/scss/lib/taon-posts/taon-cms-post/taon-cms-post.component.scss +21 -0
  1453. package/ts-source/browser-code/build-info._auto-generated_.ts +1 -1
  1454. package/ts-source/browser-code/decorators/taon-cms-authorization.ts +4 -0
  1455. package/ts-source/browser-code/index._auto-generated_.ts +6 -1
  1456. package/ts-source/browser-code/migrations/1792579000000_postPermissionInheritance.ts +36 -0
  1457. package/ts-source/browser-code/migrations/1793043000000_postThumbnails.ts +34 -0
  1458. package/ts-source/browser-code/migrations/index.ts +10 -0
  1459. package/ts-source/browser-code/migrations/migrations_index._auto-generated_.ts +4 -0
  1460. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.de-DE.i18n.data.ts +47 -0
  1461. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.de-DE.po +21 -0
  1462. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.en-US.i18n.data.ts +47 -0
  1463. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.en-US.po +21 -0
  1464. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.pl-PL.i18n.data.ts +47 -0
  1465. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.pl-PL.po +21 -0
  1466. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.de-DE.i18n.data.ts +35 -0
  1467. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.de-DE.po +13 -0
  1468. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.en-US.i18n.data.ts +35 -0
  1469. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.en-US.po +13 -0
  1470. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.pl-PL.i18n.data.ts +35 -0
  1471. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.pl-PL.po +13 -0
  1472. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.de-DE.i18n.data.ts +41 -0
  1473. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.de-DE.po +17 -0
  1474. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.en-US.i18n.data.ts +41 -0
  1475. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.en-US.po +17 -0
  1476. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.pl-PL.i18n.data.ts +41 -0
  1477. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.pl-PL.po +17 -0
  1478. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.de-DE.i18n.data.ts +41 -0
  1479. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.de-DE.po +17 -0
  1480. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.en-US.i18n.data.ts +41 -0
  1481. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.en-US.po +17 -0
  1482. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data.ts +41 -0
  1483. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.pl-PL.po +17 -0
  1484. package/ts-source/browser-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.translation.ts +27 -0
  1485. package/ts-source/browser-code/taon-cms-assets-backoffice/taon-cms-asset-preview.component.html +57 -0
  1486. package/ts-source/{websql-code-prod/taon-posts/taon-cms-post-edit-dialog/index.ts → browser-code/taon-cms-assets-backoffice/taon-cms-asset-preview.component.scss} +12 -3
  1487. package/ts-source/browser-code/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts +79 -0
  1488. package/ts-source/browser-code/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html +42 -0
  1489. package/ts-source/browser-code/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts +59 -18
  1490. package/ts-source/browser-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.de-DE.i18n.data.ts +29 -0
  1491. package/ts-source/browser-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.de-DE.po +9 -0
  1492. package/ts-source/browser-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.en-US.i18n.data.ts +29 -0
  1493. package/ts-source/browser-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.en-US.po +9 -0
  1494. package/ts-source/browser-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.pl-PL.i18n.data.ts +29 -0
  1495. package/ts-source/browser-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.pl-PL.po +9 -0
  1496. package/ts-source/browser-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.de-DE.i18n.data.ts +19 -0
  1497. package/ts-source/browser-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.de-DE.po +5 -0
  1498. package/ts-source/browser-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.en-US.i18n.data.ts +19 -0
  1499. package/ts-source/browser-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.en-US.po +5 -0
  1500. package/ts-source/browser-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.pl-PL.i18n.data.ts +19 -0
  1501. package/ts-source/browser-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.pl-PL.po +5 -0
  1502. package/ts-source/browser-code/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.de-DE.i18n.data.ts +47 -0
  1503. package/ts-source/browser-code/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.de-DE.po +21 -0
  1504. package/ts-source/browser-code/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.en-US.i18n.data.ts +47 -0
  1505. package/ts-source/browser-code/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.en-US.po +21 -0
  1506. package/ts-source/browser-code/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.pl-PL.i18n.data.ts +47 -0
  1507. package/ts-source/browser-code/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.pl-PL.po +21 -0
  1508. package/ts-source/browser-code/taon-cms-backoffice/i18n/taon-cms-backoffice.translation.ts +24 -0
  1509. package/ts-source/browser-code/taon-cms-backoffice/taon-cms-backoffice.component.html +3 -1
  1510. package/ts-source/browser-code/taon-cms-backoffice/taon-cms-backoffice.component.ts +4 -0
  1511. package/ts-source/browser-code/taon-cms-backoffice/taon-cms-backoffice.routes.ts +21 -2
  1512. package/ts-source/browser-code/taon-cms-category/i18n/taon-cms-category.controller.ts.de-DE.i18n.data.ts +29 -0
  1513. package/ts-source/browser-code/taon-cms-category/i18n/taon-cms-category.controller.ts.de-DE.po +9 -0
  1514. package/ts-source/browser-code/taon-cms-category/i18n/taon-cms-category.controller.ts.en-US.i18n.data.ts +29 -0
  1515. package/ts-source/browser-code/taon-cms-category/i18n/taon-cms-category.controller.ts.en-US.po +9 -0
  1516. package/ts-source/browser-code/taon-cms-category/i18n/taon-cms-category.controller.ts.pl-PL.i18n.data.ts +29 -0
  1517. package/ts-source/browser-code/taon-cms-category/i18n/taon-cms-category.controller.ts.pl-PL.po +9 -0
  1518. package/ts-source/browser-code/taon-cms-category/i18n/taon-cms-category.repository.ts.de-DE.i18n.data.ts +41 -0
  1519. package/ts-source/browser-code/taon-cms-category/i18n/taon-cms-category.repository.ts.de-DE.po +17 -0
  1520. package/ts-source/browser-code/taon-cms-category/i18n/taon-cms-category.repository.ts.en-US.i18n.data.ts +41 -0
  1521. package/ts-source/browser-code/taon-cms-category/i18n/taon-cms-category.repository.ts.en-US.po +17 -0
  1522. package/ts-source/browser-code/taon-cms-category/i18n/taon-cms-category.repository.ts.pl-PL.i18n.data.ts +41 -0
  1523. package/ts-source/browser-code/taon-cms-category/i18n/taon-cms-category.repository.ts.pl-PL.po +17 -0
  1524. package/ts-source/browser-code/taon-cms-category/i18n/taon-cms-category.translation.ts +24 -0
  1525. package/ts-source/browser-code/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.de-DE.i18n.data.ts +41 -0
  1526. package/ts-source/browser-code/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.de-DE.po +17 -0
  1527. package/ts-source/browser-code/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.en-US.i18n.data.ts +41 -0
  1528. package/ts-source/browser-code/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.en-US.po +17 -0
  1529. package/ts-source/browser-code/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.pl-PL.i18n.data.ts +41 -0
  1530. package/ts-source/browser-code/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.pl-PL.po +17 -0
  1531. package/ts-source/browser-code/taon-cms-category/taon-cms-category-api.service.ts +13 -0
  1532. package/ts-source/browser-code/taon-cms-category/taon-cms-category.controller.ts +25 -2
  1533. package/ts-source/browser-code/taon-cms-category/taon-cms-category.repository.ts +12 -0
  1534. package/ts-source/browser-code/taon-cms-category/taon-cms-taxonomy.validation.ts +56 -0
  1535. package/ts-source/browser-code/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.de-DE.i18n.data.ts +29 -0
  1536. package/ts-source/browser-code/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.de-DE.po +9 -0
  1537. package/ts-source/browser-code/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.en-US.i18n.data.ts +29 -0
  1538. package/ts-source/browser-code/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.en-US.po +9 -0
  1539. package/ts-source/browser-code/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.pl-PL.i18n.data.ts +29 -0
  1540. package/ts-source/browser-code/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.pl-PL.po +9 -0
  1541. package/ts-source/browser-code/taon-cms-content/i18n/taon-cms-content.controller.ts.de-DE.i18n.data.ts +59 -0
  1542. package/ts-source/browser-code/taon-cms-content/i18n/taon-cms-content.controller.ts.de-DE.po +29 -0
  1543. package/ts-source/browser-code/taon-cms-content/i18n/taon-cms-content.controller.ts.en-US.i18n.data.ts +32 -1
  1544. package/ts-source/browser-code/taon-cms-content/i18n/taon-cms-content.controller.ts.en-US.po +22 -2
  1545. package/ts-source/browser-code/taon-cms-content/i18n/taon-cms-content.controller.ts.pl-PL.i18n.data.ts +32 -1
  1546. package/ts-source/browser-code/taon-cms-content/i18n/taon-cms-content.controller.ts.pl-PL.po +22 -2
  1547. package/ts-source/browser-code/taon-cms-content/i18n/taon-cms-content.translation.ts +5 -1
  1548. package/ts-source/browser-code/taon-cms-content/taon-cms-content-api.service.ts +92 -9
  1549. package/ts-source/browser-code/taon-cms-content/taon-cms-content-storage.controller.ts +38 -7
  1550. package/ts-source/browser-code/taon-cms-content/taon-cms-content.constants.ts +1 -0
  1551. package/ts-source/browser-code/taon-cms-content/taon-cms-content.controller.ts +88 -2
  1552. package/ts-source/browser-code/taon-cms-content/taon-cms-content.entity.ts +2 -0
  1553. package/ts-source/browser-code/taon-cms-content/taon-cms-content.models.ts +10 -0
  1554. package/ts-source/browser-code/taon-cms-content/taon-cms-content.repository.ts +43 -3
  1555. package/ts-source/browser-code/taon-cms-content/taon-cms-content.validation.ts +10 -1
  1556. package/ts-source/browser-code/taon-cms-content/taon-cms-upload-progress.ts +85 -0
  1557. package/ts-source/browser-code/taon-cms-tag/i18n/taon-cms-tag.controller.ts.de-DE.i18n.data.ts +29 -0
  1558. package/ts-source/browser-code/taon-cms-tag/i18n/taon-cms-tag.controller.ts.de-DE.po +9 -0
  1559. package/ts-source/browser-code/taon-cms-tag/i18n/taon-cms-tag.controller.ts.en-US.i18n.data.ts +29 -0
  1560. package/ts-source/browser-code/taon-cms-tag/i18n/taon-cms-tag.controller.ts.en-US.po +9 -0
  1561. package/ts-source/browser-code/taon-cms-tag/i18n/taon-cms-tag.controller.ts.pl-PL.i18n.data.ts +29 -0
  1562. package/ts-source/browser-code/taon-cms-tag/i18n/taon-cms-tag.controller.ts.pl-PL.po +9 -0
  1563. package/ts-source/browser-code/taon-cms-tag/i18n/taon-cms-tag.repository.ts.de-DE.i18n.data.ts +35 -0
  1564. package/ts-source/browser-code/taon-cms-tag/i18n/taon-cms-tag.repository.ts.de-DE.po +13 -0
  1565. package/ts-source/browser-code/taon-cms-tag/i18n/taon-cms-tag.repository.ts.en-US.i18n.data.ts +35 -0
  1566. package/ts-source/browser-code/taon-cms-tag/i18n/taon-cms-tag.repository.ts.en-US.po +13 -0
  1567. package/ts-source/browser-code/taon-cms-tag/i18n/taon-cms-tag.repository.ts.pl-PL.i18n.data.ts +35 -0
  1568. package/ts-source/browser-code/taon-cms-tag/i18n/taon-cms-tag.repository.ts.pl-PL.po +13 -0
  1569. package/ts-source/browser-code/taon-cms-tag/i18n/taon-cms-tag.translation.ts +21 -0
  1570. package/ts-source/browser-code/taon-cms-tag/taon-cms-tag-api.service.ts +19 -0
  1571. package/ts-source/browser-code/taon-cms-tag/taon-cms-tag.controller.ts +25 -2
  1572. package/ts-source/browser-code/taon-cms-tag/taon-cms-tag.repository.ts +12 -0
  1573. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data.ts +119 -0
  1574. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.po +69 -0
  1575. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data.ts +119 -0
  1576. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.en-US.po +69 -0
  1577. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data.ts +119 -0
  1578. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.po +69 -0
  1579. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data.ts +100 -0
  1580. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.po +54 -0
  1581. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data.ts +100 -0
  1582. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.po +54 -0
  1583. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data.ts +100 -0
  1584. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.po +54 -0
  1585. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.ts +21 -0
  1586. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.html +117 -0
  1587. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts +249 -0
  1588. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.routes.ts +27 -0
  1589. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.ts +391 -0
  1590. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.po +230 -0
  1591. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.ts +391 -0
  1592. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.po +230 -0
  1593. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.ts +391 -0
  1594. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.po +230 -0
  1595. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.ts +219 -0
  1596. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.po +134 -0
  1597. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.ts +216 -0
  1598. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.po +134 -0
  1599. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.ts +219 -0
  1600. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.po +134 -0
  1601. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.translation.ts +21 -0
  1602. package/ts-source/browser-code/taon-posts/taon-cms-post/taon-cms-post.component.html +518 -92
  1603. package/ts-source/browser-code/taon-posts/taon-cms-post/taon-cms-post.component.scss +21 -0
  1604. package/ts-source/browser-code/taon-posts/taon-cms-post/taon-cms-post.component.ts +495 -39
  1605. package/ts-source/browser-code/taon-posts/taon-cms-post/taon-cms-post.models.ts +2 -1
  1606. package/ts-source/browser-code/taon-posts/taon-cms-post/taon-cms-thumbnail.ts +148 -0
  1607. package/ts-source/browser-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.ts +29 -0
  1608. package/ts-source/browser-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.po +9 -0
  1609. package/ts-source/browser-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.ts +29 -0
  1610. package/ts-source/browser-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.po +9 -0
  1611. package/ts-source/browser-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.ts +29 -0
  1612. package/ts-source/browser-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.po +9 -0
  1613. package/ts-source/browser-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.translation.ts +18 -0
  1614. package/ts-source/browser-code/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts +36 -5
  1615. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.ts +35 -0
  1616. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.po +13 -0
  1617. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.ts +35 -0
  1618. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.po +13 -0
  1619. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.ts +35 -0
  1620. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.po +13 -0
  1621. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.ts +94 -0
  1622. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.po +53 -0
  1623. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.ts +94 -0
  1624. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.po +53 -0
  1625. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.ts +94 -0
  1626. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.po +53 -0
  1627. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data.ts +35 -0
  1628. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.de-DE.po +13 -0
  1629. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data.ts +35 -0
  1630. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.en-US.po +13 -0
  1631. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data.ts +35 -0
  1632. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.po +13 -0
  1633. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.translation.ts +24 -0
  1634. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html +2 -2
  1635. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts +43 -37
  1636. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts +10 -2
  1637. package/ts-source/browser-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.de-DE.i18n.data.ts +94 -0
  1638. package/ts-source/browser-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.de-DE.po +50 -0
  1639. package/ts-source/browser-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.en-US.i18n.data.ts +94 -0
  1640. package/ts-source/browser-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.en-US.po +50 -0
  1641. package/ts-source/browser-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.pl-PL.i18n.data.ts +94 -0
  1642. package/ts-source/browser-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.pl-PL.po +50 -0
  1643. package/ts-source/browser-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.de-DE.i18n.data.ts +41 -0
  1644. package/ts-source/browser-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.de-DE.po +17 -0
  1645. package/ts-source/browser-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.en-US.i18n.data.ts +41 -0
  1646. package/ts-source/browser-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.en-US.po +17 -0
  1647. package/ts-source/browser-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.pl-PL.i18n.data.ts +41 -0
  1648. package/ts-source/browser-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.pl-PL.po +17 -0
  1649. package/ts-source/browser-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.translation.ts +21 -0
  1650. package/ts-source/browser-code/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.html +55 -14
  1651. package/ts-source/browser-code/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.ts +22 -8
  1652. package/ts-source/browser-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.de-DE.i18n.data.ts +64 -0
  1653. package/ts-source/browser-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.de-DE.po +30 -0
  1654. package/ts-source/browser-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.en-US.i18n.data.ts +64 -0
  1655. package/ts-source/browser-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.en-US.po +30 -0
  1656. package/ts-source/browser-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.pl-PL.i18n.data.ts +64 -0
  1657. package/ts-source/browser-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.pl-PL.po +30 -0
  1658. package/ts-source/browser-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.de-DE.i18n.data.ts +35 -0
  1659. package/ts-source/browser-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.de-DE.po +13 -0
  1660. package/ts-source/browser-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.en-US.i18n.data.ts +35 -0
  1661. package/ts-source/browser-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.en-US.po +13 -0
  1662. package/ts-source/browser-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.pl-PL.i18n.data.ts +35 -0
  1663. package/ts-source/browser-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.pl-PL.po +13 -0
  1664. package/ts-source/browser-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.translation.ts +21 -0
  1665. package/ts-source/browser-code/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.html +40 -11
  1666. package/ts-source/browser-code/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.ts +6 -2
  1667. package/ts-source/browser-code-prod/build-info._auto-generated_.ts +1 -1
  1668. package/ts-source/browser-code-prod/decorators/taon-cms-authorization.ts +4 -0
  1669. package/ts-source/browser-code-prod/index._auto-generated_.ts +6 -1
  1670. package/ts-source/browser-code-prod/migrations/1792579000000_postPermissionInheritance.ts +36 -0
  1671. package/ts-source/browser-code-prod/migrations/1793043000000_postThumbnails.ts +34 -0
  1672. package/ts-source/browser-code-prod/migrations/index.ts +10 -0
  1673. package/ts-source/browser-code-prod/migrations/migrations_index._auto-generated_.ts +4 -0
  1674. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.de-DE.i18n.data.ts +47 -0
  1675. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.de-DE.po +21 -0
  1676. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.en-US.i18n.data.ts +47 -0
  1677. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.en-US.po +21 -0
  1678. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.pl-PL.i18n.data.ts +47 -0
  1679. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.pl-PL.po +21 -0
  1680. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.de-DE.i18n.data.ts +35 -0
  1681. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.de-DE.po +13 -0
  1682. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.en-US.i18n.data.ts +35 -0
  1683. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.en-US.po +13 -0
  1684. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.pl-PL.i18n.data.ts +35 -0
  1685. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.pl-PL.po +13 -0
  1686. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.de-DE.i18n.data.ts +41 -0
  1687. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.de-DE.po +17 -0
  1688. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.en-US.i18n.data.ts +41 -0
  1689. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.en-US.po +17 -0
  1690. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.pl-PL.i18n.data.ts +41 -0
  1691. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.pl-PL.po +17 -0
  1692. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.de-DE.i18n.data.ts +41 -0
  1693. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.de-DE.po +17 -0
  1694. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.en-US.i18n.data.ts +41 -0
  1695. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.en-US.po +17 -0
  1696. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data.ts +41 -0
  1697. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.pl-PL.po +17 -0
  1698. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.translation.ts +27 -0
  1699. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/taon-cms-asset-preview.component.html +57 -0
  1700. package/ts-source/{browser-code/taon-posts/taon-cms-post-edit-dialog/index.ts → browser-code-prod/taon-cms-assets-backoffice/taon-cms-asset-preview.component.scss} +12 -3
  1701. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts +79 -0
  1702. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html +42 -0
  1703. package/ts-source/browser-code-prod/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts +59 -18
  1704. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.de-DE.i18n.data.ts +29 -0
  1705. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.de-DE.po +9 -0
  1706. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.en-US.i18n.data.ts +29 -0
  1707. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.en-US.po +9 -0
  1708. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.pl-PL.i18n.data.ts +29 -0
  1709. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.pl-PL.po +9 -0
  1710. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.de-DE.i18n.data.ts +19 -0
  1711. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.de-DE.po +5 -0
  1712. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.en-US.i18n.data.ts +19 -0
  1713. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.en-US.po +5 -0
  1714. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.pl-PL.i18n.data.ts +19 -0
  1715. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.pl-PL.po +5 -0
  1716. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.de-DE.i18n.data.ts +47 -0
  1717. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.de-DE.po +21 -0
  1718. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.en-US.i18n.data.ts +47 -0
  1719. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.en-US.po +21 -0
  1720. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.pl-PL.i18n.data.ts +47 -0
  1721. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.pl-PL.po +21 -0
  1722. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.translation.split-namespaces.json +4 -0
  1723. package/ts-source/browser-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.translation.ts +24 -0
  1724. package/ts-source/browser-code-prod/taon-cms-backoffice/taon-cms-backoffice.component.html +3 -1
  1725. package/ts-source/browser-code-prod/taon-cms-backoffice/taon-cms-backoffice.component.ts +4 -0
  1726. package/ts-source/browser-code-prod/taon-cms-backoffice/taon-cms-backoffice.routes.ts +21 -2
  1727. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.de-DE.i18n.data.ts +29 -0
  1728. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.de-DE.po +9 -0
  1729. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.en-US.i18n.data.ts +29 -0
  1730. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.en-US.po +9 -0
  1731. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.pl-PL.i18n.data.ts +29 -0
  1732. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.pl-PL.po +9 -0
  1733. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.de-DE.i18n.data.ts +41 -0
  1734. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.de-DE.po +17 -0
  1735. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.en-US.i18n.data.ts +41 -0
  1736. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.en-US.po +17 -0
  1737. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.pl-PL.i18n.data.ts +41 -0
  1738. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.pl-PL.po +17 -0
  1739. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-category.translation.split-namespaces.json +4 -0
  1740. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-category.translation.ts +24 -0
  1741. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.de-DE.i18n.data.ts +41 -0
  1742. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.de-DE.po +17 -0
  1743. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.en-US.i18n.data.ts +41 -0
  1744. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.en-US.po +17 -0
  1745. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.pl-PL.i18n.data.ts +41 -0
  1746. package/ts-source/browser-code-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.pl-PL.po +17 -0
  1747. package/ts-source/browser-code-prod/taon-cms-category/taon-cms-category-api.service.ts +13 -0
  1748. package/ts-source/browser-code-prod/taon-cms-category/taon-cms-category.controller.ts +25 -2
  1749. package/ts-source/browser-code-prod/taon-cms-category/taon-cms-category.repository.ts +12 -0
  1750. package/ts-source/browser-code-prod/taon-cms-category/taon-cms-taxonomy.validation.split-namespaces.json +4 -0
  1751. package/ts-source/browser-code-prod/taon-cms-category/taon-cms-taxonomy.validation.ts +56 -0
  1752. package/ts-source/browser-code-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.de-DE.i18n.data.ts +29 -0
  1753. package/ts-source/browser-code-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.de-DE.po +9 -0
  1754. package/ts-source/browser-code-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.en-US.i18n.data.ts +29 -0
  1755. package/ts-source/browser-code-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.en-US.po +9 -0
  1756. package/ts-source/browser-code-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.pl-PL.i18n.data.ts +29 -0
  1757. package/ts-source/browser-code-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.pl-PL.po +9 -0
  1758. package/ts-source/browser-code-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.de-DE.i18n.data.ts +59 -0
  1759. package/ts-source/browser-code-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.de-DE.po +29 -0
  1760. package/ts-source/browser-code-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.en-US.i18n.data.ts +32 -1
  1761. package/ts-source/browser-code-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.en-US.po +22 -2
  1762. package/ts-source/browser-code-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.pl-PL.i18n.data.ts +32 -1
  1763. package/ts-source/browser-code-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.pl-PL.po +22 -2
  1764. package/ts-source/browser-code-prod/taon-cms-content/i18n/taon-cms-content.translation.ts +5 -1
  1765. package/ts-source/browser-code-prod/taon-cms-content/taon-cms-content-api.service.ts +92 -9
  1766. package/ts-source/browser-code-prod/taon-cms-content/taon-cms-content-storage.controller.ts +38 -7
  1767. package/ts-source/browser-code-prod/taon-cms-content/taon-cms-content.constants.ts +1 -0
  1768. package/ts-source/browser-code-prod/taon-cms-content/taon-cms-content.controller.ts +88 -2
  1769. package/ts-source/browser-code-prod/taon-cms-content/taon-cms-content.entity.ts +2 -0
  1770. package/ts-source/browser-code-prod/taon-cms-content/taon-cms-content.models.ts +10 -0
  1771. package/ts-source/browser-code-prod/taon-cms-content/taon-cms-content.repository.ts +43 -3
  1772. package/ts-source/browser-code-prod/taon-cms-content/taon-cms-content.validation.ts +10 -1
  1773. package/ts-source/browser-code-prod/taon-cms-content/taon-cms-upload-progress.split-namespaces.json +4 -0
  1774. package/ts-source/browser-code-prod/taon-cms-content/taon-cms-upload-progress.ts +85 -0
  1775. package/ts-source/browser-code-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.de-DE.i18n.data.ts +29 -0
  1776. package/ts-source/browser-code-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.de-DE.po +9 -0
  1777. package/ts-source/browser-code-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.en-US.i18n.data.ts +29 -0
  1778. package/ts-source/browser-code-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.en-US.po +9 -0
  1779. package/ts-source/browser-code-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.pl-PL.i18n.data.ts +29 -0
  1780. package/ts-source/browser-code-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.pl-PL.po +9 -0
  1781. package/ts-source/browser-code-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.de-DE.i18n.data.ts +35 -0
  1782. package/ts-source/browser-code-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.de-DE.po +13 -0
  1783. package/ts-source/browser-code-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.en-US.i18n.data.ts +35 -0
  1784. package/ts-source/browser-code-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.en-US.po +13 -0
  1785. package/ts-source/browser-code-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.pl-PL.i18n.data.ts +35 -0
  1786. package/ts-source/browser-code-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.pl-PL.po +13 -0
  1787. package/ts-source/browser-code-prod/taon-cms-tag/i18n/taon-cms-tag.translation.split-namespaces.json +4 -0
  1788. package/ts-source/browser-code-prod/taon-cms-tag/i18n/taon-cms-tag.translation.ts +21 -0
  1789. package/ts-source/browser-code-prod/taon-cms-tag/taon-cms-tag-api.service.ts +19 -0
  1790. package/ts-source/browser-code-prod/taon-cms-tag/taon-cms-tag.controller.ts +25 -2
  1791. package/ts-source/browser-code-prod/taon-cms-tag/taon-cms-tag.repository.ts +12 -0
  1792. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data.ts +119 -0
  1793. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.po +69 -0
  1794. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data.ts +119 -0
  1795. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.en-US.po +69 -0
  1796. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data.ts +119 -0
  1797. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.po +69 -0
  1798. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data.ts +100 -0
  1799. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.po +54 -0
  1800. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data.ts +100 -0
  1801. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.po +54 -0
  1802. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data.ts +100 -0
  1803. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.po +54 -0
  1804. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.split-namespaces.json +4 -0
  1805. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.ts +21 -0
  1806. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.html +117 -0
  1807. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.split-namespaces.json +4 -0
  1808. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts +249 -0
  1809. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.routes.split-namespaces.json +4 -0
  1810. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.routes.ts +27 -0
  1811. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.ts +391 -0
  1812. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.po +230 -0
  1813. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.ts +391 -0
  1814. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.po +230 -0
  1815. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.ts +391 -0
  1816. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.po +230 -0
  1817. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.ts +219 -0
  1818. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.po +134 -0
  1819. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.ts +216 -0
  1820. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.po +134 -0
  1821. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.ts +219 -0
  1822. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.po +134 -0
  1823. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.translation.split-namespaces.json +4 -0
  1824. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.translation.ts +21 -0
  1825. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/taon-cms-post.component.html +518 -92
  1826. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/taon-cms-post.component.scss +21 -0
  1827. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/taon-cms-post.component.ts +495 -39
  1828. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/taon-cms-post.models.ts +2 -1
  1829. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/taon-cms-thumbnail.split-namespaces.json +4 -0
  1830. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/taon-cms-thumbnail.ts +148 -0
  1831. package/ts-source/browser-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.ts +29 -0
  1832. package/ts-source/browser-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.po +9 -0
  1833. package/ts-source/browser-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.ts +29 -0
  1834. package/ts-source/browser-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.po +9 -0
  1835. package/ts-source/browser-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.ts +29 -0
  1836. package/ts-source/browser-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.po +9 -0
  1837. package/ts-source/browser-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.translation.split-namespaces.json +4 -0
  1838. package/ts-source/browser-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.translation.ts +18 -0
  1839. package/ts-source/browser-code-prod/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts +36 -5
  1840. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.ts +35 -0
  1841. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.po +13 -0
  1842. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.ts +35 -0
  1843. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.po +13 -0
  1844. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.ts +35 -0
  1845. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.po +13 -0
  1846. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.ts +94 -0
  1847. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.po +53 -0
  1848. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.ts +94 -0
  1849. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.po +53 -0
  1850. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.ts +94 -0
  1851. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.po +53 -0
  1852. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data.ts +35 -0
  1853. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.de-DE.po +13 -0
  1854. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data.ts +35 -0
  1855. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.en-US.po +13 -0
  1856. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data.ts +35 -0
  1857. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.po +13 -0
  1858. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.translation.split-namespaces.json +4 -0
  1859. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.translation.ts +24 -0
  1860. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html +2 -2
  1861. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts +43 -37
  1862. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts +10 -2
  1863. package/ts-source/browser-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.de-DE.i18n.data.ts +94 -0
  1864. package/ts-source/browser-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.de-DE.po +50 -0
  1865. package/ts-source/browser-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.en-US.i18n.data.ts +94 -0
  1866. package/ts-source/browser-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.en-US.po +50 -0
  1867. package/ts-source/browser-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.pl-PL.i18n.data.ts +94 -0
  1868. package/ts-source/browser-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.pl-PL.po +50 -0
  1869. package/ts-source/browser-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.de-DE.i18n.data.ts +41 -0
  1870. package/ts-source/browser-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.de-DE.po +17 -0
  1871. package/ts-source/browser-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.en-US.i18n.data.ts +41 -0
  1872. package/ts-source/browser-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.en-US.po +17 -0
  1873. package/ts-source/browser-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.pl-PL.i18n.data.ts +41 -0
  1874. package/ts-source/browser-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.pl-PL.po +17 -0
  1875. package/ts-source/browser-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.translation.split-namespaces.json +4 -0
  1876. package/ts-source/browser-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.translation.ts +21 -0
  1877. package/ts-source/browser-code-prod/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.html +55 -14
  1878. package/ts-source/browser-code-prod/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.ts +22 -8
  1879. package/ts-source/browser-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.de-DE.i18n.data.ts +64 -0
  1880. package/ts-source/browser-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.de-DE.po +30 -0
  1881. package/ts-source/browser-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.en-US.i18n.data.ts +64 -0
  1882. package/ts-source/browser-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.en-US.po +30 -0
  1883. package/ts-source/browser-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.pl-PL.i18n.data.ts +64 -0
  1884. package/ts-source/browser-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.pl-PL.po +30 -0
  1885. package/ts-source/browser-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.de-DE.i18n.data.ts +35 -0
  1886. package/ts-source/browser-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.de-DE.po +13 -0
  1887. package/ts-source/browser-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.en-US.i18n.data.ts +35 -0
  1888. package/ts-source/browser-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.en-US.po +13 -0
  1889. package/ts-source/browser-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.pl-PL.i18n.data.ts +35 -0
  1890. package/ts-source/browser-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.pl-PL.po +13 -0
  1891. package/ts-source/browser-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.translation.split-namespaces.json +4 -0
  1892. package/ts-source/browser-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.translation.ts +21 -0
  1893. package/ts-source/browser-code-prod/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.html +40 -11
  1894. package/ts-source/browser-code-prod/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.ts +6 -2
  1895. package/ts-source/websql-code/build-info._auto-generated_.ts +1 -1
  1896. package/ts-source/websql-code/decorators/taon-cms-authorization.ts +10 -0
  1897. package/ts-source/websql-code/index._auto-generated_.ts +6 -1
  1898. package/ts-source/websql-code/migrations/1792579000000_postPermissionInheritance.ts +36 -0
  1899. package/ts-source/websql-code/migrations/1793043000000_postThumbnails.ts +34 -0
  1900. package/ts-source/websql-code/migrations/index.ts +10 -0
  1901. package/ts-source/websql-code/migrations/migrations_index._auto-generated_.ts +4 -0
  1902. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.de-DE.i18n.data.ts +47 -0
  1903. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.de-DE.po +21 -0
  1904. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.en-US.i18n.data.ts +47 -0
  1905. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.en-US.po +21 -0
  1906. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.pl-PL.i18n.data.ts +47 -0
  1907. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.pl-PL.po +21 -0
  1908. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.de-DE.i18n.data.ts +35 -0
  1909. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.de-DE.po +13 -0
  1910. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.en-US.i18n.data.ts +35 -0
  1911. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.en-US.po +13 -0
  1912. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.pl-PL.i18n.data.ts +35 -0
  1913. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.pl-PL.po +13 -0
  1914. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.de-DE.i18n.data.ts +41 -0
  1915. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.de-DE.po +17 -0
  1916. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.en-US.i18n.data.ts +41 -0
  1917. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.en-US.po +17 -0
  1918. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.pl-PL.i18n.data.ts +41 -0
  1919. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.pl-PL.po +17 -0
  1920. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.de-DE.i18n.data.ts +41 -0
  1921. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.de-DE.po +17 -0
  1922. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.en-US.i18n.data.ts +41 -0
  1923. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.en-US.po +17 -0
  1924. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data.ts +41 -0
  1925. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.pl-PL.po +17 -0
  1926. package/ts-source/websql-code/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.translation.ts +27 -0
  1927. package/ts-source/websql-code/taon-cms-assets-backoffice/taon-cms-asset-preview.component.html +57 -0
  1928. package/ts-source/websql-code/{taon-posts/taon-cms-post-edit-dialog/index.ts → taon-cms-assets-backoffice/taon-cms-asset-preview.component.scss} +12 -3
  1929. package/ts-source/websql-code/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts +79 -0
  1930. package/ts-source/websql-code/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html +42 -0
  1931. package/ts-source/websql-code/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts +59 -18
  1932. package/ts-source/websql-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.de-DE.i18n.data.ts +29 -0
  1933. package/ts-source/websql-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.de-DE.po +9 -0
  1934. package/ts-source/websql-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.en-US.i18n.data.ts +29 -0
  1935. package/ts-source/websql-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.en-US.po +9 -0
  1936. package/ts-source/websql-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.pl-PL.i18n.data.ts +29 -0
  1937. package/ts-source/websql-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.pl-PL.po +9 -0
  1938. package/ts-source/websql-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.de-DE.i18n.data.ts +19 -0
  1939. package/ts-source/websql-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.de-DE.po +5 -0
  1940. package/ts-source/websql-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.en-US.i18n.data.ts +19 -0
  1941. package/ts-source/websql-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.en-US.po +5 -0
  1942. package/ts-source/websql-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.pl-PL.i18n.data.ts +19 -0
  1943. package/ts-source/websql-code/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.pl-PL.po +5 -0
  1944. package/ts-source/websql-code/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.de-DE.i18n.data.ts +47 -0
  1945. package/ts-source/websql-code/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.de-DE.po +21 -0
  1946. package/ts-source/websql-code/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.en-US.i18n.data.ts +47 -0
  1947. package/ts-source/websql-code/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.en-US.po +21 -0
  1948. package/ts-source/websql-code/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.pl-PL.i18n.data.ts +47 -0
  1949. package/ts-source/websql-code/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.pl-PL.po +21 -0
  1950. package/ts-source/websql-code/taon-cms-backoffice/i18n/taon-cms-backoffice.translation.ts +24 -0
  1951. package/ts-source/websql-code/taon-cms-backoffice/taon-cms-backoffice.component.html +3 -1
  1952. package/ts-source/websql-code/taon-cms-backoffice/taon-cms-backoffice.component.ts +4 -0
  1953. package/ts-source/websql-code/taon-cms-backoffice/taon-cms-backoffice.routes.ts +21 -2
  1954. package/ts-source/websql-code/taon-cms-category/i18n/taon-cms-category.controller.ts.de-DE.i18n.data.ts +29 -0
  1955. package/ts-source/websql-code/taon-cms-category/i18n/taon-cms-category.controller.ts.de-DE.po +9 -0
  1956. package/ts-source/websql-code/taon-cms-category/i18n/taon-cms-category.controller.ts.en-US.i18n.data.ts +29 -0
  1957. package/ts-source/websql-code/taon-cms-category/i18n/taon-cms-category.controller.ts.en-US.po +9 -0
  1958. package/ts-source/websql-code/taon-cms-category/i18n/taon-cms-category.controller.ts.pl-PL.i18n.data.ts +29 -0
  1959. package/ts-source/websql-code/taon-cms-category/i18n/taon-cms-category.controller.ts.pl-PL.po +9 -0
  1960. package/ts-source/websql-code/taon-cms-category/i18n/taon-cms-category.repository.ts.de-DE.i18n.data.ts +41 -0
  1961. package/ts-source/websql-code/taon-cms-category/i18n/taon-cms-category.repository.ts.de-DE.po +17 -0
  1962. package/ts-source/websql-code/taon-cms-category/i18n/taon-cms-category.repository.ts.en-US.i18n.data.ts +41 -0
  1963. package/ts-source/websql-code/taon-cms-category/i18n/taon-cms-category.repository.ts.en-US.po +17 -0
  1964. package/ts-source/websql-code/taon-cms-category/i18n/taon-cms-category.repository.ts.pl-PL.i18n.data.ts +41 -0
  1965. package/ts-source/websql-code/taon-cms-category/i18n/taon-cms-category.repository.ts.pl-PL.po +17 -0
  1966. package/ts-source/websql-code/taon-cms-category/i18n/taon-cms-category.translation.ts +24 -0
  1967. package/ts-source/websql-code/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.de-DE.i18n.data.ts +41 -0
  1968. package/ts-source/websql-code/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.de-DE.po +17 -0
  1969. package/ts-source/websql-code/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.en-US.i18n.data.ts +41 -0
  1970. package/ts-source/websql-code/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.en-US.po +17 -0
  1971. package/ts-source/websql-code/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.pl-PL.i18n.data.ts +41 -0
  1972. package/ts-source/websql-code/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.pl-PL.po +17 -0
  1973. package/ts-source/websql-code/taon-cms-category/taon-cms-category-api.service.ts +13 -0
  1974. package/ts-source/websql-code/taon-cms-category/taon-cms-category.controller.ts +25 -2
  1975. package/ts-source/websql-code/taon-cms-category/taon-cms-category.repository.ts +54 -0
  1976. package/ts-source/websql-code/taon-cms-category/taon-cms-taxonomy.validation.ts +56 -0
  1977. package/ts-source/websql-code/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.de-DE.i18n.data.ts +29 -0
  1978. package/ts-source/websql-code/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.de-DE.po +9 -0
  1979. package/ts-source/websql-code/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.en-US.i18n.data.ts +29 -0
  1980. package/ts-source/websql-code/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.en-US.po +9 -0
  1981. package/ts-source/websql-code/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.pl-PL.i18n.data.ts +29 -0
  1982. package/ts-source/websql-code/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.pl-PL.po +9 -0
  1983. package/ts-source/websql-code/taon-cms-content/i18n/taon-cms-content.controller.ts.de-DE.i18n.data.ts +59 -0
  1984. package/ts-source/websql-code/taon-cms-content/i18n/taon-cms-content.controller.ts.de-DE.po +29 -0
  1985. package/ts-source/websql-code/taon-cms-content/i18n/taon-cms-content.controller.ts.en-US.i18n.data.ts +32 -1
  1986. package/ts-source/websql-code/taon-cms-content/i18n/taon-cms-content.controller.ts.en-US.po +22 -2
  1987. package/ts-source/websql-code/taon-cms-content/i18n/taon-cms-content.controller.ts.pl-PL.i18n.data.ts +32 -1
  1988. package/ts-source/websql-code/taon-cms-content/i18n/taon-cms-content.controller.ts.pl-PL.po +22 -2
  1989. package/ts-source/websql-code/taon-cms-content/i18n/taon-cms-content.translation.ts +5 -1
  1990. package/ts-source/websql-code/taon-cms-content/taon-cms-content-api.service.ts +92 -9
  1991. package/ts-source/websql-code/taon-cms-content/taon-cms-content-storage.controller.ts +54 -7
  1992. package/ts-source/websql-code/taon-cms-content/taon-cms-content.constants.ts +1 -0
  1993. package/ts-source/websql-code/taon-cms-content/taon-cms-content.controller.ts +151 -4
  1994. package/ts-source/websql-code/taon-cms-content/taon-cms-content.entity.ts +4 -0
  1995. package/ts-source/websql-code/taon-cms-content/taon-cms-content.models.ts +10 -0
  1996. package/ts-source/websql-code/taon-cms-content/taon-cms-content.repository.ts +198 -30
  1997. package/ts-source/websql-code/taon-cms-content/taon-cms-content.validation.ts +10 -1
  1998. package/ts-source/websql-code/taon-cms-content/taon-cms-upload-progress.ts +85 -0
  1999. package/ts-source/websql-code/taon-cms-tag/i18n/taon-cms-tag.controller.ts.de-DE.i18n.data.ts +29 -0
  2000. package/ts-source/websql-code/taon-cms-tag/i18n/taon-cms-tag.controller.ts.de-DE.po +9 -0
  2001. package/ts-source/websql-code/taon-cms-tag/i18n/taon-cms-tag.controller.ts.en-US.i18n.data.ts +29 -0
  2002. package/ts-source/websql-code/taon-cms-tag/i18n/taon-cms-tag.controller.ts.en-US.po +9 -0
  2003. package/ts-source/websql-code/taon-cms-tag/i18n/taon-cms-tag.controller.ts.pl-PL.i18n.data.ts +29 -0
  2004. package/ts-source/websql-code/taon-cms-tag/i18n/taon-cms-tag.controller.ts.pl-PL.po +9 -0
  2005. package/ts-source/websql-code/taon-cms-tag/i18n/taon-cms-tag.repository.ts.de-DE.i18n.data.ts +35 -0
  2006. package/ts-source/websql-code/taon-cms-tag/i18n/taon-cms-tag.repository.ts.de-DE.po +13 -0
  2007. package/ts-source/websql-code/taon-cms-tag/i18n/taon-cms-tag.repository.ts.en-US.i18n.data.ts +35 -0
  2008. package/ts-source/websql-code/taon-cms-tag/i18n/taon-cms-tag.repository.ts.en-US.po +13 -0
  2009. package/ts-source/websql-code/taon-cms-tag/i18n/taon-cms-tag.repository.ts.pl-PL.i18n.data.ts +35 -0
  2010. package/ts-source/websql-code/taon-cms-tag/i18n/taon-cms-tag.repository.ts.pl-PL.po +13 -0
  2011. package/ts-source/websql-code/taon-cms-tag/i18n/taon-cms-tag.translation.ts +21 -0
  2012. package/ts-source/websql-code/taon-cms-tag/taon-cms-tag-api.service.ts +19 -0
  2013. package/ts-source/websql-code/taon-cms-tag/taon-cms-tag.controller.ts +25 -2
  2014. package/ts-source/websql-code/taon-cms-tag/taon-cms-tag.repository.ts +42 -0
  2015. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data.ts +119 -0
  2016. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.po +69 -0
  2017. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data.ts +119 -0
  2018. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.en-US.po +69 -0
  2019. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data.ts +119 -0
  2020. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.po +69 -0
  2021. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data.ts +100 -0
  2022. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.po +54 -0
  2023. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data.ts +100 -0
  2024. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.po +54 -0
  2025. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data.ts +100 -0
  2026. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.po +54 -0
  2027. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.ts +21 -0
  2028. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.html +117 -0
  2029. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts +249 -0
  2030. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.routes.ts +27 -0
  2031. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.ts +391 -0
  2032. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.po +230 -0
  2033. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.ts +391 -0
  2034. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.po +230 -0
  2035. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.ts +391 -0
  2036. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.po +230 -0
  2037. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.ts +219 -0
  2038. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.po +134 -0
  2039. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.ts +216 -0
  2040. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.po +134 -0
  2041. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.ts +219 -0
  2042. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.po +134 -0
  2043. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.translation.ts +21 -0
  2044. package/ts-source/websql-code/taon-posts/taon-cms-post/taon-cms-post.component.html +518 -92
  2045. package/ts-source/websql-code/taon-posts/taon-cms-post/taon-cms-post.component.scss +21 -0
  2046. package/ts-source/websql-code/taon-posts/taon-cms-post/taon-cms-post.component.ts +495 -39
  2047. package/ts-source/websql-code/taon-posts/taon-cms-post/taon-cms-post.models.ts +2 -1
  2048. package/ts-source/websql-code/taon-posts/taon-cms-post/taon-cms-thumbnail.ts +148 -0
  2049. package/ts-source/websql-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.ts +29 -0
  2050. package/ts-source/websql-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.po +9 -0
  2051. package/ts-source/websql-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.ts +29 -0
  2052. package/ts-source/websql-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.po +9 -0
  2053. package/ts-source/websql-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.ts +29 -0
  2054. package/ts-source/websql-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.po +9 -0
  2055. package/ts-source/websql-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.translation.ts +18 -0
  2056. package/ts-source/websql-code/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts +36 -5
  2057. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.ts +35 -0
  2058. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.po +13 -0
  2059. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.ts +35 -0
  2060. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.po +13 -0
  2061. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.ts +35 -0
  2062. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.po +13 -0
  2063. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.ts +94 -0
  2064. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.po +53 -0
  2065. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.ts +94 -0
  2066. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.po +53 -0
  2067. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.ts +94 -0
  2068. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.po +53 -0
  2069. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data.ts +35 -0
  2070. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.de-DE.po +13 -0
  2071. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data.ts +35 -0
  2072. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.en-US.po +13 -0
  2073. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data.ts +35 -0
  2074. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.po +13 -0
  2075. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.translation.ts +24 -0
  2076. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html +2 -2
  2077. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts +43 -37
  2078. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts +10 -2
  2079. package/ts-source/websql-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.de-DE.i18n.data.ts +94 -0
  2080. package/ts-source/websql-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.de-DE.po +50 -0
  2081. package/ts-source/websql-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.en-US.i18n.data.ts +94 -0
  2082. package/ts-source/websql-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.en-US.po +50 -0
  2083. package/ts-source/websql-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.pl-PL.i18n.data.ts +94 -0
  2084. package/ts-source/websql-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.pl-PL.po +50 -0
  2085. package/ts-source/websql-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.de-DE.i18n.data.ts +41 -0
  2086. package/ts-source/websql-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.de-DE.po +17 -0
  2087. package/ts-source/websql-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.en-US.i18n.data.ts +41 -0
  2088. package/ts-source/websql-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.en-US.po +17 -0
  2089. package/ts-source/websql-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.pl-PL.i18n.data.ts +41 -0
  2090. package/ts-source/websql-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.pl-PL.po +17 -0
  2091. package/ts-source/websql-code/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.translation.ts +21 -0
  2092. package/ts-source/websql-code/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.html +55 -14
  2093. package/ts-source/websql-code/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.ts +22 -8
  2094. package/ts-source/websql-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.de-DE.i18n.data.ts +64 -0
  2095. package/ts-source/websql-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.de-DE.po +30 -0
  2096. package/ts-source/websql-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.en-US.i18n.data.ts +64 -0
  2097. package/ts-source/websql-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.en-US.po +30 -0
  2098. package/ts-source/websql-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.pl-PL.i18n.data.ts +64 -0
  2099. package/ts-source/websql-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.pl-PL.po +30 -0
  2100. package/ts-source/websql-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.de-DE.i18n.data.ts +35 -0
  2101. package/ts-source/websql-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.de-DE.po +13 -0
  2102. package/ts-source/websql-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.en-US.i18n.data.ts +35 -0
  2103. package/ts-source/websql-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.en-US.po +13 -0
  2104. package/ts-source/websql-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.pl-PL.i18n.data.ts +35 -0
  2105. package/ts-source/websql-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.pl-PL.po +13 -0
  2106. package/ts-source/websql-code/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.translation.ts +21 -0
  2107. package/ts-source/websql-code/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.html +40 -11
  2108. package/ts-source/websql-code/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.ts +6 -2
  2109. package/ts-source/websql-code-prod/build-info._auto-generated_.ts +1 -1
  2110. package/ts-source/websql-code-prod/decorators/taon-cms-authorization.ts +10 -0
  2111. package/ts-source/websql-code-prod/index._auto-generated_.ts +6 -1
  2112. package/ts-source/websql-code-prod/migrations/1792579000000_postPermissionInheritance.split-namespaces.json +4 -0
  2113. package/ts-source/websql-code-prod/migrations/1792579000000_postPermissionInheritance.ts +36 -0
  2114. package/ts-source/websql-code-prod/migrations/1793043000000_postThumbnails.split-namespaces.json +4 -0
  2115. package/ts-source/websql-code-prod/migrations/1793043000000_postThumbnails.ts +34 -0
  2116. package/ts-source/websql-code-prod/migrations/index.ts +10 -0
  2117. package/ts-source/websql-code-prod/migrations/migrations_index._auto-generated_.ts +4 -0
  2118. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.de-DE.i18n.data.ts +47 -0
  2119. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.de-DE.po +21 -0
  2120. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.en-US.i18n.data.ts +47 -0
  2121. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.en-US.po +21 -0
  2122. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.pl-PL.i18n.data.ts +47 -0
  2123. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.html.pl-PL.po +21 -0
  2124. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.de-DE.i18n.data.ts +35 -0
  2125. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.de-DE.po +13 -0
  2126. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.en-US.i18n.data.ts +35 -0
  2127. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.en-US.po +13 -0
  2128. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.pl-PL.i18n.data.ts +35 -0
  2129. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-asset-preview.component.ts.pl-PL.po +13 -0
  2130. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.de-DE.i18n.data.ts +41 -0
  2131. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.de-DE.po +17 -0
  2132. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.en-US.i18n.data.ts +41 -0
  2133. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.en-US.po +17 -0
  2134. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.pl-PL.i18n.data.ts +41 -0
  2135. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.html.pl-PL.po +17 -0
  2136. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.de-DE.i18n.data.ts +41 -0
  2137. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.de-DE.po +17 -0
  2138. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.en-US.i18n.data.ts +41 -0
  2139. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.en-US.po +17 -0
  2140. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data.ts +41 -0
  2141. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.component.ts.pl-PL.po +17 -0
  2142. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.translation.split-namespaces.json +4 -0
  2143. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.translation.ts +27 -0
  2144. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/taon-cms-asset-preview.component.html +57 -0
  2145. package/ts-source/{browser-code-prod/taon-posts/taon-cms-post-edit-dialog/index.ts → websql-code-prod/taon-cms-assets-backoffice/taon-cms-asset-preview.component.scss} +12 -3
  2146. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/taon-cms-asset-preview.component.split-namespaces.json +4 -0
  2147. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts +79 -0
  2148. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html +42 -0
  2149. package/ts-source/websql-code-prod/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts +59 -18
  2150. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.de-DE.i18n.data.ts +29 -0
  2151. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.de-DE.po +9 -0
  2152. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.en-US.i18n.data.ts +29 -0
  2153. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.en-US.po +9 -0
  2154. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.pl-PL.i18n.data.ts +29 -0
  2155. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.html.pl-PL.po +9 -0
  2156. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.de-DE.i18n.data.ts +19 -0
  2157. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.de-DE.po +5 -0
  2158. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.en-US.i18n.data.ts +19 -0
  2159. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.en-US.po +5 -0
  2160. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.pl-PL.i18n.data.ts +19 -0
  2161. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.component.ts.pl-PL.po +5 -0
  2162. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.de-DE.i18n.data.ts +47 -0
  2163. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.de-DE.po +21 -0
  2164. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.en-US.i18n.data.ts +47 -0
  2165. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.en-US.po +21 -0
  2166. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.pl-PL.i18n.data.ts +47 -0
  2167. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.routes.ts.pl-PL.po +21 -0
  2168. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.translation.split-namespaces.json +4 -0
  2169. package/ts-source/websql-code-prod/taon-cms-backoffice/i18n/taon-cms-backoffice.translation.ts +24 -0
  2170. package/ts-source/websql-code-prod/taon-cms-backoffice/taon-cms-backoffice.component.html +3 -1
  2171. package/ts-source/websql-code-prod/taon-cms-backoffice/taon-cms-backoffice.component.ts +4 -0
  2172. package/ts-source/websql-code-prod/taon-cms-backoffice/taon-cms-backoffice.routes.ts +21 -2
  2173. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.de-DE.i18n.data.ts +29 -0
  2174. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.de-DE.po +9 -0
  2175. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.en-US.i18n.data.ts +29 -0
  2176. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.en-US.po +9 -0
  2177. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.pl-PL.i18n.data.ts +29 -0
  2178. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-category.controller.ts.pl-PL.po +9 -0
  2179. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.de-DE.i18n.data.ts +41 -0
  2180. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.de-DE.po +17 -0
  2181. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.en-US.i18n.data.ts +41 -0
  2182. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.en-US.po +17 -0
  2183. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.pl-PL.i18n.data.ts +41 -0
  2184. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-category.repository.ts.pl-PL.po +17 -0
  2185. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-category.translation.split-namespaces.json +4 -0
  2186. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-category.translation.ts +24 -0
  2187. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.de-DE.i18n.data.ts +41 -0
  2188. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.de-DE.po +17 -0
  2189. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.en-US.i18n.data.ts +41 -0
  2190. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.en-US.po +17 -0
  2191. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.pl-PL.i18n.data.ts +41 -0
  2192. package/ts-source/websql-code-prod/taon-cms-category/i18n/taon-cms-taxonomy.validation.ts.pl-PL.po +17 -0
  2193. package/ts-source/websql-code-prod/taon-cms-category/taon-cms-category-api.service.ts +13 -0
  2194. package/ts-source/websql-code-prod/taon-cms-category/taon-cms-category.controller.ts +25 -2
  2195. package/ts-source/websql-code-prod/taon-cms-category/taon-cms-category.repository.ts +54 -0
  2196. package/ts-source/websql-code-prod/taon-cms-category/taon-cms-taxonomy.validation.split-namespaces.json +4 -0
  2197. package/ts-source/websql-code-prod/taon-cms-category/taon-cms-taxonomy.validation.ts +56 -0
  2198. package/ts-source/websql-code-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.de-DE.i18n.data.ts +29 -0
  2199. package/ts-source/websql-code-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.de-DE.po +9 -0
  2200. package/ts-source/websql-code-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.en-US.i18n.data.ts +29 -0
  2201. package/ts-source/websql-code-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.en-US.po +9 -0
  2202. package/ts-source/websql-code-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.pl-PL.i18n.data.ts +29 -0
  2203. package/ts-source/websql-code-prod/taon-cms-content/i18n/taon-cms-content-storage.controller.ts.pl-PL.po +9 -0
  2204. package/ts-source/websql-code-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.de-DE.i18n.data.ts +59 -0
  2205. package/ts-source/websql-code-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.de-DE.po +29 -0
  2206. package/ts-source/websql-code-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.en-US.i18n.data.ts +32 -1
  2207. package/ts-source/websql-code-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.en-US.po +22 -2
  2208. package/ts-source/websql-code-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.pl-PL.i18n.data.ts +32 -1
  2209. package/ts-source/websql-code-prod/taon-cms-content/i18n/taon-cms-content.controller.ts.pl-PL.po +22 -2
  2210. package/ts-source/websql-code-prod/taon-cms-content/i18n/taon-cms-content.translation.ts +5 -1
  2211. package/ts-source/websql-code-prod/taon-cms-content/taon-cms-content-api.service.ts +92 -9
  2212. package/ts-source/websql-code-prod/taon-cms-content/taon-cms-content-storage.controller.ts +54 -7
  2213. package/ts-source/websql-code-prod/taon-cms-content/taon-cms-content.constants.ts +1 -0
  2214. package/ts-source/websql-code-prod/taon-cms-content/taon-cms-content.controller.ts +151 -4
  2215. package/ts-source/websql-code-prod/taon-cms-content/taon-cms-content.entity.ts +4 -0
  2216. package/ts-source/websql-code-prod/taon-cms-content/taon-cms-content.models.ts +10 -0
  2217. package/ts-source/websql-code-prod/taon-cms-content/taon-cms-content.repository.ts +198 -30
  2218. package/ts-source/websql-code-prod/taon-cms-content/taon-cms-content.validation.ts +10 -1
  2219. package/ts-source/websql-code-prod/taon-cms-content/taon-cms-upload-progress.split-namespaces.json +4 -0
  2220. package/ts-source/websql-code-prod/taon-cms-content/taon-cms-upload-progress.ts +85 -0
  2221. package/ts-source/websql-code-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.de-DE.i18n.data.ts +29 -0
  2222. package/ts-source/websql-code-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.de-DE.po +9 -0
  2223. package/ts-source/websql-code-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.en-US.i18n.data.ts +29 -0
  2224. package/ts-source/websql-code-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.en-US.po +9 -0
  2225. package/ts-source/websql-code-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.pl-PL.i18n.data.ts +29 -0
  2226. package/ts-source/websql-code-prod/taon-cms-tag/i18n/taon-cms-tag.controller.ts.pl-PL.po +9 -0
  2227. package/ts-source/websql-code-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.de-DE.i18n.data.ts +35 -0
  2228. package/ts-source/websql-code-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.de-DE.po +13 -0
  2229. package/ts-source/websql-code-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.en-US.i18n.data.ts +35 -0
  2230. package/ts-source/websql-code-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.en-US.po +13 -0
  2231. package/ts-source/websql-code-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.pl-PL.i18n.data.ts +35 -0
  2232. package/ts-source/websql-code-prod/taon-cms-tag/i18n/taon-cms-tag.repository.ts.pl-PL.po +13 -0
  2233. package/ts-source/websql-code-prod/taon-cms-tag/i18n/taon-cms-tag.translation.split-namespaces.json +4 -0
  2234. package/ts-source/websql-code-prod/taon-cms-tag/i18n/taon-cms-tag.translation.ts +21 -0
  2235. package/ts-source/websql-code-prod/taon-cms-tag/taon-cms-tag-api.service.ts +19 -0
  2236. package/ts-source/websql-code-prod/taon-cms-tag/taon-cms-tag.controller.ts +25 -2
  2237. package/ts-source/websql-code-prod/taon-cms-tag/taon-cms-tag.repository.ts +42 -0
  2238. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data.ts +119 -0
  2239. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.de-DE.po +69 -0
  2240. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data.ts +119 -0
  2241. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.en-US.po +69 -0
  2242. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data.ts +119 -0
  2243. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.html.pl-PL.po +69 -0
  2244. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data.ts +100 -0
  2245. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.de-DE.po +54 -0
  2246. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data.ts +100 -0
  2247. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.en-US.po +54 -0
  2248. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data.ts +100 -0
  2249. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.component.ts.pl-PL.po +54 -0
  2250. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.split-namespaces.json +4 -0
  2251. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.ts +21 -0
  2252. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.html +117 -0
  2253. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.split-namespaces.json +4 -0
  2254. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts +249 -0
  2255. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.routes.split-namespaces.json +4 -0
  2256. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.routes.ts +27 -0
  2257. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.ts +391 -0
  2258. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.po +230 -0
  2259. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.ts +391 -0
  2260. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.po +230 -0
  2261. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.ts +391 -0
  2262. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.po +230 -0
  2263. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.ts +219 -0
  2264. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.po +134 -0
  2265. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.ts +216 -0
  2266. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.po +134 -0
  2267. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.ts +219 -0
  2268. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.po +134 -0
  2269. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.translation.split-namespaces.json +4 -0
  2270. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.translation.ts +21 -0
  2271. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/taon-cms-post.component.html +518 -92
  2272. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/taon-cms-post.component.scss +21 -0
  2273. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/taon-cms-post.component.ts +495 -39
  2274. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/taon-cms-post.models.ts +2 -1
  2275. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/taon-cms-thumbnail.split-namespaces.json +4 -0
  2276. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/taon-cms-thumbnail.ts +148 -0
  2277. package/ts-source/websql-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.ts +29 -0
  2278. package/ts-source/websql-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.po +9 -0
  2279. package/ts-source/websql-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.ts +29 -0
  2280. package/ts-source/websql-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.po +9 -0
  2281. package/ts-source/websql-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.ts +29 -0
  2282. package/ts-source/websql-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.po +9 -0
  2283. package/ts-source/websql-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.translation.split-namespaces.json +4 -0
  2284. package/ts-source/websql-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.translation.ts +18 -0
  2285. package/ts-source/websql-code-prod/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts +36 -5
  2286. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.ts +35 -0
  2287. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.po +13 -0
  2288. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.ts +35 -0
  2289. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.po +13 -0
  2290. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.ts +35 -0
  2291. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.po +13 -0
  2292. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.ts +94 -0
  2293. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.po +53 -0
  2294. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.ts +94 -0
  2295. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.po +53 -0
  2296. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.ts +94 -0
  2297. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.po +53 -0
  2298. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data.ts +35 -0
  2299. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.de-DE.po +13 -0
  2300. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.en-US.i18n.data.ts +35 -0
  2301. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.en-US.po +13 -0
  2302. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data.ts +35 -0
  2303. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.routes.ts.pl-PL.po +13 -0
  2304. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.translation.split-namespaces.json +4 -0
  2305. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.translation.ts +24 -0
  2306. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html +2 -2
  2307. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts +43 -37
  2308. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts +10 -2
  2309. package/ts-source/websql-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.de-DE.i18n.data.ts +94 -0
  2310. package/ts-source/websql-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.de-DE.po +50 -0
  2311. package/ts-source/websql-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.en-US.i18n.data.ts +94 -0
  2312. package/ts-source/websql-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.en-US.po +50 -0
  2313. package/ts-source/websql-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.pl-PL.i18n.data.ts +94 -0
  2314. package/ts-source/websql-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.html.pl-PL.po +50 -0
  2315. package/ts-source/websql-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.de-DE.i18n.data.ts +41 -0
  2316. package/ts-source/websql-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.de-DE.po +17 -0
  2317. package/ts-source/websql-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.en-US.i18n.data.ts +41 -0
  2318. package/ts-source/websql-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.en-US.po +17 -0
  2319. package/ts-source/websql-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.pl-PL.i18n.data.ts +41 -0
  2320. package/ts-source/websql-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.component.ts.pl-PL.po +17 -0
  2321. package/ts-source/websql-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.translation.split-namespaces.json +4 -0
  2322. package/ts-source/websql-code-prod/taon-posts/taon-cms-revision-chooser/i18n/taon-cms-revision-chooser.translation.ts +21 -0
  2323. package/ts-source/websql-code-prod/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.html +55 -14
  2324. package/ts-source/websql-code-prod/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.ts +22 -8
  2325. package/ts-source/websql-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.de-DE.i18n.data.ts +64 -0
  2326. package/ts-source/websql-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.de-DE.po +30 -0
  2327. package/ts-source/websql-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.en-US.i18n.data.ts +64 -0
  2328. package/ts-source/websql-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.en-US.po +30 -0
  2329. package/ts-source/websql-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.pl-PL.i18n.data.ts +64 -0
  2330. package/ts-source/websql-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.html.pl-PL.po +30 -0
  2331. package/ts-source/websql-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.de-DE.i18n.data.ts +35 -0
  2332. package/ts-source/websql-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.de-DE.po +13 -0
  2333. package/ts-source/websql-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.en-US.i18n.data.ts +35 -0
  2334. package/ts-source/websql-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.en-US.po +13 -0
  2335. package/ts-source/websql-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.pl-PL.i18n.data.ts +35 -0
  2336. package/ts-source/websql-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.component.ts.pl-PL.po +13 -0
  2337. package/ts-source/websql-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.translation.split-namespaces.json +4 -0
  2338. package/ts-source/websql-code-prod/taon-posts/taon-related-post-chooser/i18n/taon-related-post-chooser.translation.ts +21 -0
  2339. package/ts-source/websql-code-prod/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.html +40 -11
  2340. package/ts-source/websql-code-prod/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.ts +6 -2
  2341. package/websql/fesm2022/cms-websql-taon-cms-asset-preview.component.html.de-DE.i18n.data-CrTGrY98.mjs +31 -0
  2342. package/websql/fesm2022/cms-websql-taon-cms-asset-preview.component.html.de-DE.i18n.data-CrTGrY98.mjs.map +1 -0
  2343. package/websql/fesm2022/cms-websql-taon-cms-asset-preview.component.html.en-US.i18n.data-BJxrA1qp.mjs +31 -0
  2344. package/websql/fesm2022/cms-websql-taon-cms-asset-preview.component.html.en-US.i18n.data-BJxrA1qp.mjs.map +1 -0
  2345. package/websql/fesm2022/cms-websql-taon-cms-asset-preview.component.html.pl-PL.i18n.data-C_6GO-6u.mjs +31 -0
  2346. package/websql/fesm2022/cms-websql-taon-cms-asset-preview.component.html.pl-PL.i18n.data-C_6GO-6u.mjs.map +1 -0
  2347. package/websql/fesm2022/cms-websql-taon-cms-asset-preview.component.ts.de-DE.i18n.data-KGtM_c5b.mjs +21 -0
  2348. package/websql/fesm2022/cms-websql-taon-cms-asset-preview.component.ts.de-DE.i18n.data-KGtM_c5b.mjs.map +1 -0
  2349. package/websql/fesm2022/cms-websql-taon-cms-asset-preview.component.ts.en-US.i18n.data-BHDb5flk.mjs +21 -0
  2350. package/websql/fesm2022/cms-websql-taon-cms-asset-preview.component.ts.en-US.i18n.data-BHDb5flk.mjs.map +1 -0
  2351. package/websql/fesm2022/cms-websql-taon-cms-asset-preview.component.ts.pl-PL.i18n.data-CuPekC-p.mjs +21 -0
  2352. package/websql/fesm2022/cms-websql-taon-cms-asset-preview.component.ts.pl-PL.i18n.data-CuPekC-p.mjs.map +1 -0
  2353. package/websql/fesm2022/cms-websql-taon-cms-assets-backoffice.component.html.de-DE.i18n.data-CffxG4KA.mjs +26 -0
  2354. package/websql/fesm2022/cms-websql-taon-cms-assets-backoffice.component.html.de-DE.i18n.data-CffxG4KA.mjs.map +1 -0
  2355. package/websql/fesm2022/cms-websql-taon-cms-assets-backoffice.component.html.en-US.i18n.data-Zh8YZeJc.mjs +26 -0
  2356. package/websql/fesm2022/cms-websql-taon-cms-assets-backoffice.component.html.en-US.i18n.data-Zh8YZeJc.mjs.map +1 -0
  2357. package/websql/fesm2022/cms-websql-taon-cms-assets-backoffice.component.html.pl-PL.i18n.data-BN0WE84V.mjs +26 -0
  2358. package/websql/fesm2022/cms-websql-taon-cms-assets-backoffice.component.html.pl-PL.i18n.data-BN0WE84V.mjs.map +1 -0
  2359. package/websql/fesm2022/cms-websql-taon-cms-assets-backoffice.component.ts.de-DE.i18n.data-ByT4yNe3.mjs +26 -0
  2360. package/websql/fesm2022/cms-websql-taon-cms-assets-backoffice.component.ts.de-DE.i18n.data-ByT4yNe3.mjs.map +1 -0
  2361. package/websql/fesm2022/cms-websql-taon-cms-assets-backoffice.component.ts.en-US.i18n.data-Dx3lg2D8.mjs +26 -0
  2362. package/websql/fesm2022/cms-websql-taon-cms-assets-backoffice.component.ts.en-US.i18n.data-Dx3lg2D8.mjs.map +1 -0
  2363. package/websql/fesm2022/cms-websql-taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data-CvZI0J4F.mjs +26 -0
  2364. package/websql/fesm2022/cms-websql-taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data-CvZI0J4F.mjs.map +1 -0
  2365. package/websql/fesm2022/cms-websql-taon-cms-backoffice.component.html.de-DE.i18n.data-D8iRvIyP.mjs +16 -0
  2366. package/websql/fesm2022/cms-websql-taon-cms-backoffice.component.html.de-DE.i18n.data-D8iRvIyP.mjs.map +1 -0
  2367. package/websql/fesm2022/cms-websql-taon-cms-backoffice.component.html.en-US.i18n.data-BcXsjPgL.mjs +16 -0
  2368. package/websql/fesm2022/cms-websql-taon-cms-backoffice.component.html.en-US.i18n.data-BcXsjPgL.mjs.map +1 -0
  2369. package/websql/fesm2022/cms-websql-taon-cms-backoffice.component.html.pl-PL.i18n.data-AgLZxi-R.mjs +16 -0
  2370. package/websql/fesm2022/cms-websql-taon-cms-backoffice.component.html.pl-PL.i18n.data-AgLZxi-R.mjs.map +1 -0
  2371. package/websql/fesm2022/cms-websql-taon-cms-backoffice.component.ts.de-DE.i18n.data-BdZAX0Ty.mjs +10 -0
  2372. package/websql/fesm2022/cms-websql-taon-cms-backoffice.component.ts.de-DE.i18n.data-BdZAX0Ty.mjs.map +1 -0
  2373. package/websql/fesm2022/cms-websql-taon-cms-backoffice.component.ts.en-US.i18n.data-Dp8u4MhM.mjs +10 -0
  2374. package/websql/fesm2022/cms-websql-taon-cms-backoffice.component.ts.en-US.i18n.data-Dp8u4MhM.mjs.map +1 -0
  2375. package/websql/fesm2022/cms-websql-taon-cms-backoffice.component.ts.pl-PL.i18n.data-CibwQg__.mjs +10 -0
  2376. package/websql/fesm2022/cms-websql-taon-cms-backoffice.component.ts.pl-PL.i18n.data-CibwQg__.mjs.map +1 -0
  2377. package/websql/fesm2022/cms-websql-taon-cms-backoffice.routes.ts.de-DE.i18n.data-CzlFxoey.mjs +31 -0
  2378. package/websql/fesm2022/cms-websql-taon-cms-backoffice.routes.ts.de-DE.i18n.data-CzlFxoey.mjs.map +1 -0
  2379. package/websql/fesm2022/cms-websql-taon-cms-backoffice.routes.ts.en-US.i18n.data-Ddj2dMat.mjs +31 -0
  2380. package/websql/fesm2022/cms-websql-taon-cms-backoffice.routes.ts.en-US.i18n.data-Ddj2dMat.mjs.map +1 -0
  2381. package/websql/fesm2022/cms-websql-taon-cms-backoffice.routes.ts.pl-PL.i18n.data-B4LHmo9Z.mjs +31 -0
  2382. package/websql/fesm2022/cms-websql-taon-cms-backoffice.routes.ts.pl-PL.i18n.data-B4LHmo9Z.mjs.map +1 -0
  2383. package/websql/fesm2022/cms-websql-taon-cms-category.controller.ts.de-DE.i18n.data-BTSefyOU.mjs +16 -0
  2384. package/websql/fesm2022/cms-websql-taon-cms-category.controller.ts.de-DE.i18n.data-BTSefyOU.mjs.map +1 -0
  2385. package/websql/fesm2022/cms-websql-taon-cms-category.controller.ts.en-US.i18n.data-sk17Oud1.mjs +16 -0
  2386. package/websql/fesm2022/cms-websql-taon-cms-category.controller.ts.en-US.i18n.data-sk17Oud1.mjs.map +1 -0
  2387. package/websql/fesm2022/cms-websql-taon-cms-category.controller.ts.pl-PL.i18n.data-CU3deuam.mjs +16 -0
  2388. package/websql/fesm2022/cms-websql-taon-cms-category.controller.ts.pl-PL.i18n.data-CU3deuam.mjs.map +1 -0
  2389. package/websql/fesm2022/cms-websql-taon-cms-category.repository.ts.de-DE.i18n.data-b-MJViKD.mjs +26 -0
  2390. package/websql/fesm2022/cms-websql-taon-cms-category.repository.ts.de-DE.i18n.data-b-MJViKD.mjs.map +1 -0
  2391. package/websql/fesm2022/cms-websql-taon-cms-category.repository.ts.en-US.i18n.data-CpNHhbea.mjs +26 -0
  2392. package/websql/fesm2022/cms-websql-taon-cms-category.repository.ts.en-US.i18n.data-CpNHhbea.mjs.map +1 -0
  2393. package/websql/fesm2022/cms-websql-taon-cms-category.repository.ts.pl-PL.i18n.data-76d2FPM7.mjs +26 -0
  2394. package/websql/fesm2022/cms-websql-taon-cms-category.repository.ts.pl-PL.i18n.data-76d2FPM7.mjs.map +1 -0
  2395. package/websql/fesm2022/cms-websql-taon-cms-post-details-page.component.ts.de-DE.i18n.data-Bgztmv1T.mjs +16 -0
  2396. package/websql/fesm2022/cms-websql-taon-cms-post-details-page.component.ts.de-DE.i18n.data-Bgztmv1T.mjs.map +1 -0
  2397. package/websql/fesm2022/cms-websql-taon-cms-post-details-page.component.ts.en-US.i18n.data-BHclr-Mp.mjs +16 -0
  2398. package/websql/fesm2022/cms-websql-taon-cms-post-details-page.component.ts.en-US.i18n.data-BHclr-Mp.mjs.map +1 -0
  2399. package/websql/fesm2022/cms-websql-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-CP6e8qJA.mjs +16 -0
  2400. package/websql/fesm2022/cms-websql-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-CP6e8qJA.mjs.map +1 -0
  2401. package/websql/fesm2022/cms-websql-taon-cms-post.component.html.de-DE.i18n.data-DW1n5Ozp.mjs +325 -0
  2402. package/websql/fesm2022/cms-websql-taon-cms-post.component.html.de-DE.i18n.data-DW1n5Ozp.mjs.map +1 -0
  2403. package/websql/fesm2022/cms-websql-taon-cms-post.component.html.en-US.i18n.data-Dzy3apgE.mjs +325 -0
  2404. package/websql/fesm2022/cms-websql-taon-cms-post.component.html.en-US.i18n.data-Dzy3apgE.mjs.map +1 -0
  2405. package/websql/fesm2022/cms-websql-taon-cms-post.component.html.pl-PL.i18n.data-DrmyJ9lw.mjs +325 -0
  2406. package/websql/fesm2022/cms-websql-taon-cms-post.component.html.pl-PL.i18n.data-DrmyJ9lw.mjs.map +1 -0
  2407. package/websql/fesm2022/cms-websql-taon-cms-post.component.ts.de-DE.i18n.data-C1N9Zgdi.mjs +175 -0
  2408. package/websql/fesm2022/cms-websql-taon-cms-post.component.ts.de-DE.i18n.data-C1N9Zgdi.mjs.map +1 -0
  2409. package/websql/fesm2022/cms-websql-taon-cms-post.component.ts.en-US.i18n.data-Demtpm74.mjs +172 -0
  2410. package/websql/fesm2022/cms-websql-taon-cms-post.component.ts.en-US.i18n.data-Demtpm74.mjs.map +1 -0
  2411. package/websql/fesm2022/cms-websql-taon-cms-post.component.ts.pl-PL.i18n.data-oFM6Hko5.mjs +175 -0
  2412. package/websql/fesm2022/cms-websql-taon-cms-post.component.ts.pl-PL.i18n.data-oFM6Hko5.mjs.map +1 -0
  2413. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-D2WxrzSb.mjs +21 -0
  2414. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-D2WxrzSb.mjs.map +1 -0
  2415. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.html.en-US.i18n.data-MKa7Bg7x.mjs +21 -0
  2416. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.html.en-US.i18n.data-MKa7Bg7x.mjs.map +1 -0
  2417. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-CgoD8Vbu.mjs +21 -0
  2418. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-CgoD8Vbu.mjs.map +1 -0
  2419. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-l5tJy98a.mjs +70 -0
  2420. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-l5tJy98a.mjs.map +1 -0
  2421. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-aSYNKmBN.mjs +70 -0
  2422. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-aSYNKmBN.mjs.map +1 -0
  2423. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-BWSMhDtu.mjs +70 -0
  2424. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-BWSMhDtu.mjs.map +1 -0
  2425. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-BdZ28aPt.mjs +21 -0
  2426. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-BdZ28aPt.mjs.map +1 -0
  2427. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-B8Dx0w7R.mjs +21 -0
  2428. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-B8Dx0w7R.mjs.map +1 -0
  2429. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-Cb6fpkBc.mjs +21 -0
  2430. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-Cb6fpkBc.mjs.map +1 -0
  2431. package/websql/fesm2022/cms-websql-taon-cms-revision-chooser.component.html.de-DE.i18n.data-D3SqNlkz.mjs +71 -0
  2432. package/websql/fesm2022/cms-websql-taon-cms-revision-chooser.component.html.de-DE.i18n.data-D3SqNlkz.mjs.map +1 -0
  2433. package/websql/fesm2022/cms-websql-taon-cms-revision-chooser.component.html.en-US.i18n.data-DJ0utYrm.mjs +71 -0
  2434. package/websql/fesm2022/cms-websql-taon-cms-revision-chooser.component.html.en-US.i18n.data-DJ0utYrm.mjs.map +1 -0
  2435. package/websql/fesm2022/cms-websql-taon-cms-revision-chooser.component.html.pl-PL.i18n.data-bW3Mgb29.mjs +71 -0
  2436. package/websql/fesm2022/cms-websql-taon-cms-revision-chooser.component.html.pl-PL.i18n.data-bW3Mgb29.mjs.map +1 -0
  2437. package/websql/fesm2022/cms-websql-taon-cms-revision-chooser.component.ts.de-DE.i18n.data-Dv-fdvwp.mjs +26 -0
  2438. package/websql/fesm2022/cms-websql-taon-cms-revision-chooser.component.ts.de-DE.i18n.data-Dv-fdvwp.mjs.map +1 -0
  2439. package/websql/fesm2022/cms-websql-taon-cms-revision-chooser.component.ts.en-US.i18n.data-CM00oZ5c.mjs +26 -0
  2440. package/websql/fesm2022/cms-websql-taon-cms-revision-chooser.component.ts.en-US.i18n.data-CM00oZ5c.mjs.map +1 -0
  2441. package/websql/fesm2022/cms-websql-taon-cms-revision-chooser.component.ts.pl-PL.i18n.data-CTV6RgOp.mjs +26 -0
  2442. package/websql/fesm2022/cms-websql-taon-cms-revision-chooser.component.ts.pl-PL.i18n.data-CTV6RgOp.mjs.map +1 -0
  2443. package/websql/fesm2022/cms-websql-taon-cms-tag.controller.ts.de-DE.i18n.data-CoARqE22.mjs +16 -0
  2444. package/websql/fesm2022/cms-websql-taon-cms-tag.controller.ts.de-DE.i18n.data-CoARqE22.mjs.map +1 -0
  2445. package/websql/fesm2022/cms-websql-taon-cms-tag.controller.ts.en-US.i18n.data-CeImcANT.mjs +16 -0
  2446. package/websql/fesm2022/cms-websql-taon-cms-tag.controller.ts.en-US.i18n.data-CeImcANT.mjs.map +1 -0
  2447. package/websql/fesm2022/cms-websql-taon-cms-tag.controller.ts.pl-PL.i18n.data-Bq0l9GAF.mjs +16 -0
  2448. package/websql/fesm2022/cms-websql-taon-cms-tag.controller.ts.pl-PL.i18n.data-Bq0l9GAF.mjs.map +1 -0
  2449. package/websql/fesm2022/cms-websql-taon-cms-tag.repository.ts.de-DE.i18n.data-XJ-DJ487.mjs +21 -0
  2450. package/websql/fesm2022/cms-websql-taon-cms-tag.repository.ts.de-DE.i18n.data-XJ-DJ487.mjs.map +1 -0
  2451. package/websql/fesm2022/cms-websql-taon-cms-tag.repository.ts.en-US.i18n.data-CteIjY45.mjs +21 -0
  2452. package/websql/fesm2022/cms-websql-taon-cms-tag.repository.ts.en-US.i18n.data-CteIjY45.mjs.map +1 -0
  2453. package/websql/fesm2022/cms-websql-taon-cms-tag.repository.ts.pl-PL.i18n.data-BQS3WOJE.mjs +21 -0
  2454. package/websql/fesm2022/cms-websql-taon-cms-tag.repository.ts.pl-PL.i18n.data-BQS3WOJE.mjs.map +1 -0
  2455. package/websql/fesm2022/cms-websql-taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data-DZu5K15E.mjs +91 -0
  2456. package/websql/fesm2022/cms-websql-taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data-DZu5K15E.mjs.map +1 -0
  2457. package/websql/fesm2022/cms-websql-taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data-CRkCojjy.mjs +91 -0
  2458. package/websql/fesm2022/cms-websql-taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data-CRkCojjy.mjs.map +1 -0
  2459. package/websql/fesm2022/cms-websql-taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data-BXqAixFd.mjs +91 -0
  2460. package/websql/fesm2022/cms-websql-taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data-BXqAixFd.mjs.map +1 -0
  2461. package/websql/fesm2022/cms-websql-taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data-DKshuSiD.mjs +76 -0
  2462. package/websql/fesm2022/cms-websql-taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data-DKshuSiD.mjs.map +1 -0
  2463. package/websql/fesm2022/cms-websql-taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data-DKOIhHgw.mjs +76 -0
  2464. package/websql/fesm2022/cms-websql-taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data-DKOIhHgw.mjs.map +1 -0
  2465. package/websql/fesm2022/cms-websql-taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data-N4dA3kVZ.mjs +76 -0
  2466. package/websql/fesm2022/cms-websql-taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data-N4dA3kVZ.mjs.map +1 -0
  2467. package/websql/fesm2022/cms-websql-taon-cms-taxonomy.validation.ts.de-DE.i18n.data-mXyxAtms.mjs +26 -0
  2468. package/websql/fesm2022/cms-websql-taon-cms-taxonomy.validation.ts.de-DE.i18n.data-mXyxAtms.mjs.map +1 -0
  2469. package/websql/fesm2022/cms-websql-taon-cms-taxonomy.validation.ts.en-US.i18n.data-6BvlMJFs.mjs +26 -0
  2470. package/websql/fesm2022/cms-websql-taon-cms-taxonomy.validation.ts.en-US.i18n.data-6BvlMJFs.mjs.map +1 -0
  2471. package/websql/fesm2022/cms-websql-taon-cms-taxonomy.validation.ts.pl-PL.i18n.data-D7qY_5ba.mjs +26 -0
  2472. package/websql/fesm2022/cms-websql-taon-cms-taxonomy.validation.ts.pl-PL.i18n.data-D7qY_5ba.mjs.map +1 -0
  2473. package/websql/fesm2022/cms-websql-taon-related-post-chooser.component.html.de-DE.i18n.data-CdkLKona.mjs +46 -0
  2474. package/websql/fesm2022/cms-websql-taon-related-post-chooser.component.html.de-DE.i18n.data-CdkLKona.mjs.map +1 -0
  2475. package/websql/fesm2022/cms-websql-taon-related-post-chooser.component.html.en-US.i18n.data-Ccs4aAAa.mjs +46 -0
  2476. package/websql/fesm2022/cms-websql-taon-related-post-chooser.component.html.en-US.i18n.data-Ccs4aAAa.mjs.map +1 -0
  2477. package/websql/fesm2022/cms-websql-taon-related-post-chooser.component.html.pl-PL.i18n.data-BJUDZW0d.mjs +46 -0
  2478. package/websql/fesm2022/cms-websql-taon-related-post-chooser.component.html.pl-PL.i18n.data-BJUDZW0d.mjs.map +1 -0
  2479. package/websql/fesm2022/cms-websql-taon-related-post-chooser.component.ts.de-DE.i18n.data-y_x66BLv.mjs +21 -0
  2480. package/websql/fesm2022/cms-websql-taon-related-post-chooser.component.ts.de-DE.i18n.data-y_x66BLv.mjs.map +1 -0
  2481. package/websql/fesm2022/cms-websql-taon-related-post-chooser.component.ts.en-US.i18n.data-D5CUfAg0.mjs +21 -0
  2482. package/websql/fesm2022/cms-websql-taon-related-post-chooser.component.ts.en-US.i18n.data-D5CUfAg0.mjs.map +1 -0
  2483. package/websql/fesm2022/cms-websql-taon-related-post-chooser.component.ts.pl-PL.i18n.data-CrFrEqfR.mjs +21 -0
  2484. package/websql/fesm2022/cms-websql-taon-related-post-chooser.component.ts.pl-PL.i18n.data-CrFrEqfR.mjs.map +1 -0
  2485. package/websql/fesm2022/cms-websql.mjs +2573 -466
  2486. package/websql/fesm2022/cms-websql.mjs.map +1 -1
  2487. package/websql/package.json +1 -1
  2488. package/websql/types/cms-websql.d.ts +395 -145
  2489. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-asset-preview.component.html.de-DE.i18n.data-D-t_ndXn.mjs +31 -0
  2490. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-asset-preview.component.html.de-DE.i18n.data-D-t_ndXn.mjs.map +1 -0
  2491. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-asset-preview.component.html.en-US.i18n.data-CHC8Rpav.mjs +31 -0
  2492. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-asset-preview.component.html.en-US.i18n.data-CHC8Rpav.mjs.map +1 -0
  2493. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-asset-preview.component.html.pl-PL.i18n.data-Dsra3EeZ.mjs +31 -0
  2494. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-asset-preview.component.html.pl-PL.i18n.data-Dsra3EeZ.mjs.map +1 -0
  2495. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-asset-preview.component.ts.de-DE.i18n.data-DT7qFf7D.mjs +21 -0
  2496. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-asset-preview.component.ts.de-DE.i18n.data-DT7qFf7D.mjs.map +1 -0
  2497. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-asset-preview.component.ts.en-US.i18n.data-N_2QUNLq.mjs +21 -0
  2498. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-asset-preview.component.ts.en-US.i18n.data-N_2QUNLq.mjs.map +1 -0
  2499. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-asset-preview.component.ts.pl-PL.i18n.data-BqRkgB92.mjs +21 -0
  2500. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-asset-preview.component.ts.pl-PL.i18n.data-BqRkgB92.mjs.map +1 -0
  2501. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-assets-backoffice.component.html.de-DE.i18n.data-ByVH6z2Z.mjs +26 -0
  2502. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-assets-backoffice.component.html.de-DE.i18n.data-ByVH6z2Z.mjs.map +1 -0
  2503. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-assets-backoffice.component.html.en-US.i18n.data-DSG7SK4m.mjs +26 -0
  2504. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-assets-backoffice.component.html.en-US.i18n.data-DSG7SK4m.mjs.map +1 -0
  2505. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-assets-backoffice.component.html.pl-PL.i18n.data-Bs8amcIs.mjs +26 -0
  2506. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-assets-backoffice.component.html.pl-PL.i18n.data-Bs8amcIs.mjs.map +1 -0
  2507. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-assets-backoffice.component.ts.de-DE.i18n.data-DGADylre.mjs +26 -0
  2508. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-assets-backoffice.component.ts.de-DE.i18n.data-DGADylre.mjs.map +1 -0
  2509. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-assets-backoffice.component.ts.en-US.i18n.data-DjKWwkMP.mjs +26 -0
  2510. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-assets-backoffice.component.ts.en-US.i18n.data-DjKWwkMP.mjs.map +1 -0
  2511. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data-Cvak6-ec.mjs +26 -0
  2512. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data-Cvak6-ec.mjs.map +1 -0
  2513. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-backoffice.component.html.de-DE.i18n.data-C9czRdlm.mjs +16 -0
  2514. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-backoffice.component.html.de-DE.i18n.data-C9czRdlm.mjs.map +1 -0
  2515. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-backoffice.component.html.en-US.i18n.data-C64eFnqr.mjs +16 -0
  2516. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-backoffice.component.html.en-US.i18n.data-C64eFnqr.mjs.map +1 -0
  2517. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-backoffice.component.html.pl-PL.i18n.data-Cm-otof5.mjs +16 -0
  2518. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-backoffice.component.html.pl-PL.i18n.data-Cm-otof5.mjs.map +1 -0
  2519. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-backoffice.component.ts.de-DE.i18n.data-CSA7g7KN.mjs +10 -0
  2520. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-backoffice.component.ts.de-DE.i18n.data-CSA7g7KN.mjs.map +1 -0
  2521. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-backoffice.component.ts.en-US.i18n.data-BqWMae53.mjs +10 -0
  2522. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-backoffice.component.ts.en-US.i18n.data-BqWMae53.mjs.map +1 -0
  2523. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-backoffice.component.ts.pl-PL.i18n.data-DpAcVBSp.mjs +10 -0
  2524. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-backoffice.component.ts.pl-PL.i18n.data-DpAcVBSp.mjs.map +1 -0
  2525. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-backoffice.routes.ts.de-DE.i18n.data-El7DeGTg.mjs +31 -0
  2526. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-backoffice.routes.ts.de-DE.i18n.data-El7DeGTg.mjs.map +1 -0
  2527. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-backoffice.routes.ts.en-US.i18n.data-CzYi31y6.mjs +31 -0
  2528. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-backoffice.routes.ts.en-US.i18n.data-CzYi31y6.mjs.map +1 -0
  2529. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-backoffice.routes.ts.pl-PL.i18n.data--hNK9Xkt.mjs +31 -0
  2530. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-backoffice.routes.ts.pl-PL.i18n.data--hNK9Xkt.mjs.map +1 -0
  2531. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-category.controller.ts.de-DE.i18n.data-CExlN4WS.mjs +16 -0
  2532. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-category.controller.ts.de-DE.i18n.data-CExlN4WS.mjs.map +1 -0
  2533. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-category.controller.ts.en-US.i18n.data-B_PYr-6x.mjs +16 -0
  2534. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-category.controller.ts.en-US.i18n.data-B_PYr-6x.mjs.map +1 -0
  2535. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-category.controller.ts.pl-PL.i18n.data-mQb8xdX1.mjs +16 -0
  2536. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-category.controller.ts.pl-PL.i18n.data-mQb8xdX1.mjs.map +1 -0
  2537. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-category.repository.ts.de-DE.i18n.data-C22PmYTv.mjs +26 -0
  2538. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-category.repository.ts.de-DE.i18n.data-C22PmYTv.mjs.map +1 -0
  2539. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-category.repository.ts.en-US.i18n.data-azzI-zfY.mjs +26 -0
  2540. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-category.repository.ts.en-US.i18n.data-azzI-zfY.mjs.map +1 -0
  2541. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-category.repository.ts.pl-PL.i18n.data-DStaGZRY.mjs +26 -0
  2542. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-category.repository.ts.pl-PL.i18n.data-DStaGZRY.mjs.map +1 -0
  2543. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post-details-page.component.ts.de-DE.i18n.data-BLkIVWeD.mjs +16 -0
  2544. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post-details-page.component.ts.de-DE.i18n.data-BLkIVWeD.mjs.map +1 -0
  2545. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post-details-page.component.ts.en-US.i18n.data-BlZyHTVD.mjs +16 -0
  2546. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post-details-page.component.ts.en-US.i18n.data-BlZyHTVD.mjs.map +1 -0
  2547. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-CbIqWbm3.mjs +16 -0
  2548. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-CbIqWbm3.mjs.map +1 -0
  2549. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.html.de-DE.i18n.data-BxcX3l2T.mjs +325 -0
  2550. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.html.de-DE.i18n.data-BxcX3l2T.mjs.map +1 -0
  2551. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.html.en-US.i18n.data-g9lHRbOQ.mjs +325 -0
  2552. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.html.en-US.i18n.data-g9lHRbOQ.mjs.map +1 -0
  2553. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.html.pl-PL.i18n.data-Cg4a0vHn.mjs +325 -0
  2554. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.html.pl-PL.i18n.data-Cg4a0vHn.mjs.map +1 -0
  2555. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.ts.de-DE.i18n.data-BwRnTGxe.mjs +175 -0
  2556. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.ts.de-DE.i18n.data-BwRnTGxe.mjs.map +1 -0
  2557. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.ts.en-US.i18n.data-R5nOhvtu.mjs +172 -0
  2558. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.ts.en-US.i18n.data-R5nOhvtu.mjs.map +1 -0
  2559. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.ts.pl-PL.i18n.data-VmobXbTc.mjs +175 -0
  2560. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.ts.pl-PL.i18n.data-VmobXbTc.mjs.map +1 -0
  2561. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-CgN5IPiF.mjs +21 -0
  2562. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-CgN5IPiF.mjs.map +1 -0
  2563. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.html.en-US.i18n.data-BHayrvIT.mjs +21 -0
  2564. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.html.en-US.i18n.data-BHayrvIT.mjs.map +1 -0
  2565. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-D20weGEY.mjs +21 -0
  2566. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-D20weGEY.mjs.map +1 -0
  2567. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-B4suZvEh.mjs +70 -0
  2568. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-B4suZvEh.mjs.map +1 -0
  2569. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-BF3C9IWs.mjs +70 -0
  2570. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-BF3C9IWs.mjs.map +1 -0
  2571. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-BWwu-KCW.mjs +70 -0
  2572. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-BWwu-KCW.mjs.map +1 -0
  2573. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-5LisKXGn.mjs +21 -0
  2574. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-5LisKXGn.mjs.map +1 -0
  2575. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-ChhV8nE4.mjs +21 -0
  2576. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-ChhV8nE4.mjs.map +1 -0
  2577. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-CEEZs_nF.mjs +21 -0
  2578. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-CEEZs_nF.mjs.map +1 -0
  2579. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-revision-chooser.component.html.de-DE.i18n.data-s-UFLYqy.mjs +71 -0
  2580. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-revision-chooser.component.html.de-DE.i18n.data-s-UFLYqy.mjs.map +1 -0
  2581. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-revision-chooser.component.html.en-US.i18n.data-yxnI4hZm.mjs +71 -0
  2582. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-revision-chooser.component.html.en-US.i18n.data-yxnI4hZm.mjs.map +1 -0
  2583. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-revision-chooser.component.html.pl-PL.i18n.data-LaD1B9nr.mjs +71 -0
  2584. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-revision-chooser.component.html.pl-PL.i18n.data-LaD1B9nr.mjs.map +1 -0
  2585. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-revision-chooser.component.ts.de-DE.i18n.data-DIl-O_Xe.mjs +26 -0
  2586. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-revision-chooser.component.ts.de-DE.i18n.data-DIl-O_Xe.mjs.map +1 -0
  2587. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-revision-chooser.component.ts.en-US.i18n.data-QJOWjM3u.mjs +26 -0
  2588. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-revision-chooser.component.ts.en-US.i18n.data-QJOWjM3u.mjs.map +1 -0
  2589. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-revision-chooser.component.ts.pl-PL.i18n.data-D7CkcVJ3.mjs +26 -0
  2590. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-revision-chooser.component.ts.pl-PL.i18n.data-D7CkcVJ3.mjs.map +1 -0
  2591. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-tag.controller.ts.de-DE.i18n.data-DeQB5uhd.mjs +16 -0
  2592. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-tag.controller.ts.de-DE.i18n.data-DeQB5uhd.mjs.map +1 -0
  2593. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-tag.controller.ts.en-US.i18n.data-Dvq54oiB.mjs +16 -0
  2594. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-tag.controller.ts.en-US.i18n.data-Dvq54oiB.mjs.map +1 -0
  2595. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-tag.controller.ts.pl-PL.i18n.data-CXyb5AME.mjs +16 -0
  2596. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-tag.controller.ts.pl-PL.i18n.data-CXyb5AME.mjs.map +1 -0
  2597. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-tag.repository.ts.de-DE.i18n.data-xcmOlBF8.mjs +21 -0
  2598. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-tag.repository.ts.de-DE.i18n.data-xcmOlBF8.mjs.map +1 -0
  2599. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-tag.repository.ts.en-US.i18n.data-_HdJ-Rax.mjs +21 -0
  2600. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-tag.repository.ts.en-US.i18n.data-_HdJ-Rax.mjs.map +1 -0
  2601. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-tag.repository.ts.pl-PL.i18n.data-xYvTZmo4.mjs +21 -0
  2602. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-tag.repository.ts.pl-PL.i18n.data-xYvTZmo4.mjs.map +1 -0
  2603. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data-DflSG3A7.mjs +91 -0
  2604. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data-DflSG3A7.mjs.map +1 -0
  2605. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data-CSzz-qCe.mjs +91 -0
  2606. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data-CSzz-qCe.mjs.map +1 -0
  2607. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data-Dx0k2Yyc.mjs +91 -0
  2608. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data-Dx0k2Yyc.mjs.map +1 -0
  2609. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data-DKDYzSnl.mjs +76 -0
  2610. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data-DKDYzSnl.mjs.map +1 -0
  2611. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data-MEvkiD1i.mjs +76 -0
  2612. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data-MEvkiD1i.mjs.map +1 -0
  2613. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data-CQhJ8ksS.mjs +76 -0
  2614. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data-CQhJ8ksS.mjs.map +1 -0
  2615. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy.validation.ts.de-DE.i18n.data-C5DRXeX_.mjs +26 -0
  2616. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy.validation.ts.de-DE.i18n.data-C5DRXeX_.mjs.map +1 -0
  2617. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy.validation.ts.en-US.i18n.data-DkyJwBie.mjs +26 -0
  2618. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy.validation.ts.en-US.i18n.data-DkyJwBie.mjs.map +1 -0
  2619. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy.validation.ts.pl-PL.i18n.data-CFSqXG-_.mjs +26 -0
  2620. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy.validation.ts.pl-PL.i18n.data-CFSqXG-_.mjs.map +1 -0
  2621. package/websql-prod/fesm2022/cms-websql-prod-taon-related-post-chooser.component.html.de-DE.i18n.data-BkJG3Jev.mjs +46 -0
  2622. package/websql-prod/fesm2022/cms-websql-prod-taon-related-post-chooser.component.html.de-DE.i18n.data-BkJG3Jev.mjs.map +1 -0
  2623. package/websql-prod/fesm2022/cms-websql-prod-taon-related-post-chooser.component.html.en-US.i18n.data-D5F4Gof4.mjs +46 -0
  2624. package/websql-prod/fesm2022/cms-websql-prod-taon-related-post-chooser.component.html.en-US.i18n.data-D5F4Gof4.mjs.map +1 -0
  2625. package/websql-prod/fesm2022/cms-websql-prod-taon-related-post-chooser.component.html.pl-PL.i18n.data-CupgNbP7.mjs +46 -0
  2626. package/websql-prod/fesm2022/cms-websql-prod-taon-related-post-chooser.component.html.pl-PL.i18n.data-CupgNbP7.mjs.map +1 -0
  2627. package/websql-prod/fesm2022/cms-websql-prod-taon-related-post-chooser.component.ts.de-DE.i18n.data-O04abirC.mjs +21 -0
  2628. package/websql-prod/fesm2022/cms-websql-prod-taon-related-post-chooser.component.ts.de-DE.i18n.data-O04abirC.mjs.map +1 -0
  2629. package/websql-prod/fesm2022/cms-websql-prod-taon-related-post-chooser.component.ts.en-US.i18n.data-Bq84gw3j.mjs +21 -0
  2630. package/websql-prod/fesm2022/cms-websql-prod-taon-related-post-chooser.component.ts.en-US.i18n.data-Bq84gw3j.mjs.map +1 -0
  2631. package/websql-prod/fesm2022/cms-websql-prod-taon-related-post-chooser.component.ts.pl-PL.i18n.data-BIhfEto8.mjs +21 -0
  2632. package/websql-prod/fesm2022/cms-websql-prod-taon-related-post-chooser.component.ts.pl-PL.i18n.data-BIhfEto8.mjs.map +1 -0
  2633. package/websql-prod/fesm2022/cms-websql-prod.mjs +2571 -464
  2634. package/websql-prod/fesm2022/cms-websql-prod.mjs.map +1 -1
  2635. package/websql-prod/package.json +1 -1
  2636. package/websql-prod/types/cms-websql-prod.d.ts +395 -145
  2637. package/full-dts/taon-posts/taon-cms-post-edit-dialog/index.d.ts +0 -2
  2638. package/full-dts/taon-posts/taon-cms-post-edit-dialog/taon-cms-post-edit-dialog.component.d.ts +0 -16
  2639. package/html/lib/taon-posts/taon-cms-post-edit-dialog/taon-cms-post-edit-dialog.component.html +0 -12
  2640. package/lib/taon-posts/taon-cms-post-edit-dialog/index.d.ts +0 -1
  2641. package/lib/taon-posts/taon-cms-post-edit-dialog/index.js +0 -5
  2642. package/lib/taon-posts/taon-cms-post-edit-dialog/index.js.map +0 -1
  2643. package/lib-esm/lib/taon-posts/taon-cms-post-edit-dialog/index.d.ts +0 -1
  2644. package/lib-esm/lib/taon-posts/taon-cms-post-edit-dialog/index.js +0 -2
  2645. package/lib-esm/lib/taon-posts/taon-cms-post-edit-dialog/index.js.map +0 -1
  2646. package/lib-prod/taon-posts/taon-cms-post-edit-dialog/index.d.ts +0 -1
  2647. package/lib-prod/taon-posts/taon-cms-post-edit-dialog/index.js +0 -2
  2648. package/lib-prod/taon-posts/taon-cms-post-edit-dialog/index.js.map +0 -1
  2649. package/scss/lib/taon-posts/taon-cms-post-edit-dialog/taon-cms-post-edit-dialog.component.scss +0 -19
  2650. package/ts-source/browser-code/taon-posts/taon-cms-post-edit-dialog/taon-cms-post-edit-dialog.component.html +0 -25
  2651. package/ts-source/browser-code/taon-posts/taon-cms-post-edit-dialog/taon-cms-post-edit-dialog.component.scss +0 -30
  2652. package/ts-source/browser-code/taon-posts/taon-cms-post-edit-dialog/taon-cms-post-edit-dialog.component.ts +0 -43
  2653. package/ts-source/browser-code-prod/taon-posts/taon-cms-post-edit-dialog/taon-cms-post-edit-dialog.component.html +0 -25
  2654. package/ts-source/browser-code-prod/taon-posts/taon-cms-post-edit-dialog/taon-cms-post-edit-dialog.component.scss +0 -30
  2655. package/ts-source/browser-code-prod/taon-posts/taon-cms-post-edit-dialog/taon-cms-post-edit-dialog.component.ts +0 -43
  2656. package/ts-source/websql-code/taon-posts/taon-cms-post-edit-dialog/taon-cms-post-edit-dialog.component.html +0 -25
  2657. package/ts-source/websql-code/taon-posts/taon-cms-post-edit-dialog/taon-cms-post-edit-dialog.component.scss +0 -30
  2658. package/ts-source/websql-code/taon-posts/taon-cms-post-edit-dialog/taon-cms-post-edit-dialog.component.ts +0 -43
  2659. package/ts-source/websql-code-prod/taon-posts/taon-cms-post-edit-dialog/taon-cms-post-edit-dialog.component.html +0 -25
  2660. package/ts-source/websql-code-prod/taon-posts/taon-cms-post-edit-dialog/taon-cms-post-edit-dialog.component.scss +0 -30
  2661. package/ts-source/websql-code-prod/taon-posts/taon-cms-post-edit-dialog/taon-cms-post-edit-dialog.component.ts +0 -43
  2662. /package/ts-source/browser-code-prod/{taon-posts/taon-cms-post-edit-dialog/index.split-namespaces.json → migrations/1792579000000_postPermissionInheritance.split-namespaces.json} +0 -0
  2663. /package/ts-source/browser-code-prod/{taon-posts/taon-cms-post-edit-dialog/taon-cms-post-edit-dialog.component.split-namespaces.json → migrations/1793043000000_postThumbnails.split-namespaces.json} +0 -0
  2664. /package/ts-source/{websql-code-prod/taon-posts/taon-cms-post-edit-dialog/index.split-namespaces.json → browser-code-prod/taon-cms-assets-backoffice/i18n/taon-cms-assets-backoffice.translation.split-namespaces.json} +0 -0
  2665. /package/ts-source/{websql-code-prod/taon-posts/taon-cms-post-edit-dialog/taon-cms-post-edit-dialog.component.split-namespaces.json → browser-code-prod/taon-cms-assets-backoffice/taon-cms-asset-preview.component.split-namespaces.json} +0 -0
@@ -1,33 +1,42 @@
1
1
  import { __decorate, __metadata, __param } from 'tslib';
2
- import { TaonBaseEntity, PrimaryGeneratedColumn, Column, OneToOne, JoinColumn, TaonEntity, ManyToMany, JoinTable, TaonBaseMigration, ClassHelpers__NS__getName, TaonMigration, TaonBaseAbstractEntity, Taon__NS__error, TaonBaseRepository, TaonRepository, TaonBaseCrudController, TaonController, TaonBaseProvider, TaonProvider, TaonBaseMiddleware, TaonMiddleware, TaonBaseSubscriberForEntity, TaonSubscriber, createContext, TaonBaseContext, GET, Query, POST, Body, PUT, DELETE, TaonBaseStorageController, TaonBaseAngularService } from 'taon/websql-prod';
3
- import { TaonPermissionEntity, TaonSessionCoreGroups as TaonSessionCoreGroups$1, TaonSessionCoreRoles as TaonSessionCoreRoles$1, TaonSessionCorePermissions as TaonSessionCorePermissions$1, TaonAuthContextEntity as TaonAuthContextEntity$1, TaonAuthContextHasAccess as TaonAuthContextHasAccess$1, TaonAuthContextRepository as TaonAuthContextRepository$1, MIGRATIONS_CLASSES_FOR_SessionContext, TaonSessionRepository, TaonSessionAbstractContext, TaonPermissionApiService } from '@taon-dev/session/websql-prod';
4
- import { Table, Raw, In } from 'taon-typeorm/websql-prod';
5
- import { UtilsJson__NS__getValue } from 'tnp-core/websql-prod';
2
+ import { TaonBaseEntity, PrimaryGeneratedColumn, Column, OneToOne, JoinColumn, TaonEntity, ManyToMany, JoinTable, TaonBaseMigration, ClassHelpers__NS__getName, TaonMigration, TaonBaseAbstractEntity, TaonRepository, Taon__NS__error, TaonBaseRepository, TaonBaseCrudController, POST, Query, Body, DELETE, TaonController, TaonBaseProvider, TaonProvider, TaonBaseMiddleware, TaonMiddleware, TaonBaseSubscriberForEntity, TaonSubscriber, createContext, TaonBaseContext, GET, TaonBaseStorageController, PUT, TaonBaseAngularService } from 'taon/websql-prod';
3
+ import { TaonPermissionEntity, TaonSessionCoreGroups as TaonSessionCoreGroups$1, TaonSessionCoreRoles as TaonSessionCoreRoles$1, TaonSessionCorePermissions as TaonSessionCorePermissions$1, TaonAuthContextEntity as TaonAuthContextEntity$1, TaonAuthContextHasAccess as TaonAuthContextHasAccess$1, TaonAuthContextRepository as TaonAuthContextRepository$1, MIGRATIONS_CLASSES_FOR_SessionContext, TaonSessionRepository, TaonSessionProvider, TaonSessionAbstractContext, TaonPermissionApiService } from '@taon-dev/session/websql-prod';
4
+ import { Table, TableColumn, Raw, In } from 'taon-typeorm/websql-prod';
5
+ import { UtilsJson__NS__getValue, ___NS__first } from 'tnp-core/websql-prod';
6
6
  import { BaseCommandLineFeature } from 'tnp-helpers/websql-prod';
7
+ import { Translation } from '@taon-dev/i18n/websql-prod';
7
8
  import * as i0 from '@angular/core';
8
- import { Injectable, ChangeDetectionStrategy, Component, inject, ElementRef, EventEmitter, SecurityContext, HostListener, Input, Output, Directive, signal, DestroyRef, computed, input, model, output, effect, untracked, viewChild, ViewChild } from '@angular/core';
9
- import { MtxGrid } from '@ng-matero/extensions/grid';
10
- import { AsyncPipe, DatePipe } from '@angular/common';
11
- import { RouterOutlet, ActivatedRoute, RouterLink, Router } from '@angular/router';
12
- import { adminLazyRoute as adminLazyRoute$1, TaonConfirmDialogComponent, TaonDatatableComponent } from '@taon-dev/ui/websql-prod';
13
- import { map, catchError } from 'rxjs/operators';
14
- import { of, finalize, map as map$1, Subject, takeUntil } from 'rxjs';
15
- import { DomSanitizer } from '@angular/platform-browser';
16
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
9
+ import { Injectable, inject, DestroyRef, signal, Input, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, SecurityContext, HostListener, Output, Directive, computed, input, model, output, effect, untracked, ViewChild } from '@angular/core';
17
10
  import * as i1 from '@angular/material/button';
18
11
  import { MatButtonModule } from '@angular/material/button';
19
- import * as i2$1 from '@angular/material/checkbox';
20
- import { MatCheckboxModule } from '@angular/material/checkbox';
12
+ import { Observable, of, map as map$1, finalize, forkJoin, firstValueFrom } from 'rxjs';
13
+ import { map, catchError } from 'rxjs/operators';
14
+ import { Resource__NS__methodsInterceptors } from 'ng2-rest/websql-prod';
15
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
16
+ import { TaonDatatableComponent, adminLazyRoute as adminLazyRoute$1, TaonConfirmDialogComponent } from '@taon-dev/ui/websql-prod';
17
+ import { AsyncPipe, DatePipe } from '@angular/common';
18
+ import { RouterOutlet, ActivatedRoute, Router, RouterLink } from '@angular/router';
19
+ import * as i1$1 from '@angular/forms';
20
+ import { FormsModule } from '@angular/forms';
21
21
  import * as i2 from '@angular/material/dialog';
22
- import { MAT_DIALOG_DATA, MatDialogRef, MatDialogModule, MatDialog } from '@angular/material/dialog';
23
- import * as i3$1 from '@angular/material/form-field';
22
+ import { MatDialog, MAT_DIALOG_DATA, MatDialogRef, MatDialogModule } from '@angular/material/dialog';
23
+ import * as i3 from '@angular/material/form-field';
24
24
  import { MatFormFieldModule } from '@angular/material/form-field';
25
- import * as i4 from '@angular/material/icon';
25
+ import * as i4 from '@angular/material/input';
26
+ import { MatInputModule } from '@angular/material/input';
27
+ import * as i5 from '@angular/material/select';
28
+ import { MatSelectModule } from '@angular/material/select';
29
+ import { DomSanitizer } from '@angular/platform-browser';
30
+ import * as i2$1 from '@angular/material/checkbox';
31
+ import { MatCheckboxModule } from '@angular/material/checkbox';
32
+ import * as i4$1 from '@angular/material/icon';
26
33
  import { MatIconModule } from '@angular/material/icon';
27
- import * as i3 from '@angular/material/radio';
34
+ import * as i6 from '@angular/material/chips';
35
+ import { MatChipsModule } from '@angular/material/chips';
36
+ import * as i7 from '@angular/material/progress-bar';
37
+ import { MatProgressBarModule } from '@angular/material/progress-bar';
38
+ import * as i3$1 from '@angular/material/radio';
28
39
  import { MatRadioModule } from '@angular/material/radio';
29
- import * as i6 from '@angular/material/select';
30
- import { MatSelectModule } from '@angular/material/select';
31
40
 
32
41
  let TaonCmsApplicationHookEntity = class TaonCmsApplicationHookEntity extends TaonBaseEntity {
33
42
  };
@@ -75,11 +84,15 @@ let TaonCmsContentEntity = class TaonCmsContentEntity extends TaonBaseEntity {
75
84
  //#region @websql
76
85
  this.type = TaonCmsContentType.Normal;
77
86
  //#region @websql
87
+ this.applyPermissionsToRelatedPosts = false;
88
+ //#region @websql
78
89
  this.videoKey = null;
79
90
  //#region @websql
80
91
  this.audioKey = null;
81
92
  //#region @websql
82
93
  this.attachmentKey = null;
94
+ //#region @websql
95
+ this.thumbnailKey = null;
83
96
  }
84
97
  };
85
98
  __decorate([
@@ -140,6 +153,12 @@ __decorate([
140
153
  ,
141
154
  __metadata("design:type", Array)
142
155
  ], TaonCmsContentEntity.prototype, "permissions", void 0);
156
+ __decorate([
157
+ Column({ type: 'boolean', default: false })
158
+ //#endregion
159
+ ,
160
+ __metadata("design:type", Boolean)
161
+ ], TaonCmsContentEntity.prototype, "applyPermissionsToRelatedPosts", void 0);
143
162
  __decorate([
144
163
  Column({ type: 'text', nullable: true })
145
164
  //#endregion
@@ -170,6 +189,12 @@ __decorate([
170
189
  ,
171
190
  __metadata("design:type", String)
172
191
  ], TaonCmsContentEntity.prototype, "attachmentKey", void 0);
192
+ __decorate([
193
+ Column({ type: 'varchar', nullable: true })
194
+ //#endregion
195
+ ,
196
+ __metadata("design:type", String)
197
+ ], TaonCmsContentEntity.prototype, "thumbnailKey", void 0);
173
198
  __decorate([
174
199
  Column({ type: 'integer', nullable: true })
175
200
  //#endregion
@@ -294,14 +319,67 @@ CmsContext_1792506757808_applicaitonHooks = __decorate([
294
319
  ], CmsContext_1792506757808_applicaitonHooks);
295
320
  //#endregion
296
321
 
322
+ let CmsContext_1792579000000_postPermissionInheritance = class CmsContext_1792579000000_postPermissionInheritance extends TaonBaseMigration {
323
+ async up(queryRunner) {
324
+ const table = ClassHelpers__NS__getName(TaonCmsContentEntity);
325
+ if (!(await queryRunner.hasColumn(table, 'applyPermissionsToRelatedPosts'))) {
326
+ await queryRunner.addColumn(table, new TableColumn({
327
+ name: 'applyPermissionsToRelatedPosts',
328
+ type: 'boolean',
329
+ default: false,
330
+ }));
331
+ }
332
+ }
333
+ async down(queryRunner) {
334
+ const table = ClassHelpers__NS__getName(TaonCmsContentEntity);
335
+ if (await queryRunner.hasColumn(table, 'applyPermissionsToRelatedPosts')) {
336
+ await queryRunner.dropColumn(table, 'applyPermissionsToRelatedPosts');
337
+ }
338
+ }
339
+ };
340
+ CmsContext_1792579000000_postPermissionInheritance = __decorate([
341
+ TaonMigration({
342
+ className: 'CmsContext_1792579000000_postPermissionInheritance',
343
+ })
344
+ ], CmsContext_1792579000000_postPermissionInheritance);
345
+
346
+ let CmsContext_1793043000000_postThumbnails = class CmsContext_1793043000000_postThumbnails extends TaonBaseMigration {
347
+ async up(queryRunner) {
348
+ const table = ClassHelpers__NS__getName(TaonCmsContentEntity);
349
+ if (!(await queryRunner.hasColumn(table, 'thumbnailKey'))) {
350
+ await queryRunner.addColumn(table, new TableColumn({
351
+ name: 'thumbnailKey',
352
+ type: 'varchar',
353
+ isNullable: true,
354
+ }));
355
+ }
356
+ }
357
+ async down(queryRunner) {
358
+ const table = ClassHelpers__NS__getName(TaonCmsContentEntity);
359
+ if (await queryRunner.hasColumn(table, 'thumbnailKey')) {
360
+ await queryRunner.dropColumn(table, 'thumbnailKey');
361
+ }
362
+ }
363
+ };
364
+ CmsContext_1793043000000_postThumbnails = __decorate([
365
+ TaonMigration({ className: 'CmsContext_1793043000000_postThumbnails' })
366
+ ], CmsContext_1793043000000_postThumbnails);
367
+
297
368
  // THIS FILE IS GENERATED - DO NOT MODIFY
298
369
  // THIS FILE IS GENERATED - DO NOT MODIFY
299
- const MIGRATIONS_CLASSES_FOR_CmsContext = {
370
+ const MIGRATIONS_CLASSES_FOR_CmsContext$1 = {
300
371
  /* 20-10-2026 16:32:37 */ CmsContext_1792506757808_applicaitonHooks,
372
+ /* 21-10-2026 12:36:40 */ CmsContext_1792579000000_postPermissionInheritance,
373
+ /* 26-10-2026 20:30:00 */ CmsContext_1793043000000_postThumbnails,
301
374
  };
302
375
  // THIS FILE IS GENERATED - DO NOT MODIFY
303
376
 
304
377
  //@ts-nocheck
378
+ const MIGRATIONS_CLASSES_FOR_CmsContext = {
379
+ ...MIGRATIONS_CLASSES_FOR_CmsContext$1,
380
+ CmsContext_1792579000000_postPermissionInheritance,
381
+ CmsContext_1793043000000_postThumbnails,
382
+ };
305
383
 
306
384
  // THIS FILE IS GENERATED - DO NOT MODIFY
307
385
  /**
@@ -327,7 +405,7 @@ const CURRENT_PACKAGE_TAON_VERSION = 'v21';
327
405
  /**
328
406
  * Autogenerated by current cli tool. Use *tnp release* to bump version.
329
407
  */
330
- const CURRENT_PACKAGE_VERSION = '21.0.16';
408
+ const CURRENT_PACKAGE_VERSION = '21.0.18';
331
409
  // THIS FILE IS GENERATED - DO NOT MODIFY
332
410
 
333
411
  //#region tnp-helpers cli template
@@ -459,6 +537,111 @@ TaonCmsCategoryEntity = __decorate([
459
537
  })
460
538
  ], TaonCmsCategoryEntity);
461
539
 
540
+ //#region taon auth decorator
541
+ const TaonSessionCoreGroups = {
542
+ ...TaonSessionCoreGroups$1,
543
+ Manager: 'manager',
544
+ };
545
+ const TaonSessionCoreRoles = {
546
+ ...TaonSessionCoreRoles$1,
547
+ /**
548
+ * Can manage roles and permissions assigned directly to users.
549
+ * Does NOT allow changing user groups.
550
+ */
551
+ PostsManager: 'posts-manager',
552
+ PremiumUser1: 'premium-user-1',
553
+ PremiumUser2: 'premium-user-2',
554
+ };
555
+ const TaonSessionCorePermissions = {
556
+ ...TaonSessionCorePermissions$1,
557
+ ViewPrivateVideo1: 'view-private-video-1',
558
+ ViewPrivateVideo2: 'view-private-video-2',
559
+ };
560
+ let TaonAuthContextEntity = class TaonAuthContextEntity extends TaonAuthContextEntity$1 {
561
+ // @ts-ignore
562
+ get hasAccess() {
563
+ return this.injectClass(TaonAuthContextHasAccess, this);
564
+ }
565
+ };
566
+ TaonAuthContextEntity = __decorate([
567
+ TaonEntity({
568
+ className: 'TaonAuthContextEntity',
569
+ createTable: false,
570
+ })
571
+ ], TaonAuthContextEntity);
572
+ class TaonAuthContextHasAccess extends TaonAuthContextHasAccess$1 {
573
+ get toManagePosts() {
574
+ //#region @browserFunc
575
+ return this.context.snapshoot.toManagePosts;
576
+ //#endregion
577
+ //#region @websqlFunc
578
+ return (this.context.isSuperUser ||
579
+ this.context.hasRole(TaonSessionCoreRoles.PostsManager));
580
+ //#endregion
581
+ }
582
+ }
583
+ let TaonAuthContextRepository = class TaonAuthContextRepository extends TaonAuthContextRepository$1 {
584
+ constructor() {
585
+ super(...arguments);
586
+ // @ts-ignore
587
+ this.entityClassResolveFn = () => TaonAuthContextEntity;
588
+ }
589
+ };
590
+ TaonAuthContextRepository = __decorate([
591
+ TaonRepository({
592
+ className: 'TaonAuthContextRepository',
593
+ })
594
+ ], TaonAuthContextRepository);
595
+ let CmsContext_1791132517217_initial = class CmsContext_1791132517217_initial extends MIGRATIONS_CLASSES_FOR_SessionContext.SessionContext_1791132517216_initial {
596
+ async persistTree() {
597
+ //#region @websqlFunc
598
+ await this.taonAuthContextRepository.persistTree({
599
+ authorization: {
600
+ groups: TaonSessionCoreGroups,
601
+ roles: TaonSessionCoreRoles,
602
+ permissions: TaonSessionCorePermissions,
603
+ },
604
+ tree: {
605
+ groupAndRoles: {
606
+ // Administrators receive all core administrative roles.
607
+ [TaonSessionCoreGroups.Administrator]: '*',
608
+ // Normal customers receive no administrative roles by default.
609
+ [TaonSessionCoreGroups.Customers]: [],
610
+ [TaonSessionCoreGroups.Manager]: [TaonSessionCoreRoles.PostsManager],
611
+ },
612
+ rolesAndPermissions: {
613
+ [TaonSessionCoreRoles.AuthorizationManager]: [
614
+ TaonSessionCorePermissions.ViewUsers,
615
+ TaonSessionCorePermissions.ViewUserAuthorization,
616
+ TaonSessionCorePermissions.ManageUserRoles,
617
+ TaonSessionCorePermissions.ManageUserPermissions,
618
+ ],
619
+ [TaonSessionCoreRoles.PostsManager]: [],
620
+ [TaonSessionCoreRoles.PremiumUser1]: [
621
+ TaonSessionCorePermissions.ViewPrivateVideo1,
622
+ ],
623
+ [TaonSessionCoreRoles.PremiumUser2]: [
624
+ TaonSessionCorePermissions.ViewPrivateVideo2,
625
+ ],
626
+ [TaonSessionCoreRoles.UserManager]: [
627
+ TaonSessionCorePermissions.ViewUsers,
628
+ TaonSessionCorePermissions.ManageUsers,
629
+ TaonSessionCorePermissions.ViewSessions,
630
+ TaonSessionCorePermissions.RevokeSessions,
631
+ ],
632
+ },
633
+ },
634
+ });
635
+ //#endregion
636
+ }
637
+ };
638
+ CmsContext_1791132517217_initial = __decorate([
639
+ TaonMigration({
640
+ className: 'CmsContext_1791132517217_initial',
641
+ })
642
+ ], CmsContext_1791132517217_initial);
643
+ //#endregion
644
+
462
645
  function contentError(message, status = 400) {
463
646
  Taon__NS__error({ message, status });
464
647
  throw new Error(message);
@@ -489,7 +672,12 @@ function validateContentInput(input, creating = false) {
489
672
  }
490
673
  }
491
674
  for (const field of [
492
- 'body', 'excerpt', 'videoKey', 'audioKey', 'attachmentKey',
675
+ 'body',
676
+ 'excerpt',
677
+ 'videoKey',
678
+ 'audioKey',
679
+ 'attachmentKey',
680
+ 'thumbnailKey',
493
681
  ]) {
494
682
  if (input[field] !== undefined &&
495
683
  input[field] !== null &&
@@ -502,6 +690,10 @@ function validateContentInput(input, creating = false) {
502
690
  requireContentId(input[field], field);
503
691
  }
504
692
  }
693
+ if (input.applyPermissionsToRelatedPosts !== undefined &&
694
+ typeof input.applyPermissionsToRelatedPosts !== 'boolean') {
695
+ contentError('applyPermissionsToRelatedPosts must be a boolean.');
696
+ }
505
697
  if (input.status !== undefined &&
506
698
  !['draft', 'published', 'archived'].includes(input.status)) {
507
699
  contentError('status must be draft, published, or archived.');
@@ -530,12 +722,95 @@ function validateContentInput(input, creating = false) {
530
722
  }
531
723
  }
532
724
 
725
+ const t$d = Translation.for('src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts', { "src/lib/taon-cms-category/taon-cms-category.controller.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-category.controller.ts.en-US.i18n.data-B_PYr-6x.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-category.controller.ts.pl-PL.i18n.data-mQb8xdX1.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-category.controller.ts.de-DE.i18n.data-CExlN4WS.mjs')).default }, "src/lib/taon-cms-category/taon-cms-category.repository.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-category.repository.ts.en-US.i18n.data-azzI-zfY.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-category.repository.ts.pl-PL.i18n.data-DStaGZRY.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-category.repository.ts.de-DE.i18n.data-C22PmYTv.mjs')).default }, "src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-taxonomy.validation.ts.en-US.i18n.data-DkyJwBie.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-taxonomy.validation.ts.pl-PL.i18n.data-CFSqXG-_.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-taxonomy.validation.ts.de-DE.i18n.data-C5DRXeX_.mjs')).default } });
726
+ function validateTaxonomy(input) {
727
+ if (!input ||
728
+ typeof input.name !== 'string' ||
729
+ !input.name.trim() ||
730
+ typeof input.slug !== 'string' ||
731
+ !input.slug.trim() ||
732
+ (input.description !== null && typeof input.description !== 'string')) {
733
+ contentError(t$d.gettext('Name, slug, and a valid description are required.'));
734
+ }
735
+ }
736
+ function validateCategoryHierarchy(id, parentId, categories) {
737
+ const visited = new Set();
738
+ if (id !== null) {
739
+ visited.add(id);
740
+ }
741
+ let current = parentId;
742
+ while (current !== null) {
743
+ if (visited.has(current)) {
744
+ contentError(t$d.gettext('A category cannot be its own ancestor.'));
745
+ }
746
+ visited.add(current);
747
+ const parent = categories.find(category => category.id === current);
748
+ if (!parent) {
749
+ contentError(t$d.gettext('The parent category does not exist.'));
750
+ }
751
+ current = parent.parentCategoryId;
752
+ }
753
+ }
754
+
533
755
  //#endregion
756
+ const t$c = Translation.for('src/lib/taon-cms-category/taon-cms-category.repository.ts', { "src/lib/taon-cms-category/taon-cms-category.controller.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-category.controller.ts.en-US.i18n.data-B_PYr-6x.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-category.controller.ts.pl-PL.i18n.data-mQb8xdX1.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-category.controller.ts.de-DE.i18n.data-CExlN4WS.mjs')).default }, "src/lib/taon-cms-category/taon-cms-category.repository.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-category.repository.ts.en-US.i18n.data-azzI-zfY.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-category.repository.ts.pl-PL.i18n.data-DStaGZRY.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-category.repository.ts.de-DE.i18n.data-C22PmYTv.mjs')).default }, "src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-taxonomy.validation.ts.en-US.i18n.data-DkyJwBie.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-taxonomy.validation.ts.pl-PL.i18n.data-CFSqXG-_.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-taxonomy.validation.ts.de-DE.i18n.data-C5DRXeX_.mjs')).default } });
534
757
  let TaonCmsCategoryRepository = class TaonCmsCategoryRepository extends TaonBaseRepository {
535
758
  constructor() {
536
759
  super(...arguments);
537
760
  this.entityClassResolveFn = () => TaonCmsCategoryEntity;
538
761
  }
762
+ async saveCategory(id, input) {
763
+ //#region @websqlFunc
764
+ validateTaxonomy(input);
765
+ if (!Number.isSafeInteger(input.sortOrder)) {
766
+ contentError(t$c.gettext('Sort order must be an integer.'));
767
+ }
768
+ if (id !== null) {
769
+ requireContentId(id);
770
+ }
771
+ if (input.parentCategoryId !== null) {
772
+ requireContentId(input.parentCategoryId);
773
+ }
774
+ return this.connection.transaction('SERIALIZABLE', async (manager) => {
775
+ const repository = manager.getRepository(TaonCmsCategoryEntity);
776
+ if (id !== null) {
777
+ await this.requireCategory(id, manager);
778
+ }
779
+ validateCategoryHierarchy(id, input.parentCategoryId, await repository.find());
780
+ const slug = input.slug.trim();
781
+ const existing = await repository.findOneBy({ slug });
782
+ if (existing && existing.id !== id) {
783
+ contentError(t$c.gettext('This category slug is already in use.'), 409);
784
+ }
785
+ return repository.save(repository.create({
786
+ ...(id === null ? {} : { id }),
787
+ name: input.name.trim(),
788
+ slug,
789
+ description: input.description,
790
+ sortOrder: input.sortOrder,
791
+ parentCategoryId: input.parentCategoryId,
792
+ }));
793
+ });
794
+ //#endregion
795
+ }
796
+ async deleteCategory(id) {
797
+ //#region @websqlFunc
798
+ requireContentId(id);
799
+ await this.connection.transaction('SERIALIZABLE', async (manager) => {
800
+ await this.requireCategory(id, manager);
801
+ const children = await manager
802
+ .getRepository(TaonCmsCategoryEntity)
803
+ .countBy({ parentCategoryId: id });
804
+ const posts = await manager
805
+ .getRepository(TaonCmsContentEntity)
806
+ .countBy({ categoryId: id });
807
+ if (children || posts) {
808
+ contentError(t$c.gettext('Reassign child categories and posts before deleting this category.'), 409);
809
+ }
810
+ await manager.getRepository(TaonCmsCategoryEntity).delete(id);
811
+ });
812
+ //#endregion
813
+ }
539
814
  async requireCategory(id, manager) {
540
815
  //#region @websqlFunc
541
816
  const category = await manager
@@ -559,12 +834,48 @@ let TaonCmsCategoryController = class TaonCmsCategoryController extends TaonBase
559
834
  super(...arguments);
560
835
  this.entityClassResolveFn = () => TaonCmsCategoryEntity;
561
836
  this.taonCmsCategoryRepository = this.injectCustomRepo(TaonCmsCategoryRepository);
837
+ this.sessions = this.injectCustomRepo(TaonSessionRepository);
838
+ this.auth = this.injectCustomRepo(TaonAuthContextRepository);
839
+ }
840
+ async beforeEachRequest({ req, res, t, }) {
841
+ /* */
842
+ /* */
843
+ /* */
844
+ /* */
845
+ /* */
846
+ /* */
847
+ return (void 0);
848
+ }
849
+ saveCategory(id, input) {
850
+ //#region @websqlFunc
851
+ return () => this.taonCmsCategoryRepository.saveCategory(id ?? null, input);
852
+ //#endregion
853
+ }
854
+ deleteCategory(id) {
855
+ //#region @websqlFunc
856
+ return () => this.taonCmsCategoryRepository.deleteCategory(id);
857
+ //#endregion
562
858
  }
563
859
  };
860
+ __decorate([
861
+ POST(),
862
+ __param(0, Query('id')),
863
+ __param(1, Body()),
864
+ __metadata("design:type", Function),
865
+ __metadata("design:paramtypes", [Number, Object]),
866
+ __metadata("design:returntype", Object)
867
+ ], TaonCmsCategoryController.prototype, "saveCategory", null);
868
+ __decorate([
869
+ DELETE(),
870
+ __param(0, Query('id')),
871
+ __metadata("design:type", Function),
872
+ __metadata("design:paramtypes", [Number]),
873
+ __metadata("design:returntype", Object)
874
+ ], TaonCmsCategoryController.prototype, "deleteCategory", null);
564
875
  TaonCmsCategoryController = __decorate([
565
876
  TaonController({
566
877
  className: 'TaonCmsCategoryController',
567
- allowedMethods: [],
878
+ allowedMethods: ['getAll', 'saveCategory', 'deleteCategory'],
568
879
  })
569
880
  ], TaonCmsCategoryController);
570
881
 
@@ -1143,11 +1454,52 @@ TaonCmsTagEntity = __decorate([
1143
1454
  ], TaonCmsTagEntity);
1144
1455
 
1145
1456
  //#endregion
1457
+ const t$b = Translation.for('src/lib/taon-cms-tag/taon-cms-tag.repository.ts', { "src/lib/taon-cms-tag/taon-cms-tag.controller.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-tag.controller.ts.en-US.i18n.data-Dvq54oiB.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-tag.controller.ts.pl-PL.i18n.data-CXyb5AME.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-tag.controller.ts.de-DE.i18n.data-DeQB5uhd.mjs')).default }, "src/lib/taon-cms-tag/taon-cms-tag.repository.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-tag.repository.ts.en-US.i18n.data-_HdJ-Rax.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-tag.repository.ts.pl-PL.i18n.data-xYvTZmo4.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-tag.repository.ts.de-DE.i18n.data-xcmOlBF8.mjs')).default } });
1146
1458
  let TaonCmsTagRepository = class TaonCmsTagRepository extends TaonBaseRepository {
1147
1459
  constructor() {
1148
1460
  super(...arguments);
1149
1461
  this.entityClassResolveFn = () => TaonCmsTagEntity;
1150
1462
  }
1463
+ async saveTag(id, input) {
1464
+ //#region @websqlFunc
1465
+ validateTaxonomy(input);
1466
+ if (id !== null) {
1467
+ requireContentId(id);
1468
+ }
1469
+ return this.connection.transaction('SERIALIZABLE', async (manager) => {
1470
+ const repository = manager.getRepository(TaonCmsTagEntity);
1471
+ if (id !== null) {
1472
+ await this.requireTags([id], manager);
1473
+ }
1474
+ const name = input.name.trim();
1475
+ const slug = input.slug.trim();
1476
+ const existing = await repository.find({ where: [{ name }, { slug }] });
1477
+ if (existing.some(tag => tag.id !== id)) {
1478
+ contentError(t$b.gettext('This tag name or slug is already in use.'), 409);
1479
+ }
1480
+ return repository.save(repository.create({
1481
+ ...(id === null ? {} : { id }),
1482
+ name,
1483
+ slug,
1484
+ description: input.description,
1485
+ }));
1486
+ });
1487
+ //#endregion
1488
+ }
1489
+ async deleteTag(id) {
1490
+ //#region @websqlFunc
1491
+ requireContentId(id);
1492
+ await this.connection.transaction('SERIALIZABLE', async (manager) => {
1493
+ await this.requireTags([id], manager);
1494
+ if (await manager
1495
+ .getRepository(TaonCmsContentTagEntity)
1496
+ .countBy({ tagId: id })) {
1497
+ contentError(t$b.gettext('Remove this tag from posts before deleting it.'), 409);
1498
+ }
1499
+ await manager.getRepository(TaonCmsTagEntity).delete(id);
1500
+ });
1501
+ //#endregion
1502
+ }
1151
1503
  async requireTags(ids, manager) {
1152
1504
  //#region @websqlFunc
1153
1505
  for (const id of new Set(ids)) {
@@ -1187,6 +1539,27 @@ let TaonCmsTagController = TaonCmsTagController_1 = class TaonCmsTagController e
1187
1539
  super(...arguments);
1188
1540
  this.entityClassResolveFn = () => TaonCmsTagEntity;
1189
1541
  this.taonCmsTagRepository = this.injectCustomRepo(TaonCmsTagRepository);
1542
+ this.sessions = this.injectCustomRepo(TaonSessionRepository);
1543
+ this.auth = this.injectCustomRepo(TaonAuthContextRepository);
1544
+ //#endregion
1545
+ }
1546
+ async beforeEachRequest({ req, res, t, }) {
1547
+ /* */
1548
+ /* */
1549
+ /* */
1550
+ /* */
1551
+ /* */
1552
+ /* */
1553
+ return (void 0);
1554
+ }
1555
+ saveTag(id, input) {
1556
+ //#region @websqlFunc
1557
+ return () => this.taonCmsTagRepository.saveTag(id ?? null, input);
1558
+ //#endregion
1559
+ }
1560
+ deleteTag(id) {
1561
+ //#region @websqlFunc
1562
+ return () => this.taonCmsTagRepository.deleteTag(id);
1190
1563
  //#endregion
1191
1564
  }
1192
1565
  //#region methods & getters / hello world
@@ -1206,6 +1579,21 @@ let TaonCmsTagController = TaonCmsTagController_1 = class TaonCmsTagController e
1206
1579
  //#endregion
1207
1580
  }
1208
1581
  };
1582
+ __decorate([
1583
+ POST(),
1584
+ __param(0, Query('id')),
1585
+ __param(1, Body()),
1586
+ __metadata("design:type", Function),
1587
+ __metadata("design:paramtypes", [Number, Object]),
1588
+ __metadata("design:returntype", Object)
1589
+ ], TaonCmsTagController.prototype, "saveTag", null);
1590
+ __decorate([
1591
+ DELETE(),
1592
+ __param(0, Query('id')),
1593
+ __metadata("design:type", Function),
1594
+ __metadata("design:paramtypes", [Number]),
1595
+ __metadata("design:returntype", Object)
1596
+ ], TaonCmsTagController.prototype, "deleteTag", null);
1209
1597
  __decorate([
1210
1598
  GET(),
1211
1599
  __param(0, Query('yourName')),
@@ -1216,7 +1604,7 @@ __decorate([
1216
1604
  TaonCmsTagController = TaonCmsTagController_1 = __decorate([
1217
1605
  TaonController({
1218
1606
  className: 'TaonCmsTagController',
1219
- allowedMethods: []
1607
+ allowedMethods: ['getAll', 'saveTag', 'deleteTag'],
1220
1608
  })
1221
1609
  ], TaonCmsTagController);
1222
1610
 
@@ -1275,101 +1663,6 @@ const TaonCmsTagAbstractContext = createContext(() => ({
1275
1663
  subscribers: { TaonCmsTagSubscriber },
1276
1664
  }));
1277
1665
 
1278
- //#region taon auth decorator
1279
- const TaonSessionCoreGroups = {
1280
- ...TaonSessionCoreGroups$1,
1281
- Manager: 'manager',
1282
- };
1283
- const TaonSessionCoreRoles = {
1284
- ...TaonSessionCoreRoles$1,
1285
- /**
1286
- * Can manage roles and permissions assigned directly to users.
1287
- * Does NOT allow changing user groups.
1288
- */
1289
- PostsManager: 'posts-manager',
1290
- };
1291
- const TaonSessionCorePermissions = {
1292
- ...TaonSessionCorePermissions$1,
1293
- };
1294
- let TaonAuthContextEntity = class TaonAuthContextEntity extends TaonAuthContextEntity$1 {
1295
- // @ts-ignore
1296
- get hasAccess() {
1297
- return this.injectClass(TaonAuthContextHasAccess, this);
1298
- }
1299
- };
1300
- TaonAuthContextEntity = __decorate([
1301
- TaonEntity({
1302
- className: 'TaonAuthContextEntity',
1303
- createTable: false,
1304
- })
1305
- ], TaonAuthContextEntity);
1306
- class TaonAuthContextHasAccess extends TaonAuthContextHasAccess$1 {
1307
- get toManagePosts() {
1308
- //#region @browserFunc
1309
- return this.context.snapshoot.toManagePosts;
1310
- //#endregion
1311
- //#region @websqlFunc
1312
- return (this.context.isSuperUser ||
1313
- this.context.hasRole(TaonSessionCoreRoles.PostsManager));
1314
- //#endregion
1315
- }
1316
- }
1317
- let TaonAuthContextRepository = class TaonAuthContextRepository extends TaonAuthContextRepository$1 {
1318
- constructor() {
1319
- super(...arguments);
1320
- // @ts-ignore
1321
- this.entityClassResolveFn = () => TaonAuthContextEntity;
1322
- }
1323
- };
1324
- TaonAuthContextRepository = __decorate([
1325
- TaonRepository({
1326
- className: 'TaonAuthContextRepository',
1327
- })
1328
- ], TaonAuthContextRepository);
1329
- let CmsContext_1791132517217_initial = class CmsContext_1791132517217_initial extends MIGRATIONS_CLASSES_FOR_SessionContext.SessionContext_1791132517216_initial {
1330
- async persistTree() {
1331
- //#region @websqlFunc
1332
- await this.taonAuthContextRepository.persistTree({
1333
- authorization: {
1334
- groups: TaonSessionCoreGroups,
1335
- roles: TaonSessionCoreRoles,
1336
- permissions: TaonSessionCorePermissions,
1337
- },
1338
- tree: {
1339
- groupAndRoles: {
1340
- // Administrators receive all core administrative roles.
1341
- [TaonSessionCoreGroups.Administrator]: '*',
1342
- // Normal customers receive no administrative roles by default.
1343
- [TaonSessionCoreGroups.Customers]: [],
1344
- [TaonSessionCoreGroups.Manager]: [TaonSessionCoreRoles.PostsManager],
1345
- },
1346
- rolesAndPermissions: {
1347
- [TaonSessionCoreRoles.AuthorizationManager]: [
1348
- TaonSessionCorePermissions.ViewUsers,
1349
- TaonSessionCorePermissions.ViewUserAuthorization,
1350
- TaonSessionCorePermissions.ManageUserRoles,
1351
- TaonSessionCorePermissions.ManageUserPermissions,
1352
- ],
1353
- [TaonSessionCoreRoles.PostsManager]: [],
1354
- [TaonSessionCoreRoles.UserManager]: [
1355
- TaonSessionCorePermissions.ViewUsers,
1356
- TaonSessionCorePermissions.ManageUsers,
1357
- TaonSessionCorePermissions.ViewSessions,
1358
- TaonSessionCorePermissions.RevokeSessions,
1359
- ],
1360
- },
1361
- },
1362
- });
1363
- //#endregion
1364
- }
1365
- };
1366
- CmsContext_1791132517217_initial = __decorate([
1367
- TaonMigration({
1368
- className: 'CmsContext_1791132517217_initial',
1369
- })
1370
- ], CmsContext_1791132517217_initial);
1371
- //#endregion
1372
-
1373
1666
  //#endregion
1374
1667
  let TaonCmsContentRepository = class TaonCmsContentRepository extends TaonBaseRepository {
1375
1668
  constructor() {
@@ -1380,39 +1673,89 @@ let TaonCmsContentRepository = class TaonCmsContentRepository extends TaonBaseRe
1380
1673
  this.taonCmsCategoryRepository = this.injectCustomRepo(TaonCmsCategoryRepository);
1381
1674
  this.tags = this.injectCustomRepo(TaonCmsTagRepository);
1382
1675
  }
1676
+ async listTagIds(id) {
1677
+ //#region @websqlFunc
1678
+ requireContentId(id);
1679
+ return this.connection.transaction(async (manager) => {
1680
+ await this.requireContent(id, manager);
1681
+ return this.taonCmsContentTagRepository.findTagIds(id, manager);
1682
+ });
1683
+ //#endregion
1684
+ }
1383
1685
  async createContent(input) {
1384
1686
  //#region @websqlFunc
1385
1687
  validateContentInput(input, true);
1386
- return this.connection.transaction(async (manager) => {
1387
- const fields = this.contentFields(input);
1388
- const tagIds = [...new Set(input.tagIds ?? [])];
1389
- const relatedPostIds = [...new Set(input.relatedPostIds ?? [])];
1390
- const permissionIds = [...new Set(input.permissionIds ?? [])];
1391
- await this.validateReferences(fields, tagIds, permissionIds, manager);
1392
- await this.requireAvailableSlug(fields.slug, manager);
1688
+ return this.connection.transaction('SERIALIZABLE', manager => this.createContentWithManager(input, manager));
1689
+ //#endregion
1690
+ }
1691
+ async duplicateContent(id) {
1692
+ //#region @websqlFunc
1693
+ requireContentId(id);
1694
+ return this.connection.transaction('SERIALIZABLE', async (manager) => {
1695
+ const source = await this.requireContent(id, manager);
1696
+ const snapshot = await this.snapshotOf(source, manager);
1697
+ const configuration = await this.resolvePermissionConfiguration(source, manager);
1698
+ const titleSuffix = source.title.match(/\s+COPY(\d+)$/i);
1699
+ const slugSuffix = source.slug.match(/-copy(\d+)$/i);
1700
+ const baseTitle = source.title.replace(/(?:\s+COPY\d+)+$/i, '');
1701
+ const baseSlug = source.slug.replace(/(?:-copy\d+)+$/i, '');
1702
+ let number = Math.max(Number(titleSuffix?.[1] ?? 0), Number(slugSuffix?.[1] ?? 0)) +
1703
+ 1;
1393
1704
  const repository = manager.getRepository(this.target);
1394
- const now = new Date();
1395
- const content = await repository.save(repository.create({
1396
- ...fields,
1397
- version: 1,
1398
- createdAt: now,
1399
- updatedAt: now,
1400
- }));
1401
- await this.taonCmsContentTagRepository.replaceTags(content.id, tagIds, manager);
1402
- await this.replaceRelatedPosts(content.id, relatedPostIds, [], manager);
1403
- await this.replacePermissions(content.id, permissionIds, [], manager);
1404
- await this.replaceApplicationHook(content.id, input.applicationHook ?? null, manager);
1405
- await this.taonCmsContentRevisionRepository.recordContent(content, { ...fields, tagIds, relatedPostIds, permissionIds }, manager);
1406
- return this.requireContent(content.id, manager);
1705
+ while (Number.isSafeInteger(number)) {
1706
+ const title = `${baseTitle} COPY${number}`;
1707
+ const slug = `${baseSlug}-copy${number}`;
1708
+ const existing = await repository.findOne({
1709
+ where: [{ title }, { slug }],
1710
+ });
1711
+ if (!existing) {
1712
+ return this.createContentWithManager({
1713
+ ...snapshot,
1714
+ title,
1715
+ slug,
1716
+ relatedPostIds: [],
1717
+ applicationHook: null,
1718
+ // Inherited permissions become independent without related links.
1719
+ permissionIds: configuration.permissions.map(permission => permission.id),
1720
+ }, manager);
1721
+ }
1722
+ number += 1;
1723
+ }
1724
+ contentError('No available copy number could be generated.', 409);
1407
1725
  });
1408
1726
  //#endregion
1409
1727
  }
1728
+ async createContentWithManager(input, manager) {
1729
+ //#region @websqlFunc
1730
+ const fields = this.contentFields(input);
1731
+ const tagIds = [...new Set(input.tagIds ?? [])];
1732
+ const relatedPostIds = [...new Set(input.relatedPostIds ?? [])];
1733
+ const permissionIds = [...new Set(input.permissionIds ?? [])];
1734
+ await this.validateReferences(fields, tagIds, permissionIds, manager);
1735
+ await this.requireAvailableSlug(fields.slug, manager);
1736
+ const repository = manager.getRepository(this.target);
1737
+ const now = new Date();
1738
+ const content = await repository.save(repository.create({
1739
+ ...fields,
1740
+ version: 1,
1741
+ createdAt: now,
1742
+ updatedAt: now,
1743
+ }));
1744
+ await this.taonCmsContentTagRepository.replaceTags(content.id, tagIds, manager);
1745
+ await this.replaceRelatedPosts(content.id, relatedPostIds, [], manager);
1746
+ await this.validatePermissionInheritance(manager);
1747
+ await this.replacePermissions(content.id, permissionIds, [], manager);
1748
+ await this.replaceApplicationHook(content.id, input.applicationHook ?? null, manager);
1749
+ await this.taonCmsContentRevisionRepository.recordContent(content, { ...fields, tagIds, relatedPostIds, permissionIds }, manager);
1750
+ return this.requireContent(content.id, manager);
1751
+ //#endregion
1752
+ }
1410
1753
  async updateContent(id, input) {
1411
1754
  //#region @websqlFunc
1412
1755
  requireContentId(id);
1413
1756
  validateContentInput(input);
1414
1757
  requireContentVersion(input.expectedVersion);
1415
- return this.connection.transaction(async (manager) => {
1758
+ return this.connection.transaction('SERIALIZABLE', async (manager) => {
1416
1759
  const current = await this.requireContent(id, manager);
1417
1760
  const snapshot = await this.snapshotOf(current, manager);
1418
1761
  const fields = this.contentFields(input, snapshot);
@@ -1442,7 +1785,7 @@ let TaonCmsContentRepository = class TaonCmsContentRepository extends TaonBaseRe
1442
1785
  }
1443
1786
  requireContentVersion(input.revisionNumber, 'revisionNumber');
1444
1787
  requireContentVersion(input.expectedVersion);
1445
- return this.connection.transaction(async (manager) => {
1788
+ return this.connection.transaction('SERIALIZABLE', async (manager) => {
1446
1789
  const current = await this.requireContent(id, manager);
1447
1790
  const revision = await this.taonCmsContentRevisionRepository.requireRevision(id, input.revisionNumber, manager);
1448
1791
  if (!revision.snapshot) {
@@ -1494,7 +1837,89 @@ let TaonCmsContentRepository = class TaonCmsContentRepository extends TaonBaseRe
1494
1837
  async listPermissions(id) {
1495
1838
  //#region @websqlFunc
1496
1839
  requireContentId(id);
1497
- return this.connection.transaction(async (manager) => (await this.requireContent(id, manager)).permissions);
1840
+ return (await this.getPermissionConfiguration(id)).permissions;
1841
+ //#endregion
1842
+ }
1843
+ async getPermissionConfiguration(id) {
1844
+ //#region @websqlFunc
1845
+ requireContentId(id);
1846
+ return this.connection.transaction(async (manager) => {
1847
+ const post = await this.requireContent(id, manager);
1848
+ return this.resolvePermissionConfiguration(post, manager);
1849
+ });
1850
+ //#endregion
1851
+ }
1852
+ async resolvePermissionConfiguration(post, manager) {
1853
+ //#region @websqlFunc
1854
+ const repository = manager.getRepository(this.target);
1855
+ let source = post;
1856
+ const visited = new Set();
1857
+ while (true) {
1858
+ if (visited.has(source.id)) {
1859
+ contentError('Permission inheritance contains a cycle.', 409);
1860
+ }
1861
+ visited.add(source.id);
1862
+ const parents = await repository.find({
1863
+ where: {
1864
+ applyPermissionsToRelatedPosts: true,
1865
+ relatedPosts: { id: source.id },
1866
+ },
1867
+ relations: { permissions: true },
1868
+ });
1869
+ if (parents.length > 1) {
1870
+ contentError('A post cannot inherit permissions from multiple sources.', 409);
1871
+ }
1872
+ if (!parents.length) {
1873
+ return {
1874
+ permissions: source.permissions,
1875
+ source: source.id === post.id
1876
+ ? null
1877
+ : { id: source.id, title: source.title },
1878
+ };
1879
+ }
1880
+ source = parents[0];
1881
+ }
1882
+ //#endregion
1883
+ }
1884
+ async validatePermissionInheritance(manager) {
1885
+ //#region @websqlFunc
1886
+ const parents = await manager
1887
+ .getRepository(this.target)
1888
+ .find({
1889
+ where: { applyPermissionsToRelatedPosts: true },
1890
+ relations: { relatedPosts: true },
1891
+ });
1892
+ const sources = new Map();
1893
+ for (const parent of parents) {
1894
+ for (const child of parent.relatedPosts) {
1895
+ if (sources.has(child.id)) {
1896
+ contentError(`Content ${child.id} would inherit permissions from multiple sources.`, 409);
1897
+ }
1898
+ sources.set(child.id, parent.id);
1899
+ }
1900
+ }
1901
+ for (const id of sources.keys()) {
1902
+ const visited = new Set();
1903
+ let current = id;
1904
+ while (current !== undefined) {
1905
+ if (visited.has(current)) {
1906
+ contentError('Permission inheritance cannot contain cycles.', 409);
1907
+ }
1908
+ visited.add(current);
1909
+ current = sources.get(current);
1910
+ }
1911
+ }
1912
+ //#endregion
1913
+ }
1914
+ async requireOwnPermissionEdit(id, permissionIds, current, manager) {
1915
+ //#region @websqlFunc
1916
+ const configuration = await this.resolvePermissionConfiguration(current, manager);
1917
+ const ownIds = new Set(current.permissions.map(permission => permission.id));
1918
+ if (configuration.source &&
1919
+ (ownIds.size !== new Set(permissionIds).size ||
1920
+ permissionIds.some(permissionId => !ownIds.has(permissionId)))) {
1921
+ contentError(`Content ${id} inherits permissions; edit the source post instead.`, 409);
1922
+ }
1498
1923
  //#endregion
1499
1924
  }
1500
1925
  async listApplicationHooks() {
@@ -1505,6 +1930,11 @@ let TaonCmsContentRepository = class TaonCmsContentRepository extends TaonBaseRe
1505
1930
  //#endregion
1506
1931
  }
1507
1932
  async getContentByHook(hook) {
1933
+ //#region @websqlFunc
1934
+ return (await this.getContentForHook(hook))?.body ?? '';
1935
+ //#endregion
1936
+ }
1937
+ async getContentForHook(hook) {
1508
1938
  //#region @websqlFunc
1509
1939
  if (!hook) {
1510
1940
  contentError('Application hook is required.');
@@ -1513,11 +1943,52 @@ let TaonCmsContentRepository = class TaonCmsContentRepository extends TaonBaseRe
1513
1943
  .getRepository(TaonCmsApplicationHookEntity)
1514
1944
  .findOne({
1515
1945
  where: { hook: hook },
1516
- relations: { content: true },
1946
+ relations: { content: { permissions: true } },
1947
+ });
1948
+ return applicationHook?.content ?? null;
1949
+ //#endregion
1950
+ }
1951
+ //#region methods / media access
1952
+ async getContentBySlugForMedia(slug) {
1953
+ //#region @websqlFunc
1954
+ if (!slug) {
1955
+ contentError('Content slug is required.');
1956
+ }
1957
+ return this.connection
1958
+ .getRepository(this.target)
1959
+ .findOne({
1960
+ where: { slug },
1961
+ relations: { permissions: true },
1962
+ });
1963
+ //#endregion
1964
+ }
1965
+ async isPublicMediaKey(key) {
1966
+ //#region @websqlFunc
1967
+ const contents = await this.connection
1968
+ .getRepository(this.target)
1969
+ .find({
1970
+ where: [
1971
+ { videoKey: key },
1972
+ { audioKey: key },
1973
+ { attachmentKey: key },
1974
+ { thumbnailKey: key },
1975
+ ],
1976
+ relations: { permissions: true },
1517
1977
  });
1518
- return applicationHook?.content?.body ?? '';
1978
+ if (!contents.length) {
1979
+ return false;
1980
+ }
1981
+ for (const content of contents) {
1982
+ if (content.status !== 'published' ||
1983
+ (await this.getPermissionConfiguration(content.id)).permissions.length >
1984
+ 0) {
1985
+ return false;
1986
+ }
1987
+ }
1988
+ return true;
1519
1989
  //#endregion
1520
1990
  }
1991
+ //#endregion
1521
1992
  async addRelatedPost(id, relatedPostId, expectedVersion) {
1522
1993
  //#region @websqlFunc
1523
1994
  return this.changeRelatedPost(id, relatedPostId, expectedVersion, true);
@@ -1536,7 +2007,7 @@ let TaonCmsContentRepository = class TaonCmsContentRepository extends TaonBaseRe
1536
2007
  if (id === relatedPostId) {
1537
2008
  contentError('A post cannot relate to itself.');
1538
2009
  }
1539
- return this.connection.transaction(async (manager) => {
2010
+ return this.connection.transaction('SERIALIZABLE', async (manager) => {
1540
2011
  const current = await this.requireContent(id, manager);
1541
2012
  await this.requireContent(relatedPostId, manager);
1542
2013
  const snapshot = await this.snapshotOf(current, manager);
@@ -1581,11 +2052,18 @@ let TaonCmsContentRepository = class TaonCmsContentRepository extends TaonBaseRe
1581
2052
  title,
1582
2053
  slug,
1583
2054
  body: input.body === undefined ? (current?.body ?? null) : input.body,
1584
- videoKey: input.videoKey === undefined ? (current?.videoKey ?? null) : input.videoKey,
1585
- audioKey: input.audioKey === undefined ? (current?.audioKey ?? null) : input.audioKey,
2055
+ videoKey: input.videoKey === undefined
2056
+ ? (current?.videoKey ?? null)
2057
+ : input.videoKey,
2058
+ audioKey: input.audioKey === undefined
2059
+ ? (current?.audioKey ?? null)
2060
+ : input.audioKey,
1586
2061
  attachmentKey: input.attachmentKey === undefined
1587
2062
  ? (current?.attachmentKey ?? null)
1588
2063
  : input.attachmentKey,
2064
+ thumbnailKey: input.thumbnailKey === undefined
2065
+ ? (current?.thumbnailKey ?? null)
2066
+ : input.thumbnailKey,
1589
2067
  excerpt: input.excerpt === undefined
1590
2068
  ? (current?.excerpt ?? null)
1591
2069
  : input.excerpt,
@@ -1597,6 +2075,9 @@ let TaonCmsContentRepository = class TaonCmsContentRepository extends TaonBaseRe
1597
2075
  : input.authorUserId,
1598
2076
  status: input.status ?? current?.status ?? 'draft',
1599
2077
  publishedAt: publishedAt === null ? null : new Date(publishedAt),
2078
+ applyPermissionsToRelatedPosts: input.applyPermissionsToRelatedPosts ??
2079
+ current?.applyPermissionsToRelatedPosts ??
2080
+ false,
1600
2081
  };
1601
2082
  }
1602
2083
  async snapshotOf(content, manager) {
@@ -1669,7 +2150,8 @@ let TaonCmsContentRepository = class TaonCmsContentRepository extends TaonBaseRe
1669
2150
  const added = relatedPostIds.filter(postId => !previousIds.includes(postId));
1670
2151
  const removed = previousIds.filter(postId => !relatedPostIds.includes(postId));
1671
2152
  if (added.length || removed.length) {
1672
- await repository.createQueryBuilder()
2153
+ await repository
2154
+ .createQueryBuilder()
1673
2155
  .relation('relatedPosts')
1674
2156
  .of(id)
1675
2157
  .addAndRemove(added, removed);
@@ -1724,6 +2206,7 @@ let TaonCmsContentRepository = class TaonCmsContentRepository extends TaonBaseRe
1724
2206
  if (current.version !== expectedVersion) {
1725
2207
  contentError('Content has changed. Reload it before editing.', 409);
1726
2208
  }
2209
+ await this.requireOwnPermissionEdit(current.id, snapshot.permissionIds, current, manager);
1727
2210
  await this.validateReferences(snapshot, snapshot.tagIds, snapshot.permissionIds, manager);
1728
2211
  await this.requireAvailableSlug(snapshot.slug, manager, current.id);
1729
2212
  // Preserve the first pre-API version before replacing it.
@@ -1739,6 +2222,7 @@ let TaonCmsContentRepository = class TaonCmsContentRepository extends TaonBaseRe
1739
2222
  }
1740
2223
  await this.taonCmsContentTagRepository.replaceTags(current.id, snapshot.tagIds, manager);
1741
2224
  await this.replaceRelatedPosts(current.id, [...new Set(snapshot.relatedPostIds ?? [])], current.relatedPosts.map(post => post.id), manager);
2225
+ await this.validatePermissionInheritance(manager);
1742
2226
  await this.replacePermissions(current.id, [...new Set(snapshot.permissionIds ?? [])], current.permissions.map(permission => permission.id), manager);
1743
2227
  if (applicationHook !== undefined) {
1744
2228
  await this.replaceApplicationHook(current.id, applicationHook, manager);
@@ -1774,13 +2258,13 @@ TaonCmsContentRepository = __decorate([
1774
2258
  ], TaonCmsContentRepository);
1775
2259
 
1776
2260
  //#endregion
1777
- let TaonCmsContentController = class TaonCmsContentController extends TaonBaseCrudController {
2261
+ let TaonCmsContentStorageController = class TaonCmsContentStorageController extends TaonBaseStorageController {
1778
2262
  constructor() {
1779
2263
  super(...arguments);
1780
- this.entityClassResolveFn = () => TaonCmsContentEntity;
1781
- this.taonCmsContentRepository = this.injectCustomRepo(TaonCmsContentRepository);
1782
2264
  this.taonSessionRepository = this.injectCustomRepo(TaonSessionRepository);
1783
2265
  this.taonAuthContextRepository = this.injectCustomRepo(TaonAuthContextRepository);
2266
+ this.taonCmsContentRepository = this.injectCustomRepo(TaonCmsContentRepository);
2267
+ this.taonSessionProvider = this.injectProvider(TaonSessionProvider);
1784
2268
  }
1785
2269
  async beforeEachRequest({ req, res, methodConfig, t, }) {
1786
2270
  /* */
@@ -1798,83 +2282,480 @@ let TaonCmsContentController = class TaonCmsContentController extends TaonBaseCr
1798
2282
  /* */
1799
2283
  /* */
1800
2284
  /* */
2285
+ /* */
1801
2286
  return (void 0);
1802
2287
  }
1803
- //#region get by id
1804
- getBySlug(slug) {
1805
- //#region @websqlFunc
1806
- return async () => {
1807
- const model = await this.db.findOne({
1808
- where: {
1809
- slug,
1810
- },
1811
- });
1812
- return model;
1813
- };
1814
- //#endregion
1815
- }
1816
- //#endregion
1817
- createContent(input) {
1818
- //#region @websqlFunc
1819
- return async () => this.taonCmsContentRepository.createContent(input);
1820
- //#endregion
2288
+ async handleUploadFiles(files, queryParams, req, res) {
2289
+ /* */
2290
+ /* */
2291
+ /* */
2292
+ /* */
2293
+ /* */
2294
+ /* */
2295
+ /* */
2296
+ /* */
2297
+ /* */
2298
+ /* */
2299
+ /* */
2300
+ /* */
2301
+ /* */
2302
+ /* */
2303
+ /* */
2304
+ /* */
2305
+ /* */
2306
+ /* */
2307
+ /* */
2308
+ /* */
2309
+ /* */
2310
+ /* */
2311
+ /* */
2312
+ /* */
2313
+ /* */
2314
+ /* */
2315
+ /* */
2316
+ /* */
2317
+ /* */
2318
+ /* */
2319
+ /* */
2320
+ /* */
2321
+ /* */
2322
+ /* */
2323
+ /* */
2324
+ return (void 0);
1821
2325
  }
1822
- updateContent(id, input) {
1823
- //#region @websqlFunc
1824
- return async () => this.taonCmsContentRepository.updateContent(id, input);
1825
- //#endregion
2326
+ afterFileUploadHook() { }
2327
+ async isMediaObjectAvailable(key) {
2328
+ /* */
2329
+ /* */
2330
+ return (void 0);
1826
2331
  }
1827
- deleteContent(id, expectedVersion) {
2332
+ buildStorageDownloadUrl(options) {
1828
2333
  //#region @websqlFunc
1829
- return async () => this.taonCmsContentRepository.archiveContent(id, expectedVersion);
2334
+ if (!this.ctx) {
2335
+ console.trace(`[buildStorageDownloadUrl] accessing without context`);
2336
+ return;
2337
+ }
2338
+ const isLocalhost = this.ctx.frontendHostUri.origin.includes('://localhost:');
2339
+ const urlFromMehtod = this.getThisControllerMethodFullUrl('download');
2340
+ // console.log({ urlFromMehtod });
2341
+ const url = new URL(urlFromMehtod);
2342
+ url.search = '';
2343
+ url.searchParams.set('key', options.key);
2344
+ if (options.token) {
2345
+ url.searchParams.set('token', options.token);
2346
+ }
2347
+ if (options.download) {
2348
+ url.searchParams.set('download', 'true');
2349
+ }
2350
+ return (`${isLocalhost ? this.ctx.uri.origin : this.ctx.frontendHostUri.origin}` +
2351
+ `${url.pathname}${url.search}`);
1830
2352
  //#endregion
1831
2353
  }
1832
- restoreContent(id, input) {
1833
- //#region @websqlFunc
1834
- return async () => this.taonCmsContentRepository.restoreContent(id, input);
1835
- //#endregion
2354
+ async createStorageDownloadToken(options) {
2355
+ /* */
2356
+ /* */
2357
+ /* */
2358
+ /* */
2359
+ /* */
2360
+ /* */
2361
+ /* */
2362
+ /* */
2363
+ /* */
2364
+ /* */
2365
+ /* */
2366
+ /* */
2367
+ /* */
2368
+ /* */
2369
+ /* */
2370
+ /* */
2371
+ return (void 0);
1836
2372
  }
1837
- listRelatedPosts(id) {
1838
- //#region @websqlFunc
1839
- return async () => this.taonCmsContentRepository.listRelatedPosts(id);
2373
+ async verifyStorageDownloadToken(options) {
2374
+ /* */
2375
+ /* */
2376
+ /* */
2377
+ /* */
2378
+ /* */
2379
+ /* */
2380
+ /* */
2381
+ /* */
2382
+ /* */
2383
+ /* */
2384
+ /* */
2385
+ /* */
2386
+ /* */
2387
+ /* */
2388
+ /* */
2389
+ return (void 0);
2390
+ }
2391
+ async isPublicStorageKey(key) {
2392
+ /* */
2393
+ /* */
2394
+ return (void 0);
2395
+ }
2396
+ };
2397
+ TaonCmsContentStorageController = __decorate([
2398
+ TaonController({
2399
+ className: 'TaonCmsContentStorageController',
2400
+ // allowedMethods: ['download', 'uploadFormDataToServer'],
2401
+ })
2402
+ ], TaonCmsContentStorageController);
2403
+
2404
+ //#endregion
2405
+ let TaonCmsContentController = class TaonCmsContentController extends TaonBaseCrudController {
2406
+ constructor() {
2407
+ super(...arguments);
2408
+ //#region fields & getters
2409
+ this.entityClassResolveFn = () => TaonCmsContentEntity;
2410
+ this.taonCmsContentRepository = this.injectCustomRepo(TaonCmsContentRepository);
2411
+ this.taonSessionRepository = this.injectCustomRepo(TaonSessionRepository);
2412
+ this.taonAuthContextRepository = this.injectCustomRepo(TaonAuthContextRepository);
2413
+ this.taonCmsContentStorageController = this.injectController(TaonCmsContentStorageController);
2414
+ //#endregion
2415
+ }
2416
+ //#endregion
2417
+ //#region methods / before each request
2418
+ async beforeEachRequest({ req, res, methodConfig, t, }) {
2419
+ /* */
2420
+ /* */
2421
+ /* */
2422
+ /* */
2423
+ /* */
2424
+ /* */
2425
+ /* */
2426
+ /* */
2427
+ /* */
2428
+ /* */
2429
+ /* */
2430
+ /* */
2431
+ /* */
2432
+ /* */
2433
+ /* */
2434
+ /* */
2435
+ /* */
2436
+ /* */
2437
+ /* */
2438
+ /* */
2439
+ /* */
2440
+ /* */
2441
+ /* */
2442
+ /* */
2443
+ /* */
2444
+ /* */
2445
+ /* */
2446
+ /* */
2447
+ /* */
2448
+ /* */
2449
+ /* */
2450
+ /* */
2451
+ return (void 0);
2452
+ }
2453
+ //#endregion
2454
+ //#region methods / get video link by slug
2455
+ getVideoLinkBySlug(slug) {
2456
+ //#region @websqlFunc
2457
+ return (req, _res, { t }) => this.getMediaLinkBySlug(slug, 'video', false, req, t);
2458
+ //#endregion
2459
+ }
2460
+ //#region methods / get public video link by slug
2461
+ getPublicVideoLinkBySlug(slug) {
2462
+ //#region @websqlFunc
2463
+ return (req, _res, { t }) => this.getMediaLinkBySlug(slug, 'video', true, req, t);
2464
+ //#endregion
2465
+ }
2466
+ //#endregion
2467
+ //#region methods / get audio link by slug
2468
+ getAudioLinkBySlug(slug) {
2469
+ //#region @websqlFunc
2470
+ return (req, _res, { t }) => this.getMediaLinkBySlug(slug, 'audio', false, req, t);
2471
+ //#endregion
2472
+ }
2473
+ //#endregion
2474
+ //#region methods / get public audio link by slug
2475
+ getPublicAudioLinkBySlug(slug) {
2476
+ //#region @websqlFunc
2477
+ return (req, _res, { t }) => this.getMediaLinkBySlug(slug, 'audio', true, req, t);
2478
+ //#endregion
2479
+ }
2480
+ //#endregion
2481
+ //#region methods / get attachment link by slug
2482
+ getAttachmentLinkBySlug(slug) {
2483
+ //#region @websqlFunc
2484
+ return (req, _res, { t }) => this.getMediaLinkBySlug(slug, 'attachment', false, req, t);
2485
+ //#endregion
2486
+ }
2487
+ //#endregion
2488
+ //#region methods / get public attachment link by slug
2489
+ getPublicAttachmentLinkBySlug(slug) {
2490
+ //#region @websqlFunc
2491
+ return (req, _res, { t }) => this.getMediaLinkBySlug(slug, 'attachment', true, req, t);
2492
+ //#endregion
2493
+ }
2494
+ //#endregion
2495
+ //#endregion
2496
+ //#region methods / get media link
2497
+ getThumbnailLinkBySlug(slug) {
2498
+ //#region @websqlFunc
2499
+ return (req, _res, { t }) => this.getMediaLinkBySlug(slug, 'thumbnail', false, req, t);
2500
+ //#endregion
2501
+ }
2502
+ getPublicThumbnailLinkBySlug(slug) {
2503
+ //#region @websqlFunc
2504
+ return (req, _res, { t }) => this.getMediaLinkBySlug(slug, 'thumbnail', true, req, t);
2505
+ //#endregion
2506
+ }
2507
+ listTagIds(id) {
2508
+ //#region @websqlFunc
2509
+ return async () => this.taonCmsContentRepository.listTagIds(id);
2510
+ //#endregion
2511
+ }
2512
+ async getMediaLinkBySlug(slug, type, publicOnly, req, t) {
2513
+ //#region @websqlFunc
2514
+ const content = await this.taonCmsContentRepository.getContentBySlugForMedia(slug);
2515
+ if (!content) {
2516
+ contentError(t.gettext('Content was not found.'), 404);
2517
+ }
2518
+ const field = type === 'video'
2519
+ ? 'videoKey'
2520
+ : type === 'audio'
2521
+ ? 'audioKey'
2522
+ : type === 'thumbnail'
2523
+ ? 'thumbnailKey'
2524
+ : 'attachmentKey';
2525
+ const key = content[field];
2526
+ if (!key) {
2527
+ contentError(t.gettext('Content has no [[ type ]] media.', { type }), 404);
2528
+ }
2529
+ if (!(await this.taonCmsContentStorageController.isMediaObjectAvailable(key))) {
2530
+ contentError(t.gettext('The media file was not found in storage.'), 404);
2531
+ }
2532
+ await this.requireReadAccess(content, publicOnly, req, t);
2533
+ const isPrivate = !publicOnly;
2534
+ const token = isPrivate
2535
+ ? await this.taonCmsContentStorageController.createStorageDownloadToken({
2536
+ key: key,
2537
+ expiresAt: Date.now() + 5 * 60 * 1000,
2538
+ })
2539
+ : undefined;
2540
+ return this.taonCmsContentStorageController.buildStorageDownloadUrl({
2541
+ req,
2542
+ key: key,
2543
+ private: isPrivate,
2544
+ token,
2545
+ download: type === 'attachment',
2546
+ });
2547
+ //#endregion
2548
+ }
2549
+ //#region methods / require read access
2550
+ async requireReadAccess(content, publicOnly, req, t) {
2551
+ //#region @websqlFunc
2552
+ const { permissions } = await this.taonCmsContentRepository.getPermissionConfiguration(content.id);
2553
+ const isPublic = content.status === 'published' && permissions.length === 0;
2554
+ if (publicOnly) {
2555
+ if (!isPublic) {
2556
+ contentError(t.gettext('This content is not publicly accessible.'), 403);
2557
+ }
2558
+ }
2559
+ else {
2560
+ await this.taonSessionRepository.throwIfNotAuthenticated({ req });
2561
+ const context = await this.taonAuthContextRepository.getContext(req.userId, req.sessionId);
2562
+ const userPermissionCodes = new Set(context?.permissions ?? []);
2563
+ const hasPermission = permissions.some(permission => userPermissionCodes.has(permission.code));
2564
+ if (!context?.isSuperUser && !isPublic && !hasPermission) {
2565
+ contentError(t.gettext('You do not have access to this content.'), 403);
2566
+ }
2567
+ }
2568
+ //#endregion
2569
+ }
2570
+ //#endregion
2571
+ //#endregion
2572
+ //#region methods / get by id
2573
+ getBySlug(slug) {
2574
+ //#region @websqlFunc
2575
+ return async () => {
2576
+ const model = await this.db.findOne({
2577
+ where: {
2578
+ slug,
2579
+ },
2580
+ });
2581
+ return model;
2582
+ };
2583
+ //#endregion
2584
+ }
2585
+ //#endregion
2586
+ //#region methods / create content
2587
+ createContent(input) {
2588
+ //#region @websqlFunc
2589
+ return async () => this.taonCmsContentRepository.createContent(input);
2590
+ //#endregion
2591
+ }
2592
+ //#endregion
2593
+ //#region methods / update content
2594
+ updateContent(id, input) {
2595
+ //#region @websqlFunc
2596
+ return async () => this.taonCmsContentRepository.updateContent(id, input);
1840
2597
  //#endregion
1841
2598
  }
2599
+ //#endregion
2600
+ duplicateContent(id) {
2601
+ //#region @websqlFunc
2602
+ return async () => this.taonCmsContentRepository.duplicateContent(id);
2603
+ //#endregion
2604
+ }
2605
+ //#region methods / delete content
2606
+ deleteContent(id, expectedVersion) {
2607
+ //#region @websqlFunc
2608
+ return async () => this.taonCmsContentRepository.archiveContent(id, expectedVersion);
2609
+ //#endregion
2610
+ }
2611
+ //#endregion
2612
+ //#region methods / restore content
2613
+ restoreContent(id, input) {
2614
+ //#region @websqlFunc
2615
+ return async () => this.taonCmsContentRepository.restoreContent(id, input);
2616
+ //#endregion
2617
+ }
2618
+ //#endregion
2619
+ //#region methods / list related posts
2620
+ listRelatedPosts(id) {
2621
+ //#region @websqlFunc
2622
+ return async () => this.taonCmsContentRepository.listRelatedPosts(id);
2623
+ //#endregion
2624
+ }
2625
+ //#endregion
2626
+ //#region methods / list permissions
1842
2627
  listPermissions(id) {
1843
2628
  //#region @websqlFunc
1844
2629
  return async () => this.taonCmsContentRepository.listPermissions(id);
1845
2630
  //#endregion
1846
2631
  }
2632
+ //#endregion
2633
+ //#region methods / get permission configuration
2634
+ getPermissionConfiguration(id) {
2635
+ //#region @websqlFunc
2636
+ return async () => this.taonCmsContentRepository.getPermissionConfiguration(id);
2637
+ //#endregion
2638
+ }
2639
+ //#endregion
2640
+ //#region methods / list application hooks
1847
2641
  listApplicationHooks() {
1848
2642
  //#region @websqlFunc
1849
2643
  return async () => this.taonCmsContentRepository.listApplicationHooks();
1850
2644
  //#endregion
1851
2645
  }
2646
+ //#endregion
2647
+ //#region methods / get content by hook
1852
2648
  getContentByHook(hook) {
1853
2649
  //#region @websqlFunc
1854
- return async () => this.taonCmsContentRepository.getContentByHook(hook);
2650
+ return async (req, _res, { t }) => {
2651
+ const content = await this.taonCmsContentRepository.getContentForHook(hook);
2652
+ if (!content) {
2653
+ return '';
2654
+ }
2655
+ await this.requireReadAccess(content, false, req, t);
2656
+ return content.body ?? '';
2657
+ };
1855
2658
  //#endregion
1856
2659
  }
2660
+ //#endregion
2661
+ //#region methods / get public content by hook
1857
2662
  getPublicContentByHook(hook) {
1858
2663
  //#region @websqlFunc
1859
- return async () => this.taonCmsContentRepository.getContentByHook(hook);
2664
+ return async (req, _res, { t }) => {
2665
+ const content = await this.taonCmsContentRepository.getContentForHook(hook);
2666
+ if (!content) {
2667
+ return '';
2668
+ }
2669
+ await this.requireReadAccess(content, true, req, t);
2670
+ return content.body ?? '';
2671
+ };
1860
2672
  //#endregion
1861
2673
  }
2674
+ //#endregion
2675
+ //#region methods / add related post
1862
2676
  addRelatedPost(id, relatedPostId, expectedVersion) {
1863
2677
  //#region @websqlFunc
1864
2678
  return async () => this.taonCmsContentRepository.addRelatedPost(id, relatedPostId, expectedVersion);
1865
2679
  //#endregion
1866
2680
  }
2681
+ //#endregion
2682
+ //#region methods / delete related post
1867
2683
  deleteRelatedPost(id, relatedPostId, expectedVersion) {
1868
2684
  //#region @websqlFunc
1869
2685
  return async () => this.taonCmsContentRepository.deleteRelatedPost(id, relatedPostId, expectedVersion);
1870
2686
  //#endregion
1871
2687
  }
2688
+ //#endregion
2689
+ //#region methods / list revisions
1872
2690
  listRevisions(id) {
1873
2691
  //#region @websqlFunc
1874
2692
  return async () => this.taonCmsContentRepository.listRevisions(id);
1875
2693
  //#endregion
1876
2694
  }
1877
2695
  };
2696
+ __decorate([
2697
+ GET(),
2698
+ __param(0, Query('slug')),
2699
+ __metadata("design:type", Function),
2700
+ __metadata("design:paramtypes", [String]),
2701
+ __metadata("design:returntype", Object)
2702
+ ], TaonCmsContentController.prototype, "getVideoLinkBySlug", null);
2703
+ __decorate([
2704
+ GET(),
2705
+ __param(0, Query('slug')),
2706
+ __metadata("design:type", Function),
2707
+ __metadata("design:paramtypes", [String]),
2708
+ __metadata("design:returntype", Object)
2709
+ ], TaonCmsContentController.prototype, "getPublicVideoLinkBySlug", null);
2710
+ __decorate([
2711
+ GET(),
2712
+ __param(0, Query('slug')),
2713
+ __metadata("design:type", Function),
2714
+ __metadata("design:paramtypes", [String]),
2715
+ __metadata("design:returntype", Object)
2716
+ ], TaonCmsContentController.prototype, "getAudioLinkBySlug", null);
2717
+ __decorate([
2718
+ GET(),
2719
+ __param(0, Query('slug')),
2720
+ __metadata("design:type", Function),
2721
+ __metadata("design:paramtypes", [String]),
2722
+ __metadata("design:returntype", Object)
2723
+ ], TaonCmsContentController.prototype, "getPublicAudioLinkBySlug", null);
2724
+ __decorate([
2725
+ GET(),
2726
+ __param(0, Query('slug')),
2727
+ __metadata("design:type", Function),
2728
+ __metadata("design:paramtypes", [String]),
2729
+ __metadata("design:returntype", Object)
2730
+ ], TaonCmsContentController.prototype, "getAttachmentLinkBySlug", null);
2731
+ __decorate([
2732
+ GET(),
2733
+ __param(0, Query('slug')),
2734
+ __metadata("design:type", Function),
2735
+ __metadata("design:paramtypes", [String]),
2736
+ __metadata("design:returntype", Object)
2737
+ ], TaonCmsContentController.prototype, "getPublicAttachmentLinkBySlug", null);
2738
+ __decorate([
2739
+ GET(),
2740
+ __param(0, Query('slug')),
2741
+ __metadata("design:type", Function),
2742
+ __metadata("design:paramtypes", [String]),
2743
+ __metadata("design:returntype", Object)
2744
+ ], TaonCmsContentController.prototype, "getThumbnailLinkBySlug", null);
2745
+ __decorate([
2746
+ GET(),
2747
+ __param(0, Query('slug')),
2748
+ __metadata("design:type", Function),
2749
+ __metadata("design:paramtypes", [String]),
2750
+ __metadata("design:returntype", Object)
2751
+ ], TaonCmsContentController.prototype, "getPublicThumbnailLinkBySlug", null);
2752
+ __decorate([
2753
+ GET(),
2754
+ __param(0, Query('id')),
2755
+ __metadata("design:type", Function),
2756
+ __metadata("design:paramtypes", [Number]),
2757
+ __metadata("design:returntype", Object)
2758
+ ], TaonCmsContentController.prototype, "listTagIds", null);
1878
2759
  __decorate([
1879
2760
  GET(),
1880
2761
  __param(0, Query(`slug`)),
@@ -1897,6 +2778,13 @@ __decorate([
1897
2778
  __metadata("design:paramtypes", [Number, Object]),
1898
2779
  __metadata("design:returntype", Object)
1899
2780
  ], TaonCmsContentController.prototype, "updateContent", null);
2781
+ __decorate([
2782
+ POST(),
2783
+ __param(0, Query('id')),
2784
+ __metadata("design:type", Function),
2785
+ __metadata("design:paramtypes", [Number]),
2786
+ __metadata("design:returntype", Object)
2787
+ ], TaonCmsContentController.prototype, "duplicateContent", null);
1900
2788
  __decorate([
1901
2789
  DELETE(),
1902
2790
  __param(0, Query('id')),
@@ -1927,6 +2815,13 @@ __decorate([
1927
2815
  __metadata("design:paramtypes", [Number]),
1928
2816
  __metadata("design:returntype", Object)
1929
2817
  ], TaonCmsContentController.prototype, "listPermissions", null);
2818
+ __decorate([
2819
+ GET(),
2820
+ __param(0, Query('id')),
2821
+ __metadata("design:type", Function),
2822
+ __metadata("design:paramtypes", [Number]),
2823
+ __metadata("design:returntype", Object)
2824
+ ], TaonCmsContentController.prototype, "getPermissionConfiguration", null);
1930
2825
  __decorate([
1931
2826
  GET(),
1932
2827
  __metadata("design:type", Function),
@@ -1974,24 +2869,37 @@ __decorate([
1974
2869
  ], TaonCmsContentController.prototype, "listRevisions", null);
1975
2870
  TaonCmsContentController = __decorate([
1976
2871
  TaonController({
2872
+ //#region controller options
1977
2873
  className: 'TaonCmsContentController',
1978
2874
  allowedMethods: [
1979
2875
  'getAll',
1980
2876
  'getBy',
1981
2877
  'createContent',
2878
+ 'duplicateContent',
1982
2879
  'updateContent',
1983
2880
  'deleteContent',
1984
2881
  'restoreContent',
1985
2882
  'listRevisions',
1986
2883
  'listRelatedPosts',
1987
2884
  'listPermissions',
2885
+ 'getPermissionConfiguration',
1988
2886
  'listApplicationHooks',
1989
2887
  'getContentByHook',
1990
2888
  'getPublicContentByHook',
2889
+ 'getVideoLinkBySlug',
2890
+ 'getPublicVideoLinkBySlug',
2891
+ 'getAudioLinkBySlug',
2892
+ 'getPublicAudioLinkBySlug',
2893
+ 'getAttachmentLinkBySlug',
2894
+ 'getPublicAttachmentLinkBySlug',
2895
+ 'getThumbnailLinkBySlug',
2896
+ 'getPublicThumbnailLinkBySlug',
2897
+ 'listTagIds',
1991
2898
  'addRelatedPost',
1992
2899
  'deleteRelatedPost',
1993
2900
  'paginationQuery',
1994
2901
  ],
2902
+ //#endregion
1995
2903
  })
1996
2904
  ], TaonCmsContentController);
1997
2905
 
@@ -2036,34 +2944,6 @@ TaonCmsContentSubscriber = __decorate([
2036
2944
  })
2037
2945
  ], TaonCmsContentSubscriber);
2038
2946
 
2039
- //#endregion
2040
- let TaonCmsContentStorageController = class TaonCmsContentStorageController extends TaonBaseStorageController {
2041
- async handleUploadFiles(files, queryParams, req, res) {
2042
- /* */
2043
- /* */
2044
- /* */
2045
- /* */
2046
- /* */
2047
- /* */
2048
- /* */
2049
- /* */
2050
- return (void 0);
2051
- }
2052
- afterFileUploadHook() { }
2053
- buildStorageDownloadUrl() {
2054
- throw new Error('Use the download endpoint for CMS media.');
2055
- }
2056
- async createStorageDownloadToken() {
2057
- throw new Error('CMS media download tokens are not enabled.');
2058
- }
2059
- };
2060
- TaonCmsContentStorageController = __decorate([
2061
- TaonController({
2062
- className: 'TaonCmsContentStorageController',
2063
- allowedMethods: ['exists', 'download', 'getMetadata', 'uploadFormDataToServer'],
2064
- })
2065
- ], TaonCmsContentStorageController);
2066
-
2067
2947
  //#region imports
2068
2948
  //#endregion
2069
2949
  const TaonCmsContentAbstractContext = createContext(() => ({
@@ -2482,34 +3362,426 @@ const TaonCmsAbstractContext = createContext(() => ({
2482
3362
  }));
2483
3363
  // THIS FILE IS GENERATED - DO NOT MODIFY
2484
3364
 
3365
+ const progressCallbacks = new WeakMap();
3366
+ // Keep Taon's middleware, retries and response decoding; replace only the
3367
+ // final Fetch transport for uploads that request browser upload events.
3368
+ function trackCmsUpload(url, body, onProgress) {
3369
+ const key = `cms-upload-progress-POST-${new URL(url).pathname}`;
3370
+ if (!Resource__NS__methodsInterceptors.has(key)) {
3371
+ Resource__NS__methodsInterceptors.set(key, {
3372
+ intercept: ({ req, next }) => {
3373
+ if (!(req.body instanceof FormData)) {
3374
+ return next.handle(req);
3375
+ }
3376
+ const uploadBody = req.body;
3377
+ const callback = progressCallbacks.get(uploadBody);
3378
+ if (!callback) {
3379
+ return next.handle(req);
3380
+ }
3381
+ return new Observable(subscriber => {
3382
+ const xhr = new XMLHttpRequest();
3383
+ xhr.open(req.method || 'POST', req.url);
3384
+ xhr.withCredentials = req.credentials === 'include';
3385
+ new Headers(req.headers).forEach((value, name) => {
3386
+ // The browser must supply the multipart boundary.
3387
+ if (name.toLowerCase() !== 'content-type') {
3388
+ xhr.setRequestHeader(name, value);
3389
+ }
3390
+ });
3391
+ xhr.upload.onprogress = event => {
3392
+ if (event.lengthComputable && event.total > 0) {
3393
+ callback(Math.min(100, Math.floor((event.loaded * 100) / event.total)));
3394
+ }
3395
+ };
3396
+ xhr.onload = () => {
3397
+ const headers = new Headers();
3398
+ for (const line of xhr
3399
+ .getAllResponseHeaders()
3400
+ .trim()
3401
+ .split(/[\r\n]+/)) {
3402
+ const separator = line.indexOf(':');
3403
+ if (separator > 0) {
3404
+ headers.append(line.slice(0, separator), line.slice(separator + 1).trim());
3405
+ }
3406
+ }
3407
+ subscriber.next(new Response([204, 205, 304].includes(xhr.status) ? null : xhr.responseText, {
3408
+ status: xhr.status,
3409
+ statusText: xhr.statusText,
3410
+ headers,
3411
+ }));
3412
+ subscriber.complete();
3413
+ };
3414
+ xhr.onerror = () => subscriber.error(new Error('Media upload network error.'));
3415
+ xhr.ontimeout = () => subscriber.error(new Error('Media upload timed out.'));
3416
+ xhr.onabort = () => subscriber.error(new Error('Media upload was cancelled.'));
3417
+ const abort = () => xhr.abort();
3418
+ req.signal?.addEventListener('abort', abort, { once: true });
3419
+ if (req.signal?.aborted) {
3420
+ subscriber.error(new Error('Media upload was cancelled.'));
3421
+ }
3422
+ else {
3423
+ callback(0);
3424
+ xhr.send(uploadBody);
3425
+ }
3426
+ return () => {
3427
+ req.signal?.removeEventListener('abort', abort);
3428
+ if (xhr.readyState !== XMLHttpRequest.DONE) {
3429
+ xhr.abort();
3430
+ }
3431
+ };
3432
+ });
3433
+ },
3434
+ });
3435
+ }
3436
+ progressCallbacks.set(body, onProgress);
3437
+ return () => progressCallbacks.delete(body);
3438
+ }
3439
+
3440
+ //#region imports
3441
+ //#endregion
3442
+ class TaonCmsContentApiService extends TaonBaseAngularService {
3443
+ constructor() {
3444
+ super(...arguments);
3445
+ //#region fields & getters
3446
+ this.taonCmsContentController = this.injectController(TaonCmsContentController);
3447
+ this.taonCmsContentStorageController = this.injectController(TaonCmsContentStorageController);
3448
+ }
3449
+ get crudController() {
3450
+ return this.taonCmsContentController;
3451
+ }
3452
+ //#endregion
3453
+ //#region API / get by id
3454
+ async getById(id) {
3455
+ return (await this.taonCmsContentController.getBy(id).request()).body.json;
3456
+ }
3457
+ //#endregion
3458
+ //#region API / get by slug
3459
+ async getBySlug(slug) {
3460
+ return (await this.taonCmsContentController.getBySlug(slug).request()).body
3461
+ .json;
3462
+ }
3463
+ //#endregion
3464
+ //#region API / get video link by slug
3465
+ /**
3466
+ * Get link to private video
3467
+ */
3468
+ getVideoLinkBySlug(slug) {
3469
+ return this.taonCmsContentController
3470
+ .getVideoLinkBySlug(slug)
3471
+ .request()
3472
+ .observable.pipe(map(res => res.body.text), catchError(err => {
3473
+ console.error(err);
3474
+ return of('');
3475
+ }));
3476
+ }
3477
+ //#endregion
3478
+ //#region API / get public video link by slug
3479
+ async getPublicVideoLinkBySlug(slug) {
3480
+ return (await this.taonCmsContentController
3481
+ .getPublicVideoLinkBySlug(slug)
3482
+ .request()).body.text;
3483
+ }
3484
+ //#endregion
3485
+ //#region API / get audio link by slug
3486
+ getAudioLinkBySlug(slug) {
3487
+ return this.taonCmsContentController
3488
+ .getAudioLinkBySlug(slug)
3489
+ .request()
3490
+ .observable.pipe(map(res => res.body.text), catchError(err => {
3491
+ console.error(err);
3492
+ return of('');
3493
+ }));
3494
+ }
3495
+ //#endregion
3496
+ //#region API / get public audio link by slug
3497
+ async getPublicAudioLinkBySlug(slug) {
3498
+ return (await this.taonCmsContentController
3499
+ .getPublicAudioLinkBySlug(slug)
3500
+ .request()).body.text;
3501
+ }
3502
+ //#endregion
3503
+ //#region API / get attachment link by slug
3504
+ async getAttachmentLinkBySlug(slug) {
3505
+ return (await this.taonCmsContentController
3506
+ .getAttachmentLinkBySlug(slug)
3507
+ .request()).body.text;
3508
+ }
3509
+ //#endregion
3510
+ //#region API / get public attachment link by slug
3511
+ async getPublicAttachmentLinkBySlug(slug) {
3512
+ return (await this.taonCmsContentController
3513
+ .getPublicAttachmentLinkBySlug(slug)
3514
+ .request()).body.text;
3515
+ }
3516
+ //#endregion
3517
+ //#region API / get content by hook
3518
+ getContentByHook(hook) {
3519
+ return this.taonCmsContentController.getContentByHook(hook)
3520
+ .request().observable.pipe(map(res => res.body.text));
3521
+ }
3522
+ //#endregion
3523
+ //#region API / get public content by hook
3524
+ getPublicContentByHook(hook) {
3525
+ return this.taonCmsContentController.getPublicContentByHook(hook)
3526
+ .request().observable.pipe(map(res => res.body.text), catchError(() => of('---')));
3527
+ }
3528
+ //#endregion
3529
+ //#region API / list application hooks
3530
+ listApplicationHooks() {
3531
+ return this.taonCmsContentController.listApplicationHooks()
3532
+ .request().observable.pipe(map(res => res.body.json));
3533
+ }
3534
+ //#endregion
3535
+ //#region API / upload media
3536
+ async uploadMedia(file, onProgress) {
3537
+ const formData = new FormData();
3538
+ formData.append('file', file);
3539
+ const stopTracking = onProgress
3540
+ ? trackCmsUpload(this.taonCmsContentStorageController.getThisControllerMethodFullUrl('uploadFormDataToServer'), formData, onProgress)
3541
+ : undefined;
3542
+ try {
3543
+ const response = await this.taonCmsContentStorageController
3544
+ .uploadFormDataToServer(formData)
3545
+ .request();
3546
+ const objects = response.body.json;
3547
+ if (!Array.isArray(objects) || objects.length !== 1 || !objects[0]?.key) {
3548
+ throw new Error('The upload did not return a media key.');
3549
+ }
3550
+ onProgress?.(100);
3551
+ return objects[0];
3552
+ }
3553
+ finally {
3554
+ stopTracking?.();
3555
+ }
3556
+ }
3557
+ //#endregion
3558
+ //#region API / list assets
3559
+ listAssets() {
3560
+ return this.taonCmsContentStorageController
3561
+ .list({})
3562
+ .request()
3563
+ .observable.pipe(map(res => res.body.json));
3564
+ }
3565
+ //#endregion
3566
+ //#region API / get asset url
3567
+ async getAssetUrl(key) {
3568
+ return (await this.taonCmsContentStorageController
3569
+ .getPrivateUrl(key, { expiresInSeconds: 5 * 60 })
3570
+ .request()).body.text;
3571
+ }
3572
+ //#endregion
3573
+ //#region API / create content
3574
+ listTagIds(id) {
3575
+ return this.taonCmsContentController
3576
+ .listTagIds(id)
3577
+ .request()
3578
+ .observable.pipe(map(res => res.body.json));
3579
+ }
3580
+ async getThumbnailLinkBySlug(slug, publicOnly = false) {
3581
+ const response = publicOnly
3582
+ ? await this.taonCmsContentController
3583
+ .getPublicThumbnailLinkBySlug(slug)
3584
+ .request()
3585
+ : await this.taonCmsContentController
3586
+ .getThumbnailLinkBySlug(slug)
3587
+ .request();
3588
+ return response.body.text;
3589
+ }
3590
+ createContent(input) {
3591
+ return this.taonCmsContentController.createContent(input)
3592
+ .request().observable.pipe(map(res => res.body.json));
3593
+ }
3594
+ //#endregion
3595
+ //#region API / duplicate content
3596
+ duplicateContent(id) {
3597
+ return this.taonCmsContentController.duplicateContent(id)
3598
+ .request().observable.pipe(map(res => res.body.json));
3599
+ }
3600
+ //#endregion
3601
+ //#region API / update content
3602
+ updateContent(id, input) {
3603
+ return this.taonCmsContentController.updateContent(id, input)
3604
+ .request().observable.pipe(map(res => res.body.json));
3605
+ }
3606
+ //#endregion
3607
+ //#region API / delete content
3608
+ deleteContent(id, expectedVersion) {
3609
+ return this.taonCmsContentController.deleteContent(id, expectedVersion)
3610
+ .request().observable.pipe(map(res => res.body.json));
3611
+ }
3612
+ //#endregion
3613
+ //#region API / restore content
3614
+ restoreContent(id, input) {
3615
+ return this.taonCmsContentController.restoreContent(id, input)
3616
+ .request().observable.pipe(map(res => res.body.json));
3617
+ }
3618
+ //#endregion
3619
+ //#region API / list revisions
3620
+ listRevisions(id) {
3621
+ return this.taonCmsContentController.listRevisions(id)
3622
+ .request().observable.pipe(map(res => res.body.json));
3623
+ }
3624
+ //#endregion
3625
+ //#region API / list related posts
3626
+ listRelatedPosts(id) {
3627
+ return this.taonCmsContentController.listRelatedPosts(id)
3628
+ .request().observable.pipe(map(res => res.body.json));
3629
+ }
3630
+ //#endregion
3631
+ //#region API / list permissions
3632
+ listPermissions(id) {
3633
+ return this.taonCmsContentController.listPermissions(id)
3634
+ .request().observable.pipe(map(res => res.body.json));
3635
+ }
3636
+ //#endregion
3637
+ //#region API / get permission configuration
3638
+ getPermissionConfiguration(id) {
3639
+ return this.taonCmsContentController.getPermissionConfiguration(id)
3640
+ .request().observable.pipe(map(res => res.body.json));
3641
+ }
3642
+ //#endregion
3643
+ //#region API / add related post
3644
+ addRelatedPost(id, relatedPostId, expectedVersion) {
3645
+ return this.taonCmsContentController.addRelatedPost(id, relatedPostId, expectedVersion).request().observable.pipe(map(res => res.body.json));
3646
+ }
3647
+ //#endregion
3648
+ //#region API / delete related post
3649
+ deleteRelatedPost(id, relatedPostId, expectedVersion) {
3650
+ return this.taonCmsContentController.deleteRelatedPost(id, relatedPostId, expectedVersion).request().observable.pipe(map(res => res.body.json));
3651
+ }
3652
+ //#endregion
3653
+ //#region API / get all entites
3654
+ /**
3655
+ * TODO not good idea if manu posts - refactor later:
3656
+ * - add pagination for post selector
3657
+ */
3658
+ get allMyEntities$() {
3659
+ return this.taonCmsContentController.getAll().request().observable.pipe(map(res => res.body?.json));
3660
+ }
3661
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentApiService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
3662
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentApiService }); }
3663
+ }
3664
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentApiService, decorators: [{
3665
+ type: Injectable
3666
+ }] });
3667
+
3668
+ const t$a = Translation.for('src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts', { "src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.html": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-asset-preview.component.html.en-US.i18n.data-CHC8Rpav.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-asset-preview.component.html.pl-PL.i18n.data-Dsra3EeZ.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-asset-preview.component.html.de-DE.i18n.data-D-t_ndXn.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-asset-preview.component.ts.en-US.i18n.data-N_2QUNLq.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-asset-preview.component.ts.pl-PL.i18n.data-BqRkgB92.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-asset-preview.component.ts.de-DE.i18n.data-DT7qFf7D.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-assets-backoffice.component.html.en-US.i18n.data-DSG7SK4m.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-assets-backoffice.component.html.pl-PL.i18n.data-Bs8amcIs.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-assets-backoffice.component.html.de-DE.i18n.data-ByVH6z2Z.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-assets-backoffice.component.ts.en-US.i18n.data-DjKWwkMP.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data-Cvak6-ec.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-assets-backoffice.component.ts.de-DE.i18n.data-DGADylre.mjs')).default } });
3669
+ class TaonCmsAssetPreviewComponent {
3670
+ constructor() {
3671
+ this.t = t$a.for(this);
3672
+ this.api = inject(TaonCmsContentApiService);
3673
+ this.destroyRef = inject(DestroyRef);
3674
+ this.url = signal('', ...(ngDevMode ? [{ debugName: "url" }] : []));
3675
+ this.loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
3676
+ this.error = signal('', ...(ngDevMode ? [{ debugName: "error" }] : []));
3677
+ }
3678
+ get previewKind() {
3679
+ const contentType = this.asset.contentType?.trim().toLowerCase();
3680
+ if (contentType?.startsWith('video/')) {
3681
+ return 'video';
3682
+ }
3683
+ if (contentType?.startsWith('audio/')) {
3684
+ return 'audio';
3685
+ }
3686
+ return 'attachment';
3687
+ }
3688
+ ngOnInit() {
3689
+ void this.reload();
3690
+ }
3691
+ async reload() {
3692
+ if (this.loading()) {
3693
+ return;
3694
+ }
3695
+ this.loading.set(true);
3696
+ this.error.set('');
3697
+ this.url.set('');
3698
+ try {
3699
+ const url = new URL(await this.api.getAssetUrl(this.asset.key));
3700
+ if (this.previewKind === 'attachment') {
3701
+ url.searchParams.set('download', 'true');
3702
+ }
3703
+ if (!this.destroyRef.destroyed) {
3704
+ this.url.set(url.href);
3705
+ }
3706
+ }
3707
+ catch (error) {
3708
+ if (!this.destroyRef.destroyed) {
3709
+ console.error('[taon-cms-asset-preview] Unable to load asset URL', error);
3710
+ this.error.set(this.t.gettext('The asset could not be opened. Please retry.'));
3711
+ }
3712
+ }
3713
+ finally {
3714
+ if (!this.destroyRef.destroyed) {
3715
+ this.loading.set(false);
3716
+ }
3717
+ }
3718
+ }
3719
+ playbackError() {
3720
+ this.error.set(this.t.gettext('Playback failed or the preview link expired. Please retry.'));
3721
+ }
3722
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsAssetPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3723
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsAssetPreviewComponent, isStandalone: true, selector: "taon-cms-asset-preview", inputs: { asset: "asset" }, ngImport: i0, template: "@if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading asset preview...') }}</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"loading()\"\n (click)=\"reload()\">\n {{ t.gettext('Retry preview') }}\n </button>\n}\n@if (url()) {\n @switch (previewKind) {\n @case ('video') {\n <video\n controls\n preload=\"none\"\n [src]=\"url()\"\n (error)=\"playbackError()\">\n {{ t.gettext('Your browser does not support video playback.') }}\n </video>\n }\n @case ('audio') {\n <audio\n controls\n preload=\"none\"\n [src]=\"url()\"\n (error)=\"playbackError()\">\n {{ t.gettext('Your browser does not support audio playback.') }}\n </audio>\n }\n @default {\n <a\n [href]=\"url()\"\n [attr.download]=\"asset.fileName\"\n target=\"_blank\"\n rel=\"noopener\">\n {{ asset.fileName || asset.key }}\n </a>\n }\n }\n}\n", styles: [":host{display:block;padding:16px}video{max-width:100%;max-height:400px!important}audio{max-width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3724
+ }
3725
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsAssetPreviewComponent, decorators: [{
3726
+ type: Component,
3727
+ args: [{ selector: 'taon-cms-asset-preview', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatButtonModule], template: "@if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading asset preview...') }}</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"loading()\"\n (click)=\"reload()\">\n {{ t.gettext('Retry preview') }}\n </button>\n}\n@if (url()) {\n @switch (previewKind) {\n @case ('video') {\n <video\n controls\n preload=\"none\"\n [src]=\"url()\"\n (error)=\"playbackError()\">\n {{ t.gettext('Your browser does not support video playback.') }}\n </video>\n }\n @case ('audio') {\n <audio\n controls\n preload=\"none\"\n [src]=\"url()\"\n (error)=\"playbackError()\">\n {{ t.gettext('Your browser does not support audio playback.') }}\n </audio>\n }\n @default {\n <a\n [href]=\"url()\"\n [attr.download]=\"asset.fileName\"\n target=\"_blank\"\n rel=\"noopener\">\n {{ asset.fileName || asset.key }}\n </a>\n }\n }\n}\n", styles: [":host{display:block;padding:16px}video{max-width:100%;max-height:400px!important}audio{max-width:100%}\n"] }]
3728
+ }], propDecorators: { asset: [{
3729
+ type: Input,
3730
+ args: [{ required: true }]
3731
+ }] } });
3732
+
3733
+ const t$9 = Translation.for('src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts', { "src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.html": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-asset-preview.component.html.en-US.i18n.data-CHC8Rpav.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-asset-preview.component.html.pl-PL.i18n.data-Dsra3EeZ.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-asset-preview.component.html.de-DE.i18n.data-D-t_ndXn.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-asset-preview.component.ts.en-US.i18n.data-N_2QUNLq.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-asset-preview.component.ts.pl-PL.i18n.data-BqRkgB92.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-asset-preview.component.ts.de-DE.i18n.data-DT7qFf7D.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-assets-backoffice.component.html.en-US.i18n.data-DSG7SK4m.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-assets-backoffice.component.html.pl-PL.i18n.data-Bs8amcIs.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-assets-backoffice.component.html.de-DE.i18n.data-ByVH6z2Z.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-assets-backoffice.component.ts.en-US.i18n.data-DjKWwkMP.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data-Cvak6-ec.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-assets-backoffice.component.ts.de-DE.i18n.data-DGADylre.mjs')).default } });
2485
3734
  class TaonCmsAssetsBackofficeComponent {
2486
3735
  constructor() {
2487
- this.assets = [
2488
- { id: 1, name: 'Sample image.jpg' },
2489
- { id: 2, name: 'Sample document.pdf' },
2490
- ];
3736
+ this.t = t$9.for(this);
3737
+ this.api = inject(TaonCmsContentApiService);
3738
+ this.destroyRef = inject(DestroyRef);
3739
+ this.assets = signal([], ...(ngDevMode ? [{ debugName: "assets" }] : []));
3740
+ this.loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
3741
+ this.error = signal('', ...(ngDevMode ? [{ debugName: "error" }] : []));
2491
3742
  this.columns = [
2492
- { header: 'ID', field: 'id', sortable: true },
2493
- { header: 'Asset Name', field: 'name', sortable: true },
3743
+ { header: 'ID', field: 'keyVisible', sortable: true, showExpand: true },
3744
+ { header: this.t.gettext('File Name'), field: 'fileName', sortable: true },
3745
+ {
3746
+ header: this.t.gettext('Content Type'),
3747
+ field: 'contentType',
3748
+ sortable: true,
3749
+ },
2494
3750
  ];
2495
3751
  }
3752
+ ngOnInit() {
3753
+ this.reload();
3754
+ }
3755
+ reload() {
3756
+ if (this.loading()) {
3757
+ return;
3758
+ }
3759
+ this.loading.set(true);
3760
+ this.error.set('');
3761
+ this.api
3762
+ .listAssets()
3763
+ .pipe(map$1(c => c), takeUntilDestroyed(this.destroyRef), finalize(() => this.loading.set(false)))
3764
+ .subscribe({
3765
+ next: assets => this.assets.set(assets.map(c => {
3766
+ c.keyVisible = ___NS__first(c.key.split('__'));
3767
+ return c;
3768
+ })),
3769
+ error: (error) => {
3770
+ console.error('[taon-cms-assets-backoffice] Unable to load assets', error);
3771
+ this.error.set(this.t.gettext('Assets could not be loaded. Please try reloading.'));
3772
+ },
3773
+ });
3774
+ }
2496
3775
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsAssetsBackofficeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2497
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.9", type: TaonCmsAssetsBackofficeComponent, isStandalone: true, selector: "taon-cms-assets-backoffice", ngImport: i0, template: `
2498
- <h1>CMS assets</h1>
2499
- <mtx-grid [data]="assets" [columns]="columns"></mtx-grid>
2500
- `, isInline: true, dependencies: [{ kind: "component", type: 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", "columnMenuButtonFontIcon", "columnMenuButtonSvgIcon", "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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3776
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsAssetsBackofficeComponent, isStandalone: true, selector: "taon-cms-assets-backoffice", providers: [TaonCmsContentApiService], ngImport: i0, template: "<h1>{{ t.gettext('CMS assets') }}</h1>\n<button\n mat-button\n type=\"button\"\n [disabled]=\"loading()\"\n (click)=\"reload()\">\n {{ t.gettext('Reload assets') }}\n</button>\n@if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading assets...') }}</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n\n<ng-template\n #preview\n let-asset>\n <taon-cms-asset-preview [asset]=\"asset\" />\n</ng-template>\n\n<taon-datatable\n [data]=\"assets()\"\n [columns]=\"columns\"\n [allowedColumns]=\"['key', 'fileName', 'contentType']\"\n [hideAddButton]=\"true\"\n [expansionTemplate]=\"preview\"\n searchMode=\"advanced\">\n</taon-datatable>\n", dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: TaonDatatableComponent, selector: "taon-datatable", inputs: ["pageNumber", "pageSize", "pageSizeOptions", "allowedColumns", "expansionTemplate", "entityCrudController", "columns", "hideSearch", "hideAddButton", "safe", "searchMode", "callQueryMethod", "data", "showPaginator"], outputs: ["expansionChange", "addingItem"] }, { kind: "component", type: TaonCmsAssetPreviewComponent, selector: "taon-cms-asset-preview", inputs: ["asset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2501
3777
  }
2502
3778
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsAssetsBackofficeComponent, decorators: [{
2503
3779
  type: Component,
2504
- args: [{
2505
- selector: 'taon-cms-assets-backoffice',
2506
- changeDetection: ChangeDetectionStrategy.OnPush,
2507
- imports: [MtxGrid],
2508
- template: `
2509
- <h1>CMS assets</h1>
2510
- <mtx-grid [data]="assets" [columns]="columns"></mtx-grid>
2511
- `,
2512
- }]
3780
+ args: [{ selector: 'taon-cms-assets-backoffice', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
3781
+ MatButtonModule,
3782
+ TaonDatatableComponent,
3783
+ TaonCmsAssetPreviewComponent,
3784
+ ], providers: [TaonCmsContentApiService], template: "<h1>{{ t.gettext('CMS assets') }}</h1>\n<button\n mat-button\n type=\"button\"\n [disabled]=\"loading()\"\n (click)=\"reload()\">\n {{ t.gettext('Reload assets') }}\n</button>\n@if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading assets...') }}</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n\n<ng-template\n #preview\n let-asset>\n <taon-cms-asset-preview [asset]=\"asset\" />\n</ng-template>\n\n<taon-datatable\n [data]=\"assets()\"\n [columns]=\"columns\"\n [allowedColumns]=\"['key', 'fileName', 'contentType']\"\n [hideAddButton]=\"true\"\n [expansionTemplate]=\"preview\"\n searchMode=\"advanced\">\n</taon-datatable>\n" }]
2513
3785
  }] });
2514
3786
 
2515
3787
  var taonCmsAssetsBackoffice_component = /*#__PURE__*/Object.freeze({
@@ -2531,8 +3803,10 @@ var taonCmsAssetsBackoffice_routes = /*#__PURE__*/Object.freeze({
2531
3803
 
2532
3804
  //#region imports
2533
3805
  //#endregion
3806
+ const t$8 = Translation.for('src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts', { "src/lib/taon-cms-backoffice/taon-cms-backoffice.component.html": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-backoffice.component.html.en-US.i18n.data-C64eFnqr.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-backoffice.component.html.pl-PL.i18n.data-Cm-otof5.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-backoffice.component.html.de-DE.i18n.data-C9czRdlm.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-backoffice.component.ts.en-US.i18n.data-BqWMae53.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-backoffice.component.ts.pl-PL.i18n.data-DpAcVBSp.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-backoffice.component.ts.de-DE.i18n.data-CSA7g7KN.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-backoffice.routes.ts.en-US.i18n.data-CzYi31y6.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-backoffice.routes.ts.pl-PL.i18n.data--hNK9Xkt.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-backoffice.routes.ts.de-DE.i18n.data-El7DeGTg.mjs')).default } });
2534
3807
  class TaonCmsBackofficeComponent {
2535
3808
  constructor() {
3809
+ this.t = t$8.for(this);
2536
3810
  this.componentLoaded = false;
2537
3811
  }
2538
3812
  onRouteActivate(component) {
@@ -2542,11 +3816,11 @@ class TaonCmsBackofficeComponent {
2542
3816
  this.componentLoaded = false;
2543
3817
  }
2544
3818
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsBackofficeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2545
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsBackofficeComponent, isStandalone: true, selector: "app-taon-cms-backoffice", ngImport: i0, template: "@if (!componentLoaded) {\n <code>\n In CMS you can manage content and settings for your website.\n </code>\n}\n\n<router-outlet\n (activate)=\"onRouteActivate($event)\"\n (deactivate)=\"onRouteDeactivate($event)\"></router-outlet>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3819
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsBackofficeComponent, isStandalone: true, selector: "app-taon-cms-backoffice", ngImport: i0, template: "@if (!componentLoaded) {\n <code>\n {{\n t.gettext('In CMS you can manage content and settings for your website.')\n }}\n </code>\n}\n\n<router-outlet\n (activate)=\"onRouteActivate($event)\"\n (deactivate)=\"onRouteDeactivate($event)\"></router-outlet>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2546
3820
  }
2547
3821
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsBackofficeComponent, decorators: [{
2548
3822
  type: Component,
2549
- args: [{ selector: 'app-taon-cms-backoffice', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AsyncPipe, RouterOutlet], template: "@if (!componentLoaded) {\n <code>\n In CMS you can manage content and settings for your website.\n </code>\n}\n\n<router-outlet\n (activate)=\"onRouteActivate($event)\"\n (deactivate)=\"onRouteDeactivate($event)\"></router-outlet>\n", styles: [":host{display:block}\n"] }]
3823
+ args: [{ selector: 'app-taon-cms-backoffice', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AsyncPipe, RouterOutlet], template: "@if (!componentLoaded) {\n <code>\n {{\n t.gettext('In CMS you can manage content and settings for your website.')\n }}\n </code>\n}\n\n<router-outlet\n (activate)=\"onRouteActivate($event)\"\n (deactivate)=\"onRouteDeactivate($event)\"></router-outlet>\n", styles: [":host{display:block}\n"] }]
2550
3824
  }] });
2551
3825
 
2552
3826
  var taonCmsBackoffice_component = /*#__PURE__*/Object.freeze({
@@ -2559,6 +3833,7 @@ var taonCmsBackoffice_component = /*#__PURE__*/Object.freeze({
2559
3833
 
2560
3834
  //#endregion
2561
3835
  const adminLazyRoute = (adminLazyRoute$1);
3836
+ const t$7 = Translation.for('src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts', { "src/lib/taon-cms-backoffice/taon-cms-backoffice.component.html": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-backoffice.component.html.en-US.i18n.data-C64eFnqr.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-backoffice.component.html.pl-PL.i18n.data-Cm-otof5.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-backoffice.component.html.de-DE.i18n.data-C9czRdlm.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-backoffice.component.ts.en-US.i18n.data-BqWMae53.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-backoffice.component.ts.pl-PL.i18n.data-DpAcVBSp.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-backoffice.component.ts.de-DE.i18n.data-CSA7g7KN.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-backoffice.routes.ts.en-US.i18n.data-CzYi31y6.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-backoffice.routes.ts.pl-PL.i18n.data--hNK9Xkt.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-backoffice.routes.ts.de-DE.i18n.data-El7DeGTg.mjs')).default } });
2562
3837
  const TaonCmsBackofficeRoutes = [
2563
3838
  {
2564
3839
  path: '',
@@ -2570,7 +3845,7 @@ const TaonCmsBackofficeRoutes = [
2570
3845
  return !context?.hasAccess.toManagePosts;
2571
3846
  },
2572
3847
  path: 'posts',
2573
- menuItem: 'Posts',
3848
+ menuItem: t$7.gettext('Posts'),
2574
3849
  expandable: true,
2575
3850
  icon: 'edit',
2576
3851
  loader: () => Promise.resolve().then(function () { return index$1; }).then(m => m.TaonCmsPostsBackofficeRoutes),
@@ -2578,11 +3853,27 @@ const TaonCmsBackofficeRoutes = [
2578
3853
  adminLazyRoute({
2579
3854
  isDisabled: ({ context }) => !context?.hasAccess.toManagePosts,
2580
3855
  path: 'assets',
2581
- menuItem: 'Assets',
3856
+ menuItem: t$7.gettext('Assets'),
2582
3857
  expandable: false,
2583
3858
  icon: 'perm_media',
2584
3859
  loader: () => Promise.resolve().then(function () { return taonCmsAssetsBackoffice_routes; }).then(m => m.TaonCmsAssetsBackofficeRoutes),
2585
3860
  }),
3861
+ adminLazyRoute({
3862
+ isDisabled: ({ context }) => !context?.hasAccess.toManagePosts,
3863
+ path: 'categories',
3864
+ menuItem: t$7.gettext('Categories'),
3865
+ expandable: false,
3866
+ icon: 'folder',
3867
+ loader: () => Promise.resolve().then(function () { return taonCmsTaxonomyBackoffice_routes; }).then(m => m.TaonCmsCategoriesBackofficeRoutes),
3868
+ }),
3869
+ adminLazyRoute({
3870
+ isDisabled: ({ context }) => !context?.hasAccess.toManagePosts,
3871
+ path: 'tags',
3872
+ menuItem: t$7.gettext('Tags'),
3873
+ expandable: false,
3874
+ icon: 'label',
3875
+ loader: () => Promise.resolve().then(function () { return taonCmsTaxonomyBackoffice_routes; }).then(m => m.TaonCmsTagsBackofficeRoutes),
3876
+ }),
2586
3877
  // adminLazyRoute({
2587
3878
  // path: 'dashboard',
2588
3879
  // menuItem: 'Dashboard',
@@ -2609,6 +3900,18 @@ class TaonCmsCategoryApiService extends TaonBaseAngularService {
2609
3900
  get allMyEntities$() {
2610
3901
  return this.taonCmsCategoryController.getAll().request().observable.pipe(map(res => res.body?.json));
2611
3902
  }
3903
+ save(id, input) {
3904
+ return this.taonCmsCategoryController
3905
+ .saveCategory(id, input)
3906
+ .request()
3907
+ .observable.pipe(map(res => res.body.json));
3908
+ }
3909
+ delete(id) {
3910
+ return this.taonCmsCategoryController
3911
+ .deleteCategory(id)
3912
+ .request()
3913
+ .observable.pipe(map(() => undefined));
3914
+ }
2612
3915
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsCategoryApiService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2613
3916
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsCategoryApiService }); }
2614
3917
  }
@@ -2670,92 +3973,6 @@ function TaonCmsCommentUtils__NS__isActive(state) {
2670
3973
  }
2671
3974
  //end of namespace TaonCmsCommentUtils
2672
3975
 
2673
- //#region imports
2674
- //#endregion
2675
- class TaonCmsContentApiService extends TaonBaseAngularService {
2676
- constructor() {
2677
- super(...arguments);
2678
- this.taonCmsContentController = this.injectController(TaonCmsContentController);
2679
- this.taonCmsContentStorageController = this.injectController(TaonCmsContentStorageController);
2680
- }
2681
- get crudController() {
2682
- return this.taonCmsContentController;
2683
- }
2684
- async getById(id) {
2685
- return (await this.taonCmsContentController.getBy(id).request()).body.json;
2686
- }
2687
- async getBySlug(slug) {
2688
- return (await this.taonCmsContentController.getBySlug(slug).request()).body
2689
- .json;
2690
- }
2691
- getContentByHook(hook) {
2692
- return this.taonCmsContentController.getContentByHook(hook)
2693
- .request().observable.pipe(map(res => res.body.text));
2694
- }
2695
- getPublicContentByHook(hook) {
2696
- return this.taonCmsContentController.getPublicContentByHook(hook)
2697
- .request().observable.pipe(map(res => res.body.text), catchError(() => of('---')));
2698
- }
2699
- listApplicationHooks() {
2700
- return this.taonCmsContentController.listApplicationHooks()
2701
- .request().observable.pipe(map(res => res.body.json));
2702
- }
2703
- async uploadMedia(file) {
2704
- const formData = new FormData();
2705
- formData.append('file', file);
2706
- const response = await this.taonCmsContentStorageController
2707
- .uploadFormDataToServer(formData)
2708
- .request();
2709
- const objects = response.body.json;
2710
- if (objects.length !== 1 || !objects[0].key) {
2711
- throw new Error('The upload did not return a media key.');
2712
- }
2713
- return objects[0];
2714
- }
2715
- createContent(input) {
2716
- return this.taonCmsContentController.createContent(input)
2717
- .request().observable.pipe(map(res => res.body.json));
2718
- }
2719
- updateContent(id, input) {
2720
- return this.taonCmsContentController.updateContent(id, input)
2721
- .request().observable.pipe(map(res => res.body.json));
2722
- }
2723
- deleteContent(id, expectedVersion) {
2724
- return this.taonCmsContentController.deleteContent(id, expectedVersion)
2725
- .request().observable.pipe(map(res => res.body.json));
2726
- }
2727
- restoreContent(id, input) {
2728
- return this.taonCmsContentController.restoreContent(id, input)
2729
- .request().observable.pipe(map(res => res.body.json));
2730
- }
2731
- listRevisions(id) {
2732
- return this.taonCmsContentController.listRevisions(id)
2733
- .request().observable.pipe(map(res => res.body.json));
2734
- }
2735
- listRelatedPosts(id) {
2736
- return this.taonCmsContentController.listRelatedPosts(id)
2737
- .request().observable.pipe(map(res => res.body.json));
2738
- }
2739
- listPermissions(id) {
2740
- return this.taonCmsContentController.listPermissions(id)
2741
- .request().observable.pipe(map(res => res.body.json));
2742
- }
2743
- addRelatedPost(id, relatedPostId, expectedVersion) {
2744
- return this.taonCmsContentController.addRelatedPost(id, relatedPostId, expectedVersion).request().observable.pipe(map(res => res.body.json));
2745
- }
2746
- deleteRelatedPost(id, relatedPostId, expectedVersion) {
2747
- return this.taonCmsContentController.deleteRelatedPost(id, relatedPostId, expectedVersion).request().observable.pipe(map(res => res.body.json));
2748
- }
2749
- get allMyEntities$() {
2750
- return this.taonCmsContentController.getAll().request().observable.pipe(map(res => res.body?.json));
2751
- }
2752
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentApiService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2753
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentApiService }); }
2754
- }
2755
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsContentApiService, decorators: [{
2756
- type: Injectable
2757
- }] });
2758
-
2759
3976
  class TaonCmsContentConfigService extends TaonBaseAngularService {
2760
3977
  constructor() {
2761
3978
  super(...arguments);
@@ -2776,6 +3993,7 @@ const TaonCmsContentDefaultsValues = {
2776
3993
  videoKey: null,
2777
3994
  audioKey: null,
2778
3995
  attachmentKey: null,
3996
+ thumbnailKey: null,
2779
3997
  };
2780
3998
 
2781
3999
  //namespace TaonCmsContentUtils
@@ -2940,6 +4158,24 @@ class TaonCmsTagApiService extends TaonBaseAngularService {
2940
4158
  super(...arguments);
2941
4159
  this.taonCmsTagController = this.injectController(TaonCmsTagController);
2942
4160
  }
4161
+ get allMyEntities$() {
4162
+ return this.taonCmsTagController
4163
+ .getAll()
4164
+ .request()
4165
+ .observable.pipe(map(res => res.body.json));
4166
+ }
4167
+ save(id, input) {
4168
+ return this.taonCmsTagController
4169
+ .saveTag(id, input)
4170
+ .request()
4171
+ .observable.pipe(map(res => res.body.json));
4172
+ }
4173
+ delete(id) {
4174
+ return this.taonCmsTagController
4175
+ .deleteTag(id)
4176
+ .request()
4177
+ .observable.pipe(map(() => undefined));
4178
+ }
2943
4179
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsTagApiService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2944
4180
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsTagApiService }); }
2945
4181
  }
@@ -2947,23 +4183,250 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
2947
4183
  type: Injectable
2948
4184
  }] });
2949
4185
 
2950
- const TaonCmsTagDefaultsValues = {
2951
- description: '',
2952
- version: 0,
2953
- id: void 0,
2954
- };
4186
+ const TaonCmsTagDefaultsValues = {
4187
+ description: '',
4188
+ version: 0,
4189
+ id: void 0,
4190
+ };
4191
+
4192
+ var TaonCmsTagState;
4193
+ (function (TaonCmsTagState) {
4194
+ TaonCmsTagState["Active"] = "active";
4195
+ TaonCmsTagState["Inactive"] = "inactive";
4196
+ })(TaonCmsTagState || (TaonCmsTagState = {}));
4197
+
4198
+ //namespace TaonCmsTagUtils
4199
+ function TaonCmsTagUtils__NS__isActive(state) {
4200
+ return state === 'active';
4201
+ }
4202
+ //end of namespace TaonCmsTagUtils
4203
+
4204
+ const t$6 = Translation.for('src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts', { "src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.html": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data-CSzz-qCe.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data-Dx0k2Yyc.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data-DflSG3A7.mjs')).default }, "src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data-MEvkiD1i.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data-CQhJ8ksS.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data-DKDYzSnl.mjs')).default } });
4205
+ class TaonCmsTaxonomyBackofficeComponent {
4206
+ constructor() {
4207
+ this.t = t$6.for(this);
4208
+ this.isCategory = inject(ActivatedRoute).snapshot.data['taxonomy'] === 'category';
4209
+ this.categories = inject(TaonCmsCategoryApiService);
4210
+ this.tags = inject(TaonCmsTagApiService);
4211
+ this.destroyRef = inject(DestroyRef);
4212
+ this.dialog = inject(MatDialog);
4213
+ this.rows = signal([], ...(ngDevMode ? [{ debugName: "rows" }] : []));
4214
+ this.busy = signal(false, ...(ngDevMode ? [{ debugName: "busy" }] : []));
4215
+ this.error = signal('', ...(ngDevMode ? [{ debugName: "error" }] : []));
4216
+ this.editing = signal(false, ...(ngDevMode ? [{ debugName: "editing" }] : []));
4217
+ this.editingId = null;
4218
+ this.draft = this.emptyDraft();
4219
+ this.columns = [
4220
+ { header: this.t.gettext('Name'), field: 'name', sortable: true },
4221
+ { header: this.t.gettext('Slug'), field: 'slug', sortable: true },
4222
+ ...(this.isCategory
4223
+ ? [
4224
+ {
4225
+ header: this.t.gettext('Parent Category'),
4226
+ field: 'parentName',
4227
+ sortable: true,
4228
+ },
4229
+ {
4230
+ header: this.t.gettext('Sort Order'),
4231
+ field: 'sortOrder',
4232
+ sortable: true,
4233
+ },
4234
+ ]
4235
+ : [
4236
+ {
4237
+ header: this.t.gettext('Description'),
4238
+ field: 'description',
4239
+ sortable: true,
4240
+ },
4241
+ ]),
4242
+ {
4243
+ header: this.t.gettext('Actions'),
4244
+ field: 'actions',
4245
+ type: 'button',
4246
+ buttons: [
4247
+ {
4248
+ type: 'icon',
4249
+ icon: 'edit',
4250
+ tooltip: this.t.gettext('Edit'),
4251
+ disabled: () => this.busy(),
4252
+ click: (row) => this.edit(row),
4253
+ },
4254
+ {
4255
+ type: 'icon',
4256
+ icon: 'delete',
4257
+ tooltip: this.t.gettext('Delete'),
4258
+ disabled: () => this.busy(),
4259
+ click: (row) => this.delete(row),
4260
+ },
4261
+ ],
4262
+ },
4263
+ ];
4264
+ }
4265
+ ngOnInit() {
4266
+ this.reload();
4267
+ }
4268
+ reload() {
4269
+ if (this.busy()) {
4270
+ return;
4271
+ }
4272
+ const request = this.isCategory
4273
+ ? this.categories.allMyEntities$
4274
+ : this.tags.allMyEntities$;
4275
+ this.run(request, rows => this.rows.set(rows));
4276
+ }
4277
+ tableRows() {
4278
+ return this.rows().map(row => ({
4279
+ ...row,
4280
+ parentName: 'parentCategoryId' in row
4281
+ ? (this.rows().find(parent => parent.id === row.parentCategoryId)
4282
+ ?.name ?? '')
4283
+ : '',
4284
+ }));
4285
+ }
4286
+ parentOptions() {
4287
+ const categories = this.rows().filter((row) => 'parentCategoryId' in row);
4288
+ return categories.filter(category => {
4289
+ const visited = new Set();
4290
+ let current = category;
4291
+ while (current) {
4292
+ if (current.id === this.editingId || visited.has(current.id)) {
4293
+ return false;
4294
+ }
4295
+ visited.add(current.id);
4296
+ current = categories.find(parent => parent.id === current?.parentCategoryId);
4297
+ }
4298
+ return true;
4299
+ });
4300
+ }
4301
+ edit(row) {
4302
+ if (this.busy()) {
4303
+ return;
4304
+ }
4305
+ this.editingId = row?.id ?? null;
4306
+ this.draft = row
4307
+ ? {
4308
+ name: row.name,
4309
+ slug: row.slug,
4310
+ description: row.description,
4311
+ parentCategoryId: 'parentCategoryId' in row ? row.parentCategoryId : null,
4312
+ sortOrder: 'sortOrder' in row ? row.sortOrder : 0,
4313
+ }
4314
+ : this.emptyDraft();
4315
+ this.error.set('');
4316
+ this.editing.set(true);
4317
+ }
4318
+ save() {
4319
+ if (this.busy()) {
4320
+ return;
4321
+ }
4322
+ const request = this.isCategory
4323
+ ? this.categories.save(this.editingId, this.draft)
4324
+ : this.tags.save(this.editingId, this.draft);
4325
+ this.run(request, saved => {
4326
+ this.editing.set(false);
4327
+ this.rows.update(rows => [
4328
+ ...rows.filter(row => row.id !== saved.id),
4329
+ saved,
4330
+ ]);
4331
+ });
4332
+ }
4333
+ delete(row) {
4334
+ if (this.busy()) {
4335
+ return;
4336
+ }
4337
+ this.dialog
4338
+ .open(TaonConfirmDialogComponent, {
4339
+ data: {
4340
+ title: this.isCategory
4341
+ ? this.t.gettext('Delete category?')
4342
+ : this.t.gettext('Delete tag?'),
4343
+ message: this.t.gettext('Only unused items can be deleted. This cannot be undone.'),
4344
+ confirmText: this.t.gettext('Delete'),
4345
+ },
4346
+ })
4347
+ .afterClosed()
4348
+ .pipe(takeUntilDestroyed(this.destroyRef))
4349
+ .subscribe(confirmed => {
4350
+ if (confirmed) {
4351
+ this.run(this.isCategory
4352
+ ? this.categories.delete(row.id)
4353
+ : this.tags.delete(row.id), () => {
4354
+ if (this.editingId === row.id) {
4355
+ this.editing.set(false);
4356
+ }
4357
+ this.rows.update(rows => rows.filter(item => item.id !== row.id));
4358
+ });
4359
+ }
4360
+ });
4361
+ }
4362
+ run(request, next) {
4363
+ if (this.busy()) {
4364
+ return;
4365
+ }
4366
+ this.busy.set(true);
4367
+ this.error.set('');
4368
+ request
4369
+ .pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.busy.set(false)))
4370
+ .subscribe({
4371
+ next: value => {
4372
+ this.busy.set(false);
4373
+ next(value);
4374
+ },
4375
+ error: (error) => {
4376
+ console.error('[taon-cms-taxonomy] Operation failed', error);
4377
+ this.error.set(this.t.gettext('The operation failed. Check for duplicate names or slugs, invalid parents, or items still used by posts or child categories, then reload and try again.'));
4378
+ },
4379
+ });
4380
+ }
4381
+ emptyDraft() {
4382
+ return {
4383
+ name: '',
4384
+ slug: '',
4385
+ description: '',
4386
+ parentCategoryId: null,
4387
+ sortOrder: 0,
4388
+ };
4389
+ }
4390
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsTaxonomyBackofficeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4391
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsTaxonomyBackofficeComponent, isStandalone: true, selector: "taon-cms-taxonomy-backoffice", providers: [TaonCmsCategoryApiService, TaonCmsTagApiService], ngImport: i0, template: "<h1>{{ isCategory ? t.gettext('Categories') : t.gettext('Tags') }}</h1>\n<div class=\"actions\">\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy()\"\n (click)=\"edit()\">\n {{ isCategory ? t.gettext('Create category') : t.gettext('Create tag') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy()\"\n (click)=\"reload()\">\n {{ t.gettext('Reload') }}\n </button>\n</div>\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n@if (busy()) {\n <p role=\"status\">{{ t.gettext('Loading...') }}</p>\n}\n@if (editing()) {\n <form\n #form=\"ngForm\"\n (ngSubmit)=\"save()\">\n <h2>{{ editingId === null ? t.gettext('Create') : t.gettext('Edit') }}</h2>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Name') }}</mat-label>\n <input\n matInput\n name=\"name\"\n required\n [(ngModel)]=\"draft.name\"\n [disabled]=\"busy()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Slug') }}</mat-label>\n <input\n matInput\n name=\"slug\"\n required\n [(ngModel)]=\"draft.slug\"\n [disabled]=\"busy()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Description') }}</mat-label>\n <textarea\n matInput\n name=\"description\"\n [(ngModel)]=\"draft.description\"\n [disabled]=\"busy()\"></textarea>\n </mat-form-field>\n @if (isCategory) {\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Parent Category') }}</mat-label>\n <mat-select\n name=\"parentCategoryId\"\n [(ngModel)]=\"draft.parentCategoryId\"\n [disabled]=\"busy()\">\n <mat-option [value]=\"null\">{{ t.gettext('None') }}</mat-option>\n @for (category of parentOptions(); track category.id) {\n <mat-option [value]=\"category.id\">{{ category.name }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Sort Order') }}</mat-label>\n <input\n matInput\n name=\"sortOrder\"\n type=\"number\"\n step=\"1\"\n required\n [(ngModel)]=\"draft.sortOrder\"\n [disabled]=\"busy()\" />\n </mat-form-field>\n }\n <div class=\"actions\">\n <button\n mat-flat-button\n type=\"submit\"\n [disabled]=\"\n busy() || form.invalid || !draft.name.trim() || !draft.slug.trim()\n \">\n {{ t.gettext('Save') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy()\"\n (click)=\"editing.set(false)\">\n {{ t.gettext('Cancel') }}\n </button>\n </div>\n </form>\n}\n<taon-datatable\n [data]=\"tableRows()\"\n [columns]=\"columns\"\n [hideAddButton]=\"true\"\n searchMode=\"advanced\">\n</taon-datatable>\n", styles: [":host{display:block}form{display:grid;gap:1rem;max-width:640px;margin-block:1.5rem}.actions{display:flex;flex-wrap:wrap;gap:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.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: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { 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", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: TaonDatatableComponent, selector: "taon-datatable", inputs: ["pageNumber", "pageSize", "pageSizeOptions", "allowedColumns", "expansionTemplate", "entityCrudController", "columns", "hideSearch", "hideAddButton", "safe", "searchMode", "callQueryMethod", "data", "showPaginator"], outputs: ["expansionChange", "addingItem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4392
+ }
4393
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsTaxonomyBackofficeComponent, decorators: [{
4394
+ type: Component,
4395
+ args: [{ selector: 'taon-cms-taxonomy-backoffice', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
4396
+ FormsModule,
4397
+ MatButtonModule,
4398
+ MatFormFieldModule,
4399
+ MatInputModule,
4400
+ MatSelectModule,
4401
+ TaonDatatableComponent,
4402
+ ], providers: [TaonCmsCategoryApiService, TaonCmsTagApiService], template: "<h1>{{ isCategory ? t.gettext('Categories') : t.gettext('Tags') }}</h1>\n<div class=\"actions\">\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy()\"\n (click)=\"edit()\">\n {{ isCategory ? t.gettext('Create category') : t.gettext('Create tag') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy()\"\n (click)=\"reload()\">\n {{ t.gettext('Reload') }}\n </button>\n</div>\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n@if (busy()) {\n <p role=\"status\">{{ t.gettext('Loading...') }}</p>\n}\n@if (editing()) {\n <form\n #form=\"ngForm\"\n (ngSubmit)=\"save()\">\n <h2>{{ editingId === null ? t.gettext('Create') : t.gettext('Edit') }}</h2>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Name') }}</mat-label>\n <input\n matInput\n name=\"name\"\n required\n [(ngModel)]=\"draft.name\"\n [disabled]=\"busy()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Slug') }}</mat-label>\n <input\n matInput\n name=\"slug\"\n required\n [(ngModel)]=\"draft.slug\"\n [disabled]=\"busy()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Description') }}</mat-label>\n <textarea\n matInput\n name=\"description\"\n [(ngModel)]=\"draft.description\"\n [disabled]=\"busy()\"></textarea>\n </mat-form-field>\n @if (isCategory) {\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Parent Category') }}</mat-label>\n <mat-select\n name=\"parentCategoryId\"\n [(ngModel)]=\"draft.parentCategoryId\"\n [disabled]=\"busy()\">\n <mat-option [value]=\"null\">{{ t.gettext('None') }}</mat-option>\n @for (category of parentOptions(); track category.id) {\n <mat-option [value]=\"category.id\">{{ category.name }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Sort Order') }}</mat-label>\n <input\n matInput\n name=\"sortOrder\"\n type=\"number\"\n step=\"1\"\n required\n [(ngModel)]=\"draft.sortOrder\"\n [disabled]=\"busy()\" />\n </mat-form-field>\n }\n <div class=\"actions\">\n <button\n mat-flat-button\n type=\"submit\"\n [disabled]=\"\n busy() || form.invalid || !draft.name.trim() || !draft.slug.trim()\n \">\n {{ t.gettext('Save') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy()\"\n (click)=\"editing.set(false)\">\n {{ t.gettext('Cancel') }}\n </button>\n </div>\n </form>\n}\n<taon-datatable\n [data]=\"tableRows()\"\n [columns]=\"columns\"\n [hideAddButton]=\"true\"\n searchMode=\"advanced\">\n</taon-datatable>\n", styles: [":host{display:block}form{display:grid;gap:1rem;max-width:640px;margin-block:1.5rem}.actions{display:flex;flex-wrap:wrap;gap:.5rem}\n"] }]
4403
+ }] });
4404
+
4405
+ var taonCmsTaxonomyBackoffice_component = /*#__PURE__*/Object.freeze({
4406
+ __proto__: null,
4407
+ TaonCmsTaxonomyBackofficeComponent: TaonCmsTaxonomyBackofficeComponent
4408
+ });
2955
4409
 
2956
- var TaonCmsTagState;
2957
- (function (TaonCmsTagState) {
2958
- TaonCmsTagState["Active"] = "active";
2959
- TaonCmsTagState["Inactive"] = "inactive";
2960
- })(TaonCmsTagState || (TaonCmsTagState = {}));
4410
+ const TaonCmsCategoriesBackofficeRoutes = [
4411
+ {
4412
+ path: '',
4413
+ data: { taxonomy: 'category' },
4414
+ loadComponent: () => Promise.resolve().then(function () { return taonCmsTaxonomyBackoffice_component; }).then(m => m.TaonCmsTaxonomyBackofficeComponent),
4415
+ },
4416
+ ];
4417
+ const TaonCmsTagsBackofficeRoutes = [
4418
+ {
4419
+ path: '',
4420
+ data: { taxonomy: 'tag' },
4421
+ loadComponent: () => Promise.resolve().then(function () { return taonCmsTaxonomyBackoffice_component; }).then(m => m.TaonCmsTaxonomyBackofficeComponent),
4422
+ },
4423
+ ];
2961
4424
 
2962
- //namespace TaonCmsTagUtils
2963
- function TaonCmsTagUtils__NS__isActive(state) {
2964
- return state === 'active';
2965
- }
2966
- //end of namespace TaonCmsTagUtils
4425
+ var taonCmsTaxonomyBackoffice_routes = /*#__PURE__*/Object.freeze({
4426
+ __proto__: null,
4427
+ TaonCmsCategoriesBackofficeRoutes: TaonCmsCategoriesBackofficeRoutes,
4428
+ TaonCmsTagsBackofficeRoutes: TaonCmsTagsBackofficeRoutes
4429
+ });
2967
4430
 
2968
4431
  class TaonCmsEditableDirective {
2969
4432
  constructor() {
@@ -3083,8 +4546,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
3083
4546
  args: ['paste', ['$event']]
3084
4547
  }] } });
3085
4548
 
4549
+ const t$5 = Translation.for('src/lib/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.ts', { "src/lib/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.html": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-revision-chooser.component.html.en-US.i18n.data-yxnI4hZm.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-revision-chooser.component.html.pl-PL.i18n.data-LaD1B9nr.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-revision-chooser.component.html.de-DE.i18n.data-s-UFLYqy.mjs')).default }, "src/lib/taon-posts/taon-cms-revision-chooser/taon-cms-revision-chooser.component.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-revision-chooser.component.ts.en-US.i18n.data-QJOWjM3u.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-revision-chooser.component.ts.pl-PL.i18n.data-D7CkcVJ3.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-revision-chooser.component.ts.de-DE.i18n.data-DIl-O_Xe.mjs')).default } });
3086
4550
  class TaonCmsRevisionChooserComponent {
3087
4551
  constructor() {
4552
+ this.t = t$5.for(this);
3088
4553
  this.post = inject(MAT_DIALOG_DATA);
3089
4554
  this.revisions = signal([], ...(ngDevMode ? [{ debugName: "revisions" }] : []));
3090
4555
  this.selected = signal(null, ...(ngDevMode ? [{ debugName: "selected" }] : []));
@@ -3096,6 +4561,10 @@ class TaonCmsRevisionChooserComponent {
3096
4561
  this.destroyRef = inject(DestroyRef);
3097
4562
  this.load();
3098
4563
  }
4564
+ onEscape(event) {
4565
+ event.stopPropagation();
4566
+ this.ref.close();
4567
+ }
3099
4568
  load() {
3100
4569
  if (this.loading() || this.applying()) {
3101
4570
  return;
@@ -3103,11 +4572,14 @@ class TaonCmsRevisionChooserComponent {
3103
4572
  this.selected.set(null);
3104
4573
  this.loading.set(true);
3105
4574
  this.error.set('');
3106
- this.api.listRevisions(this.post.id).pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.loading.set(false))).subscribe({
4575
+ this.api
4576
+ .listRevisions(this.post.id)
4577
+ .pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.loading.set(false)))
4578
+ .subscribe({
3107
4579
  next: revisions => this.revisions.set([...revisions].sort((a, b) => b.revisionNumber - a.revisionNumber)),
3108
4580
  error: (error) => {
3109
4581
  console.error('[taon-cms-revision-chooser] Unable to load revisions', error);
3110
- this.error.set('Revisions could not be loaded. Please try again.');
4582
+ this.error.set(this.t.gettext('Revisions could not be loaded. Please try again.'));
3111
4583
  },
3112
4584
  });
3113
4585
  }
@@ -3117,20 +4589,22 @@ class TaonCmsRevisionChooserComponent {
3117
4589
  return;
3118
4590
  }
3119
4591
  if (revisionNumber === null) {
3120
- this.error.set('Select a revision to restore.');
4592
+ this.error.set(this.t.gettext('Select a revision to restore.'));
3121
4593
  return;
3122
4594
  }
3123
4595
  this.applying.set(true);
3124
4596
  this.error.set('');
3125
- this.api.restoreContent(this.post.id, {
4597
+ this.api
4598
+ .restoreContent(this.post.id, {
3126
4599
  revisionNumber,
3127
4600
  expectedVersion: this.post.version,
3128
- }).pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.applying.set(false))).subscribe({
4601
+ })
4602
+ .pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.applying.set(false)))
4603
+ .subscribe({
3129
4604
  next: post => this.ref.close(post),
3130
4605
  error: (error) => {
3131
4606
  console.error('[taon-cms-revision-chooser] Unable to restore revision', error);
3132
- this.error.set('The revision could not be restored. If the post changed, close and ' +
3133
- 'reopen it to load its latest version.');
4607
+ this.error.set(this.t.gettext('The revision could not be restored. If the post changed, close and reopen it to load its latest version.'));
3134
4608
  },
3135
4609
  });
3136
4610
  }
@@ -3140,15 +4614,20 @@ class TaonCmsRevisionChooserComponent {
3140
4614
  }
3141
4615
  }
3142
4616
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsRevisionChooserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3143
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsRevisionChooserComponent, isStandalone: true, selector: "taon-cms-revision-chooser", providers: [TaonCmsContentRevisionApiService], ngImport: i0, template: "<h2 mat-dialog-title>Restore a revision</h2>\n<mat-dialog-content>\n <p>Restoring replaces the post, including its status, with the selected revision.</p>\n @if (loading()) {\n <p role=\"status\">Loading revisions...</p>\n } @else {\n <mat-radio-group aria-label=\"Post revisions\" [value]=\"selected()\" (change)=\"selected.set($event.value)\" [disabled]=\"applying()\">\n @for (revision of revisions(); track revision.id) {\n <mat-radio-button [value]=\"revision.revisionNumber\" [disabled]=\"!revision.snapshot\">\n <strong>Revision {{ revision.revisionNumber }}</strong>\n <span>{{ revision.createdAt | date: 'medium' }}</span>\n @if (revision.createdByUserId !== null && revision.createdByUserId !== undefined) {\n <span>User {{ revision.createdByUserId }}</span>\n }\n @if (!revision.snapshot) {\n <span>Legacy revision - cannot be restored</span>\n }\n </mat-radio-button>\n } @empty {\n <p>No revisions are available.</p>\n }\n </mat-radio-group>\n }\n @if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n <button mat-button type=\"button\" [disabled]=\"loading() || applying()\" (click)=\"load()\">Reload revisions</button>\n }\n @if (applying()) {\n <p role=\"status\">Restoring...</p>\n }\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button mat-button type=\"button\" [disabled]=\"applying()\" (click)=\"cancel()\">Cancel</button>\n <button mat-flat-button type=\"button\" [disabled]=\"loading() || applying() || selected() === null\" (click)=\"apply()\">Apply</button>\n</mat-dialog-actions>\n", styles: ["mat-radio-group{display:flex;flex-direction:column;gap:1rem}mat-radio-button span{display:block;font-size:.875rem;opacity:.7}[role=alert]{color:#b3261e}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i3.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i3.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4617
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsRevisionChooserComponent, isStandalone: true, selector: "taon-cms-revision-chooser", host: { listeners: { "document:keydown.escape": "onEscape($event)" } }, providers: [TaonCmsContentRevisionApiService], ngImport: i0, template: "<h2 mat-dialog-title>{{ t.gettext('Restore a revision') }}</h2>\n<mat-dialog-content>\n <p>\n {{\n t.gettext(\n 'Restoring replaces the post, including its status, with the selected revision.'\n )\n }}\n </p>\n @if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading revisions...') }}</p>\n } @else {\n <mat-radio-group\n [attr.aria-label]=\"t.gettext('Post revisions')\"\n [value]=\"selected()\"\n (change)=\"selected.set($event.value)\"\n [disabled]=\"applying()\">\n @for (revision of revisions(); track revision.id) {\n <mat-radio-button\n [value]=\"revision.revisionNumber\"\n [disabled]=\"!revision.snapshot\">\n <strong>{{\n t.gettext('Revision [[ revisionNumber ]]', {\n revisionNumber: revision.revisionNumber,\n })\n }}</strong>\n <span>{{ revision.createdAt | date: 'medium' }}</span>\n @if (\n revision.createdByUserId !== null &&\n revision.createdByUserId !== undefined\n ) {\n <span>{{\n t.gettext('User [[ userId ]]', {\n userId: revision.createdByUserId,\n })\n }}</span>\n }\n @if (!revision.snapshot) {\n <span>{{ t.gettext('Legacy revision - cannot be restored') }}</span>\n }\n </mat-radio-button>\n } @empty {\n <p>{{ t.gettext('No revisions are available.') }}</p>\n }\n </mat-radio-group>\n }\n @if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"loading() || applying()\"\n (click)=\"load()\">\n {{ t.gettext('Reload revisions') }}\n </button>\n }\n @if (applying()) {\n <p role=\"status\">{{ t.gettext('Restoring...') }}</p>\n }\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button\n mat-button\n type=\"button\"\n [disabled]=\"applying()\"\n (click)=\"cancel()\">\n {{ t.gettext('Cancel') }}\n </button>\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"loading() || applying() || selected() === null\"\n (click)=\"apply()\">\n {{ t.gettext('Apply') }}\n </button>\n</mat-dialog-actions>\n", styles: ["mat-radio-group{display:flex;flex-direction:column;gap:1rem}mat-radio-button span{display:block;font-size:.875rem;opacity:.7}[role=alert]{color:#b3261e}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i3$1.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i3$1.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3144
4618
  }
3145
4619
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsRevisionChooserComponent, decorators: [{
3146
4620
  type: Component,
3147
- args: [{ selector: 'taon-cms-revision-chooser', changeDetection: ChangeDetectionStrategy.OnPush, imports: [DatePipe, MatButtonModule, MatDialogModule, MatRadioModule], providers: [TaonCmsContentRevisionApiService], template: "<h2 mat-dialog-title>Restore a revision</h2>\n<mat-dialog-content>\n <p>Restoring replaces the post, including its status, with the selected revision.</p>\n @if (loading()) {\n <p role=\"status\">Loading revisions...</p>\n } @else {\n <mat-radio-group aria-label=\"Post revisions\" [value]=\"selected()\" (change)=\"selected.set($event.value)\" [disabled]=\"applying()\">\n @for (revision of revisions(); track revision.id) {\n <mat-radio-button [value]=\"revision.revisionNumber\" [disabled]=\"!revision.snapshot\">\n <strong>Revision {{ revision.revisionNumber }}</strong>\n <span>{{ revision.createdAt | date: 'medium' }}</span>\n @if (revision.createdByUserId !== null && revision.createdByUserId !== undefined) {\n <span>User {{ revision.createdByUserId }}</span>\n }\n @if (!revision.snapshot) {\n <span>Legacy revision - cannot be restored</span>\n }\n </mat-radio-button>\n } @empty {\n <p>No revisions are available.</p>\n }\n </mat-radio-group>\n }\n @if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n <button mat-button type=\"button\" [disabled]=\"loading() || applying()\" (click)=\"load()\">Reload revisions</button>\n }\n @if (applying()) {\n <p role=\"status\">Restoring...</p>\n }\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button mat-button type=\"button\" [disabled]=\"applying()\" (click)=\"cancel()\">Cancel</button>\n <button mat-flat-button type=\"button\" [disabled]=\"loading() || applying() || selected() === null\" (click)=\"apply()\">Apply</button>\n</mat-dialog-actions>\n", styles: ["mat-radio-group{display:flex;flex-direction:column;gap:1rem}mat-radio-button span{display:block;font-size:.875rem;opacity:.7}[role=alert]{color:#b3261e}\n"] }]
3148
- }], ctorParameters: () => [] });
4621
+ args: [{ selector: 'taon-cms-revision-chooser', changeDetection: ChangeDetectionStrategy.OnPush, imports: [DatePipe, MatButtonModule, MatDialogModule, MatRadioModule], providers: [TaonCmsContentRevisionApiService], template: "<h2 mat-dialog-title>{{ t.gettext('Restore a revision') }}</h2>\n<mat-dialog-content>\n <p>\n {{\n t.gettext(\n 'Restoring replaces the post, including its status, with the selected revision.'\n )\n }}\n </p>\n @if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading revisions...') }}</p>\n } @else {\n <mat-radio-group\n [attr.aria-label]=\"t.gettext('Post revisions')\"\n [value]=\"selected()\"\n (change)=\"selected.set($event.value)\"\n [disabled]=\"applying()\">\n @for (revision of revisions(); track revision.id) {\n <mat-radio-button\n [value]=\"revision.revisionNumber\"\n [disabled]=\"!revision.snapshot\">\n <strong>{{\n t.gettext('Revision [[ revisionNumber ]]', {\n revisionNumber: revision.revisionNumber,\n })\n }}</strong>\n <span>{{ revision.createdAt | date: 'medium' }}</span>\n @if (\n revision.createdByUserId !== null &&\n revision.createdByUserId !== undefined\n ) {\n <span>{{\n t.gettext('User [[ userId ]]', {\n userId: revision.createdByUserId,\n })\n }}</span>\n }\n @if (!revision.snapshot) {\n <span>{{ t.gettext('Legacy revision - cannot be restored') }}</span>\n }\n </mat-radio-button>\n } @empty {\n <p>{{ t.gettext('No revisions are available.') }}</p>\n }\n </mat-radio-group>\n }\n @if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"loading() || applying()\"\n (click)=\"load()\">\n {{ t.gettext('Reload revisions') }}\n </button>\n }\n @if (applying()) {\n <p role=\"status\">{{ t.gettext('Restoring...') }}</p>\n }\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button\n mat-button\n type=\"button\"\n [disabled]=\"applying()\"\n (click)=\"cancel()\">\n {{ t.gettext('Cancel') }}\n </button>\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"loading() || applying() || selected() === null\"\n (click)=\"apply()\">\n {{ t.gettext('Apply') }}\n </button>\n</mat-dialog-actions>\n", styles: ["mat-radio-group{display:flex;flex-direction:column;gap:1rem}mat-radio-button span{display:block;font-size:.875rem;opacity:.7}[role=alert]{color:#b3261e}\n"] }]
4622
+ }], ctorParameters: () => [], propDecorators: { onEscape: [{
4623
+ type: HostListener,
4624
+ args: ['document:keydown.escape', ['$event']]
4625
+ }] } });
3149
4626
 
4627
+ const t$4 = Translation.for('src/lib/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.ts', { "src/lib/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.html": { "en-US": async () => (await import('./cms-websql-prod-taon-related-post-chooser.component.html.en-US.i18n.data-D5F4Gof4.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-related-post-chooser.component.html.pl-PL.i18n.data-CupgNbP7.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-related-post-chooser.component.html.de-DE.i18n.data-BkJG3Jev.mjs')).default }, "src/lib/taon-posts/taon-related-post-chooser/taon-related-post-chooser.component.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-related-post-chooser.component.ts.en-US.i18n.data-Bq84gw3j.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-related-post-chooser.component.ts.pl-PL.i18n.data-BIhfEto8.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-related-post-chooser.component.ts.de-DE.i18n.data-O04abirC.mjs')).default } });
3150
4628
  class TaonRelatedPostChooserComponent {
3151
4629
  constructor() {
4630
+ this.t = t$4.for(this);
3152
4631
  this.data = inject(MAT_DIALOG_DATA);
3153
4632
  this.posts = signal([], ...(ngDevMode ? [{ debugName: "posts" }] : []));
3154
4633
  this.selected = signal(null, ...(ngDevMode ? [{ debugName: "selected" }] : []));
@@ -3179,7 +4658,7 @@ class TaonRelatedPostChooserComponent {
3179
4658
  next: posts => this.posts.set(posts),
3180
4659
  error: (error) => {
3181
4660
  console.error('[taon-related-post-chooser] Unable to load posts', error);
3182
- this.error.set('Posts could not be loaded. Please try again.');
4661
+ this.error.set(this.t.gettext('Posts could not be loaded. Please try again.'));
3183
4662
  },
3184
4663
  });
3185
4664
  }
@@ -3195,7 +4674,7 @@ class TaonRelatedPostChooserComponent {
3195
4674
  }
3196
4675
  const post = this.filteredPosts().find(post => post.id === this.selected());
3197
4676
  if (!post) {
3198
- this.error.set('Select a related post.');
4677
+ this.error.set(this.t.gettext('Select a related post.'));
3199
4678
  return;
3200
4679
  }
3201
4680
  this.ref.close(post);
@@ -3204,26 +4683,169 @@ class TaonRelatedPostChooserComponent {
3204
4683
  this.ref.close();
3205
4684
  }
3206
4685
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonRelatedPostChooserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3207
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonRelatedPostChooserComponent, isStandalone: true, selector: "taon-related-post-chooser", providers: [TaonCmsContentApiService], ngImport: i0, template: "<h2 mat-dialog-title>Add related post</h2>\n<mat-dialog-content>\n <label class=\"search-field\">\n <span>Search posts</span>\n <input type=\"search\" aria-label=\"Search posts by ID, title or slug\" [value]=\"query()\" [disabled]=\"loading()\" (input)=\"search($event)\" />\n </label>\n @if (loading()) {\n <p role=\"status\">Loading posts...</p>\n } @else if (error()) {\n <p class=\"error\" role=\"alert\">{{ error() }}</p>\n <button mat-button type=\"button\" (click)=\"load()\">Try again</button>\n } @else {\n <mat-radio-group aria-label=\"Related post\" [value]=\"selected()\" (change)=\"selected.set($event.value)\">\n @for (post of filteredPosts(); track post.id) {\n <mat-radio-button [value]=\"post.id\">\n #{{ post.id }} - {{ post.title }} <span class=\"slug\">{{ post.slug }}</span>\n </mat-radio-button>\n } @empty {\n <p>No matching posts available.</p>\n }\n </mat-radio-group>\n }\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button mat-button type=\"button\" (click)=\"cancel()\">Cancel</button>\n <button mat-flat-button type=\"button\" [disabled]=\"loading() || !!error() || selected() === null\" (click)=\"choose()\">Add related post</button>\n</mat-dialog-actions>\n", styles: [".search-field,mat-radio-group{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.search-field input{padding:.5rem;color:inherit;background:transparent;border:1px solid rgba(136,136,136,.3333333333);border-radius:4px}.slug{display:block;opacity:.7;overflow-wrap:anywhere}.error{color:#b3261e}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i3.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i3.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4686
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonRelatedPostChooserComponent, isStandalone: true, selector: "taon-related-post-chooser", providers: [TaonCmsContentApiService], ngImport: i0, template: "<h2 mat-dialog-title>{{ t.gettext('Add related post') }}</h2>\n<mat-dialog-content>\n <label class=\"search-field\">\n <span>{{ t.gettext('Search posts') }}</span>\n <input\n type=\"search\"\n [attr.aria-label]=\"t.gettext('Search posts by ID, title or slug')\"\n [value]=\"query()\"\n [disabled]=\"loading()\"\n (input)=\"search($event)\" />\n </label>\n @if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading posts...') }}</p>\n } @else if (error()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ error() }}\n </p>\n <button\n mat-button\n type=\"button\"\n (click)=\"load()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <mat-radio-group\n [attr.aria-label]=\"t.gettext('Related post')\"\n [value]=\"selected()\"\n (change)=\"selected.set($event.value)\">\n @for (post of filteredPosts(); track post.id) {\n <mat-radio-button [value]=\"post.id\">\n #{{ post.id }} - {{ post.title }}\n <span class=\"slug\">{{ post.slug }}</span>\n </mat-radio-button>\n } @empty {\n <p>{{ t.gettext('No matching posts available.') }}</p>\n }\n </mat-radio-group>\n }\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button\n mat-button\n type=\"button\"\n (click)=\"cancel()\">\n {{ t.gettext('Cancel') }}\n </button>\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"loading() || !!error() || selected() === null\"\n (click)=\"choose()\">\n {{ t.gettext('Add related post') }}\n </button>\n</mat-dialog-actions>\n", styles: [".search-field,mat-radio-group{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.search-field input{padding:.5rem;color:inherit;background:transparent;border:1px solid rgba(136,136,136,.3333333333);border-radius:4px}.slug{display:block;opacity:.7;overflow-wrap:anywhere}.error{color:#b3261e}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i3$1.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i3$1.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3208
4687
  }
3209
4688
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonRelatedPostChooserComponent, decorators: [{
3210
4689
  type: Component,
3211
- args: [{ selector: 'taon-related-post-chooser', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatButtonModule, MatDialogModule, MatRadioModule], providers: [TaonCmsContentApiService], template: "<h2 mat-dialog-title>Add related post</h2>\n<mat-dialog-content>\n <label class=\"search-field\">\n <span>Search posts</span>\n <input type=\"search\" aria-label=\"Search posts by ID, title or slug\" [value]=\"query()\" [disabled]=\"loading()\" (input)=\"search($event)\" />\n </label>\n @if (loading()) {\n <p role=\"status\">Loading posts...</p>\n } @else if (error()) {\n <p class=\"error\" role=\"alert\">{{ error() }}</p>\n <button mat-button type=\"button\" (click)=\"load()\">Try again</button>\n } @else {\n <mat-radio-group aria-label=\"Related post\" [value]=\"selected()\" (change)=\"selected.set($event.value)\">\n @for (post of filteredPosts(); track post.id) {\n <mat-radio-button [value]=\"post.id\">\n #{{ post.id }} - {{ post.title }} <span class=\"slug\">{{ post.slug }}</span>\n </mat-radio-button>\n } @empty {\n <p>No matching posts available.</p>\n }\n </mat-radio-group>\n }\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button mat-button type=\"button\" (click)=\"cancel()\">Cancel</button>\n <button mat-flat-button type=\"button\" [disabled]=\"loading() || !!error() || selected() === null\" (click)=\"choose()\">Add related post</button>\n</mat-dialog-actions>\n", styles: [".search-field,mat-radio-group{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.search-field input{padding:.5rem;color:inherit;background:transparent;border:1px solid rgba(136,136,136,.3333333333);border-radius:4px}.slug{display:block;opacity:.7;overflow-wrap:anywhere}.error{color:#b3261e}\n"] }]
4690
+ args: [{ selector: 'taon-related-post-chooser', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatButtonModule, MatDialogModule, MatRadioModule], providers: [TaonCmsContentApiService], template: "<h2 mat-dialog-title>{{ t.gettext('Add related post') }}</h2>\n<mat-dialog-content>\n <label class=\"search-field\">\n <span>{{ t.gettext('Search posts') }}</span>\n <input\n type=\"search\"\n [attr.aria-label]=\"t.gettext('Search posts by ID, title or slug')\"\n [value]=\"query()\"\n [disabled]=\"loading()\"\n (input)=\"search($event)\" />\n </label>\n @if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading posts...') }}</p>\n } @else if (error()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ error() }}\n </p>\n <button\n mat-button\n type=\"button\"\n (click)=\"load()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <mat-radio-group\n [attr.aria-label]=\"t.gettext('Related post')\"\n [value]=\"selected()\"\n (change)=\"selected.set($event.value)\">\n @for (post of filteredPosts(); track post.id) {\n <mat-radio-button [value]=\"post.id\">\n #{{ post.id }} - {{ post.title }}\n <span class=\"slug\">{{ post.slug }}</span>\n </mat-radio-button>\n } @empty {\n <p>{{ t.gettext('No matching posts available.') }}</p>\n }\n </mat-radio-group>\n }\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button\n mat-button\n type=\"button\"\n (click)=\"cancel()\">\n {{ t.gettext('Cancel') }}\n </button>\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"loading() || !!error() || selected() === null\"\n (click)=\"choose()\">\n {{ t.gettext('Add related post') }}\n </button>\n</mat-dialog-actions>\n", styles: [".search-field,mat-radio-group{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.search-field input{padding:.5rem;color:inherit;background:transparent;border:1px solid rgba(136,136,136,.3333333333);border-radius:4px}.slug{display:block;opacity:.7;overflow-wrap:anywhere}.error{color:#b3261e}\n"] }]
3212
4691
  }], ctorParameters: () => [] });
3213
4692
 
4693
+ function defaultThumbnailKey(type) {
4694
+ return `cms-placeholder:${type}`;
4695
+ }
4696
+ function defaultThumbnailUrl(key) {
4697
+ const type = Object.values(TaonCmsContentType).find(value => key === defaultThumbnailKey(value));
4698
+ if (!type) {
4699
+ return null;
4700
+ }
4701
+ const shapes = {
4702
+ normal: '<path d="M260 126h120v112H260z M280 152h80m-80 20h80m-80 20h52" />',
4703
+ video: '<rect x="248" y="132" width="144" height="100" rx="16"/><path d="m308 158 40 24-40 24z"/>',
4704
+ audio: '<path d="M280 164v40m20-60v80m20-98v116m20-98v80m20-60v40"/>',
4705
+ attachment: '<path d="M276 124h60l32 32v84h-92z M336 124v36h32m-70 30h48m-48 22h36"/>',
4706
+ };
4707
+ const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="640" height="360" viewBox="0 0 640 360"><defs><linearGradient id="bg" x2="1" y2="1"><stop stop-color="#eaf0ff"/><stop offset="1" stop-color="#e4f5f0"/></linearGradient></defs><rect width="640" height="360" rx="24" fill="url(#bg)"/><circle cx="320" cy="180" r="112" fill="#fff" opacity=".65"/><g fill="none" stroke="#52669a" stroke-width="7" stroke-linecap="round" stroke-linejoin="round">${shapes[type]}</g></svg>`;
4708
+ return `data:image/svg+xml,${encodeURIComponent(svg)}`;
4709
+ }
4710
+ function visiblePixelRatio(pixels) {
4711
+ let visible = 0;
4712
+ for (let index = 0; index < pixels.length; index += 4) {
4713
+ const luminance = 0.2126 * pixels[index] +
4714
+ 0.7152 * pixels[index + 1] +
4715
+ 0.0722 * pixels[index + 2];
4716
+ if (luminance > 18) {
4717
+ visible += 1;
4718
+ }
4719
+ }
4720
+ return pixels.length ? visible / (pixels.length / 4) : 0;
4721
+ }
4722
+ function videoEvent(video, event, action) {
4723
+ return new Promise((resolve, reject) => {
4724
+ const cleanup = () => {
4725
+ clearTimeout(timeout);
4726
+ video.removeEventListener(event, done);
4727
+ video.removeEventListener('error', failed);
4728
+ };
4729
+ const done = () => {
4730
+ cleanup();
4731
+ resolve();
4732
+ };
4733
+ const failed = () => {
4734
+ cleanup();
4735
+ reject(new Error(video.error?.message || 'Video decoding failed.'));
4736
+ };
4737
+ const timeout = setTimeout(() => {
4738
+ cleanup();
4739
+ reject(new Error('Video decoding timed out.'));
4740
+ }, 15000);
4741
+ video.addEventListener(event, done, { once: true });
4742
+ video.addEventListener('error', failed, { once: true });
4743
+ try {
4744
+ action();
4745
+ }
4746
+ catch (error) {
4747
+ cleanup();
4748
+ reject(error);
4749
+ }
4750
+ });
4751
+ }
4752
+ async function generateVideoThumbnail(file) {
4753
+ const video = document.createElement('video');
4754
+ const url = URL.createObjectURL(file);
4755
+ try {
4756
+ video.muted = true;
4757
+ video.playsInline = true;
4758
+ video.preload = 'auto';
4759
+ await videoEvent(video, 'loadeddata', () => {
4760
+ video.src = url;
4761
+ video.load();
4762
+ });
4763
+ if (!video.videoWidth || !video.videoHeight) {
4764
+ throw new Error('The video has no decodable dimensions.');
4765
+ }
4766
+ const analysis = document.createElement('canvas');
4767
+ analysis.width = 64;
4768
+ analysis.height = Math.max(1, Math.round((64 * video.videoHeight) / video.videoWidth));
4769
+ const context = analysis.getContext('2d', { willReadFrequently: true });
4770
+ if (!context) {
4771
+ throw new Error('Canvas is unavailable.');
4772
+ }
4773
+ const seek = async (time) => {
4774
+ if (Math.abs(video.currentTime - time) > 0.001) {
4775
+ await videoEvent(video, 'seeked', () => {
4776
+ video.currentTime = time;
4777
+ });
4778
+ }
4779
+ };
4780
+ const end = Number.isFinite(video.duration)
4781
+ ? Math.min(5, Math.max(0, video.duration - 0.01))
4782
+ : 5;
4783
+ let bestTime = 0;
4784
+ let bestRatio = -1;
4785
+ let found = false;
4786
+ for (let time = 0; time <= end; time += 0.25) {
4787
+ await seek(time);
4788
+ context.drawImage(video, 0, 0, analysis.width, analysis.height);
4789
+ const ratio = visiblePixelRatio(context.getImageData(0, 0, analysis.width, analysis.height).data);
4790
+ if (ratio > bestRatio) {
4791
+ bestRatio = ratio;
4792
+ bestTime = time;
4793
+ }
4794
+ // Small highlights or a subject in a dark scene are enough.
4795
+ if (ratio >= 0.02) {
4796
+ found = true;
4797
+ break;
4798
+ }
4799
+ }
4800
+ if (!found) {
4801
+ await seek(bestTime);
4802
+ }
4803
+ const canvas = document.createElement('canvas');
4804
+ const scale = Math.min(1, 1280 / video.videoWidth, 720 / video.videoHeight);
4805
+ canvas.width = Math.max(1, Math.round(video.videoWidth * scale));
4806
+ canvas.height = Math.max(1, Math.round(video.videoHeight * scale));
4807
+ const output = canvas.getContext('2d');
4808
+ if (!output) {
4809
+ throw new Error('Canvas is unavailable.');
4810
+ }
4811
+ output.drawImage(video, 0, 0, canvas.width, canvas.height);
4812
+ return await new Promise((resolve, reject) => {
4813
+ canvas.toBlob(blob => blob
4814
+ ? resolve(blob)
4815
+ : reject(new Error('Thumbnail encoding failed.')), 'image/webp', 0.85);
4816
+ });
4817
+ }
4818
+ finally {
4819
+ try {
4820
+ video.pause();
4821
+ video.removeAttribute('src');
4822
+ video.load();
4823
+ }
4824
+ finally {
4825
+ URL.revokeObjectURL(url);
4826
+ }
4827
+ }
4828
+ }
4829
+
3214
4830
  //#region imports
3215
4831
  //#endregion
4832
+ const t$3 = Translation.for('src/lib/taon-posts/taon-cms-post/taon-cms-post.component.ts', { "src/lib/taon-posts/taon-cms-post/taon-cms-post.component.html": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-post.component.html.en-US.i18n.data-g9lHRbOQ.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-post.component.html.pl-PL.i18n.data-Cg4a0vHn.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-post.component.html.de-DE.i18n.data-BxcX3l2T.mjs')).default }, "src/lib/taon-posts/taon-cms-post/taon-cms-post.component.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-post.component.ts.en-US.i18n.data-R5nOhvtu.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-post.component.ts.pl-PL.i18n.data-VmobXbTc.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-post.component.ts.de-DE.i18n.data-BwRnTGxe.mjs')).default } });
3216
4833
  class TaonCmsPostComponent {
3217
4834
  //#endregion
3218
4835
  //#region constructor
3219
4836
  constructor() {
4837
+ this.t = t$3.for(this);
3220
4838
  //#region fields and getters
3221
4839
  this.post = input(null, ...(ngDevMode ? [{ debugName: "post" }] : []));
3222
4840
  this.mode = model('view', ...(ngDevMode ? [{ debugName: "mode" }] : []));
3223
4841
  this.changed = output();
3224
4842
  this.deleted = output();
4843
+ this.duplicated = output();
3225
4844
  this.cancelled = output();
3226
4845
  this.currentPost = signal(null, ...(ngDevMode ? [{ debugName: "currentPost" }] : []));
4846
+ this.placeholderShortIntro = this.t.signal.gettext('A short introduction...');
4847
+ this.placeholderTitle = this.t.signal.gettext('Title');
4848
+ this.placeholderTellYourStory = this.t.signal.gettext('Tell your story...');
3227
4849
  this.draft = signal({
3228
4850
  type: TaonCmsContentType.Normal,
3229
4851
  title: '',
@@ -3233,39 +4855,76 @@ class TaonCmsPostComponent {
3233
4855
  videoKey: null,
3234
4856
  audioKey: null,
3235
4857
  attachmentKey: null,
4858
+ thumbnailKey: null,
4859
+ categoryId: null,
4860
+ tagIds: [],
3236
4861
  }, ...(ngDevMode ? [{ debugName: "draft" }] : []));
3237
4862
  this.postTypes = [
3238
- { value: TaonCmsContentType.Normal, label: 'Normal post' },
3239
- { value: TaonCmsContentType.Video, label: 'Video post' },
3240
- { value: TaonCmsContentType.Audio, label: 'Audio post' },
3241
- { value: TaonCmsContentType.Attachment, label: 'Attachment post' },
4863
+ {
4864
+ value: TaonCmsContentType.Normal,
4865
+ label: this.t.gettext('Normal post'),
4866
+ },
4867
+ { value: TaonCmsContentType.Video, label: this.t.gettext('Video post') },
4868
+ { value: TaonCmsContentType.Audio, label: this.t.gettext('Audio post') },
4869
+ {
4870
+ value: TaonCmsContentType.Attachment,
4871
+ label: this.t.gettext('Attachment post'),
4872
+ },
3242
4873
  ];
3243
4874
  this.mediaAttachments = [
3244
4875
  {
3245
4876
  type: TaonCmsContentType.Video,
3246
4877
  key: 'videoKey',
3247
- heading: 'Video Attachment',
3248
- uploadLabel: 'Upload video',
4878
+ heading: this.t.gettext('Video Attachment'),
4879
+ uploadLabel: this.t.gettext('Upload video'),
3249
4880
  accept: 'video/*',
3250
4881
  },
3251
4882
  {
3252
4883
  type: TaonCmsContentType.Audio,
3253
4884
  key: 'audioKey',
3254
- heading: 'Audio Attachment',
3255
- uploadLabel: 'Upload audio',
4885
+ heading: this.t.gettext('Audio Attachment'),
4886
+ uploadLabel: this.t.gettext('Upload audio'),
3256
4887
  accept: 'audio/*',
3257
4888
  },
3258
4889
  {
3259
4890
  type: TaonCmsContentType.Attachment,
3260
4891
  key: 'attachmentKey',
3261
- heading: 'File Attachment',
3262
- uploadLabel: 'Upload file',
4892
+ heading: this.t.gettext('File Attachment'),
4893
+ uploadLabel: this.t.gettext('Upload file'),
3263
4894
  accept: '',
3264
4895
  },
3265
4896
  ];
3266
4897
  this.mediaAttachment = computed(() => this.mediaAttachments.find(media => media.type === this.draft().type), ...(ngDevMode ? [{ debugName: "mediaAttachment" }] : []));
3267
4898
  this.busy = signal(false, ...(ngDevMode ? [{ debugName: "busy" }] : []));
4899
+ this.thumbnailPreviewUrl = signal('', ...(ngDevMode ? [{ debugName: "thumbnailPreviewUrl" }] : []));
4900
+ this.thumbnailError = signal('', ...(ngDevMode ? [{ debugName: "thumbnailError" }] : []));
4901
+ this.thumbnailReference = computed(() => this.draft().thumbnailKey, ...(ngDevMode ? [{ debugName: "thumbnailReference" }] : []));
4902
+ this.thumbnailSlug = computed(() => this.draft().slug, ...(ngDevMode ? [{ debugName: "thumbnailSlug" }] : []));
4903
+ this.taxonomyLoading = signal(false, ...(ngDevMode ? [{ debugName: "taxonomyLoading" }] : []));
4904
+ this.taxonomyError = signal('', ...(ngDevMode ? [{ debugName: "taxonomyError" }] : []));
4905
+ this.categories = signal([], ...(ngDevMode ? [{ debugName: "categories" }] : []));
4906
+ this.tags = signal([], ...(ngDevMode ? [{ debugName: "tags" }] : []));
4907
+ this.tagSearch = signal('', ...(ngDevMode ? [{ debugName: "tagSearch" }] : []));
4908
+ this.filteredTags = computed(() => {
4909
+ const query = this.tagSearch().trim().toLowerCase();
4910
+ return this.tags().filter(tag => !this.draft().tagIds.includes(tag.id) &&
4911
+ `${tag.name} ${tag.slug}`.toLowerCase().includes(query));
4912
+ }, ...(ngDevMode ? [{ debugName: "filteredTags" }] : []));
4913
+ this.selectedTags = computed(() => this.tags().filter(tag => this.draft().tagIds.includes(tag.id)), ...(ngDevMode ? [{ debugName: "selectedTags" }] : []));
4914
+ this.categoryApi = inject(TaonCmsCategoryApiService);
4915
+ this.tagApi = inject(TaonCmsTagApiService);
4916
+ this.editorSession = 0;
4917
+ this.thumbnailObjectUrl = '';
4918
+ this.stagedThumbnail = signal(null, ...(ngDevMode ? [{ debugName: "stagedThumbnail" }] : []));
3268
4919
  this.uploading = signal(false, ...(ngDevMode ? [{ debugName: "uploading" }] : []));
4920
+ this.uploadProgress = signal(0, ...(ngDevMode ? [{ debugName: "uploadProgress" }] : []));
4921
+ this.mediaPreviewUrl = signal('', ...(ngDevMode ? [{ debugName: "mediaPreviewUrl" }] : []));
4922
+ this.mediaPreviewLoading = signal(false, ...(ngDevMode ? [{ debugName: "mediaPreviewLoading" }] : []));
4923
+ this.mediaPreviewError = signal('', ...(ngDevMode ? [{ debugName: "mediaPreviewError" }] : []));
4924
+ this.mediaFileNames = signal({}, ...(ngDevMode ? [{ debugName: "mediaFileNames" }] : []));
4925
+ this.uploadedMediaPreview = signal(null, ...(ngDevMode ? [{ debugName: "uploadedMediaPreview" }] : []));
4926
+ this.mediaPreviewRequest = 0;
4927
+ this.mediaPreviewSignature = '';
3269
4928
  this.dialogOpen = signal(false, ...(ngDevMode ? [{ debugName: "dialogOpen" }] : []));
3270
4929
  this.error = signal('', ...(ngDevMode ? [{ debugName: "error" }] : []));
3271
4930
  this.relatedPosts = signal([], ...(ngDevMode ? [{ debugName: "relatedPosts" }] : []));
@@ -3277,6 +4936,8 @@ class TaonCmsPostComponent {
3277
4936
  this.useAsApplicationHook = signal(false, ...(ngDevMode ? [{ debugName: "useAsApplicationHook" }] : []));
3278
4937
  this.selectedApplicationHook = signal(null, ...(ngDevMode ? [{ debugName: "selectedApplicationHook" }] : []));
3279
4938
  this.permissions = signal([], ...(ngDevMode ? [{ debugName: "permissions" }] : []));
4939
+ this.applyPermissionsToRelatedPosts = signal(false, ...(ngDevMode ? [{ debugName: "applyPermissionsToRelatedPosts" }] : []));
4940
+ this.permissionSource = signal(null, ...(ngDevMode ? [{ debugName: "permissionSource" }] : []));
3280
4941
  this.permissionsLoading = signal(false, ...(ngDevMode ? [{ debugName: "permissionsLoading" }] : []));
3281
4942
  this.permissionsError = signal('', ...(ngDevMode ? [{ debugName: "permissionsError" }] : []));
3282
4943
  this.permissionOptions = signal([], ...(ngDevMode ? [{ debugName: "permissionOptions" }] : []));
@@ -3296,7 +4957,9 @@ class TaonCmsPostComponent {
3296
4957
  !this.applicationHooksError() &&
3297
4958
  (!this.useAsApplicationHook() || !!this.selectedApplicationHook()) &&
3298
4959
  !this.permissionsLoading() &&
3299
- !this.permissionsError(), ...(ngDevMode ? [{ debugName: "canSave" }] : []));
4960
+ !this.permissionsError() &&
4961
+ !this.taxonomyLoading() &&
4962
+ !this.taxonomyError(), ...(ngDevMode ? [{ debugName: "canSave" }] : []));
3300
4963
  this.canPublish = computed(() => {
3301
4964
  const post = this.currentPost();
3302
4965
  return !!post && post.status !== 'published';
@@ -3314,12 +4977,243 @@ class TaonCmsPostComponent {
3314
4977
  untracked(() => {
3315
4978
  this.loadApplicationHooks();
3316
4979
  this.loadPermissionOptions();
4980
+ this.loadTaxonomy();
3317
4981
  });
3318
4982
  }
3319
4983
  });
4984
+ effect(onCleanup => {
4985
+ const key = this.thumbnailReference();
4986
+ const slug = this.thumbnailSlug();
4987
+ const editing = this.editing();
4988
+ const staged = this.stagedThumbnail();
4989
+ let active = true;
4990
+ onCleanup(() => {
4991
+ active = false;
4992
+ });
4993
+ this.thumbnailError.set('');
4994
+ this.thumbnailPreviewUrl.set('');
4995
+ if (staged && staged.key === key) {
4996
+ this.thumbnailPreviewUrl.set(staged.url);
4997
+ return;
4998
+ }
4999
+ if (!key) {
5000
+ return;
5001
+ }
5002
+ const placeholder = defaultThumbnailUrl(key);
5003
+ if (placeholder) {
5004
+ this.thumbnailPreviewUrl.set(placeholder);
5005
+ return;
5006
+ }
5007
+ if (!slug) {
5008
+ return;
5009
+ }
5010
+ const load = async () => {
5011
+ if (editing) {
5012
+ return this.api.getAssetUrl(key);
5013
+ }
5014
+ try {
5015
+ return await this.api.getThumbnailLinkBySlug(slug, true);
5016
+ }
5017
+ catch {
5018
+ return this.api.getThumbnailLinkBySlug(slug);
5019
+ }
5020
+ };
5021
+ void load()
5022
+ .then(url => {
5023
+ if (active && !this.destroyRef.destroyed) {
5024
+ this.thumbnailPreviewUrl.set(url);
5025
+ }
5026
+ })
5027
+ .catch((error) => {
5028
+ console.error('[taon-cms-post] Unable to load thumbnail', error);
5029
+ if (active && !this.destroyRef.destroyed) {
5030
+ this.thumbnailError.set(this.t.gettext('The thumbnail could not be loaded.'));
5031
+ }
5032
+ });
5033
+ });
5034
+ this.destroyRef.onDestroy(() => this.releaseThumbnailPreview());
5035
+ effect(() => {
5036
+ const media = this.mediaAttachment();
5037
+ const key = media ? this.draft()[media.key] : null;
5038
+ const slug = this.draft().slug;
5039
+ const editing = this.editing();
5040
+ const viewing = !!this.currentPost() && this.mode() !== 'add';
5041
+ const stagedPreview = this.uploadedMediaPreview();
5042
+ if ((!editing && !viewing) || !media || !key) {
5043
+ this.mediaPreviewSignature = '';
5044
+ this.mediaPreviewRequest += 1;
5045
+ this.mediaPreviewUrl.set('');
5046
+ this.mediaPreviewLoading.set(false);
5047
+ this.mediaPreviewError.set('');
5048
+ return;
5049
+ }
5050
+ if (stagedPreview?.key === key) {
5051
+ const signature = `upload:${key}:${stagedPreview.url}`;
5052
+ if (signature === this.mediaPreviewSignature) {
5053
+ return;
5054
+ }
5055
+ this.mediaPreviewSignature = signature;
5056
+ this.mediaPreviewRequest += 1;
5057
+ this.mediaPreviewUrl.set(stagedPreview.url);
5058
+ this.mediaPreviewLoading.set(false);
5059
+ this.mediaPreviewError.set('');
5060
+ return;
5061
+ }
5062
+ if (!slug) {
5063
+ this.mediaPreviewSignature = '';
5064
+ this.mediaPreviewRequest += 1;
5065
+ this.mediaPreviewUrl.set('');
5066
+ this.mediaPreviewLoading.set(false);
5067
+ this.mediaPreviewError.set('');
5068
+ return;
5069
+ }
5070
+ const signature = `${this.mode()}:${media.type}:${slug}:${key}`;
5071
+ if (signature === this.mediaPreviewSignature) {
5072
+ return;
5073
+ }
5074
+ this.mediaPreviewSignature = signature;
5075
+ const requestId = ++this.mediaPreviewRequest;
5076
+ this.mediaPreviewUrl.set('');
5077
+ this.mediaPreviewLoading.set(true);
5078
+ this.mediaPreviewError.set('');
5079
+ const getLink = editing
5080
+ ? this.getMediaLink(slug, media.type)
5081
+ : this.getMediaLinkForView(slug, media.type);
5082
+ void getLink
5083
+ .then(url => {
5084
+ if (requestId === this.mediaPreviewRequest &&
5085
+ !this.destroyRef.destroyed) {
5086
+ this.mediaPreviewUrl.set(url);
5087
+ }
5088
+ })
5089
+ .catch((error) => {
5090
+ console.error('[taon-cms-post] Unable to load media preview', error);
5091
+ if (requestId === this.mediaPreviewRequest &&
5092
+ !this.destroyRef.destroyed) {
5093
+ this.mediaPreviewError.set(this.t.gettext('Media preview could not be loaded. Please reopen the editor to try again.'));
5094
+ }
5095
+ })
5096
+ .finally(() => {
5097
+ if (requestId === this.mediaPreviewRequest &&
5098
+ !this.destroyRef.destroyed) {
5099
+ this.mediaPreviewLoading.set(false);
5100
+ }
5101
+ });
5102
+ });
3320
5103
  }
3321
5104
  //#endregion
3322
5105
  //#region methods / load related posts
5106
+ loadTaxonomy() {
5107
+ this.taxonomyLoad?.unsubscribe();
5108
+ const session = this.editorSession;
5109
+ const postId = this.currentPost()?.id;
5110
+ this.taxonomyLoading.set(true);
5111
+ this.taxonomyError.set('');
5112
+ this.taxonomyLoad = forkJoin({
5113
+ categories: this.categoryApi.allMyEntities$,
5114
+ tags: this.tagApi.allMyEntities$,
5115
+ tagIds: postId ? this.api.listTagIds(postId) : of([]),
5116
+ })
5117
+ .pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.taxonomyLoading.set(false)))
5118
+ .subscribe({
5119
+ next: result => {
5120
+ if (session === this.editorSession) {
5121
+ this.categories.set(result.categories.sort((a, b) => a.sortOrder - b.sortOrder || a.name.localeCompare(b.name)));
5122
+ this.tags.set(result.tags);
5123
+ this.updateDraft('tagIds', result.tagIds);
5124
+ }
5125
+ },
5126
+ error: (error) => {
5127
+ console.error('[taon-cms-post] Unable to load categories and tags', error);
5128
+ this.taxonomyError.set(this.t.gettext('Categories and tags could not be loaded. Please try again.'));
5129
+ },
5130
+ });
5131
+ }
5132
+ addTag(id) {
5133
+ if (!this.draft().tagIds.includes(id)) {
5134
+ this.updateDraft('tagIds', [...this.draft().tagIds, id]);
5135
+ }
5136
+ }
5137
+ removeTag(id) {
5138
+ this.updateDraft('tagIds', this.draft().tagIds.filter(selected => selected !== id));
5139
+ }
5140
+ filterTags(event) {
5141
+ if (event.target instanceof HTMLInputElement) {
5142
+ this.tagSearch.set(event.target.value);
5143
+ }
5144
+ }
5145
+ applyDefaultThumbnail() {
5146
+ if (!this.editing() || this.busy() || this.dialogOpen()) {
5147
+ return;
5148
+ }
5149
+ this.releaseThumbnailPreview();
5150
+ this.stagedThumbnail.set(null);
5151
+ this.updateDraft('thumbnailKey', defaultThumbnailKey(this.draft().type));
5152
+ }
5153
+ async thumbnailSelected(event) {
5154
+ if (!(event.target instanceof HTMLInputElement)) {
5155
+ return;
5156
+ }
5157
+ const input = event.target;
5158
+ const file = input.files?.[0];
5159
+ input.value = '';
5160
+ if (!file || !this.editing() || this.busy() || this.dialogOpen()) {
5161
+ return;
5162
+ }
5163
+ if (!file.type.startsWith('image/')) {
5164
+ this.error.set(this.t.gettext('Please select an image for the thumbnail.'));
5165
+ return;
5166
+ }
5167
+ this.busy.set(true);
5168
+ this.error.set('');
5169
+ try {
5170
+ await this.storeThumbnail(file, this.editorSession);
5171
+ }
5172
+ catch (error) {
5173
+ console.error('[taon-cms-post] Unable to upload thumbnail', error);
5174
+ this.error.set(this.t.gettext('The thumbnail could not be uploaded. Please try again.'));
5175
+ }
5176
+ finally {
5177
+ this.busy.set(false);
5178
+ }
5179
+ }
5180
+ async storeThumbnail(file, session) {
5181
+ if (session !== this.editorSession || this.destroyRef.destroyed) {
5182
+ return;
5183
+ }
5184
+ const previousPreview = this.thumbnailPreviewUrl();
5185
+ const previousStaged = this.stagedThumbnail();
5186
+ const preview = URL.createObjectURL(file);
5187
+ this.stagedThumbnail.set({ key: this.draft().thumbnailKey, url: preview });
5188
+ this.thumbnailPreviewUrl.set(preview);
5189
+ try {
5190
+ const object = await this.api.uploadMedia(file);
5191
+ if (session === this.editorSession && !this.destroyRef.destroyed) {
5192
+ this.releaseThumbnailPreview();
5193
+ this.thumbnailObjectUrl = preview;
5194
+ this.stagedThumbnail.set({ key: object.key, url: preview });
5195
+ this.updateDraft('thumbnailKey', object.key);
5196
+ }
5197
+ }
5198
+ catch (error) {
5199
+ if (session === this.editorSession) {
5200
+ this.stagedThumbnail.set(previousStaged);
5201
+ this.thumbnailPreviewUrl.set(previousPreview);
5202
+ }
5203
+ throw error;
5204
+ }
5205
+ finally {
5206
+ if (this.thumbnailObjectUrl !== preview) {
5207
+ URL.revokeObjectURL(preview);
5208
+ }
5209
+ }
5210
+ }
5211
+ releaseThumbnailPreview() {
5212
+ if (this.thumbnailObjectUrl) {
5213
+ URL.revokeObjectURL(this.thumbnailObjectUrl);
5214
+ this.thumbnailObjectUrl = '';
5215
+ }
5216
+ }
3323
5217
  loadRelatedPosts() {
3324
5218
  if (this.busy() || this.relatedPostsLoading()) {
3325
5219
  return;
@@ -3337,7 +5231,7 @@ class TaonCmsPostComponent {
3337
5231
  next: posts => this.relatedPosts.set(posts),
3338
5232
  error: (error) => {
3339
5233
  console.error('[taon-cms-post] Unable to load related posts', error);
3340
- this.relatedPostsError.set('Related posts could not be loaded. Please try again.');
5234
+ this.relatedPostsError.set(this.t.gettext('Related posts could not be loaded. Please try again.'));
3341
5235
  },
3342
5236
  });
3343
5237
  }
@@ -3403,7 +5297,7 @@ class TaonCmsPostComponent {
3403
5297
  },
3404
5298
  error: (error) => {
3405
5299
  console.error('[taon-cms-post] Unable to load application hooks', error);
3406
- this.applicationHooksError.set('Application hooks could not be loaded. Please try again.');
5300
+ this.applicationHooksError.set(this.t.gettext('Application hooks could not be loaded. Please try again.'));
3407
5301
  },
3408
5302
  });
3409
5303
  }
@@ -3420,7 +5314,7 @@ class TaonCmsPostComponent {
3420
5314
  //#endregion
3421
5315
  //#region methods / load permissions
3422
5316
  loadPermissions() {
3423
- if (this.busy() || this.permissionsLoading()) {
5317
+ if (this.permissionsLoading()) {
3424
5318
  return;
3425
5319
  }
3426
5320
  const post = this.requirePost();
@@ -3430,20 +5324,28 @@ class TaonCmsPostComponent {
3430
5324
  this.permissionsLoading.set(true);
3431
5325
  this.permissionsError.set('');
3432
5326
  this.permissionsLoad = this.api
3433
- .listPermissions(post.id)
5327
+ .getPermissionConfiguration(post.id)
3434
5328
  .pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.permissionsLoading.set(false)))
3435
5329
  .subscribe({
3436
- next: permissions => this.permissions.set(permissions),
5330
+ next: configuration => {
5331
+ this.permissions.set(configuration.permissions);
5332
+ this.permissionSource.set(configuration.source);
5333
+ },
3437
5334
  error: (error) => {
3438
5335
  console.error('[taon-cms-post] Unable to load permissions', error);
3439
- this.permissionsError.set('Permissions could not be loaded. Please try again.');
5336
+ this.permissionsError.set(this.t.gettext('Permissions could not be loaded. Please try again.'));
3440
5337
  },
3441
5338
  });
3442
5339
  }
3443
5340
  //#endregion
3444
5341
  //#region methods / add permission
3445
5342
  addPermission() {
3446
- if (!this.editing() || this.busy() || this.dialogOpen()) {
5343
+ if (!this.editing() ||
5344
+ this.busy() ||
5345
+ this.dialogOpen() ||
5346
+ this.permissionSource() ||
5347
+ this.permissionsLoading() ||
5348
+ this.permissionsError()) {
3447
5349
  return;
3448
5350
  }
3449
5351
  const permissionId = this.selectedPermissionId();
@@ -3456,7 +5358,12 @@ class TaonCmsPostComponent {
3456
5358
  //#endregion
3457
5359
  //#region methods / remove permission
3458
5360
  removePermission(id) {
3459
- if (!this.editing() || this.busy() || this.dialogOpen()) {
5361
+ if (!this.editing() ||
5362
+ this.busy() ||
5363
+ this.dialogOpen() ||
5364
+ this.permissionSource() ||
5365
+ this.permissionsLoading() ||
5366
+ this.permissionsError()) {
3460
5367
  return;
3461
5368
  }
3462
5369
  this.permissions.update(items => items.filter(permission => permission.id !== id));
@@ -3476,7 +5383,7 @@ class TaonCmsPostComponent {
3476
5383
  next: permissions => this.permissionOptions.set(permissions),
3477
5384
  error: (error) => {
3478
5385
  console.error('[taon-cms-post] Unable to load permission options', error);
3479
- this.permissionOptionsError.set('Available permissions could not be loaded. Please try again.');
5386
+ this.permissionOptionsError.set(this.t.gettext('Available permissions could not be loaded. Please try again.'));
3480
5387
  },
3481
5388
  });
3482
5389
  }
@@ -3489,7 +5396,7 @@ class TaonCmsPostComponent {
3489
5396
  //#region methods / file selected
3490
5397
  async fileSelected(event) {
3491
5398
  if (!(event.target instanceof HTMLInputElement)) {
3492
- this.error.set('Unable to read the selected media file.');
5399
+ this.error.set(this.t.gettext('Unable to read the selected media file.'));
3493
5400
  return;
3494
5401
  }
3495
5402
  const input = event.target;
@@ -3502,23 +5409,52 @@ class TaonCmsPostComponent {
3502
5409
  input.value = '';
3503
5410
  return;
3504
5411
  }
3505
- const draft = this.draft();
5412
+ const session = this.editorSession;
3506
5413
  this.busy.set(true);
3507
5414
  this.uploading.set(true);
5415
+ this.uploadProgress.set(0);
3508
5416
  this.error.set('');
3509
5417
  try {
3510
- const object = await this.api.uploadMedia(file);
3511
- if (!this.destroyRef.destroyed && this.draft() === draft) {
5418
+ const object = await this.api.uploadMedia(file, percentage => {
5419
+ if (!this.destroyRef.destroyed) {
5420
+ this.uploadProgress.set(percentage);
5421
+ }
5422
+ });
5423
+ if (!this.destroyRef.destroyed && this.editorSession === session) {
5424
+ const fileName = object.fileName || file.name;
5425
+ this.mediaFileNames.update(names => ({
5426
+ ...names,
5427
+ [object.key]: fileName,
5428
+ }));
5429
+ if (object.downloadUrl) {
5430
+ this.uploadedMediaPreview.set({
5431
+ key: object.key,
5432
+ url: this.uploadedMediaUrl(object.downloadUrl, media.type),
5433
+ fileName,
5434
+ });
5435
+ }
3512
5436
  this.updateDraft(media.key, object.key);
5437
+ if (media.type === TaonCmsContentType.Video) {
5438
+ try {
5439
+ const blob = await generateVideoThumbnail(file);
5440
+ const extension = blob.type === 'image/webp' ? 'webp' : 'png';
5441
+ await this.storeThumbnail(new File([blob], `thumbnail.${extension}`, { type: blob.type }), session);
5442
+ }
5443
+ catch (error) {
5444
+ console.error('[taon-cms-post] Unable to generate thumbnail', error);
5445
+ this.error.set(this.t.gettext('The video was uploaded, but its thumbnail could not be generated. Upload a thumbnail or apply a default placeholder.'));
5446
+ }
5447
+ }
3513
5448
  }
3514
5449
  }
3515
5450
  catch (error) {
3516
5451
  console.error('[taon-cms-post] Unable to upload media', error);
3517
- this.error.set('The media could not be uploaded. Please try again.');
5452
+ this.error.set(this.t.gettext('The media could not be uploaded. Please try again.'));
3518
5453
  }
3519
5454
  finally {
3520
5455
  this.busy.set(false);
3521
5456
  this.uploading.set(false);
5457
+ this.uploadProgress.set(0);
3522
5458
  input.value = '';
3523
5459
  }
3524
5460
  }
@@ -3529,9 +5465,67 @@ class TaonCmsPostComponent {
3529
5465
  if (!media || !this.editing() || this.busy() || this.dialogOpen()) {
3530
5466
  return;
3531
5467
  }
5468
+ this.uploadedMediaPreview.set(null);
3532
5469
  this.updateDraft(media.key, null);
3533
5470
  }
3534
5471
  //#endregion
5472
+ //#region methods / uploaded media URL
5473
+ uploadedMediaUrl(url, type) {
5474
+ if (type !== TaonCmsContentType.Attachment) {
5475
+ return url;
5476
+ }
5477
+ const parsedUrl = new URL(url);
5478
+ parsedUrl.searchParams.set('download', 'true');
5479
+ return parsedUrl.href;
5480
+ }
5481
+ //#endregion
5482
+ //#region methods / get media link
5483
+ getMediaLink(slug, type) {
5484
+ switch (type) {
5485
+ case TaonCmsContentType.Video:
5486
+ return firstValueFrom(this.api.getVideoLinkBySlug(slug));
5487
+ case TaonCmsContentType.Audio:
5488
+ return firstValueFrom(this.api.getAudioLinkBySlug(slug));
5489
+ case TaonCmsContentType.Attachment:
5490
+ return this.api.getAttachmentLinkBySlug(slug);
5491
+ default:
5492
+ return Promise.reject(new Error('This post type has no media.'));
5493
+ }
5494
+ }
5495
+ //#endregion
5496
+ //#region methods / get media link for viewing
5497
+ async getMediaLinkForView(slug, type) {
5498
+ try {
5499
+ switch (type) {
5500
+ case TaonCmsContentType.Video:
5501
+ return await this.api.getPublicVideoLinkBySlug(slug);
5502
+ case TaonCmsContentType.Audio:
5503
+ return await this.api.getPublicAudioLinkBySlug(slug);
5504
+ case TaonCmsContentType.Attachment:
5505
+ return await this.api.getPublicAttachmentLinkBySlug(slug);
5506
+ default:
5507
+ throw new Error('This post type has no media.');
5508
+ }
5509
+ }
5510
+ catch {
5511
+ return this.getMediaLink(slug, type);
5512
+ }
5513
+ }
5514
+ //#endregion
5515
+ //#region methods / media file name
5516
+ mediaFileName(key) {
5517
+ const fileName = this.mediaFileNames()[key];
5518
+ if (fileName) {
5519
+ return fileName;
5520
+ }
5521
+ const uploaded = this.uploadedMediaPreview();
5522
+ if (uploaded?.key === key) {
5523
+ return uploaded.fileName;
5524
+ }
5525
+ const storedName = key.split('/').pop() || key;
5526
+ return storedName.replace(/^[0-9a-f-]{36}__/i, '');
5527
+ }
5528
+ //#endregion
3535
5529
  //#region methods / update slug
3536
5530
  updateSlug(event) {
3537
5531
  if (event.target instanceof HTMLInputElement) {
@@ -3570,7 +5564,7 @@ class TaonCmsPostComponent {
3570
5564
  return;
3571
5565
  }
3572
5566
  if (!this.canSave()) {
3573
- this.error.set('A title and slug are required.');
5567
+ this.error.set(this.t.gettext('A title and slug are required.'));
3574
5568
  return;
3575
5569
  }
3576
5570
  if (this.mode() === 'add') {
@@ -3578,6 +5572,7 @@ class TaonCmsPostComponent {
3578
5572
  ...this.draft(),
3579
5573
  relatedPostIds: this.relatedPosts().map(post => post.id),
3580
5574
  permissionIds: this.permissions().map(permission => permission.id),
5575
+ applyPermissionsToRelatedPosts: this.applyPermissionsToRelatedPosts(),
3581
5576
  applicationHook: this.useAsApplicationHook()
3582
5577
  ? this.selectedApplicationHook()
3583
5578
  : null,
@@ -3601,7 +5596,7 @@ class TaonCmsPostComponent {
3601
5596
  return;
3602
5597
  }
3603
5598
  if (this.editing() && !this.canSave()) {
3604
- this.error.set('A title and slug are required.');
5599
+ this.error.set(this.t.gettext('A title and slug are required.'));
3605
5600
  return;
3606
5601
  }
3607
5602
  const post = this.requirePost();
@@ -3616,6 +5611,23 @@ class TaonCmsPostComponent {
3616
5611
  }
3617
5612
  }
3618
5613
  //#endregion
5614
+ //#region methods / unpublish
5615
+ unpublish() {
5616
+ const post = this.currentPost();
5617
+ if (!post ||
5618
+ post.status !== 'published' ||
5619
+ this.busy() ||
5620
+ this.dialogOpen() ||
5621
+ this.mode() === 'view-clean' ||
5622
+ this.mode() === 'add') {
5623
+ return;
5624
+ }
5625
+ this.persist(this.api.updateContent(post.id, {
5626
+ expectedVersion: post.version,
5627
+ status: 'draft',
5628
+ }));
5629
+ }
5630
+ //#endregion
3619
5631
  //#region methods / revert
3620
5632
  revert() {
3621
5633
  const post = this.requirePost();
@@ -3655,9 +5667,9 @@ class TaonCmsPostComponent {
3655
5667
  this.dialogOpen.set(true);
3656
5668
  const ref = this.dialog.open(TaonConfirmDialogComponent, {
3657
5669
  data: {
3658
- title: 'Delete post?',
3659
- message: 'This archives the post. It can be restored from its revisions.',
3660
- confirmText: 'Delete',
5670
+ title: this.t.gettext('Delete post?'),
5671
+ message: this.t.gettext('This archives the post. It can be restored from its revisions.'),
5672
+ confirmText: this.t.gettext('Delete'),
3661
5673
  },
3662
5674
  });
3663
5675
  ref
@@ -3671,12 +5683,40 @@ class TaonCmsPostComponent {
3671
5683
  });
3672
5684
  }
3673
5685
  //#endregion
5686
+ //#region methods / duplicate
5687
+ duplicate() {
5688
+ if (this.busy() || this.dialogOpen() || this.mode() === 'view-clean') {
5689
+ return;
5690
+ }
5691
+ const post = this.requirePost();
5692
+ if (!post) {
5693
+ return;
5694
+ }
5695
+ this.busy.set(true);
5696
+ this.error.set('');
5697
+ this.api
5698
+ .duplicateContent(post.id)
5699
+ .pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.busy.set(false)))
5700
+ .subscribe({
5701
+ next: duplicate => this.duplicated.emit(duplicate),
5702
+ error: (error) => {
5703
+ console.error('[taon-cms-post] Unable to duplicate post', error);
5704
+ this.error.set(this.t.gettext('The post could not be duplicated. Please try again.'));
5705
+ },
5706
+ });
5707
+ }
5708
+ //#endregion
3674
5709
  //#region methods / update input
3675
5710
  updateInput(post) {
3676
5711
  return {
3677
5712
  ...this.draft(),
3678
5713
  relatedPostIds: this.relatedPosts().map(related => related.id),
3679
- permissionIds: this.permissions().map(permission => permission.id),
5714
+ ...(this.permissionSource()
5715
+ ? {}
5716
+ : {
5717
+ permissionIds: this.permissions().map(permission => permission.id),
5718
+ }),
5719
+ applyPermissionsToRelatedPosts: this.applyPermissionsToRelatedPosts(),
3680
5720
  applicationHook: this.useAsApplicationHook()
3681
5721
  ? this.selectedApplicationHook()
3682
5722
  : null,
@@ -3688,13 +5728,20 @@ class TaonCmsPostComponent {
3688
5728
  requirePost() {
3689
5729
  const post = this.currentPost();
3690
5730
  if (!post) {
3691
- this.error.set('No post is loaded.');
5731
+ this.error.set(this.t.gettext('No post is loaded.'));
3692
5732
  }
3693
5733
  return post;
3694
5734
  }
3695
5735
  //#endregion
3696
5736
  //#region methods / set post
3697
5737
  setPost(post) {
5738
+ this.editorSession += 1;
5739
+ this.taxonomyLoad?.unsubscribe();
5740
+ this.taxonomyLoading.set(false);
5741
+ this.taxonomyError.set('');
5742
+ this.releaseThumbnailPreview();
5743
+ this.stagedThumbnail.set(null);
5744
+ this.tagSearch.set('');
3698
5745
  this.relatedPostsLoad?.unsubscribe();
3699
5746
  this.applicationHooksLoad?.unsubscribe();
3700
5747
  this.permissionsLoad?.unsubscribe();
@@ -3704,9 +5751,14 @@ class TaonCmsPostComponent {
3704
5751
  this.applicationHooksError.set('');
3705
5752
  this.permissionsLoading.set(false);
3706
5753
  this.permissionsError.set('');
5754
+ this.uploadedMediaPreview.set(null);
5755
+ this.mediaPreviewSignature = '';
5756
+ this.mediaPreviewRequest += 1;
3707
5757
  this.currentPost.set(post);
3708
5758
  this.relatedPosts.set(post?.relatedPosts ?? []);
3709
5759
  this.permissions.set(post?.permissions ?? []);
5760
+ this.permissionSource.set(null);
5761
+ this.applyPermissionsToRelatedPosts.set(post?.applyPermissionsToRelatedPosts ?? false);
3710
5762
  this.selectedPermissionId.set(null);
3711
5763
  this.setApplicationHookSelection(post, this.applicationHooks());
3712
5764
  this.draft.set({
@@ -3718,17 +5770,21 @@ class TaonCmsPostComponent {
3718
5770
  videoKey: post?.videoKey ?? null,
3719
5771
  audioKey: post?.audioKey ?? null,
3720
5772
  attachmentKey: post?.attachmentKey ?? null,
5773
+ thumbnailKey: post?.thumbnailKey ?? null,
5774
+ categoryId: post?.categoryId ?? null,
5775
+ tagIds: [],
3721
5776
  });
3722
5777
  if (post &&
3723
5778
  post.relatedPosts === undefined &&
3724
5779
  this.mode() !== 'view-clean') {
3725
5780
  this.loadRelatedPosts();
3726
5781
  }
3727
- if (post &&
3728
- post.permissions === undefined &&
3729
- this.mode() !== 'view-clean') {
5782
+ if (post && this.mode() !== 'view-clean') {
3730
5783
  this.loadPermissions();
3731
5784
  }
5785
+ if (this.editing()) {
5786
+ this.loadTaxonomy();
5787
+ }
3732
5788
  }
3733
5789
  //#endregion
3734
5790
  setApplicationHookSelection(post, hooks) {
@@ -3765,13 +5821,17 @@ class TaonCmsPostComponent {
3765
5821
  },
3766
5822
  error: (error) => {
3767
5823
  console.error('[taon-cms-post] Unable to save post', error);
3768
- this.error.set('The post could not be saved. Check the slug and your connection. ' +
3769
- 'If another user changed it, close and reopen the post before retrying.');
5824
+ this.error.set(this.t.gettext('The post could not be saved. Check the slug and your connection. If another user changed it, close and reopen the post before retrying.'));
3770
5825
  },
3771
5826
  });
3772
5827
  }
3773
5828
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3774
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsPostComponent, isStandalone: true, selector: "taon-cms-post", inputs: { post: { classPropertyName: "post", publicName: "post", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mode: "modeChange", changed: "changed", deleted: "deleted", cancelled: "cancelled" }, providers: [TaonCmsContentApiService, TaonPermissionApiService], ngImport: i0, template: "@if (mode() !== 'view-clean') {\n <header class=\"post-actions\">\n <span class=\"post-status\">{{ mode() === 'add' ? 'New draft' : currentPost()?.status }}</span>\n <div class=\"buttons\">\n @if (editing()) {\n <button mat-flat-button type=\"button\" [disabled]=\"busy() || dialogOpen() || !canSave()\" (click)=\"save()\">\n {{ mode() === 'add' ? 'Add' : 'Save' }}\n </button>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"cancel()\">Cancel</button>\n } @else if (currentPost()) {\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"edit()\">\n <mat-icon>edit</mat-icon> Edit\n </button>\n }\n @if (mode() !== 'add' && currentPost()) {\n @if (canPublish()) {\n <button mat-flat-button type=\"button\" [disabled]=\"busy() || dialogOpen() || (editing() && !canSave())\" (click)=\"publish()\">Publish</button>\n }\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"revert()\">\n <mat-icon>history</mat-icon> Revert\n </button>\n @if (currentPost()?.status !== 'archived') {\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"delete()\">\n <mat-icon>delete</mat-icon> Delete\n </button>\n }\n }\n </div>\n @if (busy()) {\n <span role=\"status\">{{ uploading() ? 'Uploading...' : 'Saving...' }}</span>\n }\n </header>\n @if (error()) {\n <p class=\"error\" role=\"alert\">{{ error() }}</p>\n }\n}\n\n<article class=\"post-article\" [attr.aria-busy]=\"busy()\">\n @if (editing()) {\n <mat-radio-group\n class=\"post-type-selector\"\n aria-label=\"Post type\"\n [value]=\"draft().type\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"updateDraft('type', $event.value)\">\n @for (type of postTypes; track type.value) {\n <mat-radio-button [value]=\"type.value\">{{ type.label }}</mat-radio-button>\n }\n </mat-radio-group>\n <div\n class=\"post-title editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n aria-label=\"Post title\"\n aria-required=\"true\"\n data-placeholder=\"Title\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n [taonCmsEditableSingleLine]=\"true\"\n [taonCmsEditable]=\"draft().title\"\n (taonCmsEditableChange)=\"updateDraft('title', $event)\"></div>\n <div\n class=\"post-excerpt editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n aria-label=\"Post excerpt\"\n aria-multiline=\"true\"\n data-placeholder=\"A short introduction...\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n [taonCmsEditable]=\"draft().excerpt\"\n (taonCmsEditableChange)=\"updateDraft('excerpt', $event)\"></div>\n <div\n class=\"post-body editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n aria-label=\"Post body\"\n aria-multiline=\"true\"\n data-placeholder=\"Tell your story...\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n taonCmsEditableFormat=\"html\"\n [taonCmsEditable]=\"draft().body\"\n (taonCmsEditableChange)=\"updateDraft('body', $event)\"></div>\n <label class=\"slug-field\">\n <span>URL slug</span>\n <input aria-label=\"URL slug\" [value]=\"draft().slug\" [disabled]=\"busy() || dialogOpen()\" (input)=\"updateSlug($event)\" placeholder=\"my-post\" />\n </label>\n @if (mediaAttachment(); as media) {\n <section class=\"media-attachment\" aria-labelledby=\"media-attachment-heading\">\n <h2 id=\"media-attachment-heading\">{{ media.heading }}</h2>\n @if (draft()[media.key]; as key) {\n <p>Attached file: {{ key }}</p>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"removeMedia()\">Remove</button>\n } @else {\n <input\n #mediaInput\n hidden\n type=\"file\"\n [accept]=\"media.accept\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"fileSelected($event)\" />\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"mediaInput.click()\">{{ media.uploadLabel }}</button>\n }\n </section>\n }\n <section class=\"related-posts\" aria-labelledby=\"related-posts-heading\">\n <h2 id=\"related-posts-heading\">Related posts</h2>\n @if (relatedPostsLoading()) {\n <p role=\"status\">Loading related posts...</p>\n } @else if (relatedPostsError()) {\n <p class=\"error\" role=\"alert\">{{ relatedPostsError() }}</p>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"loadRelatedPosts()\">Try again</button>\n } @else {\n <ul>\n @for (post of relatedPosts(); track post.id) {\n <li>\n <span>#{{ post.id }} - {{ post.title }}</span>\n <button mat-icon-button type=\"button\" [attr.aria-label]=\"'Remove related post ' + post.title\" [disabled]=\"busy() || dialogOpen()\" (click)=\"removeRelatedPost(post.id)\">\n <mat-icon>close</mat-icon>\n </button>\n </li>\n } @empty {\n <li>No related posts yet.</li>\n }\n </ul>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"addRelatedPost()\">\n <mat-icon>add</mat-icon> Add related post\n </button>\n }\n </section>\n <section class=\"application-hook\" aria-labelledby=\"application-hook-heading\">\n <h2 id=\"application-hook-heading\">Application Hook</h2>\n @if (applicationHooksLoading()) {\n <p role=\"status\">Loading application hooks...</p>\n } @else if (applicationHooksError()) {\n <p class=\"error\" role=\"alert\">{{ applicationHooksError() }}</p>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"loadApplicationHooks()\">Try again</button>\n } @else {\n <mat-checkbox\n [checked]=\"useAsApplicationHook()\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"setUseAsApplicationHook($event.checked)\">\n Use as application hook\n </mat-checkbox>\n @if (useAsApplicationHook()) {\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <mat-label>Application Hook</mat-label>\n <mat-select\n [value]=\"selectedApplicationHook()\"\n [disabled]=\"busy() || dialogOpen()\"\n (selectionChange)=\"selectedApplicationHook.set($event.value)\">\n @for (applicationHook of applicationHooks(); track applicationHook.id) {\n <mat-option\n [value]=\"applicationHook.hook\"\n [disabled]=\"applicationHookInUseByAnotherPost(applicationHook)\">\n {{ applicationHookLabel(applicationHook.hook) }}\n @if (applicationHookInUseByAnotherPost(applicationHook)) {\n (in use by post #{{ applicationHook.contentId }})\n }\n </mat-option>\n } @empty {\n <mat-option [disabled]=\"true\">No application hooks configured</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n }\n </section>\n <section class=\"post-permissions\" aria-labelledby=\"post-permissions-heading\">\n <h2 id=\"post-permissions-heading\">Allow Read only with Permissions</h2>\n @if (permissionsLoading()) {\n <p role=\"status\">Loading assigned permissions...</p>\n } @else if (permissionsError()) {\n <p class=\"error\" role=\"alert\">{{ permissionsError() }}</p>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"loadPermissions()\">Try again</button>\n } @else {\n <ul>\n @for (permission of permissions(); track permission.id) {\n <li>\n <span>{{ permission.name }} ({{ permission.code }})</span>\n <button mat-icon-button type=\"button\" [attr.aria-label]=\"'Remove permission ' + permission.name\" [disabled]=\"busy() || dialogOpen()\" (click)=\"removePermission(permission.id)\">\n <mat-icon>close</mat-icon>\n </button>\n </li>\n } @empty {\n <li>No permissions assigned.</li>\n }\n </ul>\n @if (permissionOptionsError()) {\n <p class=\"error\" role=\"alert\">{{ permissionOptionsError() }}</p>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen() || permissionOptionsLoading()\" (click)=\"loadPermissionOptions()\">Try again</button>\n } @else {\n <div class=\"permission-assignment\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <mat-label>Permission</mat-label>\n <mat-select\n [value]=\"selectedPermissionId()\"\n [disabled]=\"busy() || dialogOpen() || permissionOptionsLoading()\"\n (selectionChange)=\"selectedPermissionId.set($event.value)\">\n @for (permission of availablePermissions(); track permission.id) {\n <mat-option [value]=\"permission.id\">{{ permission.name }} ({{ permission.code }})</mat-option>\n } @empty {\n <mat-option [disabled]=\"true\">No permissions available</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen() || !selectedPermissionId()\" (click)=\"addPermission()\">\n <mat-icon>add</mat-icon> Assign permission\n </button>\n </div>\n }\n }\n </section>\n } @else if (currentPost(); as post) {\n <h1 class=\"post-title\">{{ post.title }}</h1>\n @if (post.excerpt) {\n <p class=\"post-excerpt\">{{ post.excerpt }}</p>\n }\n <div class=\"post-body\" [innerHTML]=\"post.body\"></div>\n } @else {\n <p role=\"status\">No post is loaded.</p>\n }\n</article>", styles: [":host{display:block}.post-actions{display:flex;align-items:center;flex-wrap:wrap;gap:1rem;padding:1rem;border-bottom:1px solid rgba(136,136,136,.2)}.post-status{margin-right:auto;text-transform:capitalize;opacity:.7}.buttons{display:flex;flex-wrap:wrap;gap:.5rem}.post-article{max-width:760px;margin:0 auto;padding:clamp(1.5rem,5vw,4rem) 1.5rem;overflow-wrap:anywhere}.post-title{margin:0 0 1.5rem;font-size:clamp(2rem,5vw,3.5rem);font-weight:700;line-height:1.15;letter-spacing:-.03em}.post-excerpt{margin:0 0 2rem;font-size:1.35rem;line-height:1.6;opacity:.7;white-space:pre-wrap}.post-body{font-family:Georgia,Times New Roman,serif;font-size:1.2rem;line-height:1.8;white-space:pre-wrap}.editable{min-height:1.2em;outline:none}.editable:focus{box-shadow:-3px 0 #8885}.editable:empty:before{content:attr(data-placeholder);opacity:.4;pointer-events:none}.post-body.editable{min-height:12rem}.slug-field{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin-top:3rem;padding-top:1rem;border-top:1px solid rgba(136,136,136,.2);font-size:.875rem}.slug-field input{flex:1;min-width:160px;padding:.5rem;color:inherit;background:transparent;border:1px solid rgba(136,136,136,.3333333333);border-radius:4px}.error{padding:1rem;color:#b3261e}.post-type-selector{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem}.media-attachment,.related-posts,.application-hook,.post-permissions{margin-top:1.5rem;font-size:.875rem}.media-attachment h2,.related-posts h2,.application-hook h2,.post-permissions h2{font-size:1rem}.related-posts ul,.post-permissions ul{padding:0;list-style:none}.related-posts .application-hook,.post-permissions .application-hook{display:grid;align-items:start;gap:.75rem}.related-posts .application-hook mat-form-field,.post-permissions .application-hook mat-form-field{width:min(100%,28rem)}.related-posts li,.post-permissions li{display:flex;align-items:center;justify-content:space-between;gap:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i2$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i3.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i3.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: TaonCmsEditableDirective, selector: "[taonCmsEditable]", inputs: ["taonCmsEditableFormat", "taonCmsEditableSingleLine", "taonCmsEditable"], outputs: ["taonCmsEditableChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5829
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsPostComponent, isStandalone: true, selector: "taon-cms-post", inputs: { post: { classPropertyName: "post", publicName: "post", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mode: "modeChange", changed: "changed", deleted: "deleted", duplicated: "duplicated", cancelled: "cancelled" }, providers: [
5830
+ TaonCmsContentApiService,
5831
+ TaonPermissionApiService,
5832
+ TaonCmsCategoryApiService,
5833
+ TaonCmsTagApiService,
5834
+ ], ngImport: i0, template: "@if (mode() !== 'view-clean') {\n <header class=\"post-actions\">\n <span class=\"post-status\">{{\n mode() === 'add' ? t.gettext('New draft') : currentPost()?.status\n }}</span>\n <div class=\"buttons\">\n @if (editing()) {\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || !canSave()\"\n (click)=\"save()\">\n {{ mode() === 'add' ? t.gettext('Add') : t.gettext('Save') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"cancel()\">\n {{ t.gettext('Cancel') }}\n </button>\n } @else if (currentPost()) {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"edit()\">\n <mat-icon>edit</mat-icon> {{ t.gettext('Edit') }}\n </button>\n }\n @if (mode() !== 'add' && currentPost()) {\n @if (canPublish()) {\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || (editing() && !canSave())\"\n (click)=\"publish()\">\n {{ t.gettext('Publish') }}\n </button>\n } @else {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"unpublish()\">\n {{ t.gettext('Unpublish') }}\n </button>\n }\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"revert()\">\n <mat-icon>history</mat-icon> {{ t.gettext('Revert') }}\n </button>\n @if (currentPost()?.status !== 'archived') {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"delete()\">\n <mat-icon>delete</mat-icon> {{ t.gettext('Delete') }}\n </button>\n }\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"duplicate()\">\n <mat-icon>content_copy</mat-icon> {{ t.gettext('Duplicate') }}\n </button>\n }\n </div>\n @if (busy()) {\n <span role=\"status\">{{\n uploading()\n ? t.gettext('Uploading... ') + uploadProgress() + '%'\n : t.gettext('Saving...')\n }}</span>\n }\n </header>\n @if (error()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ error() }}\n </p>\n }\n}\n\n<article\n class=\"post-article\"\n [attr.aria-busy]=\"busy()\">\n @if (editing()) {\n <mat-radio-group\n class=\"post-type-selector\"\n [attr.aria-label]=\"t.gettext('Post type')\"\n [value]=\"draft().type\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"updateDraft('type', $event.value)\">\n @for (type of postTypes; track type.value) {\n <mat-radio-button [value]=\"type.value\">{{\n type.label\n }}</mat-radio-button>\n }\n </mat-radio-group>\n <div\n class=\"post-title editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n [attr.aria-label]=\"t.gettext('Post title')\"\n aria-required=\"true\"\n [attr.data-placeholder]=\"placeholderTitle()\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n [taonCmsEditableSingleLine]=\"true\"\n [taonCmsEditable]=\"draft().title\"\n (taonCmsEditableChange)=\"updateDraft('title', $event)\"></div>\n <div\n class=\"post-excerpt editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n [attr.aria-label]=\"t.gettext('Post excerpt')\"\n aria-multiline=\"true\"\n [attr.data-placeholder]=\"placeholderShortIntro()\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n [taonCmsEditable]=\"draft().excerpt\"\n (taonCmsEditableChange)=\"updateDraft('excerpt', $event)\"></div>\n <div\n class=\"post-body editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n [attr.aria-label]=\"t.gettext('Post body')\"\n aria-multiline=\"true\"\n [attr.data-placeholder]=\"placeholderTellYourStory()\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n taonCmsEditableFormat=\"html\"\n [taonCmsEditable]=\"draft().body\"\n (taonCmsEditableChange)=\"updateDraft('body', $event)\"></div>\n <label class=\"slug-field\">\n <span>{{ t.gettext('URL slug') }}</span>\n <input\n [attr.aria-label]=\"t.gettext('URL slug')\"\n [value]=\"draft().slug\"\n [disabled]=\"busy() || dialogOpen()\"\n (input)=\"updateSlug($event)\"\n [placeholder]=\"t.gettext('my-post')\" />\n </label>\n @if (mediaAttachment(); as media) {\n <section\n class=\"media-attachment\"\n aria-labelledby=\"media-attachment-heading\">\n <h2 id=\"media-attachment-heading\">{{ media.heading }}</h2>\n @if (uploading()) {\n <mat-progress-bar\n mode=\"determinate\"\n [value]=\"uploadProgress()\"\n [attr.aria-label]=\"t.gettext('Media upload progress')\" />\n }\n @if (draft()[media.key]; as key) {\n @if (mediaPreviewLoading()) {\n <p role=\"status\">{{ t.gettext('Loading media preview...') }}</p>\n }\n @if (mediaPreviewError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ mediaPreviewError() }}\n </p>\n }\n @if (media.type === 'video' && mediaPreviewUrl()) {\n <video\n controls\n preload=\"none\"\n [src]=\"mediaPreviewUrl()\">\n {{ t.gettext('Your browser does not support video playback.') }}\n </video>\n } @else if (media.type === 'audio' && mediaPreviewUrl()) {\n <audio\n controls\n preload=\"none\"\n [src]=\"mediaPreviewUrl()\">\n {{ t.gettext('Your browser does not support audio playback.') }}\n </audio>\n } @else if (media.type === 'attachment' && mediaPreviewUrl()) {\n <p>\n {{\n t.gettext('Attached file: [[ fileName ]]', {\n fileName: mediaFileName(key),\n })\n }}\n <a\n [href]=\"mediaPreviewUrl()\"\n target=\"_blank\"\n rel=\"noopener\"\n >{{ t.gettext('Download or open') }}</a\n >\n </p>\n }\n <input\n #mediaInput\n hidden\n type=\"file\"\n [accept]=\"media.accept\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"fileSelected($event)\" />\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"mediaInput.click()\">\n {{ t.gettext('Replace') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"removeMedia()\">\n {{ t.gettext('Remove') }}\n </button>\n } @else {\n <input\n #mediaInput\n hidden\n type=\"file\"\n [accept]=\"media.accept\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"fileSelected($event)\" />\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"mediaInput.click()\">\n {{ media.uploadLabel }}\n </button>\n }\n </section>\n }\n <section\n class=\"post-thumbnail\"\n aria-labelledby=\"thumbnail-heading\">\n <h2 id=\"thumbnail-heading\">{{ t.gettext('Thumbnail') }}</h2>\n @if (thumbnailPreviewUrl()) {\n <img\n class=\"thumbnail-preview\"\n [src]=\"thumbnailPreviewUrl()\"\n [alt]=\"t.gettext('Post thumbnail')\" />\n } @else {\n <p>{{ t.gettext('No thumbnail selected.') }}</p>\n }\n @if (thumbnailError()) {\n <p role=\"alert\">{{ thumbnailError() }}</p>\n }\n <input\n #thumbnailInput\n hidden\n type=\"file\"\n accept=\"image/*\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"thumbnailSelected($event)\" />\n <div class=\"buttons\">\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"thumbnailInput.click()\">\n {{ t.gettext('Upload Thumbnail') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"applyDefaultThumbnail()\">\n {{ t.gettext('Apply Default Placeholder') }}\n </button>\n </div>\n </section>\n <section\n class=\"post-taxonomy\"\n aria-labelledby=\"category-heading\">\n <h2 id=\"category-heading\">{{ t.gettext('Category and Tags') }}</h2>\n @if (taxonomyLoading()) {\n <p role=\"status\">{{ t.gettext('Loading categories and tags...') }}</p>\n }\n @if (taxonomyError()) {\n <p role=\"alert\">{{ taxonomyError() }}</p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy()\"\n (click)=\"loadTaxonomy()\">\n {{ t.gettext('Try again') }}\n </button>\n }\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Category') }}</mat-label>\n <mat-select\n [value]=\"draft().categoryId\"\n [disabled]=\"\n busy() || dialogOpen() || taxonomyLoading() || !!taxonomyError()\n \"\n (selectionChange)=\"updateDraft('categoryId', $event.value)\">\n <mat-option [value]=\"null\">{{ t.gettext('None') }}</mat-option>\n @for (category of categories(); track category.id) {\n <mat-option [value]=\"category.id\">{{ category.name }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <h3>{{ t.gettext('Tags') }}</h3>\n <mat-chip-set [attr.aria-label]=\"t.gettext('Selected tags')\">\n @for (tag of selectedTags(); track tag.id) {\n <mat-chip\n [disabled]=\"busy() || dialogOpen() || taxonomyLoading()\"\n (removed)=\"removeTag(tag.id)\">\n {{ tag.name }}\n <button\n matChipRemove\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || taxonomyLoading()\"\n [attr.aria-label]=\"\n t.gettext('Remove tag [[ name ]]', { name: tag.name })\n \">\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip>\n }\n </mat-chip-set>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Search tags') }}</mat-label>\n <input\n matInput\n [value]=\"tagSearch()\"\n (input)=\"filterTags($event)\"\n [disabled]=\"busy() || dialogOpen() || taxonomyLoading()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Add tag') }}</mat-label>\n <mat-select\n [value]=\"null\"\n [disabled]=\"\n busy() || dialogOpen() || taxonomyLoading() || !!taxonomyError()\n \"\n (selectionChange)=\"addTag($event.value)\">\n @for (tag of filteredTags(); track tag.id) {\n <mat-option [value]=\"tag.id\">{{ tag.name }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n </section>\n <section\n class=\"related-posts\"\n aria-labelledby=\"related-posts-heading\">\n <h2 id=\"related-posts-heading\">{{ t.gettext('Related posts') }}</h2>\n @if (relatedPostsLoading()) {\n <p role=\"status\">{{ t.gettext('Loading related posts...') }}</p>\n } @else if (relatedPostsError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ relatedPostsError() }}\n </p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"loadRelatedPosts()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <ul>\n @for (post of relatedPosts(); track post.id) {\n <li>\n <span>#{{ post.id }} - {{ post.title }}</span>\n <button\n mat-icon-button\n type=\"button\"\n [attr.aria-label]=\"\n t.gettext('Remove related post [[ title ]]', {\n title: post.title,\n })\n \"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"removeRelatedPost(post.id)\">\n <mat-icon>close</mat-icon>\n </button>\n </li>\n } @empty {\n <li>{{ t.gettext('No related posts yet.') }}</li>\n }\n </ul>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"addRelatedPost()\">\n <mat-icon>add</mat-icon> {{ t.gettext('Add related post') }}\n </button>\n }\n </section>\n\n @if (!mediaAttachment()) {\n <section\n class=\"application-hook\"\n aria-labelledby=\"application-hook-heading\">\n <h2 id=\"application-hook-heading\">\n {{ t.gettext('Application Hook') }}\n </h2>\n @if (applicationHooksLoading()) {\n <p role=\"status\">{{ t.gettext('Loading application hooks...') }}</p>\n } @else if (applicationHooksError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ applicationHooksError() }}\n </p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"loadApplicationHooks()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <mat-checkbox\n [checked]=\"useAsApplicationHook()\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"setUseAsApplicationHook($event.checked)\">\n {{ t.gettext('Use as application hook') }}\n </mat-checkbox>\n @if (useAsApplicationHook()) {\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\">\n <mat-label>{{ t.gettext('Application Hook') }}</mat-label>\n <mat-select\n [value]=\"selectedApplicationHook()\"\n [disabled]=\"busy() || dialogOpen()\"\n (selectionChange)=\"selectedApplicationHook.set($event.value)\">\n @for (\n applicationHook of applicationHooks();\n track applicationHook.id\n ) {\n <mat-option\n [value]=\"applicationHook.hook\"\n [disabled]=\"\n applicationHookInUseByAnotherPost(applicationHook)\n \">\n {{ applicationHookLabel(applicationHook.hook) }}\n @if (applicationHookInUseByAnotherPost(applicationHook)) {\n {{\n t.gettext('(in use by post # [[ postId ]])', {\n postId: applicationHook.contentId,\n })\n }}\n }\n </mat-option>\n } @empty {\n <mat-option [disabled]=\"true\">{{\n t.gettext('No application hooks configured')\n }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n }\n </section>\n }\n <section\n class=\"post-permissions\"\n aria-labelledby=\"post-permissions-heading\">\n <h2 id=\"post-permissions-heading\">\n {{ t.gettext('Allow Read only with Permissions') }}\n </h2>\n @if (permissionSource(); as source) {\n <p role=\"note\">\n {{\n t.gettext(\n 'Permissions are inherited from # [[ postId ]] - [[ title ]]. Edit the source post to change them.',\n { postId: source.id, title: source.title }\n )\n }}\n </p>\n }\n @if (permissionsLoading()) {\n <p role=\"status\">{{ t.gettext('Loading assigned permissions...') }}</p>\n } @else if (permissionsError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ permissionsError() }}\n </p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"loadPermissions()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <ul>\n @for (permission of permissions(); track permission.id) {\n <li>\n <span>{{ permission.name }} ({{ permission.code }})</span>\n <button\n mat-icon-button\n type=\"button\"\n [attr.aria-label]=\"\n t.gettext('Remove permission [[ name ]]', {\n name: permission.name,\n })\n \"\n [disabled]=\"busy() || dialogOpen() || !!permissionSource()\"\n (click)=\"removePermission(permission.id)\">\n <mat-icon>close</mat-icon>\n </button>\n </li>\n } @empty {\n <li>{{ t.gettext('No permissions assigned.') }}</li>\n }\n </ul>\n @if (permissionOptionsError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ permissionOptionsError() }}\n </p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || permissionOptionsLoading()\"\n (click)=\"loadPermissionOptions()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <div class=\"permission-assignment\">\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\">\n <mat-label>{{ t.gettext('Permission') }}</mat-label>\n <mat-select\n [value]=\"selectedPermissionId()\"\n [disabled]=\"\n busy() ||\n dialogOpen() ||\n permissionOptionsLoading() ||\n !!permissionSource()\n \"\n (selectionChange)=\"selectedPermissionId.set($event.value)\">\n @for (\n permission of availablePermissions();\n track permission.id\n ) {\n <mat-option [value]=\"permission.id\"\n >{{ permission.name }} ({{ permission.code }})</mat-option\n >\n } @empty {\n <mat-option [disabled]=\"true\">{{\n t.gettext('No permissions available')\n }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"\n busy() ||\n dialogOpen() ||\n !selectedPermissionId() ||\n !!permissionSource()\n \"\n (click)=\"addPermission()\">\n <mat-icon>add</mat-icon> {{ t.gettext('Assign permission') }}\n </button>\n </div>\n }\n }\n @if (!permissionSource()) {\n <mat-checkbox\n [checked]=\"applyPermissionsToRelatedPosts()\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"applyPermissionsToRelatedPosts.set($event.checked)\">\n {{ t.gettext('Apply permissions to related posts') }}\n </mat-checkbox>\n }\n </section>\n } @else if (currentPost(); as post) {\n @if (thumbnailPreviewUrl()) {\n <img\n class=\"thumbnail-preview\"\n [src]=\"thumbnailPreviewUrl()\"\n [alt]=\"t.gettext('Post thumbnail')\" />\n }\n @if (thumbnailError()) {\n <p role=\"alert\">{{ thumbnailError() }}</p>\n }\n <h1 class=\"post-title\">{{ post.title }}</h1>\n @if (post.excerpt) {\n <p class=\"post-excerpt\">{{ post.excerpt }}</p>\n }\n <div\n class=\"post-body\"\n [innerHTML]=\"post.body\"></div>\n @if (mediaAttachment(); as media) {\n @if (draft()[media.key]; as key) {\n @if (mediaPreviewLoading()) {\n <p role=\"status\">{{ t.gettext('Loading media...') }}</p>\n } @else if (mediaPreviewError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ mediaPreviewError() }}\n </p>\n } @else if (media.type === 'video' && mediaPreviewUrl()) {\n <video\n controls\n preload=\"none\"\n [src]=\"mediaPreviewUrl()\">\n {{ t.gettext('Your browser does not support video playback.') }}\n </video>\n } @else if (media.type === 'audio' && mediaPreviewUrl()) {\n <audio\n controls\n preload=\"none\"\n [src]=\"mediaPreviewUrl()\">\n {{ t.gettext('Your browser does not support audio playback.') }}\n </audio>\n } @else if (media.type === 'attachment' && mediaPreviewUrl()) {\n <p>\n {{\n t.gettext('Attached file: [[ fileName ]]', {\n fileName: mediaFileName(key),\n })\n }}\n <a\n [href]=\"mediaPreviewUrl()\"\n target=\"_blank\"\n rel=\"noopener\"\n >{{ t.gettext('Download or open') }}</a\n >\n </p>\n }\n }\n }\n } @else {\n <p role=\"status\">{{ t.gettext('No post is loaded.') }}</p>\n }\n</article>\n", styles: [":host{display:block}.post-actions{display:flex;align-items:center;flex-wrap:wrap;gap:1rem;padding:1rem;border-bottom:1px solid rgba(136,136,136,.2)}.post-status{margin-right:auto;text-transform:capitalize;opacity:.7}.buttons{display:flex;flex-wrap:wrap;gap:.5rem}.post-article{max-width:760px;margin:0 auto;padding:clamp(1.5rem,5vw,4rem) 1.5rem;overflow-wrap:anywhere}.post-title{margin:0 0 1.5rem;font-size:clamp(2rem,5vw,3.5rem);font-weight:700;line-height:1.15;letter-spacing:-.03em}.post-excerpt{margin:0 0 2rem;font-size:1.35rem;line-height:1.6;opacity:.7;white-space:pre-wrap}.post-body{font-family:Georgia,Times New Roman,serif;font-size:1.2rem;line-height:1.8;white-space:pre-wrap}.editable{min-height:1.2em;outline:none}.editable:focus{box-shadow:-3px 0 #8885}.editable:empty:before{content:attr(data-placeholder);opacity:.4;pointer-events:none}.post-body.editable{min-height:12rem}.slug-field{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin-top:3rem;padding-top:1rem;border-top:1px solid rgba(136,136,136,.2);font-size:.875rem}.slug-field input{flex:1;min-width:160px;padding:.5rem;color:inherit;background:transparent;border:1px solid rgba(136,136,136,.3333333333);border-radius:4px}.error{padding:1rem;color:#b3261e}.post-type-selector{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem}.media-attachment,.post-thumbnail,.post-taxonomy,.related-posts,.application-hook,.post-permissions{margin-top:1.5rem;font-size:.875rem}.media-attachment h2,.post-thumbnail h2,.post-taxonomy h2,.related-posts h2,.application-hook h2,.post-permissions h2{font-size:1rem}.media-attachment .thumbnail-preview,.post-thumbnail .thumbnail-preview,.post-taxonomy .thumbnail-preview,.related-posts .thumbnail-preview,.application-hook .thumbnail-preview,.post-permissions .thumbnail-preview{display:block;width:min(100%,480px);max-height:320px;object-fit:contain;border-radius:12px;margin-bottom:.75rem}.media-attachment .post-taxonomy mat-form-field,.post-thumbnail .post-taxonomy mat-form-field,.post-taxonomy .post-taxonomy mat-form-field,.related-posts .post-taxonomy mat-form-field,.application-hook .post-taxonomy mat-form-field,.post-permissions .post-taxonomy mat-form-field{display:block;margin-top:.75rem}.related-posts ul,.post-permissions ul{padding:0;list-style:none}.related-posts .application-hook,.post-permissions .application-hook{display:grid;align-items:start;gap:.75rem}.related-posts .application-hook mat-form-field,.post-permissions .application-hook mat-form-field{width:min(100%,28rem)}.related-posts li,.post-permissions li{display:flex;align-items:center;justify-content:space-between;gap:.5rem}video{max-width:100%;max-height:400px!important}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i2$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { 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", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i6.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "directive", type: i6.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i6.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i7.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i3$1.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i3$1.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: TaonCmsEditableDirective, selector: "[taonCmsEditable]", inputs: ["taonCmsEditableFormat", "taonCmsEditableSingleLine", "taonCmsEditable"], outputs: ["taonCmsEditableChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3775
5835
  }
3776
5836
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostComponent, decorators: [{
3777
5837
  type: Component,
@@ -3780,11 +5840,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
3780
5840
  MatCheckboxModule,
3781
5841
  MatFormFieldModule,
3782
5842
  MatIconModule,
5843
+ MatInputModule,
5844
+ MatChipsModule,
5845
+ MatProgressBarModule,
3783
5846
  MatRadioModule,
3784
5847
  MatSelectModule,
3785
5848
  TaonCmsEditableDirective,
3786
- ], providers: [TaonCmsContentApiService, TaonPermissionApiService], template: "@if (mode() !== 'view-clean') {\n <header class=\"post-actions\">\n <span class=\"post-status\">{{ mode() === 'add' ? 'New draft' : currentPost()?.status }}</span>\n <div class=\"buttons\">\n @if (editing()) {\n <button mat-flat-button type=\"button\" [disabled]=\"busy() || dialogOpen() || !canSave()\" (click)=\"save()\">\n {{ mode() === 'add' ? 'Add' : 'Save' }}\n </button>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"cancel()\">Cancel</button>\n } @else if (currentPost()) {\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"edit()\">\n <mat-icon>edit</mat-icon> Edit\n </button>\n }\n @if (mode() !== 'add' && currentPost()) {\n @if (canPublish()) {\n <button mat-flat-button type=\"button\" [disabled]=\"busy() || dialogOpen() || (editing() && !canSave())\" (click)=\"publish()\">Publish</button>\n }\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"revert()\">\n <mat-icon>history</mat-icon> Revert\n </button>\n @if (currentPost()?.status !== 'archived') {\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"delete()\">\n <mat-icon>delete</mat-icon> Delete\n </button>\n }\n }\n </div>\n @if (busy()) {\n <span role=\"status\">{{ uploading() ? 'Uploading...' : 'Saving...' }}</span>\n }\n </header>\n @if (error()) {\n <p class=\"error\" role=\"alert\">{{ error() }}</p>\n }\n}\n\n<article class=\"post-article\" [attr.aria-busy]=\"busy()\">\n @if (editing()) {\n <mat-radio-group\n class=\"post-type-selector\"\n aria-label=\"Post type\"\n [value]=\"draft().type\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"updateDraft('type', $event.value)\">\n @for (type of postTypes; track type.value) {\n <mat-radio-button [value]=\"type.value\">{{ type.label }}</mat-radio-button>\n }\n </mat-radio-group>\n <div\n class=\"post-title editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n aria-label=\"Post title\"\n aria-required=\"true\"\n data-placeholder=\"Title\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n [taonCmsEditableSingleLine]=\"true\"\n [taonCmsEditable]=\"draft().title\"\n (taonCmsEditableChange)=\"updateDraft('title', $event)\"></div>\n <div\n class=\"post-excerpt editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n aria-label=\"Post excerpt\"\n aria-multiline=\"true\"\n data-placeholder=\"A short introduction...\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n [taonCmsEditable]=\"draft().excerpt\"\n (taonCmsEditableChange)=\"updateDraft('excerpt', $event)\"></div>\n <div\n class=\"post-body editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n aria-label=\"Post body\"\n aria-multiline=\"true\"\n data-placeholder=\"Tell your story...\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n taonCmsEditableFormat=\"html\"\n [taonCmsEditable]=\"draft().body\"\n (taonCmsEditableChange)=\"updateDraft('body', $event)\"></div>\n <label class=\"slug-field\">\n <span>URL slug</span>\n <input aria-label=\"URL slug\" [value]=\"draft().slug\" [disabled]=\"busy() || dialogOpen()\" (input)=\"updateSlug($event)\" placeholder=\"my-post\" />\n </label>\n @if (mediaAttachment(); as media) {\n <section class=\"media-attachment\" aria-labelledby=\"media-attachment-heading\">\n <h2 id=\"media-attachment-heading\">{{ media.heading }}</h2>\n @if (draft()[media.key]; as key) {\n <p>Attached file: {{ key }}</p>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"removeMedia()\">Remove</button>\n } @else {\n <input\n #mediaInput\n hidden\n type=\"file\"\n [accept]=\"media.accept\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"fileSelected($event)\" />\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"mediaInput.click()\">{{ media.uploadLabel }}</button>\n }\n </section>\n }\n <section class=\"related-posts\" aria-labelledby=\"related-posts-heading\">\n <h2 id=\"related-posts-heading\">Related posts</h2>\n @if (relatedPostsLoading()) {\n <p role=\"status\">Loading related posts...</p>\n } @else if (relatedPostsError()) {\n <p class=\"error\" role=\"alert\">{{ relatedPostsError() }}</p>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"loadRelatedPosts()\">Try again</button>\n } @else {\n <ul>\n @for (post of relatedPosts(); track post.id) {\n <li>\n <span>#{{ post.id }} - {{ post.title }}</span>\n <button mat-icon-button type=\"button\" [attr.aria-label]=\"'Remove related post ' + post.title\" [disabled]=\"busy() || dialogOpen()\" (click)=\"removeRelatedPost(post.id)\">\n <mat-icon>close</mat-icon>\n </button>\n </li>\n } @empty {\n <li>No related posts yet.</li>\n }\n </ul>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"addRelatedPost()\">\n <mat-icon>add</mat-icon> Add related post\n </button>\n }\n </section>\n <section class=\"application-hook\" aria-labelledby=\"application-hook-heading\">\n <h2 id=\"application-hook-heading\">Application Hook</h2>\n @if (applicationHooksLoading()) {\n <p role=\"status\">Loading application hooks...</p>\n } @else if (applicationHooksError()) {\n <p class=\"error\" role=\"alert\">{{ applicationHooksError() }}</p>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"loadApplicationHooks()\">Try again</button>\n } @else {\n <mat-checkbox\n [checked]=\"useAsApplicationHook()\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"setUseAsApplicationHook($event.checked)\">\n Use as application hook\n </mat-checkbox>\n @if (useAsApplicationHook()) {\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <mat-label>Application Hook</mat-label>\n <mat-select\n [value]=\"selectedApplicationHook()\"\n [disabled]=\"busy() || dialogOpen()\"\n (selectionChange)=\"selectedApplicationHook.set($event.value)\">\n @for (applicationHook of applicationHooks(); track applicationHook.id) {\n <mat-option\n [value]=\"applicationHook.hook\"\n [disabled]=\"applicationHookInUseByAnotherPost(applicationHook)\">\n {{ applicationHookLabel(applicationHook.hook) }}\n @if (applicationHookInUseByAnotherPost(applicationHook)) {\n (in use by post #{{ applicationHook.contentId }})\n }\n </mat-option>\n } @empty {\n <mat-option [disabled]=\"true\">No application hooks configured</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n }\n </section>\n <section class=\"post-permissions\" aria-labelledby=\"post-permissions-heading\">\n <h2 id=\"post-permissions-heading\">Allow Read only with Permissions</h2>\n @if (permissionsLoading()) {\n <p role=\"status\">Loading assigned permissions...</p>\n } @else if (permissionsError()) {\n <p class=\"error\" role=\"alert\">{{ permissionsError() }}</p>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen()\" (click)=\"loadPermissions()\">Try again</button>\n } @else {\n <ul>\n @for (permission of permissions(); track permission.id) {\n <li>\n <span>{{ permission.name }} ({{ permission.code }})</span>\n <button mat-icon-button type=\"button\" [attr.aria-label]=\"'Remove permission ' + permission.name\" [disabled]=\"busy() || dialogOpen()\" (click)=\"removePermission(permission.id)\">\n <mat-icon>close</mat-icon>\n </button>\n </li>\n } @empty {\n <li>No permissions assigned.</li>\n }\n </ul>\n @if (permissionOptionsError()) {\n <p class=\"error\" role=\"alert\">{{ permissionOptionsError() }}</p>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen() || permissionOptionsLoading()\" (click)=\"loadPermissionOptions()\">Try again</button>\n } @else {\n <div class=\"permission-assignment\">\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <mat-label>Permission</mat-label>\n <mat-select\n [value]=\"selectedPermissionId()\"\n [disabled]=\"busy() || dialogOpen() || permissionOptionsLoading()\"\n (selectionChange)=\"selectedPermissionId.set($event.value)\">\n @for (permission of availablePermissions(); track permission.id) {\n <mat-option [value]=\"permission.id\">{{ permission.name }} ({{ permission.code }})</mat-option>\n } @empty {\n <mat-option [disabled]=\"true\">No permissions available</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <button mat-button type=\"button\" [disabled]=\"busy() || dialogOpen() || !selectedPermissionId()\" (click)=\"addPermission()\">\n <mat-icon>add</mat-icon> Assign permission\n </button>\n </div>\n }\n }\n </section>\n } @else if (currentPost(); as post) {\n <h1 class=\"post-title\">{{ post.title }}</h1>\n @if (post.excerpt) {\n <p class=\"post-excerpt\">{{ post.excerpt }}</p>\n }\n <div class=\"post-body\" [innerHTML]=\"post.body\"></div>\n } @else {\n <p role=\"status\">No post is loaded.</p>\n }\n</article>", styles: [":host{display:block}.post-actions{display:flex;align-items:center;flex-wrap:wrap;gap:1rem;padding:1rem;border-bottom:1px solid rgba(136,136,136,.2)}.post-status{margin-right:auto;text-transform:capitalize;opacity:.7}.buttons{display:flex;flex-wrap:wrap;gap:.5rem}.post-article{max-width:760px;margin:0 auto;padding:clamp(1.5rem,5vw,4rem) 1.5rem;overflow-wrap:anywhere}.post-title{margin:0 0 1.5rem;font-size:clamp(2rem,5vw,3.5rem);font-weight:700;line-height:1.15;letter-spacing:-.03em}.post-excerpt{margin:0 0 2rem;font-size:1.35rem;line-height:1.6;opacity:.7;white-space:pre-wrap}.post-body{font-family:Georgia,Times New Roman,serif;font-size:1.2rem;line-height:1.8;white-space:pre-wrap}.editable{min-height:1.2em;outline:none}.editable:focus{box-shadow:-3px 0 #8885}.editable:empty:before{content:attr(data-placeholder);opacity:.4;pointer-events:none}.post-body.editable{min-height:12rem}.slug-field{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin-top:3rem;padding-top:1rem;border-top:1px solid rgba(136,136,136,.2);font-size:.875rem}.slug-field input{flex:1;min-width:160px;padding:.5rem;color:inherit;background:transparent;border:1px solid rgba(136,136,136,.3333333333);border-radius:4px}.error{padding:1rem;color:#b3261e}.post-type-selector{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem}.media-attachment,.related-posts,.application-hook,.post-permissions{margin-top:1.5rem;font-size:.875rem}.media-attachment h2,.related-posts h2,.application-hook h2,.post-permissions h2{font-size:1rem}.related-posts ul,.post-permissions ul{padding:0;list-style:none}.related-posts .application-hook,.post-permissions .application-hook{display:grid;align-items:start;gap:.75rem}.related-posts .application-hook mat-form-field,.post-permissions .application-hook mat-form-field{width:min(100%,28rem)}.related-posts li,.post-permissions li{display:flex;align-items:center;justify-content:space-between;gap:.5rem}\n"] }]
3787
- }], ctorParameters: () => [], propDecorators: { post: [{ type: i0.Input, args: [{ isSignal: true, alias: "post", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }, { type: i0.Output, args: ["modeChange"] }], changed: [{ type: i0.Output, args: ["changed"] }], deleted: [{ type: i0.Output, args: ["deleted"] }], cancelled: [{ type: i0.Output, args: ["cancelled"] }] } });
5849
+ ], providers: [
5850
+ TaonCmsContentApiService,
5851
+ TaonPermissionApiService,
5852
+ TaonCmsCategoryApiService,
5853
+ TaonCmsTagApiService,
5854
+ ], template: "@if (mode() !== 'view-clean') {\n <header class=\"post-actions\">\n <span class=\"post-status\">{{\n mode() === 'add' ? t.gettext('New draft') : currentPost()?.status\n }}</span>\n <div class=\"buttons\">\n @if (editing()) {\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || !canSave()\"\n (click)=\"save()\">\n {{ mode() === 'add' ? t.gettext('Add') : t.gettext('Save') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"cancel()\">\n {{ t.gettext('Cancel') }}\n </button>\n } @else if (currentPost()) {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"edit()\">\n <mat-icon>edit</mat-icon> {{ t.gettext('Edit') }}\n </button>\n }\n @if (mode() !== 'add' && currentPost()) {\n @if (canPublish()) {\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || (editing() && !canSave())\"\n (click)=\"publish()\">\n {{ t.gettext('Publish') }}\n </button>\n } @else {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"unpublish()\">\n {{ t.gettext('Unpublish') }}\n </button>\n }\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"revert()\">\n <mat-icon>history</mat-icon> {{ t.gettext('Revert') }}\n </button>\n @if (currentPost()?.status !== 'archived') {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"delete()\">\n <mat-icon>delete</mat-icon> {{ t.gettext('Delete') }}\n </button>\n }\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"duplicate()\">\n <mat-icon>content_copy</mat-icon> {{ t.gettext('Duplicate') }}\n </button>\n }\n </div>\n @if (busy()) {\n <span role=\"status\">{{\n uploading()\n ? t.gettext('Uploading... ') + uploadProgress() + '%'\n : t.gettext('Saving...')\n }}</span>\n }\n </header>\n @if (error()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ error() }}\n </p>\n }\n}\n\n<article\n class=\"post-article\"\n [attr.aria-busy]=\"busy()\">\n @if (editing()) {\n <mat-radio-group\n class=\"post-type-selector\"\n [attr.aria-label]=\"t.gettext('Post type')\"\n [value]=\"draft().type\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"updateDraft('type', $event.value)\">\n @for (type of postTypes; track type.value) {\n <mat-radio-button [value]=\"type.value\">{{\n type.label\n }}</mat-radio-button>\n }\n </mat-radio-group>\n <div\n class=\"post-title editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n [attr.aria-label]=\"t.gettext('Post title')\"\n aria-required=\"true\"\n [attr.data-placeholder]=\"placeholderTitle()\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n [taonCmsEditableSingleLine]=\"true\"\n [taonCmsEditable]=\"draft().title\"\n (taonCmsEditableChange)=\"updateDraft('title', $event)\"></div>\n <div\n class=\"post-excerpt editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n [attr.aria-label]=\"t.gettext('Post excerpt')\"\n aria-multiline=\"true\"\n [attr.data-placeholder]=\"placeholderShortIntro()\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n [taonCmsEditable]=\"draft().excerpt\"\n (taonCmsEditableChange)=\"updateDraft('excerpt', $event)\"></div>\n <div\n class=\"post-body editable\"\n contenteditable=\"true\"\n role=\"textbox\"\n [attr.aria-label]=\"t.gettext('Post body')\"\n aria-multiline=\"true\"\n [attr.data-placeholder]=\"placeholderTellYourStory()\"\n [attr.contenteditable]=\"!busy() && !dialogOpen()\"\n taonCmsEditableFormat=\"html\"\n [taonCmsEditable]=\"draft().body\"\n (taonCmsEditableChange)=\"updateDraft('body', $event)\"></div>\n <label class=\"slug-field\">\n <span>{{ t.gettext('URL slug') }}</span>\n <input\n [attr.aria-label]=\"t.gettext('URL slug')\"\n [value]=\"draft().slug\"\n [disabled]=\"busy() || dialogOpen()\"\n (input)=\"updateSlug($event)\"\n [placeholder]=\"t.gettext('my-post')\" />\n </label>\n @if (mediaAttachment(); as media) {\n <section\n class=\"media-attachment\"\n aria-labelledby=\"media-attachment-heading\">\n <h2 id=\"media-attachment-heading\">{{ media.heading }}</h2>\n @if (uploading()) {\n <mat-progress-bar\n mode=\"determinate\"\n [value]=\"uploadProgress()\"\n [attr.aria-label]=\"t.gettext('Media upload progress')\" />\n }\n @if (draft()[media.key]; as key) {\n @if (mediaPreviewLoading()) {\n <p role=\"status\">{{ t.gettext('Loading media preview...') }}</p>\n }\n @if (mediaPreviewError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ mediaPreviewError() }}\n </p>\n }\n @if (media.type === 'video' && mediaPreviewUrl()) {\n <video\n controls\n preload=\"none\"\n [src]=\"mediaPreviewUrl()\">\n {{ t.gettext('Your browser does not support video playback.') }}\n </video>\n } @else if (media.type === 'audio' && mediaPreviewUrl()) {\n <audio\n controls\n preload=\"none\"\n [src]=\"mediaPreviewUrl()\">\n {{ t.gettext('Your browser does not support audio playback.') }}\n </audio>\n } @else if (media.type === 'attachment' && mediaPreviewUrl()) {\n <p>\n {{\n t.gettext('Attached file: [[ fileName ]]', {\n fileName: mediaFileName(key),\n })\n }}\n <a\n [href]=\"mediaPreviewUrl()\"\n target=\"_blank\"\n rel=\"noopener\"\n >{{ t.gettext('Download or open') }}</a\n >\n </p>\n }\n <input\n #mediaInput\n hidden\n type=\"file\"\n [accept]=\"media.accept\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"fileSelected($event)\" />\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"mediaInput.click()\">\n {{ t.gettext('Replace') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"removeMedia()\">\n {{ t.gettext('Remove') }}\n </button>\n } @else {\n <input\n #mediaInput\n hidden\n type=\"file\"\n [accept]=\"media.accept\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"fileSelected($event)\" />\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"mediaInput.click()\">\n {{ media.uploadLabel }}\n </button>\n }\n </section>\n }\n <section\n class=\"post-thumbnail\"\n aria-labelledby=\"thumbnail-heading\">\n <h2 id=\"thumbnail-heading\">{{ t.gettext('Thumbnail') }}</h2>\n @if (thumbnailPreviewUrl()) {\n <img\n class=\"thumbnail-preview\"\n [src]=\"thumbnailPreviewUrl()\"\n [alt]=\"t.gettext('Post thumbnail')\" />\n } @else {\n <p>{{ t.gettext('No thumbnail selected.') }}</p>\n }\n @if (thumbnailError()) {\n <p role=\"alert\">{{ thumbnailError() }}</p>\n }\n <input\n #thumbnailInput\n hidden\n type=\"file\"\n accept=\"image/*\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"thumbnailSelected($event)\" />\n <div class=\"buttons\">\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"thumbnailInput.click()\">\n {{ t.gettext('Upload Thumbnail') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"applyDefaultThumbnail()\">\n {{ t.gettext('Apply Default Placeholder') }}\n </button>\n </div>\n </section>\n <section\n class=\"post-taxonomy\"\n aria-labelledby=\"category-heading\">\n <h2 id=\"category-heading\">{{ t.gettext('Category and Tags') }}</h2>\n @if (taxonomyLoading()) {\n <p role=\"status\">{{ t.gettext('Loading categories and tags...') }}</p>\n }\n @if (taxonomyError()) {\n <p role=\"alert\">{{ taxonomyError() }}</p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy()\"\n (click)=\"loadTaxonomy()\">\n {{ t.gettext('Try again') }}\n </button>\n }\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Category') }}</mat-label>\n <mat-select\n [value]=\"draft().categoryId\"\n [disabled]=\"\n busy() || dialogOpen() || taxonomyLoading() || !!taxonomyError()\n \"\n (selectionChange)=\"updateDraft('categoryId', $event.value)\">\n <mat-option [value]=\"null\">{{ t.gettext('None') }}</mat-option>\n @for (category of categories(); track category.id) {\n <mat-option [value]=\"category.id\">{{ category.name }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <h3>{{ t.gettext('Tags') }}</h3>\n <mat-chip-set [attr.aria-label]=\"t.gettext('Selected tags')\">\n @for (tag of selectedTags(); track tag.id) {\n <mat-chip\n [disabled]=\"busy() || dialogOpen() || taxonomyLoading()\"\n (removed)=\"removeTag(tag.id)\">\n {{ tag.name }}\n <button\n matChipRemove\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || taxonomyLoading()\"\n [attr.aria-label]=\"\n t.gettext('Remove tag [[ name ]]', { name: tag.name })\n \">\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip>\n }\n </mat-chip-set>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Search tags') }}</mat-label>\n <input\n matInput\n [value]=\"tagSearch()\"\n (input)=\"filterTags($event)\"\n [disabled]=\"busy() || dialogOpen() || taxonomyLoading()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Add tag') }}</mat-label>\n <mat-select\n [value]=\"null\"\n [disabled]=\"\n busy() || dialogOpen() || taxonomyLoading() || !!taxonomyError()\n \"\n (selectionChange)=\"addTag($event.value)\">\n @for (tag of filteredTags(); track tag.id) {\n <mat-option [value]=\"tag.id\">{{ tag.name }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n </section>\n <section\n class=\"related-posts\"\n aria-labelledby=\"related-posts-heading\">\n <h2 id=\"related-posts-heading\">{{ t.gettext('Related posts') }}</h2>\n @if (relatedPostsLoading()) {\n <p role=\"status\">{{ t.gettext('Loading related posts...') }}</p>\n } @else if (relatedPostsError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ relatedPostsError() }}\n </p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"loadRelatedPosts()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <ul>\n @for (post of relatedPosts(); track post.id) {\n <li>\n <span>#{{ post.id }} - {{ post.title }}</span>\n <button\n mat-icon-button\n type=\"button\"\n [attr.aria-label]=\"\n t.gettext('Remove related post [[ title ]]', {\n title: post.title,\n })\n \"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"removeRelatedPost(post.id)\">\n <mat-icon>close</mat-icon>\n </button>\n </li>\n } @empty {\n <li>{{ t.gettext('No related posts yet.') }}</li>\n }\n </ul>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"addRelatedPost()\">\n <mat-icon>add</mat-icon> {{ t.gettext('Add related post') }}\n </button>\n }\n </section>\n\n @if (!mediaAttachment()) {\n <section\n class=\"application-hook\"\n aria-labelledby=\"application-hook-heading\">\n <h2 id=\"application-hook-heading\">\n {{ t.gettext('Application Hook') }}\n </h2>\n @if (applicationHooksLoading()) {\n <p role=\"status\">{{ t.gettext('Loading application hooks...') }}</p>\n } @else if (applicationHooksError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ applicationHooksError() }}\n </p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"loadApplicationHooks()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <mat-checkbox\n [checked]=\"useAsApplicationHook()\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"setUseAsApplicationHook($event.checked)\">\n {{ t.gettext('Use as application hook') }}\n </mat-checkbox>\n @if (useAsApplicationHook()) {\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\">\n <mat-label>{{ t.gettext('Application Hook') }}</mat-label>\n <mat-select\n [value]=\"selectedApplicationHook()\"\n [disabled]=\"busy() || dialogOpen()\"\n (selectionChange)=\"selectedApplicationHook.set($event.value)\">\n @for (\n applicationHook of applicationHooks();\n track applicationHook.id\n ) {\n <mat-option\n [value]=\"applicationHook.hook\"\n [disabled]=\"\n applicationHookInUseByAnotherPost(applicationHook)\n \">\n {{ applicationHookLabel(applicationHook.hook) }}\n @if (applicationHookInUseByAnotherPost(applicationHook)) {\n {{\n t.gettext('(in use by post # [[ postId ]])', {\n postId: applicationHook.contentId,\n })\n }}\n }\n </mat-option>\n } @empty {\n <mat-option [disabled]=\"true\">{{\n t.gettext('No application hooks configured')\n }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n }\n </section>\n }\n <section\n class=\"post-permissions\"\n aria-labelledby=\"post-permissions-heading\">\n <h2 id=\"post-permissions-heading\">\n {{ t.gettext('Allow Read only with Permissions') }}\n </h2>\n @if (permissionSource(); as source) {\n <p role=\"note\">\n {{\n t.gettext(\n 'Permissions are inherited from # [[ postId ]] - [[ title ]]. Edit the source post to change them.',\n { postId: source.id, title: source.title }\n )\n }}\n </p>\n }\n @if (permissionsLoading()) {\n <p role=\"status\">{{ t.gettext('Loading assigned permissions...') }}</p>\n } @else if (permissionsError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ permissionsError() }}\n </p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"loadPermissions()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <ul>\n @for (permission of permissions(); track permission.id) {\n <li>\n <span>{{ permission.name }} ({{ permission.code }})</span>\n <button\n mat-icon-button\n type=\"button\"\n [attr.aria-label]=\"\n t.gettext('Remove permission [[ name ]]', {\n name: permission.name,\n })\n \"\n [disabled]=\"busy() || dialogOpen() || !!permissionSource()\"\n (click)=\"removePermission(permission.id)\">\n <mat-icon>close</mat-icon>\n </button>\n </li>\n } @empty {\n <li>{{ t.gettext('No permissions assigned.') }}</li>\n }\n </ul>\n @if (permissionOptionsError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ permissionOptionsError() }}\n </p>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || permissionOptionsLoading()\"\n (click)=\"loadPermissionOptions()\">\n {{ t.gettext('Try again') }}\n </button>\n } @else {\n <div class=\"permission-assignment\">\n <mat-form-field\n appearance=\"outline\"\n subscriptSizing=\"dynamic\">\n <mat-label>{{ t.gettext('Permission') }}</mat-label>\n <mat-select\n [value]=\"selectedPermissionId()\"\n [disabled]=\"\n busy() ||\n dialogOpen() ||\n permissionOptionsLoading() ||\n !!permissionSource()\n \"\n (selectionChange)=\"selectedPermissionId.set($event.value)\">\n @for (\n permission of availablePermissions();\n track permission.id\n ) {\n <mat-option [value]=\"permission.id\"\n >{{ permission.name }} ({{ permission.code }})</mat-option\n >\n } @empty {\n <mat-option [disabled]=\"true\">{{\n t.gettext('No permissions available')\n }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"\n busy() ||\n dialogOpen() ||\n !selectedPermissionId() ||\n !!permissionSource()\n \"\n (click)=\"addPermission()\">\n <mat-icon>add</mat-icon> {{ t.gettext('Assign permission') }}\n </button>\n </div>\n }\n }\n @if (!permissionSource()) {\n <mat-checkbox\n [checked]=\"applyPermissionsToRelatedPosts()\"\n [disabled]=\"busy() || dialogOpen()\"\n (change)=\"applyPermissionsToRelatedPosts.set($event.checked)\">\n {{ t.gettext('Apply permissions to related posts') }}\n </mat-checkbox>\n }\n </section>\n } @else if (currentPost(); as post) {\n @if (thumbnailPreviewUrl()) {\n <img\n class=\"thumbnail-preview\"\n [src]=\"thumbnailPreviewUrl()\"\n [alt]=\"t.gettext('Post thumbnail')\" />\n }\n @if (thumbnailError()) {\n <p role=\"alert\">{{ thumbnailError() }}</p>\n }\n <h1 class=\"post-title\">{{ post.title }}</h1>\n @if (post.excerpt) {\n <p class=\"post-excerpt\">{{ post.excerpt }}</p>\n }\n <div\n class=\"post-body\"\n [innerHTML]=\"post.body\"></div>\n @if (mediaAttachment(); as media) {\n @if (draft()[media.key]; as key) {\n @if (mediaPreviewLoading()) {\n <p role=\"status\">{{ t.gettext('Loading media...') }}</p>\n } @else if (mediaPreviewError()) {\n <p\n class=\"error\"\n role=\"alert\">\n {{ mediaPreviewError() }}\n </p>\n } @else if (media.type === 'video' && mediaPreviewUrl()) {\n <video\n controls\n preload=\"none\"\n [src]=\"mediaPreviewUrl()\">\n {{ t.gettext('Your browser does not support video playback.') }}\n </video>\n } @else if (media.type === 'audio' && mediaPreviewUrl()) {\n <audio\n controls\n preload=\"none\"\n [src]=\"mediaPreviewUrl()\">\n {{ t.gettext('Your browser does not support audio playback.') }}\n </audio>\n } @else if (media.type === 'attachment' && mediaPreviewUrl()) {\n <p>\n {{\n t.gettext('Attached file: [[ fileName ]]', {\n fileName: mediaFileName(key),\n })\n }}\n <a\n [href]=\"mediaPreviewUrl()\"\n target=\"_blank\"\n rel=\"noopener\"\n >{{ t.gettext('Download or open') }}</a\n >\n </p>\n }\n }\n }\n } @else {\n <p role=\"status\">{{ t.gettext('No post is loaded.') }}</p>\n }\n</article>\n", styles: [":host{display:block}.post-actions{display:flex;align-items:center;flex-wrap:wrap;gap:1rem;padding:1rem;border-bottom:1px solid rgba(136,136,136,.2)}.post-status{margin-right:auto;text-transform:capitalize;opacity:.7}.buttons{display:flex;flex-wrap:wrap;gap:.5rem}.post-article{max-width:760px;margin:0 auto;padding:clamp(1.5rem,5vw,4rem) 1.5rem;overflow-wrap:anywhere}.post-title{margin:0 0 1.5rem;font-size:clamp(2rem,5vw,3.5rem);font-weight:700;line-height:1.15;letter-spacing:-.03em}.post-excerpt{margin:0 0 2rem;font-size:1.35rem;line-height:1.6;opacity:.7;white-space:pre-wrap}.post-body{font-family:Georgia,Times New Roman,serif;font-size:1.2rem;line-height:1.8;white-space:pre-wrap}.editable{min-height:1.2em;outline:none}.editable:focus{box-shadow:-3px 0 #8885}.editable:empty:before{content:attr(data-placeholder);opacity:.4;pointer-events:none}.post-body.editable{min-height:12rem}.slug-field{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin-top:3rem;padding-top:1rem;border-top:1px solid rgba(136,136,136,.2);font-size:.875rem}.slug-field input{flex:1;min-width:160px;padding:.5rem;color:inherit;background:transparent;border:1px solid rgba(136,136,136,.3333333333);border-radius:4px}.error{padding:1rem;color:#b3261e}.post-type-selector{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem}.media-attachment,.post-thumbnail,.post-taxonomy,.related-posts,.application-hook,.post-permissions{margin-top:1.5rem;font-size:.875rem}.media-attachment h2,.post-thumbnail h2,.post-taxonomy h2,.related-posts h2,.application-hook h2,.post-permissions h2{font-size:1rem}.media-attachment .thumbnail-preview,.post-thumbnail .thumbnail-preview,.post-taxonomy .thumbnail-preview,.related-posts .thumbnail-preview,.application-hook .thumbnail-preview,.post-permissions .thumbnail-preview{display:block;width:min(100%,480px);max-height:320px;object-fit:contain;border-radius:12px;margin-bottom:.75rem}.media-attachment .post-taxonomy mat-form-field,.post-thumbnail .post-taxonomy mat-form-field,.post-taxonomy .post-taxonomy mat-form-field,.related-posts .post-taxonomy mat-form-field,.application-hook .post-taxonomy mat-form-field,.post-permissions .post-taxonomy mat-form-field{display:block;margin-top:.75rem}.related-posts ul,.post-permissions ul{padding:0;list-style:none}.related-posts .application-hook,.post-permissions .application-hook{display:grid;align-items:start;gap:.75rem}.related-posts .application-hook mat-form-field,.post-permissions .application-hook mat-form-field{width:min(100%,28rem)}.related-posts li,.post-permissions li{display:flex;align-items:center;justify-content:space-between;gap:.5rem}video{max-width:100%;max-height:400px!important}\n"] }]
5855
+ }], ctorParameters: () => [], propDecorators: { post: [{ type: i0.Input, args: [{ isSignal: true, alias: "post", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }, { type: i0.Output, args: ["modeChange"] }], changed: [{ type: i0.Output, args: ["changed"] }], deleted: [{ type: i0.Output, args: ["deleted"] }], duplicated: [{ type: i0.Output, args: ["duplicated"] }], cancelled: [{ type: i0.Output, args: ["cancelled"] }] } });
3788
5856
 
3789
5857
  var taonCmsPost_component = /*#__PURE__*/Object.freeze({
3790
5858
  __proto__: null,
@@ -3815,17 +5883,46 @@ const TaonCmsPostRoutes = [
3815
5883
  */
3816
5884
  // export default TaonCmsPostRoutes;
3817
5885
 
5886
+ const t$2 = Translation.for('src/lib/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts', { "src/lib/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-post-details-page.component.ts.en-US.i18n.data-BlZyHTVD.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-CbIqWbm3.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-post-details-page.component.ts.de-DE.i18n.data-BLkIVWeD.mjs')).default } });
3818
5887
  class TaonCmsPostDetailsPageComponent {
3819
5888
  constructor() {
3820
- this.post$ = inject(ActivatedRoute).data.pipe(map$1(data => data['post']));
5889
+ this.t = t$2.for(this);
5890
+ this.route = inject(ActivatedRoute);
5891
+ this.router = inject(Router);
5892
+ this.page$ = this.route.data.pipe(map$1(data => ({
5893
+ create: data['createPost'] === true,
5894
+ post: data['post'] ?? null,
5895
+ })));
5896
+ }
5897
+ onChanged(post, create) {
5898
+ if (create) {
5899
+ this.openPost(post);
5900
+ }
5901
+ }
5902
+ openPost(post) {
5903
+ void this.router.navigate(['../', post.id], { relativeTo: this.route });
5904
+ }
5905
+ onCancelled(create) {
5906
+ if (create) {
5907
+ void this.router.navigate(['../'], { relativeTo: this.route });
5908
+ }
3821
5909
  }
3822
5910
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostDetailsPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3823
5911
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsPostDetailsPageComponent, isStandalone: true, selector: "taon-cms-post-details-page", ngImport: i0, template: `
3824
- @if (post$ | async; as post) {
3825
- <a mat-button routerLink="../">Back to Posts</a>
3826
- <taon-cms-post [post]="post"></taon-cms-post>
3827
- }
3828
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: TaonCmsPostComponent, selector: "taon-cms-post", inputs: ["post", "mode"], outputs: ["modeChange", "changed", "deleted", "cancelled"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5912
+ @if (page$ | async; as page) {
5913
+ <a
5914
+ mat-button
5915
+ routerLink="../"
5916
+ >{{ t.gettext('Back to Posts') }}</a
5917
+ >
5918
+ <taon-cms-post
5919
+ [post]="page.post"
5920
+ [mode]="page.create ? 'add' : 'view'"
5921
+ (changed)="onChanged($event, page.create)"
5922
+ (duplicated)="openPost($event)"
5923
+ (cancelled)="onCancelled(page.create)" />
5924
+ }
5925
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: TaonCmsPostComponent, selector: "taon-cms-post", inputs: ["post", "mode"], outputs: ["modeChange", "changed", "deleted", "duplicated", "cancelled"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3829
5926
  }
3830
5927
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostDetailsPageComponent, decorators: [{
3831
5928
  type: Component,
@@ -3834,9 +5931,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
3834
5931
  changeDetection: ChangeDetectionStrategy.OnPush,
3835
5932
  imports: [AsyncPipe, MatButtonModule, RouterLink, TaonCmsPostComponent],
3836
5933
  template: `
3837
- @if (post$ | async; as post) {
3838
- <a mat-button routerLink="../">Back to Posts</a>
3839
- <taon-cms-post [post]="post"></taon-cms-post>
5934
+ @if (page$ | async; as page) {
5935
+ <a
5936
+ mat-button
5937
+ routerLink="../"
5938
+ >{{ t.gettext('Back to Posts') }}</a
5939
+ >
5940
+ <taon-cms-post
5941
+ [post]="page.post"
5942
+ [mode]="page.create ? 'add' : 'view'"
5943
+ (changed)="onChanged($event, page.create)"
5944
+ (duplicated)="openPost($event)"
5945
+ (cancelled)="onCancelled(page.create)" />
3840
5946
  }
3841
5947
  `,
3842
5948
  }]
@@ -3847,68 +5953,48 @@ var taonCmsPostDetailsPage_component = /*#__PURE__*/Object.freeze({
3847
5953
  TaonCmsPostDetailsPageComponent: TaonCmsPostDetailsPageComponent
3848
5954
  });
3849
5955
 
3850
- class TaonCmsPostEditDialogComponent {
3851
- constructor() {
3852
- this.data = inject(MAT_DIALOG_DATA);
3853
- this.editor = viewChild(TaonCmsPostComponent, ...(ngDevMode ? [{ debugName: "editor" }] : []));
3854
- this.changed = new EventEmitter();
3855
- this.ref = inject((MatDialogRef));
3856
- }
3857
- close() {
3858
- if (!this.editor()?.busy() && !this.editor()?.dialogOpen()) {
3859
- this.ref.close();
3860
- }
3861
- }
3862
- deleted(post) {
3863
- this.ref.close(post);
3864
- }
3865
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostEditDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3866
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.0.9", type: TaonCmsPostEditDialogComponent, isStandalone: true, selector: "taon-cms-post-edit-dialog", viewQueries: [{ propertyName: "editor", first: true, predicate: TaonCmsPostComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<header class=\"dialog-header\">\n <h2>{{ data.mode === 'add' ? 'Add post' : 'Manage post' }}</h2>\n <button mat-icon-button type=\"button\" aria-label=\"Close post editor\" [disabled]=\"editor()?.busy() || editor()?.dialogOpen()\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n</header>\n<taon-cms-post\n [post]=\"data.post ?? null\"\n [mode]=\"data.mode\"\n (changed)=\"changed.emit($event)\"\n (deleted)=\"deleted($event)\"\n (cancelled)=\"close()\" />\n", styles: [":host{display:block;height:100%;overflow-y:auto}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;border-bottom:1px solid rgba(136,136,136,.2)}.dialog-header h2{margin:0;font-size:1rem;font-weight:500}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: TaonCmsPostComponent, selector: "taon-cms-post", inputs: ["post", "mode"], outputs: ["modeChange", "changed", "deleted", "cancelled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3867
- }
3868
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostEditDialogComponent, decorators: [{
3869
- type: Component,
3870
- args: [{ selector: 'taon-cms-post-edit-dialog', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatButtonModule, MatDialogModule, MatIconModule, TaonCmsPostComponent], template: "<header class=\"dialog-header\">\n <h2>{{ data.mode === 'add' ? 'Add post' : 'Manage post' }}</h2>\n <button mat-icon-button type=\"button\" aria-label=\"Close post editor\" [disabled]=\"editor()?.busy() || editor()?.dialogOpen()\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n</header>\n<taon-cms-post\n [post]=\"data.post ?? null\"\n [mode]=\"data.mode\"\n (changed)=\"changed.emit($event)\"\n (deleted)=\"deleted($event)\"\n (cancelled)=\"close()\" />\n", styles: [":host{display:block;height:100%;overflow-y:auto}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;border-bottom:1px solid rgba(136,136,136,.2)}.dialog-header h2{margin:0;font-size:1rem;font-weight:500}\n"] }]
3871
- }], propDecorators: { editor: [{ type: i0.ViewChild, args: [i0.forwardRef(() => TaonCmsPostComponent), { isSignal: true }] }] } });
3872
-
3873
5956
  //#region imports
3874
5957
  //#endregion
5958
+ const t$1 = Translation.for('src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts', { "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-posts-backoffice.component.html.en-US.i18n.data-BHayrvIT.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-D20weGEY.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-CgN5IPiF.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-BF3C9IWs.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-BWwu-KCW.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-B4suZvEh.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-ChhV8nE4.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-CEEZs_nF.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-5LisKXGn.mjs')).default } });
3875
5959
  class TaonCmsPostsBackofficeComponent {
3876
5960
  constructor() {
5961
+ this.t = t$1.for(this);
3877
5962
  this.taonCmsContentApiService = inject(TaonCmsContentApiService);
3878
5963
  this.posts = signal([], ...(ngDevMode ? [{ debugName: "posts" }] : []));
3879
5964
  this.loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
3880
5965
  this.deleting = signal(null, ...(ngDevMode ? [{ debugName: "deleting" }] : []));
5966
+ this.duplicating = signal(false, ...(ngDevMode ? [{ debugName: "duplicating" }] : []));
3881
5967
  this.error = signal('', ...(ngDevMode ? [{ debugName: "error" }] : []));
3882
5968
  this.dialog = inject(MatDialog);
3883
5969
  this.route = inject(ActivatedRoute);
3884
5970
  this.router = inject(Router);
3885
5971
  this.destroyRef = inject(DestroyRef);
3886
- this.cancelLoad$ = new Subject();
3887
5972
  this.columns = [
3888
5973
  { header: 'ID', field: 'id', sortable: true },
3889
- { header: 'Title', field: 'title', sortable: true },
3890
- { header: 'Status', field: 'status', sortable: true },
5974
+ { header: this.t.gettext('Title'), field: 'title', sortable: true },
5975
+ { header: this.t.gettext('Status'), field: 'status', sortable: true },
3891
5976
  {
3892
- header: 'Actions',
5977
+ header: this.t.gettext('Actions'),
3893
5978
  field: 'actions',
3894
5979
  type: 'button',
3895
5980
  buttons: [
3896
5981
  {
3897
5982
  type: 'icon',
3898
- icon: 'edit',
3899
- tooltip: 'Edit post',
3900
- click: (post) => this.edit(post),
5983
+ icon: 'content_copy',
5984
+ tooltip: this.t.gettext('Duplicate post'),
5985
+ disabled: () => this.duplicating(),
5986
+ click: (post) => this.duplicate(post),
3901
5987
  },
3902
5988
  {
3903
5989
  type: 'icon',
3904
5990
  icon: 'open_in_new',
3905
- tooltip: 'Post details',
5991
+ tooltip: this.t.gettext('Post details'),
3906
5992
  click: (post) => this.openDetails(post),
3907
5993
  },
3908
5994
  {
3909
5995
  type: 'icon',
3910
5996
  icon: 'delete',
3911
- tooltip: 'Delete (archive) post',
5997
+ tooltip: this.t.gettext('Delete (archive) post'),
3912
5998
  disabled: (post) => post.status === 'archived' || this.deleting() !== null,
3913
5999
  click: (post) => this.delete(post),
3914
6000
  },
@@ -3926,18 +6012,35 @@ class TaonCmsPostsBackofficeComponent {
3926
6012
  this.reload();
3927
6013
  }
3928
6014
  add() {
3929
- this.openEditor({ mode: 'add' });
3930
- }
3931
- edit(post) {
3932
- this.openEditor({ mode: 'edit', post });
6015
+ this.openPost('new');
3933
6016
  }
3934
6017
  openDetails(post) {
6018
+ this.openPost(post.id);
6019
+ }
6020
+ openPost(id) {
3935
6021
  const postsRoute = this.route.parent;
3936
6022
  if (!postsRoute) {
3937
- this.error.set('The Post details route is unavailable.');
6023
+ this.error.set(this.t.gettext('The Post details route is unavailable.'));
6024
+ return;
6025
+ }
6026
+ void this.router.navigate([id], { relativeTo: postsRoute });
6027
+ }
6028
+ duplicate(post) {
6029
+ if (this.duplicating()) {
3938
6030
  return;
3939
6031
  }
3940
- void this.router.navigate([post.id], { relativeTo: postsRoute });
6032
+ this.duplicating.set(true);
6033
+ this.error.set('');
6034
+ this.taonCmsContentApiService
6035
+ .duplicateContent(post.id)
6036
+ .pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.duplicating.set(false)))
6037
+ .subscribe({
6038
+ next: duplicate => this.openDetails(duplicate),
6039
+ error: (error) => {
6040
+ console.error('[taon-cms-posts-backoffice] Unable to duplicate post', error);
6041
+ this.error.set(this.t.gettext('The post could not be duplicated. Please try again.'));
6042
+ },
6043
+ });
3941
6044
  }
3942
6045
  delete(post) {
3943
6046
  if (this.deleting() !== null || post.status === 'archived') {
@@ -3946,9 +6049,9 @@ class TaonCmsPostsBackofficeComponent {
3946
6049
  this.deleting.set(post.id);
3947
6050
  const ref = this.dialog.open(TaonConfirmDialogComponent, {
3948
6051
  data: {
3949
- title: 'Delete post?',
3950
- message: 'This archives the post. It can be restored from its revisions.',
3951
- confirmText: 'Delete',
6052
+ title: this.t.gettext('Delete post?'),
6053
+ message: this.t.gettext('This archives the post. It can be restored from its revisions.'),
6054
+ confirmText: this.t.gettext('Delete'),
3952
6055
  },
3953
6056
  });
3954
6057
  ref
@@ -3967,31 +6070,17 @@ class TaonCmsPostsBackofficeComponent {
3967
6070
  next: () => this.reload(),
3968
6071
  error: (error) => {
3969
6072
  console.error('[taon-cms-posts-backoffice] Unable to delete post', error);
3970
- this.error.set('The post could not be deleted. Refresh the table before retrying.');
6073
+ this.error.set(this.t.gettext('The post could not be deleted. Refresh the table before retrying.'));
3971
6074
  },
3972
6075
  });
3973
6076
  });
3974
6077
  }
3975
- openEditor(data) {
3976
- const ref = this.dialog.open(TaonCmsPostEditDialogComponent, {
3977
- data,
3978
- width: '100vw',
3979
- height: '100dvh',
3980
- maxWidth: '100vw',
3981
- maxHeight: '100dvh',
3982
- disableClose: true,
3983
- autoFocus: 'first-tabbable',
3984
- });
3985
- ref.componentInstance.changed
3986
- .pipe(takeUntil(ref.afterClosed()), takeUntilDestroyed(this.destroyRef))
3987
- .subscribe(() => this.reload());
3988
- }
3989
6078
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostsBackofficeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3990
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsPostsBackofficeComponent, isStandalone: true, selector: "app-taon-cms-posts-backoffice", providers: [TaonCmsContentApiService], viewQueries: [{ propertyName: "datatable", first: true, predicate: TaonDatatableComponent, descendants: true }], ngImport: i0, template: "<h1>CMS posts</h1>\n@if (loading()) {\n <p role=\"status\">Loading posts...</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n<taon-datatable\n [entityCrudController]=\"crud\"\n [columns]=\"columns\"\n [allowedColumns]=\"['id', 'title', 'status']\"\n searchMode=\"advanced\"\n (addingItem)=\"add()\">\n</taon-datatable>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: TaonDatatableComponent, selector: "taon-datatable", inputs: ["pageNumber", "pageSize", "pageSizeOptions", "allowedColumns", "expansionTemplate", "entityCrudController", "columns", "hideSearch", "hideAddButton", "safe", "searchMode", "callQueryMethod", "data", "showPaginator"], outputs: ["expansionChange", "addingItem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6079
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsPostsBackofficeComponent, isStandalone: true, selector: "app-taon-cms-posts-backoffice", providers: [TaonCmsContentApiService], viewQueries: [{ propertyName: "datatable", first: true, predicate: TaonDatatableComponent, descendants: true }], ngImport: i0, template: "<h1>{{ t.gettext('CMS posts') }}</h1>\n@if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading posts...') }}</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n<taon-datatable\n [entityCrudController]=\"crud\"\n [columns]=\"columns\"\n [allowedColumns]=\"['id', 'title', 'status']\"\n searchMode=\"advanced\"\n (addingItem)=\"add()\">\n</taon-datatable>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: TaonDatatableComponent, selector: "taon-datatable", inputs: ["pageNumber", "pageSize", "pageSizeOptions", "allowedColumns", "expansionTemplate", "entityCrudController", "columns", "hideSearch", "hideAddButton", "safe", "searchMode", "callQueryMethod", "data", "showPaginator"], outputs: ["expansionChange", "addingItem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3991
6080
  }
3992
6081
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostsBackofficeComponent, decorators: [{
3993
6082
  type: Component,
3994
- args: [{ selector: 'app-taon-cms-posts-backoffice', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatButtonModule, TaonDatatableComponent], providers: [TaonCmsContentApiService], template: "<h1>CMS posts</h1>\n@if (loading()) {\n <p role=\"status\">Loading posts...</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n<taon-datatable\n [entityCrudController]=\"crud\"\n [columns]=\"columns\"\n [allowedColumns]=\"['id', 'title', 'status']\"\n searchMode=\"advanced\"\n (addingItem)=\"add()\">\n</taon-datatable>\n", styles: [":host{display:block}\n"] }]
6083
+ args: [{ selector: 'app-taon-cms-posts-backoffice', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatButtonModule, TaonDatatableComponent], providers: [TaonCmsContentApiService], template: "<h1>{{ t.gettext('CMS posts') }}</h1>\n@if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading posts...') }}</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n<taon-datatable\n [entityCrudController]=\"crud\"\n [columns]=\"columns\"\n [allowedColumns]=\"['id', 'title', 'status']\"\n searchMode=\"advanced\"\n (addingItem)=\"add()\">\n</taon-datatable>\n", styles: [":host{display:block}\n"] }]
3995
6084
  }], propDecorators: { datatable: [{
3996
6085
  type: ViewChild,
3997
6086
  args: [TaonDatatableComponent]
@@ -4007,15 +6096,16 @@ var taonCmsPostsBackoffice_component = /*#__PURE__*/Object.freeze({
4007
6096
 
4008
6097
  //#region imports
4009
6098
  //#endregion
6099
+ const t = Translation.for('src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts', { "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-posts-backoffice.component.html.en-US.i18n.data-BHayrvIT.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-D20weGEY.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-CgN5IPiF.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-BF3C9IWs.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-BWwu-KCW.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-B4suZvEh.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts": { "en-US": async () => (await import('./cms-websql-prod-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-ChhV8nE4.mjs')).default, "pl-PL": async () => (await import('./cms-websql-prod-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-CEEZs_nF.mjs')).default, "de-DE": async () => (await import('./cms-websql-prod-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-5LisKXGn.mjs')).default } });
4010
6100
  const resolvePost = async (route) => {
4011
6101
  const id = Number(route.paramMap.get('id'));
4012
6102
  if (!Number.isSafeInteger(id) || id <= 0) {
4013
- throw new Error('Invalid Post ID');
6103
+ throw new Error(t.gettext('Invalid Post ID'));
4014
6104
  }
4015
6105
  const taonCmsContentApiService = inject(TaonCmsContentApiService);
4016
6106
  const post = await taonCmsContentApiService.getById(id);
4017
6107
  if (!post) {
4018
- throw new Error('Post not found');
6108
+ throw new Error(t.gettext('Post not found'));
4019
6109
  }
4020
6110
  return post;
4021
6111
  };
@@ -4025,6 +6115,11 @@ const TaonCmsPostsBackofficeRoutes = [
4025
6115
  pathMatch: 'full',
4026
6116
  loadComponent: () => Promise.resolve().then(function () { return taonCmsPostsBackoffice_component; }).then(m => m.TaonCmsPostsBackofficeComponent),
4027
6117
  },
6118
+ {
6119
+ path: 'new',
6120
+ data: { hideInNavigation: true, createPost: true },
6121
+ loadComponent: () => Promise.resolve().then(function () { return taonCmsPostDetailsPage_component; }).then(m => m.TaonCmsPostDetailsPageComponent),
6122
+ },
4028
6123
  {
4029
6124
  path: ':id',
4030
6125
  data: { hideInNavigation: true },
@@ -4057,6 +6152,8 @@ var index$1 = /*#__PURE__*/Object.freeze({
4057
6152
  CURRENT_PACKAGE_TAON_VERSION: CURRENT_PACKAGE_TAON_VERSION,
4058
6153
  CURRENT_PACKAGE_VERSION: CURRENT_PACKAGE_VERSION,
4059
6154
  get CmsContext_1791132517217_initial () { return CmsContext_1791132517217_initial; },
6155
+ get CmsContext_1792579000000_postPermissionInheritance () { return CmsContext_1792579000000_postPermissionInheritance; },
6156
+ get CmsContext_1793043000000_postThumbnails () { return CmsContext_1793043000000_postThumbnails; },
4060
6157
  MIGRATIONS_CLASSES_FOR_CmsContext: MIGRATIONS_CLASSES_FOR_CmsContext,
4061
6158
  PROJECT_NPM_NAME: PROJECT_NPM_NAME,
4062
6159
  get TaonAuthContextEntity () { return TaonAuthContextEntity; },
@@ -4065,10 +6162,12 @@ var index$1 = /*#__PURE__*/Object.freeze({
4065
6162
  TaonCmsAbstractContext: TaonCmsAbstractContext,
4066
6163
  TaonCmsApplicationHook: TaonCmsApplicationHook,
4067
6164
  get TaonCmsApplicationHookEntity () { return TaonCmsApplicationHookEntity; },
6165
+ TaonCmsAssetPreviewComponent: TaonCmsAssetPreviewComponent,
4068
6166
  TaonCmsAssetsBackofficeComponent: TaonCmsAssetsBackofficeComponent,
4069
6167
  TaonCmsAssetsBackofficeRoutes: TaonCmsAssetsBackofficeRoutes,
4070
6168
  TaonCmsBackofficeComponent: TaonCmsBackofficeComponent,
4071
6169
  TaonCmsBackofficeRoutes: TaonCmsBackofficeRoutes,
6170
+ TaonCmsCategoriesBackofficeRoutes: TaonCmsCategoriesBackofficeRoutes,
4072
6171
  TaonCmsCategoryAbstractContext: TaonCmsCategoryAbstractContext,
4073
6172
  TaonCmsCategoryApiService: TaonCmsCategoryApiService,
4074
6173
  get TaonCmsCategoryController () { return TaonCmsCategoryController; },
@@ -4152,7 +6251,6 @@ var index$1 = /*#__PURE__*/Object.freeze({
4152
6251
  TaonCmsEditableDirective: TaonCmsEditableDirective,
4153
6252
  TaonCmsPostComponent: TaonCmsPostComponent,
4154
6253
  TaonCmsPostDetailsPageComponent: TaonCmsPostDetailsPageComponent,
4155
- TaonCmsPostEditDialogComponent: TaonCmsPostEditDialogComponent,
4156
6254
  TaonCmsPostRoutes: TaonCmsPostRoutes,
4157
6255
  TaonCmsPostsBackofficeComponent: TaonCmsPostsBackofficeComponent,
4158
6256
  TaonCmsPostsBackofficeRoutes: TaonCmsPostsBackofficeRoutes,
@@ -4168,21 +6266,30 @@ var index$1 = /*#__PURE__*/Object.freeze({
4168
6266
  get TaonCmsTagState () { return TaonCmsTagState; },
4169
6267
  get TaonCmsTagSubscriber () { return TaonCmsTagSubscriber; },
4170
6268
  TaonCmsTagUtils__NS__isActive: TaonCmsTagUtils__NS__isActive,
6269
+ TaonCmsTagsBackofficeRoutes: TaonCmsTagsBackofficeRoutes,
6270
+ TaonCmsTaxonomyBackofficeComponent: TaonCmsTaxonomyBackofficeComponent,
4171
6271
  TaonRelatedPostChooserComponent: TaonRelatedPostChooserComponent,
4172
6272
  TaonSessionCoreGroups: TaonSessionCoreGroups,
4173
6273
  TaonSessionCorePermissions: TaonSessionCorePermissions,
4174
6274
  TaonSessionCoreRoles: TaonSessionCoreRoles,
4175
6275
  contentError: contentError,
4176
6276
  default: index,
6277
+ defaultThumbnailKey: defaultThumbnailKey,
6278
+ defaultThumbnailUrl: defaultThumbnailUrl,
6279
+ generateVideoThumbnail: generateVideoThumbnail,
4177
6280
  requireContentId: requireContentId,
4178
6281
  requireContentVersion: requireContentVersion,
4179
6282
  startCli: startCli,
4180
- validateContentInput: validateContentInput
6283
+ trackCmsUpload: trackCmsUpload,
6284
+ validateCategoryHierarchy: validateCategoryHierarchy,
6285
+ validateContentInput: validateContentInput,
6286
+ validateTaxonomy: validateTaxonomy,
6287
+ visiblePixelRatio: visiblePixelRatio
4181
6288
  });
4182
6289
 
4183
6290
  /**
4184
6291
  * Generated bundle index. Do not edit.
4185
6292
  */
4186
6293
 
4187
- export { APP_ID, BUILD_BASE_HREF, BUILD_FRAMEWORK_CLI_NAME, CURRENT_PACKAGE_TAON_VERSION, CURRENT_PACKAGE_VERSION, CmsContext_1791132517217_initial, MIGRATIONS_CLASSES_FOR_CmsContext, PROJECT_NPM_NAME, TaonAuthContextEntity, TaonAuthContextHasAccess, TaonAuthContextRepository, TaonCmsAbstractContext, TaonCmsApplicationHook, TaonCmsApplicationHookEntity, TaonCmsAssetsBackofficeComponent, TaonCmsAssetsBackofficeRoutes, TaonCmsBackofficeComponent, TaonCmsBackofficeRoutes, TaonCmsCategoryAbstractContext, TaonCmsCategoryApiService, TaonCmsCategoryController, TaonCmsCategoryDefaultsValues, TaonCmsCategoryEntity, TaonCmsCategoryMiddleware, TaonCmsCategoryProvider, TaonCmsCategoryRepository, TaonCmsCategoryState, TaonCmsCategorySubscriber, TaonCmsCategoryUtils__NS__isActive, TaonCmsCommentAbstractContext, TaonCmsCommentApiService, TaonCmsCommentController, TaonCmsCommentDefaultsValues, TaonCmsCommentEntity, TaonCmsCommentMiddleware, TaonCmsCommentProvider, TaonCmsCommentRepository, TaonCmsCommentState, TaonCmsCommentSubscriber, TaonCmsCommentUtils__NS__isActive, TaonCmsContentAbstractContext, TaonCmsContentApiService, TaonCmsContentAssetAbstractContext, TaonCmsContentAssetApiService, TaonCmsContentAssetController, TaonCmsContentAssetDefaultsValues, TaonCmsContentAssetEntity, TaonCmsContentAssetMiddleware, TaonCmsContentAssetProvider, TaonCmsContentAssetRepository, TaonCmsContentAssetState, TaonCmsContentAssetSubscriber, TaonCmsContentAssetUtils__NS__isActive, TaonCmsContentConfigService, TaonCmsContentController, TaonCmsContentDefaultsValues, TaonCmsContentEntity, TaonCmsContentMiddleware, TaonCmsContentPermissionAbstractContext, TaonCmsContentPermissionApiService, TaonCmsContentPermissionController, TaonCmsContentPermissionDefaultsValues, TaonCmsContentPermissionEntity, TaonCmsContentPermissionMiddleware, TaonCmsContentPermissionProvider, TaonCmsContentPermissionRepository, TaonCmsContentPermissionState, TaonCmsContentPermissionSubscriber, TaonCmsContentPermissionUtils__NS__isActive, TaonCmsContentProvider, TaonCmsContentRepository, TaonCmsContentRevisionAbstractContext, TaonCmsContentRevisionApiService, TaonCmsContentRevisionController, TaonCmsContentRevisionDefaultsValues, TaonCmsContentRevisionEntity, TaonCmsContentRevisionMiddleware, TaonCmsContentRevisionProvider, TaonCmsContentRevisionRepository, TaonCmsContentRevisionState, TaonCmsContentRevisionSubscriber, TaonCmsContentRevisionUtils__NS__isActive, TaonCmsContentState, TaonCmsContentStorageController, TaonCmsContentSubscriber, TaonCmsContentTagAbstractContext, TaonCmsContentTagApiService, TaonCmsContentTagController, TaonCmsContentTagDefaultsValues, TaonCmsContentTagEntity, TaonCmsContentTagMiddleware, TaonCmsContentTagProvider, TaonCmsContentTagRepository, TaonCmsContentTagState, TaonCmsContentTagSubscriber, TaonCmsContentTagUtils__NS__isActive, TaonCmsContentType, TaonCmsContentUtils__NS__isActive, TaonCmsEditableDirective, TaonCmsPostComponent, TaonCmsPostDetailsPageComponent, TaonCmsPostEditDialogComponent, TaonCmsPostRoutes, TaonCmsPostsBackofficeComponent, TaonCmsPostsBackofficeRoutes, TaonCmsRevisionChooserComponent, TaonCmsTagAbstractContext, TaonCmsTagApiService, TaonCmsTagController, TaonCmsTagDefaultsValues, TaonCmsTagEntity, TaonCmsTagMiddleware, TaonCmsTagProvider, TaonCmsTagRepository, TaonCmsTagState, TaonCmsTagSubscriber, TaonCmsTagUtils__NS__isActive, TaonRelatedPostChooserComponent, TaonSessionCoreGroups, TaonSessionCorePermissions, TaonSessionCoreRoles, contentError, requireContentId, requireContentVersion, startCli, validateContentInput };
6294
+ export { APP_ID, BUILD_BASE_HREF, BUILD_FRAMEWORK_CLI_NAME, CURRENT_PACKAGE_TAON_VERSION, CURRENT_PACKAGE_VERSION, CmsContext_1791132517217_initial, CmsContext_1792579000000_postPermissionInheritance, CmsContext_1793043000000_postThumbnails, MIGRATIONS_CLASSES_FOR_CmsContext, PROJECT_NPM_NAME, TaonAuthContextEntity, TaonAuthContextHasAccess, TaonAuthContextRepository, TaonCmsAbstractContext, TaonCmsApplicationHook, TaonCmsApplicationHookEntity, TaonCmsAssetPreviewComponent, TaonCmsAssetsBackofficeComponent, TaonCmsAssetsBackofficeRoutes, TaonCmsBackofficeComponent, TaonCmsBackofficeRoutes, TaonCmsCategoriesBackofficeRoutes, TaonCmsCategoryAbstractContext, TaonCmsCategoryApiService, TaonCmsCategoryController, TaonCmsCategoryDefaultsValues, TaonCmsCategoryEntity, TaonCmsCategoryMiddleware, TaonCmsCategoryProvider, TaonCmsCategoryRepository, TaonCmsCategoryState, TaonCmsCategorySubscriber, TaonCmsCategoryUtils__NS__isActive, TaonCmsCommentAbstractContext, TaonCmsCommentApiService, TaonCmsCommentController, TaonCmsCommentDefaultsValues, TaonCmsCommentEntity, TaonCmsCommentMiddleware, TaonCmsCommentProvider, TaonCmsCommentRepository, TaonCmsCommentState, TaonCmsCommentSubscriber, TaonCmsCommentUtils__NS__isActive, TaonCmsContentAbstractContext, TaonCmsContentApiService, TaonCmsContentAssetAbstractContext, TaonCmsContentAssetApiService, TaonCmsContentAssetController, TaonCmsContentAssetDefaultsValues, TaonCmsContentAssetEntity, TaonCmsContentAssetMiddleware, TaonCmsContentAssetProvider, TaonCmsContentAssetRepository, TaonCmsContentAssetState, TaonCmsContentAssetSubscriber, TaonCmsContentAssetUtils__NS__isActive, TaonCmsContentConfigService, TaonCmsContentController, TaonCmsContentDefaultsValues, TaonCmsContentEntity, TaonCmsContentMiddleware, TaonCmsContentPermissionAbstractContext, TaonCmsContentPermissionApiService, TaonCmsContentPermissionController, TaonCmsContentPermissionDefaultsValues, TaonCmsContentPermissionEntity, TaonCmsContentPermissionMiddleware, TaonCmsContentPermissionProvider, TaonCmsContentPermissionRepository, TaonCmsContentPermissionState, TaonCmsContentPermissionSubscriber, TaonCmsContentPermissionUtils__NS__isActive, TaonCmsContentProvider, TaonCmsContentRepository, TaonCmsContentRevisionAbstractContext, TaonCmsContentRevisionApiService, TaonCmsContentRevisionController, TaonCmsContentRevisionDefaultsValues, TaonCmsContentRevisionEntity, TaonCmsContentRevisionMiddleware, TaonCmsContentRevisionProvider, TaonCmsContentRevisionRepository, TaonCmsContentRevisionState, TaonCmsContentRevisionSubscriber, TaonCmsContentRevisionUtils__NS__isActive, TaonCmsContentState, TaonCmsContentStorageController, TaonCmsContentSubscriber, TaonCmsContentTagAbstractContext, TaonCmsContentTagApiService, TaonCmsContentTagController, TaonCmsContentTagDefaultsValues, TaonCmsContentTagEntity, TaonCmsContentTagMiddleware, TaonCmsContentTagProvider, TaonCmsContentTagRepository, TaonCmsContentTagState, TaonCmsContentTagSubscriber, TaonCmsContentTagUtils__NS__isActive, TaonCmsContentType, TaonCmsContentUtils__NS__isActive, TaonCmsEditableDirective, TaonCmsPostComponent, TaonCmsPostDetailsPageComponent, TaonCmsPostRoutes, TaonCmsPostsBackofficeComponent, TaonCmsPostsBackofficeRoutes, TaonCmsRevisionChooserComponent, TaonCmsTagAbstractContext, TaonCmsTagApiService, TaonCmsTagController, TaonCmsTagDefaultsValues, TaonCmsTagEntity, TaonCmsTagMiddleware, TaonCmsTagProvider, TaonCmsTagRepository, TaonCmsTagState, TaonCmsTagSubscriber, TaonCmsTagUtils__NS__isActive, TaonCmsTagsBackofficeRoutes, TaonCmsTaxonomyBackofficeComponent, TaonRelatedPostChooserComponent, TaonSessionCoreGroups, TaonSessionCorePermissions, TaonSessionCoreRoles, contentError, defaultThumbnailKey, defaultThumbnailUrl, generateVideoThumbnail, requireContentId, requireContentVersion, startCli, trackCmsUpload, validateCategoryHierarchy, validateContentInput, validateTaxonomy, visiblePixelRatio };
4188
6295
  //# sourceMappingURL=cms-websql-prod.mjs.map