@taon-dev/cms 21.0.22 → 21.0.23

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 (1088) hide show
  1. package/VERIFIED-BUILD-DATA.jsonc +3 -3
  2. package/browser/fesm2022/{cms-browser-taon-cms-course-backoffice.component.html.de-DE.i18n.data-DcFKcLJv.mjs → cms-browser-taon-cms-course-backoffice.component.html.de-DE.i18n.data-CLwoKssp.mjs} +23 -3
  3. package/browser/fesm2022/cms-browser-taon-cms-course-backoffice.component.html.de-DE.i18n.data-CLwoKssp.mjs.map +1 -0
  4. package/browser/fesm2022/{cms-browser-taon-cms-course-backoffice.component.html.en-US.i18n.data-DPlA1Ocj.mjs → cms-browser-taon-cms-course-backoffice.component.html.en-US.i18n.data-Dff_IALd.mjs} +23 -3
  5. package/browser/fesm2022/cms-browser-taon-cms-course-backoffice.component.html.en-US.i18n.data-Dff_IALd.mjs.map +1 -0
  6. package/browser/fesm2022/{cms-browser-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-CX2j4P41.mjs → cms-browser-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-_LndUfcD.mjs} +23 -3
  7. package/browser/fesm2022/cms-browser-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-_LndUfcD.mjs.map +1 -0
  8. package/browser/fesm2022/{cms-browser-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-B4GuiCs3.mjs → cms-browser-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-DBAY8-77.mjs} +5 -5
  9. package/browser/fesm2022/{cms-browser-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-B4GuiCs3.mjs.map → cms-browser-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-DBAY8-77.mjs.map} +1 -1
  10. package/browser/fesm2022/{cms-browser-taon-cms-course-backoffice.component.ts.en-US.i18n.data-DyPf1BMm.mjs → cms-browser-taon-cms-course-backoffice.component.ts.en-US.i18n.data-DvANkYNl.mjs} +5 -5
  11. package/browser/fesm2022/{cms-browser-taon-cms-course-backoffice.component.ts.en-US.i18n.data-DyPf1BMm.mjs.map → cms-browser-taon-cms-course-backoffice.component.ts.en-US.i18n.data-DvANkYNl.mjs.map} +1 -1
  12. package/browser/fesm2022/{cms-browser-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-DprS6bm1.mjs → cms-browser-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-NqAcrhjt.mjs} +5 -5
  13. package/browser/fesm2022/{cms-browser-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-DprS6bm1.mjs.map → cms-browser-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-NqAcrhjt.mjs.map} +1 -1
  14. package/browser/fesm2022/{cms-browser-taon-cms-course-contents.component.html.de-DE.i18n.data-CJlZufMg.mjs → cms-browser-taon-cms-course-contents.component.html.de-DE.i18n.data-i1jNC8Bi.mjs} +7 -3
  15. package/browser/fesm2022/cms-browser-taon-cms-course-contents.component.html.de-DE.i18n.data-i1jNC8Bi.mjs.map +1 -0
  16. package/browser/fesm2022/{cms-browser-taon-cms-course-contents.component.html.en-US.i18n.data-DkNTtW3Q.mjs → cms-browser-taon-cms-course-contents.component.html.en-US.i18n.data-Cf_yEr_6.mjs} +7 -3
  17. package/browser/fesm2022/cms-browser-taon-cms-course-contents.component.html.en-US.i18n.data-Cf_yEr_6.mjs.map +1 -0
  18. package/browser/fesm2022/{cms-browser-taon-cms-course-contents.component.html.pl-PL.i18n.data-8wKW8AR1.mjs → cms-browser-taon-cms-course-contents.component.html.pl-PL.i18n.data-DG2zoUK9.mjs} +7 -3
  19. package/browser/fesm2022/cms-browser-taon-cms-course-contents.component.html.pl-PL.i18n.data-DG2zoUK9.mjs.map +1 -0
  20. package/browser/fesm2022/{cms-browser-taon-cms-course-contents.component.ts.de-DE.i18n.data-Gt0H19BQ.mjs → cms-browser-taon-cms-course-contents.component.ts.de-DE.i18n.data-CUm1WaRd.mjs} +12 -4
  21. package/browser/fesm2022/cms-browser-taon-cms-course-contents.component.ts.de-DE.i18n.data-CUm1WaRd.mjs.map +1 -0
  22. package/browser/fesm2022/{cms-browser-taon-cms-course-contents.component.ts.en-US.i18n.data-N-p1oNgV.mjs → cms-browser-taon-cms-course-contents.component.ts.en-US.i18n.data-C8J0c1Zz.mjs} +12 -4
  23. package/browser/fesm2022/cms-browser-taon-cms-course-contents.component.ts.en-US.i18n.data-C8J0c1Zz.mjs.map +1 -0
  24. package/browser/fesm2022/{cms-browser-taon-cms-course-contents.component.ts.pl-PL.i18n.data-Be1XJqO4.mjs → cms-browser-taon-cms-course-contents.component.ts.pl-PL.i18n.data-DttC-CgL.mjs} +12 -4
  25. package/browser/fesm2022/cms-browser-taon-cms-course-contents.component.ts.pl-PL.i18n.data-DttC-CgL.mjs.map +1 -0
  26. package/browser/fesm2022/{cms-browser-taon-cms-post-details-page.component.ts.de-DE.i18n.data-C7tWZFkz.mjs → cms-browser-taon-cms-post-details-page.component.ts.de-DE.i18n.data-CUPt6JuN.mjs} +6 -2
  27. package/browser/fesm2022/cms-browser-taon-cms-post-details-page.component.ts.de-DE.i18n.data-CUPt6JuN.mjs.map +1 -0
  28. package/browser/fesm2022/{cms-browser-taon-cms-post-details-page.component.ts.en-US.i18n.data-Gx0bf2nC.mjs → cms-browser-taon-cms-post-details-page.component.ts.en-US.i18n.data-7mXifX-U.mjs} +6 -2
  29. package/browser/fesm2022/cms-browser-taon-cms-post-details-page.component.ts.en-US.i18n.data-7mXifX-U.mjs.map +1 -0
  30. package/browser/fesm2022/{cms-browser-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-B-2PuKu7.mjs → cms-browser-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-DYSUl0we.mjs} +6 -2
  31. package/browser/fesm2022/cms-browser-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-DYSUl0we.mjs.map +1 -0
  32. package/browser/fesm2022/{cms-browser-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-Cwi7pcvq.mjs → cms-browser-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-BJyXHMqp.mjs} +15 -11
  33. package/browser/fesm2022/cms-browser-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-BJyXHMqp.mjs.map +1 -0
  34. package/browser/fesm2022/{cms-browser-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-BD4-1New.mjs → cms-browser-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-BVFE-lu5.mjs} +15 -11
  35. package/browser/fesm2022/cms-browser-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-BVFE-lu5.mjs.map +1 -0
  36. package/browser/fesm2022/{cms-browser-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-DdK3CYLj.mjs → cms-browser-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-CEyIUnLc.mjs} +15 -11
  37. package/browser/fesm2022/cms-browser-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-CEyIUnLc.mjs.map +1 -0
  38. package/browser/fesm2022/{cms-browser-taon-cms-post.component.html.de-DE.i18n.data-B1AK4KW_.mjs → cms-browser-taon-cms-post.component.html.de-DE.i18n.data-CapQLQ5d.mjs} +94 -84
  39. package/browser/fesm2022/cms-browser-taon-cms-post.component.html.de-DE.i18n.data-CapQLQ5d.mjs.map +1 -0
  40. package/browser/fesm2022/{cms-browser-taon-cms-post.component.html.en-US.i18n.data-KASjY7KB.mjs → cms-browser-taon-cms-post.component.html.en-US.i18n.data-BUE8MsLX.mjs} +94 -84
  41. package/browser/fesm2022/cms-browser-taon-cms-post.component.html.en-US.i18n.data-BUE8MsLX.mjs.map +1 -0
  42. package/browser/fesm2022/{cms-browser-taon-cms-post.component.html.pl-PL.i18n.data-BTHVJbC_.mjs → cms-browser-taon-cms-post.component.html.pl-PL.i18n.data-BCTWaUca.mjs} +94 -84
  43. package/browser/fesm2022/cms-browser-taon-cms-post.component.html.pl-PL.i18n.data-BCTWaUca.mjs.map +1 -0
  44. package/browser/fesm2022/{cms-browser-taon-cms-post.component.ts.de-DE.i18n.data-B93wyE-K.mjs → cms-browser-taon-cms-post.component.ts.de-DE.i18n.data-BYxiUf8C.mjs} +47 -35
  45. package/browser/fesm2022/cms-browser-taon-cms-post.component.ts.de-DE.i18n.data-BYxiUf8C.mjs.map +1 -0
  46. package/browser/fesm2022/{cms-browser-taon-cms-post.component.ts.en-US.i18n.data-BTgAXw4d.mjs → cms-browser-taon-cms-post.component.ts.en-US.i18n.data-lruEnzKH.mjs} +47 -35
  47. package/browser/fesm2022/cms-browser-taon-cms-post.component.ts.en-US.i18n.data-lruEnzKH.mjs.map +1 -0
  48. package/browser/fesm2022/{cms-browser-taon-cms-post.component.ts.pl-PL.i18n.data-Dt0lO5qR.mjs → cms-browser-taon-cms-post.component.ts.pl-PL.i18n.data-CNsT81Pt.mjs} +47 -35
  49. package/browser/fesm2022/cms-browser-taon-cms-post.component.ts.pl-PL.i18n.data-CNsT81Pt.mjs.map +1 -0
  50. package/browser/fesm2022/{cms-browser-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-CZ0mZdO-.mjs → cms-browser-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-BDH-9r3S.mjs} +29 -1
  51. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-BDH-9r3S.mjs.map +1 -0
  52. package/browser/fesm2022/{cms-browser-taon-cms-posts-backoffice.component.html.en-US.i18n.data-D1XI6u8V.mjs → cms-browser-taon-cms-posts-backoffice.component.html.en-US.i18n.data-Bz5Qa6eJ.mjs} +29 -1
  53. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.html.en-US.i18n.data-Bz5Qa6eJ.mjs.map +1 -0
  54. package/browser/fesm2022/{cms-browser-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-DaE0bfxU.mjs → cms-browser-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-BEtQS-0C.mjs} +29 -1
  55. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-BEtQS-0C.mjs.map +1 -0
  56. package/browser/fesm2022/{cms-browser-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-CTYkGigp.mjs → cms-browser-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-aMqPM6ev.mjs} +7 -3
  57. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-aMqPM6ev.mjs.map +1 -0
  58. package/browser/fesm2022/{cms-browser-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-B8PjJ2_u.mjs → cms-browser-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-BKDX2iwM.mjs} +7 -3
  59. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-BKDX2iwM.mjs.map +1 -0
  60. package/browser/fesm2022/{cms-browser-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-D5dkM1Rg.mjs → cms-browser-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-D1D80yR3.mjs} +7 -3
  61. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-D1D80yR3.mjs.map +1 -0
  62. package/browser/fesm2022/cms-browser-taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data-C-9JBJz0.mjs +39 -0
  63. package/browser/fesm2022/cms-browser-taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data-C-9JBJz0.mjs.map +1 -0
  64. package/browser/fesm2022/cms-browser-taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data-D3q4LMm6.mjs +39 -0
  65. package/browser/fesm2022/cms-browser-taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data-D3q4LMm6.mjs.map +1 -0
  66. package/browser/fesm2022/cms-browser-taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data-DWw-l8cK.mjs +39 -0
  67. package/browser/fesm2022/cms-browser-taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data-DWw-l8cK.mjs.map +1 -0
  68. package/browser/fesm2022/cms-browser.mjs +436 -76
  69. package/browser/fesm2022/cms-browser.mjs.map +1 -1
  70. package/browser/package.json +1 -1
  71. package/browser/types/cms-browser.d.ts +50 -8
  72. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-course-backoffice.component.html.de-DE.i18n.data-CyTxhvtH.mjs → cms-browser-prod-taon-cms-course-backoffice.component.html.de-DE.i18n.data-DMxbsPFR.mjs} +23 -3
  73. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-course-backoffice.component.html.de-DE.i18n.data-DMxbsPFR.mjs.map +1 -0
  74. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-course-backoffice.component.html.en-US.i18n.data-BTzDmVWc.mjs → cms-browser-prod-taon-cms-course-backoffice.component.html.en-US.i18n.data-DU5zG1X1.mjs} +23 -3
  75. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-course-backoffice.component.html.en-US.i18n.data-DU5zG1X1.mjs.map +1 -0
  76. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-CixvMJ9f.mjs → cms-browser-prod-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-C6nS0We7.mjs} +23 -3
  77. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-C6nS0We7.mjs.map +1 -0
  78. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-C1hvycSO.mjs → cms-browser-prod-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-D9XyARny.mjs} +5 -5
  79. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-C1hvycSO.mjs.map → cms-browser-prod-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-D9XyARny.mjs.map} +1 -1
  80. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-course-backoffice.component.ts.en-US.i18n.data-Dno5sgts.mjs → cms-browser-prod-taon-cms-course-backoffice.component.ts.en-US.i18n.data-ChBQZLE_.mjs} +5 -5
  81. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-course-backoffice.component.ts.en-US.i18n.data-Dno5sgts.mjs.map → cms-browser-prod-taon-cms-course-backoffice.component.ts.en-US.i18n.data-ChBQZLE_.mjs.map} +1 -1
  82. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-SvoLR2q0.mjs → cms-browser-prod-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-7YCuFbeg.mjs} +5 -5
  83. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-SvoLR2q0.mjs.map → cms-browser-prod-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-7YCuFbeg.mjs.map} +1 -1
  84. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-course-contents.component.html.de-DE.i18n.data-D7Gtx44e.mjs → cms-browser-prod-taon-cms-course-contents.component.html.de-DE.i18n.data-CqciMyPt.mjs} +7 -3
  85. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-course-contents.component.html.de-DE.i18n.data-CqciMyPt.mjs.map +1 -0
  86. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-course-contents.component.html.en-US.i18n.data-DomBfXfQ.mjs → cms-browser-prod-taon-cms-course-contents.component.html.en-US.i18n.data-CZpsjVOU.mjs} +7 -3
  87. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-course-contents.component.html.en-US.i18n.data-CZpsjVOU.mjs.map +1 -0
  88. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-course-contents.component.html.pl-PL.i18n.data-BmHiUySy.mjs → cms-browser-prod-taon-cms-course-contents.component.html.pl-PL.i18n.data-bcDy_z0-.mjs} +7 -3
  89. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-course-contents.component.html.pl-PL.i18n.data-bcDy_z0-.mjs.map +1 -0
  90. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-course-contents.component.ts.de-DE.i18n.data-UiXCopyo.mjs → cms-browser-prod-taon-cms-course-contents.component.ts.de-DE.i18n.data-C2LoW3lN.mjs} +12 -4
  91. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-course-contents.component.ts.de-DE.i18n.data-C2LoW3lN.mjs.map +1 -0
  92. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-course-contents.component.ts.en-US.i18n.data-CG51VvG1.mjs → cms-browser-prod-taon-cms-course-contents.component.ts.en-US.i18n.data-DP1mJztz.mjs} +12 -4
  93. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-course-contents.component.ts.en-US.i18n.data-DP1mJztz.mjs.map +1 -0
  94. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-course-contents.component.ts.pl-PL.i18n.data-Da06EmCc.mjs → cms-browser-prod-taon-cms-course-contents.component.ts.pl-PL.i18n.data-CKgBITdj.mjs} +12 -4
  95. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-course-contents.component.ts.pl-PL.i18n.data-CKgBITdj.mjs.map +1 -0
  96. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-post-details-page.component.ts.de-DE.i18n.data-C-rT2qc1.mjs → cms-browser-prod-taon-cms-post-details-page.component.ts.de-DE.i18n.data-DNJ9LJlX.mjs} +6 -2
  97. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post-details-page.component.ts.de-DE.i18n.data-DNJ9LJlX.mjs.map +1 -0
  98. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-post-details-page.component.ts.en-US.i18n.data-CfETMKWw.mjs → cms-browser-prod-taon-cms-post-details-page.component.ts.en-US.i18n.data-CMMxi324.mjs} +6 -2
  99. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post-details-page.component.ts.en-US.i18n.data-CMMxi324.mjs.map +1 -0
  100. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-Ci0T7QVO.mjs → cms-browser-prod-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-MhpcULsJ.mjs} +6 -2
  101. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-MhpcULsJ.mjs.map +1 -0
  102. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-P5VXQlmS.mjs → cms-browser-prod-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-90yrFKjF.mjs} +15 -11
  103. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-90yrFKjF.mjs.map +1 -0
  104. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-6xHTz4NK.mjs → cms-browser-prod-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-CH71xm4B.mjs} +15 -11
  105. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-CH71xm4B.mjs.map +1 -0
  106. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-6Sdc2ekE.mjs → cms-browser-prod-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-Df2DdA5N.mjs} +15 -11
  107. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-Df2DdA5N.mjs.map +1 -0
  108. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-post.component.html.de-DE.i18n.data-C6VWS4yA.mjs → cms-browser-prod-taon-cms-post.component.html.de-DE.i18n.data-CAFFTK-X.mjs} +94 -84
  109. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.html.de-DE.i18n.data-CAFFTK-X.mjs.map +1 -0
  110. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-post.component.html.en-US.i18n.data-D300qnuI.mjs → cms-browser-prod-taon-cms-post.component.html.en-US.i18n.data-mH65cs_6.mjs} +94 -84
  111. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.html.en-US.i18n.data-mH65cs_6.mjs.map +1 -0
  112. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-post.component.html.pl-PL.i18n.data-BnqliIDO.mjs → cms-browser-prod-taon-cms-post.component.html.pl-PL.i18n.data-BU3G_LCm.mjs} +94 -84
  113. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.html.pl-PL.i18n.data-BU3G_LCm.mjs.map +1 -0
  114. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-post.component.ts.de-DE.i18n.data-DbP78P1q.mjs → cms-browser-prod-taon-cms-post.component.ts.de-DE.i18n.data-cQQWKnwI.mjs} +47 -35
  115. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.ts.de-DE.i18n.data-cQQWKnwI.mjs.map +1 -0
  116. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-post.component.ts.en-US.i18n.data-DMKvUsPt.mjs → cms-browser-prod-taon-cms-post.component.ts.en-US.i18n.data-CZ3219rw.mjs} +47 -35
  117. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.ts.en-US.i18n.data-CZ3219rw.mjs.map +1 -0
  118. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-post.component.ts.pl-PL.i18n.data-Bt1StLjN.mjs → cms-browser-prod-taon-cms-post.component.ts.pl-PL.i18n.data-3odfuhvt.mjs} +47 -35
  119. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.ts.pl-PL.i18n.data-3odfuhvt.mjs.map +1 -0
  120. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-CXTopGnK.mjs → cms-browser-prod-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-D9Z519ap.mjs} +29 -1
  121. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-D9Z519ap.mjs.map +1 -0
  122. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-posts-backoffice.component.html.en-US.i18n.data-C7o8B-38.mjs → cms-browser-prod-taon-cms-posts-backoffice.component.html.en-US.i18n.data-BXpgykHy.mjs} +29 -1
  123. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.html.en-US.i18n.data-BXpgykHy.mjs.map +1 -0
  124. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-DNGNxZmN.mjs → cms-browser-prod-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-f1LMnypn.mjs} +29 -1
  125. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-f1LMnypn.mjs.map +1 -0
  126. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-BuX23uvE.mjs → cms-browser-prod-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-t4gu8Pak.mjs} +7 -3
  127. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-t4gu8Pak.mjs.map +1 -0
  128. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-C6jy6lw4.mjs → cms-browser-prod-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-Cv5aGbur.mjs} +7 -3
  129. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-Cv5aGbur.mjs.map +1 -0
  130. package/browser-prod/fesm2022/{cms-browser-prod-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-DFJPgXFt.mjs → cms-browser-prod-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-JlG6ZQo_.mjs} +7 -3
  131. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-JlG6ZQo_.mjs.map +1 -0
  132. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data-1p0JNGR5.mjs +39 -0
  133. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data-1p0JNGR5.mjs.map +1 -0
  134. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data-5qb1pUve.mjs +39 -0
  135. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data-5qb1pUve.mjs.map +1 -0
  136. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data-VGsOSuPT.mjs +39 -0
  137. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data-VGsOSuPT.mjs.map +1 -0
  138. package/browser-prod/fesm2022/cms-browser-prod.mjs +437 -77
  139. package/browser-prod/fesm2022/cms-browser-prod.mjs.map +1 -1
  140. package/browser-prod/package.json +1 -1
  141. package/browser-prod/types/cms-browser-prod.d.ts +50 -8
  142. package/full-dts/build-info._auto-generated_.d.ts +1 -1
  143. package/full-dts/index._auto-generated_.d.ts +1 -0
  144. package/full-dts/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.d.ts +4 -1
  145. package/full-dts/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data.d.ts +22 -0
  146. package/full-dts/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data.d.ts +22 -0
  147. package/full-dts/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data.d.ts +22 -0
  148. package/full-dts/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-quick-create-dialog.component.d.ts +24 -0
  149. package/full-dts/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data.d.ts +3 -0
  150. package/full-dts/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data.d.ts +3 -0
  151. package/full-dts/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data.d.ts +3 -0
  152. package/full-dts/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.de-DE.i18n.data.d.ts +1 -0
  153. package/full-dts/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.en-US.i18n.data.d.ts +1 -0
  154. package/full-dts/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data.d.ts +1 -0
  155. package/full-dts/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data.d.ts +2 -0
  156. package/full-dts/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.en-US.i18n.data.d.ts +2 -0
  157. package/full-dts/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data.d.ts +2 -0
  158. package/full-dts/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.d.ts +3 -0
  159. package/full-dts/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.d.ts +2 -0
  160. package/full-dts/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.d.ts +5 -2
  161. package/full-dts/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.d.ts +5 -2
  162. package/full-dts/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.d.ts +5 -2
  163. package/full-dts/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.d.ts +3 -0
  164. package/full-dts/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.d.ts +3 -0
  165. package/full-dts/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.d.ts +3 -0
  166. package/full-dts/taon-posts/taon-cms-post/taon-cms-post.component.d.ts +9 -3
  167. package/full-dts/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.d.ts +7 -2
  168. package/full-dts/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.d.ts +7 -2
  169. package/full-dts/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.d.ts +7 -2
  170. package/full-dts/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.d.ts +7 -0
  171. package/full-dts/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.d.ts +13 -2
  172. package/full-dts/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.d.ts +13 -2
  173. package/full-dts/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.d.ts +13 -2
  174. package/full-dts/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.d.ts +7 -2
  175. package/full-dts/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.d.ts +7 -2
  176. package/full-dts/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.d.ts +7 -2
  177. package/full-dts/taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive.d.ts +1 -0
  178. package/html/assets/generated/pwa/html-pwa.html +53 -53
  179. package/html/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.html +28 -0
  180. package/html/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html +9 -0
  181. package/html/lib/taon-posts/taon-cms-post/taon-cms-post.component.html +58 -9
  182. package/html/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html +38 -2
  183. package/lib/build-info._auto-generated_.d.ts +1 -1
  184. package/lib/build-info._auto-generated_.js +1 -1
  185. package/lib/index._auto-generated_.js +1 -0
  186. package/lib/index._auto-generated_.js.map +1 -1
  187. package/lib/package.json +1 -1
  188. package/lib/taon-cms-backoffice/index.d.ts +1 -1
  189. package/lib/taon-cms-backoffice/index.js +2 -2
  190. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.d.ts +4 -1
  191. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.js.map +1 -1
  192. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data.d.ts +21 -0
  193. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data.js +39 -0
  194. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data.js.map +1 -0
  195. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data.d.ts +21 -0
  196. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data.js +39 -0
  197. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data.js.map +1 -0
  198. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data.d.ts +21 -0
  199. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data.js +39 -0
  200. package/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data.js.map +1 -0
  201. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data.d.ts +3 -0
  202. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data.js +22 -2
  203. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data.js.map +1 -1
  204. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data.d.ts +3 -0
  205. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data.js +22 -2
  206. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data.js.map +1 -1
  207. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data.d.ts +3 -0
  208. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data.js +22 -2
  209. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data.js.map +1 -1
  210. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.de-DE.i18n.data.js +4 -4
  211. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.en-US.i18n.data.js +4 -4
  212. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.pl-PL.i18n.data.js +4 -4
  213. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.de-DE.i18n.data.d.ts +1 -0
  214. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.de-DE.i18n.data.js +6 -2
  215. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.de-DE.i18n.data.js.map +1 -1
  216. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.en-US.i18n.data.d.ts +1 -0
  217. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.en-US.i18n.data.js +6 -2
  218. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.en-US.i18n.data.js.map +1 -1
  219. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data.d.ts +1 -0
  220. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data.js +6 -2
  221. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data.js.map +1 -1
  222. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data.d.ts +2 -0
  223. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data.js +11 -3
  224. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data.js.map +1 -1
  225. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.en-US.i18n.data.d.ts +2 -0
  226. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.en-US.i18n.data.js +11 -3
  227. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.en-US.i18n.data.js.map +1 -1
  228. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data.d.ts +2 -0
  229. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data.js +11 -3
  230. package/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data.js.map +1 -1
  231. package/lib/taon-posts/taon-cms-course-backoffice/index.d.ts +1 -1
  232. package/lib/taon-posts/taon-cms-course-backoffice/index.js +2 -2
  233. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.d.ts +5 -2
  234. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.js +95 -85
  235. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.js.map +1 -1
  236. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.d.ts +5 -2
  237. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.js +95 -85
  238. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.js.map +1 -1
  239. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.d.ts +5 -2
  240. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.js +95 -85
  241. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.js.map +1 -1
  242. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.d.ts +3 -0
  243. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.js +46 -34
  244. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.js.map +1 -1
  245. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.d.ts +3 -0
  246. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.js +46 -34
  247. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.js.map +1 -1
  248. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.d.ts +3 -0
  249. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.js +46 -34
  250. package/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.js.map +1 -1
  251. package/lib/taon-posts/taon-cms-post/index.d.ts +1 -1
  252. package/lib/taon-posts/taon-cms-post/index.js +2 -2
  253. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.d.ts +7 -2
  254. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.js +5 -1
  255. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.js.map +1 -1
  256. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.d.ts +7 -2
  257. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.js +5 -1
  258. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.js.map +1 -1
  259. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.d.ts +7 -2
  260. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.js +5 -1
  261. package/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.js.map +1 -1
  262. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.de-DE.i18n.data.js +14 -10
  263. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.de-DE.i18n.data.js.map +1 -1
  264. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.en-US.i18n.data.js +14 -10
  265. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.en-US.i18n.data.js.map +1 -1
  266. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data.js +14 -10
  267. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data.js.map +1 -1
  268. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.d.ts +13 -2
  269. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.js +28 -0
  270. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.js.map +1 -1
  271. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.d.ts +13 -2
  272. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.js +28 -0
  273. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.js.map +1 -1
  274. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.d.ts +13 -2
  275. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.js +28 -0
  276. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.js.map +1 -1
  277. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.d.ts +7 -2
  278. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.js +6 -2
  279. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.js.map +1 -1
  280. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.d.ts +7 -2
  281. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.js +6 -2
  282. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.js.map +1 -1
  283. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.d.ts +7 -2
  284. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.js +6 -2
  285. package/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.js.map +1 -1
  286. package/lib/taon-posts/taon-cms-posts-backoffice/index.d.ts +1 -1
  287. package/lib/taon-posts/taon-cms-posts-backoffice/index.js +2 -2
  288. package/lib/taon-posts/taon-cms-revision-chooser/index.d.ts +1 -1
  289. package/lib/taon-posts/taon-cms-revision-chooser/index.js +2 -2
  290. package/lib/taon-posts/taon-related-post-chooser/index.d.ts +1 -1
  291. package/lib/taon-posts/taon-related-post-chooser/index.js +2 -2
  292. package/lib-esm/lib/build-info._auto-generated_.d.ts +1 -1
  293. package/lib-esm/lib/build-info._auto-generated_.js +1 -1
  294. package/lib-esm/lib/index._auto-generated_.js +1 -0
  295. package/lib-esm/lib/index._auto-generated_.js.map +1 -1
  296. package/lib-esm/lib/taon-cms-backoffice/index.d.ts +1 -1
  297. package/lib-esm/lib/taon-cms-backoffice/index.js +1 -1
  298. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.d.ts +4 -1
  299. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.js.map +1 -1
  300. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data.d.ts +21 -0
  301. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data.js +37 -0
  302. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data.js.map +1 -0
  303. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data.d.ts +21 -0
  304. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data.js +37 -0
  305. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data.js.map +1 -0
  306. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data.d.ts +21 -0
  307. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data.js +37 -0
  308. package/lib-esm/lib/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data.js.map +1 -0
  309. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data.d.ts +3 -0
  310. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data.js +22 -2
  311. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data.js.map +1 -1
  312. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data.d.ts +3 -0
  313. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data.js +22 -2
  314. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data.js.map +1 -1
  315. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data.d.ts +3 -0
  316. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data.js +22 -2
  317. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data.js.map +1 -1
  318. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.de-DE.i18n.data.js +4 -4
  319. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.en-US.i18n.data.js +4 -4
  320. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.pl-PL.i18n.data.js +4 -4
  321. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.de-DE.i18n.data.d.ts +1 -0
  322. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.de-DE.i18n.data.js +6 -2
  323. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.de-DE.i18n.data.js.map +1 -1
  324. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.en-US.i18n.data.d.ts +1 -0
  325. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.en-US.i18n.data.js +6 -2
  326. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.en-US.i18n.data.js.map +1 -1
  327. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data.d.ts +1 -0
  328. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data.js +6 -2
  329. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data.js.map +1 -1
  330. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data.d.ts +2 -0
  331. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data.js +11 -3
  332. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data.js.map +1 -1
  333. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.en-US.i18n.data.d.ts +2 -0
  334. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.en-US.i18n.data.js +11 -3
  335. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.en-US.i18n.data.js.map +1 -1
  336. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data.d.ts +2 -0
  337. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data.js +11 -3
  338. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data.js.map +1 -1
  339. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/index.d.ts +1 -1
  340. package/lib-esm/lib/taon-posts/taon-cms-course-backoffice/index.js +1 -1
  341. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.d.ts +5 -2
  342. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.js +95 -85
  343. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.js.map +1 -1
  344. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.d.ts +5 -2
  345. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.js +95 -85
  346. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.js.map +1 -1
  347. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.d.ts +5 -2
  348. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.js +95 -85
  349. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.js.map +1 -1
  350. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.d.ts +3 -0
  351. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.js +46 -34
  352. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.js.map +1 -1
  353. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.d.ts +3 -0
  354. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.js +46 -34
  355. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.js.map +1 -1
  356. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.d.ts +3 -0
  357. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.js +46 -34
  358. package/lib-esm/lib/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.js.map +1 -1
  359. package/lib-esm/lib/taon-posts/taon-cms-post/index.d.ts +1 -1
  360. package/lib-esm/lib/taon-posts/taon-cms-post/index.js +1 -1
  361. 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 +7 -2
  362. package/lib-esm/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.js +5 -1
  363. 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 -1
  364. 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 +7 -2
  365. package/lib-esm/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.js +5 -1
  366. 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 -1
  367. 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 +7 -2
  368. package/lib-esm/lib/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.js +5 -1
  369. 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 -1
  370. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.de-DE.i18n.data.js +14 -10
  371. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.de-DE.i18n.data.js.map +1 -1
  372. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.en-US.i18n.data.js +14 -10
  373. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.en-US.i18n.data.js.map +1 -1
  374. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data.js +14 -10
  375. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data.js.map +1 -1
  376. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.d.ts +13 -2
  377. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.js +28 -0
  378. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.js.map +1 -1
  379. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.d.ts +13 -2
  380. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.js +28 -0
  381. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.js.map +1 -1
  382. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.d.ts +13 -2
  383. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.js +28 -0
  384. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.js.map +1 -1
  385. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.d.ts +7 -2
  386. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.js +6 -2
  387. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.js.map +1 -1
  388. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.d.ts +7 -2
  389. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.js +6 -2
  390. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.js.map +1 -1
  391. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.d.ts +7 -2
  392. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.js +6 -2
  393. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.js.map +1 -1
  394. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/index.d.ts +1 -1
  395. package/lib-esm/lib/taon-posts/taon-cms-posts-backoffice/index.js +1 -1
  396. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/index.d.ts +1 -1
  397. package/lib-esm/lib/taon-posts/taon-cms-revision-chooser/index.js +1 -1
  398. package/lib-esm/lib/taon-posts/taon-related-post-chooser/index.d.ts +1 -1
  399. package/lib-esm/lib/taon-posts/taon-related-post-chooser/index.js +1 -1
  400. package/lib-prod/build-info._auto-generated_.d.ts +1 -1
  401. package/lib-prod/build-info._auto-generated_.js +1 -1
  402. package/lib-prod/index._auto-generated_.js +1 -0
  403. package/lib-prod/index._auto-generated_.js.map +1 -1
  404. package/lib-prod/package.json +1 -1
  405. package/lib-prod/taon-cms-backoffice/index.d.ts +1 -1
  406. package/lib-prod/taon-cms-backoffice/index.js +1 -1
  407. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.d.ts +4 -1
  408. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.js.map +1 -1
  409. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data.d.ts +21 -0
  410. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data.js +37 -0
  411. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data.js.map +1 -0
  412. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data.d.ts +21 -0
  413. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data.js +37 -0
  414. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data.js.map +1 -0
  415. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data.d.ts +21 -0
  416. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data.js +37 -0
  417. package/lib-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data.js.map +1 -0
  418. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data.d.ts +3 -0
  419. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data.js +22 -2
  420. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data.js.map +1 -1
  421. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data.d.ts +3 -0
  422. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data.js +22 -2
  423. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data.js.map +1 -1
  424. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data.d.ts +3 -0
  425. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data.js +22 -2
  426. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data.js.map +1 -1
  427. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.de-DE.i18n.data.js +4 -4
  428. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.en-US.i18n.data.js +4 -4
  429. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.pl-PL.i18n.data.js +4 -4
  430. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.de-DE.i18n.data.d.ts +1 -0
  431. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.de-DE.i18n.data.js +6 -2
  432. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.de-DE.i18n.data.js.map +1 -1
  433. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.en-US.i18n.data.d.ts +1 -0
  434. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.en-US.i18n.data.js +6 -2
  435. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.en-US.i18n.data.js.map +1 -1
  436. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data.d.ts +1 -0
  437. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data.js +6 -2
  438. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data.js.map +1 -1
  439. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data.d.ts +2 -0
  440. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data.js +11 -3
  441. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data.js.map +1 -1
  442. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.en-US.i18n.data.d.ts +2 -0
  443. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.en-US.i18n.data.js +11 -3
  444. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.en-US.i18n.data.js.map +1 -1
  445. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data.d.ts +2 -0
  446. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data.js +11 -3
  447. package/lib-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data.js.map +1 -1
  448. package/lib-prod/taon-posts/taon-cms-course-backoffice/index.d.ts +1 -1
  449. package/lib-prod/taon-posts/taon-cms-course-backoffice/index.js +1 -1
  450. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.d.ts +5 -2
  451. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.js +95 -85
  452. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.js.map +1 -1
  453. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.d.ts +5 -2
  454. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.js +95 -85
  455. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.js.map +1 -1
  456. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.d.ts +5 -2
  457. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.js +95 -85
  458. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.js.map +1 -1
  459. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.d.ts +3 -0
  460. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.js +46 -34
  461. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.js.map +1 -1
  462. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.d.ts +3 -0
  463. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.js +46 -34
  464. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.js.map +1 -1
  465. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.d.ts +3 -0
  466. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.js +46 -34
  467. package/lib-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.js.map +1 -1
  468. package/lib-prod/taon-posts/taon-cms-post/index.d.ts +1 -1
  469. package/lib-prod/taon-posts/taon-cms-post/index.js +1 -1
  470. package/lib-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.d.ts +7 -2
  471. package/lib-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.i18n.data.js +5 -1
  472. 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 -1
  473. package/lib-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.d.ts +7 -2
  474. package/lib-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.i18n.data.js +5 -1
  475. 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 -1
  476. package/lib-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.d.ts +7 -2
  477. package/lib-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.i18n.data.js +5 -1
  478. 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 -1
  479. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.de-DE.i18n.data.js +14 -10
  480. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.de-DE.i18n.data.js.map +1 -1
  481. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.en-US.i18n.data.js +14 -10
  482. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.en-US.i18n.data.js.map +1 -1
  483. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data.js +14 -10
  484. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data.js.map +1 -1
  485. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.d.ts +13 -2
  486. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.js +28 -0
  487. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.i18n.data.js.map +1 -1
  488. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.d.ts +13 -2
  489. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.js +28 -0
  490. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.i18n.data.js.map +1 -1
  491. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.d.ts +13 -2
  492. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.js +28 -0
  493. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.i18n.data.js.map +1 -1
  494. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.d.ts +7 -2
  495. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.js +6 -2
  496. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.js.map +1 -1
  497. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.d.ts +7 -2
  498. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.js +6 -2
  499. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.js.map +1 -1
  500. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.d.ts +7 -2
  501. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.js +6 -2
  502. package/lib-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.js.map +1 -1
  503. package/lib-prod/taon-posts/taon-cms-posts-backoffice/index.d.ts +1 -1
  504. package/lib-prod/taon-posts/taon-cms-posts-backoffice/index.js +1 -1
  505. package/lib-prod/taon-posts/taon-cms-revision-chooser/index.d.ts +1 -1
  506. package/lib-prod/taon-posts/taon-cms-revision-chooser/index.js +1 -1
  507. package/lib-prod/taon-posts/taon-related-post-chooser/index.d.ts +1 -1
  508. package/lib-prod/taon-posts/taon-related-post-chooser/index.js +1 -1
  509. package/package.json +1 -1
  510. package/scss/lib/taon-posts/taon-cms-post/taon-cms-post.component.scss +10 -0
  511. package/ts-source/browser-code/build-info._auto-generated_.ts +1 -1
  512. package/ts-source/browser-code/index._auto-generated_.ts +1 -0
  513. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.ts +4 -1
  514. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data.ts +58 -0
  515. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.po +33 -0
  516. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data.ts +58 -0
  517. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.po +33 -0
  518. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data.ts +58 -0
  519. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.po +33 -0
  520. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts +1 -1
  521. package/ts-source/browser-code/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-quick-create-dialog.component.ts +123 -0
  522. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data.ts +25 -2
  523. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.de-DE.po +16 -2
  524. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data.ts +25 -2
  525. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.en-US.po +16 -2
  526. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data.ts +25 -2
  527. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.pl-PL.po +16 -2
  528. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.de-DE.i18n.data.ts +4 -4
  529. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.de-DE.po +4 -4
  530. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.en-US.i18n.data.ts +4 -4
  531. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.en-US.po +4 -4
  532. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.pl-PL.i18n.data.ts +4 -4
  533. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.pl-PL.po +4 -4
  534. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.de-DE.i18n.data.ts +7 -2
  535. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.de-DE.po +6 -2
  536. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.en-US.i18n.data.ts +7 -2
  537. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.en-US.po +6 -2
  538. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data.ts +7 -2
  539. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.pl-PL.po +6 -2
  540. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data.ts +13 -3
  541. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.de-DE.po +11 -3
  542. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.en-US.i18n.data.ts +13 -3
  543. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.en-US.po +11 -3
  544. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data.ts +13 -3
  545. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.pl-PL.po +11 -3
  546. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.html +28 -0
  547. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts +11 -0
  548. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html +9 -0
  549. package/ts-source/browser-code/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts +15 -0
  550. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.ts +98 -85
  551. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.po +94 -82
  552. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.ts +98 -85
  553. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.po +94 -82
  554. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.ts +98 -85
  555. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.po +94 -82
  556. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.ts +49 -34
  557. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.po +46 -34
  558. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.ts +49 -34
  559. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.po +46 -34
  560. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.ts +49 -34
  561. package/ts-source/browser-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.po +46 -34
  562. package/ts-source/browser-code/taon-posts/taon-cms-post/taon-cms-post.component.html +58 -9
  563. package/ts-source/browser-code/taon-posts/taon-cms-post/taon-cms-post.component.scss +10 -0
  564. package/ts-source/browser-code/taon-posts/taon-cms-post/taon-cms-post.component.ts +133 -7
  565. 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 +6 -1
  566. package/ts-source/browser-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.po +5 -1
  567. 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 +6 -1
  568. package/ts-source/browser-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.po +5 -1
  569. 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 +6 -1
  570. package/ts-source/browser-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.po +5 -1
  571. package/ts-source/browser-code/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts +53 -10
  572. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.de-DE.i18n.data.ts +14 -10
  573. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.de-DE.po +11 -10
  574. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.en-US.i18n.data.ts +14 -10
  575. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.en-US.po +11 -10
  576. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data.ts +14 -10
  577. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.pl-PL.po +11 -10
  578. 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
  579. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.po +28 -0
  580. 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
  581. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.po +28 -0
  582. 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
  583. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.po +28 -0
  584. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.ts +7 -2
  585. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.po +6 -2
  586. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.ts +7 -2
  587. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.po +6 -2
  588. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.ts +7 -2
  589. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.po +6 -2
  590. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive.ts +13 -1
  591. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html +38 -2
  592. package/ts-source/browser-code/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts +13 -1
  593. package/ts-source/browser-code-prod/build-info._auto-generated_.ts +1 -1
  594. package/ts-source/browser-code-prod/index._auto-generated_.ts +1 -0
  595. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.ts +4 -1
  596. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data.ts +58 -0
  597. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.po +33 -0
  598. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data.ts +58 -0
  599. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.po +33 -0
  600. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data.ts +58 -0
  601. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.po +33 -0
  602. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts +1 -1
  603. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-quick-create-dialog.component.split-namespaces.json +4 -0
  604. package/ts-source/browser-code-prod/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-quick-create-dialog.component.ts +123 -0
  605. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data.ts +25 -2
  606. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.de-DE.po +16 -2
  607. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data.ts +25 -2
  608. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.en-US.po +16 -2
  609. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data.ts +25 -2
  610. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.pl-PL.po +16 -2
  611. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.de-DE.i18n.data.ts +4 -4
  612. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.de-DE.po +4 -4
  613. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.en-US.i18n.data.ts +4 -4
  614. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.en-US.po +4 -4
  615. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.pl-PL.i18n.data.ts +4 -4
  616. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.pl-PL.po +4 -4
  617. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.de-DE.i18n.data.ts +7 -2
  618. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.de-DE.po +6 -2
  619. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.en-US.i18n.data.ts +7 -2
  620. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.en-US.po +6 -2
  621. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data.ts +7 -2
  622. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.pl-PL.po +6 -2
  623. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data.ts +13 -3
  624. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.de-DE.po +11 -3
  625. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.en-US.i18n.data.ts +13 -3
  626. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.en-US.po +11 -3
  627. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data.ts +13 -3
  628. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.pl-PL.po +11 -3
  629. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.html +28 -0
  630. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts +11 -0
  631. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html +9 -0
  632. package/ts-source/browser-code-prod/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts +15 -0
  633. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.ts +98 -85
  634. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.po +94 -82
  635. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.ts +98 -85
  636. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.po +94 -82
  637. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.ts +98 -85
  638. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.po +94 -82
  639. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.ts +49 -34
  640. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.po +46 -34
  641. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.ts +49 -34
  642. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.po +46 -34
  643. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.ts +49 -34
  644. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.po +46 -34
  645. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/taon-cms-post.component.html +58 -9
  646. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/taon-cms-post.component.scss +10 -0
  647. package/ts-source/browser-code-prod/taon-posts/taon-cms-post/taon-cms-post.component.ts +133 -7
  648. 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 +6 -1
  649. package/ts-source/browser-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.po +5 -1
  650. 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 +6 -1
  651. package/ts-source/browser-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.po +5 -1
  652. 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 +6 -1
  653. package/ts-source/browser-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.po +5 -1
  654. package/ts-source/browser-code-prod/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts +53 -10
  655. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.de-DE.i18n.data.ts +14 -10
  656. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.de-DE.po +11 -10
  657. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.en-US.i18n.data.ts +14 -10
  658. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.en-US.po +11 -10
  659. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data.ts +14 -10
  660. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.pl-PL.po +11 -10
  661. 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
  662. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.po +28 -0
  663. 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
  664. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.po +28 -0
  665. 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
  666. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.po +28 -0
  667. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.ts +7 -2
  668. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.po +6 -2
  669. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.ts +7 -2
  670. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.po +6 -2
  671. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.ts +7 -2
  672. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.po +6 -2
  673. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive.ts +13 -1
  674. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html +38 -2
  675. package/ts-source/browser-code-prod/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts +13 -1
  676. package/ts-source/websql-code/build-info._auto-generated_.ts +1 -1
  677. package/ts-source/websql-code/index._auto-generated_.ts +1 -0
  678. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.ts +4 -1
  679. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data.ts +58 -0
  680. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.po +33 -0
  681. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data.ts +58 -0
  682. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.po +33 -0
  683. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data.ts +58 -0
  684. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.po +33 -0
  685. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts +1 -1
  686. package/ts-source/websql-code/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-quick-create-dialog.component.ts +123 -0
  687. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data.ts +25 -2
  688. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.de-DE.po +16 -2
  689. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data.ts +25 -2
  690. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.en-US.po +16 -2
  691. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data.ts +25 -2
  692. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.pl-PL.po +16 -2
  693. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.de-DE.i18n.data.ts +4 -4
  694. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.de-DE.po +4 -4
  695. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.en-US.i18n.data.ts +4 -4
  696. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.en-US.po +4 -4
  697. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.pl-PL.i18n.data.ts +4 -4
  698. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.pl-PL.po +4 -4
  699. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.de-DE.i18n.data.ts +7 -2
  700. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.de-DE.po +6 -2
  701. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.en-US.i18n.data.ts +7 -2
  702. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.en-US.po +6 -2
  703. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data.ts +7 -2
  704. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.pl-PL.po +6 -2
  705. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data.ts +13 -3
  706. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.de-DE.po +11 -3
  707. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.en-US.i18n.data.ts +13 -3
  708. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.en-US.po +11 -3
  709. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data.ts +13 -3
  710. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.pl-PL.po +11 -3
  711. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.html +28 -0
  712. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts +11 -0
  713. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html +9 -0
  714. package/ts-source/websql-code/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts +15 -0
  715. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.ts +100 -87
  716. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.po +94 -82
  717. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.ts +100 -87
  718. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.po +94 -82
  719. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.ts +100 -87
  720. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.po +94 -82
  721. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.ts +49 -34
  722. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.po +46 -34
  723. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.ts +49 -34
  724. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.po +46 -34
  725. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.ts +49 -34
  726. package/ts-source/websql-code/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.po +46 -34
  727. package/ts-source/websql-code/taon-posts/taon-cms-post/taon-cms-post.component.html +58 -9
  728. package/ts-source/websql-code/taon-posts/taon-cms-post/taon-cms-post.component.scss +10 -0
  729. package/ts-source/websql-code/taon-posts/taon-cms-post/taon-cms-post.component.ts +133 -7
  730. 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 +6 -1
  731. package/ts-source/websql-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.po +5 -1
  732. 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 +6 -1
  733. package/ts-source/websql-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.po +5 -1
  734. 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 +6 -1
  735. package/ts-source/websql-code/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.po +5 -1
  736. package/ts-source/websql-code/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts +53 -10
  737. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.de-DE.i18n.data.ts +14 -10
  738. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.de-DE.po +11 -10
  739. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.en-US.i18n.data.ts +14 -10
  740. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.en-US.po +11 -10
  741. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data.ts +14 -10
  742. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.pl-PL.po +11 -10
  743. 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
  744. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.po +28 -0
  745. 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
  746. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.po +28 -0
  747. 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
  748. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.po +28 -0
  749. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.ts +7 -2
  750. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.po +6 -2
  751. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.ts +7 -2
  752. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.po +6 -2
  753. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.ts +7 -2
  754. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.po +6 -2
  755. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive.ts +13 -1
  756. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html +38 -2
  757. package/ts-source/websql-code/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts +13 -1
  758. package/ts-source/websql-code-prod/build-info._auto-generated_.ts +1 -1
  759. package/ts-source/websql-code-prod/index._auto-generated_.ts +1 -0
  760. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-backoffice.translation.ts +4 -1
  761. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data.ts +58 -0
  762. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.po +33 -0
  763. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data.ts +58 -0
  764. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.po +33 -0
  765. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data.ts +58 -0
  766. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/i18n/taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.po +33 -0
  767. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts +1 -1
  768. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-quick-create-dialog.component.split-namespaces.json +4 -0
  769. package/ts-source/websql-code-prod/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-quick-create-dialog.component.ts +123 -0
  770. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.de-DE.i18n.data.ts +25 -2
  771. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.de-DE.po +16 -2
  772. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.en-US.i18n.data.ts +25 -2
  773. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.en-US.po +16 -2
  774. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.pl-PL.i18n.data.ts +25 -2
  775. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.html.pl-PL.po +16 -2
  776. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.de-DE.i18n.data.ts +4 -4
  777. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.de-DE.po +4 -4
  778. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.en-US.i18n.data.ts +4 -4
  779. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.en-US.po +4 -4
  780. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.pl-PL.i18n.data.ts +4 -4
  781. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-backoffice.component.ts.pl-PL.po +4 -4
  782. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.de-DE.i18n.data.ts +7 -2
  783. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.de-DE.po +6 -2
  784. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.en-US.i18n.data.ts +7 -2
  785. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.en-US.po +6 -2
  786. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.pl-PL.i18n.data.ts +7 -2
  787. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.html.pl-PL.po +6 -2
  788. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.de-DE.i18n.data.ts +13 -3
  789. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.de-DE.po +11 -3
  790. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.en-US.i18n.data.ts +13 -3
  791. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.en-US.po +11 -3
  792. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.pl-PL.i18n.data.ts +13 -3
  793. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/i18n/taon-cms-course-contents.component.ts.pl-PL.po +11 -3
  794. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.html +28 -0
  795. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts +11 -0
  796. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html +9 -0
  797. package/ts-source/websql-code-prod/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts +15 -0
  798. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.i18n.data.ts +100 -87
  799. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.de-DE.po +94 -82
  800. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.i18n.data.ts +100 -87
  801. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.en-US.po +94 -82
  802. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.i18n.data.ts +100 -87
  803. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.html.pl-PL.po +94 -82
  804. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.i18n.data.ts +49 -34
  805. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.de-DE.po +46 -34
  806. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.i18n.data.ts +49 -34
  807. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.en-US.po +46 -34
  808. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.i18n.data.ts +49 -34
  809. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/i18n/taon-cms-post.component.ts.pl-PL.po +46 -34
  810. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/taon-cms-post.component.html +58 -9
  811. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/taon-cms-post.component.scss +10 -0
  812. package/ts-source/websql-code-prod/taon-posts/taon-cms-post/taon-cms-post.component.ts +133 -7
  813. 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 +6 -1
  814. package/ts-source/websql-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.de-DE.po +5 -1
  815. 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 +6 -1
  816. package/ts-source/websql-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.en-US.po +5 -1
  817. 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 +6 -1
  818. package/ts-source/websql-code-prod/taon-posts/taon-cms-post-details-page/i18n/taon-cms-post-details-page.component.ts.pl-PL.po +5 -1
  819. package/ts-source/websql-code-prod/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts +53 -10
  820. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.de-DE.i18n.data.ts +14 -10
  821. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.de-DE.po +11 -10
  822. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.en-US.i18n.data.ts +14 -10
  823. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.en-US.po +11 -10
  824. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data.ts +14 -10
  825. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-post-table-actions.directive.ts.pl-PL.po +11 -10
  826. 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
  827. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.de-DE.po +28 -0
  828. 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
  829. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.en-US.po +28 -0
  830. 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
  831. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.html.pl-PL.po +28 -0
  832. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.i18n.data.ts +7 -2
  833. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.de-DE.po +6 -2
  834. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.i18n.data.ts +7 -2
  835. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.en-US.po +6 -2
  836. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data.ts +7 -2
  837. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/i18n/taon-cms-posts-backoffice.component.ts.pl-PL.po +6 -2
  838. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive.ts +13 -1
  839. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html +38 -2
  840. package/ts-source/websql-code-prod/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts +13 -1
  841. package/websql/fesm2022/{cms-websql-taon-cms-course-backoffice.component.html.de-DE.i18n.data-CUk5ug7o.mjs → cms-websql-taon-cms-course-backoffice.component.html.de-DE.i18n.data-DkSppX5j.mjs} +23 -3
  842. package/websql/fesm2022/cms-websql-taon-cms-course-backoffice.component.html.de-DE.i18n.data-DkSppX5j.mjs.map +1 -0
  843. package/websql/fesm2022/{cms-websql-taon-cms-course-backoffice.component.html.en-US.i18n.data-B_ev_S5w.mjs → cms-websql-taon-cms-course-backoffice.component.html.en-US.i18n.data-DaYr8I_Z.mjs} +23 -3
  844. package/websql/fesm2022/cms-websql-taon-cms-course-backoffice.component.html.en-US.i18n.data-DaYr8I_Z.mjs.map +1 -0
  845. package/websql/fesm2022/{cms-websql-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-CzEhm95I.mjs → cms-websql-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-C6_Aqc3M.mjs} +23 -3
  846. package/websql/fesm2022/cms-websql-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-C6_Aqc3M.mjs.map +1 -0
  847. package/websql/fesm2022/{cms-websql-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-DAc3VOD3.mjs → cms-websql-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-DvIyIfqQ.mjs} +5 -5
  848. package/websql/fesm2022/{cms-websql-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-DAc3VOD3.mjs.map → cms-websql-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-DvIyIfqQ.mjs.map} +1 -1
  849. package/websql/fesm2022/{cms-websql-taon-cms-course-backoffice.component.ts.en-US.i18n.data-DpyYEZSz.mjs → cms-websql-taon-cms-course-backoffice.component.ts.en-US.i18n.data-PE9qaaqh.mjs} +5 -5
  850. package/websql/fesm2022/{cms-websql-taon-cms-course-backoffice.component.ts.en-US.i18n.data-DpyYEZSz.mjs.map → cms-websql-taon-cms-course-backoffice.component.ts.en-US.i18n.data-PE9qaaqh.mjs.map} +1 -1
  851. package/websql/fesm2022/{cms-websql-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-RzH83Lc_.mjs → cms-websql-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-CeW02Lcj.mjs} +5 -5
  852. package/websql/fesm2022/{cms-websql-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-RzH83Lc_.mjs.map → cms-websql-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-CeW02Lcj.mjs.map} +1 -1
  853. package/websql/fesm2022/{cms-websql-taon-cms-course-contents.component.html.de-DE.i18n.data-zeQEmcoN.mjs → cms-websql-taon-cms-course-contents.component.html.de-DE.i18n.data-C7w7bI4c.mjs} +7 -3
  854. package/websql/fesm2022/cms-websql-taon-cms-course-contents.component.html.de-DE.i18n.data-C7w7bI4c.mjs.map +1 -0
  855. package/websql/fesm2022/{cms-websql-taon-cms-course-contents.component.html.en-US.i18n.data-CWd3E2aP.mjs → cms-websql-taon-cms-course-contents.component.html.en-US.i18n.data-B0x36jpK.mjs} +7 -3
  856. package/websql/fesm2022/cms-websql-taon-cms-course-contents.component.html.en-US.i18n.data-B0x36jpK.mjs.map +1 -0
  857. package/websql/fesm2022/{cms-websql-taon-cms-course-contents.component.html.pl-PL.i18n.data-DZNGFqHU.mjs → cms-websql-taon-cms-course-contents.component.html.pl-PL.i18n.data-2drjM21N.mjs} +7 -3
  858. package/websql/fesm2022/cms-websql-taon-cms-course-contents.component.html.pl-PL.i18n.data-2drjM21N.mjs.map +1 -0
  859. package/websql/fesm2022/{cms-websql-taon-cms-course-contents.component.ts.de-DE.i18n.data-B1c4BqwL.mjs → cms-websql-taon-cms-course-contents.component.ts.de-DE.i18n.data-CL2w5q-S.mjs} +12 -4
  860. package/websql/fesm2022/cms-websql-taon-cms-course-contents.component.ts.de-DE.i18n.data-CL2w5q-S.mjs.map +1 -0
  861. package/websql/fesm2022/{cms-websql-taon-cms-course-contents.component.ts.en-US.i18n.data-C0Q4P1pi.mjs → cms-websql-taon-cms-course-contents.component.ts.en-US.i18n.data-DleMuJeD.mjs} +12 -4
  862. package/websql/fesm2022/cms-websql-taon-cms-course-contents.component.ts.en-US.i18n.data-DleMuJeD.mjs.map +1 -0
  863. package/websql/fesm2022/{cms-websql-taon-cms-course-contents.component.ts.pl-PL.i18n.data-B2_M5A-D.mjs → cms-websql-taon-cms-course-contents.component.ts.pl-PL.i18n.data-DgkzL0Vq.mjs} +12 -4
  864. package/websql/fesm2022/cms-websql-taon-cms-course-contents.component.ts.pl-PL.i18n.data-DgkzL0Vq.mjs.map +1 -0
  865. package/websql/fesm2022/{cms-websql-taon-cms-post-details-page.component.ts.de-DE.i18n.data-DvinUxYu.mjs → cms-websql-taon-cms-post-details-page.component.ts.de-DE.i18n.data-ClIYIAz7.mjs} +6 -2
  866. package/websql/fesm2022/cms-websql-taon-cms-post-details-page.component.ts.de-DE.i18n.data-ClIYIAz7.mjs.map +1 -0
  867. package/websql/fesm2022/{cms-websql-taon-cms-post-details-page.component.ts.en-US.i18n.data-BHclr-Mp.mjs → cms-websql-taon-cms-post-details-page.component.ts.en-US.i18n.data-WzvzH28T.mjs} +6 -2
  868. package/websql/fesm2022/cms-websql-taon-cms-post-details-page.component.ts.en-US.i18n.data-WzvzH28T.mjs.map +1 -0
  869. package/websql/fesm2022/{cms-websql-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-2oqcGTJG.mjs → cms-websql-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-86Izoe2O.mjs} +6 -2
  870. package/websql/fesm2022/cms-websql-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-86Izoe2O.mjs.map +1 -0
  871. package/websql/fesm2022/{cms-websql-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-x_3GCOW9.mjs → cms-websql-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-CKCKZi29.mjs} +15 -11
  872. package/websql/fesm2022/cms-websql-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-CKCKZi29.mjs.map +1 -0
  873. package/websql/fesm2022/{cms-websql-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-4NI8Xw9I.mjs → cms-websql-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-DUh-u4-P.mjs} +15 -11
  874. package/websql/fesm2022/cms-websql-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-DUh-u4-P.mjs.map +1 -0
  875. package/websql/fesm2022/{cms-websql-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-FbMIlsYe.mjs → cms-websql-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-juzvMnde.mjs} +15 -11
  876. package/websql/fesm2022/cms-websql-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-juzvMnde.mjs.map +1 -0
  877. package/websql/fesm2022/{cms-websql-taon-cms-post.component.html.de-DE.i18n.data-BaON6nA9.mjs → cms-websql-taon-cms-post.component.html.de-DE.i18n.data-DJcuFwI4.mjs} +96 -86
  878. package/websql/fesm2022/cms-websql-taon-cms-post.component.html.de-DE.i18n.data-DJcuFwI4.mjs.map +1 -0
  879. package/websql/fesm2022/{cms-websql-taon-cms-post.component.html.en-US.i18n.data-B6l0ggUx.mjs → cms-websql-taon-cms-post.component.html.en-US.i18n.data-DqG-6paf.mjs} +96 -86
  880. package/websql/fesm2022/cms-websql-taon-cms-post.component.html.en-US.i18n.data-DqG-6paf.mjs.map +1 -0
  881. package/websql/fesm2022/{cms-websql-taon-cms-post.component.html.pl-PL.i18n.data-By3hiiP-.mjs → cms-websql-taon-cms-post.component.html.pl-PL.i18n.data-okZz6YGc.mjs} +96 -86
  882. package/websql/fesm2022/cms-websql-taon-cms-post.component.html.pl-PL.i18n.data-okZz6YGc.mjs.map +1 -0
  883. package/websql/fesm2022/{cms-websql-taon-cms-post.component.ts.de-DE.i18n.data-Ciz92SwP.mjs → cms-websql-taon-cms-post.component.ts.de-DE.i18n.data-KbNFIOV8.mjs} +47 -35
  884. package/websql/fesm2022/cms-websql-taon-cms-post.component.ts.de-DE.i18n.data-KbNFIOV8.mjs.map +1 -0
  885. package/websql/fesm2022/{cms-websql-taon-cms-post.component.ts.en-US.i18n.data-BfH784ag.mjs → cms-websql-taon-cms-post.component.ts.en-US.i18n.data-CIeHDfiP.mjs} +47 -35
  886. package/websql/fesm2022/cms-websql-taon-cms-post.component.ts.en-US.i18n.data-CIeHDfiP.mjs.map +1 -0
  887. package/websql/fesm2022/{cms-websql-taon-cms-post.component.ts.pl-PL.i18n.data-cvvUelpe.mjs → cms-websql-taon-cms-post.component.ts.pl-PL.i18n.data-bze_EsKd.mjs} +47 -35
  888. package/websql/fesm2022/cms-websql-taon-cms-post.component.ts.pl-PL.i18n.data-bze_EsKd.mjs.map +1 -0
  889. package/websql/fesm2022/{cms-websql-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-Dzx2YyST.mjs → cms-websql-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-UXy-sMFK.mjs} +29 -1
  890. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-UXy-sMFK.mjs.map +1 -0
  891. package/websql/fesm2022/{cms-websql-taon-cms-posts-backoffice.component.html.en-US.i18n.data-MKa7Bg7x.mjs → cms-websql-taon-cms-posts-backoffice.component.html.en-US.i18n.data-DCBhrRtK.mjs} +29 -1
  892. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.html.en-US.i18n.data-DCBhrRtK.mjs.map +1 -0
  893. package/websql/fesm2022/{cms-websql-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-DbKCVK5F.mjs → cms-websql-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-B5lnW5fC.mjs} +29 -1
  894. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-B5lnW5fC.mjs.map +1 -0
  895. package/websql/fesm2022/{cms-websql-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-CTNTDm49.mjs → cms-websql-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-B7blUYSz.mjs} +7 -3
  896. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-B7blUYSz.mjs.map +1 -0
  897. package/websql/fesm2022/{cms-websql-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-BEXiBm6D.mjs → cms-websql-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-DLwpMBSF.mjs} +7 -3
  898. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-DLwpMBSF.mjs.map +1 -0
  899. package/websql/fesm2022/{cms-websql-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-CYa7VWYt.mjs → cms-websql-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-DusaGJ-_.mjs} +7 -3
  900. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-DusaGJ-_.mjs.map +1 -0
  901. package/websql/fesm2022/cms-websql-taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data-BBgvZEjP.mjs +39 -0
  902. package/websql/fesm2022/cms-websql-taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data-BBgvZEjP.mjs.map +1 -0
  903. package/websql/fesm2022/cms-websql-taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data-DbNt8AxN.mjs +39 -0
  904. package/websql/fesm2022/cms-websql-taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data-DbNt8AxN.mjs.map +1 -0
  905. package/websql/fesm2022/cms-websql-taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data-DqlFgTmr.mjs +39 -0
  906. package/websql/fesm2022/cms-websql-taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data-DqlFgTmr.mjs.map +1 -0
  907. package/websql/fesm2022/cms-websql.mjs +441 -81
  908. package/websql/fesm2022/cms-websql.mjs.map +1 -1
  909. package/websql/package.json +1 -1
  910. package/websql/types/cms-websql.d.ts +50 -8
  911. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-course-backoffice.component.html.de-DE.i18n.data-BIKNygMW.mjs → cms-websql-prod-taon-cms-course-backoffice.component.html.de-DE.i18n.data-pBodiDom.mjs} +23 -3
  912. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-course-backoffice.component.html.de-DE.i18n.data-pBodiDom.mjs.map +1 -0
  913. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-course-backoffice.component.html.en-US.i18n.data-D9oVvT_M.mjs → cms-websql-prod-taon-cms-course-backoffice.component.html.en-US.i18n.data-C-KaCnmB.mjs} +23 -3
  914. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-course-backoffice.component.html.en-US.i18n.data-C-KaCnmB.mjs.map +1 -0
  915. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-CT3qblPQ.mjs → cms-websql-prod-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-DVvCS_w8.mjs} +23 -3
  916. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-DVvCS_w8.mjs.map +1 -0
  917. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-DDALCZn_.mjs → cms-websql-prod-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-D9ccMkjQ.mjs} +5 -5
  918. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-DDALCZn_.mjs.map → cms-websql-prod-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-D9ccMkjQ.mjs.map} +1 -1
  919. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-course-backoffice.component.ts.en-US.i18n.data-DH2B4_Ja.mjs → cms-websql-prod-taon-cms-course-backoffice.component.ts.en-US.i18n.data-B93x0XPn.mjs} +5 -5
  920. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-course-backoffice.component.ts.en-US.i18n.data-DH2B4_Ja.mjs.map → cms-websql-prod-taon-cms-course-backoffice.component.ts.en-US.i18n.data-B93x0XPn.mjs.map} +1 -1
  921. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-BdEFeTQw.mjs → cms-websql-prod-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-DOVFInPW.mjs} +5 -5
  922. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-BdEFeTQw.mjs.map → cms-websql-prod-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-DOVFInPW.mjs.map} +1 -1
  923. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-course-contents.component.html.de-DE.i18n.data-BBlVjzPI.mjs → cms-websql-prod-taon-cms-course-contents.component.html.de-DE.i18n.data-DwXg_q7j.mjs} +7 -3
  924. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-course-contents.component.html.de-DE.i18n.data-DwXg_q7j.mjs.map +1 -0
  925. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-course-contents.component.html.en-US.i18n.data-IqA_nyeM.mjs → cms-websql-prod-taon-cms-course-contents.component.html.en-US.i18n.data-BPUBq0Bt.mjs} +7 -3
  926. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-course-contents.component.html.en-US.i18n.data-BPUBq0Bt.mjs.map +1 -0
  927. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-course-contents.component.html.pl-PL.i18n.data-iS1xSmiV.mjs → cms-websql-prod-taon-cms-course-contents.component.html.pl-PL.i18n.data-8KVZPVJ1.mjs} +7 -3
  928. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-course-contents.component.html.pl-PL.i18n.data-8KVZPVJ1.mjs.map +1 -0
  929. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-course-contents.component.ts.de-DE.i18n.data-f8Xls0R1.mjs → cms-websql-prod-taon-cms-course-contents.component.ts.de-DE.i18n.data-CjwirhHF.mjs} +12 -4
  930. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-course-contents.component.ts.de-DE.i18n.data-CjwirhHF.mjs.map +1 -0
  931. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-course-contents.component.ts.en-US.i18n.data-RRhO86eN.mjs → cms-websql-prod-taon-cms-course-contents.component.ts.en-US.i18n.data-B3xqVTaa.mjs} +12 -4
  932. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-course-contents.component.ts.en-US.i18n.data-B3xqVTaa.mjs.map +1 -0
  933. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-course-contents.component.ts.pl-PL.i18n.data-C3YO-MyR.mjs → cms-websql-prod-taon-cms-course-contents.component.ts.pl-PL.i18n.data-B9cHH0RN.mjs} +12 -4
  934. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-course-contents.component.ts.pl-PL.i18n.data-B9cHH0RN.mjs.map +1 -0
  935. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-post-details-page.component.ts.de-DE.i18n.data-GEZohFQ6.mjs → cms-websql-prod-taon-cms-post-details-page.component.ts.de-DE.i18n.data-BEKxqiPy.mjs} +6 -2
  936. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post-details-page.component.ts.de-DE.i18n.data-BEKxqiPy.mjs.map +1 -0
  937. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-post-details-page.component.ts.en-US.i18n.data-BlZyHTVD.mjs → cms-websql-prod-taon-cms-post-details-page.component.ts.en-US.i18n.data-Btv30d6o.mjs} +6 -2
  938. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post-details-page.component.ts.en-US.i18n.data-Btv30d6o.mjs.map +1 -0
  939. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-CytlMNx9.mjs → cms-websql-prod-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-d7nx-NiV.mjs} +6 -2
  940. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-d7nx-NiV.mjs.map +1 -0
  941. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-PyPJAezk.mjs → cms-websql-prod-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-Bd1YmeXl.mjs} +15 -11
  942. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-Bd1YmeXl.mjs.map +1 -0
  943. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-ClZEAevP.mjs → cms-websql-prod-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-BTSFy-ow.mjs} +15 -11
  944. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-BTSFy-ow.mjs.map +1 -0
  945. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-BI91_5DQ.mjs → cms-websql-prod-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-C2f14xE4.mjs} +15 -11
  946. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-C2f14xE4.mjs.map +1 -0
  947. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-post.component.html.de-DE.i18n.data-BEFY2S-d.mjs → cms-websql-prod-taon-cms-post.component.html.de-DE.i18n.data-BFSHH9Im.mjs} +96 -86
  948. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.html.de-DE.i18n.data-BFSHH9Im.mjs.map +1 -0
  949. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-post.component.html.en-US.i18n.data-Be-Tk-ax.mjs → cms-websql-prod-taon-cms-post.component.html.en-US.i18n.data-BiMl_Fi4.mjs} +96 -86
  950. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.html.en-US.i18n.data-BiMl_Fi4.mjs.map +1 -0
  951. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-post.component.html.pl-PL.i18n.data-DbqC9UmK.mjs → cms-websql-prod-taon-cms-post.component.html.pl-PL.i18n.data-x-2YNBm3.mjs} +96 -86
  952. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.html.pl-PL.i18n.data-x-2YNBm3.mjs.map +1 -0
  953. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-post.component.ts.de-DE.i18n.data-Cc81EPlL.mjs → cms-websql-prod-taon-cms-post.component.ts.de-DE.i18n.data-BqvaPHXJ.mjs} +47 -35
  954. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.ts.de-DE.i18n.data-BqvaPHXJ.mjs.map +1 -0
  955. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-post.component.ts.en-US.i18n.data-CC-Pddbc.mjs → cms-websql-prod-taon-cms-post.component.ts.en-US.i18n.data-CyzBbAcG.mjs} +47 -35
  956. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.ts.en-US.i18n.data-CyzBbAcG.mjs.map +1 -0
  957. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-post.component.ts.pl-PL.i18n.data-LMItiYze.mjs → cms-websql-prod-taon-cms-post.component.ts.pl-PL.i18n.data-C8bVvJ1M.mjs} +47 -35
  958. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.ts.pl-PL.i18n.data-C8bVvJ1M.mjs.map +1 -0
  959. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-BP6mgDNt.mjs → cms-websql-prod-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-DYJ4Tqv5.mjs} +29 -1
  960. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-DYJ4Tqv5.mjs.map +1 -0
  961. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-posts-backoffice.component.html.en-US.i18n.data-BHayrvIT.mjs → cms-websql-prod-taon-cms-posts-backoffice.component.html.en-US.i18n.data-DVoHSv7o.mjs} +29 -1
  962. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.html.en-US.i18n.data-DVoHSv7o.mjs.map +1 -0
  963. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-R_zfGgq5.mjs → cms-websql-prod-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-8omoF6EK.mjs} +29 -1
  964. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-8omoF6EK.mjs.map +1 -0
  965. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-CIdrNqYb.mjs → cms-websql-prod-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-BdztQJJr.mjs} +7 -3
  966. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-BdztQJJr.mjs.map +1 -0
  967. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-o77R_3mq.mjs → cms-websql-prod-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-D4frcVl2.mjs} +7 -3
  968. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-D4frcVl2.mjs.map +1 -0
  969. package/websql-prod/fesm2022/{cms-websql-prod-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-DknlE9xA.mjs → cms-websql-prod-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-DHQaIyy0.mjs} +7 -3
  970. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-DHQaIyy0.mjs.map +1 -0
  971. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data-a1wShLjX.mjs +39 -0
  972. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data-a1wShLjX.mjs.map +1 -0
  973. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data-CPctzGKa.mjs +39 -0
  974. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data-CPctzGKa.mjs.map +1 -0
  975. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data-CBZHORXe.mjs +39 -0
  976. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data-CBZHORXe.mjs.map +1 -0
  977. package/websql-prod/fesm2022/cms-websql-prod.mjs +442 -82
  978. package/websql-prod/fesm2022/cms-websql-prod.mjs.map +1 -1
  979. package/websql-prod/package.json +1 -1
  980. package/websql-prod/types/cms-websql-prod.d.ts +50 -8
  981. package/browser/fesm2022/cms-browser-taon-cms-course-backoffice.component.html.de-DE.i18n.data-DcFKcLJv.mjs.map +0 -1
  982. package/browser/fesm2022/cms-browser-taon-cms-course-backoffice.component.html.en-US.i18n.data-DPlA1Ocj.mjs.map +0 -1
  983. package/browser/fesm2022/cms-browser-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-CX2j4P41.mjs.map +0 -1
  984. package/browser/fesm2022/cms-browser-taon-cms-course-contents.component.html.de-DE.i18n.data-CJlZufMg.mjs.map +0 -1
  985. package/browser/fesm2022/cms-browser-taon-cms-course-contents.component.html.en-US.i18n.data-DkNTtW3Q.mjs.map +0 -1
  986. package/browser/fesm2022/cms-browser-taon-cms-course-contents.component.html.pl-PL.i18n.data-8wKW8AR1.mjs.map +0 -1
  987. package/browser/fesm2022/cms-browser-taon-cms-course-contents.component.ts.de-DE.i18n.data-Gt0H19BQ.mjs.map +0 -1
  988. package/browser/fesm2022/cms-browser-taon-cms-course-contents.component.ts.en-US.i18n.data-N-p1oNgV.mjs.map +0 -1
  989. package/browser/fesm2022/cms-browser-taon-cms-course-contents.component.ts.pl-PL.i18n.data-Be1XJqO4.mjs.map +0 -1
  990. package/browser/fesm2022/cms-browser-taon-cms-post-details-page.component.ts.de-DE.i18n.data-C7tWZFkz.mjs.map +0 -1
  991. package/browser/fesm2022/cms-browser-taon-cms-post-details-page.component.ts.en-US.i18n.data-Gx0bf2nC.mjs.map +0 -1
  992. package/browser/fesm2022/cms-browser-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-B-2PuKu7.mjs.map +0 -1
  993. package/browser/fesm2022/cms-browser-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-Cwi7pcvq.mjs.map +0 -1
  994. package/browser/fesm2022/cms-browser-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-BD4-1New.mjs.map +0 -1
  995. package/browser/fesm2022/cms-browser-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-DdK3CYLj.mjs.map +0 -1
  996. package/browser/fesm2022/cms-browser-taon-cms-post.component.html.de-DE.i18n.data-B1AK4KW_.mjs.map +0 -1
  997. package/browser/fesm2022/cms-browser-taon-cms-post.component.html.en-US.i18n.data-KASjY7KB.mjs.map +0 -1
  998. package/browser/fesm2022/cms-browser-taon-cms-post.component.html.pl-PL.i18n.data-BTHVJbC_.mjs.map +0 -1
  999. package/browser/fesm2022/cms-browser-taon-cms-post.component.ts.de-DE.i18n.data-B93wyE-K.mjs.map +0 -1
  1000. package/browser/fesm2022/cms-browser-taon-cms-post.component.ts.en-US.i18n.data-BTgAXw4d.mjs.map +0 -1
  1001. package/browser/fesm2022/cms-browser-taon-cms-post.component.ts.pl-PL.i18n.data-Dt0lO5qR.mjs.map +0 -1
  1002. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-CZ0mZdO-.mjs.map +0 -1
  1003. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.html.en-US.i18n.data-D1XI6u8V.mjs.map +0 -1
  1004. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-DaE0bfxU.mjs.map +0 -1
  1005. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-CTYkGigp.mjs.map +0 -1
  1006. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-B8PjJ2_u.mjs.map +0 -1
  1007. package/browser/fesm2022/cms-browser-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-D5dkM1Rg.mjs.map +0 -1
  1008. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-course-backoffice.component.html.de-DE.i18n.data-CyTxhvtH.mjs.map +0 -1
  1009. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-course-backoffice.component.html.en-US.i18n.data-BTzDmVWc.mjs.map +0 -1
  1010. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-CixvMJ9f.mjs.map +0 -1
  1011. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-course-contents.component.html.de-DE.i18n.data-D7Gtx44e.mjs.map +0 -1
  1012. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-course-contents.component.html.en-US.i18n.data-DomBfXfQ.mjs.map +0 -1
  1013. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-course-contents.component.html.pl-PL.i18n.data-BmHiUySy.mjs.map +0 -1
  1014. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-course-contents.component.ts.de-DE.i18n.data-UiXCopyo.mjs.map +0 -1
  1015. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-course-contents.component.ts.en-US.i18n.data-CG51VvG1.mjs.map +0 -1
  1016. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-course-contents.component.ts.pl-PL.i18n.data-Da06EmCc.mjs.map +0 -1
  1017. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post-details-page.component.ts.de-DE.i18n.data-C-rT2qc1.mjs.map +0 -1
  1018. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post-details-page.component.ts.en-US.i18n.data-CfETMKWw.mjs.map +0 -1
  1019. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-Ci0T7QVO.mjs.map +0 -1
  1020. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-P5VXQlmS.mjs.map +0 -1
  1021. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-6xHTz4NK.mjs.map +0 -1
  1022. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-6Sdc2ekE.mjs.map +0 -1
  1023. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.html.de-DE.i18n.data-C6VWS4yA.mjs.map +0 -1
  1024. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.html.en-US.i18n.data-D300qnuI.mjs.map +0 -1
  1025. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.html.pl-PL.i18n.data-BnqliIDO.mjs.map +0 -1
  1026. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.ts.de-DE.i18n.data-DbP78P1q.mjs.map +0 -1
  1027. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.ts.en-US.i18n.data-DMKvUsPt.mjs.map +0 -1
  1028. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-post.component.ts.pl-PL.i18n.data-Bt1StLjN.mjs.map +0 -1
  1029. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-CXTopGnK.mjs.map +0 -1
  1030. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.html.en-US.i18n.data-C7o8B-38.mjs.map +0 -1
  1031. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-DNGNxZmN.mjs.map +0 -1
  1032. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-BuX23uvE.mjs.map +0 -1
  1033. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-C6jy6lw4.mjs.map +0 -1
  1034. package/browser-prod/fesm2022/cms-browser-prod-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-DFJPgXFt.mjs.map +0 -1
  1035. package/websql/fesm2022/cms-websql-taon-cms-course-backoffice.component.html.de-DE.i18n.data-CUk5ug7o.mjs.map +0 -1
  1036. package/websql/fesm2022/cms-websql-taon-cms-course-backoffice.component.html.en-US.i18n.data-B_ev_S5w.mjs.map +0 -1
  1037. package/websql/fesm2022/cms-websql-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-CzEhm95I.mjs.map +0 -1
  1038. package/websql/fesm2022/cms-websql-taon-cms-course-contents.component.html.de-DE.i18n.data-zeQEmcoN.mjs.map +0 -1
  1039. package/websql/fesm2022/cms-websql-taon-cms-course-contents.component.html.en-US.i18n.data-CWd3E2aP.mjs.map +0 -1
  1040. package/websql/fesm2022/cms-websql-taon-cms-course-contents.component.html.pl-PL.i18n.data-DZNGFqHU.mjs.map +0 -1
  1041. package/websql/fesm2022/cms-websql-taon-cms-course-contents.component.ts.de-DE.i18n.data-B1c4BqwL.mjs.map +0 -1
  1042. package/websql/fesm2022/cms-websql-taon-cms-course-contents.component.ts.en-US.i18n.data-C0Q4P1pi.mjs.map +0 -1
  1043. package/websql/fesm2022/cms-websql-taon-cms-course-contents.component.ts.pl-PL.i18n.data-B2_M5A-D.mjs.map +0 -1
  1044. package/websql/fesm2022/cms-websql-taon-cms-post-details-page.component.ts.de-DE.i18n.data-DvinUxYu.mjs.map +0 -1
  1045. package/websql/fesm2022/cms-websql-taon-cms-post-details-page.component.ts.en-US.i18n.data-BHclr-Mp.mjs.map +0 -1
  1046. package/websql/fesm2022/cms-websql-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-2oqcGTJG.mjs.map +0 -1
  1047. package/websql/fesm2022/cms-websql-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-x_3GCOW9.mjs.map +0 -1
  1048. package/websql/fesm2022/cms-websql-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-4NI8Xw9I.mjs.map +0 -1
  1049. package/websql/fesm2022/cms-websql-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-FbMIlsYe.mjs.map +0 -1
  1050. package/websql/fesm2022/cms-websql-taon-cms-post.component.html.de-DE.i18n.data-BaON6nA9.mjs.map +0 -1
  1051. package/websql/fesm2022/cms-websql-taon-cms-post.component.html.en-US.i18n.data-B6l0ggUx.mjs.map +0 -1
  1052. package/websql/fesm2022/cms-websql-taon-cms-post.component.html.pl-PL.i18n.data-By3hiiP-.mjs.map +0 -1
  1053. package/websql/fesm2022/cms-websql-taon-cms-post.component.ts.de-DE.i18n.data-Ciz92SwP.mjs.map +0 -1
  1054. package/websql/fesm2022/cms-websql-taon-cms-post.component.ts.en-US.i18n.data-BfH784ag.mjs.map +0 -1
  1055. package/websql/fesm2022/cms-websql-taon-cms-post.component.ts.pl-PL.i18n.data-cvvUelpe.mjs.map +0 -1
  1056. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-Dzx2YyST.mjs.map +0 -1
  1057. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.html.en-US.i18n.data-MKa7Bg7x.mjs.map +0 -1
  1058. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-DbKCVK5F.mjs.map +0 -1
  1059. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-CTNTDm49.mjs.map +0 -1
  1060. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-BEXiBm6D.mjs.map +0 -1
  1061. package/websql/fesm2022/cms-websql-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-CYa7VWYt.mjs.map +0 -1
  1062. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-course-backoffice.component.html.de-DE.i18n.data-BIKNygMW.mjs.map +0 -1
  1063. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-course-backoffice.component.html.en-US.i18n.data-D9oVvT_M.mjs.map +0 -1
  1064. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-CT3qblPQ.mjs.map +0 -1
  1065. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-course-contents.component.html.de-DE.i18n.data-BBlVjzPI.mjs.map +0 -1
  1066. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-course-contents.component.html.en-US.i18n.data-IqA_nyeM.mjs.map +0 -1
  1067. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-course-contents.component.html.pl-PL.i18n.data-iS1xSmiV.mjs.map +0 -1
  1068. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-course-contents.component.ts.de-DE.i18n.data-f8Xls0R1.mjs.map +0 -1
  1069. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-course-contents.component.ts.en-US.i18n.data-RRhO86eN.mjs.map +0 -1
  1070. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-course-contents.component.ts.pl-PL.i18n.data-C3YO-MyR.mjs.map +0 -1
  1071. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post-details-page.component.ts.de-DE.i18n.data-GEZohFQ6.mjs.map +0 -1
  1072. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post-details-page.component.ts.en-US.i18n.data-BlZyHTVD.mjs.map +0 -1
  1073. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-CytlMNx9.mjs.map +0 -1
  1074. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-PyPJAezk.mjs.map +0 -1
  1075. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-ClZEAevP.mjs.map +0 -1
  1076. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-BI91_5DQ.mjs.map +0 -1
  1077. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.html.de-DE.i18n.data-BEFY2S-d.mjs.map +0 -1
  1078. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.html.en-US.i18n.data-Be-Tk-ax.mjs.map +0 -1
  1079. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.html.pl-PL.i18n.data-DbqC9UmK.mjs.map +0 -1
  1080. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.ts.de-DE.i18n.data-Cc81EPlL.mjs.map +0 -1
  1081. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.ts.en-US.i18n.data-CC-Pddbc.mjs.map +0 -1
  1082. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-post.component.ts.pl-PL.i18n.data-LMItiYze.mjs.map +0 -1
  1083. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-BP6mgDNt.mjs.map +0 -1
  1084. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.html.en-US.i18n.data-BHayrvIT.mjs.map +0 -1
  1085. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-R_zfGgq5.mjs.map +0 -1
  1086. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-CIdrNqYb.mjs.map +0 -1
  1087. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-o77R_3mq.mjs.map +0 -1
  1088. package/websql-prod/fesm2022/cms-websql-prod-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-DknlE9xA.mjs.map +0 -1
