@taon-dev/cms 21.0.21 → 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/websql';
15
15
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
16
- import { TaonDatatableComponent, adminLazyRoute as adminLazyRoute$1, TaonConfirmDialogComponent } from '@taon-dev/ui/websql';
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/websql';
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
  let TaonCmsApplicationHookEntity = class TaonCmsApplicationHookEntity extends TaonBaseEntity {
@@ -361,7 +363,7 @@ const CURRENT_PACKAGE_TAON_VERSION = 'v21';
361
363
  /**
362
364
  * Autogenerated by current cli tool. Use *tnp release* to bump version.
363
365
  */
364
- const CURRENT_PACKAGE_VERSION = '21.0.21';
366
+ const CURRENT_PACKAGE_VERSION = '21.0.23';
365
367
  // THIS FILE IS GENERATED - DO NOT MODIFY
366
368
 
367
369
  //#region tnp-helpers cli template
@@ -573,7 +575,7 @@ function validateContentInput(input, creating = false) {
573
575
  }
574
576
  }
575
577
 
576
- const t$h = Translation.for('src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts', { "src/lib/taon-cms-category/taon-cms-category.controller.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-category.controller.ts.en-US.i18n.data-C96XxpGk.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-category.controller.ts.pl-PL.i18n.data-C32ghbeJ.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-category.controller.ts.de-DE.i18n.data-BECrfk3P.mjs')).default }, "src/lib/taon-cms-category/taon-cms-category.repository.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-category.repository.ts.en-US.i18n.data-CpNHhbea.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-category.repository.ts.pl-PL.i18n.data-76d2FPM7.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-category.repository.ts.de-DE.i18n.data-b-MJViKD.mjs')).default }, "src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-taxonomy.validation.ts.en-US.i18n.data-6BvlMJFs.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-taxonomy.validation.ts.pl-PL.i18n.data-D7qY_5ba.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-taxonomy.validation.ts.de-DE.i18n.data-mXyxAtms.mjs')).default } });
578
+ const t$i = Translation.for('src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts', { "src/lib/taon-cms-category/taon-cms-category.controller.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-category.controller.ts.en-US.i18n.data-C96XxpGk.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-category.controller.ts.pl-PL.i18n.data-C32ghbeJ.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-category.controller.ts.de-DE.i18n.data-BECrfk3P.mjs')).default }, "src/lib/taon-cms-category/taon-cms-category.repository.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-category.repository.ts.en-US.i18n.data-CpNHhbea.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-category.repository.ts.pl-PL.i18n.data-76d2FPM7.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-category.repository.ts.de-DE.i18n.data-b-MJViKD.mjs')).default }, "src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-taxonomy.validation.ts.en-US.i18n.data-6BvlMJFs.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-taxonomy.validation.ts.pl-PL.i18n.data-D7qY_5ba.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-taxonomy.validation.ts.de-DE.i18n.data-mXyxAtms.mjs')).default } });
577
579
  function validateTaxonomy(input) {
578
580
  if (!input ||
579
581
  typeof input.name !== 'string' ||
@@ -581,7 +583,7 @@ function validateTaxonomy(input) {
581
583
  typeof input.slug !== 'string' ||
582
584
  !input.slug.trim() ||
583
585
  (input.description !== null && typeof input.description !== 'string')) {
584
- contentError(t$h.gettext('Name, slug, and a valid description are required.'));
586
+ contentError(t$i.gettext('Name, slug, and a valid description are required.'));
585
587
  }
586
588
  }
587
589
  function validateCategoryHierarchy(id, parentId, categories) {
@@ -592,19 +594,19 @@ function validateCategoryHierarchy(id, parentId, categories) {
592
594
  let current = parentId;
593
595
  while (current !== null) {
594
596
  if (visited.has(current)) {
595
- contentError(t$h.gettext('A category cannot be its own ancestor.'));
597
+ contentError(t$i.gettext('A category cannot be its own ancestor.'));
596
598
  }
597
599
  visited.add(current);
598
600
  const parent = categories.find(category => category.id === current);
599
601
  if (!parent) {
600
- contentError(t$h.gettext('The parent category does not exist.'));
602
+ contentError(t$i.gettext('The parent category does not exist.'));
601
603
  }
602
604
  current = parent.parentCategoryId;
603
605
  }
604
606
  }
605
607
 
606
608
  //#endregion
607
- const t$g = Translation.for('src/lib/taon-cms-category/taon-cms-category.repository.ts', { "src/lib/taon-cms-category/taon-cms-category.controller.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-category.controller.ts.en-US.i18n.data-C96XxpGk.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-category.controller.ts.pl-PL.i18n.data-C32ghbeJ.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-category.controller.ts.de-DE.i18n.data-BECrfk3P.mjs')).default }, "src/lib/taon-cms-category/taon-cms-category.repository.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-category.repository.ts.en-US.i18n.data-CpNHhbea.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-category.repository.ts.pl-PL.i18n.data-76d2FPM7.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-category.repository.ts.de-DE.i18n.data-b-MJViKD.mjs')).default }, "src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-taxonomy.validation.ts.en-US.i18n.data-6BvlMJFs.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-taxonomy.validation.ts.pl-PL.i18n.data-D7qY_5ba.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-taxonomy.validation.ts.de-DE.i18n.data-mXyxAtms.mjs')).default } });
609
+ 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-websql-taon-cms-category.controller.ts.en-US.i18n.data-C96XxpGk.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-category.controller.ts.pl-PL.i18n.data-C32ghbeJ.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-category.controller.ts.de-DE.i18n.data-BECrfk3P.mjs')).default }, "src/lib/taon-cms-category/taon-cms-category.repository.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-category.repository.ts.en-US.i18n.data-CpNHhbea.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-category.repository.ts.pl-PL.i18n.data-76d2FPM7.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-category.repository.ts.de-DE.i18n.data-b-MJViKD.mjs')).default }, "src/lib/taon-cms-category/taon-cms-taxonomy.validation.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-taxonomy.validation.ts.en-US.i18n.data-6BvlMJFs.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-taxonomy.validation.ts.pl-PL.i18n.data-D7qY_5ba.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-taxonomy.validation.ts.de-DE.i18n.data-mXyxAtms.mjs')).default } });
608
610
  let TaonCmsCategoryRepository = class TaonCmsCategoryRepository extends TaonBaseRepository {
609
611
  constructor() {
610
612
  super(...arguments);
@@ -614,7 +616,7 @@ let TaonCmsCategoryRepository = class TaonCmsCategoryRepository extends TaonBase
614
616
  //#region @websqlFunc
615
617
  validateTaxonomy(input);
616
618
  if (!Number.isSafeInteger(input.sortOrder)) {
617
- contentError(t$g.gettext('Sort order must be an integer.'));
619
+ contentError(t$h.gettext('Sort order must be an integer.'));
618
620
  }
619
621
  if (id !== null) {
620
622
  requireContentId(id);
@@ -631,7 +633,7 @@ let TaonCmsCategoryRepository = class TaonCmsCategoryRepository extends TaonBase
631
633
  const slug = input.slug.trim();
632
634
  const existing = await repository.findOneBy({ slug });
633
635
  if (existing && existing.id !== id) {
634
- contentError(t$g.gettext('This category slug is already in use.'), 409);
636
+ contentError(t$h.gettext('This category slug is already in use.'), 409);
635
637
  }
636
638
  return repository.save(repository.create({
637
639
  ...(id === null ? {} : { id }),
@@ -656,7 +658,7 @@ let TaonCmsCategoryRepository = class TaonCmsCategoryRepository extends TaonBase
656
658
  .getRepository(TaonCmsContentEntity)
657
659
  .countBy({ categoryId: id });
658
660
  if (children || posts) {
659
- contentError(t$g.gettext('Reassign child categories and posts before deleting this category.'), 409);
661
+ contentError(t$h.gettext('Reassign child categories and posts before deleting this category.'), 409);
660
662
  }
661
663
  await manager.getRepository(TaonCmsCategoryEntity).delete(id);
662
664
  });
@@ -1305,7 +1307,7 @@ TaonCmsTagEntity = __decorate([
1305
1307
  ], TaonCmsTagEntity);
1306
1308
 
1307
1309
  //#endregion
1308
- const t$f = Translation.for('src/lib/taon-cms-tag/taon-cms-tag.repository.ts', { "src/lib/taon-cms-tag/taon-cms-tag.controller.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-tag.controller.ts.en-US.i18n.data-DwLvx6gF.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-tag.controller.ts.pl-PL.i18n.data-B2PM2PXT.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-tag.controller.ts.de-DE.i18n.data-DdKa6EHY.mjs')).default }, "src/lib/taon-cms-tag/taon-cms-tag.repository.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-tag.repository.ts.en-US.i18n.data-CteIjY45.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-tag.repository.ts.pl-PL.i18n.data-CA9WTHVH.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-tag.repository.ts.de-DE.i18n.data-XJ-DJ487.mjs')).default } });
1310
+ 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-websql-taon-cms-tag.controller.ts.en-US.i18n.data-DwLvx6gF.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-tag.controller.ts.pl-PL.i18n.data-B2PM2PXT.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-tag.controller.ts.de-DE.i18n.data-DdKa6EHY.mjs')).default }, "src/lib/taon-cms-tag/taon-cms-tag.repository.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-tag.repository.ts.en-US.i18n.data-CteIjY45.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-tag.repository.ts.pl-PL.i18n.data-CA9WTHVH.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-tag.repository.ts.de-DE.i18n.data-XJ-DJ487.mjs')).default } });
1309
1311
  let TaonCmsTagRepository = class TaonCmsTagRepository extends TaonBaseRepository {
1310
1312
  constructor() {
1311
1313
  super(...arguments);
@@ -1326,7 +1328,7 @@ let TaonCmsTagRepository = class TaonCmsTagRepository extends TaonBaseRepository
1326
1328
  const slug = input.slug.trim();
1327
1329
  const existing = await repository.find({ where: [{ name }, { slug }] });
1328
1330
  if (existing.some(tag => tag.id !== id)) {
1329
- contentError(t$f.gettext('This tag name or slug is already in use.'), 409);
1331
+ contentError(t$g.gettext('This tag name or slug is already in use.'), 409);
1330
1332
  }
1331
1333
  return repository.save(repository.create({
1332
1334
  ...(id === null ? {} : { id }),
@@ -1345,7 +1347,7 @@ let TaonCmsTagRepository = class TaonCmsTagRepository extends TaonBaseRepository
1345
1347
  if (await manager
1346
1348
  .getRepository(TaonCmsContentTagEntity)
1347
1349
  .countBy({ tagId: id })) {
1348
- contentError(t$f.gettext('Remove this tag from posts before deleting it.'), 409);
1350
+ contentError(t$g.gettext('Remove this tag from posts before deleting it.'), 409);
1349
1351
  }
1350
1352
  await manager.getRepository(TaonCmsTagEntity).delete(id);
1351
1353
  });
@@ -3556,10 +3558,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
3556
3558
  type: Injectable
3557
3559
  }] });
