@memberjunction/ng-core-entity-forms 6.2.0-edge.3 → 6.2.0-edge.4
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.
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +5 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +12 -9
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts +16 -3
- package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts.map +1 -1
- package/dist/lib/custom/Conversations/conversation-overview.panel.js +103 -43
- package/dist/lib/custom/Conversations/conversation-overview.panel.js.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts +8 -0
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +18 -4
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/Files/file-form.component.d.ts +5 -5
- package/dist/lib/custom/Files/file-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Files/file-form.component.js +227 -157
- package/dist/lib/custom/Files/file-form.component.js.map +1 -1
- package/dist/lib/custom/Files/file-form.logic.d.ts +24 -0
- package/dist/lib/custom/Files/file-form.logic.d.ts.map +1 -0
- package/dist/lib/custom/Files/file-form.logic.js +57 -0
- package/dist/lib/custom/Files/file-form.logic.js.map +1 -0
- package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +3 -2
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +2 -2
- package/dist/lib/custom/Templates/templates-form.component.js +2 -2
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts +34 -0
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts.map +1 -0
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js +33 -0
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js.map +1 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts +3 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +261 -242
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +35 -34
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +6 -2
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +32 -14
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.js +111 -0
- package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +73 -75
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +112 -94
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.js +106 -0
- package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +734 -714
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.js +24 -6
- package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +283 -281
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +6 -0
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/package.json +48 -47
|
@@ -1008,7 +1008,7 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
1008
1008
|
i0.ɵɵconditionalCreate(0, MJTemplateFormComponentExtended_Conditional_0_Template, 49, 46);
|
|
1009
1009
|
} if (rf & 2) {
|
|
1010
1010
|
i0.ɵɵconditional(ctx.record ? 0 : -1);
|
|
1011
|
-
} }, dependencies: [i1.ɵNgNoValidate, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.NgModel, i1.NgForm, i2.MJAccordionPanelComponent, i2.MJAccordionTitleDirective, i2.MJComboboxComponent, i2.MJSwitchComponent, i3.MjFormFieldComponent, i3.MjRecordFormContainerComponent, i3.ExplorerEntityDataGridComponent, i4.TemplateParamDialogComponent, i5.TemplateParamsGridComponent, i6.TemplateEditorComponent], styles: [".k-pane[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n}\n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.k-splitter[_ngcontent-%COMP%] {\n border-width: 0px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n.form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n\n@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}", "\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n.record-form-container[_ngcontent-%COMP%] {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n background: var(--mj-bg-surface);\n}\n\n\n.record-form[_ngcontent-%COMP%] {\n min-height: 0 !important;\n}\n\n.template-header[_ngcontent-%COMP%] {\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n\n.template-header-area[_ngcontent-%COMP%] {\n flex-shrink: 0;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.template-header-area[_ngcontent-%COMP%] .template-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 1.4em;\n}\n\n.template-header-area[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n flex: 1;\n}\n\n.template-header-area[_ngcontent-%COMP%] .active-badge[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n padding: 4px 12px;\n border-radius: 16px;\n font-size: 0.8em;\n font-weight: 600;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n}\n\n.template-header-area[_ngcontent-%COMP%] .inactive-badge[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 15%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n border: 1px solid color-mix(in srgb, var(--mj-text-muted) 30%, transparent);\n padding: 4px 12px;\n border-radius: 16px;\n font-size: 0.8em;\n font-weight: 600;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n}\n\n.template-header-area[_ngcontent-%COMP%] .field-label[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 4px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n}\n\n.template-header-area[_ngcontent-%COMP%] .description-text[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n line-height: 1.4;\n}\n\n.template-header-area[_ngcontent-%COMP%] .meta-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.template-header-area[_ngcontent-%COMP%] .meta-label[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.template-header-area[_ngcontent-%COMP%] .meta-value[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 500;\n}\n\n\n.run-template-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 10px 20px;\n border-radius: 8px;\n font-size: 0.95em;\n font-weight: 600;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.run-template-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n\n.configuration-sections[_ngcontent-%COMP%] {\n flex: 1;\n background: var(--mj-bg-surface);\n border-top: 2px solid var(--mj-border-default);\n padding: 16px;\n min-height: 0;\n}\n\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.panel-title[_ngcontent-%COMP%] .count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n}\n\n.badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n\n .configuration-sections mj-accordion-panel {\n margin-bottom: 12px;\n}\n\n .configuration-sections .mj-accordion-panel {\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n background: var(--mj-bg-surface-card);\n}\n\n .configuration-sections .mj-accordion-header {\n padding: 16px 20px;\n font-weight: 600;\n font-size: 16px;\n}\n\n .configuration-sections .mj-accordion-panel--expanded .mj-accordion-header {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n .configuration-sections .mj-accordion-body {\n padding: 0;\n}\n\n\n.template-header[_ngcontent-%COMP%], \n.badge[_ngcontent-%COMP%] {\n transition: all 0.2s ease;\n}"] }); }
|
|
1011
|
+
} }, dependencies: [i1.ɵNgNoValidate, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.NgModel, i1.NgForm, i2.MJAccordionPanelComponent, i2.MJAccordionTitleDirective, i2.MJComboboxComponent, i2.MJSwitchComponent, i3.MjFormFieldComponent, i3.MjRecordFormContainerComponent, i3.ExplorerEntityDataGridComponent, i4.TemplateParamDialogComponent, i5.TemplateParamsGridComponent, i6.TemplateEditorComponent], styles: [".k-pane[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n}\n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.k-splitter[_ngcontent-%COMP%] {\n border-width: 0px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n.form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n\n@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}", "\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n.record-form-container[_ngcontent-%COMP%] {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n background: var(--mj-bg-surface);\n}\n\n\n.record-form[_ngcontent-%COMP%] {\n min-height: 0 !important;\n}\n\n.template-header[_ngcontent-%COMP%] {\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n\n.template-header-area[_ngcontent-%COMP%] {\n flex-shrink: 0;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.template-header-area[_ngcontent-%COMP%] .template-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 1.4em;\n}\n\n.template-header-area[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n flex: 1;\n}\n\n.template-header-area[_ngcontent-%COMP%] .active-badge[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n padding: 4px 12px;\n border-radius: 16px;\n font-size: 0.8em;\n font-weight: 600;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n}\n\n.template-header-area[_ngcontent-%COMP%] .inactive-badge[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 15%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n border: 1px solid color-mix(in srgb, var(--mj-text-muted) 30%, transparent);\n padding: 4px 12px;\n border-radius: 16px;\n font-size: 0.8em;\n font-weight: 600;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n}\n\n.template-header-area[_ngcontent-%COMP%] .field-label[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 4px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n}\n\n.template-header-area[_ngcontent-%COMP%] .description-text[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n line-height: 1.4;\n}\n\n.template-header-area[_ngcontent-%COMP%] .meta-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.template-header-area[_ngcontent-%COMP%] .meta-label[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.template-header-area[_ngcontent-%COMP%] .meta-value[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 500;\n}\n\n\n.run-template-btn[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 10px 20px;\n border-radius: 8px;\n font-size: 0.95em;\n font-weight: 600;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.run-template-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n\n.configuration-sections[_ngcontent-%COMP%] {\n flex: 1;\n background: var(--mj-bg-surface);\n border-top: 2px solid var(--mj-border-default);\n padding: 16px;\n min-height: 0;\n}\n\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.panel-title[_ngcontent-%COMP%] .count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n}\n\n.badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n\n .configuration-sections mj-accordion-panel {\n margin-bottom: 12px;\n}\n\n .configuration-sections .mj-accordion-panel {\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n background: var(--mj-bg-surface-card);\n}\n\n .configuration-sections .mj-accordion-header {\n padding: 16px 20px;\n font-weight: 600;\n font-size: 16px;\n}\n\n .configuration-sections .mj-accordion-panel--expanded .mj-accordion-header {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n outline-color: var(--mj-text-inverse);\n}\n\n .configuration-sections .mj-accordion-body {\n padding: 0;\n}\n\n\n.template-header[_ngcontent-%COMP%], \n.badge[_ngcontent-%COMP%] {\n transition: all 0.2s ease;\n}"] }); }
|
|
1012
1012
|
};
|
|
1013
1013
|
MJTemplateFormComponentExtended = __decorate([
|
|
1014
1014
|
RegisterClass(BaseFormComponent, 'MJ: Templates')
|
|
@@ -1016,7 +1016,7 @@ MJTemplateFormComponentExtended = __decorate([
|
|
|
1016
1016
|
export { MJTemplateFormComponentExtended };
|
|
1017
1017
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJTemplateFormComponentExtended, [{
|
|
1018
1018
|
type: Component,
|
|
1019
|
-
args: [{ standalone: false, selector: 'mj-templates-form', template: "@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n [ToolbarConfig]=\"toolbarConfig\"\n [WidthMode]=\"'full-width'\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n\n <!-- Main Content Area -->\n <div class=\"template-main-area\" style=\"display: flex; flex-direction: column; flex: 1; min-height: 0; overflow-y: auto;\">\n\n <!-- Header Section -->\n <div class=\"template-header-area\">\n <div style=\"display: flex; justify-content: space-between; align-items: flex-start; gap: 20px;\">\n\n <!-- Left: Template Info -->\n <div style=\"flex: 1; min-width: 0;\">\n <div style=\"display: flex; align-items: center; gap: 12px; margin-bottom: 8px;\">\n <i class=\"fa-solid fa-file-code template-icon\"></i>\n @if (EditMode) {\n <input type=\"text\" class=\"mj-input\"\n [(ngModel)]=\"record.Name\"\n name=\"templateName\"\n placeholder=\"Enter template name...\"\n style=\"font-size: 1.2em; font-weight: 600; min-width: 300px; flex: 1;\" />\n } @else {\n <h4>{{ record.Name || 'Unnamed Template' }}</h4>\n @if (record.IsActive) {\n <span class=\"active-badge\">\n <i class=\"fa-solid fa-check-circle\"></i> Active\n </span>\n } @else {\n <span class=\"inactive-badge\">\n <i class=\"fa-solid fa-pause-circle\"></i> Inactive\n </span>\n }\n }\n </div>\n\n <!-- Category and Active toggle when in edit mode -->\n @if (EditMode) {\n <div style=\"display: flex; gap: 16px; margin-bottom: 12px; flex-wrap: wrap; align-items: center;\">\n <div>\n <label class=\"field-label\">Category</label>\n <mj-combobox [(ngModel)]=\"record.CategoryID\"\n name=\"categoryId\"\n [Data]=\"categoryOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [AllowCustom]=\"true\"\n (ValueChange)=\"onCategoryChange($any($event))\"\n Placeholder=\"Select or enter new category...\"\n style=\"width: 250px;\">\n </mj-combobox>\n </div>\n <div>\n <label class=\"field-label\">Active</label>\n <mj-switch [(ngModel)]=\"record.IsActive\" name=\"isActive\"></mj-switch>\n </div>\n </div>\n }\n\n @if (EditMode) {\n <textarea class=\"mj-textarea\"\n [(ngModel)]=\"record.Description\"\n name=\"description\"\n [rows]=\"2\"\n placeholder=\"Enter template description...\"\n style=\"width: 100%; max-width: 600px; margin-bottom: 12px;\"></textarea>\n } @else if (record.Description) {\n <p class=\"description-text\">{{ record.Description }}</p>\n }\n\n <!-- Quick Info Row -->\n <div style=\"display: flex; align-items: center; gap: 16px; flex-wrap: wrap;\">\n @if (record.Category) {\n <div style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-folder meta-icon\"></i>\n <span class=\"meta-label\">Category:</span>\n <span class=\"meta-value\">{{ record.Category }}</span>\n </div>\n }\n\n <div style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-file-lines meta-icon\"></i>\n <span class=\"meta-label\">Contents:</span>\n <span class=\"meta-value\">{{ templateContents.length }}</span>\n </div>\n </div>\n </div>\n\n <!-- Right: Action Buttons -->\n <div style=\"display: flex; flex-direction: column; gap: 8px; align-items: flex-end;\">\n @if (record.IsSaved) {\n <button class=\"run-template-btn\"\n (click)=\"runTemplate()\"\n title=\"Run Template\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n }\n </div>\n </div>\n </div>\n\n <!-- Configuration Sections with Expansion Panels -->\n <div class=\"configuration-sections\">\n\n <!-- Template Editor Section -->\n <mj-accordion-panel\n [Expanded]=\"true\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-code\"></i>\n Template Editor\n @if (templateContents.length > 0) {\n <span class=\"count-badge\">{{ templateContents.length }}</span>\n }\n </span>\n </ng-template>\n\n <div style=\"padding: 8px; min-height: 400px;\">\n <mj-template-editor\n #templateEditor\n [template]=\"record\"\n [config]=\"templateEditorConfig\"\n (contentChange)=\"onSharedTemplateContentChange($event)\"\n (runTemplate)=\"onSharedTemplateRun($event)\"\n style=\"height: 100%; display: block;\">\n </mj-template-editor>\n </div>\n </mj-accordion-panel>\n\n <!-- Details Section -->\n <mj-accordion-panel\n [Expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-cogs\"></i>\n Details\n </span>\n </ng-template>\n\n <div style=\"padding: 16px;\">\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 20px;\">\n <!-- Left Column -->\n <div>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"UserPrompt\"\n Type=\"textarea\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"UserID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n LinkType=\"Record\"\n LinkComponentType=\"Search\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ActiveAt\"\n Type=\"datepicker\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"DisabledAt\"\n Type=\"datepicker\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n </div>\n\n <!-- Right Column -->\n <div>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"IsActive\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Category\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"User\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n </div>\n </div>\n </div>\n </mj-accordion-panel>\n\n <!-- Template Parameters Section -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [Expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-sliders\"></i>\n Parameters\n </span>\n </ng-template>\n\n <div style=\"padding: 16px 0;\">\n <mj-template-params-grid\n [template]=\"record\"\n [editMode]=\"EditMode\">\n </mj-template-params-grid>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- AI Prompts Section -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [Expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-robot\"></i>\n AI Prompts\n </span>\n </ng-template>\n\n <div style=\"padding: 16px 0;\">\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Prompts','TemplateID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Prompts')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Entity Documents Section -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [Expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-file-text\"></i>\n Entity Documents\n </span>\n </ng-template>\n\n <div style=\"padding: 16px 0;\">\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Entity Documents','TemplateID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Entity Documents')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n </div>\n </mj-accordion-panel>\n }\n </div>\n </div>\n </form>\n</mj-record-form-container>\n\n<!-- Template Parameter Dialog -->\n<mj-template-param-dialog\n [template]=\"record\"\n [(isVisible)]=\"showParamDialog\"\n (onClose)=\"onParamDialogClose()\">\n</mj-template-param-dialog>\n}\n", styles: [".k-pane {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin {\n margin: 10px;\n}\n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header .collapse-icon {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-header {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-title i {\n color: var(--mj-brand-primary);\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls .section-search::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: var(--mj-text-muted);\n}\n", "/* Override shared form-styles to enable flex layout */\n:host {\n display: block;\n height: 100%;\n}\n\n.record-form-container {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n background: var(--mj-bg-surface);\n}\n\n/* Override the shared record-form min-height so flex layout works properly */\n.record-form {\n min-height: 0 !important;\n}\n\n.template-header {\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n/* Header section */\n.template-header-area {\n flex-shrink: 0;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.template-header-area .template-icon {\n color: var(--mj-brand-primary);\n font-size: 1.4em;\n}\n\n.template-header-area h4 {\n margin: 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n flex: 1;\n}\n\n.template-header-area .active-badge {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n padding: 4px 12px;\n border-radius: 16px;\n font-size: 0.8em;\n font-weight: 600;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n}\n\n.template-header-area .inactive-badge {\n background: color-mix(in srgb, var(--mj-text-muted) 15%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n border: 1px solid color-mix(in srgb, var(--mj-text-muted) 30%, transparent);\n padding: 4px 12px;\n border-radius: 16px;\n font-size: 0.8em;\n font-weight: 600;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n}\n\n.template-header-area .field-label {\n display: block;\n margin-bottom: 4px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n}\n\n.template-header-area .description-text {\n margin: 0 0 12px 0;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n line-height: 1.4;\n}\n\n.template-header-area .meta-icon {\n color: var(--mj-text-muted);\n}\n\n.template-header-area .meta-label {\n color: var(--mj-text-muted);\n}\n\n.template-header-area .meta-value {\n color: var(--mj-text-secondary);\n font-weight: 500;\n}\n\n/* Run template button */\n.run-template-btn {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 10px 20px;\n border-radius: 8px;\n font-size: 0.95em;\n font-weight: 600;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.run-template-btn:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n/* Configuration sections */\n.configuration-sections {\n flex: 1;\n background: var(--mj-bg-surface);\n border-top: 2px solid var(--mj-border-default);\n padding: 16px;\n min-height: 0;\n}\n\n/* Expansion panel titles */\n.panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.panel-title i {\n color: var(--mj-text-muted);\n}\n\n.panel-title .count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n}\n\n.badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n/* Accordion Panel Styling */\n::ng-deep .configuration-sections mj-accordion-panel {\n margin-bottom: 12px;\n}\n\n::ng-deep .configuration-sections .mj-accordion-panel {\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n background: var(--mj-bg-surface-card);\n}\n\n::ng-deep .configuration-sections .mj-accordion-header {\n padding: 16px 20px;\n font-weight: 600;\n font-size: 16px;\n}\n\n::ng-deep .configuration-sections .mj-accordion-panel--expanded .mj-accordion-header {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n::ng-deep .configuration-sections .mj-accordion-body {\n padding: 0;\n}\n\n/* Smooth transitions */\n.template-header,\n.badge {\n transition: all 0.2s ease;\n}\n"] }]
|
|
1019
|
+
args: [{ standalone: false, selector: 'mj-templates-form', template: "@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n [ToolbarConfig]=\"toolbarConfig\"\n [WidthMode]=\"'full-width'\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n\n <!-- Main Content Area -->\n <div class=\"template-main-area\" style=\"display: flex; flex-direction: column; flex: 1; min-height: 0; overflow-y: auto;\">\n\n <!-- Header Section -->\n <div class=\"template-header-area\">\n <div style=\"display: flex; justify-content: space-between; align-items: flex-start; gap: 20px;\">\n\n <!-- Left: Template Info -->\n <div style=\"flex: 1; min-width: 0;\">\n <div style=\"display: flex; align-items: center; gap: 12px; margin-bottom: 8px;\">\n <i class=\"fa-solid fa-file-code template-icon\"></i>\n @if (EditMode) {\n <input type=\"text\" class=\"mj-input\"\n [(ngModel)]=\"record.Name\"\n name=\"templateName\"\n placeholder=\"Enter template name...\"\n style=\"font-size: 1.2em; font-weight: 600; min-width: 300px; flex: 1;\" />\n } @else {\n <h4>{{ record.Name || 'Unnamed Template' }}</h4>\n @if (record.IsActive) {\n <span class=\"active-badge\">\n <i class=\"fa-solid fa-check-circle\"></i> Active\n </span>\n } @else {\n <span class=\"inactive-badge\">\n <i class=\"fa-solid fa-pause-circle\"></i> Inactive\n </span>\n }\n }\n </div>\n\n <!-- Category and Active toggle when in edit mode -->\n @if (EditMode) {\n <div style=\"display: flex; gap: 16px; margin-bottom: 12px; flex-wrap: wrap; align-items: center;\">\n <div>\n <label class=\"field-label\">Category</label>\n <mj-combobox [(ngModel)]=\"record.CategoryID\"\n name=\"categoryId\"\n [Data]=\"categoryOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [AllowCustom]=\"true\"\n (ValueChange)=\"onCategoryChange($any($event))\"\n Placeholder=\"Select or enter new category...\"\n style=\"width: 250px;\">\n </mj-combobox>\n </div>\n <div>\n <label class=\"field-label\">Active</label>\n <mj-switch [(ngModel)]=\"record.IsActive\" name=\"isActive\"></mj-switch>\n </div>\n </div>\n }\n\n @if (EditMode) {\n <textarea class=\"mj-textarea\"\n [(ngModel)]=\"record.Description\"\n name=\"description\"\n [rows]=\"2\"\n placeholder=\"Enter template description...\"\n style=\"width: 100%; max-width: 600px; margin-bottom: 12px;\"></textarea>\n } @else if (record.Description) {\n <p class=\"description-text\">{{ record.Description }}</p>\n }\n\n <!-- Quick Info Row -->\n <div style=\"display: flex; align-items: center; gap: 16px; flex-wrap: wrap;\">\n @if (record.Category) {\n <div style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-folder meta-icon\"></i>\n <span class=\"meta-label\">Category:</span>\n <span class=\"meta-value\">{{ record.Category }}</span>\n </div>\n }\n\n <div style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-file-lines meta-icon\"></i>\n <span class=\"meta-label\">Contents:</span>\n <span class=\"meta-value\">{{ templateContents.length }}</span>\n </div>\n </div>\n </div>\n\n <!-- Right: Action Buttons -->\n <div style=\"display: flex; flex-direction: column; gap: 8px; align-items: flex-end;\">\n @if (record.IsSaved) {\n <button class=\"run-template-btn\"\n (click)=\"runTemplate()\"\n title=\"Run Template\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n }\n </div>\n </div>\n </div>\n\n <!-- Configuration Sections with Expansion Panels -->\n <div class=\"configuration-sections\">\n\n <!-- Template Editor Section -->\n <mj-accordion-panel\n [Expanded]=\"true\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-code\"></i>\n Template Editor\n @if (templateContents.length > 0) {\n <span class=\"count-badge\">{{ templateContents.length }}</span>\n }\n </span>\n </ng-template>\n\n <div style=\"padding: 8px; min-height: 400px;\">\n <mj-template-editor\n #templateEditor\n [template]=\"record\"\n [config]=\"templateEditorConfig\"\n (contentChange)=\"onSharedTemplateContentChange($event)\"\n (runTemplate)=\"onSharedTemplateRun($event)\"\n style=\"height: 100%; display: block;\">\n </mj-template-editor>\n </div>\n </mj-accordion-panel>\n\n <!-- Details Section -->\n <mj-accordion-panel\n [Expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-cogs\"></i>\n Details\n </span>\n </ng-template>\n\n <div style=\"padding: 16px;\">\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 20px;\">\n <!-- Left Column -->\n <div>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"UserPrompt\"\n Type=\"textarea\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"UserID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n LinkType=\"Record\"\n LinkComponentType=\"Search\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ActiveAt\"\n Type=\"datepicker\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"DisabledAt\"\n Type=\"datepicker\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n </div>\n\n <!-- Right Column -->\n <div>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"IsActive\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Category\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"User\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n </div>\n </div>\n </div>\n </mj-accordion-panel>\n\n <!-- Template Parameters Section -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [Expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-sliders\"></i>\n Parameters\n </span>\n </ng-template>\n\n <div style=\"padding: 16px 0;\">\n <mj-template-params-grid\n [template]=\"record\"\n [editMode]=\"EditMode\">\n </mj-template-params-grid>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- AI Prompts Section -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [Expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-robot\"></i>\n AI Prompts\n </span>\n </ng-template>\n\n <div style=\"padding: 16px 0;\">\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Prompts','TemplateID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Prompts')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Entity Documents Section -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [Expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-file-text\"></i>\n Entity Documents\n </span>\n </ng-template>\n\n <div style=\"padding: 16px 0;\">\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Entity Documents','TemplateID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Entity Documents')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n </div>\n </mj-accordion-panel>\n }\n </div>\n </div>\n </form>\n</mj-record-form-container>\n\n<!-- Template Parameter Dialog -->\n<mj-template-param-dialog\n [template]=\"record\"\n [(isVisible)]=\"showParamDialog\"\n (onClose)=\"onParamDialogClose()\">\n</mj-template-param-dialog>\n}\n", styles: [".k-pane {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin {\n margin: 10px;\n}\n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header .collapse-icon {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-header {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-title i {\n color: var(--mj-brand-primary);\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls .section-search::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: var(--mj-text-muted);\n}\n", "/* Override shared form-styles to enable flex layout */\n:host {\n display: block;\n height: 100%;\n}\n\n.record-form-container {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n background: var(--mj-bg-surface);\n}\n\n/* Override the shared record-form min-height so flex layout works properly */\n.record-form {\n min-height: 0 !important;\n}\n\n.template-header {\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n/* Header section */\n.template-header-area {\n flex-shrink: 0;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.template-header-area .template-icon {\n color: var(--mj-brand-primary);\n font-size: 1.4em;\n}\n\n.template-header-area h4 {\n margin: 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n flex: 1;\n}\n\n.template-header-area .active-badge {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n padding: 4px 12px;\n border-radius: 16px;\n font-size: 0.8em;\n font-weight: 600;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n}\n\n.template-header-area .inactive-badge {\n background: color-mix(in srgb, var(--mj-text-muted) 15%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n border: 1px solid color-mix(in srgb, var(--mj-text-muted) 30%, transparent);\n padding: 4px 12px;\n border-radius: 16px;\n font-size: 0.8em;\n font-weight: 600;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n}\n\n.template-header-area .field-label {\n display: block;\n margin-bottom: 4px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n}\n\n.template-header-area .description-text {\n margin: 0 0 12px 0;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n line-height: 1.4;\n}\n\n.template-header-area .meta-icon {\n color: var(--mj-text-muted);\n}\n\n.template-header-area .meta-label {\n color: var(--mj-text-muted);\n}\n\n.template-header-area .meta-value {\n color: var(--mj-text-secondary);\n font-weight: 500;\n}\n\n/* Run template button */\n.run-template-btn {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 10px 20px;\n border-radius: 8px;\n font-size: 0.95em;\n font-weight: 600;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.run-template-btn:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n/* Configuration sections */\n.configuration-sections {\n flex: 1;\n background: var(--mj-bg-surface);\n border-top: 2px solid var(--mj-border-default);\n padding: 16px;\n min-height: 0;\n}\n\n/* Expansion panel titles */\n.panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.panel-title i {\n color: var(--mj-text-muted);\n}\n\n.panel-title .count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n}\n\n.badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n/* Accordion Panel Styling */\n::ng-deep .configuration-sections mj-accordion-panel {\n margin-bottom: 12px;\n}\n\n::ng-deep .configuration-sections .mj-accordion-panel {\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n background: var(--mj-bg-surface-card);\n}\n\n::ng-deep .configuration-sections .mj-accordion-header {\n padding: 16px 20px;\n font-weight: 600;\n font-size: 16px;\n}\n\n::ng-deep .configuration-sections .mj-accordion-panel--expanded .mj-accordion-header {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n outline-color: var(--mj-text-inverse);\n}\n\n::ng-deep .configuration-sections .mj-accordion-body {\n padding: 0;\n}\n\n/* Smooth transitions */\n.template-header,\n.badge {\n transition: all 0.2s ease;\n}\n"] }]
|
|
1020
1020
|
}], null, { CodeEditor: [{
|
|
1021
1021
|
type: ViewChild,
|
|
1022
1022
|
args: ['codeEditor']
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** A model + vendor's token rates, in currency per token. */
|
|
2
|
+
export interface PromptRunTokenRates {
|
|
3
|
+
InputRate: number;
|
|
4
|
+
OutputRate: number;
|
|
5
|
+
CacheReadRate: number;
|
|
6
|
+
CacheWriteRate: number;
|
|
7
|
+
}
|
|
8
|
+
/** The prompt run fields the split reads. Deliberately not the full entity. */
|
|
9
|
+
export type PromptRunCostSplitFields = {
|
|
10
|
+
TokensPrompt?: number | null;
|
|
11
|
+
TokensCompletion?: number | null;
|
|
12
|
+
TokensCacheRead?: number | null;
|
|
13
|
+
TokensCacheWrite?: number | null;
|
|
14
|
+
ModelSpecificResponseDetails?: string | null;
|
|
15
|
+
};
|
|
16
|
+
/** One run's share of the cost card. */
|
|
17
|
+
export interface PromptRunCostSplit {
|
|
18
|
+
/** Uncached input, cache reads and cache writes, each at its own rate. */
|
|
19
|
+
InputCost: number;
|
|
20
|
+
/** The output tokens the cost row priced, at the output rate. */
|
|
21
|
+
OutputCost: number;
|
|
22
|
+
/** What caching saved against pricing every input token at the full input rate. */
|
|
23
|
+
Savings: number;
|
|
24
|
+
/** The avatar video line's cost, from the run's cost lines; 0 for a run without one. */
|
|
25
|
+
AvatarVideoCost: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Splits one prompt run's cost into input, output and avatar video.
|
|
29
|
+
*
|
|
30
|
+
* @param run The prompt run's token columns and details.
|
|
31
|
+
* @param rate Its model + vendor's token rates.
|
|
32
|
+
*/
|
|
33
|
+
export declare function SplitPromptRunCost(run: PromptRunCostSplitFields, rate: PromptRunTokenRates): PromptRunCostSplit;
|
|
34
|
+
//# sourceMappingURL=agent-run-cost-split.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-run-cost-split.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/agent-run-cost-split.ts"],"names":[],"mappings":"AAWA,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,+EAA+E;AAC/E,MAAM,MAAM,wBAAwB,GAAG;IACnC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,4BAA4B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChD,CAAC;AAEF,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IAC/B,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,mBAAmB,GAAG,kBAAkB,CAe/G"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The input / output / avatar video split of one prompt run's cost, for the agent-run analytics cost card.
|
|
3
|
+
*
|
|
4
|
+
* The card prices input and output from the run's cost row, per token. A realtime run with a generated avatar is
|
|
5
|
+
* priced in two lines (written into its details as `CostLines` when it was priced): the cost row over its tokens, less
|
|
6
|
+
* the output tokens the provider counted as video, plus the avatar video at its per-minute price. Pricing every output
|
|
7
|
+
* token at the output rate would charge that video at the text rate and disagree with the run's `Cost`; so the split
|
|
8
|
+
* prices only the output tokens the cost row's line priced, and reads the video line's cost as it is.
|
|
9
|
+
*/
|
|
10
|
+
import { AVATAR_VIDEO_COST_LINE_MODALITY, ReadCostLines } from '@memberjunction/ai-engine-base';
|
|
11
|
+
/**
|
|
12
|
+
* Splits one prompt run's cost into input, output and avatar video.
|
|
13
|
+
*
|
|
14
|
+
* @param run The prompt run's token columns and details.
|
|
15
|
+
* @param rate Its model + vendor's token rates.
|
|
16
|
+
*/
|
|
17
|
+
export function SplitPromptRunCost(run, rate) {
|
|
18
|
+
const lines = ReadCostLines(run.ModelSpecificResponseDetails);
|
|
19
|
+
const defaultLine = lines.find((line) => line.Modality === null);
|
|
20
|
+
const videoLines = lines.filter((line) => line.Modality === AVATAR_VIDEO_COST_LINE_MODALITY);
|
|
21
|
+
const inputTokens = run.TokensPrompt ?? 0;
|
|
22
|
+
const cacheReadTokens = run.TokensCacheRead ?? 0;
|
|
23
|
+
const cacheWriteTokens = run.TokensCacheWrite ?? 0;
|
|
24
|
+
// Without a video line every output token was priced at the output rate, as it always was.
|
|
25
|
+
const outputTokens = videoLines.length > 0 && defaultLine ? defaultLine.Output : (run.TokensCompletion ?? 0);
|
|
26
|
+
return {
|
|
27
|
+
InputCost: inputTokens * rate.InputRate + cacheReadTokens * rate.CacheReadRate + cacheWriteTokens * rate.CacheWriteRate,
|
|
28
|
+
OutputCost: outputTokens * rate.OutputRate,
|
|
29
|
+
Savings: cacheReadTokens * (rate.InputRate - rate.CacheReadRate) + cacheWriteTokens * (rate.InputRate - rate.CacheWriteRate),
|
|
30
|
+
AvatarVideoCost: videoLines.reduce((total, line) => total + line.Cost, 0),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=agent-run-cost-split.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-run-cost-split.js","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/agent-run-cost-split.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,+BAA+B,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AA+BhG;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAA6B,EAAE,IAAyB;IACvF,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,+BAA+B,CAAC,CAAC;IAC7F,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC;IAC1C,MAAM,eAAe,GAAG,GAAG,CAAC,eAAe,IAAI,CAAC,CAAC;IACjD,MAAM,gBAAgB,GAAG,GAAG,CAAC,gBAAgB,IAAI,CAAC,CAAC;IACnD,2FAA2F;IAC3F,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC;IAC7G,OAAO;QACH,SAAS,EAAE,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,eAAe,GAAG,IAAI,CAAC,aAAa,GAAG,gBAAgB,GAAG,IAAI,CAAC,cAAc;QACvH,UAAU,EAAE,YAAY,GAAG,IAAI,CAAC,UAAU;QAC1C,OAAO,EAAE,eAAe,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,gBAAgB,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;QAC5H,eAAe,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KAC5E,CAAC;AACN,CAAC","sourcesContent":["/**\n * The input / output / avatar video split of one prompt run's cost, for the agent-run analytics cost card.\n *\n * The card prices input and output from the run's cost row, per token. A realtime run with a generated avatar is\n * priced in two lines (written into its details as `CostLines` when it was priced): the cost row over its tokens, less\n * the output tokens the provider counted as video, plus the avatar video at its per-minute price. Pricing every output\n * token at the output rate would charge that video at the text rate and disagree with the run's `Cost`; so the split\n * prices only the output tokens the cost row's line priced, and reads the video line's cost as it is.\n */\nimport { AVATAR_VIDEO_COST_LINE_MODALITY, ReadCostLines } from '@memberjunction/ai-engine-base';\n\n/** A model + vendor's token rates, in currency per token. */\nexport interface PromptRunTokenRates {\n InputRate: number;\n OutputRate: number;\n CacheReadRate: number;\n CacheWriteRate: number;\n}\n\n/** The prompt run fields the split reads. Deliberately not the full entity. */\nexport type PromptRunCostSplitFields = {\n TokensPrompt?: number | null;\n TokensCompletion?: number | null;\n TokensCacheRead?: number | null;\n TokensCacheWrite?: number | null;\n ModelSpecificResponseDetails?: string | null;\n};\n\n/** One run's share of the cost card. */\nexport interface PromptRunCostSplit {\n /** Uncached input, cache reads and cache writes, each at its own rate. */\n InputCost: number;\n /** The output tokens the cost row priced, at the output rate. */\n OutputCost: number;\n /** What caching saved against pricing every input token at the full input rate. */\n Savings: number;\n /** The avatar video line's cost, from the run's cost lines; 0 for a run without one. */\n AvatarVideoCost: number;\n}\n\n/**\n * Splits one prompt run's cost into input, output and avatar video.\n *\n * @param run The prompt run's token columns and details.\n * @param rate Its model + vendor's token rates.\n */\nexport function SplitPromptRunCost(run: PromptRunCostSplitFields, rate: PromptRunTokenRates): PromptRunCostSplit {\n const lines = ReadCostLines(run.ModelSpecificResponseDetails);\n const defaultLine = lines.find((line) => line.Modality === null);\n const videoLines = lines.filter((line) => line.Modality === AVATAR_VIDEO_COST_LINE_MODALITY);\n const inputTokens = run.TokensPrompt ?? 0;\n const cacheReadTokens = run.TokensCacheRead ?? 0;\n const cacheWriteTokens = run.TokensCacheWrite ?? 0;\n // Without a video line every output token was priced at the output rate, as it always was.\n const outputTokens = videoLines.length > 0 && defaultLine ? defaultLine.Output : (run.TokensCompletion ?? 0);\n return {\n InputCost: inputTokens * rate.InputRate + cacheReadTokens * rate.CacheReadRate + cacheWriteTokens * rate.CacheWriteRate,\n OutputCost: outputTokens * rate.OutputRate,\n Savings: cacheReadTokens * (rate.InputRate - rate.CacheReadRate) + cacheWriteTokens * (rate.InputRate - rate.CacheWriteRate),\n AvatarVideoCost: videoLines.reduce((total, line) => total + line.Cost, 0),\n };\n}\n"]}
|
|
@@ -35,6 +35,7 @@ interface PromptMetrics {
|
|
|
35
35
|
inputCost: number;
|
|
36
36
|
outputCost: number;
|
|
37
37
|
savings: number;
|
|
38
|
+
avatarVideoCost: number;
|
|
38
39
|
unratedCost: number;
|
|
39
40
|
};
|
|
40
41
|
tokenUsage: {
|
|
@@ -344,6 +345,8 @@ export declare class AIAgentRunAnalyticsComponent extends BaseAngularComponent i
|
|
|
344
345
|
get inputCost(): number;
|
|
345
346
|
/** Rate-derived output dollars. */
|
|
346
347
|
get OutputCost(): number;
|
|
348
|
+
/** Avatar video dollars, from the runs' cost lines (priced per minute, apart from the output tokens). */
|
|
349
|
+
get AvatarVideoCost(): number;
|
|
347
350
|
/** @deprecated Use {@link OutputCost}. */
|
|
348
351
|
get outputCost(): number;
|
|
349
352
|
/** Net dollars saved by caching vs. pricing all input at the full input rate. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-agent-run-analytics.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run-analytics.component.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ai-agent-run-analytics.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/ai-agent-run/ai-agent-run-analytics.component.ts"],"names":[],"mappings":"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"}
|