@@ -9,39 +9,41 @@ import * as i0 from '@angular/core';
9
9
  import { Injectable, inject, DestroyRef, signal, Input, ChangeDetectionStrategy, Component, Directive, ViewChild, ElementRef, EventEmitter, SecurityContext, HostListener, Output, computed, input, model, output, viewChild, effect, untracked } from '@angular/core';
10
10
  import * as i1 from '@angular/material/button';
11
11
  import { MatButtonModule } from '@angular/material/button';
12
- import { Observable, of, map as map$1, finalize, forkJoin, firstValueFrom } from 'rxjs';
12
+ import { Observable, of, map as map$1, finalize, forkJoin, switchMap, from, firstValueFrom, combineLatest } from 'rxjs';
13
13
  import { map, catchError } from 'rxjs/operators';
14
14
  import { Resource } from 'ng2-rest/browser';
15
15
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
16
- import { TaonDatatableComponent, adminLazyRoute as adminLazyRoute$1, TaonConfirmDialogComponent } from '@taon-dev/ui/browser';
17
- import { AsyncPipe, DatePipe } from '@angular/common';
18
- import { RouterOutlet, ActivatedRoute, Router, RouterLink } from '@angular/router';
16
+ import { TaonDatatableComponent, adminLazyRoute as adminLazyRoute$1, TaonConfirmDialogComponent, TaonAdminContentFooterService } from '@taon-dev/ui/browser';
17
+ import { AsyncPipe, DatePipe, NgTemplateOutlet } from '@angular/common';
18
+ import { RouterOutlet, ActivatedRoute, Router } from '@angular/router';
19
19
  import * as i1$1 from '@angular/forms';
