UNPKG

@igo2/common

Version:
1 lines 19.4 kB
{"version":3,"file":"igo2-common-workspace.mjs","sources":["../../../packages/common/workspace/src/shared/store.ts","../../../packages/common/workspace/src/shared/workspace.ts","../../../packages/common/workspace/src/workspace-selector/workspace-selector.component.ts","../../../packages/common/workspace/src/workspace-selector/workspace-selector.component.html","../../../packages/common/workspace/src/workspace-selector/workspace-selector.module.ts","../../../packages/common/workspace/src/workspace-widget-outlet/workspace-widget-outlet.component.ts","../../../packages/common/workspace/src/workspace-widget-outlet/workspace-widget-outlet.component.html","../../../packages/common/workspace/src/workspace-widget-outlet/workspace-widget-outlet.module.ts","../../../packages/common/workspace/src/workspace.module.ts","../../../packages/common/workspace/src/igo2-common-workspace.ts"],"sourcesContent":["import { EntityStore } from '@igo2/common/entity';\n\nimport { BehaviorSubject } from 'rxjs';\n\nimport { Workspace } from './workspace';\n\n/**\n * The class is a specialized version of an EntityStore that stores\n * workspaces.\n */\nexport class WorkspaceStore extends EntityStore<Workspace> {\n activeWorkspace$ = new BehaviorSubject<Workspace>(undefined);\n\n /**\n * Activate the an workspace workspace and deactivate the one currently active\n * @param workspace Workspace\n */\n activateWorkspace(workspace: Workspace) {\n const active = this.activeWorkspace$.value;\n if (active !== undefined) {\n active.deactivate();\n }\n\n this.deactivateWorkspace();\n if (workspace !== undefined) {\n this.state.update(workspace, { active: true, selected: true }, true);\n this.activeWorkspace$.next(workspace);\n workspace.activate();\n }\n }\n\n /**\n * Deactivate the current workspace\n * @param workspace Workspace\n */\n deactivateWorkspace() {\n const active = this.activeWorkspace$.value;\n if (active !== undefined) {\n active.deactivate();\n this.activeWorkspace$.next(undefined);\n }\n }\n}\n","import { ActionStore } from '@igo2/common/action';\nimport { EntityStore } from '@igo2/common/entity';\nimport { Widget } from '@igo2/common/widget';\n\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\n\nimport { WorkspaceOptions } from './workspace.interfaces';\n\n/**\n * This class is responsible of managing the relations between\n * entities and the actions that consume them. It also defines an\n * entity table template that may be used by an entity table component.\n */\nexport class Workspace<E extends object = object> {\n /**\n * Observable of the selected widget\n */\n readonly widget$ = new BehaviorSubject<Widget>(undefined);\n\n /**\n * Observable of the selected widget's inputs\n */\n readonly widgetInputs$ = new BehaviorSubject<Record<string, any>>({});\n\n /**\n * Observable of the selected widget's subscribers\n */\n readonly widgetSubscribers$ = new BehaviorSubject<\n Record<string, (event: any) => void>\n >({});\n\n /**\n * Subscription to the selected entity\n */\n private entities$$: Subscription;\n\n /**\n * State change that trigger an update of the actions availability\n */\n private change = new Subject<void>();\n\n /**\n * Subscription to state changes\n */\n private change$: Subscription;\n\n /**\n * Workspace id\n */\n get id(): string {\n return this.options.id;\n }\n\n /**\n * Workspace title\n */\n get title(): string {\n return this.options.title;\n }\n\n /**\n * Workspace title\n */\n get meta(): Record<string, any> {\n return this.options.meta || {};\n }\n\n /**\n * Entities store\n */\n get entityStore(): EntityStore<E> {\n return this.options.entityStore as EntityStore<E>;\n }\n\n /**\n * Actions store (some actions activate a widget)\n */\n get actionStore(): ActionStore {\n return this.options.actionStore;\n }\n\n /**\n * Selected widget\n */\n get widget(): Widget {\n return this.widget$.value;\n }\n\n /**\n * Whether a widget is selected\n */\n get hasWidget(): boolean {\n return this.widget !== undefined;\n }\n\n constructor(protected options: WorkspaceOptions) {}\n\n /**\n * Whether this strategy is active\n * @internal\n */\n get active(): boolean {\n return this.active$.value;\n }\n readonly active$ = new BehaviorSubject<boolean>(false);\n\n /**\n * Activate the workspace. By doing that, the workspace will observe\n * the selected entity (from the store) and update the actions availability.\n * For example, some actions require an entity to be selected.\n */\n activate() {\n if (this.active === true) {\n this.deactivate();\n }\n this.active$.next(true);\n\n if (this.entityStore !== undefined) {\n this.entities$$ = this.entityStore.stateView\n .all$()\n .subscribe(() => this.onStateChange());\n }\n\n this.change.next();\n }\n\n /**\n * Deactivate the workspace. Unsubcribe to the selected entity.\n */\n deactivate() {\n this.active$.next(false);\n this.deactivateWidget();\n\n if (this.entities$$ !== undefined) {\n this.entities$$.unsubscribe();\n }\n if (this.change$ !== undefined) {\n this.change$.unsubscribe();\n }\n }\n\n /**\n * Activate a widget. In itself, activating a widget doesn't render it but,\n * if an WorkspaceWidgetOutlet component is bound to this workspace, the widget will\n * show up.\n * @param widget Widget\n * @param inputs Inputs the widget will receive\n */\n activateWidget(\n widget: Widget,\n inputs: Record<string, any> = {},\n subscribers: Record<string, (event: any) => void> = {}\n ) {\n this.widget$.next(widget);\n this.widgetInputs$.next(inputs);\n this.widgetSubscribers$.next(subscribers);\n this.change.next();\n }\n\n /**\n * Deactivate a widget.\n */\n deactivateWidget() {\n this.widget$.next(undefined);\n this.change.next();\n }\n\n /**\n * When the state changes, update the actions availability.\n */\n private onStateChange() {\n this.change.next();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\n\nimport {\n EntitySelectorChange,\n EntitySelectorComponent,\n getEntityTitle\n} from '@igo2/common/entity';\n\nimport { WorkspaceStore } from '../shared/store';\nimport { Workspace } from '../shared/workspace';\n\n/**\n * Drop list that activates the selected workspace emit an event.\n */\n@Component({\n selector: 'igo-workspace-selector',\n templateUrl: './workspace-selector.component.html',\n styleUrls: ['./workspace-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [EntitySelectorComponent]\n})\nexport class WorkspaceSelectorComponent {\n /**\n * Store that holds the available workspaces.\n */\n @Input() store: WorkspaceStore;\n\n /**\n * Wheither the selector must be disabled or not.\n */\n @Input() disabled: boolean;\n\n /**\n * Event emitted when an workspace is selected or unselected\n */\n @Output() selectedChange = new EventEmitter<{\n selected: boolean;\n value: Workspace;\n }>();\n\n /**\n * @internal\n */\n getWorkspaceTitle(workspace: Workspace): string {\n return getEntityTitle(workspace);\n }\n\n /**\n * When an workspace is manually selected, select it into the\n * store and emit an event.\n * @internal\n * @param event The selection change event\n */\n onSelectedChange(event: EntitySelectorChange<Workspace>) {\n const workspace = event.value;\n this.store.activateWorkspace(workspace);\n this.selectedChange.emit({ selected: true, value: workspace });\n }\n}\n","<igo-entity-selector\n [store]=\"store\"\n [multi]=\"false\"\n [titleAccessor]=\"getWorkspaceTitle\"\n [disabled]=\"disabled\"\n (selectedChange)=\"onSelectedChange($event)\"\n>\n</igo-entity-selector>\n","import { NgModule } from '@angular/core';\n\nimport { WorkspaceSelectorComponent } from './workspace-selector.component';\n\n/**\n * @deprecated import the WorkspaceSelectorComponent directly\n */\n@NgModule({\n imports: [WorkspaceSelectorComponent],\n exports: [WorkspaceSelectorComponent]\n})\nexport class IgoWorkspaceSelectorModule {}\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output\n} from '@angular/core';\n\nimport { Widget, WidgetOutletComponent } from '@igo2/common/widget';\n\nimport { BehaviorSubject } from 'rxjs';\n\nimport { Workspace } from '../shared/workspace';\n\n/**\n * This component dynamically render an Workspace's active widget.\n * It also deactivate that widget whenever the widget's component\n * emit the 'cancel' or 'complete' event.\n */\n@Component({\n selector: 'igo-workspace-widget-outlet',\n templateUrl: './workspace-widget-outlet.component.html',\n styleUrls: ['./workspace-widget-outlet.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgIf, WidgetOutletComponent, AsyncPipe]\n})\nexport class WorkspaceWidgetOutletComponent {\n /**\n * Workspace\n */\n @Input() workspace: Workspace;\n\n /**\n * Event emitted when a widget is deactivate which happens\n * when the widget's component emits the 'cancel' or 'complete' event.\n */\n @Output() deactivateWidget = new EventEmitter<Widget>();\n\n /**\n * Observable of the workspace's active widget\n * @internal\n */\n get widget$(): BehaviorSubject<Widget> {\n return this.workspace.widget$;\n }\n\n /**\n * Observable of the workspace's widget inputs\n * @internal\n */\n get widgetInputs$(): BehaviorSubject<Record<string, any>> {\n return this.workspace.widgetInputs$;\n }\n\n /**\n * Observable of the workspace's widget inputs\n * @internal\n */\n get widgetSubscribers$(): BehaviorSubject<\n Record<string, (event: any) => void>\n > {\n return this.workspace.widgetSubscribers$;\n }\n\n /**\n * When a widget's component emit the 'cancel' event,\n * deactivate that widget and emit the 'deactivateWidget' event.\n * @param widget Widget\n * @internal\n */\n onWidgetCancel(widget: Widget) {\n this.workspace.deactivateWidget();\n this.deactivateWidget.emit(widget);\n }\n\n /**\n * When a widget's component emit the 'cancel' event,\n * deactivate that widget and emit the 'deactivateWidget' event.\n * @param widget Widget\n * @internal\n */\n onWidgetComplete(widget: Widget) {\n this.workspace.deactivateWidget();\n this.deactivateWidget.emit(widget);\n }\n}\n","<ng-container *ngIf=\"widget$ | async as widget\">\n <igo-widget-outlet\n [widget]=\"widget\"\n [inputs]=\"widgetInputs$ | async\"\n [subscribers]=\"widgetSubscribers$ | async\"\n (cancel)=\"onWidgetCancel(widget)\"\n (complete)=\"onWidgetComplete(widget)\"\n >\n </igo-widget-outlet>\n</ng-container>\n","import { NgModule } from '@angular/core';\n\nimport { WorkspaceWidgetOutletComponent } from './workspace-widget-outlet.component';\n\n/**\n * @deprecated import the WorkspaceWidgetOutletComponent directly\n */\n@NgModule({\n imports: [WorkspaceWidgetOutletComponent],\n exports: [WorkspaceWidgetOutletComponent]\n})\nexport class IgoWorkspaceWidgetOutletModule {}\n","import { NgModule } from '@angular/core';\n\nimport { WorkspaceSelectorComponent } from './workspace-selector';\nimport { WorkspaceWidgetOutletComponent } from './workspace-widget-outlet';\n\nexport const WORKSPACE_DIRECTIVES = [\n WorkspaceSelectorComponent,\n WorkspaceWidgetOutletComponent\n] as const;\n\n/**\n * @deprecated import the components directly or WORKSPACE_DIRECTIVES for every components/directives\n */\n@NgModule({\n imports: [...WORKSPACE_DIRECTIVES],\n exports: [...WORKSPACE_DIRECTIVES],\n declarations: []\n})\nexport class IgoWorkspaceModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}