3558
3560
 
3559
- const t$e = Translation.for('src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts', { "src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-asset-preview.component.html.en-US.i18n.data-BJxrA1qp.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-asset-preview.component.html.pl-PL.i18n.data-CPeH_o7k.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-asset-preview.component.html.de-DE.i18n.data-CHQQllMO.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-asset-preview.component.ts.en-US.i18n.data-BHDb5flk.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-asset-preview.component.ts.pl-PL.i18n.data-D4NTLNZw.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-asset-preview.component.ts.de-DE.i18n.data-ClExLtU2.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.html.en-US.i18n.data-Zh8YZeJc.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.html.pl-PL.i18n.data-BkpgF5Bk.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.html.de-DE.i18n.data-C8vSPTrN.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.ts.en-US.i18n.data-Dx3lg2D8.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data-PW1BLu1i.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.ts.de-DE.i18n.data-CA_UfC8X.mjs')).default } });
3561
+ 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-websql-taon-cms-asset-preview.component.html.en-US.i18n.data-BJxrA1qp.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-asset-preview.component.html.pl-PL.i18n.data-CPeH_o7k.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-asset-preview.component.html.de-DE.i18n.data-CHQQllMO.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-asset-preview.component.ts.en-US.i18n.data-BHDb5flk.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-asset-preview.component.ts.pl-PL.i18n.data-D4NTLNZw.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-asset-preview.component.ts.de-DE.i18n.data-ClExLtU2.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.html.en-US.i18n.data-Zh8YZeJc.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.html.pl-PL.i18n.data-BkpgF5Bk.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.html.de-DE.i18n.data-C8vSPTrN.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.ts.en-US.i18n.data-Dx3lg2D8.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data-PW1BLu1i.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.ts.de-DE.i18n.data-CA_UfC8X.mjs')).default } });
3560
3562
  class TaonCmsAssetPreviewComponent {
3561
3563
  constructor() {
3562
- this.t = t$e.for(this);
3564
+ this.t = t$f.for(this);
3563
3565
  this.api = inject(TaonCmsContentApiService);
3564
3566
  this.destroyRef = inject(DestroyRef);
3565
3567
  this.url = signal('', ...(ngDevMode ? [{ debugName: "url" }] : []));
@@ -3621,10 +3623,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
3621
3623
  args: [{ required: true }]
3622
3624
  }] } });
3623
3625
 
3624
- const t$d = Translation.for('src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts', { "src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-asset-preview.component.html.en-US.i18n.data-BJxrA1qp.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-asset-preview.component.html.pl-PL.i18n.data-CPeH_o7k.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-asset-preview.component.html.de-DE.i18n.data-CHQQllMO.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-asset-preview.component.ts.en-US.i18n.data-BHDb5flk.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-asset-preview.component.ts.pl-PL.i18n.data-D4NTLNZw.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-asset-preview.component.ts.de-DE.i18n.data-ClExLtU2.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.html.en-US.i18n.data-Zh8YZeJc.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.html.pl-PL.i18n.data-BkpgF5Bk.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.html.de-DE.i18n.data-C8vSPTrN.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.ts.en-US.i18n.data-Dx3lg2D8.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data-PW1BLu1i.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.ts.de-DE.i18n.data-CA_UfC8X.mjs')).default } });
3626
+ 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-websql-taon-cms-asset-preview.component.html.en-US.i18n.data-BJxrA1qp.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-asset-preview.component.html.pl-PL.i18n.data-CPeH_o7k.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-asset-preview.component.html.de-DE.i18n.data-CHQQllMO.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-asset-preview.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-asset-preview.component.ts.en-US.i18n.data-BHDb5flk.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-asset-preview.component.ts.pl-PL.i18n.data-D4NTLNZw.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-asset-preview.component.ts.de-DE.i18n.data-ClExLtU2.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.html.en-US.i18n.data-Zh8YZeJc.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.html.pl-PL.i18n.data-BkpgF5Bk.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.html.de-DE.i18n.data-C8vSPTrN.mjs')).default }, "src/lib/taon-cms-assets-backoffice/taon-cms-assets-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.ts.en-US.i18n.data-Dx3lg2D8.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.ts.pl-PL.i18n.data-PW1BLu1i.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-assets-backoffice.component.ts.de-DE.i18n.data-CA_UfC8X.mjs')).default } });
3625
3627
  class TaonCmsAssetsBackofficeComponent {
3626
3628
  constructor() {
3627
- this.t = t$d.for(this);
3629
+ this.t = t$e.for(this);
3628
3630
  this.api = inject(TaonCmsContentApiService);
3629
3631
  this.destroyRef = inject(DestroyRef);
3630
3632
  this.assets = signal([], ...(ngDevMode ? [{ debugName: "assets" }] : []));
@@ -3664,7 +3666,7 @@ class TaonCmsAssetsBackofficeComponent {
3664
3666
  });
3665
3667
  }
3666
3668
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsAssetsBackofficeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3667
- 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 }); }
3669
+ 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 }); }
3668
3670
  }