20
20
  import { FormsModule } from '@angular/forms';
21
- import * as i2$1 from '@angular/material/dialog';
21
+ import * as i2 from '@angular/material/dialog';
22
22
  import { MatDialog, MAT_DIALOG_DATA, MatDialogRef, MatDialogModule } from '@angular/material/dialog';
23
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/input';
25
+ import * as i5 from '@angular/material/input';
26
26
  import { MatInputModule } from '@angular/material/input';
27
- import * as i5 from '@angular/material/select';
27
+ import * as i5$1 from '@angular/material/select';
28
28
  import { MatSelectModule } from '@angular/material/select';
29
- import * as i2 from '@angular/material/icon';
29
+ import * as i4 from '@angular/material/icon';
30
30
  import { MatIconModule } from '@angular/material/icon';
31
31
  import { DomSanitizer } from '@angular/platform-browser';
32
- import * as i2$2 from '@angular/material/checkbox';
32
+ import * as i2$1 from '@angular/material/checkbox';
33
33
  import { MatCheckboxModule } from '@angular/material/checkbox';
34
- import * as i9 from '@angular/material/chips';
34
+ import * as i10 from '@angular/material/chips';
35
35
  import { MatChipsModule } from '@angular/material/chips';
36
- import * as i6 from '@angular/material/menu';
36
+ import * as i3$2 from '@angular/material/card';
37
+ import { MatCardModule } from '@angular/material/card';
38
+ import * as i7 from '@angular/material/menu';
37
39
  import { MatMenuModule } from '@angular/material/menu';
