@memberjunction/ng-dashboards 6.2.0-edge.6 → 6.2.0-edge.8

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 (233) hide show
  1. package/README.md +23 -16
  2. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +2 -2
  3. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  4. package/dist/AI/components/analytics/realtime/realtime-management.component.d.ts.map +1 -1
  5. package/dist/AI/components/analytics/realtime/realtime-management.component.js +3 -1
  6. package/dist/AI/components/analytics/realtime/realtime-management.component.js.map +1 -1
  7. package/dist/AI/components/analytics/realtime/realtime-overview.component.d.ts +1 -1
  8. package/dist/AI/components/analytics/realtime/realtime-overview.component.js +3 -3
  9. package/dist/AI/components/analytics/realtime/realtime-overview.component.js.map +1 -1
  10. package/dist/AI/components/analytics/realtime/realtime-session-data.d.ts +6 -4
  11. package/dist/AI/components/analytics/realtime/realtime-session-data.d.ts.map +1 -1
  12. package/dist/AI/components/analytics/realtime/realtime-session-data.js +8 -2
  13. package/dist/AI/components/analytics/realtime/realtime-session-data.js.map +1 -1
  14. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  15. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +31 -10
  16. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  17. package/dist/AI/components/autotagging/components/classify-item-grid.component.js +1 -1
  18. package/dist/AI/components/autotagging/components/classify-item-grid.component.js.map +1 -1
  19. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts.map +1 -1
  20. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js +1 -0
  21. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js.map +1 -1
  22. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -1
  23. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +1 -0
  24. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -1
  25. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -1
  26. package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1 -0
  27. package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -1
  28. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  29. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +1 -0
  30. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  31. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +2 -2
  32. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  33. package/dist/AI/components/tags/tags-resource.component.js +14 -24
  34. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  35. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  36. package/dist/AI/components/vectors/vector-management-resource.component.js +14 -7
  37. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  38. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
  39. package/dist/AI/services/ai-instrumentation.service.js +4 -2
  40. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  41. package/dist/Actions/action-result-code.d.ts +80 -0
  42. package/dist/Actions/action-result-code.d.ts.map +1 -0
  43. package/dist/Actions/action-result-code.js +163 -0
  44. package/dist/Actions/action-result-code.js.map +1 -0
  45. package/dist/Actions/components/actions-overview.component.d.ts +8 -0
  46. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  47. package/dist/Actions/components/actions-overview.component.js +12 -9
  48. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  49. package/dist/Actions/components/execution-monitoring.component.d.ts +29 -9
  50. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  51. package/dist/Actions/components/execution-monitoring.component.js +65 -42
  52. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  53. package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -1
  54. package/dist/Actions/components/explorer/action-card.component.js +5 -4
  55. package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
  56. package/dist/ChiefOfStaff/chief-of-staff-agent-context.d.ts +92 -130
  57. package/dist/ChiefOfStaff/chief-of-staff-agent-context.d.ts.map +1 -1
  58. package/dist/ChiefOfStaff/chief-of-staff-agent-context.js +189 -274
  59. package/dist/ChiefOfStaff/chief-of-staff-agent-context.js.map +1 -1
  60. package/dist/ChiefOfStaff/chief-of-staff-approvals.component.d.ts +29 -0
  61. package/dist/ChiefOfStaff/chief-of-staff-approvals.component.d.ts.map +1 -0
  62. package/dist/ChiefOfStaff/chief-of-staff-approvals.component.js +666 -0
  63. package/dist/ChiefOfStaff/chief-of-staff-approvals.component.js.map +1 -0
  64. package/dist/ChiefOfStaff/chief-of-staff-governance.component.d.ts +56 -0
  65. package/dist/ChiefOfStaff/chief-of-staff-governance.component.d.ts.map +1 -0
  66. package/dist/ChiefOfStaff/chief-of-staff-governance.component.js +515 -0
  67. package/dist/ChiefOfStaff/chief-of-staff-governance.component.js.map +1 -0
  68. package/dist/ChiefOfStaff/chief-of-staff-live-refresh.d.ts +14 -0
  69. package/dist/ChiefOfStaff/chief-of-staff-live-refresh.d.ts.map +1 -0
  70. package/dist/ChiefOfStaff/chief-of-staff-live-refresh.js +39 -0
  71. package/dist/ChiefOfStaff/chief-of-staff-live-refresh.js.map +1 -0
  72. package/dist/ChiefOfStaff/chief-of-staff-overview.component.d.ts +17 -0
  73. package/dist/ChiefOfStaff/chief-of-staff-overview.component.d.ts.map +1 -0
  74. package/dist/ChiefOfStaff/chief-of-staff-overview.component.js +485 -0
  75. package/dist/ChiefOfStaff/chief-of-staff-overview.component.js.map +1 -0
  76. package/dist/ChiefOfStaff/chief-of-staff-page-base.d.ts +139 -0
  77. package/dist/ChiefOfStaff/chief-of-staff-page-base.d.ts.map +1 -0
  78. package/dist/ChiefOfStaff/chief-of-staff-page-base.js +602 -0
  79. package/dist/ChiefOfStaff/chief-of-staff-page-base.js.map +1 -0
  80. package/dist/ChiefOfStaff/index.d.ts +4 -1
  81. package/dist/ChiefOfStaff/index.d.ts.map +1 -1
  82. package/dist/ChiefOfStaff/index.js +4 -1
  83. package/dist/ChiefOfStaff/index.js.map +1 -1
  84. package/dist/Communication/communication-monitor-resource.component.js +3 -3
  85. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  86. package/dist/Communication/communication-runs-resource.component.js +3 -3
  87. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  88. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  89. package/dist/ComponentStudio/component-studio-dashboard.component.js +1 -0
  90. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  91. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
  92. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +2 -1
  93. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  94. package/dist/ComponentStudio/services/component-version.service.d.ts.map +1 -1
  95. package/dist/ComponentStudio/services/component-version.service.js +3 -0
  96. package/dist/ComponentStudio/services/component-version.service.js.map +1 -1
  97. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +21 -2
  98. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  99. package/dist/DataExplorer/data-explorer-dashboard.component.js +32 -5
  100. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  101. package/dist/DevTools/graphql-console.component.js +2 -2
  102. package/dist/DevTools/lazy-module-status.component.js +2 -2
  103. package/dist/FormBuilder/form-builder-resource.component.d.ts.map +1 -1
  104. package/dist/FormBuilder/form-builder-resource.component.js +5 -0
  105. package/dist/FormBuilder/form-builder-resource.component.js.map +1 -1
  106. package/dist/Integration/components/connections/connections.component.js +2 -2
  107. package/dist/Integration/services/integration-data.service.d.ts +1 -1
  108. package/dist/Integration/services/integration-data.service.d.ts.map +1 -1
  109. package/dist/Integration/services/integration-data.service.js +4 -3
  110. package/dist/Integration/services/integration-data.service.js.map +1 -1
  111. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
  112. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +11 -3
  113. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  114. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +16 -16
  115. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  116. package/dist/KnowledgeHub/components/visualize/semantic-graph/semantic-graph-explorer.component.d.ts +113 -0
  117. package/dist/KnowledgeHub/components/visualize/semantic-graph/semantic-graph-explorer.component.d.ts.map +1 -0
  118. package/dist/KnowledgeHub/components/visualize/semantic-graph/semantic-graph-explorer.component.js +1184 -0
  119. package/dist/KnowledgeHub/components/visualize/semantic-graph/semantic-graph-explorer.component.js.map +1 -0
  120. package/dist/KnowledgeHub/components/visualize/visualize-agent-context.d.ts +1 -1
  121. package/dist/KnowledgeHub/components/visualize/visualize-agent-context.d.ts.map +1 -1
  122. package/dist/KnowledgeHub/components/visualize/visualize-agent-context.js +1 -1
  123. package/dist/KnowledgeHub/components/visualize/visualize-agent-context.js.map +1 -1
  124. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts +1 -1
  125. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts.map +1 -1
  126. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js +21 -10
  127. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js.map +1 -1
  128. package/dist/Lists/components/lists-browse-resource.component.js +1 -1
  129. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  130. package/dist/Lists/components/lists-my-lists-resource.component.js +1 -1
  131. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  132. package/dist/LoginStudio/login-studio-resource.component.d.ts.map +1 -1
  133. package/dist/LoginStudio/login-studio-resource.component.js +1 -0
  134. package/dist/LoginStudio/login-studio-resource.component.js.map +1 -1
  135. package/dist/PredictiveStudio/components/ps-experiments.component.d.ts.map +1 -1
  136. package/dist/PredictiveStudio/components/ps-experiments.component.js +1 -0
  137. package/dist/PredictiveStudio/components/ps-experiments.component.js.map +1 -1
  138. package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.js +2 -2
  139. package/dist/PredictiveStudio/components/ps-predictions-grid.component.d.ts.map +1 -1
  140. package/dist/PredictiveStudio/components/ps-predictions-grid.component.js +3 -0
  141. package/dist/PredictiveStudio/components/ps-predictions-grid.component.js.map +1 -1
  142. package/dist/PredictiveStudio/engine/predictive-studio.engine.d.ts.map +1 -1
  143. package/dist/PredictiveStudio/engine/predictive-studio.engine.js +1 -0
  144. package/dist/PredictiveStudio/engine/predictive-studio.engine.js.map +1 -1
  145. package/dist/PredictiveStudio/resources/ps-predictions-resource.component.d.ts.map +1 -1
  146. package/dist/PredictiveStudio/resources/ps-predictions-resource.component.js +1 -0
  147. package/dist/PredictiveStudio/resources/ps-predictions-resource.component.js.map +1 -1
  148. package/dist/QueryBrowser/query-browser-resource.component.d.ts +26 -0
  149. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  150. package/dist/QueryBrowser/query-browser-resource.component.js +375 -252
  151. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  152. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  153. package/dist/SystemDiagnostics/system-diagnostics.component.js +4 -2
  154. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  155. package/dist/UserRoutines/user-routines-resource.component.d.ts +8 -1
  156. package/dist/UserRoutines/user-routines-resource.component.d.ts.map +1 -1
  157. package/dist/UserRoutines/user-routines-resource.component.js +22 -4
  158. package/dist/UserRoutines/user-routines-resource.component.js.map +1 -1
  159. package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -1
  160. package/dist/VersionHistory/components/diff-resource.component.js +1 -0
  161. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  162. package/dist/VideoStudio/components/vs-archetype-editor.component.d.ts +162 -0
  163. package/dist/VideoStudio/components/vs-archetype-editor.component.d.ts.map +1 -0
  164. package/dist/VideoStudio/components/vs-archetype-editor.component.js +1105 -0
  165. package/dist/VideoStudio/components/vs-archetype-editor.component.js.map +1 -0
  166. package/dist/VideoStudio/components/vs-audio-options.component.d.ts +27 -0
  167. package/dist/VideoStudio/components/vs-audio-options.component.d.ts.map +1 -0
  168. package/dist/VideoStudio/components/vs-audio-options.component.js +119 -0
  169. package/dist/VideoStudio/components/vs-audio-options.component.js.map +1 -0
  170. package/dist/VideoStudio/components/vs-copilot-panel.component.d.ts +105 -0
  171. package/dist/VideoStudio/components/vs-copilot-panel.component.d.ts.map +1 -0
  172. package/dist/VideoStudio/components/vs-copilot-panel.component.js +560 -0
  173. package/dist/VideoStudio/components/vs-copilot-panel.component.js.map +1 -0
  174. package/dist/VideoStudio/components/vs-production-brief.component.d.ts +163 -0
  175. package/dist/VideoStudio/components/vs-production-brief.component.d.ts.map +1 -0
  176. package/dist/VideoStudio/components/vs-production-brief.component.js +1054 -0
  177. package/dist/VideoStudio/components/vs-production-brief.component.js.map +1 -0
  178. package/dist/VideoStudio/components/vs-setup-health-card.component.d.ts +43 -0
  179. package/dist/VideoStudio/components/vs-setup-health-card.component.d.ts.map +1 -0
  180. package/dist/VideoStudio/components/vs-setup-health-card.component.js +412 -0
  181. package/dist/VideoStudio/components/vs-setup-health-card.component.js.map +1 -0
  182. package/dist/VideoStudio/components/vs-studio-slide-in.component.d.ts +73 -0
  183. package/dist/VideoStudio/components/vs-studio-slide-in.component.d.ts.map +1 -0
  184. package/dist/VideoStudio/components/vs-studio-slide-in.component.js +271 -0
  185. package/dist/VideoStudio/components/vs-studio-slide-in.component.js.map +1 -0
  186. package/dist/VideoStudio/index.d.ts +12 -0
  187. package/dist/VideoStudio/index.d.ts.map +1 -0
  188. package/dist/VideoStudio/index.js +12 -0
  189. package/dist/VideoStudio/index.js.map +1 -0
  190. package/dist/VideoStudio/resources/video-studio-archetypes-resource.component.d.ts +118 -0
  191. package/dist/VideoStudio/resources/video-studio-archetypes-resource.component.d.ts.map +1 -0
  192. package/dist/VideoStudio/resources/video-studio-archetypes-resource.component.js +964 -0
  193. package/dist/VideoStudio/resources/video-studio-archetypes-resource.component.js.map +1 -0
  194. package/dist/VideoStudio/resources/video-studio-brand-kits-resource.component.d.ts +70 -0
  195. package/dist/VideoStudio/resources/video-studio-brand-kits-resource.component.d.ts.map +1 -0
  196. package/dist/VideoStudio/resources/video-studio-brand-kits-resource.component.js +600 -0
  197. package/dist/VideoStudio/resources/video-studio-brand-kits-resource.component.js.map +1 -0
  198. package/dist/VideoStudio/resources/video-studio-productions-resource.component.d.ts +182 -0
  199. package/dist/VideoStudio/resources/video-studio-productions-resource.component.d.ts.map +1 -0
  200. package/dist/VideoStudio/resources/video-studio-productions-resource.component.js +1481 -0
  201. package/dist/VideoStudio/resources/video-studio-productions-resource.component.js.map +1 -0
  202. package/dist/VideoStudio/services/vs-studio-slide-in-state.service.d.ts +102 -0
  203. package/dist/VideoStudio/services/vs-studio-slide-in-state.service.d.ts.map +1 -0
  204. package/dist/VideoStudio/services/vs-studio-slide-in-state.service.js +240 -0
  205. package/dist/VideoStudio/services/vs-studio-slide-in-state.service.js.map +1 -0
  206. package/dist/VideoStudio/video-studio-agent-context.d.ts +495 -0
  207. package/dist/VideoStudio/video-studio-agent-context.d.ts.map +1 -0
  208. package/dist/VideoStudio/video-studio-agent-context.js +992 -0
  209. package/dist/VideoStudio/video-studio-agent-context.js.map +1 -0
  210. package/dist/ai-dashboards.module.d.ts +46 -41
  211. package/dist/ai-dashboards.module.d.ts.map +1 -1
  212. package/dist/ai-dashboards.module.js +33 -7
  213. package/dist/ai-dashboards.module.js.map +1 -1
  214. package/dist/module.d.ts +13 -12
  215. package/dist/module.d.ts.map +1 -1
  216. package/dist/module.js +7 -0
  217. package/dist/module.js.map +1 -1
  218. package/dist/public-api.d.ts +8 -1
  219. package/dist/public-api.d.ts.map +1 -1
  220. package/dist/public-api.js +10 -2
  221. package/dist/public-api.js.map +1 -1
  222. package/dist/shared/action-scheduled-job.d.ts.map +1 -1
  223. package/dist/shared/action-scheduled-job.js +2 -0
  224. package/dist/shared/action-scheduled-job.js.map +1 -1
  225. package/dist/video-studio-dashboards.module.d.ts +40 -0
  226. package/dist/video-studio-dashboards.module.d.ts.map +1 -0
  227. package/dist/video-studio-dashboards.module.js +159 -0
  228. package/dist/video-studio-dashboards.module.js.map +1 -0
  229. package/package.json +78 -71
  230. package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.d.ts +0 -195
  231. package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.d.ts.map +0 -1
  232. package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.js +0 -2910
  233. package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.js.map +0 -1