3669
3671
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsAssetsBackofficeComponent, decorators: [{
3670
3672
  type: Component,
@@ -3694,10 +3696,10 @@ var taonCmsAssetsBackoffice_routes = /*#__PURE__*/Object.freeze({
3694
3696
 
3695
3697
  //#region imports
3696
3698
  //#endregion
3697
- const t$c = Translation.for('src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts', { "src/lib/taon-cms-backoffice/taon-cms-backoffice.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-backoffice.component.html.en-US.i18n.data-BcXsjPgL.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-backoffice.component.html.pl-PL.i18n.data-AgLZxi-R.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-backoffice.component.html.de-DE.i18n.data-D8iRvIyP.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-backoffice.component.ts.en-US.i18n.data-Dp8u4MhM.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-backoffice.component.ts.pl-PL.i18n.data-CibwQg__.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-backoffice.component.ts.de-DE.i18n.data-BdZAX0Ty.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-backoffice.routes.ts.en-US.i18n.data-nw5h-4Th.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-backoffice.routes.ts.pl-PL.i18n.data-DWPxduFo.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-backoffice.routes.ts.de-DE.i18n.data-D2bKsNoS.mjs')).default } });
3699
+ 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-websql-taon-cms-backoffice.component.html.en-US.i18n.data-BcXsjPgL.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-backoffice.component.html.pl-PL.i18n.data-AgLZxi-R.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-backoffice.component.html.de-DE.i18n.data-D8iRvIyP.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-backoffice.component.ts.en-US.i18n.data-Dp8u4MhM.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-backoffice.component.ts.pl-PL.i18n.data-CibwQg__.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-backoffice.component.ts.de-DE.i18n.data-BdZAX0Ty.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-backoffice.routes.ts.en-US.i18n.data-nw5h-4Th.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-backoffice.routes.ts.pl-PL.i18n.data-DWPxduFo.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-backoffice.routes.ts.de-DE.i18n.data-D2bKsNoS.mjs')).default } });
3698
3700
  class TaonCmsBackofficeComponent {
3699
3701
  constructor() {
3700
- this.t = t$c.for(this);
3702
+ this.t = t$d.for(this);
3701
3703
  this.componentLoaded = false;
3702
3704
  }
3703
3705
  onRouteActivate(component) {
@@ -3721,7 +3723,7 @@ var taonCmsBackoffice_component = /*#__PURE__*/Object.freeze({
3721
3723
 
3722
3724
  //#endregion
3723
3725
  const adminLazyRoute = (adminLazyRoute$1);
3724
- const t$b = Translation.for('src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts', { "src/lib/taon-cms-backoffice/taon-cms-backoffice.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-backoffice.component.html.en-US.i18n.data-BcXsjPgL.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-backoffice.component.html.pl-PL.i18n.data-AgLZxi-R.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-backoffice.component.html.de-DE.i18n.data-D8iRvIyP.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-backoffice.component.ts.en-US.i18n.data-Dp8u4MhM.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-backoffice.component.ts.pl-PL.i18n.data-CibwQg__.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-backoffice.component.ts.de-DE.i18n.data-BdZAX0Ty.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-backoffice.routes.ts.en-US.i18n.data-nw5h-4Th.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-backoffice.routes.ts.pl-PL.i18n.data-DWPxduFo.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-backoffice.routes.ts.de-DE.i18n.data-D2bKsNoS.mjs')).default } });
3726
+ 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-websql-taon-cms-backoffice.component.html.en-US.i18n.data-BcXsjPgL.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-backoffice.component.html.pl-PL.i18n.data-AgLZxi-R.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-backoffice.component.html.de-DE.i18n.data-D8iRvIyP.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-backoffice.component.ts.en-US.i18n.data-Dp8u4MhM.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-backoffice.component.ts.pl-PL.i18n.data-CibwQg__.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-backoffice.component.ts.de-DE.i18n.data-BdZAX0Ty.mjs')).default }, "src/lib/taon-cms-backoffice/taon-cms-backoffice.routes.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-backoffice.routes.ts.en-US.i18n.data-nw5h-4Th.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-backoffice.routes.ts.pl-PL.i18n.data-DWPxduFo.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-backoffice.routes.ts.de-DE.i18n.data-D2bKsNoS.mjs')).default } });
3725
3727
  const TaonCmsBackofficeRoutes = [
3726
3728
  {
3727
3729
  path: '',
@@ -3733,7 +3735,7 @@ const TaonCmsBackofficeRoutes = [
3733
3735
  return !context?.hasAccess.toManageCms;
3734
3736
  },
3735
3737
  path: 'posts',
3736
- menuItem: t$b.signal.gettext('Posts'),
3738
+ menuItem: t$c.signal.gettext('Posts'),
3737
3739
  expandable: true,
3738
3740
  icon: 'edit',
3739
3741
  loader: () => Promise.resolve().then(function () { return index$1; }).then(m => m.TaonCmsPostsBackofficeRoutes),
@@ -3744,7 +3746,7 @@ const TaonCmsBackofficeRoutes = [
3744
3746
  return !context?.hasAccess.toManageCms;
3745
3747
  },
3746
3748
  path: 'courses',
3747
- menuItem: t$b.signal.gettext('Courses'),
3749
+ menuItem: t$c.signal.gettext('Courses'),
3748
3750
  expandable: false,
3749
3751
  icon: 'school',
3750
3752
  loader: () => Promise.resolve().then(function () { return index$1; }).then(m => m.TaonCmsCourseBackofficeRoutes),
@@ -3752,7 +3754,7 @@ const TaonCmsBackofficeRoutes = [
3752
3754
  adminLazyRoute({
3753
3755
  isDisabled: ({ context }) => !context?.hasAccess.toManageCms,
3754
3756
  path: 'assets',
3755
- menuItem: t$b.signal.gettext('Assets'),
3757
+ menuItem: t$c.signal.gettext('Assets'),
3756
3758
  expandable: false,
3757
3759
  icon: 'perm_media',
3758
3760
  loader: () => Promise.resolve().then(function () { return taonCmsAssetsBackoffice_routes; }).then(m => m.TaonCmsAssetsBackofficeRoutes),
@@ -3760,7 +3762,7 @@ const TaonCmsBackofficeRoutes = [
3760
3762
  adminLazyRoute({
3761
3763
  isDisabled: ({ context }) => !context?.hasAccess.toManageCms,
3762
3764
  path: 'categories',
3763
- menuItem: t$b.signal.gettext('Categories'),
3765
+ menuItem: t$c.signal.gettext('Categories'),
3764
3766
  expandable: false,
3765
3767
  icon: 'folder',
3766
3768
  loader: () => Promise.resolve().then(function () { return taonCmsTaxonomyBackoffice_routes; }).then(m => m.TaonCmsCategoriesBackofficeRoutes),
@@ -3768,7 +3770,7 @@ const TaonCmsBackofficeRoutes = [
3768
3770
  adminLazyRoute({
3769
3771
  isDisabled: ({ context }) => !context?.hasAccess.toManageCms,
3770
3772
  path: 'tags',
3771
- menuItem: t$b.signal.gettext('Tags'),
3773
+ menuItem: t$c.signal.gettext('Tags'),
3772
3774
  expandable: false,
3773
3775
  icon: 'label',
3774
3776
  loader: () => Promise.resolve().then(function () { return taonCmsTaxonomyBackoffice_routes; }).then(m => m.TaonCmsTagsBackofficeRoutes),
@@ -4147,10 +4149,10 @@ var TaonCmsTagUtils;
4147
4149
  TaonCmsTagUtils.isActive = isActive;
4148
4150
  })(TaonCmsTagUtils || (TaonCmsTagUtils = {}));
4149
4151
 
4150
- 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-websql-taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data-CRkCojjy.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data-BXqAixFd.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data-DZu5K15E.mjs')).default }, "src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data-DKOIhHgw.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data-N4dA3kVZ.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data-DKshuSiD.mjs')).default } });
4152
+ 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-websql-taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data-CRkCojjy.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data-BXqAixFd.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data-DZu5K15E.mjs')).default }, "src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data-DKOIhHgw.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data-N4dA3kVZ.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data-DKshuSiD.mjs')).default }, "src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-quick-create-dialog.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data-DbNt8AxN.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data-DqlFgTmr.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data-BBgvZEjP.mjs')).default } });
4151
4153
  class TaonCmsTaxonomyBackofficeComponent {
4152
4154
  constructor() {
4153
- this.t = t$a.for(this);
4155
+ this.t = t$b.for(this);
4154
4156
  this.isCategory = inject(ActivatedRoute).snapshot.data['taxonomy'] === 'category';
4155
4157
  this.categories = inject(TaonCmsCategoryApiService);
4156
4158
  this.tags = inject(TaonCmsTagApiService);
@@ -4334,7 +4336,7 @@ class TaonCmsTaxonomyBackofficeComponent {
4334
4336
  };
4335
4337
  }
4336
4338
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsTaxonomyBackofficeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4337
- 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 }); }
4339
+ 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 }); }
4338
4340
  }
4339
4341
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsTaxonomyBackofficeComponent, decorators: [{
4340
4342
  type: Component,
@@ -4374,7 +4376,159 @@ var taonCmsTaxonomyBackoffice_routes = /*#__PURE__*/Object.freeze({
4374
4376
  TaonCmsTagsBackofficeRoutes: TaonCmsTagsBackofficeRoutes
4375
4377
  });
4376
4378
 
4377
- 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-websql-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-4NI8Xw9I.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-FbMIlsYe.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-x_3GCOW9.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.html.en-US.i18n.data-MKa7Bg7x.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-DbKCVK5F.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-Dzx2YyST.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-BEXiBm6D.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-CYa7VWYt.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-CTNTDm49.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-B8Dx0w7R.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-B7OXsynj.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-De7ox2r2.mjs')).default } });
4379
+ 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-websql-taon-cms-taxonomy-backoffice.component.html.en-US.i18n.data-CRkCojjy.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-taxonomy-backoffice.component.html.pl-PL.i18n.data-BXqAixFd.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-taxonomy-backoffice.component.html.de-DE.i18n.data-DZu5K15E.mjs')).default }, "src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-taxonomy-backoffice.component.ts.en-US.i18n.data-DKOIhHgw.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-taxonomy-backoffice.component.ts.pl-PL.i18n.data-N4dA3kVZ.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-taxonomy-backoffice.component.ts.de-DE.i18n.data-DKshuSiD.mjs')).default }, "src/lib/taon-cms-taxonomy-backoffice/taon-cms-taxonomy-quick-create-dialog.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-taxonomy-quick-create-dialog.component.ts.en-US.i18n.data-DbNt8AxN.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-taxonomy-quick-create-dialog.component.ts.pl-PL.i18n.data-DqlFgTmr.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-taxonomy-quick-create-dialog.component.ts.de-DE.i18n.data-BBgvZEjP.mjs')).default } });
4380
+ class TaonCmsTaxonomyQuickCreateDialogComponent {
4381
+ constructor() {
4382
+ this.t = t$a.for(this);
4383
+ this.data = inject(MAT_DIALOG_DATA);
4384
+ this.dialogRef = inject(MatDialogRef);
4385
+ this.name = '';
4386
+ this.slug = '';
4387
+ this.description = '';
4388
+ this.slugManuallySet = false;
4389
+ }
4390
+ updateName(value) {
4391
+ this.name = value;
4392
+ if (!this.slugManuallySet) {
4393
+ this.slug = _.kebabCase(value);
4394
+ }
4395
+ }
4396
+ create() {
4397
+ if (!this.name.trim() || !this.slug.trim()) {
4398
+ return;
4399
+ }
4400
+ this.dialogRef.close({
4401
+ name: this.name.trim(),
4402
+ slug: this.slug.trim(),
4403
+ description: this.description.trim() || null,
4404
+ parentCategoryId: null,
4405
+ sortOrder: 0,
4406
+ });
4407
+ }
4408
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsTaxonomyQuickCreateDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4409
+ 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: `
4410
+ <h2 mat-dialog-title>
4411
+ {{
4412
+ data.taxonomy === 'category'
4413
+ ? t.gettext('Add category')
4414
+ : t.gettext('Add tag')
4415
+ }}
4416
+ </h2>
4417
+ <form (ngSubmit)="create()">
4418
+ <mat-dialog-content>
4419
+ <mat-form-field appearance="outline">
4420
+ <mat-label>{{ t.gettext('Name') }}</mat-label>
4421
+ <input
4422
+ matInput
4423
+ name="name"
4424
+ required
4425
+ [ngModel]="name"
4426
+ (ngModelChange)="updateName($event)" />
4427
+ </mat-form-field>
4428
+ <mat-form-field appearance="outline">
4429
+ <mat-label>{{ t.gettext('Slug') }}</mat-label>
4430
+ <input
4431
+ matInput
4432
+ name="slug"
4433
+ required
4434
+ [(ngModel)]="slug"
4435
+ (input)="slugManuallySet = true" />
4436
+ </mat-form-field>
4437
+ <mat-form-field appearance="outline">
4438
+ <mat-label>{{ t.gettext('Description') }}</mat-label>
4439
+ <textarea
4440
+ matInput
4441
+ name="description"
4442
+ [(ngModel)]="description"></textarea>
4443
+ </mat-form-field>
4444
+ </mat-dialog-content>
4445
+ <mat-dialog-actions align="end">
4446
+ <button
4447
+ mat-button
4448
+ type="button"
4449
+ (click)="dialogRef.close()">
4450
+ {{ t.gettext('Cancel') }}
4451
+ </button>
4452
+ <button
4453
+ mat-flat-button
4454
+ color="primary"
4455
+ type="submit"
4456
+ [disabled]="!name.trim() || !slug.trim()">
4457
+ {{ t.gettext('Create') }}
4458
+ </button>
4459
+ </mat-dialog-actions>
4460
+ </form>
4461
+ `, 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 }); }
4462
+ }
4463
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsTaxonomyQuickCreateDialogComponent, decorators: [{
4464
+ type: Component,
4465
+ args: [{
4466
+ selector: 'taon-cms-taxonomy-quick-create-dialog',
4467
+ changeDetection: ChangeDetectionStrategy.OnPush,
4468
+ imports: [
4469
+ FormsModule,
4470
+ MatButtonModule,
4471
+ MatDialogModule,
4472
+ MatFormFieldModule,
4473
+ MatInputModule,
4474
+ ],
4475
+ template: `
4476
+ <h2 mat-dialog-title>
4477
+ {{
4478
+ data.taxonomy === 'category'
4479
+ ? t.gettext('Add category')
4480
+ : t.gettext('Add tag')
4481
+ }}
4482
+ </h2>
4483
+ <form (ngSubmit)="create()">
4484
+ <mat-dialog-content>
4485
+ <mat-form-field appearance="outline">
4486
+ <mat-label>{{ t.gettext('Name') }}</mat-label>
4487
+ <input
4488
+ matInput
4489
+ name="name"
4490
+ required
4491
+ [ngModel]="name"
4492
+ (ngModelChange)="updateName($event)" />
4493
+ </mat-form-field>
4494
+ <mat-form-field appearance="outline">
4495
+ <mat-label>{{ t.gettext('Slug') }}</mat-label>
4496
+ <input
4497
+ matInput
4498
+ name="slug"
4499
+ required
4500
+ [(ngModel)]="slug"
4501
+ (input)="slugManuallySet = true" />
4502
+ </mat-form-field>
4503
+ <mat-form-field appearance="outline">
4504
+ <mat-label>{{ t.gettext('Description') }}</mat-label>
4505
+ <textarea
4506
+ matInput
4507
+ name="description"
4508
+ [(ngModel)]="description"></textarea>
4509
+ </mat-form-field>
4510
+ </mat-dialog-content>
4511
+ <mat-dialog-actions align="end">
4512
+ <button
4513
+ mat-button
4514
+ type="button"
4515
+ (click)="dialogRef.close()">
4516
+ {{ t.gettext('Cancel') }}
4517
+ </button>
4518
+ <button
4519
+ mat-flat-button
4520
+ color="primary"
4521
+ type="submit"
4522
+ [disabled]="!name.trim() || !slug.trim()">
4523
+ {{ t.gettext('Create') }}
4524
+ </button>
4525
+ </mat-dialog-actions>
4526
+ </form>
4527
+ `,
4528
+ }]
4529
+ }] });
4530
+
4531
+ 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-websql-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-DUh-u4-P.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-juzvMnde.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-CKCKZi29.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.html.en-US.i18n.data-DCBhrRtK.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-B5lnW5fC.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-UXy-sMFK.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-DLwpMBSF.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-DusaGJ-_.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-B7blUYSz.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-B8Dx0w7R.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-B7OXsynj.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-De7ox2r2.mjs')).default } });
4378
4532
  class TaonCmsPostTableActions {
4379
4533
  constructor() {
4380
4534
  this.actionsTranslation = t$9.for(this);
@@ -4384,6 +4538,7 @@ class TaonCmsPostTableActions {
4384
4538
  this.error = signal('', ...(ngDevMode ? [{ debugName: "error" }] : []));
4385
4539
  this.destroyRef = inject(DestroyRef);
4386
4540
  this.postPath = [];
4541
+ this.backContext = 'posts';
4387
4542
  this.dialog = inject(MatDialog);
4388
4543
  this.route = inject(ActivatedRoute);
4389
4544
  this.router = inject(Router);
@@ -4427,7 +4582,18 @@ class TaonCmsPostTableActions {
4427
4582
  this.error.set(this.actionsTranslation.gettext('The Post details route is unavailable.'));
4428
4583
  return;
4429
4584
  }
4430
- void this.router.navigate([...this.postPath, id], { relativeTo: postsRoute });
4585
+ void this.router
4586
+ .navigate([...this.postPath, id], {
4587
+ relativeTo: postsRoute,
4588
+ queryParams: this.backContext === 'courses'
4589
+ ? { postOrigin: 'courses' }
4590
+ : undefined,
4591
+ queryParamsHandling: 'preserve',
4592
+ })
4593
+ .catch(error => {
4594
+ console.error('[taon-cms-posts-backoffice] Unable to open post', error);
4595
+ this.error.set(this.actionsTranslation.gettext('The Post details route is unavailable.'));
4596
+ });
4431
4597
  }
4432
4598
  duplicate(post) {
4433
4599
  if (this.duplicating()) {
@@ -4486,7 +4652,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
4486
4652
  type: Directive
4487
4653
  }] });