38
- import * as i10 from '@angular/material/progress-bar';
40
+ import * as i11 from '@angular/material/progress-bar';
39
41
  import { MatProgressBarModule } from '@angular/material/progress-bar';
40
42
  import * as i3$1 from '@angular/material/radio';
41
43
  import { MatRadioModule } from '@angular/material/radio';
42
- import * as i7 from '@angular/material/tabs';
44
+ import * as i8 from '@angular/material/tabs';
43
45
  import { MatTabsModule } from '@angular/material/tabs';
44
- import * as i8 from 'ngx-editor';
46
+ import * as i9 from 'ngx-editor';
45
47
  import { Editor, toHTML, NgxEditorModule } from 'ngx-editor';
46
48
 
47
49
  var TaonCmsContentType;
@@ -233,7 +235,7 @@ const CURRENT_PACKAGE_TAON_VERSION = 'v21';
233
235
  /**
234
236
  * Autogenerated by current cli tool. Use *tnp release* to bump version.
235
237
  */
236
- const CURRENT_PACKAGE_VERSION = '21.0.22';
238
+ const CURRENT_PACKAGE_VERSION = '21.0.23';
237
239
  // THIS FILE IS GENERATED - DO NOT MODIFY
238
240
 
239
241
  //#region tnp-helpers cli template
@@ -336,7 +338,7 @@ TaonCmsCategoryEntity = __decorate([
336
338
  ], TaonCmsCategoryEntity);
337
339
 
338
340
  //#endregion
339
- const t$h = 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-browser-taon-cms-category.controller.ts.en-US.i18n.data-Btjc1PDP.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-category.controller.ts.pl-PL.i18n.data-Cb1FxZn5.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-category.controller.ts.de-DE.i18n.data-BaPIk_E4.mjs')).default }, "src/lib/taon-cms-category/taon-cms-category.repository.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-category.repository.ts.en-US.i18n.data-DAaZJ_9F.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-category.repository.ts.pl-PL.i18n.data-CVvSGHBy.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-category.repository.ts.de-DE.i18n.data-zcPs4FvI.mjs')).default }, "src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-taxonomy.validation.ts.en-US.i18n.data-D1eP5S95.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-taxonomy.validation.ts.pl-PL.i18n.data-Cc6hut5r.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-taxonomy.validation.ts.de-DE.i18n.data-7qzkXXtn.mjs')).default } });
341
+ const t$i = 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-browser-taon-cms-category.controller.ts.en-US.i18n.data-Btjc1PDP.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-category.controller.ts.pl-PL.i18n.data-Cb1FxZn5.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-category.controller.ts.de-DE.i18n.data-BaPIk_E4.mjs')).default }, "src/lib/taon-cms-category/taon-cms-category.repository.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-category.repository.ts.en-US.i18n.data-DAaZJ_9F.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-category.repository.ts.pl-PL.i18n.data-CVvSGHBy.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-category.repository.ts.de-DE.i18n.data-zcPs4FvI.mjs')).default }, "src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-taxonomy.validation.ts.en-US.i18n.data-D1eP5S95.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-taxonomy.validation.ts.pl-PL.i18n.data-Cc6hut5r.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-taxonomy.validation.ts.de-DE.i18n.data-7qzkXXtn.mjs')).default } });
340
342
  let TaonCmsCategoryRepository = class TaonCmsCategoryRepository extends TaonBaseRepository {
341
343
  constructor() {
342
344
  super(...arguments);
@@ -921,7 +923,7 @@ TaonCmsTagEntity = __decorate([
921
923
  ], TaonCmsTagEntity);
922
924
 
923
925
  //#endregion
924
- const t$g = 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-browser-taon-cms-tag.controller.ts.en-US.i18n.data-e3a_jlao.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-tag.controller.ts.pl-PL.i18n.data-Bk-hRZQ7.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-tag.controller.ts.de-DE.i18n.data-B5Vu0aJI.mjs')).default }, "src/lib/taon-cms-tag/taon-cms-tag.repository.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-tag.repository.ts.en-US.i18n.data-Dq7PnSmq.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-tag.repository.ts.pl-PL.i18n.data-YdrJUTur.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-tag.repository.ts.de-DE.i18n.data-DhAUtQSa.mjs')).default } });
926
+ const t$h = 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-browser-taon-cms-tag.controller.ts.en-US.i18n.data-e3a_jlao.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-tag.controller.ts.pl-PL.i18n.data-Bk-hRZQ7.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-tag.controller.ts.de-DE.i18n.data-B5Vu0aJI.mjs')).default }, "src/lib/taon-cms-tag/taon-cms-tag.repository.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-tag.repository.ts.en-US.i18n.data-Dq7PnSmq.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-tag.repository.ts.pl-PL.i18n.data-YdrJUTur.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-tag.repository.ts.de-DE.i18n.data-DhAUtQSa.mjs')).default } });
925
927
  let TaonCmsTagRepository = class TaonCmsTagRepository extends TaonBaseRepository {
926
928
  constructor() {
927
929
  super(...arguments);
@@ -3361,10 +3363,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
3361
3363
  type: Injectable
3362
3364
  }] });
3363
3365
 
3364
- const t$f = 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-browser-taon-cms-asset-preview.component.html.en-US.i18n.data-BSUcs0Id.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-asset-preview.component.html.pl-PL.i18n.data-CVom0MIN.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-asset-preview.component.html.de-DE.i18n.data-nUdiwbvf.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-asset-preview.component.ts.en-US.i18n.data-D9BCToFT.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-asset-preview.component.ts.pl-PL.i18n.data-DMHcm3IV.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-asset-preview.component.ts.de-DE.i18n.data-DbckMSJu.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.html.en-US.i18n.data-BdtTQ_Jl.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.html.pl-PL.i18n.data-9eRms-wf.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.html.de-DE.i18n.data-Csyad8DN.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.ts.en-US.i18n.data-MGwWRhfj.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data-zdZ5O1uH.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.ts.de-DE.i18n.data-BgFFReoY.mjs')).default } });
3366
+ const t$g = 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-browser-taon-cms-asset-preview.component.html.en-US.i18n.data-BSUcs0Id.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-asset-preview.component.html.pl-PL.i18n.data-CVom0MIN.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-asset-preview.component.html.de-DE.i18n.data-nUdiwbvf.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-asset-preview.component.ts.en-US.i18n.data-D9BCToFT.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-asset-preview.component.ts.pl-PL.i18n.data-DMHcm3IV.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-asset-preview.component.ts.de-DE.i18n.data-DbckMSJu.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.html.en-US.i18n.data-BdtTQ_Jl.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.html.pl-PL.i18n.data-9eRms-wf.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.html.de-DE.i18n.data-Csyad8DN.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.ts.en-US.i18n.data-MGwWRhfj.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data-zdZ5O1uH.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.ts.de-DE.i18n.data-BgFFReoY.mjs')).default } });
3365
3367
  class TaonCmsAssetPreviewComponent {
3366
3368
  constructor() {
3367
- this.t = t$f.for(this);
3369
+ this.t = t$g.for(this);
3368
3370
  this.api = inject(TaonCmsContentApiService);
3369
3371
  this.destroyRef = inject(DestroyRef);
3370
3372
  this.url = signal('', ...(ngDevMode ? [{ debugName: "url" }] : []));
@@ -3426,10 +3428,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
3426
3428
  args: [{ required: true }]
3427
3429
  }] } });
3428
3430
 
3429
- const t$e = 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-browser-taon-cms-asset-preview.component.html.en-US.i18n.data-BSUcs0Id.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-asset-preview.component.html.pl-PL.i18n.data-CVom0MIN.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-asset-preview.component.html.de-DE.i18n.data-nUdiwbvf.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-asset-preview.component.ts.en-US.i18n.data-D9BCToFT.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-asset-preview.component.ts.pl-PL.i18n.data-DMHcm3IV.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-asset-preview.component.ts.de-DE.i18n.data-DbckMSJu.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.html.en-US.i18n.data-BdtTQ_Jl.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.html.pl-PL.i18n.data-9eRms-wf.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.html.de-DE.i18n.data-Csyad8DN.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.ts.en-US.i18n.data-MGwWRhfj.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data-zdZ5O1uH.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.ts.de-DE.i18n.data-BgFFReoY.mjs')).default } });
3431
+ const t$f = 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-browser-taon-cms-asset-preview.component.html.en-US.i18n.data-BSUcs0Id.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-asset-preview.component.html.pl-PL.i18n.data-CVom0MIN.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-asset-preview.component.html.de-DE.i18n.data-nUdiwbvf.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-asset-preview.component.ts.en-US.i18n.data-D9BCToFT.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-asset-preview.component.ts.pl-PL.i18n.data-DMHcm3IV.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-asset-preview.component.ts.de-DE.i18n.data-DbckMSJu.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.html.en-US.i18n.data-BdtTQ_Jl.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.html.pl-PL.i18n.data-9eRms-wf.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.html.de-DE.i18n.data-Csyad8DN.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.ts.en-US.i18n.data-MGwWRhfj.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data-zdZ5O1uH.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-assets-backoffice.component.ts.de-DE.i18n.data-BgFFReoY.mjs')).default } });
3430
3432
  class TaonCmsAssetsBackofficeComponent {
3431
3433
  constructor() {
3432
- this.t = t$e.for(this);
3434
+ this.t = t$f.for(this);
3433
3435
  this.api = inject(TaonCmsContentApiService);
3434
3436
  this.destroyRef = inject(DestroyRef);
3435
3437
  this.assets = signal([], ...(ngDevMode ? [{ debugName: "assets" }] : []));
@@ -3469,7 +3471,7 @@ class TaonCmsAssetsBackofficeComponent {
3469
3471
  });
3470
3472
  }
3471
3473
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsAssetsBackofficeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3472
- 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 }); }
3474
+ 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", "filtersTemplate", "storeTablePagination", "storeTableFilters", "tableId", "callQueryMethod", "data", "showPaginator"], outputs: ["expansionChange", "addingItem"] }, { kind: "component", type: TaonCmsAssetPreviewComponent, selector: "taon-cms-asset-preview", inputs: ["asset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3473
3475
  }