@@ -0,0 +1,964 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, } from '@angular/core';
8
+ import { CompositeKey, LogError } from '@memberjunction/core';
9
+ import { MJEnvironmentEntityExtended, VideoStudioEngine, } from '@memberjunction/core-entities';
10
+ import { RegisterClass, UUIDsEqual } from '@memberjunction/global';
11
+ import { FormatVideoTime, FormatVideoTimeRange } from '@memberjunction/ng-artifacts';
12
+ import { BaseResourceComponent } from '@memberjunction/ng-shared';
13
+ import { ARCHETYPE_CATEGORIES, BuildArchetypesAgentContext, FilterArchetypeCards, GroupArchetypesByCategory, MapArchetypeToCard, ParseArchetypeDefaultFormats, ResolveVideoStudioItem, } from '../video-studio-agent-context';
14
+ import * as i0 from "@angular/core";
15
+ import * as i1 from "@memberjunction/ng-shared-generic";
16
+ import * as i2 from "@memberjunction/ng-artifacts";
17
+ import * as i3 from "../components/vs-archetype-editor.component";
18
+ import * as i4 from "../components/vs-studio-slide-in.component";
19
+ import * as i5 from "@memberjunction/ng-ui-components";
20
+ const _c0 = () => [];
21
+ const _forTrack0 = ($index, $item) => $item.Category;
22
+ const _forTrack1 = ($index, $item) => $item.ID;
23
+ const _forTrack2 = ($index, $item) => $item.Key;
24
+ function VideoStudioArchetypesResourceComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
25
+ i0.ɵɵelementStart(0, "div", 13);
26
+ i0.ɵɵelement(1, "mj-loading", 19);
27
+ i0.ɵɵelementEnd();
28
+ } }
29
+ function VideoStudioArchetypesResourceComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
30
+ const _r1 = i0.ɵɵgetCurrentView();
31
+ i0.ɵɵelementStart(0, "mj-empty-state", 20);
32
+ i0.ɵɵlistener("Action", function VideoStudioArchetypesResourceComponent_Conditional_17_Template_mj_empty_state_Action_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.Refresh()); });
33
+ i0.ɵɵelementEnd();
34
+ } if (rf & 2) {
35
+ const ctx_r1 = i0.ɵɵnextContext();
36
+ i0.ɵɵproperty("Message", ctx_r1.LoadError);
37
+ } }
38
+ function VideoStudioArchetypesResourceComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
39
+ i0.ɵɵelement(0, "mj-empty-state", 15);
40
+ } }
41
+ function VideoStudioArchetypesResourceComponent_Conditional_19_For_6_Template(rf, ctx) { if (rf & 1) {
42
+ const _r4 = i0.ɵɵgetCurrentView();
43
+ i0.ɵɵelementStart(0, "mj-filter-chip", 34);
44
+ i0.ɵɵlistener("Clicked", function VideoStudioArchetypesResourceComponent_Conditional_19_For_6_Template_mj_filter_chip_Clicked_0_listener() { const chip_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SelectCategoryChip(chip_r5.Category)); });
45
+ i0.ɵɵelementEnd();
46
+ } if (rf & 2) {
47
+ const chip_r5 = ctx.$implicit;
48
+ const ctx_r1 = i0.ɵɵnextContext(2);
49
+ i0.ɵɵproperty("Label", chip_r5.Label)("Count", chip_r5.Count)("Active", ctx_r1.CategoryFilter === chip_r5.Category);
50
+ i0.ɵɵattribute("data-testid", "archetype-category-chip-" + chip_r5.Category);
51
+ } }
52
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_11_Template(rf, ctx) { if (rf & 1) {
53
+ const _r6 = i0.ɵɵgetCurrentView();
54
+ i0.ɵɵelementStart(0, "mj-empty-state", 35);
55
+ i0.ɵɵlistener("Action", function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_11_Template_mj_empty_state_Action_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ResetFiltersAndSearch()); });
56
+ i0.ɵɵelementEnd();
57
+ } }
58
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_12_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
59
+ i0.ɵɵelementStart(0, "span", 40);
60
+ i0.ɵɵtext(1);
61
+ i0.ɵɵelementEnd();
62
+ } if (rf & 2) {
63
+ const arch_r8 = i0.ɵɵnextContext().$implicit;
64
+ i0.ɵɵadvance();
65
+ i0.ɵɵtextInterpolate1(" ", arch_r8.CompanyName, " ");
66
+ } }
67
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_12_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
68
+ i0.ɵɵelementStart(0, "mj-video-badge", 41);
69
+ i0.ɵɵelement(1, "i", 51);
70
+ i0.ɵɵelementStart(2, "span");
71
+ i0.ɵɵtext(3, "Shipped");
72
+ i0.ɵɵelementEnd()();
73
+ } }
74
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_12_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
75
+ i0.ɵɵelementStart(0, "p", 42);
76
+ i0.ɵɵtext(1);
77
+ i0.ɵɵelementEnd();
78
+ } if (rf & 2) {
79
+ const arch_r8 = i0.ɵɵnextContext().$implicit;
80
+ i0.ɵɵadvance();
81
+ i0.ɵɵtextInterpolate(arch_r8.Description);
82
+ } }
83
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_12_For_2_For_18_Template(rf, ctx) { if (rf & 1) {
84
+ i0.ɵɵelement(0, "mj-video-format-glyph", 48);
85
+ } if (rf & 2) {
86
+ const fmt_r9 = ctx.$implicit;
87
+ i0.ɵɵproperty("Format", fmt_r9);
88
+ } }
89
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_12_For_2_Template(rf, ctx) { if (rf & 1) {
90
+ const _r7 = i0.ɵɵgetCurrentView();
91
+ i0.ɵɵelementStart(0, "article", 37);
92
+ i0.ɵɵlistener("click", function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_12_For_2_Template_article_click_0_listener() { const arch_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SelectArchetype(arch_r8)); })("keydown.enter", function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_12_For_2_Template_article_keydown_enter_0_listener() { const arch_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SelectArchetype(arch_r8)); })("keydown.space", function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_12_For_2_Template_article_keydown_space_0_listener($event) { const arch_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); $event.preventDefault(); return i0.ɵɵresetView(ctx_r1.SelectArchetype(arch_r8)); });
93
+ i0.ɵɵelementStart(1, "div", 38)(2, "h3", 39);
94
+ i0.ɵɵtext(3);
95
+ i0.ɵɵelementEnd();
96
+ i0.ɵɵconditionalCreate(4, VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_12_For_2_Conditional_4_Template, 2, 1, "span", 40)(5, VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_12_For_2_Conditional_5_Template, 4, 0, "mj-video-badge", 41);
97
+ i0.ɵɵelementEnd();
98
+ i0.ɵɵconditionalCreate(6, VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_12_For_2_Conditional_6_Template, 2, 1, "p", 42);
99
+ i0.ɵɵelementStart(7, "div", 43)(8, "span", 44);
100
+ i0.ɵɵtext(9);
101
+ i0.ɵɵelementEnd();
102
+ i0.ɵɵelementStart(10, "span", 45);
103
+ i0.ɵɵtext(11, "\u00B7");
104
+ i0.ɵɵelementEnd();
105
+ i0.ɵɵelementStart(12, "span", 46);
106
+ i0.ɵɵtext(13);
107
+ i0.ɵɵelementEnd();
108
+ i0.ɵɵelementStart(14, "span", 45);
109
+ i0.ɵɵtext(15, "\u00B7");
110
+ i0.ɵɵelementEnd();
111
+ i0.ɵɵelementStart(16, "span", 47);
112
+ i0.ɵɵrepeaterCreate(17, VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_12_For_2_For_18_Template, 1, 1, "mj-video-format-glyph", 48, i0.ɵɵrepeaterTrackByIdentity);
113
+ i0.ɵɵelementEnd()();
114
+ i0.ɵɵelementStart(19, "div", 49);
115
+ i0.ɵɵelement(20, "mj-video-beat-strip", 50);
116
+ i0.ɵɵelementEnd()();
117
+ } if (rf & 2) {
118
+ const arch_r8 = ctx.$implicit;
119
+ const ctx_r1 = i0.ɵɵnextContext(3);
120
+ i0.ɵɵclassProp("vs-archetype-card--selected", (ctx_r1.SelectedArchetype == null ? null : ctx_r1.SelectedArchetype.ID) === arch_r8.ID);
121
+ i0.ɵɵattribute("data-testid", "archetype-card-" + arch_r8.ID)("aria-pressed", (ctx_r1.SelectedArchetype == null ? null : ctx_r1.SelectedArchetype.ID) === arch_r8.ID);
122
+ i0.ɵɵadvance(2);
123
+ i0.ɵɵproperty("title", arch_r8.Name);
124
+ i0.ɵɵadvance();
125
+ i0.ɵɵtextInterpolate1(" ", arch_r8.Name, " ");
126
+ i0.ɵɵadvance();
127
+ i0.ɵɵconditional(arch_r8.CompanyName ? 4 : arch_r8.IsShipped ? 5 : -1);
128
+ i0.ɵɵadvance(2);
129
+ i0.ɵɵconditional(arch_r8.Description ? 6 : -1);
130
+ i0.ɵɵadvance(3);
131
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.FormatCategoryLabel(arch_r8.Category), " ");
132
+ i0.ɵɵadvance(4);
133
+ i0.ɵɵtextInterpolate2(" ", ctx_r1.FormatTime(arch_r8.DefaultDurationSeconds), " (", ctx_r1.FormatTimeRange(arch_r8.MinDurationSeconds, arch_r8.MaxDurationSeconds), ") ");
134
+ i0.ɵɵadvance(4);
135
+ i0.ɵɵrepeater(ctx_r1.ParseFormats(arch_r8.DefaultFormats));
136
+ i0.ɵɵadvance(3);
137
+ i0.ɵɵproperty("Beats", arch_r8.BeatItems || i0.ɵɵpureFunction0(12, _c0));
138
+ } }
139
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_12_Template(rf, ctx) { if (rf & 1) {
140
+ i0.ɵɵelementStart(0, "div", 32);
141
+ i0.ɵɵrepeaterCreate(1, VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_12_For_2_Template, 21, 13, "article", 36, _forTrack1);
142
+ i0.ɵɵelementEnd();
143
+ } if (rf & 2) {
144
+ const ctx_r1 = i0.ɵɵnextContext(2);
145
+ i0.ɵɵadvance();
146
+ i0.ɵɵrepeater(ctx_r1.FilteredArchetypes);
147
+ } }
148
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Conditional_8_Template(rf, ctx) { if (rf & 1) {
149
+ const _r11 = i0.ɵɵgetCurrentView();
150
+ i0.ɵɵelementStart(0, "button", 77);
151
+ i0.ɵɵlistener("click", function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Conditional_8_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r11); const selected_r12 = i0.ɵɵnextContext(); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenCopyArchetypeEditor(selected_r12, $event)); });
152
+ i0.ɵɵelement(1, "i", 78);
153
+ i0.ɵɵelementStart(2, "span");
154
+ i0.ɵɵtext(3, "Make a copy");
155
+ i0.ɵɵelementEnd()();
156
+ } }
157
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Conditional_9_Template(rf, ctx) { if (rf & 1) {
158
+ const _r13 = i0.ɵɵgetCurrentView();
159
+ i0.ɵɵelementStart(0, "button", 79);
160
+ i0.ɵɵlistener("click", function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Conditional_9_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r13); const selected_r12 = i0.ɵɵnextContext(); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenEditArchetypeEditor(selected_r12, $event)); });
161
+ i0.ɵɵelement(1, "i", 80);
162
+ i0.ɵɵelementStart(2, "span");
163
+ i0.ɵɵtext(3, "Edit");
164
+ i0.ɵɵelementEnd()();
165
+ i0.ɵɵelementStart(4, "button", 81);
166
+ i0.ɵɵlistener("click", function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Conditional_9_Template_button_click_4_listener($event) { i0.ɵɵrestoreView(_r13); const selected_r12 = i0.ɵɵnextContext(); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenArchetypeRecord(selected_r12, $event)); });
167
+ i0.ɵɵelementStart(5, "span");
168
+ i0.ɵɵtext(6, "Open record");
169
+ i0.ɵɵelementEnd()();
170
+ } }
171
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Conditional_13_Template(rf, ctx) { if (rf & 1) {
172
+ i0.ɵɵelementStart(0, "div", 61);
173
+ i0.ɵɵelement(1, "i", 82);
174
+ i0.ɵɵelementStart(2, "span");
175
+ i0.ɵɵtext(3, " Shipped archetypes are read-only templates. Make a copy of this archetype to customize it for a specific company. ");
176
+ i0.ɵɵelementEnd()();
177
+ } }
178
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Conditional_14_Template(rf, ctx) { if (rf & 1) {
179
+ i0.ɵɵelementStart(0, "p", 62);
180
+ i0.ɵɵtext(1);
181
+ i0.ɵɵelementEnd();
182
+ } if (rf & 2) {
183
+ const selected_r12 = i0.ɵɵnextContext();
184
+ i0.ɵɵadvance();
185
+ i0.ɵɵtextInterpolate(selected_r12.Description);
186
+ } }
187
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_For_31_Template(rf, ctx) { if (rf & 1) {
188
+ i0.ɵɵelement(0, "mj-video-format-glyph", 48);
189
+ } if (rf & 2) {
190
+ const fmt_r14 = ctx.$implicit;
191
+ i0.ɵɵproperty("Format", fmt_r14);
192
+ } }
193
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_For_45_Conditional_8_Template(rf, ctx) { if (rf & 1) {
194
+ i0.ɵɵelementStart(0, "mj-video-badge", 87);
195
+ i0.ɵɵtext(1, "Data bound");
196
+ i0.ɵɵelementEnd();
197
+ } }
198
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_For_45_Conditional_11_Template(rf, ctx) { if (rf & 1) {
199
+ i0.ɵɵelementStart(0, "p", 89);
200
+ i0.ɵɵtext(1);
201
+ i0.ɵɵelementEnd();
202
+ } if (rf & 2) {
203
+ const beat_r15 = i0.ɵɵnextContext().$implicit;
204
+ i0.ɵɵadvance();
205
+ i0.ɵɵtextInterpolate(beat_r15.Guidance);
206
+ } }
207
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_For_45_Template(rf, ctx) { if (rf & 1) {
208
+ i0.ɵɵelementStart(0, "div", 74)(1, "div", 83)(2, "span", 84);
209
+ i0.ɵɵtext(3);
210
+ i0.ɵɵelementEnd();
211
+ i0.ɵɵelementStart(4, "strong", 85);
212
+ i0.ɵɵtext(5);
213
+ i0.ɵɵelementEnd();
214
+ i0.ɵɵelementStart(6, "span", 86);
215
+ i0.ɵɵtext(7);
216
+ i0.ɵɵelementEnd();
217
+ i0.ɵɵconditionalCreate(8, VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_For_45_Conditional_8_Template, 2, 0, "mj-video-badge", 87);
218
+ i0.ɵɵelementEnd();
219
+ i0.ɵɵelementStart(9, "p", 88);
220
+ i0.ɵɵtext(10);
221
+ i0.ɵɵelementEnd();
222
+ i0.ɵɵconditionalCreate(11, VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_For_45_Conditional_11_Template, 2, 1, "p", 89);
223
+ i0.ɵɵelementEnd();
224
+ } if (rf & 2) {
225
+ const beat_r15 = ctx.$implicit;
226
+ const ɵ$index_221_r16 = ctx.$index;
227
+ const ctx_r1 = i0.ɵɵnextContext(3);
228
+ i0.ɵɵadvance(3);
229
+ i0.ɵɵtextInterpolate(ɵ$index_221_r16 + 1);
230
+ i0.ɵɵadvance(2);
231
+ i0.ɵɵtextInterpolate(beat_r15.Label);
232
+ i0.ɵɵadvance(2);
233
+ i0.ɵɵtextInterpolate2(" ", ctx_r1.FormatTime(beat_r15.ComputedDurationSeconds), " (", ctx_r1.FormatTimeRange(beat_r15.MinDurationSeconds, beat_r15.MaxDurationSeconds), ") ");
234
+ i0.ɵɵadvance();
235
+ i0.ɵɵconditional(beat_r15.RequiresDataBinding ? 8 : -1);
236
+ i0.ɵɵadvance(2);
237
+ i0.ɵɵtextInterpolate(beat_r15.Purpose);
238
+ i0.ɵɵadvance();
239
+ i0.ɵɵconditional(beat_r15.Guidance ? 11 : -1);
240
+ } }
241
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Conditional_46_Conditional_11_Template(rf, ctx) { if (rf & 1) {
242
+ i0.ɵɵelementStart(0, "p", 93);
243
+ i0.ɵɵtext(1);
244
+ i0.ɵɵelementEnd();
245
+ } if (rf & 2) {
246
+ const selected_r12 = i0.ɵɵnextContext(2);
247
+ i0.ɵɵadvance();
248
+ i0.ɵɵtextInterpolate(selected_r12.Pacing.HoldRules);
249
+ } }
250
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Conditional_46_Template(rf, ctx) { if (rf & 1) {
251
+ i0.ɵɵelementStart(0, "section", 75)(1, "h3", 70);
252
+ i0.ɵɵelement(2, "i", 90);
253
+ i0.ɵɵelementStart(3, "span");
254
+ i0.ɵɵtext(4, "Pacing rules");
255
+ i0.ɵɵelementEnd()();
256
+ i0.ɵɵelementStart(5, "div", 91)(6, "div", 92)(7, "span");
257
+ i0.ɵɵtext(8, "Average time between visual changes:");
258
+ i0.ɵɵelementEnd();
259
+ i0.ɵɵelementStart(9, "strong");
260
+ i0.ɵɵtext(10);
261
+ i0.ɵɵelementEnd()();
262
+ i0.ɵɵconditionalCreate(11, VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Conditional_46_Conditional_11_Template, 2, 1, "p", 93);
263
+ i0.ɵɵelementEnd()();
264
+ } if (rf & 2) {
265
+ const selected_r12 = i0.ɵɵnextContext();
266
+ const ctx_r1 = i0.ɵɵnextContext(2);
267
+ i0.ɵɵadvance(10);
268
+ i0.ɵɵtextInterpolate(ctx_r1.FormatTime(selected_r12.Pacing.AvgSecondsBetweenChanges));
269
+ i0.ɵɵadvance();
270
+ i0.ɵɵconditional(selected_r12.Pacing.HoldRules ? 11 : -1);
271
+ } }
272
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Conditional_47_Template(rf, ctx) { if (rf & 1) {
273
+ i0.ɵɵelementStart(0, "section", 76)(1, "h3", 70);
274
+ i0.ɵɵelement(2, "i", 94);
275
+ i0.ɵɵelementStart(3, "span");
276
+ i0.ɵɵtext(4, "Producer guidance");
277
+ i0.ɵɵelementEnd()();
278
+ i0.ɵɵelementStart(5, "p", 95);
279
+ i0.ɵɵtext(6);
280
+ i0.ɵɵelementEnd()();
281
+ } if (rf & 2) {
282
+ const selected_r12 = i0.ɵɵnextContext();
283
+ i0.ɵɵadvance(6);
284
+ i0.ɵɵtextInterpolate(selected_r12.Guidance);
285
+ } }
286
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Template(rf, ctx) { if (rf & 1) {
287
+ const _r10 = i0.ɵɵgetCurrentView();
288
+ i0.ɵɵelementStart(0, "aside", 33)(1, "header", 52)(2, "div", 53)(3, "span", 54);
289
+ i0.ɵɵtext(4);
290
+ i0.ɵɵelementEnd();
291
+ i0.ɵɵelementStart(5, "h2", 55);
292
+ i0.ɵɵtext(6);
293
+ i0.ɵɵelementEnd()();
294
+ i0.ɵɵelementStart(7, "div", 56);
295
+ i0.ɵɵconditionalCreate(8, VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Conditional_8_Template, 4, 0, "button", 57)(9, VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Conditional_9_Template, 7, 0);
296
+ i0.ɵɵelementStart(10, "button", 58);
297
+ i0.ɵɵlistener("click", function VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.CloseSlideOut()); });
298
+ i0.ɵɵelement(11, "i", 59);
299
+ i0.ɵɵelementEnd()()();
300
+ i0.ɵɵelementStart(12, "div", 60);
301
+ i0.ɵɵconditionalCreate(13, VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Conditional_13_Template, 4, 0, "div", 61);
302
+ i0.ɵɵconditionalCreate(14, VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Conditional_14_Template, 2, 1, "p", 62);
303
+ i0.ɵɵelementStart(15, "div", 63)(16, "div", 64)(17, "span", 65);
304
+ i0.ɵɵtext(18, "Default duration");
305
+ i0.ɵɵelementEnd();
306
+ i0.ɵɵelementStart(19, "span", 66);
307
+ i0.ɵɵtext(20);
308
+ i0.ɵɵelementEnd()();
309
+ i0.ɵɵelementStart(21, "div", 64)(22, "span", 65);
310
+ i0.ɵɵtext(23, "Duration range");
311
+ i0.ɵɵelementEnd();
312
+ i0.ɵɵelementStart(24, "span", 66);
313
+ i0.ɵɵtext(25);
314
+ i0.ɵɵelementEnd()();
315
+ i0.ɵɵelementStart(26, "div", 64)(27, "span", 65);
316
+ i0.ɵɵtext(28, "Default formats");
317
+ i0.ɵɵelementEnd();
318
+ i0.ɵɵelementStart(29, "span", 67);
319
+ i0.ɵɵrepeaterCreate(30, VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_For_31_Template, 1, 1, "mj-video-format-glyph", 48, i0.ɵɵrepeaterTrackByIdentity);
320
+ i0.ɵɵelementEnd()();
321
+ i0.ɵɵelementStart(32, "div", 64)(33, "span", 65);
322
+ i0.ɵɵtext(34, "Interaction mode");
323
+ i0.ɵɵelementEnd();
324
+ i0.ɵɵelementStart(35, "span", 68);
325
+ i0.ɵɵtext(36);
326
+ i0.ɵɵelementEnd()()();
327
+ i0.ɵɵelementStart(37, "section", 69)(38, "h3", 70);
328
+ i0.ɵɵelement(39, "i", 71);
329
+ i0.ɵɵelementStart(40, "span");
330
+ i0.ɵɵtext(41);
331
+ i0.ɵɵelementEnd()();
332
+ i0.ɵɵelement(42, "mj-video-beat-strip", 72);
333
+ i0.ɵɵelementStart(43, "div", 73);
334
+ i0.ɵɵrepeaterCreate(44, VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_For_45_Template, 12, 7, "div", 74, _forTrack2);
335
+ i0.ɵɵelementEnd()();
336
+ i0.ɵɵconditionalCreate(46, VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Conditional_46_Template, 12, 2, "section", 75);
337
+ i0.ɵɵconditionalCreate(47, VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Conditional_47_Template, 7, 1, "section", 76);
338
+ i0.ɵɵelementEnd()();
339
+ } if (rf & 2) {
340
+ const selected_r12 = ctx;
341
+ const ctx_r1 = i0.ɵɵnextContext(2);
342
+ i0.ɵɵadvance(4);
343
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.FormatCategoryLabel(selected_r12.Category), " ");
344
+ i0.ɵɵadvance(2);
345
+ i0.ɵɵtextInterpolate(selected_r12.Name);
346
+ i0.ɵɵadvance(2);
347
+ i0.ɵɵconditional(selected_r12.IsShipped ? 8 : 9);
348
+ i0.ɵɵadvance(2);
349
+ i0.ɵɵproperty("AriaLabel", "Close archetype preview");
350
+ i0.ɵɵadvance(3);
351
+ i0.ɵɵconditional(selected_r12.IsShipped ? 13 : -1);
352
+ i0.ɵɵadvance();
353
+ i0.ɵɵconditional(selected_r12.Description ? 14 : -1);
354
+ i0.ɵɵadvance(6);
355
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.FormatTime(selected_r12.DefaultDurationSeconds), " ");
356
+ i0.ɵɵadvance(5);
357
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.FormatTimeRange(selected_r12.MinDurationSeconds, selected_r12.MaxDurationSeconds), " ");
358
+ i0.ɵɵadvance(5);
359
+ i0.ɵɵrepeater(ctx_r1.ParseFormats(selected_r12.DefaultFormats));
360
+ i0.ɵɵadvance(6);
361
+ i0.ɵɵtextInterpolate(selected_r12.DefaultInteractionMode);
362
+ i0.ɵɵadvance(5);
363
+ i0.ɵɵtextInterpolate1("Beat template (", selected_r12.Beats.length, ")");
364
+ i0.ɵɵadvance();
365
+ i0.ɵɵproperty("Beats", selected_r12.BeatItems || i0.ɵɵpureFunction0(13, _c0));
366
+ i0.ɵɵadvance(2);
367
+ i0.ɵɵrepeater(selected_r12.Beats);
368
+ i0.ɵɵadvance(2);
369
+ i0.ɵɵconditional(selected_r12.Pacing ? 46 : -1);
370
+ i0.ɵɵadvance();
371
+ i0.ɵɵconditional(selected_r12.Guidance ? 47 : -1);
372
+ } }
373
+ function VideoStudioArchetypesResourceComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
374
+ const _r3 = i0.ɵɵgetCurrentView();
375
+ i0.ɵɵelementStart(0, "div", 21)(1, "div", 22)(2, "div", 23)(3, "div", 24)(4, "mj-filter-chip", 25);
376
+ i0.ɵɵlistener("Clicked", function VideoStudioArchetypesResourceComponent_Conditional_19_Template_mj_filter_chip_Clicked_4_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.SelectCategoryChip("all")); });
377
+ i0.ɵɵelementEnd();
378
+ i0.ɵɵrepeaterCreate(5, VideoStudioArchetypesResourceComponent_Conditional_19_For_6_Template, 1, 4, "mj-filter-chip", 26, _forTrack0);
379
+ i0.ɵɵelementEnd();
380
+ i0.ɵɵelement(7, "span", 27);
381
+ i0.ɵɵelementStart(8, "div", 28)(9, "mj-filter-chip", 29);
382
+ i0.ɵɵlistener("Clicked", function VideoStudioArchetypesResourceComponent_Conditional_19_Template_mj_filter_chip_Clicked_9_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleScopeChip("shipped")); });
383
+ i0.ɵɵelementEnd();
384
+ i0.ɵɵelementStart(10, "mj-filter-chip", 30);
385
+ i0.ɵɵlistener("Clicked", function VideoStudioArchetypesResourceComponent_Conditional_19_Template_mj_filter_chip_Clicked_10_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleScopeChip("company")); });
386
+ i0.ɵɵelementEnd()()();
387
+ i0.ɵɵconditionalCreate(11, VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_11_Template, 1, 0, "mj-empty-state", 31)(12, VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_12_Template, 3, 0, "div", 32);
388
+ i0.ɵɵelementEnd();
389
+ i0.ɵɵconditionalCreate(13, VideoStudioArchetypesResourceComponent_Conditional_19_Conditional_13_Template, 48, 14, "aside", 33);
390
+ i0.ɵɵelementEnd();
391
+ } if (rf & 2) {
392
+ let tmp_10_0;
393
+ const ctx_r1 = i0.ɵɵnextContext();
394
+ i0.ɵɵclassProp("vs-archetypes-workspace--split", ctx_r1.SelectedArchetype !== null);
395
+ i0.ɵɵadvance(4);
396
+ i0.ɵɵproperty("Count", ctx_r1.CategoryAllCount)("Active", ctx_r1.CategoryFilter === "all");
397
+ i0.ɵɵadvance();
398
+ i0.ɵɵrepeater(ctx_r1.CategoryChipItems);
399
+ i0.ɵɵadvance(4);
400
+ i0.ɵɵproperty("Count", ctx_r1.ShippedCount)("Active", ctx_r1.ScopeFilter === "shipped");
401
+ i0.ɵɵadvance();
402
+ i0.ɵɵproperty("Count", ctx_r1.CompanyCount)("Active", ctx_r1.ScopeFilter === "company");
403
+ i0.ɵɵadvance();
404
+ i0.ɵɵconditional(ctx_r1.FilteredArchetypes.length === 0 ? 11 : 12);
405
+ i0.ɵɵadvance(2);
406
+ i0.ɵɵconditional((tmp_10_0 = ctx_r1.SelectedArchetype) ? 13 : -1, tmp_10_0);
407
+ } }
408
+ function VideoStudioArchetypesResourceComponent_Conditional_20_Template(rf, ctx) { if (rf & 1) {
409
+ const _r17 = i0.ɵɵgetCurrentView();
410
+ i0.ɵɵelementStart(0, "mj-dialog", 96);
411
+ i0.ɵɵlistener("Close", function VideoStudioArchetypesResourceComponent_Conditional_20_Template_mj_dialog_Close_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseArchetypeEditor()); });
412
+ i0.ɵɵelementStart(1, "vs-archetype-editor", 97);
413
+ i0.ɵɵlistener("Saved", function VideoStudioArchetypesResourceComponent_Conditional_20_Template_vs_archetype_editor_Saved_1_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnArchetypeEditorSaved($event)); })("Cancelled", function VideoStudioArchetypesResourceComponent_Conditional_20_Template_vs_archetype_editor_Cancelled_1_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseArchetypeEditor()); });
414
+ i0.ɵɵelementEnd()();
415
+ } if (rf & 2) {
416
+ const ctx_r1 = i0.ɵɵnextContext();
417
+ i0.ɵɵproperty("Visible", true)("Title", ctx_r1.EditorDialogTitle);
418
+ i0.ɵɵadvance();
419
+ i0.ɵɵproperty("Provider", ctx_r1.ProviderToUse)("Mode", ctx_r1.EditorMode)("SourceArchetypeId", ctx_r1.EditorSourceArchetypeId)("EditingArchetypeId", ctx_r1.EditorEditingArchetypeId);
420
+ } }
421
+ /**
422
+ * Archetypes resource tab for the Video Studio application.
423
+ *
424
+ * Displays all `MJ: Video Archetypes` from `VideoStudioEngine` in a single
425
+ * grid with `<mj-filter-chip>` filters for `Category` (`Announcement | Briefing |
426
+ * DataStory | Explainer | Product | Social | Tutorial`) and scope (`Shipped` /
427
+ * `Yours`), proportional beat-timeline strips (`arch.BeatTemplateObject`), and an
428
+ * inline slide-out preview showing the full beat template, pacing rules,
429
+ * and narrative guidance.
430
+ *
431
+ * Company archetypes (`CompanyID` non-null) provide an "Edit" button that opens
432
+ * `vs-archetype-editor` plus an "Open record" link to the entity form, while
433
+ * shipped archetypes (`CompanyID IS NULL`) are read-only with a "Make a copy"
434
+ * button that opens `vs-archetype-editor` pre-filled with the shipped row.
435
+ */
436
+ let VideoStudioArchetypesResourceComponent = class VideoStudioArchetypesResourceComponent extends BaseResourceComponent {
437
+ IsLoading = false;
438
+ LoadError = null;
439
+ AllArchetypes = [];
440
+ FilteredArchetypes = [];
441
+ CategoryGroups = [];
442
+ CategoryChipItems = [];
443
+ CategoryAllCount = 0;
444
+ SelectedArchetype = null;
445
+ SearchText = '';
446
+ CategoryFilter = 'all';
447
+ ScopeFilter = 'all';
448
+ FilterFields = [
449
+ {
450
+ key: 'category',
451
+ label: 'Category',
452
+ type: 'dropdown',
453
+ options: [
454
+ { value: 'all', text: 'All categories' },
455
+ ...ARCHETYPE_CATEGORIES.map((cat) => ({
456
+ value: cat,
457
+ text: this.FormatCategoryLabel(cat),
458
+ })),
459
+ ],
460
+ },
461
+ {
462
+ key: 'scope',
463
+ label: 'Scope',
464
+ type: 'dropdown',
465
+ options: [
466
+ { value: 'all', text: 'All scopes' },
467
+ { value: 'shipped', text: 'Shipped (read-only)' },
468
+ { value: 'company', text: 'Company overrides' },
469
+ ],
470
+ },
471
+ ];
472
+ FilterValues = {
473
+ category: 'all',
474
+ scope: 'all',
475
+ };
476
+ // Archetype editor dialog state
477
+ IsEditorOpen = false;
478
+ EditorMode = 'copy';
479
+ EditorSourceArchetypeId = null;
480
+ EditorEditingArchetypeId = null;
481
+ PageContext = this.buildArchetypesContext();
482
+ PageTools = this.buildArchetypesClientTools();
483
+ cdr = inject(ChangeDetectorRef);
484
+ get CurrentUser() {
485
+ return this.ProviderToUse?.CurrentUser ?? null;
486
+ }
487
+ get EnvironmentId() {
488
+ return (this.Data?.Configuration?.['environmentId'] ||
489
+ MJEnvironmentEntityExtended.DefaultEnvironmentID);
490
+ }
491
+ get ApplicationId() {
492
+ return this.Data?.Configuration?.['applicationId'] ?? '';
493
+ }
494
+ async ngOnInit() {
495
+ super.ngOnInit();
496
+ await this.LoadArchetypes(false);
497
+ this.NotifyLoadComplete();
498
+ }
499
+ async GetResourceDisplayName(_data) {
500
+ return 'Archetypes';
501
+ }
502
+ async GetResourceIconClass(_data) {
503
+ return 'fa-solid fa-layer-group';
504
+ }
505
+ get TotalCount() {
506
+ return this.AllArchetypes.length;
507
+ }
508
+ get FilteredCount() {
509
+ return this.FilteredArchetypes.length;
510
+ }
511
+ get ShippedCount() {
512
+ return this.AllArchetypes.filter((a) => a.IsShipped).length;
513
+ }
514
+ get CompanyCount() {
515
+ return this.AllArchetypes.filter((a) => !a.IsShipped).length;
516
+ }
517
+ get EditorDialogTitle() {
518
+ if (this.EditorMode === 'edit') {
519
+ const target = this.AllArchetypes.find((a) => this.EditorEditingArchetypeId && UUIDsEqual(a.ID, this.EditorEditingArchetypeId));
520
+ return target ? `Edit "${target.Name}"` : 'Edit archetype';
521
+ }
522
+ if (this.EditorSourceArchetypeId) {
523
+ const source = this.AllArchetypes.find((a) => this.EditorSourceArchetypeId && UUIDsEqual(a.ID, this.EditorSourceArchetypeId));
524
+ if (source) {
525
+ return `Make a copy of "${source.Name}"`;
526
+ }
527
+ }
528
+ return 'New archetype';
529
+ }
530
+ get ActivePopoverFilterCount() {
531
+ let count = 0;
532
+ if (this.CategoryFilter && this.CategoryFilter !== 'all') {
533
+ count++;
534
+ }
535
+ if (this.ScopeFilter && this.ScopeFilter !== 'all') {
536
+ count++;
537
+ }
538
+ return count;
539
+ }
540
+ async Refresh() {
541
+ await this.LoadArchetypes(true);
542
+ }
543
+ async LoadArchetypes(forceRefresh = false) {
544
+ this.IsLoading = true;
545
+ this.LoadError = null;
546
+ this.cdr.markForCheck();
547
+ try {
548
+ const engine = VideoStudioEngine.GetProviderInstance(this.ProviderToUse, VideoStudioEngine);
549
+ await engine.Config(forceRefresh, undefined, this.ProviderToUse);
550
+ const archetypes = engine.Archetypes;
551
+ this.AllArchetypes = archetypes.map((arch) => this.mapArchetypeToCard(arch));
552
+ this.applyFiltersAndSync();
553
+ }
554
+ catch (err) {
555
+ const msg = err instanceof Error ? err.message : String(err);
556
+ LogError(msg);
557
+ this.LoadError = msg;
558
+ }
559
+ finally {
560
+ this.IsLoading = false;
561
+ this.syncAgentContext();
562
+ this.cdr.markForCheck();
563
+ }
564
+ }
565
+ OnSearchChange(value) {
566
+ this.SearchText = value;
567
+ this.applyFiltersAndSync();
568
+ }
569
+ OnFilterValuesChange(values) {
570
+ this.FilterValues = { ...values };
571
+ const rawCat = typeof values['category'] === 'string' && values['category'].trim()
572
+ ? values['category'].trim()
573
+ : 'all';
574
+ const rawScope = typeof values['scope'] === 'string' && values['scope'].trim()
575
+ ? values['scope'].trim()
576
+ : 'all';
577
+ this.CategoryFilter = rawCat;
578
+ this.ScopeFilter = rawScope;
579
+ this.applyFiltersAndSync();
580
+ }
581
+ SelectCategoryChip(category) {
582
+ const nextCategory = category !== 'all' && this.CategoryFilter === category ? 'all' : category;
583
+ this.CategoryFilter = nextCategory;
584
+ this.FilterValues = {
585
+ ...this.FilterValues,
586
+ category: nextCategory,
587
+ };
588
+ this.applyFiltersAndSync();
589
+ }
590
+ ToggleScopeChip(scope) {
591
+ const nextScope = this.ScopeFilter === scope ? 'all' : scope;
592
+ this.ScopeFilter = nextScope;
593
+ this.FilterValues = {
594
+ ...this.FilterValues,
595
+ scope: nextScope,
596
+ };
597
+ this.applyFiltersAndSync();
598
+ }
599
+ ClearAllFilters() {
600
+ this.CategoryFilter = 'all';
601
+ this.ScopeFilter = 'all';
602
+ this.FilterValues = {
603
+ category: 'all',
604
+ scope: 'all',
605
+ };
606
+ this.applyFiltersAndSync();
607
+ }
608
+ SelectArchetype(item) {
609
+ this.SelectedArchetype = item;
610
+ this.syncAgentContext();
611
+ this.cdr.markForCheck();
612
+ }
613
+ CloseSlideOut() {
614
+ this.SelectArchetype(null);
615
+ }
616
+ OpenNewArchetypeEditor() {
617
+ this.EditorMode = 'copy';
618
+ this.EditorSourceArchetypeId = this.SelectedArchetype?.ID ?? null;
619
+ this.EditorEditingArchetypeId = null;
620
+ this.IsEditorOpen = true;
621
+ this.cdr.markForCheck();
622
+ }
623
+ OpenCopyArchetypeEditor(item, event) {
624
+ event?.stopPropagation();
625
+ this.EditorMode = 'copy';
626
+ this.EditorSourceArchetypeId = item.ID;
627
+ this.EditorEditingArchetypeId = null;
628
+ this.IsEditorOpen = true;
629
+ this.cdr.markForCheck();
630
+ }
631
+ OpenEditArchetypeEditor(item, event) {
632
+ event?.stopPropagation();
633
+ if (item.IsShipped) {
634
+ this.OpenCopyArchetypeEditor(item, event);
635
+ return;
636
+ }
637
+ this.EditorMode = 'edit';
638
+ this.EditorSourceArchetypeId = null;
639
+ this.EditorEditingArchetypeId = item.ID;
640
+ this.IsEditorOpen = true;
641
+ this.cdr.markForCheck();
642
+ }
643
+ OpenArchetypeRecord(item, event) {
644
+ event?.stopPropagation();
645
+ if (item.IsShipped) {
646
+ this.OpenCopyArchetypeEditor(item, event);
647
+ return;
648
+ }
649
+ this.navigationService.OpenEntityRecord('MJ: Video Archetypes', CompositeKey.FromID(item.ID));
650
+ }
651
+ CloseArchetypeEditor() {
652
+ this.IsEditorOpen = false;
653
+ this.EditorSourceArchetypeId = null;
654
+ this.EditorEditingArchetypeId = null;
655
+ this.cdr.markForCheck();
656
+ }
657
+ async OnArchetypeEditorSaved(savedArchetypeId) {
658
+ this.IsEditorOpen = false;
659
+ this.EditorSourceArchetypeId = null;
660
+ this.EditorEditingArchetypeId = null;
661
+ await this.LoadArchetypes(true);
662
+ const saved = this.AllArchetypes.find((a) => UUIDsEqual(a.ID, savedArchetypeId));
663
+ if (saved) {
664
+ this.SelectArchetype(saved);
665
+ }
666
+ this.cdr.markForCheck();
667
+ }
668
+ FormatCategoryLabel(category) {
669
+ if (category === 'DataStory') {
670
+ return 'Data Story';
671
+ }
672
+ return category;
673
+ }
674
+ FormatTime(seconds) {
675
+ return FormatVideoTime(seconds);
676
+ }
677
+ FormatTimeRange(minSeconds, maxSeconds) {
678
+ return FormatVideoTimeRange(minSeconds, maxSeconds);
679
+ }
680
+ ParseFormats(formatsRaw) {
681
+ return ParseArchetypeDefaultFormats(formatsRaw);
682
+ }
683
+ ResetFiltersAndSearch() {
684
+ this.ClearAllFilters();
685
+ this.OnSearchChange('');
686
+ }
687
+ rebuildCategoryChips() {
688
+ const rowsAfterOtherFilters = FilterArchetypeCards(this.AllArchetypes, {
689
+ SearchQuery: this.SearchText,
690
+ Category: 'all',
691
+ Scope: this.ScopeFilter,
692
+ });
693
+ const countsByCategory = new Map();
694
+ for (const cat of ARCHETYPE_CATEGORIES) {
695
+ countsByCategory.set(cat, 0);
696
+ }
697
+ for (const arch of rowsAfterOtherFilters) {
698
+ countsByCategory.set(arch.Category, (countsByCategory.get(arch.Category) ?? 0) + 1);
699
+ }
700
+ this.CategoryAllCount = rowsAfterOtherFilters.length;
701
+ this.CategoryChipItems = ARCHETYPE_CATEGORIES.map((cat) => ({
702
+ Category: cat,
703
+ Label: this.FormatCategoryLabel(cat),
704
+ Count: countsByCategory.get(cat) ?? 0,
705
+ }));
706
+ }
707
+ mapArchetypeToCard(arch) {
708
+ const snapshot = MapArchetypeToCard(arch);
709
+ const rawBeats = Array.isArray(arch.BeatTemplateObject) ? arch.BeatTemplateObject : [];
710
+ const beatItems = snapshot.BeatItems ?? [];
711
+ const totalWeight = beatItems.reduce((acc, item) => acc + item.Seconds, 0) || 1;
712
+ const beats = rawBeats.map((b, idx) => {
713
+ const stripItem = beatItems[idx];
714
+ const seconds = stripItem?.Seconds ?? 1;
715
+ return {
716
+ Key: (b.Key ?? '').trim() || stripItem?.Key || `beat-${idx + 1}`,
717
+ Label: stripItem?.Label ?? (b.Label || b.Key || `Beat ${idx + 1}`),
718
+ Purpose: b.Purpose || '',
719
+ MinDurationSeconds: b.MinDurationSeconds ?? 0,
720
+ MaxDurationSeconds: b.MaxDurationSeconds ?? 0,
721
+ DefaultDurationSeconds: b.DefaultDurationSeconds,
722
+ ComputedDurationSeconds: seconds,
723
+ WidthPercent: Math.max(4, Math.round((seconds / totalWeight) * 1000) / 10),
724
+ Guidance: b.Guidance,
725
+ RequiresDataBinding: b.RequiresDataBinding,
726
+ };
727
+ });
728
+ const pacingObj = arch.PacingObject;
729
+ const pacing = pacingObj
730
+ ? {
731
+ ...pacingObj,
732
+ AvgSecondsBetweenChanges: pacingObj.AvgSecondsBetweenChanges ?? 0,
733
+ HoldRules: pacingObj.HoldRules ?? '',
734
+ }
735
+ : null;
736
+ return {
737
+ ...snapshot,
738
+ DefaultInteractionMode: arch.DefaultInteractionMode ?? 'Auto',
739
+ Guidance: arch.Guidance ?? null,
740
+ BeatTemplateRaw: arch.BeatTemplate ?? JSON.stringify(rawBeats),
741
+ PacingRaw: arch.Pacing ?? (pacingObj ? JSON.stringify(pacingObj) : null),
742
+ Beats: beats,
743
+ Pacing: pacing,
744
+ };
745
+ }
746
+ currentFilterState() {
747
+ return {
748
+ SearchQuery: this.SearchText,
749
+ Category: this.CategoryFilter,
750
+ Scope: this.ScopeFilter,
751
+ };
752
+ }
753
+ applyFiltersAndSync() {
754
+ this.rebuildCategoryChips();
755
+ this.FilteredArchetypes = FilterArchetypeCards(this.AllArchetypes, this.currentFilterState());
756
+ this.CategoryGroups = GroupArchetypesByCategory(this.FilteredArchetypes);
757
+ this.syncAgentContext();
758
+ this.cdr.markForCheck();
759
+ }
760
+ buildArchetypesContext() {
761
+ return BuildArchetypesAgentContext({
762
+ AllCards: this.AllArchetypes,
763
+ FilteredCards: this.FilteredArchetypes,
764
+ Filters: this.currentFilterState(),
765
+ SelectedArchetype: this.SelectedArchetype,
766
+ IsLoading: this.IsLoading,
767
+ });
768
+ }
769
+ syncAgentContext() {
770
+ this.PageContext = this.buildArchetypesContext();
771
+ this.navigationService.SetAgentContext(this, this.PageContext);
772
+ }
773
+ // SAFETY BOUNDARY: Only read, filter, search, select/open-for-viewing, and refresh
774
+ // tools are registered for the AI agent. Creating or editing a company archetype
775
+ // writes a database record and is gated exclusively behind the user-driven
776
+ // vs-archetype-editor dialog.
777
+ buildArchetypesClientTools() {
778
+ return [
779
+ {
780
+ Name: 'SearchArchetypes',
781
+ Description: 'Filter Video Archetypes by a free-text search query matching name, category, format, or beat labels.',
782
+ ParameterSchema: {
783
+ type: 'object',
784
+ properties: {
785
+ query: { type: 'string', description: 'Free-text search query (empty string clears search).' },
786
+ },
787
+ required: ['query'],
788
+ },
789
+ Handler: async (params) => {
790
+ const query = typeof params['query'] === 'string' ? params['query'] : '';
791
+ this.OnSearchChange(query);
792
+ return {
793
+ Success: true,
794
+ Data: { FilteredCount: this.FilteredCount },
795
+ };
796
+ },
797
+ },
798
+ {
799
+ Name: 'FilterArchetypes',
800
+ Description: 'Filter Video Archetypes by category or scope (all, shipped, company).',
801
+ ParameterSchema: {
802
+ type: 'object',
803
+ properties: {
804
+ category: {
805
+ type: 'string',
806
+ description: 'Category name (Announcement, Briefing, DataStory, Explainer, Product, Social, Tutorial, or "all").',
807
+ },
808
+ scope: {
809
+ type: 'string',
810
+ enum: ['all', 'shipped', 'company'],
811
+ description: 'Scope filter ("all", "shipped", or "company").',
812
+ },
813
+ },
814
+ },
815
+ Handler: async (params) => {
816
+ const nextValues = { ...this.FilterValues };
817
+ if (typeof params['category'] === 'string') {
818
+ nextValues['category'] = params['category'];
819
+ }
820
+ if (typeof params['scope'] === 'string') {
821
+ nextValues['scope'] = params['scope'];
822
+ }
823
+ this.OnFilterValuesChange(nextValues);
824
+ return {
825
+ Success: true,
826
+ Data: { FilteredCount: this.FilteredCount },
827
+ };
828
+ },
829
+ },
830
+ {
831
+ Name: 'ClearArchetypeFilters',
832
+ Description: 'Clear all active search and popover filters on the Video Archetypes tab.',
833
+ ParameterSchema: { type: 'object', properties: {} },
834
+ Handler: async () => {
835
+ this.SearchText = '';
836
+ this.ClearAllFilters();
837
+ return {
838
+ Success: true,
839
+ Data: { FilteredCount: this.FilteredCount },
840
+ };
841
+ },
842
+ },
843
+ {
844
+ Name: 'SelectArchetype',
845
+ Description: 'Open the inline slide-out preview for a Video Archetype by ID or name.',
846
+ ParameterSchema: {
847
+ type: 'object',
848
+ properties: {
849
+ archetype: { type: 'string', description: 'Archetype ID or display name.' },
850
+ },
851
+ required: ['archetype'],
852
+ },
853
+ Handler: async (params) => {
854
+ const resolution = ResolveVideoStudioItem(params['archetype'], this.AllArchetypes, 'video archetype');
855
+ if (!resolution.Ok) {
856
+ return { Success: false, ErrorMessage: resolution.Error };
857
+ }
858
+ this.SelectArchetype(resolution.Item);
859
+ return {
860
+ Success: true,
861
+ Data: { ID: resolution.Item.ID, Name: resolution.Item.Name },
862
+ };
863
+ },
864
+ },
865
+ {
866
+ Name: 'OpenArchetype',
867
+ Description: 'Open a company Video Archetype record form by ID or name (shipped archetypes are read-only and open in the slide-out preview).',
868
+ ParameterSchema: {
869
+ type: 'object',
870
+ properties: {
871
+ archetype: { type: 'string', description: 'Archetype ID or display name.' },
872
+ },
873
+ required: ['archetype'],
874
+ },
875
+ Handler: async (params) => {
876
+ const resolution = ResolveVideoStudioItem(params['archetype'], this.AllArchetypes, 'video archetype');
877
+ if (!resolution.Ok) {
878
+ return { Success: false, ErrorMessage: resolution.Error };
879
+ }
880
+ if (resolution.Item.IsShipped) {
881
+ this.SelectArchetype(resolution.Item);
882
+ return {
883
+ Success: true,
884
+ Data: { ID: resolution.Item.ID, Name: resolution.Item.Name, IsShipped: true },
885
+ };
886
+ }
887
+ this.navigationService.OpenEntityRecord('MJ: Video Archetypes', CompositeKey.FromID(resolution.Item.ID));
888
+ return {
889
+ Success: true,
890
+ Data: { ID: resolution.Item.ID, Name: resolution.Item.Name, IsShipped: false },
891
+ };
892
+ },
893
+ },
894
+ {
895
+ Name: 'RefreshArchetypes',
896
+ Description: 'Reload Video Archetypes from VideoStudioEngine.',
897
+ ParameterSchema: { type: 'object', properties: {} },
898
+ Handler: async () => {
899
+ await this.Refresh();
900
+ return {
901
+ Success: true,
902
+ Data: { TotalCount: this.TotalCount },
903
+ };
904
+ },
905
+ },
906
+ ];
907
+ }
908
+ static ɵfac = /*@__PURE__*/ (() => { let ɵVideoStudioArchetypesResourceComponent_BaseFactory; return function VideoStudioArchetypesResourceComponent_Factory(__ngFactoryType__) { return (ɵVideoStudioArchetypesResourceComponent_BaseFactory || (ɵVideoStudioArchetypesResourceComponent_BaseFactory = i0.ɵɵgetInheritedFactory(VideoStudioArchetypesResourceComponent)))(__ngFactoryType__ || VideoStudioArchetypesResourceComponent); }; })();
909
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: VideoStudioArchetypesResourceComponent, selectors: [["mj-video-studio-archetypes-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 22, vars: 19, consts: [[1, "vs-resource-shell"], [1, "vs-resource-shell__page"], ["Title", "Archetypes", "Icon", "fa-solid fa-layer-group", "Subtitle", "Reusable beat templates, duration ranges, and pacing rules for video productions"], ["meta", ""], ["Label", "Archetypes", 3, "Count", "Total"], ["actions", ""], [3, "Clicked", "Loading"], ["type", "button", "mjButton", "", "Variant", "primary", "data-testid", "new-archetype-button", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-plus"], ["toolbar", ""], ["Placeholder", "Search archetypes by name, category, format, or beat...", 3, "ValueChange", "Value"], ["Label", "Filters", "Icon", "fa-solid fa-filter", 3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Fields", "Values", "ShowReset"], ["data-testid", "archetypes-loading", 1, "vs-loading-state"], ["data-testid", "archetypes-error", "Role", "alert", "Variant", "error", "Icon", "fa-solid fa-triangle-exclamation", "Title", "Unable to load archetypes", "ActionText", "Try again", "ActionIcon", "fa-solid fa-rotate", "ActionVariant", "secondary", 3, "Message"], ["data-testid", "archetypes-empty", "Variant", "empty", "Icon", "fa-solid fa-layer-group", "Title", "No video archetypes available", "Message", "Archetypes define reusable narrative structures, beat templates, and pacing rules."], [1, "vs-archetypes-workspace", 3, "vs-archetypes-workspace--split"], ["Size", "lg", 3, "Visible", "Title"], [3, "Provider", "CurrentUser", "EnvironmentId", "ApplicationId", "PageSource", "PageContext", "PageTools", "HeaderTitle"], ["Text", "Loading video archetypes...", "Size", "medium"], ["data-testid", "archetypes-error", "Role", "alert", "Variant", "error", "Icon", "fa-solid fa-triangle-exclamation", "Title", "Unable to load archetypes", "ActionText", "Try again", "ActionIcon", "fa-solid fa-rotate", "ActionVariant", "secondary", 3, "Action", "Message"], [1, "vs-archetypes-workspace"], [1, "vs-archetypes-main"], ["data-testid", "archetypes-filter-chips", 1, "vs-archetypes-filter-bar"], ["role", "group", "aria-label", "Filter by category", 1, "vs-archetypes-chip-group"], ["data-testid", "archetype-category-chip-all", "Label", "All", 3, "Clicked", "Count", "Active"], [3, "Label", "Count", "Active"], ["aria-hidden", "true", 1, "vs-archetypes-chip-divider"], ["role", "group", "aria-label", "Filter by scope", 1, "vs-archetypes-chip-group"], ["data-testid", "archetype-scope-chip-shipped", "Label", "Shipped", 3, "Clicked", "Count", "Active"], ["data-testid", "archetype-scope-chip-company", "Label", "Yours", 3, "Clicked", "Count", "Active"], ["data-testid", "archetypes-empty", "Variant", "no-results", "Icon", "fa-solid fa-layer-group", "Title", "No archetypes match your filters", "Message", "Try clearing your search query or adjusting the active category or scope filters.", "ActionText", "Reset filters", "ActionIcon", "fa-solid fa-filter-circle-xmark", "ActionVariant", "secondary"], ["data-testid", "archetypes-grid", 1, "vs-archetypes-grid"], ["data-testid", "archetype-slideout", 1, "vs-archetype-slideout"], [3, "Clicked", "Label", "Count", "Active"], ["data-testid", "archetypes-empty", "Variant", "no-results", "Icon", "fa-solid fa-layer-group", "Title", "No archetypes match your filters", "Message", "Try clearing your search query or adjusting the active category or scope filters.", "ActionText", "Reset filters", "ActionIcon", "fa-solid fa-filter-circle-xmark", "ActionVariant", "secondary", 3, "Action"], ["tabindex", "0", "role", "button", 1, "vs-archetype-card", 3, "vs-archetype-card--selected"], ["tabindex", "0", "role", "button", 1, "vs-archetype-card", 3, "click", "keydown.enter", "keydown.space"], [1, "vs-archetype-card-header"], [1, "vs-archetype-title", 3, "title"], ["data-testid", "archetype-company-badge", 1, "vs-archetype-company-meta"], ["Variant", "neutral", "data-testid", "archetype-shipped-badge"], [1, "vs-archetype-description"], [1, "vs-archetype-meta-line"], ["data-testid", "archetype-category-meta", 1, "vs-archetype-category-meta"], ["aria-hidden", "true", 1, "vs-archetype-meta-sep"], ["data-testid", "archetype-duration-badge", 1, "vs-archetype-duration-meta"], ["data-testid", "archetype-formats-badge", 1, "vs-archetype-formats-meta"], ["Size", "sm", 3, "Format"], [1, "vs-archetype-beat-strip-wrap"], ["data-testid", "archetype-beat-timeline", 3, "Beats"], ["aria-hidden", "true", 1, "fa-solid", "fa-lock"], [1, "vs-slideout-header"], [1, "vs-slideout-title-wrap"], [1, "vs-slideout-category-tag"], [1, "vs-slideout-title"], [1, "vs-slideout-actions"], ["type", "button", "mjButton", "", "Variant", "primary", "Size", "sm", "data-testid", "archetype-make-copy-button"], ["type", "button", "mjButton", "", "Variant", "icon", "Size", "sm", "data-testid", "archetype-slideout-close", 3, "click", "AriaLabel"], ["aria-hidden", "true", 1, "fa-solid", "fa-xmark"], [1, "vs-slideout-body"], ["data-testid", "archetype-shipped-readonly-banner", 1, "vs-shipped-readonly-banner"], [1, "vs-slideout-description"], [1, "vs-slideout-summary-grid"], [1, "vs-summary-item"], [1, "vs-summary-label"], [1, "vs-summary-value", "vs-summary-value--mono"], [1, "vs-summary-value", "vs-archetype-formats-meta"], [1, "vs-summary-value"], [1, "vs-slideout-section"], [1, "vs-slideout-section-title"], ["aria-hidden", "true", 1, "fa-solid", "fa-timeline"], [3, "Beats"], [1, "vs-slideout-beat-list"], ["data-testid", "slideout-beat-item", 1, "vs-slideout-beat-item"], ["data-testid", "slideout-pacing-section", 1, "vs-slideout-section"], ["data-testid", "slideout-guidance-section", 1, "vs-slideout-section"], ["type", "button", "mjButton", "", "Variant", "primary", "Size", "sm", "data-testid", "archetype-make-copy-button", 3, "click"], ["aria-hidden", "true", 1, "fa-regular", "fa-copy"], ["type", "button", "mjButton", "", "Variant", "primary", "Size", "sm", "data-testid", "archetype-edit-button", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-pen-to-square"], ["type", "button", "mjButton", "", "Variant", "flat", "Size", "sm", "data-testid", "archetype-open-record-button", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-circle-info"], [1, "vs-slideout-beat-header"], [1, "vs-slideout-beat-index"], [1, "vs-slideout-beat-name"], [1, "vs-slideout-beat-duration"], ["Variant", "info"], [1, "vs-slideout-beat-purpose"], [1, "vs-slideout-beat-guidance"], ["aria-hidden", "true", 1, "fa-solid", "fa-gauge-high"], [1, "vs-pacing-box"], [1, "vs-pacing-stat"], [1, "vs-pacing-hold-rules"], ["aria-hidden", "true", 1, "fa-solid", "fa-compass"], [1, "vs-guidance-text"], ["Size", "lg", 3, "Close", "Visible", "Title"], [3, "Saved", "Cancelled", "Provider", "Mode", "SourceArchetypeId", "EditingArchetypeId"]], template: function VideoStudioArchetypesResourceComponent_Template(rf, ctx) { if (rf & 1) {
910
+ i0.ɵɵelementStart(0, "div", 0)(1, "mj-page-layout", 1)(2, "mj-page-header", 2)(3, "div", 3);
911
+ i0.ɵɵelement(4, "mj-stat-badge", 4);
912
+ i0.ɵɵelementEnd();
913
+ i0.ɵɵelementStart(5, "div", 5)(6, "mj-refresh-button", 6);
914
+ i0.ɵɵlistener("Clicked", function VideoStudioArchetypesResourceComponent_Template_mj_refresh_button_Clicked_6_listener() { return ctx.Refresh(); });
915
+ i0.ɵɵelementEnd();
916
+ i0.ɵɵelementStart(7, "button", 7);
917
+ i0.ɵɵlistener("click", function VideoStudioArchetypesResourceComponent_Template_button_click_7_listener() { return ctx.OpenNewArchetypeEditor(); });
918
+ i0.ɵɵelement(8, "i", 8);
919
+ i0.ɵɵelementStart(9, "span");
920
+ i0.ɵɵtext(10, "New archetype");
921
+ i0.ɵɵelementEnd()()();
922
+ i0.ɵɵelementStart(11, "div", 9)(12, "mj-page-search", 10);
923
+ i0.ɵɵlistener("ValueChange", function VideoStudioArchetypesResourceComponent_Template_mj_page_search_ValueChange_12_listener($event) { return ctx.OnSearchChange($event); });
924
+ i0.ɵɵelementEnd();
925
+ i0.ɵɵelementStart(13, "mj-filter-popover", 11);
926
+ i0.ɵɵlistener("ClearAllRequested", function VideoStudioArchetypesResourceComponent_Template_mj_filter_popover_ClearAllRequested_13_listener() { return ctx.ClearAllFilters(); });
927
+ i0.ɵɵelementStart(14, "mj-filter-panel", 12);
928
+ i0.ɵɵlistener("ValuesChange", function VideoStudioArchetypesResourceComponent_Template_mj_filter_panel_ValuesChange_14_listener($event) { return ctx.OnFilterValuesChange($event); });
929
+ i0.ɵɵelementEnd()()()();
930
+ i0.ɵɵelementStart(15, "mj-page-body");
931
+ i0.ɵɵconditionalCreate(16, VideoStudioArchetypesResourceComponent_Conditional_16_Template, 2, 0, "div", 13)(17, VideoStudioArchetypesResourceComponent_Conditional_17_Template, 1, 1, "mj-empty-state", 14)(18, VideoStudioArchetypesResourceComponent_Conditional_18_Template, 1, 0, "mj-empty-state", 15)(19, VideoStudioArchetypesResourceComponent_Conditional_19_Template, 14, 10, "div", 16);
932
+ i0.ɵɵconditionalCreate(20, VideoStudioArchetypesResourceComponent_Conditional_20_Template, 2, 6, "mj-dialog", 17);
933
+ i0.ɵɵelementEnd()();
934
+ i0.ɵɵelement(21, "vs-studio-slide-in", 18);
935
+ i0.ɵɵelementEnd();
936
+ } if (rf & 2) {
937
+ i0.ɵɵadvance(4);
938
+ i0.ɵɵproperty("Count", ctx.FilteredCount)("Total", ctx.TotalCount);
939
+ i0.ɵɵadvance(2);
940
+ i0.ɵɵproperty("Loading", ctx.IsLoading);
941
+ i0.ɵɵadvance(6);
942
+ i0.ɵɵproperty("Value", ctx.SearchText);
943
+ i0.ɵɵadvance();
944
+ i0.ɵɵproperty("ActiveCount", ctx.ActivePopoverFilterCount)("ShowClearAll", ctx.ActivePopoverFilterCount > 0);
945
+ i0.ɵɵadvance();
946
+ i0.ɵɵproperty("Fields", ctx.FilterFields)("Values", ctx.FilterValues)("ShowReset", false);
947
+ i0.ɵɵadvance(2);
948
+ i0.ɵɵconditional(ctx.IsLoading && ctx.AllArchetypes.length === 0 ? 16 : ctx.LoadError ? 17 : ctx.AllArchetypes.length === 0 ? 18 : 19);
949
+ i0.ɵɵadvance(4);
950
+ i0.ɵɵconditional(ctx.IsEditorOpen ? 20 : -1);
951
+ i0.ɵɵadvance();
952
+ i0.ɵɵproperty("Provider", ctx.ProviderToUse)("CurrentUser", ctx.CurrentUser)("EnvironmentId", ctx.EnvironmentId)("ApplicationId", ctx.ApplicationId)("PageSource", ctx)("PageContext", ctx.PageContext)("PageTools", ctx.PageTools)("HeaderTitle", "Video Studio");
953
+ } }, dependencies: [i1.LoadingComponent, i2.MJVideoBadgeComponent, i2.MJVideoFormatGlyphComponent, i2.MJVideoBeatStripComponent, i3.VSArchetypeEditorComponent, i4.VSStudioSlideInComponent, i5.MJButtonDirective, i5.MJDialogComponent, i5.MJEmptyStateComponent, i5.MJFilterChipComponent, i5.MJPageLayoutComponent, i5.MJPageHeaderComponent, i5.MJPageBodyComponent, i5.MJPageSearchComponent, i5.MJFilterPopoverComponent, i5.MJFilterPanelComponent, i5.MJRefreshButtonComponent, i5.MJStatBadgeComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n width: 100%;\n}\n\n.vs-loading-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 320px;\n padding: var(--mj-space-8);\n text-align: center;\n background: var(--mj-bg-surface-card);\n border: 1px dashed var(--mj-border-default);\n border-radius: var(--mj-radius-lg);\n}\n\n.vs-archetypes-workspace[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr;\n min-height: 100%;\n}\n\n.vs-archetypes-workspace--split[_ngcontent-%COMP%] {\n grid-template-columns: minmax(340px, 1fr) minmax(380px, 480px);\n height: 100%;\n}\n\n.vs-archetypes-main[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4);\n min-width: 0;\n}\n\n.vs-archetypes-workspace--split[_ngcontent-%COMP%] .vs-archetypes-main[_ngcontent-%COMP%] {\n padding: var(--mj-space-5) var(--mj-space-6);\n overflow-y: auto;\n}\n\n.vs-archetypes-filter-bar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--mj-space-2);\n}\n\n.vs-archetypes-chip-group[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--mj-space-1-5);\n}\n\n.vs-archetypes-chip-divider[_ngcontent-%COMP%] {\n width: 1px;\n height: var(--mj-space-5);\n background: var(--mj-border-default);\n margin: 0 var(--mj-space-1);\n}\n\n.vs-archetypes-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: var(--mj-space-4);\n}\n\n.vs-archetype-card[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-3);\n padding: var(--mj-space-4);\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg);\n cursor: pointer;\n transition: var(--mj-transition-fast);\n}\n\n.vs-archetype-card[_ngcontent-%COMP%]:hover {\n transform: translateY(-2px);\n border-color: var(--mj-border-strong);\n box-shadow: var(--mj-shadow-md);\n}\n\n.vs-archetype-card[_ngcontent-%COMP%]:focus-visible {\n outline: none;\n box-shadow: var(--mj-focus-ring);\n}\n\n.vs-archetype-card--selected[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 var(--mj-ring-width) color-mix(in srgb, var(--mj-brand-primary) 24%, transparent);\n}\n\n.vs-archetype-card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--mj-space-2);\n}\n\n.vs-archetype-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-base);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.vs-archetype-company-meta[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n.vs-archetype-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.vs-archetype-meta-line[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--mj-space-2);\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n}\n\n.vs-archetype-category-meta[_ngcontent-%COMP%] {\n font-weight: var(--mj-font-medium);\n color: var(--mj-text-primary);\n}\n\n.vs-archetype-duration-meta[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n color: var(--mj-text-secondary);\n}\n\n.vs-archetype-meta-sep[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.vs-archetype-formats-meta[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n}\n\n.vs-archetype-beat-strip-wrap[_ngcontent-%COMP%] {\n margin-top: auto;\n padding-top: var(--mj-space-1);\n}\n\n.vs-archetype-slideout[_ngcontent-%COMP%] {\n border-left: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.vs-slideout-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--mj-space-3);\n padding: var(--mj-space-4) var(--mj-space-5);\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.vs-slideout-title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-1);\n min-width: 0;\n}\n\n.vs-slideout-category-tag[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-brand-primary);\n}\n\n.vs-slideout-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-lg);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.vs-slideout-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n flex-shrink: 0;\n}\n\n.vs-slideout-body[_ngcontent-%COMP%] {\n padding: var(--mj-space-5);\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-5);\n}\n\n.vs-slideout-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.vs-slideout-summary-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--mj-space-2-5);\n}\n\n.vs-summary-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-1);\n padding: var(--mj-space-2-5) var(--mj-space-3);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n}\n\n.vs-summary-label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.vs-summary-value[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.vs-summary-value--mono[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n}\n\n.vs-slideout-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2-5);\n}\n\n.vs-slideout-section-title[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.vs-slideout-beat-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2-5);\n}\n\n.vs-slideout-beat-item[_ngcontent-%COMP%] {\n padding: var(--mj-space-3);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-1-5);\n}\n\n.vs-slideout-beat-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n}\n\n.vs-slideout-beat-index[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--mj-space-5);\n height: var(--mj-space-5);\n border-radius: var(--mj-radius-full);\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n}\n\n.vs-slideout-beat-name[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.vs-slideout-beat-duration[_ngcontent-%COMP%] {\n margin-left: auto;\n font-variant-numeric: tabular-nums;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.vs-slideout-beat-purpose[_ngcontent-%COMP%], \n.vs-slideout-beat-guidance[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n}\n\n.vs-pacing-box[_ngcontent-%COMP%] {\n padding: var(--mj-space-3);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-1-5);\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n}\n\n.vs-pacing-stat[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n color: var(--mj-text-primary);\n}\n\n.vs-pacing-stat[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n}\n\n.vs-pacing-hold-rules[_ngcontent-%COMP%], \n.vs-guidance-text[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.vs-shipped-readonly-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: var(--mj-space-2);\n padding: var(--mj-space-2-5) var(--mj-space-3);\n border-radius: var(--mj-radius-md);\n background: var(--mj-status-info-bg);\n border: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-xs);\n line-height: 1.4;\n}\n\n.vs-resource-shell[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: stretch;\n width: 100%;\n height: 100%;\n min-height: 0;\n min-width: 0;\n overflow: hidden;\n}\n\n.vs-resource-shell__page[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n min-height: 0;\n}\n\n@media (max-width: 1180px) {\n .vs-resource-shell[_ngcontent-%COMP%]:has(> vs-studio-slide-in.vs-studio-slide-in--open) .vs-archetypes-workspace--split[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .vs-archetype-card[_ngcontent-%COMP%] {\n transition: none;\n }\n}"], changeDetection: 0 });
954
+ };
955
+ VideoStudioArchetypesResourceComponent = __decorate([
956
+ RegisterClass(BaseResourceComponent, 'VideoStudioArchetypesResource')
957
+ ], VideoStudioArchetypesResourceComponent);
958
+ export { VideoStudioArchetypesResourceComponent };
959
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(VideoStudioArchetypesResourceComponent, [{
960
+ type: Component,
961
+ args: [{ standalone: false, selector: 'mj-video-studio-archetypes-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"vs-resource-shell\">\n <mj-page-layout class=\"vs-resource-shell__page\">\n <mj-page-header\n Title=\"Archetypes\"\n Icon=\"fa-solid fa-layer-group\"\n Subtitle=\"Reusable beat templates, duration ranges, and pacing rules for video productions\"\n >\n <div meta>\n <mj-stat-badge\n [Count]=\"FilteredCount\"\n [Total]=\"TotalCount\"\n Label=\"Archetypes\"\n />\n </div>\n\n <div actions>\n <mj-refresh-button\n [Loading]=\"IsLoading\"\n (Clicked)=\"Refresh()\"\n />\n <button\n type=\"button\"\n mjButton\n Variant=\"primary\"\n data-testid=\"new-archetype-button\"\n (click)=\"OpenNewArchetypeEditor()\"\n >\n <i class=\"fa-solid fa-plus\" aria-hidden=\"true\"></i>\n <span>New archetype</span>\n </button>\n </div>\n\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search archetypes by name, category, format, or beat...\"\n [Value]=\"SearchText\"\n (ValueChange)=\"OnSearchChange($event)\"\n />\n <mj-filter-popover\n Label=\"Filters\"\n Icon=\"fa-solid fa-filter\"\n [ActiveCount]=\"ActivePopoverFilterCount\"\n [ShowClearAll]=\"ActivePopoverFilterCount > 0\"\n (ClearAllRequested)=\"ClearAllFilters()\"\n >\n <mj-filter-panel\n [Fields]=\"FilterFields\"\n [Values]=\"FilterValues\"\n [ShowReset]=\"false\"\n (ValuesChange)=\"OnFilterValuesChange($event)\"\n />\n </mj-filter-popover>\n </div>\n </mj-page-header>\n\n <mj-page-body>\n @if (IsLoading && AllArchetypes.length === 0) {\n <div class=\"vs-loading-state\" data-testid=\"archetypes-loading\">\n <mj-loading Text=\"Loading video archetypes...\" Size=\"medium\" />\n </div>\n } @else if (LoadError) {\n <mj-empty-state\n data-testid=\"archetypes-error\"\n Role=\"alert\"\n Variant=\"error\"\n Icon=\"fa-solid fa-triangle-exclamation\"\n Title=\"Unable to load archetypes\"\n [Message]=\"LoadError\"\n ActionText=\"Try again\"\n ActionIcon=\"fa-solid fa-rotate\"\n ActionVariant=\"secondary\"\n (Action)=\"Refresh()\"\n ></mj-empty-state>\n } @else if (AllArchetypes.length === 0) {\n <mj-empty-state\n data-testid=\"archetypes-empty\"\n Variant=\"empty\"\n Icon=\"fa-solid fa-layer-group\"\n Title=\"No video archetypes available\"\n Message=\"Archetypes define reusable narrative structures, beat templates, and pacing rules.\"\n ></mj-empty-state>\n } @else {\n <div\n class=\"vs-archetypes-workspace\"\n [class.vs-archetypes-workspace--split]=\"SelectedArchetype !== null\"\n >\n <div class=\"vs-archetypes-main\">\n <div class=\"vs-archetypes-filter-bar\" data-testid=\"archetypes-filter-chips\">\n <div class=\"vs-archetypes-chip-group\" role=\"group\" aria-label=\"Filter by category\">\n <mj-filter-chip\n data-testid=\"archetype-category-chip-all\"\n Label=\"All\"\n [Count]=\"CategoryAllCount\"\n [Active]=\"CategoryFilter === 'all'\"\n (Clicked)=\"SelectCategoryChip('all')\"\n ></mj-filter-chip>\n @for (chip of CategoryChipItems; track chip.Category) {\n <mj-filter-chip\n [attr.data-testid]=\"'archetype-category-chip-' + chip.Category\"\n [Label]=\"chip.Label\"\n [Count]=\"chip.Count\"\n [Active]=\"CategoryFilter === chip.Category\"\n (Clicked)=\"SelectCategoryChip(chip.Category)\"\n ></mj-filter-chip>\n }\n </div>\n\n <span class=\"vs-archetypes-chip-divider\" aria-hidden=\"true\"></span>\n\n <div class=\"vs-archetypes-chip-group\" role=\"group\" aria-label=\"Filter by scope\">\n <mj-filter-chip\n data-testid=\"archetype-scope-chip-shipped\"\n Label=\"Shipped\"\n [Count]=\"ShippedCount\"\n [Active]=\"ScopeFilter === 'shipped'\"\n (Clicked)=\"ToggleScopeChip('shipped')\"\n ></mj-filter-chip>\n <mj-filter-chip\n data-testid=\"archetype-scope-chip-company\"\n Label=\"Yours\"\n [Count]=\"CompanyCount\"\n [Active]=\"ScopeFilter === 'company'\"\n (Clicked)=\"ToggleScopeChip('company')\"\n ></mj-filter-chip>\n </div>\n </div>\n\n @if (FilteredArchetypes.length === 0) {\n <mj-empty-state\n data-testid=\"archetypes-empty\"\n Variant=\"no-results\"\n Icon=\"fa-solid fa-layer-group\"\n Title=\"No archetypes match your filters\"\n Message=\"Try clearing your search query or adjusting the active category or scope filters.\"\n ActionText=\"Reset filters\"\n ActionIcon=\"fa-solid fa-filter-circle-xmark\"\n ActionVariant=\"secondary\"\n (Action)=\"ResetFiltersAndSearch()\"\n ></mj-empty-state>\n } @else {\n <div class=\"vs-archetypes-grid\" data-testid=\"archetypes-grid\">\n @for (arch of FilteredArchetypes; track arch.ID) {\n <article\n class=\"vs-archetype-card\"\n [class.vs-archetype-card--selected]=\"SelectedArchetype?.ID === arch.ID\"\n [attr.data-testid]=\"'archetype-card-' + arch.ID\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-pressed]=\"SelectedArchetype?.ID === arch.ID\"\n (click)=\"SelectArchetype(arch)\"\n (keydown.enter)=\"SelectArchetype(arch)\"\n (keydown.space)=\"$event.preventDefault(); SelectArchetype(arch)\"\n >\n <div class=\"vs-archetype-card-header\">\n <h3 class=\"vs-archetype-title\" [title]=\"arch.Name\">\n {{ arch.Name }}\n </h3>\n\n @if (arch.CompanyName) {\n <span\n class=\"vs-archetype-company-meta\"\n data-testid=\"archetype-company-badge\"\n >\n {{ arch.CompanyName }}\n </span>\n } @else if (arch.IsShipped) {\n <mj-video-badge\n Variant=\"neutral\"\n data-testid=\"archetype-shipped-badge\"\n >\n <i class=\"fa-solid fa-lock\" aria-hidden=\"true\"></i>\n <span>Shipped</span>\n </mj-video-badge>\n }\n </div>\n\n @if (arch.Description) {\n <p class=\"vs-archetype-description\">{{ arch.Description }}</p>\n }\n\n <div class=\"vs-archetype-meta-line\">\n <span\n class=\"vs-archetype-category-meta\"\n data-testid=\"archetype-category-meta\"\n >\n {{ FormatCategoryLabel(arch.Category) }}\n </span>\n <span class=\"vs-archetype-meta-sep\" aria-hidden=\"true\">\u00B7</span>\n <span class=\"vs-archetype-duration-meta\" data-testid=\"archetype-duration-badge\">\n {{ FormatTime(arch.DefaultDurationSeconds) }}\n ({{ FormatTimeRange(arch.MinDurationSeconds, arch.MaxDurationSeconds) }})\n </span>\n <span class=\"vs-archetype-meta-sep\" aria-hidden=\"true\">\u00B7</span>\n <span class=\"vs-archetype-formats-meta\" data-testid=\"archetype-formats-badge\">\n @for (fmt of ParseFormats(arch.DefaultFormats); track fmt) {\n <mj-video-format-glyph [Format]=\"fmt\" Size=\"sm\"></mj-video-format-glyph>\n }\n </span>\n </div>\n\n <div class=\"vs-archetype-beat-strip-wrap\">\n <mj-video-beat-strip\n data-testid=\"archetype-beat-timeline\"\n [Beats]=\"arch.BeatItems || []\"\n ></mj-video-beat-strip>\n </div>\n </article>\n }\n </div>\n }\n </div>\n\n @if (SelectedArchetype; as selected) {\n <aside class=\"vs-archetype-slideout\" data-testid=\"archetype-slideout\">\n <header class=\"vs-slideout-header\">\n <div class=\"vs-slideout-title-wrap\">\n <span class=\"vs-slideout-category-tag\">\n {{ FormatCategoryLabel(selected.Category) }}\n </span>\n <h2 class=\"vs-slideout-title\">{{ selected.Name }}</h2>\n </div>\n\n <div class=\"vs-slideout-actions\">\n @if (selected.IsShipped) {\n <button\n type=\"button\"\n mjButton\n Variant=\"primary\"\n Size=\"sm\"\n data-testid=\"archetype-make-copy-button\"\n (click)=\"OpenCopyArchetypeEditor(selected, $event)\"\n >\n <i class=\"fa-regular fa-copy\" aria-hidden=\"true\"></i>\n <span>Make a copy</span>\n </button>\n } @else {\n <button\n type=\"button\"\n mjButton\n Variant=\"primary\"\n Size=\"sm\"\n data-testid=\"archetype-edit-button\"\n (click)=\"OpenEditArchetypeEditor(selected, $event)\"\n >\n <i class=\"fa-solid fa-pen-to-square\" aria-hidden=\"true\"></i>\n <span>Edit</span>\n </button>\n <button\n type=\"button\"\n mjButton\n Variant=\"flat\"\n Size=\"sm\"\n data-testid=\"archetype-open-record-button\"\n (click)=\"OpenArchetypeRecord(selected, $event)\"\n >\n <span>Open record</span>\n </button>\n }\n <button\n type=\"button\"\n mjButton\n Variant=\"icon\"\n Size=\"sm\"\n [AriaLabel]=\"'Close archetype preview'\"\n data-testid=\"archetype-slideout-close\"\n (click)=\"CloseSlideOut()\"\n >\n <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </header>\n\n <div class=\"vs-slideout-body\">\n @if (selected.IsShipped) {\n <div class=\"vs-shipped-readonly-banner\" data-testid=\"archetype-shipped-readonly-banner\">\n <i class=\"fa-solid fa-circle-info\" aria-hidden=\"true\"></i>\n <span>\n Shipped archetypes are read-only templates. Make a copy of this archetype to customize it for a specific company.\n </span>\n </div>\n }\n\n @if (selected.Description) {\n <p class=\"vs-slideout-description\">{{ selected.Description }}</p>\n }\n\n <div class=\"vs-slideout-summary-grid\">\n <div class=\"vs-summary-item\">\n <span class=\"vs-summary-label\">Default duration</span>\n <span class=\"vs-summary-value vs-summary-value--mono\">\n {{ FormatTime(selected.DefaultDurationSeconds) }}\n </span>\n </div>\n <div class=\"vs-summary-item\">\n <span class=\"vs-summary-label\">Duration range</span>\n <span class=\"vs-summary-value vs-summary-value--mono\">\n {{ FormatTimeRange(selected.MinDurationSeconds, selected.MaxDurationSeconds) }}\n </span>\n </div>\n <div class=\"vs-summary-item\">\n <span class=\"vs-summary-label\">Default formats</span>\n <span class=\"vs-summary-value vs-archetype-formats-meta\">\n @for (fmt of ParseFormats(selected.DefaultFormats); track fmt) {\n <mj-video-format-glyph [Format]=\"fmt\" Size=\"sm\"></mj-video-format-glyph>\n }\n </span>\n </div>\n <div class=\"vs-summary-item\">\n <span class=\"vs-summary-label\">Interaction mode</span>\n <span class=\"vs-summary-value\">{{ selected.DefaultInteractionMode }}</span>\n </div>\n </div>\n\n <section class=\"vs-slideout-section\">\n <h3 class=\"vs-slideout-section-title\">\n <i class=\"fa-solid fa-timeline\" aria-hidden=\"true\"></i>\n <span>Beat template ({{ selected.Beats.length }})</span>\n </h3>\n <mj-video-beat-strip\n [Beats]=\"selected.BeatItems || []\"\n ></mj-video-beat-strip>\n <div class=\"vs-slideout-beat-list\">\n @for (beat of selected.Beats; track beat.Key; let idx = $index) {\n <div class=\"vs-slideout-beat-item\" data-testid=\"slideout-beat-item\">\n <div class=\"vs-slideout-beat-header\">\n <span class=\"vs-slideout-beat-index\">{{ idx + 1 }}</span>\n <strong class=\"vs-slideout-beat-name\">{{ beat.Label }}</strong>\n <span class=\"vs-slideout-beat-duration\">\n {{ FormatTime(beat.ComputedDurationSeconds) }}\n ({{ FormatTimeRange(beat.MinDurationSeconds, beat.MaxDurationSeconds) }})\n </span>\n @if (beat.RequiresDataBinding) {\n <mj-video-badge Variant=\"info\">Data bound</mj-video-badge>\n }\n </div>\n <p class=\"vs-slideout-beat-purpose\">{{ beat.Purpose }}</p>\n @if (beat.Guidance) {\n <p class=\"vs-slideout-beat-guidance\">{{ beat.Guidance }}</p>\n }\n </div>\n }\n </div>\n </section>\n\n @if (selected.Pacing) {\n <section class=\"vs-slideout-section\" data-testid=\"slideout-pacing-section\">\n <h3 class=\"vs-slideout-section-title\">\n <i class=\"fa-solid fa-gauge-high\" aria-hidden=\"true\"></i>\n <span>Pacing rules</span>\n </h3>\n <div class=\"vs-pacing-box\">\n <div class=\"vs-pacing-stat\">\n <span>Average time between visual changes:</span>\n <strong>{{ FormatTime(selected.Pacing.AvgSecondsBetweenChanges) }}</strong>\n </div>\n @if (selected.Pacing.HoldRules) {\n <p class=\"vs-pacing-hold-rules\">{{ selected.Pacing.HoldRules }}</p>\n }\n </div>\n </section>\n }\n\n @if (selected.Guidance) {\n <section class=\"vs-slideout-section\" data-testid=\"slideout-guidance-section\">\n <h3 class=\"vs-slideout-section-title\">\n <i class=\"fa-solid fa-compass\" aria-hidden=\"true\"></i>\n <span>Producer guidance</span>\n </h3>\n <p class=\"vs-guidance-text\">{{ selected.Guidance }}</p>\n </section>\n }\n </div>\n </aside>\n }\n </div>\n }\n\n @if (IsEditorOpen) {\n <mj-dialog\n [Visible]=\"true\"\n [Title]=\"EditorDialogTitle\"\n Size=\"lg\"\n (Close)=\"CloseArchetypeEditor()\"\n >\n <vs-archetype-editor\n [Provider]=\"ProviderToUse\"\n [Mode]=\"EditorMode\"\n [SourceArchetypeId]=\"EditorSourceArchetypeId\"\n [EditingArchetypeId]=\"EditorEditingArchetypeId\"\n (Saved)=\"OnArchetypeEditorSaved($event)\"\n (Cancelled)=\"CloseArchetypeEditor()\"\n ></vs-archetype-editor>\n </mj-dialog>\n }\n </mj-page-body>\n </mj-page-layout>\n\n <vs-studio-slide-in\n [Provider]=\"ProviderToUse\"\n [CurrentUser]=\"CurrentUser\"\n [EnvironmentId]=\"EnvironmentId\"\n [ApplicationId]=\"ApplicationId\"\n [PageSource]=\"this\"\n [PageContext]=\"PageContext\"\n [PageTools]=\"PageTools\"\n [HeaderTitle]=\"'Video Studio'\"\n ></vs-studio-slide-in>\n</div>\n", styles: [":host {\n display: block;\n height: 100%;\n width: 100%;\n}\n\n.vs-loading-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 320px;\n padding: var(--mj-space-8);\n text-align: center;\n background: var(--mj-bg-surface-card);\n border: 1px dashed var(--mj-border-default);\n border-radius: var(--mj-radius-lg);\n}\n\n.vs-archetypes-workspace {\n display: grid;\n grid-template-columns: 1fr;\n min-height: 100%;\n}\n\n.vs-archetypes-workspace--split {\n grid-template-columns: minmax(340px, 1fr) minmax(380px, 480px);\n height: 100%;\n}\n\n.vs-archetypes-main {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4);\n min-width: 0;\n}\n\n.vs-archetypes-workspace--split .vs-archetypes-main {\n padding: var(--mj-space-5) var(--mj-space-6);\n overflow-y: auto;\n}\n\n.vs-archetypes-filter-bar {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--mj-space-2);\n}\n\n.vs-archetypes-chip-group {\n display: inline-flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--mj-space-1-5);\n}\n\n.vs-archetypes-chip-divider {\n width: 1px;\n height: var(--mj-space-5);\n background: var(--mj-border-default);\n margin: 0 var(--mj-space-1);\n}\n\n.vs-archetypes-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: var(--mj-space-4);\n}\n\n.vs-archetype-card {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-3);\n padding: var(--mj-space-4);\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg);\n cursor: pointer;\n transition: var(--mj-transition-fast);\n}\n\n.vs-archetype-card:hover {\n transform: translateY(-2px);\n border-color: var(--mj-border-strong);\n box-shadow: var(--mj-shadow-md);\n}\n\n.vs-archetype-card:focus-visible {\n outline: none;\n box-shadow: var(--mj-focus-ring);\n}\n\n.vs-archetype-card--selected {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 var(--mj-ring-width) color-mix(in srgb, var(--mj-brand-primary) 24%, transparent);\n}\n\n.vs-archetype-card-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--mj-space-2);\n}\n\n.vs-archetype-title {\n margin: 0;\n font-size: var(--mj-text-base);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.vs-archetype-company-meta {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n flex-shrink: 0;\n}\n\n.vs-archetype-description {\n margin: 0;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.vs-archetype-meta-line {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--mj-space-2);\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n}\n\n.vs-archetype-category-meta {\n font-weight: var(--mj-font-medium);\n color: var(--mj-text-primary);\n}\n\n.vs-archetype-duration-meta {\n font-variant-numeric: tabular-nums;\n color: var(--mj-text-secondary);\n}\n\n.vs-archetype-meta-sep {\n color: var(--mj-text-muted);\n}\n\n.vs-archetype-formats-meta {\n display: inline-flex;\n align-items: center;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n}\n\n.vs-archetype-beat-strip-wrap {\n margin-top: auto;\n padding-top: var(--mj-space-1);\n}\n\n.vs-archetype-slideout {\n border-left: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.vs-slideout-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--mj-space-3);\n padding: var(--mj-space-4) var(--mj-space-5);\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.vs-slideout-title-wrap {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-1);\n min-width: 0;\n}\n\n.vs-slideout-category-tag {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-brand-primary);\n}\n\n.vs-slideout-title {\n margin: 0;\n font-size: var(--mj-text-lg);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.vs-slideout-actions {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n flex-shrink: 0;\n}\n\n.vs-slideout-body {\n padding: var(--mj-space-5);\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-5);\n}\n\n.vs-slideout-description {\n margin: 0;\n font-size: var(--mj-text-sm);\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.vs-slideout-summary-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--mj-space-2-5);\n}\n\n.vs-summary-item {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-1);\n padding: var(--mj-space-2-5) var(--mj-space-3);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n}\n\n.vs-summary-label {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.vs-summary-value {\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.vs-summary-value--mono {\n font-variant-numeric: tabular-nums;\n}\n\n.vs-slideout-section {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2-5);\n}\n\n.vs-slideout-section-title {\n margin: 0;\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.vs-slideout-beat-list {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2-5);\n}\n\n.vs-slideout-beat-item {\n padding: var(--mj-space-3);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-1-5);\n}\n\n.vs-slideout-beat-header {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n}\n\n.vs-slideout-beat-index {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--mj-space-5);\n height: var(--mj-space-5);\n border-radius: var(--mj-radius-full);\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n}\n\n.vs-slideout-beat-name {\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.vs-slideout-beat-duration {\n margin-left: auto;\n font-variant-numeric: tabular-nums;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.vs-slideout-beat-purpose,\n.vs-slideout-beat-guidance {\n margin: 0;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n}\n\n.vs-pacing-box {\n padding: var(--mj-space-3);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-subtle);\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-1-5);\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n}\n\n.vs-pacing-stat {\n display: flex;\n align-items: center;\n justify-content: space-between;\n color: var(--mj-text-primary);\n}\n\n.vs-pacing-stat strong {\n font-variant-numeric: tabular-nums;\n}\n\n.vs-pacing-hold-rules,\n.vs-guidance-text {\n margin: 0;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n.vs-shipped-readonly-banner {\n display: flex;\n align-items: flex-start;\n gap: var(--mj-space-2);\n padding: var(--mj-space-2-5) var(--mj-space-3);\n border-radius: var(--mj-radius-md);\n background: var(--mj-status-info-bg);\n border: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-secondary);\n font-size: var(--mj-text-xs);\n line-height: 1.4;\n}\n\n.vs-resource-shell {\n position: relative;\n display: flex;\n align-items: stretch;\n width: 100%;\n height: 100%;\n min-height: 0;\n min-width: 0;\n overflow: hidden;\n}\n\n.vs-resource-shell__page {\n flex: 1;\n min-width: 0;\n min-height: 0;\n}\n\n@media (max-width: 1180px) {\n .vs-resource-shell:has(> vs-studio-slide-in.vs-studio-slide-in--open) .vs-archetypes-workspace--split {\n grid-template-columns: 1fr;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .vs-archetype-card {\n transition: none;\n }\n}\n"] }]
962
+ }], null, null); })();
963
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(VideoStudioArchetypesResourceComponent, { className: "VideoStudioArchetypesResourceComponent", filePath: "src/VideoStudio/resources/video-studio-archetypes-resource.component.ts", lineNumber: 95 }); })();
964
+ //# sourceMappingURL=video-studio-archetypes-resource.component.js.map