4488
4654
 
4489
- 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-websql-taon-cms-course-backoffice.component.html.en-US.i18n.data-B_ev_S5w.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-CzEhm95I.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.html.de-DE.i18n.data-CUk5ug7o.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.ts.en-US.i18n.data-DpyYEZSz.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-RzH83Lc_.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-DAc3VOD3.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-course-contents.component.html.en-US.i18n.data-CWd3E2aP.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-contents.component.html.pl-PL.i18n.data-DZNGFqHU.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-contents.component.html.de-DE.i18n.data-zeQEmcoN.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-course-contents.component.ts.en-US.i18n.data-C0Q4P1pi.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-contents.component.ts.pl-PL.i18n.data-B2_M5A-D.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-contents.component.ts.de-DE.i18n.data-B1c4BqwL.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-course-cover.component.ts.en-US.i18n.data-D-vw3T3O.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-cover.component.ts.pl-PL.i18n.data-DZsvqr38.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-cover.component.ts.de-DE.i18n.data-CPpw6mEf.mjs')).default } });
4655
+ 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-websql-taon-cms-course-backoffice.component.html.en-US.i18n.data-DaYr8I_Z.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-C6_Aqc3M.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.html.de-DE.i18n.data-DkSppX5j.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.ts.en-US.i18n.data-PE9qaaqh.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-CeW02Lcj.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-DvIyIfqQ.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-course-contents.component.html.en-US.i18n.data-B0x36jpK.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-contents.component.html.pl-PL.i18n.data-2drjM21N.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-contents.component.html.de-DE.i18n.data-C7w7bI4c.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-course-contents.component.ts.en-US.i18n.data-DleMuJeD.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-contents.component.ts.pl-PL.i18n.data-DgkzL0Vq.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-contents.component.ts.de-DE.i18n.data-CL2w5q-S.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-course-cover.component.ts.en-US.i18n.data-D-vw3T3O.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-cover.component.ts.pl-PL.i18n.data-DZsvqr38.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-cover.component.ts.de-DE.i18n.data-CPpw6mEf.mjs')).default } });
4490
4656
  class TaonCmsCourseContentsComponent {
4491
4657
  constructor() {
4492
4658
  this.t = t$8.for(this);
@@ -4495,6 +4661,7 @@ class TaonCmsCourseContentsComponent {
4495
4661
  this.posts = signal([], ...(ngDevMode ? [{ debugName: "posts" }] : []));
4496
4662
  this.loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
4497
4663
  this.error = signal('', ...(ngDevMode ? [{ debugName: "error" }] : []));
4664
+ this.copyFeedback = signal('', ...(ngDevMode ? [{ debugName: "copyFeedback" }] : []));
4498
4665
  this.columns = [];
4499
4666
  }
4500
4667
  ngOnInit() {
@@ -4522,12 +4689,26 @@ class TaonCmsCourseContentsComponent {
4522
4689
  },
4523
4690
  });
4524
4691
  }