3474
3476
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsAssetsBackofficeComponent, decorators: [{
3475
3477
  type: Component,
@@ -3499,10 +3501,10 @@ var taonCmsAssetsBackoffice_routes = /*#__PURE__*/Object.freeze({
3499
3501
 
3500
3502
  //#region imports
3501
3503
  //#endregion
3502
- const t$d = 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-browser-taon-cms-backoffice.component.html.en-US.i18n.data-DthWh8nt.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-backoffice.component.html.pl-PL.i18n.data-iT7Urr8M.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-backoffice.component.html.de-DE.i18n.data-B5x4stX6.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-backoffice.component.ts.en-US.i18n.data-CoKyFRC0.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-backoffice.component.ts.pl-PL.i18n.data-Bly4iRV_.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-backoffice.component.ts.de-DE.i18n.data-D-UQjC58.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-backoffice.routes.ts.en-US.i18n.data-seNJiHRQ.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-backoffice.routes.ts.pl-PL.i18n.data-C-K2Y0GF.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-backoffice.routes.ts.de-DE.i18n.data-Dt6NX2ov.mjs')).default } });
3504
+ const t$e = 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-browser-taon-cms-backoffice.component.html.en-US.i18n.data-DthWh8nt.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-backoffice.component.html.pl-PL.i18n.data-iT7Urr8M.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-backoffice.component.html.de-DE.i18n.data-B5x4stX6.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-backoffice.component.ts.en-US.i18n.data-CoKyFRC0.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-backoffice.component.ts.pl-PL.i18n.data-Bly4iRV_.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-backoffice.component.ts.de-DE.i18n.data-D-UQjC58.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-backoffice.routes.ts.en-US.i18n.data-seNJiHRQ.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-backoffice.routes.ts.pl-PL.i18n.data-C-K2Y0GF.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-backoffice.routes.ts.de-DE.i18n.data-Dt6NX2ov.mjs')).default } });
3503
3505
  class TaonCmsBackofficeComponent {
3504
3506
  constructor() {
3505
- this.t = t$d.for(this);
3507
+ this.t = t$e.for(this);
3506
3508
  this.componentLoaded = false;
3507
3509
  }
3508
3510
  onRouteActivate(component) {
@@ -3526,7 +3528,7 @@ var taonCmsBackoffice_component = /*#__PURE__*/Object.freeze({
3526
3528
 
3527
3529
  //#endregion
3528
3530
  const adminLazyRoute = (adminLazyRoute$1);
3529
- const t$c = 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-browser-taon-cms-backoffice.component.html.en-US.i18n.data-DthWh8nt.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-backoffice.component.html.pl-PL.i18n.data-iT7Urr8M.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-backoffice.component.html.de-DE.i18n.data-B5x4stX6.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-backoffice.component.ts.en-US.i18n.data-CoKyFRC0.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-backoffice.component.ts.pl-PL.i18n.data-Bly4iRV_.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-backoffice.component.ts.de-DE.i18n.data-D-UQjC58.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-backoffice.routes.ts.en-US.i18n.data-seNJiHRQ.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-backoffice.routes.ts.pl-PL.i18n.data-C-K2Y0GF.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-backoffice.routes.ts.de-DE.i18n.data-Dt6NX2ov.mjs')).default } });
3531
+ const t$d = 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-browser-taon-cms-backoffice.component.html.en-US.i18n.data-DthWh8nt.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-backoffice.component.html.pl-PL.i18n.data-iT7Urr8M.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-backoffice.component.html.de-DE.i18n.data-B5x4stX6.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-backoffice.component.ts.en-US.i18n.data-CoKyFRC0.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-backoffice.component.ts.pl-PL.i18n.data-Bly4iRV_.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-backoffice.component.ts.de-DE.i18n.data-D-UQjC58.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-backoffice.routes.ts.en-US.i18n.data-seNJiHRQ.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-backoffice.routes.ts.pl-PL.i18n.data-C-K2Y0GF.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-backoffice.routes.ts.de-DE.i18n.data-Dt6NX2ov.mjs')).default } });
3530
3532
  const TaonCmsBackofficeRoutes = [
3531
3533
  {
3532
3534
  path: '',
@@ -3538,7 +3540,7 @@ const TaonCmsBackofficeRoutes = [
3538
3540
  return !context?.hasAccess.toManageCms;
3539
3541
  },
3540
3542
  path: 'posts',
3541
- menuItem: t$c.signal.gettext('Posts'),
3543
+ menuItem: t$d.signal.gettext('Posts'),
3542
3544
  expandable: true,
3543
3545
  icon: 'edit',
3544
3546
  loader: () => Promise.resolve().then(function () { return index$1; }).then(m => m.TaonCmsPostsBackofficeRoutes),
@@ -3549,7 +3551,7 @@ const TaonCmsBackofficeRoutes = [
3549
3551
  return !context?.hasAccess.toManageCms;
3550
3552
  },
3551
3553
  path: 'courses',
3552
- menuItem: t$c.signal.gettext('Courses'),
3554
+ menuItem: t$d.signal.gettext('Courses'),
3553
3555
  expandable: false,
3554
3556
  icon: 'school',
3555
3557
  loader: () => Promise.resolve().then(function () { return index$1; }).then(m => m.TaonCmsCourseBackofficeRoutes),
@@ -3557,7 +3559,7 @@ const TaonCmsBackofficeRoutes = [
3557
3559
  adminLazyRoute({
3558
3560
  isDisabled: ({ context }) => !context?.hasAccess.toManageCms,
3559
3561
  path: 'assets',
3560
- menuItem: t$c.signal.gettext('Assets'),
3562
+ menuItem: t$d.signal.gettext('Assets'),
3561
3563
  expandable: false,
3562
3564
  icon: 'perm_media',
3563
3565
  loader: () => Promise.resolve().then(function () { return taonCmsAssetsBackoffice_routes; }).then(m => m.TaonCmsAssetsBackofficeRoutes),
@@ -3565,7 +3567,7 @@ const TaonCmsBackofficeRoutes = [
3565
3567
  adminLazyRoute({
3566
3568
  isDisabled: ({ context }) => !context?.hasAccess.toManageCms,
3567
3569
  path: 'categories',
3568
- menuItem: t$c.signal.gettext('Categories'),
3570
+ menuItem: t$d.signal.gettext('Categories'),
3569
3571
  expandable: false,
3570
3572
  icon: 'folder',
3571
3573
  loader: () => Promise.resolve().then(function () { return taonCmsTaxonomyBackoffice_routes; }).then(m => m.TaonCmsCategoriesBackofficeRoutes),
@@ -3573,7 +3575,7 @@ const TaonCmsBackofficeRoutes = [
3573
3575
  adminLazyRoute({
3574
3576
  isDisabled: ({ context }) => !context?.hasAccess.toManageCms,
3575
3577
  path: 'tags',
3576
- menuItem: t$c.signal.gettext('Tags'),
3578
+ menuItem: t$d.signal.gettext('Tags'),
3577
3579
  expandable: false,
3578
3580
  icon: 'label',
3579
3581
  loader: () => Promise.resolve().then(function () { return taonCmsTaxonomyBackoffice_routes; }).then(m => m.TaonCmsTagsBackofficeRoutes),
@@ -3643,7 +3645,7 @@ var TaonCmsCategoryUtils;
3643
3645
  TaonCmsCategoryUtils.isActive = isActive;
3644
3646
  })(TaonCmsCategoryUtils || (TaonCmsCategoryUtils = {}));
3645
3647
 
3646
- const t$b = 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-browser-taon-cms-category.controller.ts.en-US.i18n.data-Btjc1PDP.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-category.controller.ts.pl-PL.i18n.data-Cb1FxZn5.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-category.controller.ts.de-DE.i18n.data-BaPIk_E4.mjs')).default }, "src/lib/taon-cms-category/taon-cms-category.repository.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-category.repository.ts.en-US.i18n.data-DAaZJ_9F.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-category.repository.ts.pl-PL.i18n.data-CVvSGHBy.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-category.repository.ts.de-DE.i18n.data-zcPs4FvI.mjs')).default }, "src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-taxonomy.validation.ts.en-US.i18n.data-D1eP5S95.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-taxonomy.validation.ts.pl-PL.i18n.data-Cc6hut5r.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-taxonomy.validation.ts.de-DE.i18n.data-7qzkXXtn.mjs')).default } });
3648
+ const t$c = 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-browser-taon-cms-category.controller.ts.en-US.i18n.data-Btjc1PDP.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-category.controller.ts.pl-PL.i18n.data-Cb1FxZn5.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-category.controller.ts.de-DE.i18n.data-BaPIk_E4.mjs')).default }, "src/lib/taon-cms-category/taon-cms-category.repository.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-category.repository.ts.en-US.i18n.data-DAaZJ_9F.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-category.repository.ts.pl-PL.i18n.data-CVvSGHBy.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-category.repository.ts.de-DE.i18n.data-zcPs4FvI.mjs')).default }, "src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-taxonomy.validation.ts.en-US.i18n.data-D1eP5S95.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-taxonomy.validation.ts.pl-PL.i18n.data-Cc6hut5r.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-taxonomy.validation.ts.de-DE.i18n.data-7qzkXXtn.mjs')).default } });
3647
3649
  function validateTaxonomy(input) {
3648
3650
  if (!input ||
3649
3651
  typeof input.name !== 'string' ||
@@ -3651,7 +3653,7 @@ function validateTaxonomy(input) {
3651
3653
  typeof input.slug !== 'string' ||
3652
3654
  !input.slug.trim() ||
3653
3655
  (input.description !== null && typeof input.description !== 'string')) {
3654
- contentError(t$b.gettext('Name, slug, and a valid description are required.'));
3656
+ contentError(t$c.gettext('Name, slug, and a valid description are required.'));
3655
3657
  }
3656
3658
  }
3657
3659
  function validateCategoryHierarchy(id, parentId, categories) {
@@ -3662,12 +3664,12 @@ function validateCategoryHierarchy(id, parentId, categories) {
3662
3664
  let current = parentId;
3663
3665
  while (current !== null) {
3664
3666
  if (visited.has(current)) {
3665
- contentError(t$b.gettext('A category cannot be its own ancestor.'));
3667
+ contentError(t$c.gettext('A category cannot be its own ancestor.'));
3666
3668
  }
3667
3669
  visited.add(current);
3668
3670
  const parent = categories.find(category => category.id === current);
3669
3671
  if (!parent) {
3670
- contentError(t$b.gettext('The parent category does not exist.'));
3672
+ contentError(t$c.gettext('The parent category does not exist.'));
3671
3673
  }
3672
3674
  current = parent.parentCategoryId;
3673
3675
  }
@@ -3982,10 +3984,10 @@ var TaonCmsTagUtils;
3982
3984
  TaonCmsTagUtils.isActive = isActive;
3983
3985
  })(TaonCmsTagUtils || (TaonCmsTagUtils = {}));
3984
3986
 
3985
- const t$a = 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-browser-taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data-Ccmf9_pZ.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data-B849p720.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data-DX6YHkgg.mjs')).default }, "src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data-BS97U_dV.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data-DkguMZ1c.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data-BQYY3Beh.mjs')).default } });
3987
+ const t$b = 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-browser-taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data-Ccmf9_pZ.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data-B849p720.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data-DX6YHkgg.mjs')).default }, "src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data-BS97U_dV.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data-DkguMZ1c.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data-BQYY3Beh.mjs')).default }, "src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-quick-create-dialog.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data-D3q4LMm6.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data-DWw-l8cK.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data-C-9JBJz0.mjs')).default } });
3986
3988
  class TaonCmsTaxonomyBackofficeComponent {
3987
3989
  constructor() {
3988
- this.t = t$a.for(this);
3990
+ this.t = t$b.for(this);
3989
3991
  this.isCategory = inject(ActivatedRoute).snapshot.data['taxonomy'] === 'category';
3990
3992
  this.categories = inject(TaonCmsCategoryApiService);
3991
3993
  this.tags = inject(TaonCmsTagApiService);
@@ -4169,7 +4171,7 @@ class TaonCmsTaxonomyBackofficeComponent {
4169
4171
  };
4170
4172
  }
4171
4173
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsTaxonomyBackofficeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4172
- 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 }); }
4174
+ 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: i5.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$1.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$1.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", "filtersTemplate", "storeTablePagination", "storeTableFilters", "tableId", "callQueryMethod", "data", "showPaginator"], outputs: ["expansionChange", "addingItem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4173
4175
  }
4174
4176
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsTaxonomyBackofficeComponent, decorators: [{
4175
4177
  type: Component,
@@ -4209,7 +4211,159 @@ var taonCmsTaxonomyBackoffice_routes = /*#__PURE__*/Object.freeze({
4209
4211
  TaonCmsTagsBackofficeRoutes: TaonCmsTagsBackofficeRoutes
4210
4212
  });
4211
4213
 
4212
- const t$9 = Translation.for('src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive.ts', { "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-BD4-1New.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-DdK3CYLj.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-Cwi7pcvq.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.html.en-US.i18n.data-D1XI6u8V.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-DaE0bfxU.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-CZ0mZdO-.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-B8PjJ2_u.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-D5dkM1Rg.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-CTYkGigp.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-BMHc1eXs.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-BedZOCRt.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-DqM60DP9.mjs')).default } });
4214
+ const t$a = Translation.for('src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-quick-create-dialog.component.ts', { "src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data-Ccmf9_pZ.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data-B849p720.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data-DX6YHkgg.mjs')).default }, "src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data-BS97U_dV.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data-DkguMZ1c.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data-BQYY3Beh.mjs')).default }, "src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-quick-create-dialog.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data-D3q4LMm6.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data-DWw-l8cK.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data-C-9JBJz0.mjs')).default } });
4215
+ class TaonCmsTaxonomyQuickCreateDialogComponent {
4216
+ constructor() {
4217
+ this.t = t$a.for(this);
4218
+ this.data = inject(MAT_DIALOG_DATA);
4219
+ this.dialogRef = inject(MatDialogRef);
4220
+ this.name = '';
4221
+ this.slug = '';
4222
+ this.description = '';
4223
+ this.slugManuallySet = false;
4224
+ }
4225
+ updateName(value) {
4226
+ this.name = value;
4227
+ if (!this.slugManuallySet) {
4228
+ this.slug = _.kebabCase(value);
4229
+ }
4230
+ }
4231
+ create() {
4232
+ if (!this.name.trim() || !this.slug.trim()) {
4233
+ return;
4234
+ }
4235
+ this.dialogRef.close({
4236
+ name: this.name.trim(),
4237
+ slug: this.slug.trim(),
4238
+ description: this.description.trim() || null,
4239
+ parentCategoryId: null,
4240
+ sortOrder: 0,
4241
+ });
4242
+ }
4243
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsTaxonomyQuickCreateDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4244
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.9", type: TaonCmsTaxonomyQuickCreateDialogComponent, isStandalone: true, selector: "taon-cms-taxonomy-quick-create-dialog", ngImport: i0, template: `
4245
+ <h2 mat-dialog-title>
4246
+ {{
4247
+ data.taxonomy === 'category'
4248
+ ? t.gettext('Add category')
4249
+ : t.gettext('Add tag')
4250
+ }}
4251
+ </h2>
4252
+ <form (ngSubmit)="create()">
4253
+ <mat-dialog-content>
4254
+ <mat-form-field appearance="outline">
4255
+ <mat-label>{{ t.gettext('Name') }}</mat-label>
4256
+ <input
4257
+ matInput
4258
+ name="name"
4259
+ required
4260
+ [ngModel]="name"
4261
+ (ngModelChange)="updateName($event)" />
4262
+ </mat-form-field>
4263
+ <mat-form-field appearance="outline">
4264
+ <mat-label>{{ t.gettext('Slug') }}</mat-label>
4265
+ <input
4266
+ matInput
4267
+ name="slug"
4268
+ required
4269
+ [(ngModel)]="slug"
4270
+ (input)="slugManuallySet = true" />
4271
+ </mat-form-field>
4272
+ <mat-form-field appearance="outline">
4273
+ <mat-label>{{ t.gettext('Description') }}</mat-label>
4274
+ <textarea
4275
+ matInput
4276
+ name="description"
4277
+ [(ngModel)]="description"></textarea>
4278
+ </mat-form-field>
4279
+ </mat-dialog-content>
4280
+ <mat-dialog-actions align="end">
4281
+ <button
4282
+ mat-button
4283
+ type="button"
4284
+ (click)="dialogRef.close()">
4285
+ {{ t.gettext('Cancel') }}
4286
+ </button>
4287
+ <button
4288
+ mat-flat-button
4289
+ color="primary"
4290
+ type="submit"
4291
+ [disabled]="!name.trim() || !slug.trim()">
4292
+ {{ t.gettext('Create') }}
4293
+ </button>
4294
+ </mat-dialog-actions>
4295
+ </form>
4296
+ `, isInline: true, 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.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: 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: 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: i5.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4297
+ }
4298
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsTaxonomyQuickCreateDialogComponent, decorators: [{
4299
+ type: Component,
4300
+ args: [{
4301
+ selector: 'taon-cms-taxonomy-quick-create-dialog',
4302
+ changeDetection: ChangeDetectionStrategy.OnPush,
4303
+ imports: [
4304
+ FormsModule,
4305
+ MatButtonModule,
4306
+ MatDialogModule,
4307
+ MatFormFieldModule,
4308
+ MatInputModule,
4309
+ ],
4310
+ template: `
4311
+ <h2 mat-dialog-title>
4312
+ {{
4313
+ data.taxonomy === 'category'
4314
+ ? t.gettext('Add category')
4315
+ : t.gettext('Add tag')
4316
+ }}
4317
+ </h2>
4318
+ <form (ngSubmit)="create()">
4319
+ <mat-dialog-content>
4320
+ <mat-form-field appearance="outline">
4321
+ <mat-label>{{ t.gettext('Name') }}</mat-label>
4322
+ <input
4323
+ matInput
4324
+ name="name"
4325
+ required
4326
+ [ngModel]="name"
4327
+ (ngModelChange)="updateName($event)" />
4328
+ </mat-form-field>
4329
+ <mat-form-field appearance="outline">
4330
+ <mat-label>{{ t.gettext('Slug') }}</mat-label>
4331
+ <input
4332
+ matInput
4333
+ name="slug"
4334
+ required
4335
+ [(ngModel)]="slug"
4336
+ (input)="slugManuallySet = true" />
4337
+ </mat-form-field>
4338
+ <mat-form-field appearance="outline">
4339
+ <mat-label>{{ t.gettext('Description') }}</mat-label>
4340
+ <textarea
4341
+ matInput
4342
+ name="description"
4343
+ [(ngModel)]="description"></textarea>
4344
+ </mat-form-field>
4345
+ </mat-dialog-content>
4346
+ <mat-dialog-actions align="end">
4347
+ <button
4348
+ mat-button
4349
+ type="button"
4350
+ (click)="dialogRef.close()">
4351
+ {{ t.gettext('Cancel') }}
4352
+ </button>
4353
+ <button
4354
+ mat-flat-button
4355
+ color="primary"
4356
+ type="submit"
4357
+ [disabled]="!name.trim() || !slug.trim()">
4358
+ {{ t.gettext('Create') }}
4359
+ </button>
4360
+ </mat-dialog-actions>
4361
+ </form>
4362
+ `,
4363
+ }]
4364
+ }] });
4365
+
4366
+ const t$9 = Translation.for('src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive.ts', { "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-post-table-actions.directive.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-BVFE-lu5.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-CEyIUnLc.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-BJyXHMqp.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.html.en-US.i18n.data-Bz5Qa6eJ.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-BEtQS-0C.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-BDH-9r3S.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-BKDX2iwM.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-D1D80yR3.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-aMqPM6ev.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-BMHc1eXs.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-BedZOCRt.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-DqM60DP9.mjs')).default } });
4213
4367
  class TaonCmsPostTableActions {
4214
4368
  constructor() {
4215
4369
  this.actionsTranslation = t$9.for(this);
@@ -4219,6 +4373,7 @@ class TaonCmsPostTableActions {
4219
4373
  this.error = signal('', ...(ngDevMode ? [{ debugName: "error" }] : []));
4220
4374
  this.destroyRef = inject(DestroyRef);
4221
4375
  this.postPath = [];
4376
+ this.backContext = 'posts';
4222
4377
  this.dialog = inject(MatDialog);
4223
4378
  this.route = inject(ActivatedRoute);
4224
4379
  this.router = inject(Router);
@@ -4262,7 +4417,18 @@ class TaonCmsPostTableActions {
4262
4417
  this.error.set(this.actionsTranslation.gettext('The Post details route is unavailable.'));
4263
4418
  return;
4264
4419
  }
4265
- void this.router.navigate([...this.postPath, id], { relativeTo: postsRoute });
4420
+ void this.router
4421
+ .navigate([...this.postPath, id], {
4422
+ relativeTo: postsRoute,
4423
+ queryParams: this.backContext === 'courses'
4424
+ ? { postOrigin: 'courses' }
4425
+ : undefined,
4426
+ queryParamsHandling: 'preserve',
4427
+ })
4428
+ .catch(error => {
4429
+ console.error('[taon-cms-posts-backoffice] Unable to open post', error);
4430
+ this.error.set(this.actionsTranslation.gettext('The Post details route is unavailable.'));
4431
+ });
4266
4432
  }
4267
4433
  duplicate(post) {
4268
4434
  if (this.duplicating()) {
@@ -4321,7 +4487,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
4321
4487
  type: Directive
4322
4488
  }] });
4323
4489
 
4324
- const t$8 = Translation.for('src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts', { "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.html.en-US.i18n.data-DPlA1Ocj.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-CX2j4P41.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.html.de-DE.i18n.data-DcFKcLJv.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.ts.en-US.i18n.data-DyPf1BMm.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-DprS6bm1.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-B4GuiCs3.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-course-contents.component.html.en-US.i18n.data-DkNTtW3Q.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-contents.component.html.pl-PL.i18n.data-8wKW8AR1.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-contents.component.html.de-DE.i18n.data-CJlZufMg.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-course-contents.component.ts.en-US.i18n.data-N-p1oNgV.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-contents.component.ts.pl-PL.i18n.data-Be1XJqO4.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-contents.component.ts.de-DE.i18n.data-Gt0H19BQ.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-course-cover.component.ts.en-US.i18n.data-CtXymexU.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-cover.component.ts.pl-PL.i18n.data-U89qKqAj.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-cover.component.ts.de-DE.i18n.data-DDN8R3M-.mjs')).default } });
4490
+ const t$8 = Translation.for('src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts', { "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.html.en-US.i18n.data-Dff_IALd.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-_LndUfcD.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.html.de-DE.i18n.data-CLwoKssp.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.ts.en-US.i18n.data-DvANkYNl.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-NqAcrhjt.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-DBAY8-77.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-course-contents.component.html.en-US.i18n.data-Cf_yEr_6.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-contents.component.html.pl-PL.i18n.data-DG2zoUK9.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-contents.component.html.de-DE.i18n.data-i1jNC8Bi.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-course-contents.component.ts.en-US.i18n.data-C8J0c1Zz.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-contents.component.ts.pl-PL.i18n.data-DttC-CgL.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-contents.component.ts.de-DE.i18n.data-CUm1WaRd.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-course-cover.component.ts.en-US.i18n.data-CtXymexU.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-cover.component.ts.pl-PL.i18n.data-U89qKqAj.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-cover.component.ts.de-DE.i18n.data-DDN8R3M-.mjs')).default } });
4325
4491
  class TaonCmsCourseContentsComponent {
4326
4492
  constructor() {
4327
4493
  this.t = t$8.for(this);
@@ -4330,6 +4496,7 @@ class TaonCmsCourseContentsComponent {
4330
4496
  this.posts = signal([], ...(ngDevMode ? [{ debugName: "posts" }] : []));
4331
4497
  this.loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
4332
4498
  this.error = signal('', ...(ngDevMode ? [{ debugName: "error" }] : []));
4499
+ this.copyFeedback = signal('', ...(ngDevMode ? [{ debugName: "copyFeedback" }] : []));
4333
4500
  this.columns = [];
4334
4501
  }
4335
4502
  ngOnInit() {
@@ -4357,12 +4524,26 @@ class TaonCmsCourseContentsComponent {
4357
4524
  },
4358
4525
  });
4359
4526
  }
4527
+ async copyCourseSlug() {
4528
+ this.copyFeedback.set('');
4529
+ try {
4530
+ if (!navigator.clipboard) {
4531
+ throw new Error('Clipboard access is unavailable.');
4532
+ }
4533
+ await navigator.clipboard.writeText(this.course.slug);
4534
+ this.copyFeedback.set(this.t.gettext('Course slug copied.'));
4535
+ }
4536
+ catch (error) {
4537
+ console.error('[taon-cms-course-contents] Unable to copy course slug', error);
4538
+ this.copyFeedback.set(this.t.gettext('The course slug could not be copied.'));
4539
+ }
4540
+ }
4360
4541
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsCourseContentsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4361
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsCourseContentsComponent, isStandalone: true, selector: "taon-cms-course-contents", inputs: { course: "course", actionsColumn: "actionsColumn" }, ngImport: i0, template: "<section [attr.aria-label]=\"t.gettext('Course contents')\">\n <h2>{{ t.gettext('Course contents') }}: {{ course.title }}</h2>\n @if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading course contents...') }}</p>\n }\n @if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n <button mat-button type=\"button\" (click)=\"reload()\">\n {{ t.gettext('Retry') }}\n </button>\n }\n <taon-datatable\n [pageSize]=\"posts().length || 1\"\n [data]=\"posts()\"\n [columns]=\"columns\"\n [showPaginator]=\"false\"\n [hideSearch]=\"true\"\n [hideAddButton]=\"true\">\n </taon-datatable>\n</section>\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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4542
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsCourseContentsComponent, isStandalone: true, selector: "taon-cms-course-contents", inputs: { course: "course", actionsColumn: "actionsColumn" }, ngImport: i0, template: "<section [attr.aria-label]=\"t.gettext('Course contents')\">\n <h2>{{ t.gettext('Course contents') }}: {{ course.title }}</h2>\n <button\n mat-button\n type=\"button\"\n (click)=\"copyCourseSlug()\">\n {{ t.gettext('Copy slug: [[ slug ]]', { slug: course.slug }) }}\n </button>\n @if (copyFeedback()) {\n <p role=\"status\">{{ copyFeedback() }}</p>\n }\n @if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading course contents...') }}</p>\n }\n @if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n <button mat-button type=\"button\" (click)=\"reload()\">\n {{ t.gettext('Retry') }}\n </button>\n }\n <taon-datatable\n [pageSize]=\"posts().length || 1\"\n [data]=\"posts()\"\n [columns]=\"columns\"\n [showPaginator]=\"false\"\n [hideSearch]=\"true\"\n [hideAddButton]=\"true\">\n </taon-datatable>\n</section>\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", "filtersTemplate", "storeTablePagination", "storeTableFilters", "tableId", "callQueryMethod", "data", "showPaginator"], outputs: ["expansionChange", "addingItem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4362
4543
  }
4363
4544
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsCourseContentsComponent, decorators: [{
4364
4545
  type: Component,
4365
- args: [{ selector: 'taon-cms-course-contents', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatButtonModule, TaonDatatableComponent], template: "<section [attr.aria-label]=\"t.gettext('Course contents')\">\n <h2>{{ t.gettext('Course contents') }}: {{ course.title }}</h2>\n @if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading course contents...') }}</p>\n }\n @if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n <button mat-button type=\"button\" (click)=\"reload()\">\n {{ t.gettext('Retry') }}\n </button>\n }\n <taon-datatable\n [pageSize]=\"posts().length || 1\"\n [data]=\"posts()\"\n [columns]=\"columns\"\n [showPaginator]=\"false\"\n [hideSearch]=\"true\"\n [hideAddButton]=\"true\">\n </taon-datatable>\n</section>\n" }]
4546
+ args: [{ selector: 'taon-cms-course-contents', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatButtonModule, TaonDatatableComponent], template: "<section [attr.aria-label]=\"t.gettext('Course contents')\">\n <h2>{{ t.gettext('Course contents') }}: {{ course.title }}</h2>\n <button\n mat-button\n type=\"button\"\n (click)=\"copyCourseSlug()\">\n {{ t.gettext('Copy slug: [[ slug ]]', { slug: course.slug }) }}\n </button>\n @if (copyFeedback()) {\n <p role=\"status\">{{ copyFeedback() }}</p>\n }\n @if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading course contents...') }}</p>\n }\n @if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n <button mat-button type=\"button\" (click)=\"reload()\">\n {{ t.gettext('Retry') }}\n </button>\n }\n <taon-datatable\n [pageSize]=\"posts().length || 1\"\n [data]=\"posts()\"\n [columns]=\"columns\"\n [showPaginator]=\"false\"\n [hideSearch]=\"true\"\n [hideAddButton]=\"true\">\n </taon-datatable>\n</section>\n" }]
4366
4547
  }], propDecorators: { course: [{
4367
4548
  type: Input,
4368
4549
  args: [{ required: true }]
@@ -4508,7 +4689,7 @@ async function generateVideoThumbnail(file) {
4508
4689
  }
4509
4690
  }
4510
4691
 
4511
- const t$7 = Translation.for('src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts', { "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.html.en-US.i18n.data-DPlA1Ocj.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-CX2j4P41.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.html.de-DE.i18n.data-DcFKcLJv.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.ts.en-US.i18n.data-DyPf1BMm.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-DprS6bm1.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-B4GuiCs3.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-course-contents.component.html.en-US.i18n.data-DkNTtW3Q.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-contents.component.html.pl-PL.i18n.data-8wKW8AR1.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-contents.component.html.de-DE.i18n.data-CJlZufMg.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-course-contents.component.ts.en-US.i18n.data-N-p1oNgV.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-contents.component.ts.pl-PL.i18n.data-Be1XJqO4.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-contents.component.ts.de-DE.i18n.data-Gt0H19BQ.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-course-cover.component.ts.en-US.i18n.data-CtXymexU.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-cover.component.ts.pl-PL.i18n.data-U89qKqAj.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-cover.component.ts.de-DE.i18n.data-DDN8R3M-.mjs')).default } });
4692
+ const t$7 = Translation.for('src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts', { "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.html.en-US.i18n.data-Dff_IALd.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-_LndUfcD.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.html.de-DE.i18n.data-CLwoKssp.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.ts.en-US.i18n.data-DvANkYNl.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-NqAcrhjt.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-DBAY8-77.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-course-contents.component.html.en-US.i18n.data-Cf_yEr_6.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-contents.component.html.pl-PL.i18n.data-DG2zoUK9.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-contents.component.html.de-DE.i18n.data-i1jNC8Bi.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-course-contents.component.ts.en-US.i18n.data-C8J0c1Zz.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-contents.component.ts.pl-PL.i18n.data-DttC-CgL.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-contents.component.ts.de-DE.i18n.data-CUm1WaRd.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-course-cover.component.ts.en-US.i18n.data-CtXymexU.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-cover.component.ts.pl-PL.i18n.data-U89qKqAj.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-cover.component.ts.de-DE.i18n.data-DDN8R3M-.mjs')).default } });
4512
4693
  class TaonCmsCourseCoverComponent {
4513
4694
  constructor() {
4514
4695
  this.t = t$7.for(this);
@@ -4565,12 +4746,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
4565
4746
  args: [{ required: true }]
4566
4747
  }] } });
4567
4748
 
4568
- const t$6 = Translation.for('src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts', { "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.html.en-US.i18n.data-DPlA1Ocj.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-CX2j4P41.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.html.de-DE.i18n.data-DcFKcLJv.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.ts.en-US.i18n.data-DyPf1BMm.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-DprS6bm1.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-B4GuiCs3.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-course-contents.component.html.en-US.i18n.data-DkNTtW3Q.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-contents.component.html.pl-PL.i18n.data-8wKW8AR1.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-contents.component.html.de-DE.i18n.data-CJlZufMg.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-course-contents.component.ts.en-US.i18n.data-N-p1oNgV.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-contents.component.ts.pl-PL.i18n.data-Be1XJqO4.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-contents.component.ts.de-DE.i18n.data-Gt0H19BQ.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-course-cover.component.ts.en-US.i18n.data-CtXymexU.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-cover.component.ts.pl-PL.i18n.data-U89qKqAj.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-cover.component.ts.de-DE.i18n.data-DDN8R3M-.mjs')).default } });
4749
+ const t$6 = Translation.for('src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts', { "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.html.en-US.i18n.data-Dff_IALd.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-_LndUfcD.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.html.de-DE.i18n.data-CLwoKssp.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.ts.en-US.i18n.data-DvANkYNl.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-NqAcrhjt.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-DBAY8-77.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-course-contents.component.html.en-US.i18n.data-Cf_yEr_6.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-contents.component.html.pl-PL.i18n.data-DG2zoUK9.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-contents.component.html.de-DE.i18n.data-i1jNC8Bi.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-course-contents.component.ts.en-US.i18n.data-C8J0c1Zz.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-contents.component.ts.pl-PL.i18n.data-DttC-CgL.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-contents.component.ts.de-DE.i18n.data-CUm1WaRd.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-course-cover.component.ts.en-US.i18n.data-CtXymexU.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-course-cover.component.ts.pl-PL.i18n.data-U89qKqAj.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-course-cover.component.ts.de-DE.i18n.data-DDN8R3M-.mjs')).default } });
4569
4750
  class TaonCmsCourseBackofficeComponent extends TaonCmsPostTableActions {
4570
4751
  constructor() {
4571
4752
  super(...arguments);
4572
4753
  this.t = t$6.for(this);
4573
4754
  this.postPath = ['../posts'];
4755
+ this.backContext = 'courses';
4574
4756
  this.courses = signal([], ...(ngDevMode ? [{ debugName: "courses" }] : []));
4575
4757
  this.loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
4576
4758
  this.columns = [];
@@ -4615,18 +4797,25 @@ class TaonCmsCourseBackofficeComponent extends TaonCmsPostTableActions {
4615
4797
  });
4616
4798
  }
4617
4799
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsCourseBackofficeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4618
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsCourseBackofficeComponent, isStandalone: true, selector: "taon-cms-course-backoffice", providers: [TaonCmsContentApiService], viewQueries: [{ propertyName: "coverTemplate", first: true, predicate: ["coverTemplate"], descendants: true, static: true }, { propertyName: "visibilityTemplate", first: true, predicate: ["visibilityTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<h1>{{ t.gettext('Courses') }}</h1>\n<h2 style=\"color: goldenrod;\">{{ t.gettext('Course is just a post with related posts and thumbnail. Any non archived post can be course.') }}</h2>\n<button mat-button type=\"button\" [disabled]=\"loading()\" (click)=\"reload()\">\n {{ t.gettext('Reload courses') }}\n</button>\n@if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading courses...') }}</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n<taon-datatable\n [data]=\"courses()\"\n [columns]=\"columns\"\n [allowedColumns]=\"['id', 'title', 'status']\"\n [hideAddButton]=\"true\"\n searchMode=\"advanced\"\n [expansionTemplate]=\"expansionTemplate\">\n</taon-datatable>\n<ng-template #coverTemplate let-post>\n <taon-cms-course-cover [post]=\"post\"></taon-cms-course-cover>\n</ng-template>\n<ng-template #visibilityTemplate let-post>\n <span class=\"visibility\">\n <mat-icon aria-hidden=\"true\">\n {{ post.status === 'published' ? 'lock_open' : 'lock' }}\n </mat-icon>\n {{ post.status === 'published' ? t.gettext('Public') : t.gettext('Private') }}\n </span>\n</ng-template>\n<ng-template #expansionTemplate let-course>\n <taon-cms-course-contents\n [course]=\"course\"\n [actionsColumn]=\"actionsColumn\">\n </taon-cms-course-contents>\n</ng-template>\n", styles: [":host{display:block}.visibility{display:inline-flex;align-items:center;gap:.4rem}:host ::ng-deep td.cms-course-public{background-color:#2e7d3214}:host ::ng-deep td.cms-course-private{background-color:#c6282812}\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: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { 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: TaonCmsCourseContentsComponent, selector: "taon-cms-course-contents", inputs: ["course", "actionsColumn"] }, { kind: "component", type: TaonCmsCourseCoverComponent, selector: "taon-cms-course-cover", inputs: ["post"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4800
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.9", type: TaonCmsCourseBackofficeComponent, isStandalone: true, selector: "taon-cms-course-backoffice", providers: [TaonCmsContentApiService], viewQueries: [{ propertyName: "datatable", first: true, predicate: TaonDatatableComponent, descendants: true }, { propertyName: "coverTemplate", first: true, predicate: ["coverTemplate"], descendants: true, static: true }, { propertyName: "visibilityTemplate", first: true, predicate: ["visibilityTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<h1>{{ t.gettext('Courses') }}</h1>\n<h2 style=\"color: goldenrod;\">{{ t.gettext('Course is just a post with related posts and thumbnail. Any non archived post can be course.') }}</h2>\n<button mat-button type=\"button\" [disabled]=\"loading()\" (click)=\"reload()\">\n {{ t.gettext('Reload courses') }}\n</button>\n@if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading courses...') }}</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n<taon-datatable\n [data]=\"courses()\"\n [columns]=\"columns\"\n [allowedColumns]=\"['id', 'title', 'status']\"\n tableId=\"cms-courses\"\n storeTableFilters=\"query-params\"\n [filtersTemplate]=\"filtersTemplate\"\n [hideAddButton]=\"true\"\n searchMode=\"advanced\"\n [expansionTemplate]=\"expansionTemplate\">\n</taon-datatable>\n<ng-template #coverTemplate let-post>\n <taon-cms-course-cover [post]=\"post\"></taon-cms-course-cover>\n</ng-template>\n<ng-template #visibilityTemplate let-post>\n <span class=\"visibility\">\n <mat-icon aria-hidden=\"true\">\n {{ post.status === 'published' ? 'lock_open' : 'lock' }}\n </mat-icon>\n {{ post.status === 'published' ? t.gettext('Public') : t.gettext('Private') }}\n </span>\n</ng-template>\n<ng-template #expansionTemplate let-course>\n <taon-cms-course-contents\n [course]=\"course\"\n [actionsColumn]=\"actionsColumn\">\n </taon-cms-course-contents>\n</ng-template>\n<ng-template\n #filtersTemplate\n let-filters=\"filters\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('ID') }}</mat-label>\n <input\n matInput\n [(ngModel)]=\"filters.id\"\n (keyup.enter)=\"datatable.applyAdvancedFilters()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Title') }}</mat-label>\n <input\n matInput\n [(ngModel)]=\"filters.title\"\n (keyup.enter)=\"datatable.applyAdvancedFilters()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Visibility') }}</mat-label>\n <mat-select [(ngModel)]=\"filters.status\">\n <mat-option value=\"published\">{{ t.gettext('Public') }}</mat-option>\n <mat-option value=\"draft\">{{ t.gettext('Private') }}</mat-option>\n </mat-select>\n </mat-form-field>\n</ng-template>\n", styles: [":host{display:block}.visibility{display:inline-flex;align-items:center;gap:.4rem}:host ::ng-deep td.cms-course-public{background-color:#2e7d3214}:host ::ng-deep td.cms-course-private{background-color:#c6282812}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.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$1.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$1.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", "filtersTemplate", "storeTablePagination", "storeTableFilters", "tableId", "callQueryMethod", "data", "showPaginator"], outputs: ["expansionChange", "addingItem"] }, { kind: "component", type: TaonCmsCourseContentsComponent, selector: "taon-cms-course-contents", inputs: ["course", "actionsColumn"] }, { kind: "component", type: TaonCmsCourseCoverComponent, selector: "taon-cms-course-cover", inputs: ["post"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4619
4801
  }
4620
4802
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsCourseBackofficeComponent, decorators: [{
4621
4803
  type: Component,
4622
4804
  args: [{ selector: 'taon-cms-course-backoffice', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
4805
+ FormsModule,
4623
4806
  MatButtonModule,
4807
+ MatFormFieldModule,
4624
4808
  MatIconModule,
4809
+ MatInputModule,
4810
+ MatSelectModule,
4625
4811
  TaonDatatableComponent,
4626
4812
  TaonCmsCourseContentsComponent,
4627
4813
  TaonCmsCourseCoverComponent,
4628
- ], providers: [TaonCmsContentApiService], template: "<h1>{{ t.gettext('Courses') }}</h1>\n<h2 style=\"color: goldenrod;\">{{ t.gettext('Course is just a post with related posts and thumbnail. Any non archived post can be course.') }}</h2>\n<button mat-button type=\"button\" [disabled]=\"loading()\" (click)=\"reload()\">\n {{ t.gettext('Reload courses') }}\n</button>\n@if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading courses...') }}</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n<taon-datatable\n [data]=\"courses()\"\n [columns]=\"columns\"\n [allowedColumns]=\"['id', 'title', 'status']\"\n [hideAddButton]=\"true\"\n searchMode=\"advanced\"\n [expansionTemplate]=\"expansionTemplate\">\n</taon-datatable>\n<ng-template #coverTemplate let-post>\n <taon-cms-course-cover [post]=\"post\"></taon-cms-course-cover>\n</ng-template>\n<ng-template #visibilityTemplate let-post>\n <span class=\"visibility\">\n <mat-icon aria-hidden=\"true\">\n {{ post.status === 'published' ? 'lock_open' : 'lock' }}\n </mat-icon>\n {{ post.status === 'published' ? t.gettext('Public') : t.gettext('Private') }}\n </span>\n</ng-template>\n<ng-template #expansionTemplate let-course>\n <taon-cms-course-contents\n [course]=\"course\"\n [actionsColumn]=\"actionsColumn\">\n </taon-cms-course-contents>\n</ng-template>\n", styles: [":host{display:block}.visibility{display:inline-flex;align-items:center;gap:.4rem}:host ::ng-deep td.cms-course-public{background-color:#2e7d3214}:host ::ng-deep td.cms-course-private{background-color:#c6282812}\n"] }]
4629
- }], propDecorators: { coverTemplate: [{
4814
+ ], providers: [TaonCmsContentApiService], template: "<h1>{{ t.gettext('Courses') }}</h1>\n<h2 style=\"color: goldenrod;\">{{ t.gettext('Course is just a post with related posts and thumbnail. Any non archived post can be course.') }}</h2>\n<button mat-button type=\"button\" [disabled]=\"loading()\" (click)=\"reload()\">\n {{ t.gettext('Reload courses') }}\n</button>\n@if (loading()) {\n <p role=\"status\">{{ t.gettext('Loading courses...') }}</p>\n}\n@if (error()) {\n <p role=\"alert\">{{ error() }}</p>\n}\n<taon-datatable\n [data]=\"courses()\"\n [columns]=\"columns\"\n [allowedColumns]=\"['id', 'title', 'status']\"\n tableId=\"cms-courses\"\n storeTableFilters=\"query-params\"\n [filtersTemplate]=\"filtersTemplate\"\n [hideAddButton]=\"true\"\n searchMode=\"advanced\"\n [expansionTemplate]=\"expansionTemplate\">\n</taon-datatable>\n<ng-template #coverTemplate let-post>\n <taon-cms-course-cover [post]=\"post\"></taon-cms-course-cover>\n</ng-template>\n<ng-template #visibilityTemplate let-post>\n <span class=\"visibility\">\n <mat-icon aria-hidden=\"true\">\n {{ post.status === 'published' ? 'lock_open' : 'lock' }}\n </mat-icon>\n {{ post.status === 'published' ? t.gettext('Public') : t.gettext('Private') }}\n </span>\n</ng-template>\n<ng-template #expansionTemplate let-course>\n <taon-cms-course-contents\n [course]=\"course\"\n [actionsColumn]=\"actionsColumn\">\n </taon-cms-course-contents>\n</ng-template>\n<ng-template\n #filtersTemplate\n let-filters=\"filters\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('ID') }}</mat-label>\n <input\n matInput\n [(ngModel)]=\"filters.id\"\n (keyup.enter)=\"datatable.applyAdvancedFilters()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Title') }}</mat-label>\n <input\n matInput\n [(ngModel)]=\"filters.title\"\n (keyup.enter)=\"datatable.applyAdvancedFilters()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Visibility') }}</mat-label>\n <mat-select [(ngModel)]=\"filters.status\">\n <mat-option value=\"published\">{{ t.gettext('Public') }}</mat-option>\n <mat-option value=\"draft\">{{ t.gettext('Private') }}</mat-option>\n </mat-select>\n </mat-form-field>\n</ng-template>\n", styles: [":host{display:block}.visibility{display:inline-flex;align-items:center;gap:.4rem}:host ::ng-deep td.cms-course-public{background-color:#2e7d3214}:host ::ng-deep td.cms-course-private{background-color:#c6282812}\n"] }]
4815
+ }], propDecorators: { datatable: [{
4816
+ type: ViewChild,
4817
+ args: [TaonDatatableComponent]
4818
+ }], coverTemplate: [{
4630
4819
  type: ViewChild,
4631
4820
  args: ['coverTemplate', { static: true }]
4632
4821
  }], visibilityTemplate: [{
@@ -4833,7 +5022,7 @@ class TaonCmsRevisionChooserComponent {
4833
5022
  }
4834
5023
  }
4835
5024
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsRevisionChooserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4836
- 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$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2$1.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 }); }
5025
+ 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 }); }
4837
5026
  }
4838
5027
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsRevisionChooserComponent, decorators: [{
4839
5028
  type: Component,
@@ -4902,7 +5091,7 @@ class TaonRelatedPostChooserComponent {
4902
5091
  this.ref.close();
4903
5092
  }
4904
5093
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonRelatedPostChooserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4905
- 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$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2$1.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 }); }
5094
+ 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 }); }
4906
5095
  }
4907
5096
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonRelatedPostChooserComponent, decorators: [{
4908
5097
  type: Component,
@@ -4911,9 +5100,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
4911
5100
 
4912
5101
  //#region imports
4913
5102
  //#endregion
4914
- 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-browser-taon-cms-post.component.html.en-US.i18n.data-KASjY7KB.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-post.component.html.pl-PL.i18n.data-BTHVJbC_.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-post.component.html.de-DE.i18n.data-B1AK4KW_.mjs')).default }, "src/lib/taon-posts/taon-cms-post/taon-cms-post.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-post.component.ts.en-US.i18n.data-BTgAXw4d.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-post.component.ts.pl-PL.i18n.data-Dt0lO5qR.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-post.component.ts.de-DE.i18n.data-B93wyE-K.mjs')).default } });
5103
+ 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-browser-taon-cms-post.component.html.en-US.i18n.data-BUE8MsLX.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-post.component.html.pl-PL.i18n.data-BCTWaUca.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-post.component.html.de-DE.i18n.data-CapQLQ5d.mjs')).default }, "src/lib/taon-posts/taon-cms-post/taon-cms-post.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-post.component.ts.en-US.i18n.data-lruEnzKH.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-post.component.ts.pl-PL.i18n.data-CNsT81Pt.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-post.component.ts.de-DE.i18n.data-BYxiUf8C.mjs')).default } });
4915
5104
  class TaonCmsPostComponent {
4916
5105
  //#endregion
5106
+ ngAfterViewInit() {
5107
+ if (this.actionButtonsTemplateRef) {
5108
+ this.actionButtonsTemplate.emit(this.actionButtonsTemplateRef);
5109
+ }
5110
+ }
4917
5111
  //#region constructor
4918
5112
  constructor() {
4919
5113
  this.t = t$3.for(this);
@@ -4924,6 +5118,7 @@ class TaonCmsPostComponent {
4924
5118
  this.deleted = output();
4925
5119
  this.duplicated = output();
4926
5120
  this.cancelled = output();
5121
+ this.actionButtonsTemplate = output();
4927
5122
  this.currentPost = signal(null, ...(ngDevMode ? [{ debugName: "currentPost" }] : []));
4928
5123
  this.placeholderShortIntro = this.t.signal.gettext('A short introduction...');
4929
5124
  this.placeholderTitle = this.t.signal.gettext('Title');
@@ -5007,6 +5202,7 @@ class TaonCmsPostComponent {
5007
5202
  this.uploadedMediaPreview = signal(null, ...(ngDevMode ? [{ debugName: "uploadedMediaPreview" }] : []));
5008
5203
  this.mediaPreviewRequest = 0;
5009
5204
  this.mediaPreviewSignature = '';
5205
+ this.slugManuallySet = false;
5010
5206
  this.dialogOpen = signal(false, ...(ngDevMode ? [{ debugName: "dialogOpen" }] : []));
5011
5207
  this.error = signal('', ...(ngDevMode ? [{ debugName: "error" }] : []));
5012
5208
  this.relatedPosts = signal([], ...(ngDevMode ? [{ debugName: "relatedPosts" }] : []));
@@ -5127,8 +5323,8 @@ class TaonCmsPostComponent {
5127
5323
  // Thumbnail preview handling.
5128
5324
  effect(onCleanup => {
5129
5325
  const key = this.thumbnailReference();
5130
- const slug = this.thumbnailSlug();
5131
5326
  const editing = this.editing();
5327
+ const slug = editing ? '' : this.thumbnailSlug();
5132
5328
  const staged = this.stagedThumbnail();
5133
5329
  let active = true;
5134
5330
  onCleanup(() => {
@@ -5148,7 +5344,7 @@ class TaonCmsPostComponent {
5148
5344
  this.thumbnailPreviewUrl.set(placeholder);
5149
5345
  return;
5150
5346
  }
5151
- if (!slug) {
5347
+ if (!editing && !slug) {
5152
5348
  return;
5153
5349
  }
5154
5350
  const load = async () => {
@@ -5256,7 +5452,7 @@ class TaonCmsPostComponent {
5256
5452
  }
5257
5453
  //#endregion
5258
5454
  //#region methods / load related posts
5259
- loadTaxonomy() {
5455
+ loadTaxonomy(preserveSelectedTags = false) {
5260
5456
  this.taxonomyLoad?.unsubscribe();
5261
5457
  const session = this.editorSession;
5262
5458
  const postId = this.currentPost()?.id;
@@ -5273,7 +5469,9 @@ class TaonCmsPostComponent {
5273
5469
  if (session === this.editorSession) {
5274
5470
  this.categories.set(result.categories.sort((a, b) => a.sortOrder - b.sortOrder || a.name.localeCompare(b.name)));
5275
5471
  this.tags.set(result.tags);
5276
- this.updateDraft('tagIds', result.tagIds);
5472
+ if (!preserveSelectedTags) {
5473
+ this.updateDraft('tagIds', result.tagIds);
5474
+ }
5277
5475
  }
5278
5476
  },
5279
5477
  error: (error) => {
@@ -5295,6 +5493,50 @@ class TaonCmsPostComponent {
5295
5493
  this.tagSearch.set(event.target.value);
5296
5494
  }
5297
5495
  }
5496
+ createTaxonomy(taxonomy) {
5497
+ if (this.busy() || this.dialogOpen()) {
5498
+ return;
5499
+ }
5500
+ this.dialogOpen.set(true);
5501
+ this.taxonomyError.set('');
5502
+ const ref = this.dialog.open(TaonCmsTaxonomyQuickCreateDialogComponent, {
5503
+ data: { taxonomy },
5504
+ width: '560px',
5505
+ maxWidth: '95vw',
5506
+ disableClose: true,
5507
+ });
5508
+ ref
5509
+ .afterClosed()
5510
+ .pipe(takeUntilDestroyed(this.destroyRef))
5511
+ .subscribe(fields => {
5512
+ if (!fields) {
5513
+ this.dialogOpen.set(false);
5514
+ return;
5515
+ }
5516
+ const request = taxonomy === 'category'
5517
+ ? this.categoryApi.save(null, fields)
5518
+ : this.tagApi.save(null, fields);
5519
+ request
5520
+ .pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.dialogOpen.set(false)))
5521
+ .subscribe({
5522
+ next: saved => {
5523
+ if (taxonomy === 'category') {
5524
+ this.updateDraft('categoryId', saved.id);
5525
+ }
5526
+ else {
5527
+ this.addTag(saved.id);
5528
+ }
5529
+ this.loadTaxonomy(true);
5530
+ },
5531
+ error: (error) => {
5532
+ console.error(`[taon-cms-post] Unable to create ${taxonomy}`, error);
5533
+ this.taxonomyError.set(taxonomy === 'category'
5534
+ ? this.t.gettext('The category could not be created. Please try again.')
5535
+ : this.t.gettext('The tag could not be created. Please try again.'));
5536
+ },
5537
+ });
5538
+ });
5539
+ }
5298
5540
  applyDefaultThumbnail() {
5299
5541
  if (!this.editing() || this.busy() || this.dialogOpen()) {
5300
5542
  return;
@@ -5421,6 +5663,51 @@ class TaonCmsPostComponent {
5421
5663
  });
5422
5664
  }
5423
5665
  //#endregion
5666
+ //#region methods / add as child of
5667
+ addAsChildOf() {
5668
+ const post = this.currentPost();
5669
+ if (!this.editing() ||
5670
+ !post ||
5671
+ this.busy() ||
5672
+ this.dialogOpen() ||
5673
+ this.relatedPostsLoading()) {
5674
+ return;
5675
+ }
5676
+ this.dialogOpen.set(true);
5677
+ const ref = this.dialog.open(TaonRelatedPostChooserComponent, {
5678
+ data: { postId: post.id, excludedIds: [] },
5679
+ width: '560px',
5680
+ maxWidth: '95vw',
5681
+ disableClose: true,
5682
+ });
5683
+ ref
5684
+ .afterClosed()
5685
+ .pipe(takeUntilDestroyed(this.destroyRef))
5686
+ .subscribe(parent => {
5687
+ this.dialogOpen.set(false);
5688
+ if (!parent || !this.currentPost()) {
5689
+ return;
5690
+ }
5691
+ this.busy.set(true);
5692
+ this.error.set('');
5693
+ this.api
5694
+ .addRelatedPost(parent.id, post.id, parent.version)
5695
+ .pipe(switchMap(() => from(this.api.getById(post.id))), takeUntilDestroyed(this.destroyRef), finalize(() => this.busy.set(false)))
5696
+ .subscribe({
5697
+ next: refreshedPost => {
5698
+ this.currentPost.set(refreshedPost);
5699
+ this.permissionsLoad?.unsubscribe();
5700
+ this.permissionsLoading.set(false);
5701
+ this.loadPermissions();
5702
+ },
5703
+ error: (error) => {
5704
+ console.error('[taon-cms-post] Unable to make post a child', error);
5705
+ this.error.set(this.t.gettext('The parent post could not be changed. Please try again.'));
5706
+ },
5707
+ });
5708
+ });
5709
+ }
5710
+ //#endregion
5424
5711
  //#region methods / remove related post
5425
5712
  removeRelatedPost(id) {
5426
5713
  if (!this.editing() ||
@@ -5567,6 +5854,18 @@ class TaonCmsPostComponent {
5567
5854
  }
5568
5855
  }
5569
5856
  updateDraft(field, value) {
5857
+ if (field === 'title' &&
5858
+ this.mode() === 'add' &&
5859
+ !this.slugManuallySet &&
5860
+ !this.draft().slug) {
5861
+ const title = String(value);
5862
+ this.draft.update(draft => ({
5863
+ ...draft,
5864
+ title,
5865
+ slug: _.kebabCase(title),
5866
+ }));
5867
+ return;
5868
+ }
5570
5869
  this.draft.update(draft => ({ ...draft, [field]: value }));
5571
5870
  }
5572
5871
  //#endregion
@@ -5706,6 +6005,7 @@ class TaonCmsPostComponent {
5706
6005
  //#region methods / update slug
5707
6006
  updateSlug(event) {
5708
6007
  if (event.target instanceof HTMLInputElement) {
6008
+ this.slugManuallySet = true;
5709
6009
  this.updateDraft('slug', event.target.value);
5710
6010
  }
5711
6011
  }
@@ -5932,6 +6232,7 @@ class TaonCmsPostComponent {
5932
6232
  this.mediaPreviewSignature = '';
5933
6233
  this.mediaPreviewRequest += 1;
5934
6234
  this.currentPost.set(post);
6235
+ this.slugManuallySet = Boolean(post);
5935
6236
  this.relatedPosts.set(post?.relatedPosts ?? []);
5936
6237
  this.permissions.set(post?.permissions ?? []);
5937
6238
  this.permissionSource.set(null);
@@ -6003,19 +6304,20 @@ class TaonCmsPostComponent {
6003
6304
  });
6004
6305
  }
6005
6306
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6006
- 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: [
6307
+ 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", actionButtonsTemplate: "actionButtonsTemplate" }, providers: [
6007
6308
  TaonCmsContentApiService,
6008
6309
  TaonCmsContentConfigService,
6009
6310
  TaonPermissionApiService,
6010
6311
  TaonCmsCategoryApiService,
6011
6312
  TaonCmsTagApiService,
6012
- ], viewQueries: [{ propertyName: "rawContent", first: true, predicate: ["rawContent"], descendants: true, isSignal: true }], 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 <section class=\"post-content-editor\">\n <mat-tab-group\n [selectedIndex]=\"contentTab()\"\n (selectedIndexChange)=\"contentTab.set($event)\"\n [preserveContent]=\"true\"\n animationDuration=\"0ms\">\n <mat-tab [label]=\"t.gettext('Editor')\">\n @if (contentEditor(); as editor) {\n <ngx-editor-menu\n [editor]=\"editor\"\n [toolbar]=\"contentToolbar\"\n [disabled]=\"busy() || dialogOpen()\" />\n <ngx-editor\n [editor]=\"editor\"\n [placeholder]=\"placeholderTellYourStory()\" />\n }\n </mat-tab>\n <mat-tab [label]=\"t.gettext('Raw')\">\n <textarea\n #rawContent\n class=\"raw-content\"\n [attr.aria-label]=\"t.gettext('Post body HTML')\"\n [value]=\"draft().body\"\n [disabled]=\"busy() || dialogOpen()\"\n (input)=\"updateRawContent($event)\"\n spellcheck=\"false\"></textarea>\n </mat-tab>\n <mat-tab [label]=\"t.gettext('Preview')\">\n <div\n class=\"post-body content-preview\"\n [innerHTML]=\"resolvedBody()\"></div>\n </mat-tab>\n </mat-tab-group>\n @if (contentTab() !== 2) {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || !contentEditor()\"\n [matMenuTriggerFor]=\"variableMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n {{ t.gettext('Insert variable') }}\n </button>\n }\n <mat-menu #variableMenu=\"matMenu\">\n <button mat-menu-item [matMenuTriggerFor]=\"siteVariableMenu\">\n {{ t.gettext('Site') }}\n </button>\n <button mat-menu-item [matMenuTriggerFor]=\"postVariableMenu\">\n {{ t.gettext('Post') }}\n </button>\n </mat-menu>\n <mat-menu #siteVariableMenu=\"matMenu\">\n <button mat-menu-item (click)=\"insertVariable('frontendUrl')\">\n {{ t.gettext('Frontend URL') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('site.name')\">\n {{ t.gettext('Site name') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('currentYear')\">\n {{ t.gettext('Current year') }}\n </button>\n </mat-menu>\n <mat-menu #postVariableMenu=\"matMenu\">\n <button mat-menu-item (click)=\"insertVariable('post.title')\">\n {{ t.gettext('Post title') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('post.url')\">\n {{ t.gettext('Post URL') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('post.id')\">\n {{ t.gettext('Post ID') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('post.thumbnailUrl')\">\n {{ t.gettext('Post Thumbnail URL') }}\n </button>\n </mat-menu>\n </section>\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 class=\"w-full\"\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]=\"resolvedBody()\"></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-content-editor{border:1px solid rgba(136,136,136,.3333333333);border-radius:4px;overflow:hidden}.raw-content{display:block;box-sizing:border-box;width:100%;min-height:20rem;padding:1rem;resize:vertical;border:0;color:inherit;background:transparent;font-family:monospace}ngx-editor{display:block;min-height:20rem}.content-preview{min-height:12rem;padding:1rem}.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$2.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: i2.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: MatMenuModule }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i7.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i7.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: NgxEditorModule }, { kind: "component", type: i8.NgxEditorComponent, selector: "ngx-editor", inputs: ["editor", "outputFormat", "placeholder"], outputs: ["focusOut", "focusIn"] }, { kind: "component", type: i8.MenuComponent, selector: "ngx-editor-menu", inputs: ["toolbar", "colorPresets", "disabled", "editor", "customMenuRef", "dropdownPlacement"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i9.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: i9.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i9.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i10.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 }); }
6313
+ ], viewQueries: [{ propertyName: "rawContent", first: true, predicate: ["rawContent"], descendants: true, isSignal: true }, { propertyName: "actionButtonsTemplateRef", first: true, predicate: ["actionButtonsTemplate"], descendants: true }], ngImport: i0, template: "@if (mode() !== 'view-clean') {\n <ng-template #actionButtonsTemplate>\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 </ng-template>\n <header class=\"post-actions\">\n <span class=\"post-status\">{{\n mode() === 'add' ? t.gettext('New draft') : currentPost()?.status\n }}</span>\n <ng-container [ngTemplateOutlet]=\"actionButtonsTemplate\" />\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-tab-group animationDuration=\"0ms\">\n <mat-tab [label]=\"t.gettext('CONTENT')\">\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 <section class=\"post-content-editor\">\n <mat-tab-group\n [selectedIndex]=\"contentTab()\"\n (selectedIndexChange)=\"contentTab.set($event)\"\n [preserveContent]=\"true\"\n animationDuration=\"0ms\">\n <mat-tab [label]=\"t.gettext('Editor')\">\n @if (contentEditor(); as editor) {\n <ngx-editor-menu\n [editor]=\"editor\"\n [toolbar]=\"contentToolbar\"\n [disabled]=\"busy() || dialogOpen()\" />\n <ngx-editor\n [editor]=\"editor\"\n [placeholder]=\"placeholderTellYourStory()\" />\n }\n </mat-tab>\n <mat-tab [label]=\"t.gettext('Raw')\">\n <textarea\n #rawContent\n class=\"raw-content\"\n [attr.aria-label]=\"t.gettext('Post body HTML')\"\n [value]=\"draft().body\"\n [disabled]=\"busy() || dialogOpen()\"\n (input)=\"updateRawContent($event)\"\n spellcheck=\"false\"></textarea>\n </mat-tab>\n <mat-tab [label]=\"t.gettext('Preview')\">\n <div\n class=\"post-body content-preview\"\n [innerHTML]=\"resolvedBody()\"></div>\n </mat-tab>\n </mat-tab-group>\n @if (contentTab() !== 2) {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || !contentEditor()\"\n [matMenuTriggerFor]=\"variableMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n {{ t.gettext('Insert variable') }}\n </button>\n }\n <mat-menu #variableMenu=\"matMenu\">\n <button mat-menu-item [matMenuTriggerFor]=\"siteVariableMenu\">\n {{ t.gettext('Site') }}\n </button>\n <button mat-menu-item [matMenuTriggerFor]=\"postVariableMenu\">\n {{ t.gettext('Post') }}\n </button>\n </mat-menu>\n <mat-menu #siteVariableMenu=\"matMenu\">\n <button mat-menu-item (click)=\"insertVariable('frontendUrl')\">\n {{ t.gettext('Frontend URL') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('site.name')\">\n {{ t.gettext('Site name') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('currentYear')\">\n {{ t.gettext('Current year') }}\n </button>\n </mat-menu>\n <mat-menu #postVariableMenu=\"matMenu\">\n <button mat-menu-item (click)=\"insertVariable('post.title')\">\n {{ t.gettext('Post title') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('post.url')\">\n {{ t.gettext('Post URL') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('post.id')\">\n {{ t.gettext('Post ID') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('post.thumbnailUrl')\">\n {{ t.gettext('Post Thumbnail URL') }}\n </button>\n </mat-menu>\n </section>\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 </mat-tab>\n <mat-tab [label]=\"t.gettext('SETTINGS')\">\n <div class=\"post-settings\">\n @if (mediaAttachment(); as media) {\n <mat-card class=\"post-setting-card\">\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 </mat-card>\n }\n <mat-card class=\"post-setting-card\">\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 </mat-card>\n <mat-card class=\"post-setting-card\">\n <section\n class=\"post-taxonomy\"\n aria-labelledby=\"category-heading\">\n <h2 id=\"category-heading\">{{ t.gettext('Category / 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 <div class=\"buttons\">\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || taxonomyLoading()\"\n (click)=\"createTaxonomy('category')\">\n <mat-icon>add</mat-icon> {{ t.gettext('Add category') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || taxonomyLoading()\"\n (click)=\"createTaxonomy('tag')\">\n <mat-icon>add</mat-icon> {{ t.gettext('Add tag') }}\n </button>\n </div>\n </section>\n </mat-card>\n <mat-card class=\"post-setting-card\">\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 @if (currentPost()) {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"addAsChildOf()\">\n <mat-icon>account_tree</mat-icon>\n {{ t.gettext('Add as child of') }}\n </button>\n }\n }\n </section>\n </mat-card>\n\n @if (!mediaAttachment()) {\n <mat-card class=\"post-setting-card\">\n <section\n class=\"application-hook\"\n aria-labelledby=\"application-hook-heading\">\n <h2 id=\"application-hook-heading\">\n {{ t.gettext('Hooks') }}\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 </mat-card>\n }\n <mat-card class=\"post-setting-card\">\n <section\n class=\"post-permissions\"\n aria-labelledby=\"post-permissions-heading\">\n <h2 id=\"post-permissions-heading\">{{ t.gettext('Permissions') }}</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 class=\"w-full\"\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 </mat-card>\n </div>\n </mat-tab>\n </mat-tab-group>\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]=\"resolvedBody()\"></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 [poster]=\"thumbnailPreviewUrl() || null\"\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 [poster]=\"thumbnailPreviewUrl() || null\"\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-settings{display:grid;gap:1rem;margin-top:1rem}.post-setting-card{display:block}.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-content-editor{border:1px solid rgba(136,136,136,.3333333333);border-radius:4px;overflow:hidden}.raw-content{display:block;box-sizing:border-box;width:100%;min-height:20rem;padding:1rem;resize:vertical;border:0;color:inherit;background:transparent;font-family:monospace}ngx-editor{display:block;min-height:20rem}.content-preview{min-height:12rem;padding:1rem}.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: MatCardModule }, { kind: "component", type: i3$2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { 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.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.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: MatMenuModule }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i7.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i8.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i8.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: NgxEditorModule }, { kind: "component", type: i9.NgxEditorComponent, selector: "ngx-editor", inputs: ["editor", "outputFormat", "placeholder"], outputs: ["focusOut", "focusIn"] }, { kind: "component", type: i9.MenuComponent, selector: "ngx-editor-menu", inputs: ["toolbar", "colorPresets", "disabled", "editor", "customMenuRef", "dropdownPlacement"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.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: i10.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i11.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$1.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$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: TaonCmsEditableDirective, selector: "[taonCmsEditable]", inputs: ["taonCmsEditableFormat", "taonCmsEditableSingleLine", "taonCmsEditable"], outputs: ["taonCmsEditableChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6013
6314
  }
6014
6315
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostComponent, decorators: [{
6015
6316
  type: Component,
6016
6317
  args: [{ selector: 'taon-cms-post', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
6017
6318
  MatButtonModule,
6018
6319
  MatCheckboxModule,
6320
+ MatCardModule,
6019
6321
  MatFormFieldModule,
6020
6322
  MatIconModule,
6021
6323
  MatInputModule,
@@ -6027,14 +6329,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
6027
6329
  MatRadioModule,
6028
6330
  MatSelectModule,
6029
6331
  TaonCmsEditableDirective,
6332
+ NgTemplateOutlet,
6030
6333
  ], providers: [
6031
6334
  TaonCmsContentApiService,
6032
6335
  TaonCmsContentConfigService,
6033
6336
  TaonPermissionApiService,
6034
6337
  TaonCmsCategoryApiService,
6035
6338
  TaonCmsTagApiService,
6036
- ], 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 <section class=\"post-content-editor\">\n <mat-tab-group\n [selectedIndex]=\"contentTab()\"\n (selectedIndexChange)=\"contentTab.set($event)\"\n [preserveContent]=\"true\"\n animationDuration=\"0ms\">\n <mat-tab [label]=\"t.gettext('Editor')\">\n @if (contentEditor(); as editor) {\n <ngx-editor-menu\n [editor]=\"editor\"\n [toolbar]=\"contentToolbar\"\n [disabled]=\"busy() || dialogOpen()\" />\n <ngx-editor\n [editor]=\"editor\"\n [placeholder]=\"placeholderTellYourStory()\" />\n }\n </mat-tab>\n <mat-tab [label]=\"t.gettext('Raw')\">\n <textarea\n #rawContent\n class=\"raw-content\"\n [attr.aria-label]=\"t.gettext('Post body HTML')\"\n [value]=\"draft().body\"\n [disabled]=\"busy() || dialogOpen()\"\n (input)=\"updateRawContent($event)\"\n spellcheck=\"false\"></textarea>\n </mat-tab>\n <mat-tab [label]=\"t.gettext('Preview')\">\n <div\n class=\"post-body content-preview\"\n [innerHTML]=\"resolvedBody()\"></div>\n </mat-tab>\n </mat-tab-group>\n @if (contentTab() !== 2) {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || !contentEditor()\"\n [matMenuTriggerFor]=\"variableMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n {{ t.gettext('Insert variable') }}\n </button>\n }\n <mat-menu #variableMenu=\"matMenu\">\n <button mat-menu-item [matMenuTriggerFor]=\"siteVariableMenu\">\n {{ t.gettext('Site') }}\n </button>\n <button mat-menu-item [matMenuTriggerFor]=\"postVariableMenu\">\n {{ t.gettext('Post') }}\n </button>\n </mat-menu>\n <mat-menu #siteVariableMenu=\"matMenu\">\n <button mat-menu-item (click)=\"insertVariable('frontendUrl')\">\n {{ t.gettext('Frontend URL') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('site.name')\">\n {{ t.gettext('Site name') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('currentYear')\">\n {{ t.gettext('Current year') }}\n </button>\n </mat-menu>\n <mat-menu #postVariableMenu=\"matMenu\">\n <button mat-menu-item (click)=\"insertVariable('post.title')\">\n {{ t.gettext('Post title') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('post.url')\">\n {{ t.gettext('Post URL') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('post.id')\">\n {{ t.gettext('Post ID') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('post.thumbnailUrl')\">\n {{ t.gettext('Post Thumbnail URL') }}\n </button>\n </mat-menu>\n </section>\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 class=\"w-full\"\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]=\"resolvedBody()\"></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-content-editor{border:1px solid rgba(136,136,136,.3333333333);border-radius:4px;overflow:hidden}.raw-content{display:block;box-sizing:border-box;width:100%;min-height:20rem;padding:1rem;resize:vertical;border:0;color:inherit;background:transparent;font-family:monospace}ngx-editor{display:block;min-height:20rem}.content-preview{min-height:12rem;padding:1rem}.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"] }]
6037
- }], 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"] }], rawContent: [{ type: i0.ViewChild, args: ['rawContent', { isSignal: true }] }] } });
6339
+ ], template: "@if (mode() !== 'view-clean') {\n <ng-template #actionButtonsTemplate>\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 </ng-template>\n <header class=\"post-actions\">\n <span class=\"post-status\">{{\n mode() === 'add' ? t.gettext('New draft') : currentPost()?.status\n }}</span>\n <ng-container [ngTemplateOutlet]=\"actionButtonsTemplate\" />\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-tab-group animationDuration=\"0ms\">\n <mat-tab [label]=\"t.gettext('CONTENT')\">\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 <section class=\"post-content-editor\">\n <mat-tab-group\n [selectedIndex]=\"contentTab()\"\n (selectedIndexChange)=\"contentTab.set($event)\"\n [preserveContent]=\"true\"\n animationDuration=\"0ms\">\n <mat-tab [label]=\"t.gettext('Editor')\">\n @if (contentEditor(); as editor) {\n <ngx-editor-menu\n [editor]=\"editor\"\n [toolbar]=\"contentToolbar\"\n [disabled]=\"busy() || dialogOpen()\" />\n <ngx-editor\n [editor]=\"editor\"\n [placeholder]=\"placeholderTellYourStory()\" />\n }\n </mat-tab>\n <mat-tab [label]=\"t.gettext('Raw')\">\n <textarea\n #rawContent\n class=\"raw-content\"\n [attr.aria-label]=\"t.gettext('Post body HTML')\"\n [value]=\"draft().body\"\n [disabled]=\"busy() || dialogOpen()\"\n (input)=\"updateRawContent($event)\"\n spellcheck=\"false\"></textarea>\n </mat-tab>\n <mat-tab [label]=\"t.gettext('Preview')\">\n <div\n class=\"post-body content-preview\"\n [innerHTML]=\"resolvedBody()\"></div>\n </mat-tab>\n </mat-tab-group>\n @if (contentTab() !== 2) {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || !contentEditor()\"\n [matMenuTriggerFor]=\"variableMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n {{ t.gettext('Insert variable') }}\n </button>\n }\n <mat-menu #variableMenu=\"matMenu\">\n <button mat-menu-item [matMenuTriggerFor]=\"siteVariableMenu\">\n {{ t.gettext('Site') }}\n </button>\n <button mat-menu-item [matMenuTriggerFor]=\"postVariableMenu\">\n {{ t.gettext('Post') }}\n </button>\n </mat-menu>\n <mat-menu #siteVariableMenu=\"matMenu\">\n <button mat-menu-item (click)=\"insertVariable('frontendUrl')\">\n {{ t.gettext('Frontend URL') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('site.name')\">\n {{ t.gettext('Site name') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('currentYear')\">\n {{ t.gettext('Current year') }}\n </button>\n </mat-menu>\n <mat-menu #postVariableMenu=\"matMenu\">\n <button mat-menu-item (click)=\"insertVariable('post.title')\">\n {{ t.gettext('Post title') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('post.url')\">\n {{ t.gettext('Post URL') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('post.id')\">\n {{ t.gettext('Post ID') }}\n </button>\n <button mat-menu-item (click)=\"insertVariable('post.thumbnailUrl')\">\n {{ t.gettext('Post Thumbnail URL') }}\n </button>\n </mat-menu>\n </section>\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 </mat-tab>\n <mat-tab [label]=\"t.gettext('SETTINGS')\">\n <div class=\"post-settings\">\n @if (mediaAttachment(); as media) {\n <mat-card class=\"post-setting-card\">\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 </mat-card>\n }\n <mat-card class=\"post-setting-card\">\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 </mat-card>\n <mat-card class=\"post-setting-card\">\n <section\n class=\"post-taxonomy\"\n aria-labelledby=\"category-heading\">\n <h2 id=\"category-heading\">{{ t.gettext('Category / 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 <div class=\"buttons\">\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || taxonomyLoading()\"\n (click)=\"createTaxonomy('category')\">\n <mat-icon>add</mat-icon> {{ t.gettext('Add category') }}\n </button>\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen() || taxonomyLoading()\"\n (click)=\"createTaxonomy('tag')\">\n <mat-icon>add</mat-icon> {{ t.gettext('Add tag') }}\n </button>\n </div>\n </section>\n </mat-card>\n <mat-card class=\"post-setting-card\">\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 @if (currentPost()) {\n <button\n mat-button\n type=\"button\"\n [disabled]=\"busy() || dialogOpen()\"\n (click)=\"addAsChildOf()\">\n <mat-icon>account_tree</mat-icon>\n {{ t.gettext('Add as child of') }}\n </button>\n }\n }\n </section>\n </mat-card>\n\n @if (!mediaAttachment()) {\n <mat-card class=\"post-setting-card\">\n <section\n class=\"application-hook\"\n aria-labelledby=\"application-hook-heading\">\n <h2 id=\"application-hook-heading\">\n {{ t.gettext('Hooks') }}\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 </mat-card>\n }\n <mat-card class=\"post-setting-card\">\n <section\n class=\"post-permissions\"\n aria-labelledby=\"post-permissions-heading\">\n <h2 id=\"post-permissions-heading\">{{ t.gettext('Permissions') }}</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 class=\"w-full\"\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 </mat-card>\n </div>\n </mat-tab>\n </mat-tab-group>\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]=\"resolvedBody()\"></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 [poster]=\"thumbnailPreviewUrl() || null\"\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 [poster]=\"thumbnailPreviewUrl() || null\"\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-settings{display:grid;gap:1rem;margin-top:1rem}.post-setting-card{display:block}.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-content-editor{border:1px solid rgba(136,136,136,.3333333333);border-radius:4px;overflow:hidden}.raw-content{display:block;box-sizing:border-box;width:100%;min-height:20rem;padding:1rem;resize:vertical;border:0;color:inherit;background:transparent;font-family:monospace}ngx-editor{display:block;min-height:20rem}.content-preview{min-height:12rem;padding:1rem}.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"] }]
6340
+ }], 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"] }], actionButtonsTemplate: [{ type: i0.Output, args: ["actionButtonsTemplate"] }], actionButtonsTemplateRef: [{
6341
+ type: ViewChild,
6342
+ args: ['actionButtonsTemplate']
6343
+ }], rawContent: [{ type: i0.ViewChild, args: ['rawContent', { isSignal: true }] }] } });
6038
6344
 
6039
6345
  var taonCmsPost_component = /*#__PURE__*/Object.freeze({
6040
6346
  __proto__: null,
@@ -6065,16 +6371,37 @@ const TaonCmsPostRoutes = [
6065
6371
  */
6066
6372
  // export default TaonCmsPostRoutes;
6067
6373
 
6068
- 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-browser-taon-cms-post-details-page.component.ts.en-US.i18n.data-Gx0bf2nC.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-B-2PuKu7.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-post-details-page.component.ts.de-DE.i18n.data-C7tWZFkz.mjs')).default } });
6374
+ 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-browser-taon-cms-post-details-page.component.ts.en-US.i18n.data-7mXifX-U.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-DYSUl0we.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-post-details-page.component.ts.de-DE.i18n.data-CUPt6JuN.mjs')).default } });
6069
6375
  class TaonCmsPostDetailsPageComponent {
6070
6376
  constructor() {
6071
6377
  this.t = t$2.for(this);
6072
6378
  this.route = inject(ActivatedRoute);
6073
6379
  this.router = inject(Router);
6074
- this.page$ = this.route.data.pipe(map$1(data => ({
6380
+ this.contentFooterService = inject(TaonAdminContentFooterService);
6381
+ this.destroyRef = inject(DestroyRef);
6382
+ this.page$ = combineLatest([
6383
+ this.route.data,
6384
+ this.route.queryParamMap,
6385
+ ]).pipe(map$1(([data, queryParams]) => ({
6075
6386
  create: data['createPost'] === true,
6076
6387
  post: data['post'] ?? null,
6388
+ fromCourses: queryParams.get('postOrigin') === 'courses',
6077
6389
  })));
6390
+ this.destroyRef.onDestroy(() => this.contentFooterService.setTemplate());
6391
+ }
6392
+ setFooterTemplate(template) {
6393
+ this.contentFooterService.setTemplate(template);
6394
+ }
6395
+ goBack(fromCourses) {
6396
+ void this.router
6397
+ .navigate([fromCourses ? '../../courses' : '../'], {
6398
+ relativeTo: this.route,
6399
+ queryParams: { postOrigin: null },
6400
+ queryParamsHandling: 'merge',
6401
+ })
6402
+ .catch(error => {
6403
+ console.error('[taon-cms-post-details-page] Unable to navigate back', error);
6404
+ });
6078
6405
  }
6079
6406
  onChanged(post, create) {
6080
6407
  if (create) {
@@ -6082,11 +6409,25 @@ class TaonCmsPostDetailsPageComponent {
6082
6409
  }
6083
6410
  }
6084
6411
  openPost(post) {
6085
- void this.router.navigate(['../', post.id], { relativeTo: this.route });
6412
+ void this.router
6413
+ .navigate(['../', post.id], {
6414
+ relativeTo: this.route,
6415
+ queryParamsHandling: 'preserve',
6416
+ })
6417
+ .catch(error => {
6418
+ console.error('[taon-cms-post-details-page] Unable to open post', error);
6419
+ });
6086
6420
  }
6087
6421
  onCancelled(create) {
6088
6422
  if (create) {
6089
- void this.router.navigate(['../'], { relativeTo: this.route });
6423
+ void this.router
6424
+ .navigate(['../'], {
6425
+ relativeTo: this.route,
6426
+ queryParamsHandling: 'preserve',
6427
+ })
6428
+ .catch(error => {
6429
+ console.error('[taon-cms-post-details-page] Unable to cancel post creation', error);
6430
+ });
6090
6431
  }
6091
6432
  }
6092
6433
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostDetailsPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -6094,41 +6435,51 @@ class TaonCmsPostDetailsPageComponent {
6094
6435
  @if (page$ | async; as page) {
6095
6436
  <a
6096
6437
  mat-button
6097
- routerLink="../"
6098
- >{{ t.gettext('Back to Posts') }}</a
6438
+ (click)="goBack(page.fromCourses)"
6439
+ >{{
6440
+ page.fromCourses
6441
+ ? t.gettext('Back to Courses')
6442
+ : t.gettext('Back to Posts')
6443
+ }}</a
6099
6444
  >
6100
6445
  <taon-cms-post
6101
6446
  [post]="page.post"
6102
6447
  [mode]="page.create ? 'add' : 'view'"
6103
6448
  (changed)="onChanged($event, page.create)"
6104
6449
  (duplicated)="openPost($event)"
6105
- (cancelled)="onCancelled(page.create)" />
6450
+ (cancelled)="onCancelled(page.create)"
6451
+ (actionButtonsTemplate)="setFooterTemplate($event)" />
6106
6452
  }
6107
- `, 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 }); }
6453
+ `, 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: "component", type: TaonCmsPostComponent, selector: "taon-cms-post", inputs: ["post", "mode"], outputs: ["modeChange", "changed", "deleted", "duplicated", "cancelled", "actionButtonsTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6108
6454
  }
6109
6455
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostDetailsPageComponent, decorators: [{
6110
6456
  type: Component,
6111
6457
  args: [{
6112
6458
  selector: 'taon-cms-post-details-page',
6113
6459
  changeDetection: ChangeDetectionStrategy.OnPush,
6114
- imports: [AsyncPipe, MatButtonModule, RouterLink, TaonCmsPostComponent],
6460
+ imports: [AsyncPipe, MatButtonModule, TaonCmsPostComponent],
6115
6461
  template: `
