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

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 (205) hide show
  1. package/README.md +28 -0
  2. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +1 -1
  3. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  4. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +15 -7
  5. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  6. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +7 -1
  7. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  8. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +209 -57
  9. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  10. package/dist/AI/components/duplicates/duplicate-detection-run-scope.d.ts +12 -11
  11. package/dist/AI/components/duplicates/duplicate-detection-run-scope.d.ts.map +1 -1
  12. package/dist/AI/components/duplicates/duplicate-detection-run-scope.js +15 -15
  13. package/dist/AI/components/duplicates/duplicate-detection-run-scope.js.map +1 -1
  14. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  15. package/dist/AI/components/execution-monitoring.component.js +28 -16
  16. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  17. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts +1 -0
  18. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
  19. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +30 -6
  20. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  21. package/dist/AI/components/tags/tags-resource.component.d.ts +1 -1
  22. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  23. package/dist/AI/components/tags/tags-resource.component.js +15 -7
  24. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  25. package/dist/AI/components/vectors/sensitive-fields.d.ts +58 -0
  26. package/dist/AI/components/vectors/sensitive-fields.d.ts.map +1 -0
  27. package/dist/AI/components/vectors/sensitive-fields.js +251 -0
  28. package/dist/AI/components/vectors/sensitive-fields.js.map +1 -0
  29. package/dist/AI/components/vectors/vector-document-rules.d.ts +139 -0
  30. package/dist/AI/components/vectors/vector-document-rules.d.ts.map +1 -0
  31. package/dist/AI/components/vectors/vector-document-rules.js +182 -0
  32. package/dist/AI/components/vectors/vector-document-rules.js.map +1 -0
  33. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +83 -14
  34. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  35. package/dist/AI/components/vectors/vector-management-resource.component.js +546 -271
  36. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  37. package/dist/AI/components/vectors/vector-store-selection.d.ts +32 -0
  38. package/dist/AI/components/vectors/vector-store-selection.d.ts.map +1 -0
  39. package/dist/AI/components/vectors/vector-store-selection.js +57 -0
  40. package/dist/AI/components/vectors/vector-store-selection.js.map +1 -0
  41. package/dist/ChiefOfStaff/chief-of-staff-agent-context.d.ts +236 -0
  42. package/dist/ChiefOfStaff/chief-of-staff-agent-context.d.ts.map +1 -0
  43. package/dist/ChiefOfStaff/chief-of-staff-agent-context.js +374 -0
  44. package/dist/ChiefOfStaff/chief-of-staff-agent-context.js.map +1 -0
  45. package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.d.ts +195 -0
  46. package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.d.ts.map +1 -0
  47. package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.js +2910 -0
  48. package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.js.map +1 -0
  49. package/dist/ChiefOfStaff/index.d.ts +3 -0
  50. package/dist/ChiefOfStaff/index.d.ts.map +1 -0
  51. package/dist/ChiefOfStaff/index.js +3 -0
  52. package/dist/ChiefOfStaff/index.js.map +1 -0
  53. package/dist/Communication/communication-agent-context.d.ts +11 -1
  54. package/dist/Communication/communication-agent-context.d.ts.map +1 -1
  55. package/dist/Communication/communication-agent-context.js +15 -0
  56. package/dist/Communication/communication-agent-context.js.map +1 -1
  57. package/dist/Communication/communication-dashboard.component.d.ts.map +1 -1
  58. package/dist/Communication/communication-dashboard.component.js +5 -0
  59. package/dist/Communication/communication-dashboard.component.js.map +1 -1
  60. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  61. package/dist/Communication/communication-logs-resource.component.js +2 -1
  62. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  63. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  64. package/dist/Communication/communication-monitor-resource.component.js +23 -18
  65. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  66. package/dist/Communication/communication-providers-resource.component.d.ts +27 -1
  67. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  68. package/dist/Communication/communication-providers-resource.component.js +722 -78
  69. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  70. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  71. package/dist/Communication/communication-runs-resource.component.js +11 -10
  72. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  73. package/dist/DashboardEditor/dashboard-editor.component.d.ts +17 -2
  74. package/dist/DashboardEditor/dashboard-editor.component.d.ts.map +1 -1
  75. package/dist/DashboardEditor/dashboard-editor.component.js +94 -43
  76. package/dist/DashboardEditor/dashboard-editor.component.js.map +1 -1
  77. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +49 -0
  78. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  79. package/dist/DataExplorer/data-explorer-dashboard.component.js +220 -55
  80. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  81. package/dist/DataExplorer/models/explorer-state.interface.d.ts +2 -0
  82. package/dist/DataExplorer/models/explorer-state.interface.d.ts.map +1 -1
  83. package/dist/DataExplorer/models/explorer-state.interface.js.map +1 -1
  84. package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
  85. package/dist/DevTools/app-state-inspector.component.js +1 -0
  86. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  87. package/dist/DevTools/class-registry.component.d.ts.map +1 -1
  88. package/dist/DevTools/class-registry.component.js +1 -0
  89. package/dist/DevTools/class-registry.component.js.map +1 -1
  90. package/dist/DevTools/event-monitor.component.d.ts.map +1 -1
  91. package/dist/DevTools/event-monitor.component.js +2 -0
  92. package/dist/DevTools/event-monitor.component.js.map +1 -1
  93. package/dist/DevTools/graphql-console.component.d.ts.map +1 -1
  94. package/dist/DevTools/graphql-console.component.js.map +1 -1
  95. package/dist/DevTools/grid-width-lab.component.d.ts.map +1 -1
  96. package/dist/DevTools/grid-width-lab.component.js +1 -0
  97. package/dist/DevTools/grid-width-lab.component.js.map +1 -1
  98. package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
  99. package/dist/DevTools/layout-inspector.component.js +1 -0
  100. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  101. package/dist/DevTools/lazy-module-status.component.d.ts.map +1 -1
  102. package/dist/DevTools/lazy-module-status.component.js +1 -0
  103. package/dist/DevTools/lazy-module-status.component.js.map +1 -1
  104. package/dist/DevTools/settings-explorer.component.d.ts.map +1 -1
  105. package/dist/DevTools/settings-explorer.component.js +1 -0
  106. package/dist/DevTools/settings-explorer.component.js.map +1 -1
  107. package/dist/DevTools/tab-strip-lab.component.d.ts.map +1 -1
  108. package/dist/DevTools/tab-strip-lab.component.js +1 -0
  109. package/dist/DevTools/tab-strip-lab.component.js.map +1 -1
  110. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +5 -0
  111. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  112. package/dist/EntityAdmin/entity-admin-dashboard.component.js +8 -5
  113. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  114. package/dist/Integration/components/overview/overview.component.js +2 -2
  115. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +2 -2
  116. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  117. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipeline.engine.d.ts +11 -1
  118. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipeline.engine.d.ts.map +1 -1
  119. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipeline.engine.js +24 -2
  120. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipeline.engine.js.map +1 -1
  121. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipelines-resource.component.d.ts +16 -2
  122. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipelines-resource.component.d.ts.map +1 -1
  123. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipelines-resource.component.js +87 -33
  124. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipelines-resource.component.js.map +1 -1
  125. package/dist/LoginStudio/login-studio-inspector.component.d.ts +130 -0
  126. package/dist/LoginStudio/login-studio-inspector.component.d.ts.map +1 -0
  127. package/dist/LoginStudio/login-studio-inspector.component.js +781 -0
  128. package/dist/LoginStudio/login-studio-inspector.component.js.map +1 -0
  129. package/dist/LoginStudio/login-studio-resource.component.d.ts +161 -0
  130. package/dist/LoginStudio/login-studio-resource.component.d.ts.map +1 -0
  131. package/dist/LoginStudio/login-studio-resource.component.js +890 -0
  132. package/dist/LoginStudio/login-studio-resource.component.js.map +1 -0
  133. package/dist/MCP/mcp-dashboard.component.d.ts +24 -4
  134. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  135. package/dist/MCP/mcp-dashboard.component.js +118 -65
  136. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  137. package/dist/PredictiveStudio/business-predictions.view-models.d.ts +1 -1
  138. package/dist/PredictiveStudio/business-predictions.view-models.d.ts.map +1 -1
  139. package/dist/PredictiveStudio/business-predictions.view-models.js +3 -3
  140. package/dist/PredictiveStudio/business-predictions.view-models.js.map +1 -1
  141. package/dist/PredictiveStudio/components/ps-experiments.component.d.ts +6 -63
  142. package/dist/PredictiveStudio/components/ps-experiments.component.d.ts.map +1 -1
  143. package/dist/PredictiveStudio/components/ps-experiments.component.js +256 -521
  144. package/dist/PredictiveStudio/components/ps-experiments.component.js.map +1 -1
  145. package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.d.ts +0 -18
  146. package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.d.ts.map +1 -1
  147. package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.js +122 -249
  148. package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.js.map +1 -1
  149. package/dist/PredictiveStudio/components/ps-pipelines.component.d.ts +5 -9
  150. package/dist/PredictiveStudio/components/ps-pipelines.component.d.ts.map +1 -1
  151. package/dist/PredictiveStudio/components/ps-pipelines.component.js +98 -130
  152. package/dist/PredictiveStudio/components/ps-pipelines.component.js.map +1 -1
  153. package/dist/PredictiveStudio/components/ps-predictions-grid.component.d.ts +53 -4
  154. package/dist/PredictiveStudio/components/ps-predictions-grid.component.d.ts.map +1 -1
  155. package/dist/PredictiveStudio/components/ps-predictions-grid.component.js +335 -326
  156. package/dist/PredictiveStudio/components/ps-predictions-grid.component.js.map +1 -1
  157. package/dist/PredictiveStudio/components/ps-row-drivers.component.d.ts +19 -0
  158. package/dist/PredictiveStudio/components/ps-row-drivers.component.d.ts.map +1 -0
  159. package/dist/PredictiveStudio/components/ps-row-drivers.component.js +85 -0
  160. package/dist/PredictiveStudio/components/ps-row-drivers.component.js.map +1 -0
  161. package/dist/PredictiveStudio/engine/predictive-studio.engine.d.ts +19 -1
  162. package/dist/PredictiveStudio/engine/predictive-studio.engine.d.ts.map +1 -1
  163. package/dist/PredictiveStudio/engine/predictive-studio.engine.js +51 -2
  164. package/dist/PredictiveStudio/engine/predictive-studio.engine.js.map +1 -1
  165. package/dist/PredictiveStudio/predictive-studio-agent-context.d.ts +3 -1
  166. package/dist/PredictiveStudio/predictive-studio-agent-context.d.ts.map +1 -1
  167. package/dist/PredictiveStudio/predictive-studio-agent-context.js +3 -0
  168. package/dist/PredictiveStudio/predictive-studio-agent-context.js.map +1 -1
  169. package/dist/PredictiveStudio/predictive-studio-score-history.service.d.ts +27 -4
  170. package/dist/PredictiveStudio/predictive-studio-score-history.service.d.ts.map +1 -1
  171. package/dist/PredictiveStudio/predictive-studio-score-history.service.js +94 -61
  172. package/dist/PredictiveStudio/predictive-studio-score-history.service.js.map +1 -1
  173. package/dist/PredictiveStudio/resources/ps-predictions-resource.component.d.ts +29 -5
  174. package/dist/PredictiveStudio/resources/ps-predictions-resource.component.d.ts.map +1 -1
  175. package/dist/PredictiveStudio/resources/ps-predictions-resource.component.js +185 -103
  176. package/dist/PredictiveStudio/resources/ps-predictions-resource.component.js.map +1 -1
  177. package/dist/PredictiveStudio/resources/ps-studio-resource.component.js +1 -1
  178. package/dist/PredictiveStudio/resources/ps-studio-resource.component.js.map +1 -1
  179. package/dist/Workflows/components/workflow-runs-resource.component.js +4 -4
  180. package/dist/Workflows/components/workflow-runs-resource.component.js.map +1 -1
  181. package/dist/ai-dashboards.module.d.ts +22 -21
  182. package/dist/ai-dashboards.module.d.ts.map +1 -1
  183. package/dist/ai-dashboards.module.js +8 -2
  184. package/dist/ai-dashboards.module.js.map +1 -1
  185. package/dist/core-dashboards.module.d.ts +2 -1
  186. package/dist/core-dashboards.module.d.ts.map +1 -1
  187. package/dist/core-dashboards.module.js +11 -3
  188. package/dist/core-dashboards.module.js.map +1 -1
  189. package/dist/public-api.d.ts +3 -0
  190. package/dist/public-api.d.ts.map +1 -1
  191. package/dist/public-api.js +4 -0
  192. package/dist/public-api.js.map +1 -1
  193. package/package.json +72 -69
  194. package/dist/PredictiveStudio/at-risk.view-models.d.ts +0 -120
  195. package/dist/PredictiveStudio/at-risk.view-models.d.ts.map +0 -1
  196. package/dist/PredictiveStudio/at-risk.view-models.js +0 -261
  197. package/dist/PredictiveStudio/at-risk.view-models.js.map +0 -1
  198. package/dist/PredictiveStudio/components/ps-confirm-modal.component.d.ts +0 -109
  199. package/dist/PredictiveStudio/components/ps-confirm-modal.component.d.ts.map +0 -1
  200. package/dist/PredictiveStudio/components/ps-confirm-modal.component.js +0 -323
  201. package/dist/PredictiveStudio/components/ps-confirm-modal.component.js.map +0 -1
  202. package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.d.ts +0 -137
  203. package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.d.ts.map +0 -1
  204. package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.js +0 -826
  205. package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-studio-inspector.component.js","sourceRoot":"","sources":["../../src/LoginStudio/login-studio-inspector.component.ts","../../src/LoginStudio/login-studio-inspector.component.html"],"names":[],"mappings":"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","sourcesContent":["import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport {\n MJAlertComponent, MJButtonDirective, MJDropdownComponent, MJNumericInputComponent, MJSwitchComponent, MJViewToggleComponent,\n type ViewToggleOption,\n} from '@memberjunction/ng-ui-components';\nimport type { MJLoginRegionCommand } from '@memberjunction/ng-auth-services';\nimport {\n LOGIN_CARD_ICONS, LOGIN_COLOR_LABEL, LOGIN_LAYOUTS, LOGIN_LIMITS, LOGIN_LOGO_SOURCE_LABEL, LOGIN_LOGO_SOURCES,\n LoginBlockProblems, LoginContrastWarnings, StartingLoginColor,\n type LoginBlock, type LoginCardBlock, type LoginColorKey, type LoginDesign, type LoginHeadlineBlock, type LoginImageBlock,\n type LoginLayout, type LoginLinksBlock, type LoginLogoBlock, type LoginRegion, type LoginSize, type LoginTextBlock,\n} from '@memberjunction/theme-engine';\n\n/** A block field the inspector can change. */\nexport type LoginBlockField = 'Source' | 'Size' | 'Width' | 'Text' | 'Muted' | 'Icon' | 'Title' | 'Href' | 'NewTab' | 'URL' | 'Alt' | 'HideWhenStacked';\n/** A page-level field the inspector can change. */\nexport type LoginPageField = 'Layout' | 'Alignment' | 'PanelWidth' | 'Tone' | 'CardRadius' | 'BannerShare';\nexport type LoginBackgroundField = 'Kind' | 'Color' | 'Color2' | 'ImageURL' | 'Overlay';\n\n/** One change the inspector asks for. The studio applies it, so every change is one undoable step. */\nexport type LoginEdit =\n | { Kind: 'Block'; Field: LoginBlockField; Value: string | boolean | null }\n | { Kind: 'Link'; Index: number; Field: 'Label' | 'Href'; Value: string }\n | { Kind: 'AddLink' }\n | { Kind: 'RemoveLink'; Index: number }\n | { Kind: 'Page'; Field: LoginPageField; Value: string }\n | { Kind: 'Heading'; Value: string }\n | { Kind: 'Background'; Field: LoginBackgroundField; Value: string | number | null }\n | { Kind: 'Color'; Key: LoginColorKey; Value: string | null };\n\n/** The two parts of the page that are not blocks: each opens its own settings when clicked. */\nexport type LoginSurface = 'Banner' | 'Panel';\n\ninterface Option { Label: string; Value: string }\ninterface ColorRow { Key: LoginColorKey; Name: string }\n\nconst toggle = (labels: Record<string, string>): ViewToggleOption[] => Object.entries(labels).map(([key, label]) => ({ key, label }));\n\n/**\n * Login Studio's settings column: the selected block's fields, the selected surface's, or the page's.\n * A color appears with the thing it paints. Owns no state: every change goes out as a {@link LoginEdit}\n * the studio applies, so undo, the preview and the unsaved state live in one place.\n */\n@Component({\n standalone: true,\n selector: 'mj-login-studio-inspector',\n imports: [\n FormsModule, NgTemplateOutlet, MJAlertComponent, MJButtonDirective, MJDropdownComponent, MJNumericInputComponent, MJSwitchComponent,\n MJViewToggleComponent,\n ],\n templateUrl: './login-studio-inspector.component.html',\n styleUrls: ['./login-studio-inspector.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoginStudioInspectorComponent {\n @Input() Design!: LoginDesign;\n @Input() Selected: LoginBlock | null = null;\n /** The region the selected block sits in: a card's colors depend on which side of the page it is on. */\n @Input() SelectedRegion: LoginRegion | null = null;\n /** The selected surface, when no block is selected. */\n @Input() Surface: LoginSurface | null = null;\n /** A published page or a draft exists, so \"Use the stock sign-in page\" applies. */\n @Input() CanReset = false;\n @Input() Saving = false;\n\n @Output() EditRequested = new EventEmitter<LoginEdit>();\n @Output() CommandRequested = new EventEmitter<MJLoginRegionCommand>();\n @Output() StockPageRequested = new EventEmitter<void>();\n @Output() SurfaceSelectRequested = new EventEmitter<LoginSurface>();\n\n public readonly Limits = LOGIN_LIMITS;\n public readonly Layouts = LOGIN_LAYOUTS;\n public readonly LayoutLabel: Record<LoginLayout, string> = { split: 'Split', 'split-reverse': 'Reversed', centered: 'Centered' };\n public readonly SizeOptions = toggle({ sm: 'Small', md: 'Medium', lg: 'Large' });\n public readonly WidthOptions = toggle({ full: 'Full', half: 'Half', third: 'Third' });\n public readonly RadiusOptions = toggle({ none: 'Square', sm: 'S', md: 'M', lg: 'L', xl: 'XL' });\n public readonly BackgroundOptions = toggle({ brand: 'Brand', color: 'Color', gradient: 'Gradient', image: 'Image' });\n public readonly ToneOptions = toggle({ light: 'Light text', dark: 'Dark text' });\n public readonly AlignmentOptions = toggle({ start: 'Left', center: 'Centered' });\n public readonly BannerShareOptions = toggle({ narrow: 'Narrow', balanced: 'Balanced', wide: 'Wide' });\n public readonly PanelWidthOptions = toggle({ compact: 'Compact', wide: 'Wide' });\n public readonly ColorLabel = LOGIN_COLOR_LABEL;\n public readonly LogoSourceOptions: Option[] = LOGIN_LOGO_SOURCES.map((s) => ({ Value: s, Label: LOGIN_LOGO_SOURCE_LABEL[s] }));\n public readonly IconOptions: Option[] = [\n { Value: '', Label: 'No icon' }, ...Object.entries(LOGIN_CARD_ICONS).map(([Value, Label]) => ({ Value, Label })),\n ];\n\n public get SelectedProblems(): string[] {\n return this.Selected ? LoginBlockProblems(this.Selected) : [];\n }\n\n /** Only the warnings about the colors on screen. */\n public get ContrastWarnings(): string[] {\n const keys = this.Colors.map((c) => c.Key);\n return keys.length ? LoginContrastWarnings(this.Design, keys) : [];\n }\n\n /** The colors of what is selected. Each is one --mj-login-* token, so it is shared across that side of the page. */\n public get Colors(): ColorRow[] {\n if (this.Surface === 'Banner') return [{ Key: 'BannerText', Name: 'Text' }];\n if (this.Surface === 'Panel') return [{ Key: 'PanelBg', Name: 'Background' }, { Key: 'PanelText', Name: 'Text' }];\n const b = this.Selected;\n if (!b || !this.SelectedRegion) return [];\n const onBanner = this.SelectedRegion === 'Banner';\n if (b.Type === 'card') {\n return onBanner\n ? [{ Key: 'BannerCardBg', Name: 'Card background' }, { Key: 'BannerCardText', Name: 'Card text' }]\n : [{ Key: 'CardBg', Name: 'Card background' }, { Key: 'CardText', Name: 'Card text' }, { Key: 'CardBorder', Name: 'Card border' }];\n }\n if (b.Type === 'headline' || b.Type === 'text' || b.Type === 'links') {\n return [{ Key: onBanner ? 'BannerText' : 'PanelText', Name: 'Text' }];\n }\n return [];\n }\n\n /** Says who else a color change reaches, so one card's color repainting the others is no surprise. */\n public get ColorScope(): string | null {\n const b = this.Selected;\n if (this.Surface || !b || !this.Colors.length) return null;\n const where = this.SelectedRegion === 'Banner' ? 'the story panel' : 'the sign-in column';\n return b.Type === 'card' ? `Shared by every card in ${where}.` : `Shared by all the text in ${where}.`;\n }\n\n // The selected block, typed by kind: what each section of the template binds to.\n public get AsLogo(): LoginLogoBlock | null { return this.Selected?.Type === 'logo' ? this.Selected : null; }\n public get AsHeadline(): LoginHeadlineBlock | null { return this.Selected?.Type === 'headline' ? this.Selected : null; }\n public get AsText(): LoginTextBlock | null { return this.Selected?.Type === 'text' ? this.Selected : null; }\n public get AsCard(): LoginCardBlock | null { return this.Selected?.Type === 'card' ? this.Selected : null; }\n public get AsLinks(): LoginLinksBlock | null { return this.Selected?.Type === 'links' ? this.Selected : null; }\n public get AsImage(): LoginImageBlock | null { return this.Selected?.Type === 'image' ? this.Selected : null; }\n\n /** The selected block's size, when its kind comes in sizes (logo, headline, image, spacer). */\n public get SelectedSize(): LoginSize | null {\n const b = this.Selected;\n return b && 'Size' in b ? b.Size : null;\n }\n\n public SetBlock(field: LoginBlockField, value: string | boolean | null): void {\n this.EditRequested.emit({ Kind: 'Block', Field: field, Value: value });\n }\n\n /** Text that may be cleared: an empty field is stored as null, not ''. */\n public SetBlockOptional(field: LoginBlockField, value: string): void {\n this.SetBlock(field, value.trim() ? value : null);\n }\n\n public SetLink(index: number, field: 'Label' | 'Href', value: string): void {\n this.EditRequested.emit({ Kind: 'Link', Index: index, Field: field, Value: value });\n }\n\n public AddLink(): void {\n this.EditRequested.emit({ Kind: 'AddLink' });\n }\n\n public RemoveLink(index: number): void {\n this.EditRequested.emit({ Kind: 'RemoveLink', Index: index });\n }\n\n public SetPage(field: LoginPageField, value: string): void {\n this.EditRequested.emit({ Kind: 'Page', Field: field, Value: value });\n }\n\n public SetHeading(value: string): void {\n this.EditRequested.emit({ Kind: 'Heading', Value: value });\n }\n\n public SetBackground(field: LoginBackgroundField, value: string | number | null): void {\n this.EditRequested.emit({ Kind: 'Background', Field: field, Value: value });\n }\n\n public SetColor(key: LoginColorKey, value: string | null): void {\n this.EditRequested.emit({ Kind: 'Color', Key: key, Value: value });\n }\n\n public StartColor(key: LoginColorKey): void {\n this.SetColor(key, StartingLoginColor(this.Design, key));\n }\n\n public Run(kind: MJLoginRegionCommand['Kind']): void {\n if (this.Selected) this.CommandRequested.emit({ Kind: kind, ID: this.Selected.ID });\n }\n\n /** A text input's value, typed, so the template never needs a cast to read it. */\n public ValueOf(e: Event): string {\n return (e.target as HTMLInputElement | null)?.value ?? '';\n }\n}\n","<!-- The colors of whatever is selected: only the ones it uses (Colors), with the contrast warnings about them. -->\n<ng-template #colors>\n @if (Colors.length) {\n <div class=\"lsi__colors\" role=\"group\" aria-label=\"Colors\">\n <span class=\"lsi__section\">Colors</span>\n @if (ColorScope; as scope) { <p class=\"lsi__help\">{{ scope }}</p> }\n @for (k of Colors; track k.Key) {\n <div class=\"lsi__color-row\">\n <span>{{ k.Name }}</span>\n @if (Design.Colors[k.Key]; as c) {\n <input type=\"color\" [value]=\"c\" [attr.aria-label]=\"ColorLabel[k.Key]\" (input)=\"SetColor(k.Key, ValueOf($event))\" />\n <input class=\"mj-input lsi__hex\" type=\"text\" maxlength=\"7\" [value]=\"c\" [attr.aria-label]=\"ColorLabel[k.Key] + ', hex value'\" (change)=\"SetColor(k.Key, ValueOf($event))\" />\n <button type=\"button\" mjButton Variant=\"icon\" Size=\"sm\" title=\"Back to the default\" [AriaLabel]=\"'Reset ' + ColorLabel[k.Key] + ' to the default'\" (click)=\"SetColor(k.Key, null)\"><i class=\"fa-solid fa-rotate-left\"></i></button>\n } @else {\n <span class=\"lsi__optional\">Default</span>\n <button type=\"button\" mjButton Variant=\"outline\" Size=\"sm\" class=\"lsi__set\" [AriaLabel]=\"'Choose a custom ' + ColorLabel[k.Key]\" (click)=\"StartColor(k.Key)\">Choose</button>\n }\n </div>\n }\n <p class=\"lsi__help\">Default follows the theme. A color you choose stays the same in light and dark mode.</p>\n @if (ContrastWarnings.length) {\n <mj-alert Variant=\"warning\" Size=\"sm\" Role=\"status\">\n <ul class=\"lsi__list\">\n @for (w of ContrastWarnings; track $index) { <li>{{ w }}</li> }\n </ul>\n </mj-alert>\n }\n </div>\n }\n</ng-template>\n\n<div class=\"lsi\">\n @if (Selected; as sel) {\n <!-- A BLOCK -->\n @if (SelectedProblems.length) {\n <mj-alert Variant=\"warning\" Size=\"sm\" Role=\"status\">\n <ul class=\"lsi__list\">\n @for (p of SelectedProblems; track $index) { <li>{{ p }}</li> }\n </ul>\n </mj-alert>\n }\n\n @if (AsLogo; as b) {\n <div class=\"lsi__field\"><span class=\"lsi__label\" id=\"lsi-logo\">Which logo</span>\n <mj-dropdown [Data]=\"LogoSourceOptions\" TextField=\"Label\" ValueField=\"Value\" [ValuePrimitive]=\"true\" AriaLabelledBy=\"lsi-logo\"\n [ngModel]=\"b.Source\" (ngModelChange)=\"SetBlock('Source', $event)\"></mj-dropdown>\n </div>\n <p class=\"lsi__help\">Logos come from the default theme in Theme Studio. A variant that is not set falls back to the light mark, and a theme with no logos shows the stock one.</p>\n }\n\n @if (AsHeadline; as b) {\n <label class=\"lsi__field\"><span class=\"lsi__label\">Headline</span>\n <input class=\"mj-input\" type=\"text\" [value]=\"b.Text\" [maxLength]=\"Limits.Headline\" (input)=\"SetBlock('Text', ValueOf($event))\" />\n </label>\n }\n\n @if (AsText; as b) {\n <label class=\"lsi__field\"><span class=\"lsi__label\">Text</span>\n <textarea class=\"mj-textarea\" rows=\"4\" [value]=\"b.Text\" [maxLength]=\"Limits.Text\" (input)=\"SetBlock('Text', ValueOf($event))\"></textarea>\n </label>\n <div class=\"lsi__switch\"><mj-switch AriaLabel=\"Softer color\" [ngModel]=\"b.Muted\" (ngModelChange)=\"SetBlock('Muted', $event)\"></mj-switch> Softer color</div>\n }\n\n @if (AsCard; as b) {\n <div class=\"lsi__field\"><span class=\"lsi__label\" id=\"lsi-icon\">Icon</span>\n <mj-dropdown [Data]=\"IconOptions\" TextField=\"Label\" ValueField=\"Value\" [ValuePrimitive]=\"true\" AriaLabelledBy=\"lsi-icon\"\n [ngModel]=\"b.Icon ?? ''\" (ngModelChange)=\"SetBlockOptional('Icon', $event)\"></mj-dropdown>\n </div>\n <label class=\"lsi__field\"><span class=\"lsi__label\">Title</span>\n <input class=\"mj-input\" type=\"text\" [value]=\"b.Title\" [maxLength]=\"Limits.CardTitle\" (input)=\"SetBlock('Title', ValueOf($event))\" />\n </label>\n <label class=\"lsi__field\"><span class=\"lsi__label\">Note <span class=\"lsi__optional\">optional</span></span>\n <textarea class=\"mj-textarea\" rows=\"2\" [value]=\"b.Text ?? ''\" [maxLength]=\"Limits.CardText\" (input)=\"SetBlockOptional('Text', ValueOf($event))\"></textarea>\n </label>\n <label class=\"lsi__field\"><span class=\"lsi__label\">Link <span class=\"lsi__optional\">optional</span></span>\n <input class=\"mj-input\" type=\"url\" placeholder=\"https://… or mailto:…\" [value]=\"b.Href ?? ''\" (input)=\"SetBlockOptional('Href', ValueOf($event).trim())\" />\n </label>\n <div class=\"lsi__switch\"><mj-switch AriaLabel=\"Open in a new tab\" [ngModel]=\"b.NewTab\" (ngModelChange)=\"SetBlock('NewTab', $event)\"></mj-switch> Open in a new tab (keeps the sign-in page open)</div>\n }\n\n @if (AsLinks; as b) {\n @for (l of b.Links; track $index; let i = $index) {\n <div class=\"lsi__link\">\n <input class=\"mj-input\" type=\"text\" aria-label=\"Link label\" placeholder=\"Label\" [value]=\"l.Label\" [maxLength]=\"Limits.LinkLabel\" (input)=\"SetLink(i, 'Label', ValueOf($event))\" />\n <input class=\"mj-input\" type=\"url\" aria-label=\"Link address\" placeholder=\"https://…\" [value]=\"l.Href\" (input)=\"SetLink(i, 'Href', ValueOf($event).trim())\" />\n <button type=\"button\" mjButton Variant=\"icon\" Size=\"sm\" AriaLabel=\"Remove link\" title=\"Remove link\" (click)=\"RemoveLink(i)\"><i class=\"fa-regular fa-trash-can\"></i></button>\n </div>\n }\n <button type=\"button\" mjButton Variant=\"outline\" Size=\"sm\" (click)=\"AddLink()\" [disabled]=\"b.Links.length >= Limits.Links\"><i class=\"fa-solid fa-plus\"></i> Add link</button>\n }\n\n @if (AsImage; as b) {\n <label class=\"lsi__field\"><span class=\"lsi__label\">Image address</span>\n <input class=\"mj-input\" type=\"url\" placeholder=\"https://…/picture.png\" [value]=\"b.URL\" (input)=\"SetBlock('URL', ValueOf($event).trim())\" />\n </label>\n <label class=\"lsi__field\"><span class=\"lsi__label\">Description for screen readers</span>\n <input class=\"mj-input\" type=\"text\" [value]=\"b.Alt\" [maxLength]=\"Limits.Alt\" (input)=\"SetBlock('Alt', ValueOf($event))\" />\n </label>\n }\n\n @if (SelectedSize; as size) {\n <div class=\"lsi__field\" role=\"group\" aria-labelledby=\"lsi-size\"><span class=\"lsi__label\" id=\"lsi-size\">Size</span>\n <mj-view-toggle [Options]=\"SizeOptions\" [ActiveKey]=\"size\" (KeyChange)=\"SetBlock('Size', $event)\"></mj-view-toggle>\n </div>\n }\n\n <div class=\"lsi__field\" role=\"group\" aria-labelledby=\"lsi-width\"><span class=\"lsi__label\" id=\"lsi-width\">Width</span>\n <mj-view-toggle [Options]=\"WidthOptions\" [ActiveKey]=\"sel.Width\" (KeyChange)=\"SetBlock('Width', $event)\"></mj-view-toggle>\n </div>\n <p class=\"lsi__help\">Half or Third puts two or three blocks side by side. On a phone each block takes its own row.</p>\n\n <ng-container [ngTemplateOutlet]=\"colors\"></ng-container>\n\n @if (AsCard) {\n <div class=\"lsi__field\" role=\"group\" aria-labelledby=\"lsi-corners\"><span class=\"lsi__label\" id=\"lsi-corners\">Corners <span class=\"lsi__optional\">every card</span></span>\n <mj-view-toggle [Options]=\"RadiusOptions\" [ActiveKey]=\"Design.CardRadius\" (KeyChange)=\"SetPage('CardRadius', $event)\"></mj-view-toggle>\n </div>\n }\n\n <div class=\"lsi__switch\"><mj-switch AriaLabel=\"Hide on small screens\" [ngModel]=\"sel.HideWhenStacked\" (ngModelChange)=\"SetBlock('HideWhenStacked', $event)\"></mj-switch> Hide on small screens</div>\n <p class=\"lsi__help\">Tablets and phones show a short banner above the sign-in options, so keep it to the essentials.</p>\n\n <div class=\"lsi__row\">\n <button type=\"button\" mjButton Variant=\"outline\" Size=\"sm\" (click)=\"Run('duplicate')\"><i class=\"fa-regular fa-clone\"></i> Duplicate</button>\n <button type=\"button\" mjButton Variant=\"outline\" Size=\"sm\" (click)=\"Run('delete')\"><i class=\"fa-regular fa-trash-can\"></i> Delete</button>\n </div>\n\n } @else if (Surface === 'Banner') {\n <!-- THE STORY PANEL -->\n <div class=\"lsi__field\" role=\"group\" aria-labelledby=\"lsi-bg\"><span class=\"lsi__label\" id=\"lsi-bg\">Background</span>\n <mj-view-toggle [Options]=\"BackgroundOptions\" [ActiveKey]=\"Design.Background.Kind\" (KeyChange)=\"SetBackground('Kind', $event)\"></mj-view-toggle>\n </div>\n @switch (Design.Background.Kind) {\n @case ('brand') { <p class=\"lsi__help\">The default theme's brand gradient, from Theme Studio.</p> }\n @case ('color') {\n <div class=\"lsi__field\"><span class=\"lsi__label\">Color</span>\n <span class=\"lsi__color\">\n <input type=\"color\" aria-label=\"Background color\" [value]=\"Design.Background.Color ?? ''\" (input)=\"SetBackground('Color', ValueOf($event))\" />\n <input class=\"mj-input lsi__hex\" type=\"text\" maxlength=\"7\" aria-label=\"Background color, hex value\" [value]=\"Design.Background.Color ?? ''\" (change)=\"SetBackground('Color', ValueOf($event))\" />\n </span>\n </div>\n }\n @case ('gradient') {\n <div class=\"lsi__field\"><span class=\"lsi__label\">From</span>\n <span class=\"lsi__color\">\n <input type=\"color\" aria-label=\"Gradient start color\" [value]=\"Design.Background.Color ?? ''\" (input)=\"SetBackground('Color', ValueOf($event))\" />\n <input class=\"mj-input lsi__hex\" type=\"text\" maxlength=\"7\" aria-label=\"Gradient start, hex value\" [value]=\"Design.Background.Color ?? ''\" (change)=\"SetBackground('Color', ValueOf($event))\" />\n </span>\n </div>\n <div class=\"lsi__field\"><span class=\"lsi__label\">To</span>\n <span class=\"lsi__color\">\n <input type=\"color\" aria-label=\"Gradient end color\" [value]=\"Design.Background.Color2 ?? ''\" (input)=\"SetBackground('Color2', ValueOf($event))\" />\n <input class=\"mj-input lsi__hex\" type=\"text\" maxlength=\"7\" aria-label=\"Gradient end, hex value\" [value]=\"Design.Background.Color2 ?? ''\" (change)=\"SetBackground('Color2', ValueOf($event))\" />\n </span>\n </div>\n }\n @case ('image') {\n <label class=\"lsi__field\"><span class=\"lsi__label\">Image address</span>\n <input class=\"mj-input\" type=\"url\" placeholder=\"https://…/photo.jpg\" [value]=\"Design.Background.ImageURL ?? ''\" (input)=\"SetBackground('ImageURL', ValueOf($event))\" />\n </label>\n <div class=\"lsi__field\"><span class=\"lsi__label\" id=\"lsi-overlay\">Darken the image (%)</span>\n <mj-numeric-input [Min]=\"0\" [Max]=\"Limits.OverlayMax\" [Step]=\"5\" [Decimals]=\"0\" AriaLabelledBy=\"lsi-overlay\"\n [ngModel]=\"Design.Background.Overlay\" (ngModelChange)=\"SetBackground('Overlay', $event)\"></mj-numeric-input>\n </div>\n }\n }\n\n <div class=\"lsi__field\" role=\"group\" aria-labelledby=\"lsi-tone\"><span class=\"lsi__label\" id=\"lsi-tone\">Light or dark text</span>\n <mj-view-toggle [Options]=\"ToneOptions\" [ActiveKey]=\"Design.Tone\" (KeyChange)=\"SetPage('Tone', $event)\"></mj-view-toggle>\n </div>\n\n <ng-container [ngTemplateOutlet]=\"colors\"></ng-container>\n\n <div class=\"lsi__field\" role=\"group\" aria-labelledby=\"lsi-align\"><span class=\"lsi__label\" id=\"lsi-align\">Alignment</span>\n <mj-view-toggle [Options]=\"AlignmentOptions\" [ActiveKey]=\"Design.Alignment\" (KeyChange)=\"SetPage('Alignment', $event)\"></mj-view-toggle>\n </div>\n\n @if (Design.Layout !== 'centered') {\n <div class=\"lsi__field\" role=\"group\" aria-labelledby=\"lsi-share\"><span class=\"lsi__label\" id=\"lsi-share\">Width</span>\n <mj-view-toggle [Options]=\"BannerShareOptions\" [ActiveKey]=\"Design.BannerShare\" (KeyChange)=\"SetPage('BannerShare', $event)\"></mj-view-toggle>\n </div>\n }\n\n <p class=\"lsi__help\">To change the color of the cards here, select one.</p>\n\n } @else if (Surface === 'Panel') {\n <!-- THE SIGN-IN COLUMN -->\n <ng-container [ngTemplateOutlet]=\"colors\"></ng-container>\n <p class=\"lsi__help\">The sign-in button uses the default theme's brand color.</p>\n\n <label class=\"lsi__field\"><span class=\"lsi__label\">Heading above the sign-in options <span class=\"lsi__optional\">optional</span></span>\n <input class=\"mj-input\" type=\"text\" placeholder=\"None\" [value]=\"Design.Heading ?? ''\" [maxLength]=\"Limits.Heading\" (input)=\"SetHeading(ValueOf($event))\" />\n </label>\n\n <div class=\"lsi__field\" role=\"group\" aria-labelledby=\"lsi-panel-width\"><span class=\"lsi__label\" id=\"lsi-panel-width\">Width</span>\n <mj-view-toggle [Options]=\"PanelWidthOptions\" [ActiveKey]=\"Design.PanelWidth\" (KeyChange)=\"SetPage('PanelWidth', $event)\"></mj-view-toggle>\n </div>\n\n <p class=\"lsi__help\">To change the color of the cards here, select one.</p>\n\n } @else {\n <!-- THE PAGE -->\n <div class=\"lsi__field\" role=\"group\" aria-label=\"Layout\"><span class=\"lsi__label\">Layout</span>\n <div class=\"lsi__layouts\">\n @for (l of Layouts; track l) {\n <button type=\"button\" mjButton Variant=\"outline\" Size=\"sm\" class=\"lsi__layout\" [Toggleable]=\"true\" [Selected]=\"Design.Layout === l\"\n (click)=\"SetPage('Layout', l)\">\n <span class=\"lsi__layout-art\" [attr.data-layout]=\"l\" aria-hidden=\"true\"><span></span><span></span></span>\n {{ LayoutLabel[l] }}\n </button>\n }\n </div>\n </div>\n\n <div class=\"lsi__field\" role=\"group\" aria-label=\"Parts of the page\"><span class=\"lsi__label\">Change a part of the page</span>\n <div class=\"lsi__row\">\n <button type=\"button\" mjButton Variant=\"outline\" Size=\"sm\" (click)=\"SurfaceSelectRequested.emit('Banner')\"><i class=\"fa-solid fa-image\" aria-hidden=\"true\"></i> Story panel</button>\n <button type=\"button\" mjButton Variant=\"outline\" Size=\"sm\" (click)=\"SurfaceSelectRequested.emit('Panel')\"><i class=\"fa-solid fa-right-to-bracket\" aria-hidden=\"true\"></i> Sign-in column</button>\n </div>\n </div>\n <p class=\"lsi__help\">Or click it in the preview (the story panel, the sign-in column or any block) to see its settings and colors. Alt+↑/↓ moves the focused block; Delete removes it.</p>\n\n @if (CanReset) {\n <div class=\"lsi__row lsi__row--reset\">\n <button type=\"button\" mjButton Variant=\"outline\" Size=\"sm\" (click)=\"StockPageRequested.emit()\" [disabled]=\"Saving\">\n <i class=\"fa-solid fa-arrow-rotate-left\"></i> Use the stock sign-in page\n </button>\n </div>\n }\n }\n</div>\n"]}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * @fileoverview Login Studio: design the Explorer sign-in page as data, on the default theme.
3
+ * @module LoginStudio
4
+ */
5
+ import { AfterViewInit, OnDestroy, OnInit } from '@angular/core';
6
+ import { MJThemeEntity, ResourceData } from '@memberjunction/core-entities';
7
+ import { BaseResourceComponent } from '@memberjunction/ng-shared';
8
+ import { type MJStatBadgeVariant, type ViewToggleOption } from '@memberjunction/ng-ui-components';
9
+ import { type MJLoginRegionCommand, type MJLoginRegionDrop } from '@memberjunction/ng-auth-services';
10
+ import { type LoginBlock, type LoginBlockType, type LoginDesign, type LoginRegion, type ThemeLogos } from '@memberjunction/theme-engine';
11
+ import { type LoginEdit, type LoginSurface } from './login-studio-inspector.component';
12
+ import * as i0 from "@angular/core";
13
+ /**
14
+ * LOGIN STUDIO: an administrator designs the page visitors see before they sign in. The design lives on
15
+ * the default Active theme (`LoginScreenDraft` while edited, `LoginScreen` once published), because a
16
+ * sign-in page belongs to a brand. The preview is drawn by `<mj-login-region>`, the renderer the live
17
+ * login screen uses; every drag also has a click or key (Add, Alt+Arrow, Delete).
18
+ *
19
+ * SAFETY BOUNDARY (agent): the agent reads the design and its problems (GetSignInPageDesign). Save draft,
20
+ * Publish and "Use the stock sign-in page" are human-only: the published page is what every visitor meets
21
+ * before signing in.
22
+ */
23
+ export declare class LoginStudioResourceComponent extends BaseResourceComponent implements OnInit, AfterViewInit, OnDestroy {
24
+ private readonly cdr;
25
+ private readonly confirm;
26
+ private readonly themeService;
27
+ private readonly doc;
28
+ readonly Palette: {
29
+ Label: string;
30
+ Icon: string;
31
+ Hint: string;
32
+ Type: "text" | "card" | "image" | "spacer" | "logo" | "headline" | "links";
33
+ }[];
34
+ readonly PaletteListID = "palette";
35
+ readonly RegionLabel: Record<"Banner" | "PanelTop" | "PanelBottom", string>;
36
+ readonly DeviceOptions: ViewToggleOption[];
37
+ Loading: boolean;
38
+ Saving: boolean;
39
+ /** A failure to show, or null. */
40
+ ErrorMessage: string | null;
41
+ /** A confirmation to show, or null. */
42
+ NoticeMessage: string | null;
43
+ /** The theme being designed for: the default Active theme, or null when there is none. */
44
+ Theme: MJThemeEntity | null;
45
+ Design: LoginDesign;
46
+ SelectedID: string | null;
47
+ /** The story panel or the sign-in column, when one is selected instead of a block. */
48
+ SelectedSurface: LoginSurface | null;
49
+ Device: 'desktop' | 'mobile';
50
+ Logos: ThemeLogos;
51
+ /** The default theme's look, as custom properties on the preview frame. */
52
+ FrameStyle: Record<string, string>;
53
+ /** The desktop preview's scale: the frame's width over DESKTOP_WIDTH. */
54
+ DesktopScale: number;
55
+ /** The problems that stopped the last save; re-checked as you edit, so the alert goes once they are fixed. */
56
+ private problems;
57
+ /** What is stored, as JSON, so "unsaved" and "unpublished" are comparisons rather than flags. */
58
+ private savedDraft;
59
+ private published;
60
+ /** The design as it stands in storage (or the starter, before anything is saved). */
61
+ private baseline;
62
+ private seeds;
63
+ private undo;
64
+ private redo;
65
+ private lastEdit;
66
+ private droppedAt;
67
+ private reportedEditing;
68
+ private readonly frameObserver;
69
+ /** The preview frame, there once the theme has loaded: its width sets the desktop preview's scale. */
70
+ private set frameRef(value);
71
+ ngOnInit(): void;
72
+ ngAfterViewInit(): void;
73
+ ngOnDestroy(): void;
74
+ GetResourceDisplayName(_data: ResourceData): Promise<string>;
75
+ GetResourceIconClass(_data: ResourceData): Promise<string>;
76
+ /** Unsaved edits: the shell keeps this tab rather than replace it. */
77
+ IsEditing(): boolean;
78
+ /** Re-read the default theme and its sign-in page. */
79
+ Reload(): Promise<void>;
80
+ /** Take the stored state from the theme, and edit its draft (else its live page, else the starter). */
81
+ private adoptTheme;
82
+ /** What is stored on the theme: what is saved, what is live, and its seeds and logos. */
83
+ private readStored;
84
+ get CurrentJson(): string;
85
+ /** Edits not yet saved as the draft. */
86
+ get Unsaved(): boolean;
87
+ /** The saved draft differs from what visitors see. */
88
+ get Unpublished(): boolean;
89
+ get IsLive(): boolean;
90
+ get CanUndo(): boolean;
91
+ get CanRedo(): boolean;
92
+ get Stacked(): boolean;
93
+ get StatusLabel(): string;
94
+ /** The header pill: shown only when there is something to say (live, or work waiting on you). */
95
+ get StatusVariant(): MJStatBadgeVariant | null;
96
+ get Selected(): LoginBlock | null;
97
+ /** The region of the selected block: a card's colors depend on which side of the page it is on. */
98
+ get SelectedRegion(): LoginRegion | null;
99
+ /** The selected surface; a selected block always wins. */
100
+ get Surface(): LoginSurface | null;
101
+ get SideTitle(): string;
102
+ get SideIcon(): string;
103
+ /** Closing or reloading the browser with unsaved edits asks first. */
104
+ OnBeforeUnload(e: BeforeUnloadEvent): void;
105
+ SaveDraft(): Promise<void>;
106
+ Publish(): Promise<void>;
107
+ /** Back to what is stored (the saved draft, the live page, or the starter), dropping unsaved edits. */
108
+ Discard(): void;
109
+ /** Remove the custom page: visitors get the stock sign-in page again. */
110
+ UseStockPage(): Promise<void>;
111
+ DismissError(): void;
112
+ DismissNotice(): void;
113
+ private done;
114
+ /** The editor's own list of problems, in its words. The entity's Validate runs the full check on save. */
115
+ private checkBeforeWrite;
116
+ private problemsMessage;
117
+ /**
118
+ * Writes the sign-in page columns to a FRESH copy of the theme, so a save never carries back a stale
119
+ * copy of the theme's other columns (another admin may have changed its colors or the default meanwhile).
120
+ */
121
+ private write;
122
+ /** Every change goes through here: one undo step (or one per run of typing into a field) and a fresh object for OnPush. */
123
+ private mutate;
124
+ /** What the inspector asks for, applied as one undoable step. */
125
+ ApplyEdit(e: LoginEdit): void;
126
+ private editSelected;
127
+ private editBackground;
128
+ private pushHistory;
129
+ Undo(): void;
130
+ Redo(): void;
131
+ /** A snapshot this editor took itself, so it comes back exactly as it was, half-typed values included. */
132
+ private restore;
133
+ /** Ctrl/Cmd+Z and Shift+Ctrl/Cmd+Z while focus is in the studio, except in a field being typed in. */
134
+ OnKeydown(e: KeyboardEvent): void;
135
+ /** A click on the empty preview deselects, except the click that ends a drag. */
136
+ OnStageClick(): void;
137
+ OnDrop(e: MJLoginRegionDrop): void;
138
+ /** The palette never accepts a drop: dragging a tile back onto it cancels. */
139
+ readonly NoEnter: () => boolean;
140
+ /**
141
+ * Add a block: dropped at a spot, or (clicked in the palette) just after the selected block, else at
142
+ * the end of the selected surface's first region, else of the story panel.
143
+ */
144
+ AddBlock(type: LoginBlockType, region?: LoginRegion, index?: number): void;
145
+ OnCommand(c: MJLoginRegionCommand): void;
146
+ /** True, with a notice, when a region has no room for another block. */
147
+ private regionFull;
148
+ Select(id: string | null): void;
149
+ /** Select the story panel or the sign-in column (a click on it in the preview, or the inspector's buttons). */
150
+ SelectSurface(surface: LoginSurface, e?: Event): void;
151
+ SetDevice(device: string): void;
152
+ /** Fit the desktop page to the frame. A hidden tab's frame measures 0, so it keeps its last fit. */
153
+ private fitDesktop;
154
+ /** After any change: the problems alert, the preview, the agent's view, the shell's edit state, and the view. */
155
+ private changed;
156
+ private publishAgentContext;
157
+ private registerAgentTools;
158
+ static ɵfac: i0.ɵɵFactoryDeclaration<LoginStudioResourceComponent, never>;
159
+ static ɵcmp: i0.ɵɵComponentDeclaration<LoginStudioResourceComponent, "mj-login-studio-resource", never, {}, {}, never, never, true, never>;
160
+ }
161
+ //# sourceMappingURL=login-studio-resource.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-studio-resource.component.d.ts","sourceRoot":"","sources":["../../src/LoginStudio/login-studio-resource.component.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,aAAa,EAAmF,SAAS,EAAE,MAAM,EAClH,MAAM,eAAe,CAAC;AAMvB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAgB,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EAE+D,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EACnH,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAA0B,KAAK,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC7H,OAAO,EAIqB,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EACpH,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAA4D,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,oCAAoC,CAAC;;AAcjJ;;;;;;;;;GASG;AACH,qBAaa,4BAA6B,SAAQ,qBAAsB,YAAW,MAAM,EAAE,aAAa,EAAE,SAAS;IACjH,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA6B;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;IACrD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IAExC,SAAgB,OAAO;;;;;QAAgF;IACvG,SAAgB,aAAa,aAAW;IACxC,SAAgB,WAAW,wDAAsB;IACjD,SAAgB,aAAa,EAAE,gBAAgB,EAAE,CAG/C;IAEK,OAAO,UAAQ;IACf,MAAM,UAAS;IACtB,kCAAkC;IAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC1C,uCAAuC;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE3C,0FAA0F;IACnF,KAAK,EAAE,aAAa,GAAG,IAAI,CAAQ;IACnC,MAAM,EAAE,WAAW,CAAwB;IAC3C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAQ;IACxC,sFAAsF;IAC/E,eAAe,EAAE,YAAY,GAAG,IAAI,CAAQ;IAC5C,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAa;IACzC,KAAK,EAAE,UAAU,CAAM;IAC9B,2EAA2E;IACpE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAC/C,yEAAyE;IAClE,YAAY,SAAK;IAExB,8GAA8G;IAC9G,OAAO,CAAC,QAAQ,CAAgB;IAChC,iGAAiG;IACjG,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,SAAS,CAAuB;IACxC,qFAAqF;IACrF,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,QAAQ,CAA4C;IAC5D,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CACkG;IAEhI,sGAAsG;IAClF,OAAO,KAAK,QAAQ,QAGvC;IAEe,QAAQ,IAAI,IAAI;IAOzB,eAAe,IAAI,IAAI;IAId,WAAW,IAAI,IAAI;IAKtB,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAI5D,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvE,sEAAsE;IACtD,SAAS,IAAI,OAAO;IAMpC,sDAAsD;IACzC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BpC,uGAAuG;IACvG,OAAO,CAAC,UAAU;IAWlB,yFAAyF;IACzF,OAAO,CAAC,UAAU;IAclB,IAAW,WAAW,IAAI,MAAM,CAE/B;IACD,wCAAwC;IACxC,IAAW,OAAO,IAAI,OAAO,CAE5B;IACD,sDAAsD;IACtD,IAAW,WAAW,IAAI,OAAO,CAEhC;IACD,IAAW,MAAM,IAAI,OAAO,CAE3B;IACD,IAAW,OAAO,IAAI,OAAO,CAE5B;IACD,IAAW,OAAO,IAAI,OAAO,CAE5B;IACD,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,WAAW,IAAI,MAAM,CAK/B;IACD,iGAAiG;IACjG,IAAW,aAAa,IAAI,kBAAkB,GAAG,IAAI,CAGpD;IAED,IAAW,QAAQ,IAAI,UAAU,GAAG,IAAI,CAGvC;IACD,mGAAmG;IACnG,IAAW,cAAc,IAAI,WAAW,GAAG,IAAI,CAE9C;IACD,0DAA0D;IAC1D,IAAW,OAAO,IAAI,YAAY,GAAG,IAAI,CAExC;IACD,IAAW,SAAS,IAAI,MAAM,CAG7B;IACD,IAAW,QAAQ,IAAI,MAAM,CAG5B;IAED,sEAAsE;IAE/D,cAAc,CAAC,CAAC,EAAE,iBAAiB,GAAG,IAAI;IAMpC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAS1B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrC,uGAAuG;IAChG,OAAO,IAAI,IAAI;IAWtB,yEAAyE;IAC5D,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBnC,YAAY,IAAI,IAAI;IAKpB,aAAa,IAAI,IAAI;IAK5B,OAAO,CAAC,IAAI;IAKZ,0GAA0G;IAC1G,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,eAAe;IAIvB;;;OAGG;YACW,KAAK;IAkCnB,2HAA2H;IAC3H,OAAO,CAAC,MAAM;IAWd,iEAAiE;IAC1D,SAAS,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI;IAyBpC,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,WAAW;IAMZ,IAAI,IAAI,IAAI;IAOZ,IAAI,IAAI,IAAI;IAOnB,0GAA0G;IAC1G,OAAO,CAAC,OAAO;IAOf,sGAAsG;IAE/F,SAAS,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI;IAWxC,iFAAiF;IAC1E,YAAY,IAAI,IAAI;IAKpB,MAAM,CAAC,CAAC,EAAE,iBAAiB,GAAG,IAAI;IAgBzC,8EAA8E;IAC9E,SAAgB,OAAO,QAAO,OAAO,CAAU;IAE/C;;;OAGG;IACI,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAW1E,SAAS,CAAC,CAAC,EAAE,oBAAoB,GAAG,IAAI;IA0B/C,wEAAwE;IACxE,OAAO,CAAC,UAAU;IAOX,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAOtC,+GAA+G;IACxG,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAWrD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOtC,oGAAoG;IACpG,OAAO,CAAC,UAAU;IAOlB,iHAAiH;IACjH,OAAO,CAAC,OAAO;IAiBf,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;yCA5jBf,4BAA4B;2CAA5B,4BAA4B;CAykBxC"}