4692
+ async copyCourseSlug() {
4693
+ this.copyFeedback.set('');
4694
+ try {
4695
+ if (!navigator.clipboard) {
4696
+ throw new Error('Clipboard access is unavailable.');
4697
+ }
4698
+ await navigator.clipboard.writeText(this.course.slug);
4699
+ this.copyFeedback.set(this.t.gettext('Course slug copied.'));
4700
+ }
4701
+ catch (error) {
4702
+ console.error('[taon-cms-course-contents] Unable to copy course slug', error);
4703
+ this.copyFeedback.set(this.t.gettext('The course slug could not be copied.'));
4704
+ }
4705
+ }
4525
4706
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsCourseContentsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4526
- 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 }); }
4707
+ 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 }); }
4527
4708
  }
4528
4709
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsCourseContentsComponent, decorators: [{
4529
4710
  type: Component,
4530
- 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" }]
4711
+ 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" }]
4531
4712
  }], propDecorators: { course: [{
4532
4713
  type: Input,
4533
4714
  args: [{ required: true }]
@@ -4673,7 +4854,7 @@ async function generateVideoThumbnail(file) {
4673
4854
  }
4674
4855
  }
4675
4856
 
4676
- 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-websql-taon-cms-course-backoffice.component.html.en-US.i18n.data-B_ev_S5w.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-CzEhm95I.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.html.de-DE.i18n.data-CUk5ug7o.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.ts.en-US.i18n.data-DpyYEZSz.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-RzH83Lc_.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-DAc3VOD3.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-course-contents.component.html.en-US.i18n.data-CWd3E2aP.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-contents.component.html.pl-PL.i18n.data-DZNGFqHU.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-contents.component.html.de-DE.i18n.data-zeQEmcoN.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-course-contents.component.ts.en-US.i18n.data-C0Q4P1pi.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-contents.component.ts.pl-PL.i18n.data-B2_M5A-D.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-contents.component.ts.de-DE.i18n.data-B1c4BqwL.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-course-cover.component.ts.en-US.i18n.data-D-vw3T3O.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-cover.component.ts.pl-PL.i18n.data-DZsvqr38.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-cover.component.ts.de-DE.i18n.data-CPpw6mEf.mjs')).default } });
4857
+ 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-websql-taon-cms-course-backoffice.component.html.en-US.i18n.data-DaYr8I_Z.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-C6_Aqc3M.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.html.de-DE.i18n.data-DkSppX5j.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.ts.en-US.i18n.data-PE9qaaqh.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-CeW02Lcj.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-DvIyIfqQ.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-course-contents.component.html.en-US.i18n.data-B0x36jpK.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-contents.component.html.pl-PL.i18n.data-2drjM21N.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-contents.component.html.de-DE.i18n.data-C7w7bI4c.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-course-contents.component.ts.en-US.i18n.data-DleMuJeD.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-contents.component.ts.pl-PL.i18n.data-DgkzL0Vq.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-contents.component.ts.de-DE.i18n.data-CL2w5q-S.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-course-cover.component.ts.en-US.i18n.data-D-vw3T3O.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-cover.component.ts.pl-PL.i18n.data-DZsvqr38.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-cover.component.ts.de-DE.i18n.data-CPpw6mEf.mjs')).default } });
4677
4858
  class TaonCmsCourseCoverComponent {
4678
4859
  constructor() {
4679
4860
  this.t = t$7.for(this);
@@ -4730,12 +4911,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
4730
4911
  args: [{ required: true }]
4731
4912
  }] } });
4732
4913
 
4733
- 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-websql-taon-cms-course-backoffice.component.html.en-US.i18n.data-B_ev_S5w.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-CzEhm95I.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.html.de-DE.i18n.data-CUk5ug7o.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.ts.en-US.i18n.data-DpyYEZSz.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-RzH83Lc_.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-DAc3VOD3.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-course-contents.component.html.en-US.i18n.data-CWd3E2aP.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-contents.component.html.pl-PL.i18n.data-DZNGFqHU.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-contents.component.html.de-DE.i18n.data-zeQEmcoN.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-course-contents.component.ts.en-US.i18n.data-C0Q4P1pi.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-contents.component.ts.pl-PL.i18n.data-B2_M5A-D.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-contents.component.ts.de-DE.i18n.data-B1c4BqwL.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-course-cover.component.ts.en-US.i18n.data-D-vw3T3O.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-cover.component.ts.pl-PL.i18n.data-DZsvqr38.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-cover.component.ts.de-DE.i18n.data-CPpw6mEf.mjs')).default } });
4914
+ 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-websql-taon-cms-course-backoffice.component.html.en-US.i18n.data-DaYr8I_Z.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.html.pl-PL.i18n.data-C6_Aqc3M.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.html.de-DE.i18n.data-DkSppX5j.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.ts.en-US.i18n.data-PE9qaaqh.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.ts.pl-PL.i18n.data-CeW02Lcj.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-backoffice.component.ts.de-DE.i18n.data-DvIyIfqQ.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-course-contents.component.html.en-US.i18n.data-B0x36jpK.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-contents.component.html.pl-PL.i18n.data-2drjM21N.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-contents.component.html.de-DE.i18n.data-C7w7bI4c.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-contents.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-course-contents.component.ts.en-US.i18n.data-DleMuJeD.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-contents.component.ts.pl-PL.i18n.data-DgkzL0Vq.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-contents.component.ts.de-DE.i18n.data-CL2w5q-S.mjs')).default }, "src/lib/taon-posts/taon-cms-course-backoffice/taon-cms-course-cover.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-course-cover.component.ts.en-US.i18n.data-D-vw3T3O.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-course-cover.component.ts.pl-PL.i18n.data-DZsvqr38.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-course-cover.component.ts.de-DE.i18n.data-CPpw6mEf.mjs')).default } });
4734
4915
  class TaonCmsCourseBackofficeComponent extends TaonCmsPostTableActions {
4735
4916
  constructor() {
4736
4917
  super(...arguments);
4737
4918
  this.t = t$6.for(this);
4738
4919
  this.postPath = ['../posts'];
4920
+ this.backContext = 'courses';
4739
4921
  this.courses = signal([], ...(ngDevMode ? [{ debugName: "courses" }] : []));
4740
4922
  this.loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
4741
4923
  this.columns = [];
@@ -4780,18 +4962,25 @@ class TaonCmsCourseBackofficeComponent extends TaonCmsPostTableActions {
4780
4962
  });
4781
4963
  }
4782
4964
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsCourseBackofficeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4783
- 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 }); }
4965
+ 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 }); }
4784
4966
  }