6116
6462
  @if (page$ | async; as page) {
6117
6463
  <a
6118
6464
  mat-button
6119
- routerLink="../"
6120
- >{{ t.gettext('Back to Posts') }}</a
6465
+ (click)="goBack(page.fromCourses)"
6466
+ >{{
6467
+ page.fromCourses
6468
+ ? t.gettext('Back to Courses')
6469
+ : t.gettext('Back to Posts')
6470
+ }}</a
6121
6471
  >
6122
6472
  <taon-cms-post
6123
6473
  [post]="page.post"
6124
6474
  [mode]="page.create ? 'add' : 'view'"
6125
6475
  (changed)="onChanged($event, page.create)"
6126
6476
  (duplicated)="openPost($event)"
6127
- (cancelled)="onCancelled(page.create)" />
6477
+ (cancelled)="onCancelled(page.create)"
6478
+ (actionButtonsTemplate)="setFooterTemplate($event)" />
6128
6479
  }
6129
6480
  `,
6130
6481
  }]
6131
- }] });
6482
+ }], ctorParameters: () => [] });
6132
6483
 
6133
6484
  var taonCmsPostDetailsPage_component = /*#__PURE__*/Object.freeze({
6134
6485
  __proto__: null,
@@ -6137,7 +6488,7 @@ var taonCmsPostDetailsPage_component = /*#__PURE__*/Object.freeze({
6137
6488
 
6138
6489
  //#region imports
6139
6490
  //#endregion
6140
- 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-post-table-actions.directive.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-BD4-1New.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-DdK3CYLj.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-Cwi7pcvq.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.html.en-US.i18n.data-D1XI6u8V.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-DaE0bfxU.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-CZ0mZdO-.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-B8PjJ2_u.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-D5dkM1Rg.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-CTYkGigp.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-BMHc1eXs.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-BedZOCRt.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-DqM60DP9.mjs')).default } });
6491
+ 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-post-table-actions.directive.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-BVFE-lu5.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-CEyIUnLc.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-BJyXHMqp.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.html.en-US.i18n.data-Bz5Qa6eJ.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-BEtQS-0C.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-BDH-9r3S.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-BKDX2iwM.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-D1D80yR3.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-aMqPM6ev.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-BMHc1eXs.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-BedZOCRt.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-DqM60DP9.mjs')).default } });
6141
6492
  class TaonCmsPostsBackofficeComponent extends TaonCmsPostTableActions {
6142
6493
  constructor() {
6143
6494
  super(...arguments);
@@ -6147,6 +6498,7 @@ class TaonCmsPostsBackofficeComponent extends TaonCmsPostTableActions {
6147
6498
  this.columns = [
6148
6499
  { header: 'ID', field: 'id', sortable: true },
6149
6500
  { header: this.t.gettext('Title'), field: 'title', sortable: true },
6501
+ { header: this.t.gettext('Slug'), field: 'slug', sortable: true },
6150
6502
  { header: this.t.gettext('Status'), field: 'status', sortable: true },
6151
6503
  this.actionsColumn,
6152
6504
  ];
@@ -6161,11 +6513,18 @@ class TaonCmsPostsBackofficeComponent extends TaonCmsPostTableActions {
6161
6513
  this.reload();
6162
6514
  }
6163
6515
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostsBackofficeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
6164
- 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 }], usesInheritance: 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 }); }
6516
+ 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 }], usesInheritance: 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', 'slug', 'status']\"\n tableId=\"cms-posts\"\n storeTableFilters=\"query-params\"\n [filtersTemplate]=\"filtersTemplate\"\n searchMode=\"advanced\"\n (addingItem)=\"add()\">\n</taon-datatable>\n<ng-template\n #filtersTemplate\n let-filters=\"filters\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('ID') }}</mat-label>\n <input\n matInput\n [(ngModel)]=\"filters.id\"\n (keyup.enter)=\"datatable.applyAdvancedFilters()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Title') }}</mat-label>\n <input\n matInput\n [(ngModel)]=\"filters.title\"\n (keyup.enter)=\"datatable.applyAdvancedFilters()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Slug') }}</mat-label>\n <input\n matInput\n [(ngModel)]=\"filters.slug\"\n (keyup.enter)=\"datatable.applyAdvancedFilters()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Status') }}</mat-label>\n <mat-select [(ngModel)]=\"filters.status\">\n <mat-option value=\"published\">{{ t.gettext('Published') }}</mat-option>\n <mat-option value=\"draft\">{{ t.gettext('Draft') }}</mat-option>\n <mat-option value=\"archived\">{{ t.gettext('Archived') }}</mat-option>\n </mat-select>\n </mat-form-field>\n</ng-template>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { 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: i5.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$1.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$1.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", "filtersTemplate", "storeTablePagination", "storeTableFilters", "tableId", "callQueryMethod", "data", "showPaginator"], outputs: ["expansionChange", "addingItem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6165
6517
  }
6166
6518
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostsBackofficeComponent, decorators: [{
6167
6519
  type: Component,
6168
- 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"] }]
6520
+ args: [{ selector: 'app-taon-cms-posts-backoffice', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
6521
+ FormsModule,
6522
+ MatButtonModule,
6523
+ MatFormFieldModule,
6524
+ MatInputModule,
6525
+ MatSelectModule,
6526
+ TaonDatatableComponent,
6527
+ ], 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', 'slug', 'status']\"\n tableId=\"cms-posts\"\n storeTableFilters=\"query-params\"\n [filtersTemplate]=\"filtersTemplate\"\n searchMode=\"advanced\"\n (addingItem)=\"add()\">\n</taon-datatable>\n<ng-template\n #filtersTemplate\n let-filters=\"filters\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('ID') }}</mat-label>\n <input\n matInput\n [(ngModel)]=\"filters.id\"\n (keyup.enter)=\"datatable.applyAdvancedFilters()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Title') }}</mat-label>\n <input\n matInput\n [(ngModel)]=\"filters.title\"\n (keyup.enter)=\"datatable.applyAdvancedFilters()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Slug') }}</mat-label>\n <input\n matInput\n [(ngModel)]=\"filters.slug\"\n (keyup.enter)=\"datatable.applyAdvancedFilters()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ t.gettext('Status') }}</mat-label>\n <mat-select [(ngModel)]=\"filters.status\">\n <mat-option value=\"published\">{{ t.gettext('Published') }}</mat-option>\n <mat-option value=\"draft\">{{ t.gettext('Draft') }}</mat-option>\n <mat-option value=\"archived\">{{ t.gettext('Archived') }}</mat-option>\n </mat-select>\n </mat-form-field>\n</ng-template>\n", styles: [":host{display:block}\n"] }]
6169
6528
  }], propDecorators: { datatable: [{
6170
6529
  type: ViewChild,
6171
6530
  args: [TaonDatatableComponent]
@@ -6178,7 +6537,7 @@ var taonCmsPostsBackoffice_component = /*#__PURE__*/Object.freeze({
6178
6537
 
6179
6538
  //#region imports
6180
6539
  //#endregion
6181
- 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-post-table-actions.directive.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-BD4-1New.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-DdK3CYLj.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-Cwi7pcvq.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.html.en-US.i18n.data-D1XI6u8V.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-DaE0bfxU.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-CZ0mZdO-.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-B8PjJ2_u.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-D5dkM1Rg.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-CTYkGigp.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-BMHc1eXs.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-BedZOCRt.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-DqM60DP9.mjs')).default } });
6540
+ 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-post-table-actions.directive.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-BVFE-lu5.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-CEyIUnLc.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-BJyXHMqp.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html": { "en-US": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.html.en-US.i18n.data-Bz5Qa6eJ.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-BEtQS-0C.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-BDH-9r3S.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-BKDX2iwM.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-D1D80yR3.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-aMqPM6ev.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts": { "en-US": async () => (await import('./cms-browser-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-BMHc1eXs.mjs')).default, "pl-PL": async () => (await import('./cms-browser-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-BedZOCRt.mjs')).default, "de-DE": async () => (await import('./cms-browser-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-DqM60DP9.mjs')).default } });
6182
6541
  const resolvePost = async (route) => {
6183
6542
  const id = Number(route.paramMap.get('id'));
6184
6543
  if (!Number.isSafeInteger(id) || id <= 0) {
@@ -6350,6 +6709,7 @@ var index$1 = /*#__PURE__*/Object.freeze({
6350
6709
  get TaonCmsTagUtils () { return TaonCmsTagUtils; },
6351
6710
  TaonCmsTagsBackofficeRoutes: TaonCmsTagsBackofficeRoutes,
6352
6711
  TaonCmsTaxonomyBackofficeComponent: TaonCmsTaxonomyBackofficeComponent,
6712
+ TaonCmsTaxonomyQuickCreateDialogComponent: TaonCmsTaxonomyQuickCreateDialogComponent,
6353
6713
  TaonRelatedPostChooserComponent: TaonRelatedPostChooserComponent,
6354
6714
  contentError: contentError,
6355
6715
  default: index,
@@ -6371,5 +6731,5 @@ var index$1 = /*#__PURE__*/Object.freeze({
6371
6731
  * Generated bundle index. Do not edit.
6372
6732
  */
6373
6733
 
6374
- export { APP_ID, BUILD_BASE_HREF, BUILD_FRAMEWORK_CLI_NAME, CURRENT_PACKAGE_TAON_VERSION, CURRENT_PACKAGE_VERSION, CmsContext_1792506757808_applicaitonHooks, MIGRATIONS_CLASSES_FOR_CmsContext, PROJECT_NPM_NAME, TaonCmsAbstractContext, TaonCmsApplicationHook, TaonCmsApplicationHookEntity, TaonCmsAssetPreviewComponent, TaonCmsAssetsBackofficeComponent, TaonCmsAssetsBackofficeRoutes, TaonCmsBackofficeComponent, TaonCmsBackofficeRoutes, TaonCmsCategoriesBackofficeRoutes, TaonCmsCategoryAbstractContext, TaonCmsCategoryApiService, TaonCmsCategoryController, TaonCmsCategoryDefaultsValues, TaonCmsCategoryEntity, TaonCmsCategoryMiddleware, TaonCmsCategoryProvider, TaonCmsCategoryRepository, TaonCmsCategoryState, TaonCmsCategorySubscriber, TaonCmsCategoryUtils, TaonCmsCommentAbstractContext, TaonCmsCommentApiService, TaonCmsCommentController, TaonCmsCommentDefaultsValues, TaonCmsCommentEntity, TaonCmsCommentMiddleware, TaonCmsCommentProvider, TaonCmsCommentRepository, TaonCmsCommentState, TaonCmsCommentSubscriber, TaonCmsCommentUtils, TaonCmsContentAbstractContext, TaonCmsContentApiService, TaonCmsContentAssetAbstractContext, TaonCmsContentAssetApiService, TaonCmsContentAssetController, TaonCmsContentAssetDefaultsValues, TaonCmsContentAssetEntity, TaonCmsContentAssetMiddleware, TaonCmsContentAssetProvider, TaonCmsContentAssetRepository, TaonCmsContentAssetState, TaonCmsContentAssetSubscriber, TaonCmsContentAssetUtils, TaonCmsContentConfigService, TaonCmsContentController, TaonCmsContentDefaultsValues, TaonCmsContentEntity, TaonCmsContentMiddleware, TaonCmsContentPermissionAbstractContext, TaonCmsContentPermissionApiService, TaonCmsContentPermissionController, TaonCmsContentPermissionDefaultsValues, TaonCmsContentPermissionEntity, TaonCmsContentPermissionMiddleware, TaonCmsContentPermissionProvider, TaonCmsContentPermissionRepository, TaonCmsContentPermissionState, TaonCmsContentPermissionSubscriber, TaonCmsContentPermissionUtils, TaonCmsContentProvider, TaonCmsContentRepository, TaonCmsContentRevisionAbstractContext, TaonCmsContentRevisionApiService, TaonCmsContentRevisionController, TaonCmsContentRevisionDefaultsValues, TaonCmsContentRevisionEntity, TaonCmsContentRevisionMiddleware, TaonCmsContentRevisionProvider, TaonCmsContentRevisionRepository, TaonCmsContentRevisionState, TaonCmsContentRevisionSubscriber, TaonCmsContentRevisionUtils, TaonCmsContentState, TaonCmsContentStorageController, TaonCmsContentSubscriber, TaonCmsContentTagAbstractContext, TaonCmsContentTagApiService, TaonCmsContentTagController, TaonCmsContentTagDefaultsValues, TaonCmsContentTagEntity, TaonCmsContentTagMiddleware, TaonCmsContentTagProvider, TaonCmsContentTagRepository, TaonCmsContentTagState, TaonCmsContentTagSubscriber, TaonCmsContentTagUtils, TaonCmsContentType, TaonCmsContentUtils, TaonCmsCourseBackofficeComponent, TaonCmsCourseBackofficeRoutes, TaonCmsCourseContentsComponent, TaonCmsCourseCoverComponent, TaonCmsEditableDirective, TaonCmsPostComponent, TaonCmsPostDetailsPageComponent, TaonCmsPostRoutes, TaonCmsPostTableActions, TaonCmsPostsBackofficeComponent, TaonCmsPostsBackofficeRoutes, TaonCmsRevisionChooserComponent, TaonCmsTagAbstractContext, TaonCmsTagApiService, TaonCmsTagController, TaonCmsTagDefaultsValues, TaonCmsTagEntity, TaonCmsTagMiddleware, TaonCmsTagProvider, TaonCmsTagRepository, TaonCmsTagState, TaonCmsTagSubscriber, TaonCmsTagUtils, TaonCmsTagsBackofficeRoutes, TaonCmsTaxonomyBackofficeComponent, TaonRelatedPostChooserComponent, contentError, defaultThumbnailKey, defaultThumbnailUrl, generateVideoThumbnail, requireContentId, requireContentVersion, resolveTemplateVariables, startCli, trackCmsUpload, validateCategoryHierarchy, validateContentInput, validateTaxonomy, visiblePixelRatio };
6734
+ export { APP_ID, BUILD_BASE_HREF, BUILD_FRAMEWORK_CLI_NAME, CURRENT_PACKAGE_TAON_VERSION, CURRENT_PACKAGE_VERSION, CmsContext_1792506757808_applicaitonHooks, MIGRATIONS_CLASSES_FOR_CmsContext, PROJECT_NPM_NAME, TaonCmsAbstractContext, TaonCmsApplicationHook, TaonCmsApplicationHookEntity, TaonCmsAssetPreviewComponent, TaonCmsAssetsBackofficeComponent, TaonCmsAssetsBackofficeRoutes, TaonCmsBackofficeComponent, TaonCmsBackofficeRoutes, TaonCmsCategoriesBackofficeRoutes, TaonCmsCategoryAbstractContext, TaonCmsCategoryApiService, TaonCmsCategoryController, TaonCmsCategoryDefaultsValues, TaonCmsCategoryEntity, TaonCmsCategoryMiddleware, TaonCmsCategoryProvider, TaonCmsCategoryRepository, TaonCmsCategoryState, TaonCmsCategorySubscriber, TaonCmsCategoryUtils, TaonCmsCommentAbstractContext, TaonCmsCommentApiService, TaonCmsCommentController, TaonCmsCommentDefaultsValues, TaonCmsCommentEntity, TaonCmsCommentMiddleware, TaonCmsCommentProvider, TaonCmsCommentRepository, TaonCmsCommentState, TaonCmsCommentSubscriber, TaonCmsCommentUtils, TaonCmsContentAbstractContext, TaonCmsContentApiService, TaonCmsContentAssetAbstractContext, TaonCmsContentAssetApiService, TaonCmsContentAssetController, TaonCmsContentAssetDefaultsValues, TaonCmsContentAssetEntity, TaonCmsContentAssetMiddleware, TaonCmsContentAssetProvider, TaonCmsContentAssetRepository, TaonCmsContentAssetState, TaonCmsContentAssetSubscriber, TaonCmsContentAssetUtils, TaonCmsContentConfigService, TaonCmsContentController, TaonCmsContentDefaultsValues, TaonCmsContentEntity, TaonCmsContentMiddleware, TaonCmsContentPermissionAbstractContext, TaonCmsContentPermissionApiService, TaonCmsContentPermissionController, TaonCmsContentPermissionDefaultsValues, TaonCmsContentPermissionEntity, TaonCmsContentPermissionMiddleware, TaonCmsContentPermissionProvider, TaonCmsContentPermissionRepository, TaonCmsContentPermissionState, TaonCmsContentPermissionSubscriber, TaonCmsContentPermissionUtils, TaonCmsContentProvider, TaonCmsContentRepository, TaonCmsContentRevisionAbstractContext, TaonCmsContentRevisionApiService, TaonCmsContentRevisionController, TaonCmsContentRevisionDefaultsValues, TaonCmsContentRevisionEntity, TaonCmsContentRevisionMiddleware, TaonCmsContentRevisionProvider, TaonCmsContentRevisionRepository, TaonCmsContentRevisionState, TaonCmsContentRevisionSubscriber, TaonCmsContentRevisionUtils, TaonCmsContentState, TaonCmsContentStorageController, TaonCmsContentSubscriber, TaonCmsContentTagAbstractContext, TaonCmsContentTagApiService, TaonCmsContentTagController, TaonCmsContentTagDefaultsValues, TaonCmsContentTagEntity, TaonCmsContentTagMiddleware, TaonCmsContentTagProvider, TaonCmsContentTagRepository, TaonCmsContentTagState, TaonCmsContentTagSubscriber, TaonCmsContentTagUtils, TaonCmsContentType, TaonCmsContentUtils, TaonCmsCourseBackofficeComponent, TaonCmsCourseBackofficeRoutes, TaonCmsCourseContentsComponent, TaonCmsCourseCoverComponent, TaonCmsEditableDirective, TaonCmsPostComponent, TaonCmsPostDetailsPageComponent, TaonCmsPostRoutes, TaonCmsPostTableActions, TaonCmsPostsBackofficeComponent, TaonCmsPostsBackofficeRoutes, TaonCmsRevisionChooserComponent, TaonCmsTagAbstractContext, TaonCmsTagApiService, TaonCmsTagController, TaonCmsTagDefaultsValues, TaonCmsTagEntity, TaonCmsTagMiddleware, TaonCmsTagProvider, TaonCmsTagRepository, TaonCmsTagState, TaonCmsTagSubscriber, TaonCmsTagUtils, TaonCmsTagsBackofficeRoutes, TaonCmsTaxonomyBackofficeComponent, TaonCmsTaxonomyQuickCreateDialogComponent, TaonRelatedPostChooserComponent, contentError, defaultThumbnailKey, defaultThumbnailUrl, generateVideoThumbnail, requireContentId, requireContentVersion, resolveTemplateVariables, startCli, trackCmsUpload, validateCategoryHierarchy, validateContentInput, validateTaxonomy, visiblePixelRatio };
6375
6735
  //# sourceMappingURL=cms-browser.mjs.map