4785
4967
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsCourseBackofficeComponent, decorators: [{
4786
4968
  type: Component,
4787
4969
  args: [{ selector: 'taon-cms-course-backoffice', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
4970
+ FormsModule,
4788
4971
  MatButtonModule,
4972
+ MatFormFieldModule,
4789
4973
  MatIconModule,
4974
+ MatInputModule,
4975
+ MatSelectModule,
4790
4976
  TaonDatatableComponent,
4791
4977
  TaonCmsCourseContentsComponent,
4792
4978
  TaonCmsCourseCoverComponent,
4793
- ], 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"] }]
4794
- }], propDecorators: { coverTemplate: [{
4979
+ ], 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"] }]
4980
+ }], propDecorators: { datatable: [{
4981
+ type: ViewChild,
4982
+ args: [TaonDatatableComponent]
4983
+ }], coverTemplate: [{
4795
4984
  type: ViewChild,
4796
4985
  args: ['coverTemplate', { static: true }]
4797
4986
  }], visibilityTemplate: [{
@@ -4998,7 +5187,7 @@ class TaonCmsRevisionChooserComponent {
4998
5187
  }
4999
5188
  }
5000
5189
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsRevisionChooserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5001
- 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 }); }
5190
+ 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 }); }
5002
5191
  }
5003
5192
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsRevisionChooserComponent, decorators: [{
5004
5193
  type: Component,
@@ -5067,7 +5256,7 @@ class TaonRelatedPostChooserComponent {
5067
5256
  this.ref.close();
5068
5257
  }
5069
5258
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonRelatedPostChooserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5070
- 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 }); }
5259
+ 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 }); }
5071
5260
  }
5072
5261
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonRelatedPostChooserComponent, decorators: [{
5073
5262
  type: Component,
@@ -5076,9 +5265,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
5076
5265
 
5077
5266
  //#region imports
5078
5267
  //#endregion
5079
- const t$3 = Translation.for('src/lib/taon-posts/taon-cms-post/taon-cms-post.component.ts', { "src/lib/taon-posts/taon-cms-post/taon-cms-post.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-post.component.html.en-US.i18n.data-B6l0ggUx.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-post.component.html.pl-PL.i18n.data-By3hiiP-.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-post.component.html.de-DE.i18n.data-BaON6nA9.mjs')).default }, "src/lib/taon-posts/taon-cms-post/taon-cms-post.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-post.component.ts.en-US.i18n.data-BfH784ag.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-post.component.ts.pl-PL.i18n.data-cvvUelpe.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-post.component.ts.de-DE.i18n.data-Ciz92SwP.mjs')).default } });
5268
+ const t$3 = Translation.for('src/lib/taon-posts/taon-cms-post/taon-cms-post.component.ts', { "src/lib/taon-posts/taon-cms-post/taon-cms-post.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-post.component.html.en-US.i18n.data-DqG-6paf.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-post.component.html.pl-PL.i18n.data-okZz6YGc.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-post.component.html.de-DE.i18n.data-DJcuFwI4.mjs')).default }, "src/lib/taon-posts/taon-cms-post/taon-cms-post.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-post.component.ts.en-US.i18n.data-CIeHDfiP.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-post.component.ts.pl-PL.i18n.data-bze_EsKd.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-post.component.ts.de-DE.i18n.data-KbNFIOV8.mjs')).default } });
5080
5269
  class TaonCmsPostComponent {
5081
5270
  //#endregion
5271
+ ngAfterViewInit() {
5272
+ if (this.actionButtonsTemplateRef) {
5273
+ this.actionButtonsTemplate.emit(this.actionButtonsTemplateRef);
5274
+ }
5275
+ }
5082
5276
  //#region constructor
5083
5277
  constructor() {
5084
5278
  this.t = t$3.for(this);
@@ -5089,6 +5283,7 @@ class TaonCmsPostComponent {
5089
5283
  this.deleted = output();
5090
5284
  this.duplicated = output();
5091
5285
  this.cancelled = output();
5286
+ this.actionButtonsTemplate = output();
5092
5287
  this.currentPost = signal(null, ...(ngDevMode ? [{ debugName: "currentPost" }] : []));
5093
5288
  this.placeholderShortIntro = this.t.signal.gettext('A short introduction...');
5094
5289
  this.placeholderTitle = this.t.signal.gettext('Title');
@@ -5172,6 +5367,7 @@ class TaonCmsPostComponent {
5172
5367
  this.uploadedMediaPreview = signal(null, ...(ngDevMode ? [{ debugName: "uploadedMediaPreview" }] : []));
5173
5368
  this.mediaPreviewRequest = 0;
5174
5369
  this.mediaPreviewSignature = '';
5370
+ this.slugManuallySet = false;
5175
5371
  this.dialogOpen = signal(false, ...(ngDevMode ? [{ debugName: "dialogOpen" }] : []));
5176
5372
  this.error = signal('', ...(ngDevMode ? [{ debugName: "error" }] : []));
5177
5373
  this.relatedPosts = signal([], ...(ngDevMode ? [{ debugName: "relatedPosts" }] : []));
@@ -5292,8 +5488,8 @@ class TaonCmsPostComponent {
5292
5488
  // Thumbnail preview handling.
5293
5489
  effect(onCleanup => {
5294
5490
  const key = this.thumbnailReference();
5295
- const slug = this.thumbnailSlug();
5296
5491
  const editing = this.editing();
5492
+ const slug = editing ? '' : this.thumbnailSlug();
5297
5493
  const staged = this.stagedThumbnail();
5298
5494
  let active = true;
5299
5495
  onCleanup(() => {
@@ -5313,7 +5509,7 @@ class TaonCmsPostComponent {
5313
5509
  this.thumbnailPreviewUrl.set(placeholder);
5314
5510
  return;
5315
5511
  }
5316
- if (!slug) {
5512
+ if (!editing && !slug) {
5317
5513
  return;
5318
5514
  }
5319
5515
  const load = async () => {
@@ -5421,7 +5617,7 @@ class TaonCmsPostComponent {
5421
5617
  }
5422
5618
  //#endregion
5423
5619
  //#region methods / load related posts
5424
- loadTaxonomy() {
5620
+ loadTaxonomy(preserveSelectedTags = false) {
5425
5621
  this.taxonomyLoad?.unsubscribe();
5426
5622
  const session = this.editorSession;
5427
5623
  const postId = this.currentPost()?.id;
@@ -5438,7 +5634,9 @@ class TaonCmsPostComponent {
5438
5634
  if (session === this.editorSession) {
5439
5635
  this.categories.set(result.categories.sort((a, b) => a.sortOrder - b.sortOrder || a.name.localeCompare(b.name)));
5440
5636
  this.tags.set(result.tags);
5441
- this.updateDraft('tagIds', result.tagIds);
5637
+ if (!preserveSelectedTags) {
5638
+ this.updateDraft('tagIds', result.tagIds);
5639
+ }
5442
5640
  }
5443
5641
  },
5444
5642
  error: (error) => {
@@ -5460,6 +5658,50 @@ class TaonCmsPostComponent {
5460
5658
  this.tagSearch.set(event.target.value);
5461
5659
  }
5462
5660
  }
5661
+ createTaxonomy(taxonomy) {
5662
+ if (this.busy() || this.dialogOpen()) {
5663
+ return;
5664
+ }
5665
+ this.dialogOpen.set(true);
5666
+ this.taxonomyError.set('');
5667
+ const ref = this.dialog.open(TaonCmsTaxonomyQuickCreateDialogComponent, {
5668
+ data: { taxonomy },
5669
+ width: '560px',
5670
+ maxWidth: '95vw',
5671
+ disableClose: true,
5672
+ });
5673
+ ref
5674
+ .afterClosed()
5675
+ .pipe(takeUntilDestroyed(this.destroyRef))
5676
+ .subscribe(fields => {
5677
+ if (!fields) {
5678
+ this.dialogOpen.set(false);
5679
+ return;
5680
+ }
5681
+ const request = taxonomy === 'category'
5682
+ ? this.categoryApi.save(null, fields)
5683
+ : this.tagApi.save(null, fields);
5684
+ request
5685
+ .pipe(takeUntilDestroyed(this.destroyRef), finalize(() => this.dialogOpen.set(false)))
5686
+ .subscribe({
5687
+ next: saved => {
5688
+ if (taxonomy === 'category') {
5689
+ this.updateDraft('categoryId', saved.id);
5690
+ }
5691
+ else {
5692
+ this.addTag(saved.id);
5693
+ }
5694
+ this.loadTaxonomy(true);
5695
+ },
5696
+ error: (error) => {
5697
+ console.error(`[taon-cms-post] Unable to create ${taxonomy}`, error);
5698
+ this.taxonomyError.set(taxonomy === 'category'
5699
+ ? this.t.gettext('The category could not be created. Please try again.')
5700
+ : this.t.gettext('The tag could not be created. Please try again.'));
5701
+ },
5702
+ });
5703
+ });
5704
+ }
5463
5705
  applyDefaultThumbnail() {
5464
5706
  if (!this.editing() || this.busy() || this.dialogOpen()) {
5465
5707
  return;
@@ -5586,6 +5828,51 @@ class TaonCmsPostComponent {
5586
5828
  });
5587
5829
  }
5588
5830
  //#endregion
5831
+ //#region methods / add as child of
5832
+ addAsChildOf() {
5833
+ const post = this.currentPost();
5834
+ if (!this.editing() ||
5835
+ !post ||
5836
+ this.busy() ||
5837
+ this.dialogOpen() ||
5838
+ this.relatedPostsLoading()) {
5839
+ return;
5840
+ }
5841
+ this.dialogOpen.set(true);
5842
+ const ref = this.dialog.open(TaonRelatedPostChooserComponent, {
5843
+ data: { postId: post.id, excludedIds: [] },
5844
+ width: '560px',
5845
+ maxWidth: '95vw',
5846
+ disableClose: true,
5847
+ });
5848
+ ref
5849
+ .afterClosed()
5850
+ .pipe(takeUntilDestroyed(this.destroyRef))
5851
+ .subscribe(parent => {
5852
+ this.dialogOpen.set(false);
5853
+ if (!parent || !this.currentPost()) {
5854
+ return;
5855
+ }
5856
+ this.busy.set(true);
5857
+ this.error.set('');
5858
+ this.api
5859
+ .addRelatedPost(parent.id, post.id, parent.version)
5860
+ .pipe(switchMap(() => from(this.api.getById(post.id))), takeUntilDestroyed(this.destroyRef), finalize(() => this.busy.set(false)))
5861
+ .subscribe({
5862
+ next: refreshedPost => {
5863
+ this.currentPost.set(refreshedPost);
5864
+ this.permissionsLoad?.unsubscribe();
5865
+ this.permissionsLoading.set(false);
5866
+ this.loadPermissions();
5867
+ },
5868
+ error: (error) => {
5869
+ console.error('[taon-cms-post] Unable to make post a child', error);
5870
+ this.error.set(this.t.gettext('The parent post could not be changed. Please try again.'));
5871
+ },
5872
+ });
5873
+ });
5874
+ }
5875
+ //#endregion
5589
5876
  //#region methods / remove related post
5590
5877
  removeRelatedPost(id) {
5591
5878
  if (!this.editing() ||
@@ -5732,6 +6019,18 @@ class TaonCmsPostComponent {
5732
6019
  }
5733
6020
  }
5734
6021
  updateDraft(field, value) {
6022
+ if (field === 'title' &&
6023
+ this.mode() === 'add' &&
6024
+ !this.slugManuallySet &&
6025
+ !this.draft().slug) {
6026
+ const title = String(value);
6027
+ this.draft.update(draft => ({
6028
+ ...draft,
6029
+ title,
6030
+ slug: _.kebabCase(title),
6031
+ }));
6032
+ return;
6033
+ }
5735
6034
  this.draft.update(draft => ({ ...draft, [field]: value }));
5736
6035
  }
5737
6036
  //#endregion
@@ -5871,6 +6170,7 @@ class TaonCmsPostComponent {
5871
6170
  //#region methods / update slug
5872
6171
  updateSlug(event) {
5873
6172
  if (event.target instanceof HTMLInputElement) {
6173
+ this.slugManuallySet = true;
5874
6174
  this.updateDraft('slug', event.target.value);
5875
6175
  }
5876
6176
  }
@@ -6097,6 +6397,7 @@ class TaonCmsPostComponent {
6097
6397
  this.mediaPreviewSignature = '';
6098
6398
  this.mediaPreviewRequest += 1;
6099
6399
  this.currentPost.set(post);
6400
+ this.slugManuallySet = Boolean(post);
6100
6401
  this.relatedPosts.set(post?.relatedPosts ?? []);
6101
6402
  this.permissions.set(post?.permissions ?? []);
6102
6403
  this.permissionSource.set(null);
@@ -6168,19 +6469,20 @@ class TaonCmsPostComponent {
6168
6469
  });
6169
6470
  }
6170
6471
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6171
- 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: [
6472
+ 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: [
6172
6473
  TaonCmsContentApiService,
6173
6474
  TaonCmsContentConfigService,
6174
6475
  TaonPermissionApiService,
6175
6476
  TaonCmsCategoryApiService,
6176
6477
  TaonCmsTagApiService,
6177
- ], 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 }); }
6478
+ ], 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 }); }
6178
6479
  }
6179
6480
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostComponent, decorators: [{
6180
6481
  type: Component,
6181
6482
  args: [{ selector: 'taon-cms-post', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
6182
6483
  MatButtonModule,
6183
6484
  MatCheckboxModule,
6485
+ MatCardModule,
6184
6486
  MatFormFieldModule,
6185
6487
  MatIconModule,
6186
6488
  MatInputModule,
@@ -6192,14 +6494,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImpor
6192
6494
  MatRadioModule,
6193
6495
  MatSelectModule,
6194
6496
  TaonCmsEditableDirective,
6497
+ NgTemplateOutlet,
6195
6498
  ], providers: [
6196
6499
  TaonCmsContentApiService,
6197
6500
  TaonCmsContentConfigService,
6198
6501
  TaonPermissionApiService,
6199
6502
  TaonCmsCategoryApiService,
6200
6503
  TaonCmsTagApiService,
6201
- ], 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"] }]
6202
- }], 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 }] }] } });
6504
+ ], 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"] }]
6505
+ }], 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: [{
6506
+ type: ViewChild,
6507
+ args: ['actionButtonsTemplate']
6508
+ }], rawContent: [{ type: i0.ViewChild, args: ['rawContent', { isSignal: true }] }] } });
6203
6509
 
6204
6510
  var taonCmsPost_component = /*#__PURE__*/Object.freeze({
6205
6511
  __proto__: null,
@@ -6230,16 +6536,37 @@ const TaonCmsPostRoutes = [
6230
6536
  */
6231
6537
  // export default TaonCmsPostRoutes;
6232
6538
 
6233
- const t$2 = Translation.for('src/lib/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts', { "src/lib/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-post-details-page.component.ts.en-US.i18n.data-BHclr-Mp.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-2oqcGTJG.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-post-details-page.component.ts.de-DE.i18n.data-DvinUxYu.mjs')).default } });
6539
+ const t$2 = Translation.for('src/lib/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts', { "src/lib/taon-posts/taon-cms-post-details-page/taon-cms-post-details-page.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-post-details-page.component.ts.en-US.i18n.data-WzvzH28T.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-post-details-page.component.ts.pl-PL.i18n.data-86Izoe2O.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-post-details-page.component.ts.de-DE.i18n.data-ClIYIAz7.mjs')).default } });
6234
6540
  class TaonCmsPostDetailsPageComponent {
6235
6541
  constructor() {
6236
6542
  this.t = t$2.for(this);
6237
6543
  this.route = inject(ActivatedRoute);
6238
6544
  this.router = inject(Router);
6239
- this.page$ = this.route.data.pipe(map$1(data => ({
6545
+ this.contentFooterService = inject(TaonAdminContentFooterService);
6546
+ this.destroyRef = inject(DestroyRef);
6547
+ this.page$ = combineLatest([
6548
+ this.route.data,
6549
+ this.route.queryParamMap,
6550
+ ]).pipe(map$1(([data, queryParams]) => ({
6240
6551
  create: data['createPost'] === true,
6241
6552
  post: data['post'] ?? null,
6553
+ fromCourses: queryParams.get('postOrigin') === 'courses',
6242
6554
  })));
6555
+ this.destroyRef.onDestroy(() => this.contentFooterService.setTemplate());
6556
+ }
6557
+ setFooterTemplate(template) {
6558
+ this.contentFooterService.setTemplate(template);
6559
+ }
6560
+ goBack(fromCourses) {
6561
+ void this.router
6562
+ .navigate([fromCourses ? '../../courses' : '../'], {
6563
+ relativeTo: this.route,
6564
+ queryParams: { postOrigin: null },
6565
+ queryParamsHandling: 'merge',
6566
+ })
6567
+ .catch(error => {
6568
+ console.error('[taon-cms-post-details-page] Unable to navigate back', error);
6569
+ });
6243
6570
  }
6244
6571
  onChanged(post, create) {
6245
6572
  if (create) {
@@ -6247,11 +6574,25 @@ class TaonCmsPostDetailsPageComponent {
6247
6574
  }
6248
6575
  }
6249
6576
  openPost(post) {
6250
- void this.router.navigate(['../', post.id], { relativeTo: this.route });
6577
+ void this.router
6578
+ .navigate(['../', post.id], {
6579
+ relativeTo: this.route,
6580
+ queryParamsHandling: 'preserve',
6581
+ })
6582
+ .catch(error => {
6583
+ console.error('[taon-cms-post-details-page] Unable to open post', error);
6584
+ });
6251
6585
  }
6252
6586
  onCancelled(create) {
6253
6587
  if (create) {
6254
- void this.router.navigate(['../'], { relativeTo: this.route });
6588
+ void this.router
6589
+ .navigate(['../'], {
6590
+ relativeTo: this.route,
6591
+ queryParamsHandling: 'preserve',
6592
+ })
6593
+ .catch(error => {
6594
+ console.error('[taon-cms-post-details-page] Unable to cancel post creation', error);
6595
+ });
6255
6596
  }
6256
6597
  }
6257
6598
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostDetailsPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -6259,41 +6600,51 @@ class TaonCmsPostDetailsPageComponent {
6259
6600
  @if (page$ | async; as page) {
6260
6601
  <a
6261
6602
  mat-button
6262
- routerLink="../"
6263
- >{{ t.gettext('Back to Posts') }}</a
6603
+ (click)="goBack(page.fromCourses)"
6604
+ >{{
6605
+ page.fromCourses
6606
+ ? t.gettext('Back to Courses')
6607
+ : t.gettext('Back to Posts')
6608
+ }}</a
6264
6609
  >
6265
6610
  <taon-cms-post
6266
6611
  [post]="page.post"
6267
6612
  [mode]="page.create ? 'add' : 'view'"
6268
6613
  (changed)="onChanged($event, page.create)"
6269
6614
  (duplicated)="openPost($event)"
6270
- (cancelled)="onCancelled(page.create)" />
6615
+ (cancelled)="onCancelled(page.create)"
6616
+ (actionButtonsTemplate)="setFooterTemplate($event)" />
6271
6617
  }
6272
- `, 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 }); }
6618
+ `, 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 }); }
6273
6619
  }
6274
6620
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostDetailsPageComponent, decorators: [{
6275
6621
  type: Component,
6276
6622
  args: [{
6277
6623
  selector: 'taon-cms-post-details-page',
6278
6624
  changeDetection: ChangeDetectionStrategy.OnPush,
6279
- imports: [AsyncPipe, MatButtonModule, RouterLink, TaonCmsPostComponent],
6625
+ imports: [AsyncPipe, MatButtonModule, TaonCmsPostComponent],
6280
6626
  template: `
6281
6627
  @if (page$ | async; as page) {
6282
6628
  <a
6283
6629
  mat-button
6284
- routerLink="../"
6285
- >{{ t.gettext('Back to Posts') }}</a
6630
+ (click)="goBack(page.fromCourses)"
6631
+ >{{
6632
+ page.fromCourses
6633
+ ? t.gettext('Back to Courses')
6634
+ : t.gettext('Back to Posts')
6635
+ }}</a
6286
6636
  >
6287
6637
  <taon-cms-post
6288
6638
  [post]="page.post"
6289
6639
  [mode]="page.create ? 'add' : 'view'"
6290
6640
  (changed)="onChanged($event, page.create)"
6291
6641
  (duplicated)="openPost($event)"
6292
- (cancelled)="onCancelled(page.create)" />
6642
+ (cancelled)="onCancelled(page.create)"
6643
+ (actionButtonsTemplate)="setFooterTemplate($event)" />
6293
6644
  }
6294
6645
  `,
6295
6646
  }]
6296
- }] });
6647
+ }], ctorParameters: () => [] });
6297
6648
 
6298
6649
  var taonCmsPostDetailsPage_component = /*#__PURE__*/Object.freeze({
6299
6650
  __proto__: null,
@@ -6302,7 +6653,7 @@ var taonCmsPostDetailsPage_component = /*#__PURE__*/Object.freeze({
6302
6653
 
6303
6654
  //#region imports
6304
6655
  //#endregion
6305
- 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-websql-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-4NI8Xw9I.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-FbMIlsYe.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-x_3GCOW9.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.html.en-US.i18n.data-MKa7Bg7x.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-DbKCVK5F.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-Dzx2YyST.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-BEXiBm6D.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-CYa7VWYt.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-CTNTDm49.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-B8Dx0w7R.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-B7OXsynj.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-De7ox2r2.mjs')).default } });
6656
+ 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-websql-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-DUh-u4-P.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-juzvMnde.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-CKCKZi29.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.html.en-US.i18n.data-DCBhrRtK.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-B5lnW5fC.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-UXy-sMFK.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-DLwpMBSF.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-DusaGJ-_.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-B7blUYSz.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-B8Dx0w7R.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-B7OXsynj.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-De7ox2r2.mjs')).default } });
6306
6657
  class TaonCmsPostsBackofficeComponent extends TaonCmsPostTableActions {
6307
6658
  constructor() {
6308
6659
  super(...arguments);
@@ -6312,6 +6663,7 @@ class TaonCmsPostsBackofficeComponent extends TaonCmsPostTableActions {
6312
6663
  this.columns = [
6313
6664
  { header: 'ID', field: 'id', sortable: true },
6314
6665
  { header: this.t.gettext('Title'), field: 'title', sortable: true },
6666
+ { header: this.t.gettext('Slug'), field: 'slug', sortable: true },
6315
6667
  { header: this.t.gettext('Status'), field: 'status', sortable: true },
6316
6668
  this.actionsColumn,
6317
6669
  ];
@@ -6326,11 +6678,18 @@ class TaonCmsPostsBackofficeComponent extends TaonCmsPostTableActions {
6326
6678
  this.reload();
6327
6679
  }
6328
6680
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostsBackofficeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
6329
- 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 }); }
6681
+ 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 }); }
6330
6682
  }
6331
6683
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.9", ngImport: i0, type: TaonCmsPostsBackofficeComponent, decorators: [{
6332
6684
  type: Component,
6333
- 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"] }]
6685
+ args: [{ selector: 'app-taon-cms-posts-backoffice', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
6686
+ FormsModule,
6687
+ MatButtonModule,
6688
+ MatFormFieldModule,
6689
+ MatInputModule,
6690
+ MatSelectModule,
6691
+ TaonDatatableComponent,
6692
+ ], 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"] }]
6334
6693
  }], propDecorators: { datatable: [{
6335
6694
  type: ViewChild,
6336
6695
  args: [TaonDatatableComponent]
@@ -6343,7 +6702,7 @@ var taonCmsPostsBackoffice_component = /*#__PURE__*/Object.freeze({
6343
6702
 
6344
6703
  //#region imports
6345
6704
  //#endregion
6346
- 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-websql-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-4NI8Xw9I.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-FbMIlsYe.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-x_3GCOW9.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.html.en-US.i18n.data-MKa7Bg7x.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-DbKCVK5F.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-Dzx2YyST.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-BEXiBm6D.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-CYa7VWYt.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-CTNTDm49.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-B8Dx0w7R.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-B7OXsynj.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-De7ox2r2.mjs')).default } });
6705
+ 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-websql-taon-cms-post-table-actions.directive.ts.en-US.i18n.data-DUh-u4-P.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-post-table-actions.directive.ts.pl-PL.i18n.data-juzvMnde.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-post-table-actions.directive.ts.de-DE.i18n.data-CKCKZi29.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.html": { "en-US": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.html.en-US.i18n.data-DCBhrRtK.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.html.pl-PL.i18n.data-B5lnW5fC.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.html.de-DE.i18n.data-UXy-sMFK.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.component.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.ts.en-US.i18n.data-DLwpMBSF.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.ts.pl-PL.i18n.data-DusaGJ-_.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-posts-backoffice.component.ts.de-DE.i18n.data-B7blUYSz.mjs')).default }, "src/lib/taon-posts/taon-cms-posts-backoffice/taon-cms-posts-backoffice.routes.ts": { "en-US": async () => (await import('./cms-websql-taon-cms-posts-backoffice.routes.ts.en-US.i18n.data-B8Dx0w7R.mjs')).default, "pl-PL": async () => (await import('./cms-websql-taon-cms-posts-backoffice.routes.ts.pl-PL.i18n.data-B7OXsynj.mjs')).default, "de-DE": async () => (await import('./cms-websql-taon-cms-posts-backoffice.routes.ts.de-DE.i18n.data-De7ox2r2.mjs')).default } });
6347
6706
  const resolvePost = async (route) => {
6348
6707
  const id = Number(route.paramMap.get('id'));
6349
6708
  if (!Number.isSafeInteger(id) || id <= 0) {
@@ -6515,6 +6874,7 @@ var index$1 = /*#__PURE__*/Object.freeze({
6515
6874
  get TaonCmsTagUtils () { return TaonCmsTagUtils; },
6516
6875
  TaonCmsTagsBackofficeRoutes: TaonCmsTagsBackofficeRoutes,
6517
6876
  TaonCmsTaxonomyBackofficeComponent: TaonCmsTaxonomyBackofficeComponent,
6877
+ TaonCmsTaxonomyQuickCreateDialogComponent: TaonCmsTaxonomyQuickCreateDialogComponent,
6518
6878
  TaonRelatedPostChooserComponent: TaonRelatedPostChooserComponent,
6519
6879
  contentError: contentError,
6520
6880
  default: index,
@@ -6536,5 +6896,5 @@ var index$1 = /*#__PURE__*/Object.freeze({
6536
6896
  * Generated bundle index. Do not edit.
6537
6897
  */
6538
6898
 
6539
- 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 };
6899
+ 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 };
6540
6900
  //# sourceMappingURL=cms-websql.mjs.map