@o3r/components 14.6.0-prerelease.11 → 14.6.0-prerelease.14
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/fesm2022/o3r-components-rules-engine.mjs +18 -4
- package/fesm2022/o3r-components-rules-engine.mjs.map +1 -1
- package/fesm2022/o3r-components.mjs +75 -14
- package/fesm2022/o3r-components.mjs.map +1 -1
- package/package.json +12 -12
- package/types/o3r-components-rules-engine.d.ts +9 -1
- package/types/o3r-components-rules-engine.d.ts.map +1 -1
- package/types/o3r-components.d.ts +41 -5
- package/types/o3r-components.d.ts.map +1 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Injector, Injectable, NgModule } from '@angular/core';
|
|
2
|
+
import { inject, Injector, Injectable, NgModule, makeEnvironmentProviders } from '@angular/core';
|
|
3
3
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
4
|
import { Store, select } from '@ngrx/store';
|
|
5
5
|
import { DynamicContentService } from '@o3r/dynamic-content';
|
|
6
6
|
import { LoggerService } from '@o3r/logger';
|
|
7
7
|
import { Subject, from, switchMap, of, map, startWith, distinctUntilChanged, combineLatest, withLatestFrom, firstValueFrom, EMPTY } from 'rxjs';
|
|
8
|
-
import { selectPlaceholderTemplateEntities, selectPlaceholderRequestEntities, deletePlaceholderTemplateEntity, setPlaceholderTemplateEntity, updatePlaceholderRequestEntity, setPlaceholderRequestEntityFromUrl, selectPlaceholderRequestEntityUsage, failPlaceholderRequestEntity, cancelPlaceholderRequest, PlaceholderRequestStoreModule, PlaceholderTemplateStoreModule } from '@o3r/components';
|
|
8
|
+
import { selectPlaceholderTemplateEntities, selectPlaceholderRequestEntities, deletePlaceholderTemplateEntity, setPlaceholderTemplateEntity, updatePlaceholderRequestEntity, setPlaceholderRequestEntityFromUrl, selectPlaceholderRequestEntityUsage, failPlaceholderRequestEntity, cancelPlaceholderRequest, PlaceholderRequestStoreModule, PlaceholderTemplateStoreModule, providePlaceholderRequestStore, providePlaceholderTemplateStore } from '@o3r/components';
|
|
9
9
|
import * as i1 from '@ngrx/effects';
|
|
10
|
-
import { Actions, createEffect, ofType, EffectsModule } from '@ngrx/effects';
|
|
10
|
+
import { Actions, createEffect, ofType, EffectsModule, provideEffects } from '@ngrx/effects';
|
|
11
11
|
import { fromApiEffectSwitchMapById } from '@o3r/core';
|
|
12
12
|
import { RulesEngineRunnerService } from '@o3r/rules-engine';
|
|
13
13
|
import { JSONPath } from 'jsonpath-plus';
|
|
@@ -291,6 +291,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
|
|
|
291
291
|
type: Injectable
|
|
292
292
|
}] });
|
|
293
293
|
|
|
294
|
+
/**
|
|
295
|
+
* @deprecated Will be removed in v16. Use {@link providePlaceholderRulesEngineAction} instead.
|
|
296
|
+
*/
|
|
294
297
|
class PlaceholderRulesEngineActionModule {
|
|
295
298
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PlaceholderRulesEngineActionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
296
299
|
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.17", ngImport: i0, type: PlaceholderRulesEngineActionModule, imports: [i1.EffectsFeatureModule, PlaceholderRequestStoreModule,
|
|
@@ -314,10 +317,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
|
|
|
314
317
|
]
|
|
315
318
|
}]
|
|
316
319
|
}] });
|
|
320
|
+
/**
|
|
321
|
+
* Provide placeholder rules engine action handler.
|
|
322
|
+
*/
|
|
323
|
+
function providePlaceholderRulesEngineAction() {
|
|
324
|
+
return makeEnvironmentProviders([
|
|
325
|
+
providePlaceholderRequestStore(),
|
|
326
|
+
providePlaceholderTemplateStore(),
|
|
327
|
+
provideEffects(PlaceholderTemplateResponseEffect),
|
|
328
|
+
PlaceholderRulesEngineActionHandler
|
|
329
|
+
]);
|
|
330
|
+
}
|
|
317
331
|
|
|
318
332
|
/**
|
|
319
333
|
* Generated bundle index. Do not edit.
|
|
320
334
|
*/
|
|
321
335
|
|
|
322
|
-
export { PlaceholderRulesEngineActionHandler, PlaceholderRulesEngineActionModule, RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE };
|
|
336
|
+
export { PlaceholderRulesEngineActionHandler, PlaceholderRulesEngineActionModule, RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE, providePlaceholderRulesEngineAction };
|
|
323
337
|
//# sourceMappingURL=o3r-components-rules-engine.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"o3r-components-rules-engine.mjs","sources":["../../src/rules-engine/placeholder-interfaces.ts","../../src/rules-engine/placeholder-action-handler.ts","../../src/rules-engine/placeholder-rules-engine.effect.ts","../../src/rules-engine/placeholder-rules-engine-module.ts","../../src/rules-engine/o3r-components-rules-engine.ts"],"sourcesContent":["import type {\n RulesEngineAction,\n} from '@o3r/core';\nimport type {\n Observable,\n} from 'rxjs';\n\n/**\n * Minimal subset of the underlying translation service (ngx-translate's `TranslateService` or\n * transloco's `TranslocoService`) exposing language-change notifications.\n * TODO: remove this abstraction and rely on the single supported translation service in v16\n */\nexport interface PlaceholderTranslateService {\n /** Language-change stream exposed by ngx-translate (`@o3r/localization`) */\n onLangChange?: Observable<{ lang: string }>;\n /** Language-change stream exposed by transloco (`@o3r/transloco`) */\n langChanges$?: Observable<string>;\n}\n\n/**\n * Minimal subset of the `LocalizationService` API (from `@o3r/localization` or `@o3r/transloco`)\n * used by the placeholder rules engine. Declared locally so that neither package is a hard dependency.\n * TODO: remove this abstraction and import `LocalizationService` directly from the single supported translation package in v16\n */\nexport interface PlaceholderLocalizationService {\n /** Translate a localization key, resolving the given interpolation parameters */\n translate(key: string, interpolateParams?: object): Observable<string>;\n /** Get the underlying translation service used by the localization service */\n getTranslateService(): PlaceholderTranslateService;\n /** Get the current active language */\n getCurrentLanguage(): string;\n}\n\n/** ActionUpdatePlaceholderBlock */\nexport const RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE = 'UPDATE_PLACEHOLDER';\n\n/**\n * Content of action that updates a placeholder\n */\nexport interface ActionUpdatePlaceholderBlock extends RulesEngineAction {\n actionType: typeof RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE;\n placeholderId: string;\n value: string;\n priority?: number;\n}\n","import {\n inject,\n Injectable,\n Injector,\n} from '@angular/core';\nimport {\n takeUntilDestroyed,\n} from '@angular/core/rxjs-interop';\nimport {\n select,\n Store,\n} from '@ngrx/store';\nimport type {\n RulesEngineActionHandler,\n} from '@o3r/core';\nimport {\n DynamicContentService,\n} from '@o3r/dynamic-content';\nimport {\n LoggerService,\n} from '@o3r/logger';\nimport {\n combineLatest,\n distinctUntilChanged,\n firstValueFrom,\n from,\n map,\n Observable,\n of,\n startWith,\n Subject,\n switchMap,\n withLatestFrom,\n} from 'rxjs';\nimport {\n ActionUpdatePlaceholderBlock,\n type PlaceholderLocalizationService,\n RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE,\n} from './placeholder-interfaces';\nimport {\n deletePlaceholderTemplateEntity,\n PlaceholderRequestReply,\n PlaceholderTemplateStore,\n selectPlaceholderRequestEntities,\n selectPlaceholderTemplateEntities,\n setPlaceholderRequestEntityFromUrl,\n setPlaceholderTemplateEntity,\n updatePlaceholderRequestEntity,\n} from '@o3r/components';\n\n/**\n * Service to handle async PlaceholderTemplate actions\n */\n@Injectable()\nexport class PlaceholderRulesEngineActionHandler implements RulesEngineActionHandler<ActionUpdatePlaceholderBlock> {\n private readonly logger = inject(LoggerService);\n private readonly injector = inject(Injector);\n // Prefer `@o3r/transloco`, fall back to `@o3r/localization`; both are optional peer dependencies.\n // TODO: use `injectAsync` to resolve the optional `LocalizationService` token once migrated to ng22\n // TODO: remove the dynamic-import fallback and inject the `LocalizationService` from the single supported translation package in v16\n private readonly translationService: Promise<PlaceholderLocalizationService | undefined> = import('@o3r/transloco')\n .then((mod) => this.injector.get(mod.LocalizationService, null) as PlaceholderLocalizationService | null)\n .catch(() => null)\n .then((service) => service ?? import('@o3r/localization')\n .then((mod) => (this.injector.get(mod.LocalizationService, null) as PlaceholderLocalizationService | null) ?? undefined)\n .catch(() => undefined));\n\n protected placeholdersActions$: Subject<{ placeholderId: string; templateUrl: string; priority: number }[]> = new Subject();\n\n /** @inheritdoc */\n public readonly supportingActions = [RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE] as const;\n\n constructor() {\n const store = inject<Store<PlaceholderTemplateStore>>(Store);\n\n const lang$ = from(this.translationService).pipe(\n switchMap((translationService) => {\n if (!translationService) {\n return of(null);\n }\n const translateService = translationService.getTranslateService();\n // `@o3r/localization` (ngx-translate) exposes `onLangChange`, while `@o3r/transloco` (transloco) exposes `langChanges$`\n const langChange$: Observable<string> = translateService.onLangChange\n ? translateService.onLangChange.pipe(map(({ lang }) => lang))\n : translateService.langChanges$!;\n return langChange$.pipe(\n startWith(translationService.getCurrentLanguage()),\n distinctUntilChanged()\n );\n })\n );\n\n const filteredActions$ = combineLatest([\n lang$,\n this.placeholdersActions$.pipe(\n distinctUntilChanged((prev, next) => JSON.stringify(prev) === JSON.stringify(next))\n )\n ]).pipe(\n withLatestFrom(\n combineLatest([store.pipe(select(selectPlaceholderTemplateEntities)), store.pipe(select(selectPlaceholderRequestEntities))])\n ),\n map(([langAndTemplatesUrls, storedPlaceholdersAndRequests]) => {\n const [lang, placeholderActions] = langAndTemplatesUrls;\n const storedPlaceholders = storedPlaceholdersAndRequests[0] || {};\n const storedPlaceholderRequests = storedPlaceholdersAndRequests[1] || {};\n const placeholderNewRequests: { rawUrl: string; resolvedUrl: string }[] = [];\n // Stores all raw Urls used from the current engine execution\n const usedUrls: Record<string, boolean> = {};\n // Get all Urls that needs to be resolved from current rules engine output\n const placeholdersTemplates = placeholderActions.reduce((acc, placeholderAction) => {\n const placeholdersTemplateUrl = {\n rawUrl: placeholderAction.templateUrl,\n priority: placeholderAction.priority\n };\n if (acc[placeholderAction.placeholderId]) {\n acc[placeholderAction.placeholderId].push(placeholdersTemplateUrl);\n } else {\n acc[placeholderAction.placeholderId] = [placeholdersTemplateUrl];\n }\n const resolvedUrl = this.resolveUrlWithLang(placeholderAction.templateUrl, lang);\n // Filters duplicates and resolved urls that are already in the store\n if (!usedUrls[placeholderAction.templateUrl] && (!storedPlaceholderRequests[placeholderAction.templateUrl]\n || storedPlaceholderRequests[placeholderAction.templateUrl]!.resolvedUrl !== resolvedUrl)) {\n placeholderNewRequests.push({\n rawUrl: placeholderAction.templateUrl,\n resolvedUrl: this.resolveUrlWithLang(placeholderAction.templateUrl, lang)\n });\n }\n usedUrls[placeholderAction.templateUrl] = true;\n return acc;\n }, {} as { [key: string]: { rawUrl: string; priority: number }[] });\n // Urls not used anymore and not already disabled\n const placeholderRequestsToDisable: string[] = [];\n // Urls used that were disabled\n const placeholderRequestsToEnable: string[] = [];\n Object.keys(storedPlaceholderRequests).forEach((storedPlaceholderRequestRawUrl) => {\n const usedFromEngineIteration = usedUrls[storedPlaceholderRequestRawUrl];\n const usedFromStore = (storedPlaceholderRequests && storedPlaceholderRequests[storedPlaceholderRequestRawUrl]) ? storedPlaceholderRequests[storedPlaceholderRequestRawUrl].used : false;\n if (!usedFromEngineIteration && usedFromStore) {\n placeholderRequestsToDisable.push(storedPlaceholderRequestRawUrl);\n } else if (usedFromEngineIteration && !usedFromStore) {\n placeholderRequestsToEnable.push(storedPlaceholderRequestRawUrl);\n }\n });\n // Placeholder that are no longer filled by the current engine execution output will be cleared\n const placeholdersTemplatesToBeCleanedUp = Object.keys(storedPlaceholders)\n .filter((placeholderId) => !placeholdersTemplates[placeholderId]);\n\n const placeholdersTemplatesToBeSet = Object.keys(placeholdersTemplates).reduce((changedPlaceholderTemplates, placeholderTemplateId) => {\n // Caching if the placeholder template already exists with the same urls\n if (!storedPlaceholders[placeholderTemplateId]\n || !(JSON.stringify(storedPlaceholders[placeholderTemplateId].urlsWithPriority) === JSON.stringify(placeholdersTemplates[placeholderTemplateId]))) {\n changedPlaceholderTemplates.push({\n id: placeholderTemplateId,\n urlsWithPriority: placeholdersTemplates[placeholderTemplateId]\n });\n }\n return changedPlaceholderTemplates;\n }, [] as { id: string; urlsWithPriority: { rawUrl: string; priority: number }[] }[]);\n return {\n placeholdersTemplatesToBeCleanedUp,\n placeholderRequestsToDisable,\n placeholderRequestsToEnable,\n placeholdersTemplatesToBeSet,\n placeholderNewRequests\n };\n })\n );\n filteredActions$.pipe(takeUntilDestroyed()).subscribe((placeholdersUpdates) => {\n placeholdersUpdates.placeholdersTemplatesToBeCleanedUp.forEach((placeholderId) =>\n store.dispatch(deletePlaceholderTemplateEntity({\n id: placeholderId\n }))\n );\n placeholdersUpdates.placeholdersTemplatesToBeSet.forEach((placeholdersTemplateToBeSet) => {\n store.dispatch(setPlaceholderTemplateEntity({ entity: placeholdersTemplateToBeSet }));\n });\n placeholdersUpdates.placeholderRequestsToDisable.forEach((placeholderRequestToDisable) => {\n store.dispatch(updatePlaceholderRequestEntity({ entity: { id: placeholderRequestToDisable, used: false } }));\n });\n placeholdersUpdates.placeholderRequestsToEnable.forEach((placeholderRequestToEnable) => {\n store.dispatch(updatePlaceholderRequestEntity({ entity: { id: placeholderRequestToEnable, used: true } }));\n });\n placeholdersUpdates.placeholderNewRequests.forEach((placeholderNewRequest) => {\n store.dispatch(setPlaceholderRequestEntityFromUrl({\n resolvedUrl: placeholderNewRequest.resolvedUrl,\n id: placeholderNewRequest.rawUrl,\n call: this.retrieveTemplate(placeholderNewRequest.resolvedUrl)\n }));\n });\n });\n }\n\n /**\n * Localize the url, replacing the language marker\n * @param url\n * @param language\n */\n protected resolveUrlWithLang(url: string, language: string | null): string {\n if (!language && url.includes('[LANGUAGE]')) {\n this.logger.warn(`Missing language when trying to resolve ${url}`);\n }\n return language ? url.replace(/\\[LANGUAGE]/g, language) : url;\n }\n\n /**\n * Retrieve template as json from a given url\n * @param url\n */\n protected async retrieveTemplate(url: string): Promise<PlaceholderRequestReply> {\n const resolvedUrl$ = this.injector.get(DynamicContentService, null, { optional: true })?.getContentPathStream(url) || of(url);\n const fullUrl = await firstValueFrom(resolvedUrl$);\n return fetch(fullUrl).then((response) => response.json());\n }\n\n /** @inheritdoc */\n public executeActions(actions: ActionUpdatePlaceholderBlock[]) {\n const templates = actions.map((action) => ({\n placeholderId: action.placeholderId,\n templateUrl: action.value,\n priority: action.priority || 0\n }));\n\n this.placeholdersActions$.next(templates);\n }\n}\n","import {\n inject,\n Injectable,\n Injector,\n} from '@angular/core';\nimport {\n Actions,\n createEffect,\n ofType,\n} from '@ngrx/effects';\nimport {\n Store,\n} from '@ngrx/store';\nimport {\n fromApiEffectSwitchMapById,\n} from '@o3r/core';\nimport {\n DynamicContentService,\n} from '@o3r/dynamic-content';\nimport {\n RulesEngineRunnerService,\n} from '@o3r/rules-engine';\nimport {\n JSONPath,\n} from 'jsonpath-plus';\nimport {\n combineLatest,\n EMPTY,\n from,\n Observable,\n of,\n} from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n switchMap,\n take,\n} from 'rxjs/operators';\nimport type {\n PlaceholderLocalizationService,\n} from './placeholder-interfaces';\nimport {\n cancelPlaceholderRequest,\n failPlaceholderRequestEntity,\n type PlaceholderRequestStore,\n type PlaceholderVariable,\n selectPlaceholderRequestEntityUsage,\n setPlaceholderRequestEntityFromUrl,\n updatePlaceholderRequestEntity,\n} from '@o3r/components';\n\n/**\n * Service to handle async PlaceholderTemplate actions\n */\n@Injectable()\nexport class PlaceholderTemplateResponseEffect {\n private readonly actions$ = inject(Actions);\n private readonly store = inject<Store<PlaceholderRequestStore>>(Store);\n private readonly rulesEngineService = inject(RulesEngineRunnerService, { optional: true });\n private readonly dynamicContentService = inject(DynamicContentService, { optional: true });\n private readonly injector = inject(Injector);\n // Prefer `@o3r/transloco`, fall back to `@o3r/localization`; both are optional peer dependencies.\n // TODO: use `injectAsync` to resolve the optional `LocalizationService` token once migrated to ng22\n // TODO: remove the dynamic-import fallback and inject the `LocalizationService` from the single supported translation package in v16\n private readonly translationService: Promise<PlaceholderLocalizationService | undefined> = import('@o3r/transloco')\n .then((mod) => this.injector.get(mod.LocalizationService, null) as PlaceholderLocalizationService | null)\n .catch(() => null)\n .then((service) => service ?? import('@o3r/localization')\n .then((mod) => (this.injector.get(mod.LocalizationService, null) as PlaceholderLocalizationService | null) ?? undefined)\n .catch(() => undefined));\n\n /**\n * Set the PlaceholderRequest entity with the reply content, dispatch failPlaceholderRequestEntity if it catches a failure\n * Handles the rendering of the HTML content from the template and creates the combine latest from facts list if needed\n * Disables unused templates refresh if used is false in the store\n */\n public setPlaceholderRequestEntityFromUrl$ = createEffect(() =>\n this.actions$.pipe(\n ofType(setPlaceholderRequestEntityFromUrl),\n fromApiEffectSwitchMapById(\n (templateResponse, action) => {\n const facts = templateResponse.vars ? Object.entries(templateResponse.vars).filter(([, variable]) => variable.type === 'fact') : [];\n const factsStreamsList = this.rulesEngineService\n ? facts.map(([varName, fact]) =>\n this.rulesEngineService!.engine.retrieveOrCreateFactStream(fact.value).pipe(\n map((factValue) => ({\n varName,\n factName: fact.value,\n // eslint-disable-next-line new-cap -- naming convention imposed by jsonpath-plus\n factValue: (fact.path && factValue) ? JSONPath({ wrap: false, json: factValue, path: fact.path }) : factValue\n })),\n distinctUntilChanged((previous, current) => previous.factValue === current.factValue)\n ))\n : [];\n\n const factsStreamsList$ = factsStreamsList.length > 0 ? combineLatest(factsStreamsList) : of([]);\n return combineLatest([factsStreamsList$, this.store.select(selectPlaceholderRequestEntityUsage(action.id)).pipe(distinctUntilChanged())]).pipe(\n switchMap(([factsUsedInTemplate, placeholderRequestUsage]) => {\n if (!placeholderRequestUsage) {\n return EMPTY;\n }\n return this.getRenderedHTML$(templateResponse.template, templateResponse.vars, factsUsedInTemplate).pipe(\n map(({ renderedTemplate, unknownTypeFound }) =>\n // Update instead of set because used already set by the update from url action\n updatePlaceholderRequestEntity({\n entity: {\n ...templateResponse,\n resolvedUrl: action.resolvedUrl,\n id: action.id,\n renderedTemplate,\n unknownTypeFound\n },\n requestId: action.requestId\n })\n )\n );\n }));\n },\n (error, action) => of(failPlaceholderRequestEntity({ ids: [action.id], error, requestId: action.requestId })),\n (requestIdPayload, action) => cancelPlaceholderRequest({ ...requestIdPayload, id: action.id })\n )\n )\n );\n\n /**\n * Renders the html template, replacing facts and urls and localizationKeys\n * @param template\n * @param vars\n * @param facts\n */\n private getRenderedHTML$(template?: string, vars?: Record<string, PlaceholderVariable>, facts?: { varName: string; factName: string; factValue: any }[]) {\n let unknownTypeFound = false;\n const factMapFromVars = (facts || []).reduce((mapping: { [key: string]: any }, fact) => {\n mapping[fact.varName] = fact.factValue;\n return mapping;\n }, {});\n const replacements$: Observable<{ ejsVar: RegExp; value: string } | null>[] = [];\n if (vars && template) {\n for (const varName in vars) {\n if (Object.prototype.hasOwnProperty.call(vars, varName)) {\n const ejsVar = new RegExp(`<%=\\\\s*${varName}\\\\s*%>`, 'g');\n switch (vars[varName].type) {\n case 'relativeUrl': {\n replacements$.push(\n this.dynamicContentService?.getMediaPathStream(vars[varName].value).pipe(\n take(1),\n map((value: string) => ({ ejsVar, value }))\n ) || of({ ejsVar, value: vars[varName].value })\n );\n break;\n }\n case 'fullUrl': {\n template = template.replace(ejsVar, vars[varName].value);\n break;\n }\n case 'fact': {\n template = template.replace(ejsVar, factMapFromVars[varName] ?? '');\n break;\n }\n case 'localisation': {\n const linkedParams = (Object.entries(vars[varName].parameters || {})).reduce((acc: { [key: string]: any }, [paramKey, paramValue]) => {\n acc[paramKey] = factMapFromVars[paramValue];\n return acc;\n }, {});\n replacements$.push(\n from(this.translationService).pipe(\n switchMap((translationService) => translationService\n ? translationService.translate(vars[varName].value, linkedParams).pipe(\n map((value) => (value ? { ejsVar, value } : null))\n )\n : of(null))\n )\n );\n break;\n }\n default : {\n unknownTypeFound = true;\n break;\n }\n }\n }\n }\n }\n return replacements$.length > 0 && !!template\n ? combineLatest(replacements$).pipe(\n map((replacements) => ({\n renderedTemplate: replacements.reduce(\n (acc, replacement) =>\n replacement ? acc.replace(replacement.ejsVar, replacement.value) : acc,\n template\n ),\n unknownTypeFound\n }))\n )\n : of({ renderedTemplate: template, unknownTypeFound });\n }\n}\n","import {\n NgModule,\n} from '@angular/core';\nimport {\n EffectsModule,\n} from '@ngrx/effects';\nimport {\n PlaceholderRulesEngineActionHandler,\n} from './placeholder-action-handler';\nimport {\n PlaceholderTemplateResponseEffect,\n} from './placeholder-rules-engine.effect';\nimport {\n PlaceholderRequestStoreModule,\n PlaceholderTemplateStoreModule,\n} from '@o3r/components';\n\n@NgModule({\n imports: [\n EffectsModule.forFeature([PlaceholderTemplateResponseEffect]),\n PlaceholderRequestStoreModule,\n PlaceholderTemplateStoreModule\n ],\n providers: [\n PlaceholderRulesEngineActionHandler\n ]\n})\nexport class PlaceholderRulesEngineActionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["map","distinctUntilChanged","switchMap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"o3r-components-rules-engine.mjs","sources":["../../src/rules-engine/placeholder-interfaces.ts","../../src/rules-engine/placeholder-action-handler.ts","../../src/rules-engine/placeholder-rules-engine.effect.ts","../../src/rules-engine/placeholder-rules-engine-module.ts","../../src/rules-engine/o3r-components-rules-engine.ts"],"sourcesContent":["import type {\n RulesEngineAction,\n} from '@o3r/core';\nimport type {\n Observable,\n} from 'rxjs';\n\n/**\n * Minimal subset of the underlying translation service (ngx-translate's `TranslateService` or\n * transloco's `TranslocoService`) exposing language-change notifications.\n * TODO: remove this abstraction and rely on the single supported translation service in v16\n */\nexport interface PlaceholderTranslateService {\n /** Language-change stream exposed by ngx-translate (`@o3r/localization`) */\n onLangChange?: Observable<{ lang: string }>;\n /** Language-change stream exposed by transloco (`@o3r/transloco`) */\n langChanges$?: Observable<string>;\n}\n\n/**\n * Minimal subset of the `LocalizationService` API (from `@o3r/localization` or `@o3r/transloco`)\n * used by the placeholder rules engine. Declared locally so that neither package is a hard dependency.\n * TODO: remove this abstraction and import `LocalizationService` directly from the single supported translation package in v16\n */\nexport interface PlaceholderLocalizationService {\n /** Translate a localization key, resolving the given interpolation parameters */\n translate(key: string, interpolateParams?: object): Observable<string>;\n /** Get the underlying translation service used by the localization service */\n getTranslateService(): PlaceholderTranslateService;\n /** Get the current active language */\n getCurrentLanguage(): string;\n}\n\n/** ActionUpdatePlaceholderBlock */\nexport const RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE = 'UPDATE_PLACEHOLDER';\n\n/**\n * Content of action that updates a placeholder\n */\nexport interface ActionUpdatePlaceholderBlock extends RulesEngineAction {\n actionType: typeof RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE;\n placeholderId: string;\n value: string;\n priority?: number;\n}\n","import {\n inject,\n Injectable,\n Injector,\n} from '@angular/core';\nimport {\n takeUntilDestroyed,\n} from '@angular/core/rxjs-interop';\nimport {\n select,\n Store,\n} from '@ngrx/store';\nimport type {\n RulesEngineActionHandler,\n} from '@o3r/core';\nimport {\n DynamicContentService,\n} from '@o3r/dynamic-content';\nimport {\n LoggerService,\n} from '@o3r/logger';\nimport {\n combineLatest,\n distinctUntilChanged,\n firstValueFrom,\n from,\n map,\n Observable,\n of,\n startWith,\n Subject,\n switchMap,\n withLatestFrom,\n} from 'rxjs';\nimport {\n ActionUpdatePlaceholderBlock,\n type PlaceholderLocalizationService,\n RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE,\n} from './placeholder-interfaces';\nimport {\n deletePlaceholderTemplateEntity,\n PlaceholderRequestReply,\n PlaceholderTemplateStore,\n selectPlaceholderRequestEntities,\n selectPlaceholderTemplateEntities,\n setPlaceholderRequestEntityFromUrl,\n setPlaceholderTemplateEntity,\n updatePlaceholderRequestEntity,\n} from '@o3r/components';\n\n/**\n * Service to handle async PlaceholderTemplate actions\n */\n@Injectable()\nexport class PlaceholderRulesEngineActionHandler implements RulesEngineActionHandler<ActionUpdatePlaceholderBlock> {\n private readonly logger = inject(LoggerService);\n private readonly injector = inject(Injector);\n // Prefer `@o3r/transloco`, fall back to `@o3r/localization`; both are optional peer dependencies.\n // TODO: use `injectAsync` to resolve the optional `LocalizationService` token once migrated to ng22\n // TODO: remove the dynamic-import fallback and inject the `LocalizationService` from the single supported translation package in v16\n private readonly translationService: Promise<PlaceholderLocalizationService | undefined> = import('@o3r/transloco')\n .then((mod) => this.injector.get(mod.LocalizationService, null) as PlaceholderLocalizationService | null)\n .catch(() => null)\n .then((service) => service ?? import('@o3r/localization')\n .then((mod) => (this.injector.get(mod.LocalizationService, null) as PlaceholderLocalizationService | null) ?? undefined)\n .catch(() => undefined));\n\n protected placeholdersActions$: Subject<{ placeholderId: string; templateUrl: string; priority: number }[]> = new Subject();\n\n /** @inheritdoc */\n public readonly supportingActions = [RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE] as const;\n\n constructor() {\n const store = inject<Store<PlaceholderTemplateStore>>(Store);\n\n const lang$ = from(this.translationService).pipe(\n switchMap((translationService) => {\n if (!translationService) {\n return of(null);\n }\n const translateService = translationService.getTranslateService();\n // `@o3r/localization` (ngx-translate) exposes `onLangChange`, while `@o3r/transloco` (transloco) exposes `langChanges$`\n const langChange$: Observable<string> = translateService.onLangChange\n ? translateService.onLangChange.pipe(map(({ lang }) => lang))\n : translateService.langChanges$!;\n return langChange$.pipe(\n startWith(translationService.getCurrentLanguage()),\n distinctUntilChanged()\n );\n })\n );\n\n const filteredActions$ = combineLatest([\n lang$,\n this.placeholdersActions$.pipe(\n distinctUntilChanged((prev, next) => JSON.stringify(prev) === JSON.stringify(next))\n )\n ]).pipe(\n withLatestFrom(\n combineLatest([store.pipe(select(selectPlaceholderTemplateEntities)), store.pipe(select(selectPlaceholderRequestEntities))])\n ),\n map(([langAndTemplatesUrls, storedPlaceholdersAndRequests]) => {\n const [lang, placeholderActions] = langAndTemplatesUrls;\n const storedPlaceholders = storedPlaceholdersAndRequests[0] || {};\n const storedPlaceholderRequests = storedPlaceholdersAndRequests[1] || {};\n const placeholderNewRequests: { rawUrl: string; resolvedUrl: string }[] = [];\n // Stores all raw Urls used from the current engine execution\n const usedUrls: Record<string, boolean> = {};\n // Get all Urls that needs to be resolved from current rules engine output\n const placeholdersTemplates = placeholderActions.reduce((acc, placeholderAction) => {\n const placeholdersTemplateUrl = {\n rawUrl: placeholderAction.templateUrl,\n priority: placeholderAction.priority\n };\n if (acc[placeholderAction.placeholderId]) {\n acc[placeholderAction.placeholderId].push(placeholdersTemplateUrl);\n } else {\n acc[placeholderAction.placeholderId] = [placeholdersTemplateUrl];\n }\n const resolvedUrl = this.resolveUrlWithLang(placeholderAction.templateUrl, lang);\n // Filters duplicates and resolved urls that are already in the store\n if (!usedUrls[placeholderAction.templateUrl] && (!storedPlaceholderRequests[placeholderAction.templateUrl]\n || storedPlaceholderRequests[placeholderAction.templateUrl]!.resolvedUrl !== resolvedUrl)) {\n placeholderNewRequests.push({\n rawUrl: placeholderAction.templateUrl,\n resolvedUrl: this.resolveUrlWithLang(placeholderAction.templateUrl, lang)\n });\n }\n usedUrls[placeholderAction.templateUrl] = true;\n return acc;\n }, {} as { [key: string]: { rawUrl: string; priority: number }[] });\n // Urls not used anymore and not already disabled\n const placeholderRequestsToDisable: string[] = [];\n // Urls used that were disabled\n const placeholderRequestsToEnable: string[] = [];\n Object.keys(storedPlaceholderRequests).forEach((storedPlaceholderRequestRawUrl) => {\n const usedFromEngineIteration = usedUrls[storedPlaceholderRequestRawUrl];\n const usedFromStore = (storedPlaceholderRequests && storedPlaceholderRequests[storedPlaceholderRequestRawUrl]) ? storedPlaceholderRequests[storedPlaceholderRequestRawUrl].used : false;\n if (!usedFromEngineIteration && usedFromStore) {\n placeholderRequestsToDisable.push(storedPlaceholderRequestRawUrl);\n } else if (usedFromEngineIteration && !usedFromStore) {\n placeholderRequestsToEnable.push(storedPlaceholderRequestRawUrl);\n }\n });\n // Placeholder that are no longer filled by the current engine execution output will be cleared\n const placeholdersTemplatesToBeCleanedUp = Object.keys(storedPlaceholders)\n .filter((placeholderId) => !placeholdersTemplates[placeholderId]);\n\n const placeholdersTemplatesToBeSet = Object.keys(placeholdersTemplates).reduce((changedPlaceholderTemplates, placeholderTemplateId) => {\n // Caching if the placeholder template already exists with the same urls\n if (!storedPlaceholders[placeholderTemplateId]\n || !(JSON.stringify(storedPlaceholders[placeholderTemplateId].urlsWithPriority) === JSON.stringify(placeholdersTemplates[placeholderTemplateId]))) {\n changedPlaceholderTemplates.push({\n id: placeholderTemplateId,\n urlsWithPriority: placeholdersTemplates[placeholderTemplateId]\n });\n }\n return changedPlaceholderTemplates;\n }, [] as { id: string; urlsWithPriority: { rawUrl: string; priority: number }[] }[]);\n return {\n placeholdersTemplatesToBeCleanedUp,\n placeholderRequestsToDisable,\n placeholderRequestsToEnable,\n placeholdersTemplatesToBeSet,\n placeholderNewRequests\n };\n })\n );\n filteredActions$.pipe(takeUntilDestroyed()).subscribe((placeholdersUpdates) => {\n placeholdersUpdates.placeholdersTemplatesToBeCleanedUp.forEach((placeholderId) =>\n store.dispatch(deletePlaceholderTemplateEntity({\n id: placeholderId\n }))\n );\n placeholdersUpdates.placeholdersTemplatesToBeSet.forEach((placeholdersTemplateToBeSet) => {\n store.dispatch(setPlaceholderTemplateEntity({ entity: placeholdersTemplateToBeSet }));\n });\n placeholdersUpdates.placeholderRequestsToDisable.forEach((placeholderRequestToDisable) => {\n store.dispatch(updatePlaceholderRequestEntity({ entity: { id: placeholderRequestToDisable, used: false } }));\n });\n placeholdersUpdates.placeholderRequestsToEnable.forEach((placeholderRequestToEnable) => {\n store.dispatch(updatePlaceholderRequestEntity({ entity: { id: placeholderRequestToEnable, used: true } }));\n });\n placeholdersUpdates.placeholderNewRequests.forEach((placeholderNewRequest) => {\n store.dispatch(setPlaceholderRequestEntityFromUrl({\n resolvedUrl: placeholderNewRequest.resolvedUrl,\n id: placeholderNewRequest.rawUrl,\n call: this.retrieveTemplate(placeholderNewRequest.resolvedUrl)\n }));\n });\n });\n }\n\n /**\n * Localize the url, replacing the language marker\n * @param url\n * @param language\n */\n protected resolveUrlWithLang(url: string, language: string | null): string {\n if (!language && url.includes('[LANGUAGE]')) {\n this.logger.warn(`Missing language when trying to resolve ${url}`);\n }\n return language ? url.replace(/\\[LANGUAGE]/g, language) : url;\n }\n\n /**\n * Retrieve template as json from a given url\n * @param url\n */\n protected async retrieveTemplate(url: string): Promise<PlaceholderRequestReply> {\n const resolvedUrl$ = this.injector.get(DynamicContentService, null, { optional: true })?.getContentPathStream(url) || of(url);\n const fullUrl = await firstValueFrom(resolvedUrl$);\n return fetch(fullUrl).then((response) => response.json());\n }\n\n /** @inheritdoc */\n public executeActions(actions: ActionUpdatePlaceholderBlock[]) {\n const templates = actions.map((action) => ({\n placeholderId: action.placeholderId,\n templateUrl: action.value,\n priority: action.priority || 0\n }));\n\n this.placeholdersActions$.next(templates);\n }\n}\n","import {\n inject,\n Injectable,\n Injector,\n} from '@angular/core';\nimport {\n Actions,\n createEffect,\n ofType,\n} from '@ngrx/effects';\nimport {\n Store,\n} from '@ngrx/store';\nimport {\n fromApiEffectSwitchMapById,\n} from '@o3r/core';\nimport {\n DynamicContentService,\n} from '@o3r/dynamic-content';\nimport {\n RulesEngineRunnerService,\n} from '@o3r/rules-engine';\nimport {\n JSONPath,\n} from 'jsonpath-plus';\nimport {\n combineLatest,\n EMPTY,\n from,\n Observable,\n of,\n} from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n switchMap,\n take,\n} from 'rxjs/operators';\nimport type {\n PlaceholderLocalizationService,\n} from './placeholder-interfaces';\nimport {\n cancelPlaceholderRequest,\n failPlaceholderRequestEntity,\n type PlaceholderRequestStore,\n type PlaceholderVariable,\n selectPlaceholderRequestEntityUsage,\n setPlaceholderRequestEntityFromUrl,\n updatePlaceholderRequestEntity,\n} from '@o3r/components';\n\n/**\n * Service to handle async PlaceholderTemplate actions\n */\n@Injectable()\nexport class PlaceholderTemplateResponseEffect {\n private readonly actions$ = inject(Actions);\n private readonly store = inject<Store<PlaceholderRequestStore>>(Store);\n private readonly rulesEngineService = inject(RulesEngineRunnerService, { optional: true });\n private readonly dynamicContentService = inject(DynamicContentService, { optional: true });\n private readonly injector = inject(Injector);\n // Prefer `@o3r/transloco`, fall back to `@o3r/localization`; both are optional peer dependencies.\n // TODO: use `injectAsync` to resolve the optional `LocalizationService` token once migrated to ng22\n // TODO: remove the dynamic-import fallback and inject the `LocalizationService` from the single supported translation package in v16\n private readonly translationService: Promise<PlaceholderLocalizationService | undefined> = import('@o3r/transloco')\n .then((mod) => this.injector.get(mod.LocalizationService, null) as PlaceholderLocalizationService | null)\n .catch(() => null)\n .then((service) => service ?? import('@o3r/localization')\n .then((mod) => (this.injector.get(mod.LocalizationService, null) as PlaceholderLocalizationService | null) ?? undefined)\n .catch(() => undefined));\n\n /**\n * Set the PlaceholderRequest entity with the reply content, dispatch failPlaceholderRequestEntity if it catches a failure\n * Handles the rendering of the HTML content from the template and creates the combine latest from facts list if needed\n * Disables unused templates refresh if used is false in the store\n */\n public setPlaceholderRequestEntityFromUrl$ = createEffect(() =>\n this.actions$.pipe(\n ofType(setPlaceholderRequestEntityFromUrl),\n fromApiEffectSwitchMapById(\n (templateResponse, action) => {\n const facts = templateResponse.vars ? Object.entries(templateResponse.vars).filter(([, variable]) => variable.type === 'fact') : [];\n const factsStreamsList = this.rulesEngineService\n ? facts.map(([varName, fact]) =>\n this.rulesEngineService!.engine.retrieveOrCreateFactStream(fact.value).pipe(\n map((factValue) => ({\n varName,\n factName: fact.value,\n // eslint-disable-next-line new-cap -- naming convention imposed by jsonpath-plus\n factValue: (fact.path && factValue) ? JSONPath({ wrap: false, json: factValue, path: fact.path }) : factValue\n })),\n distinctUntilChanged((previous, current) => previous.factValue === current.factValue)\n ))\n : [];\n\n const factsStreamsList$ = factsStreamsList.length > 0 ? combineLatest(factsStreamsList) : of([]);\n return combineLatest([factsStreamsList$, this.store.select(selectPlaceholderRequestEntityUsage(action.id)).pipe(distinctUntilChanged())]).pipe(\n switchMap(([factsUsedInTemplate, placeholderRequestUsage]) => {\n if (!placeholderRequestUsage) {\n return EMPTY;\n }\n return this.getRenderedHTML$(templateResponse.template, templateResponse.vars, factsUsedInTemplate).pipe(\n map(({ renderedTemplate, unknownTypeFound }) =>\n // Update instead of set because used already set by the update from url action\n updatePlaceholderRequestEntity({\n entity: {\n ...templateResponse,\n resolvedUrl: action.resolvedUrl,\n id: action.id,\n renderedTemplate,\n unknownTypeFound\n },\n requestId: action.requestId\n })\n )\n );\n }));\n },\n (error, action) => of(failPlaceholderRequestEntity({ ids: [action.id], error, requestId: action.requestId })),\n (requestIdPayload, action) => cancelPlaceholderRequest({ ...requestIdPayload, id: action.id })\n )\n )\n );\n\n /**\n * Renders the html template, replacing facts and urls and localizationKeys\n * @param template\n * @param vars\n * @param facts\n */\n private getRenderedHTML$(template?: string, vars?: Record<string, PlaceholderVariable>, facts?: { varName: string; factName: string; factValue: any }[]) {\n let unknownTypeFound = false;\n const factMapFromVars = (facts || []).reduce((mapping: { [key: string]: any }, fact) => {\n mapping[fact.varName] = fact.factValue;\n return mapping;\n }, {});\n const replacements$: Observable<{ ejsVar: RegExp; value: string } | null>[] = [];\n if (vars && template) {\n for (const varName in vars) {\n if (Object.prototype.hasOwnProperty.call(vars, varName)) {\n const ejsVar = new RegExp(`<%=\\\\s*${varName}\\\\s*%>`, 'g');\n switch (vars[varName].type) {\n case 'relativeUrl': {\n replacements$.push(\n this.dynamicContentService?.getMediaPathStream(vars[varName].value).pipe(\n take(1),\n map((value: string) => ({ ejsVar, value }))\n ) || of({ ejsVar, value: vars[varName].value })\n );\n break;\n }\n case 'fullUrl': {\n template = template.replace(ejsVar, vars[varName].value);\n break;\n }\n case 'fact': {\n template = template.replace(ejsVar, factMapFromVars[varName] ?? '');\n break;\n }\n case 'localisation': {\n const linkedParams = (Object.entries(vars[varName].parameters || {})).reduce((acc: { [key: string]: any }, [paramKey, paramValue]) => {\n acc[paramKey] = factMapFromVars[paramValue];\n return acc;\n }, {});\n replacements$.push(\n from(this.translationService).pipe(\n switchMap((translationService) => translationService\n ? translationService.translate(vars[varName].value, linkedParams).pipe(\n map((value) => (value ? { ejsVar, value } : null))\n )\n : of(null))\n )\n );\n break;\n }\n default : {\n unknownTypeFound = true;\n break;\n }\n }\n }\n }\n }\n return replacements$.length > 0 && !!template\n ? combineLatest(replacements$).pipe(\n map((replacements) => ({\n renderedTemplate: replacements.reduce(\n (acc, replacement) =>\n replacement ? acc.replace(replacement.ejsVar, replacement.value) : acc,\n template\n ),\n unknownTypeFound\n }))\n )\n : of({ renderedTemplate: template, unknownTypeFound });\n }\n}\n","import {\n EnvironmentProviders,\n makeEnvironmentProviders,\n NgModule,\n} from '@angular/core';\nimport {\n EffectsModule,\n provideEffects,\n} from '@ngrx/effects';\nimport {\n PlaceholderRulesEngineActionHandler,\n} from './placeholder-action-handler';\nimport {\n PlaceholderTemplateResponseEffect,\n} from './placeholder-rules-engine.effect';\nimport {\n PlaceholderRequestStoreModule,\n PlaceholderTemplateStoreModule,\n providePlaceholderRequestStore,\n providePlaceholderTemplateStore,\n} from '@o3r/components';\n\n/**\n * @deprecated Will be removed in v16. Use {@link providePlaceholderRulesEngineAction} instead.\n */\n@NgModule({\n imports: [\n EffectsModule.forFeature([PlaceholderTemplateResponseEffect]),\n PlaceholderRequestStoreModule,\n PlaceholderTemplateStoreModule\n ],\n providers: [\n PlaceholderRulesEngineActionHandler\n ]\n})\nexport class PlaceholderRulesEngineActionModule {}\n\n/**\n * Provide placeholder rules engine action handler.\n */\nexport function providePlaceholderRulesEngineAction(): EnvironmentProviders {\n return makeEnvironmentProviders([\n providePlaceholderRequestStore(),\n providePlaceholderTemplateStore(),\n provideEffects(PlaceholderTemplateResponseEffect),\n PlaceholderRulesEngineActionHandler\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["map","distinctUntilChanged","switchMap"],"mappings":"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"}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { of, from, observeOn, animationFrameScheduler, BehaviorSubject, firstValueFrom, fromEvent, Subject, ReplaySubject, sample } from 'rxjs';
|
|
2
2
|
import { mergeMap, bufferCount, concatMap, delay, scan, tap, filter, distinctUntilChanged, map, mapTo, switchMap } from 'rxjs/operators';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { InjectionToken, NgModule, inject, DestroyRef, Injectable, ViewContainerRef, KeyValueDiffers, Injector, SimpleChange, forwardRef, Input, Directive,
|
|
4
|
+
import { InjectionToken, NgModule, makeEnvironmentProviders, inject, DestroyRef, Injectable, ViewContainerRef, KeyValueDiffers, Injector, SimpleChange, forwardRef, Input, Directive, Pipe, ChangeDetectorRef, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
5
5
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
6
|
import * as i1 from '@ngrx/store';
|
|
7
|
-
import { createAction, props, on, createReducer, StoreModule, createFeatureSelector, createSelector, Store } from '@ngrx/store';
|
|
7
|
+
import { createAction, props, on, createReducer, StoreModule, provideState, createFeatureSelector, createSelector, Store } from '@ngrx/store';
|
|
8
8
|
import { asyncProps, createEntityAsyncRequestAdapter, asyncStoreItemAdapter, asyncEntitySerializer, otterComponentInfoPropertyName, sendOtterMessage, filterMessageContent } from '@o3r/core';
|
|
9
9
|
import { LoggerService } from '@o3r/logger';
|
|
10
10
|
import { createEntityAdapter } from '@ngrx/entity';
|
|
11
|
-
import
|
|
12
|
-
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
11
|
+
import { DOCUMENT, NgTemplateOutlet, AsyncPipe, CommonModule } from '@angular/common';
|
|
13
12
|
import { NgControl, NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';
|
|
14
13
|
|
|
15
14
|
/**
|
|
@@ -150,6 +149,9 @@ const PLACEHOLDER_REQUEST_REDUCER_TOKEN = new InjectionToken('Feature Placeholde
|
|
|
150
149
|
function getDefaultplaceholderRequestReducer() {
|
|
151
150
|
return placeholderRequestReducer;
|
|
152
151
|
}
|
|
152
|
+
/**
|
|
153
|
+
* @deprecated Will be removed in v16. Use {@link providePlaceholderRequestStore} instead.
|
|
154
|
+
*/
|
|
153
155
|
class PlaceholderRequestStoreModule {
|
|
154
156
|
static forRoot(reducerFactory) {
|
|
155
157
|
return {
|
|
@@ -176,6 +178,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
|
|
|
176
178
|
]
|
|
177
179
|
}]
|
|
178
180
|
}] });
|
|
181
|
+
/**
|
|
182
|
+
* Provide PlaceholderRequest feature store.
|
|
183
|
+
* @param reducerFactory Optional factory to override the default reducer.
|
|
184
|
+
*/
|
|
185
|
+
function providePlaceholderRequestStore(reducerFactory) {
|
|
186
|
+
return makeEnvironmentProviders([
|
|
187
|
+
provideState(PLACEHOLDER_REQUEST_STORE_NAME, reducerFactory ? reducerFactory() : placeholderRequestReducer)
|
|
188
|
+
]);
|
|
189
|
+
}
|
|
179
190
|
|
|
180
191
|
const selectPlaceholderRequestState = createFeatureSelector(PLACEHOLDER_REQUEST_STORE_NAME);
|
|
181
192
|
const { selectEntities: selectEntities$1 } = placeholderRequestAdapter.getSelectors();
|
|
@@ -261,6 +272,9 @@ const PLACEHOLDER_TEMPLATE_REDUCER_TOKEN = new InjectionToken('Feature Placehold
|
|
|
261
272
|
function getDefaultPlaceholderTemplateReducer() {
|
|
262
273
|
return placeholderTemplateReducer;
|
|
263
274
|
}
|
|
275
|
+
/**
|
|
276
|
+
* @deprecated Will be removed in v16. Use {@link providePlaceholderTemplateStore} instead.
|
|
277
|
+
*/
|
|
264
278
|
class PlaceholderTemplateStoreModule {
|
|
265
279
|
static forRoot(reducerFactory) {
|
|
266
280
|
return {
|
|
@@ -287,6 +301,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
|
|
|
287
301
|
]
|
|
288
302
|
}]
|
|
289
303
|
}] });
|
|
304
|
+
/**
|
|
305
|
+
* Provide PlaceholderTemplate feature store.
|
|
306
|
+
* @param reducerFactory Optional factory to override the default reducer.
|
|
307
|
+
*/
|
|
308
|
+
function providePlaceholderTemplateStore(reducerFactory) {
|
|
309
|
+
return makeEnvironmentProviders([
|
|
310
|
+
provideState(PLACEHOLDER_TEMPLATE_STORE_NAME, reducerFactory ? reducerFactory() : placeholderTemplateReducer)
|
|
311
|
+
]);
|
|
312
|
+
}
|
|
290
313
|
|
|
291
314
|
const { selectEntities } = placeholderTemplateAdapter.getSelectors();
|
|
292
315
|
const selectPlaceholderTemplateState = createFeatureSelector(PLACEHOLDER_TEMPLATE_STORE_NAME);
|
|
@@ -1124,6 +1147,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
|
|
|
1124
1147
|
}]
|
|
1125
1148
|
}], ctorParameters: () => [] });
|
|
1126
1149
|
|
|
1150
|
+
/**
|
|
1151
|
+
* @deprecated Will be removed in v16. Use {@link provideComponentsDevtools} instead.
|
|
1152
|
+
*/
|
|
1127
1153
|
class ComponentsDevtoolsModule {
|
|
1128
1154
|
/**
|
|
1129
1155
|
* Initialize Otter Devtools
|
|
@@ -1160,6 +1186,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
|
|
|
1160
1186
|
]
|
|
1161
1187
|
}]
|
|
1162
1188
|
}] });
|
|
1189
|
+
/**
|
|
1190
|
+
* Provide components devtools functionality.
|
|
1191
|
+
* @param options Components devtools options
|
|
1192
|
+
*/
|
|
1193
|
+
function provideComponentsDevtools(options) {
|
|
1194
|
+
return makeEnvironmentProviders([
|
|
1195
|
+
providePlaceholderTemplateStore(),
|
|
1196
|
+
{ provide: OTTER_COMPONENTS_DEVTOOLS_OPTIONS, useValue: { ...OTTER_COMPONENTS_DEVTOOLS_DEFAULT_OPTIONS, ...options } },
|
|
1197
|
+
ComponentsDevtoolsMessageService
|
|
1198
|
+
]);
|
|
1199
|
+
}
|
|
1163
1200
|
|
|
1164
1201
|
class C11nDirective {
|
|
1165
1202
|
constructor() {
|
|
@@ -1392,6 +1429,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
|
|
|
1392
1429
|
}] });
|
|
1393
1430
|
/**
|
|
1394
1431
|
* The purpose of this module is to be imported in the unit tests of the components which are using c11n directive
|
|
1432
|
+
* @deprecated Will be removed in v16. Use {@link provideC11nMock} and import `MockC11nDirective` directly instead.
|
|
1395
1433
|
*/
|
|
1396
1434
|
class C11nMockModule {
|
|
1397
1435
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: C11nMockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
@@ -1406,6 +1444,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
|
|
|
1406
1444
|
providers: [{ provide: C11nService, useClass: C11nMockService }]
|
|
1407
1445
|
}]
|
|
1408
1446
|
}] });
|
|
1447
|
+
/**
|
|
1448
|
+
* Provide C11n mock service for testing.
|
|
1449
|
+
*/
|
|
1450
|
+
function provideC11nMock() {
|
|
1451
|
+
return [
|
|
1452
|
+
{ provide: C11nService, useClass: C11nMockService }
|
|
1453
|
+
];
|
|
1454
|
+
}
|
|
1409
1455
|
|
|
1410
1456
|
/**
|
|
1411
1457
|
* Customization service factory
|
|
@@ -1644,23 +1690,30 @@ class PlaceholderComponent {
|
|
|
1644
1690
|
this.afterViewInit$.complete();
|
|
1645
1691
|
}
|
|
1646
1692
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PlaceholderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1647
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: PlaceholderComponent, isStandalone:
|
|
1693
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: PlaceholderComponent, isStandalone: true, selector: "o3r-placeholder", inputs: { id: "id" }, host: { properties: { "class.debug": "mode() === 'debug'" } }, ngImport: i0, template: "<ng-template #projection>\n <ng-content />\n</ng-template>\n@switch (mode()) {\n @case ('debug') {\n <span class=\"placehoder-id\">{{ id$ | async }}</span>\n }\n @case ('pending') {\n <ng-container *ngTemplateOutlet=\"projection\" />\n }\n @case ('normal') {\n @if (isPending) {\n <ng-container *ngTemplateOutlet=\"projection\" />\n } @else {\n <div [innerHTML]=\"template\"></div>\n }\n }\n}\n", styles: [".debug{padding:15px;text-align:center;border:2px dashed var(--o3r-placeholder-debug-color, #a65c27);border-radius:10px;width:100%;background:var(--o3r-placeholder-background, #fff2ea);border-style:dashed;color:var(--o3r-placeholder-debug-color, #a65c27);font-size:larger}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1648
1694
|
}
|
|
1649
1695
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PlaceholderComponent, decorators: [{
|
|
1650
1696
|
type: Component,
|
|
1651
|
-
args: [{ selector: 'o3r-placeholder', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None,
|
|
1697
|
+
args: [{ selector: 'o3r-placeholder', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
1698
|
+
AsyncPipe,
|
|
1699
|
+
NgTemplateOutlet
|
|
1700
|
+
], host: {
|
|
1652
1701
|
'[class.debug]': `mode() === 'debug'`
|
|
1653
|
-
},
|
|
1702
|
+
}, template: "<ng-template #projection>\n <ng-content />\n</ng-template>\n@switch (mode()) {\n @case ('debug') {\n <span class=\"placehoder-id\">{{ id$ | async }}</span>\n }\n @case ('pending') {\n <ng-container *ngTemplateOutlet=\"projection\" />\n }\n @case ('normal') {\n @if (isPending) {\n <ng-container *ngTemplateOutlet=\"projection\" />\n } @else {\n <div [innerHTML]=\"template\"></div>\n }\n }\n}\n", styles: [".debug{padding:15px;text-align:center;border:2px dashed var(--o3r-placeholder-debug-color, #a65c27);border-radius:10px;width:100%;background:var(--o3r-placeholder-background, #fff2ea);border-style:dashed;color:var(--o3r-placeholder-debug-color, #a65c27);font-size:larger}\n"] }]
|
|
1654
1703
|
}], ctorParameters: () => [], propDecorators: { id: [{
|
|
1655
1704
|
type: Input
|
|
1656
1705
|
}] } });
|
|
1657
1706
|
|
|
1707
|
+
/**
|
|
1708
|
+
* @deprecated Will be removed in v16. Use {@link providePlaceholder} and import `PlaceholderComponent` directly instead.
|
|
1709
|
+
*/
|
|
1658
1710
|
class PlaceholderModule {
|
|
1659
1711
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PlaceholderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1660
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.17", ngImport: i0, type: PlaceholderModule,
|
|
1712
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.17", ngImport: i0, type: PlaceholderModule, imports: [CommonModule,
|
|
1661
1713
|
StoreModule,
|
|
1662
1714
|
PlaceholderTemplateStoreModule,
|
|
1663
|
-
PlaceholderRequestStoreModule
|
|
1715
|
+
PlaceholderRequestStoreModule,
|
|
1716
|
+
PlaceholderComponent] }); }
|
|
1664
1717
|
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PlaceholderModule, imports: [CommonModule,
|
|
1665
1718
|
StoreModule,
|
|
1666
1719
|
PlaceholderTemplateStoreModule,
|
|
@@ -1673,16 +1726,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
|
|
|
1673
1726
|
CommonModule,
|
|
1674
1727
|
StoreModule,
|
|
1675
1728
|
PlaceholderTemplateStoreModule,
|
|
1676
|
-
PlaceholderRequestStoreModule
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
exports: [PlaceholderComponent]
|
|
1729
|
+
PlaceholderRequestStoreModule,
|
|
1730
|
+
PlaceholderComponent
|
|
1731
|
+
]
|
|
1680
1732
|
}]
|
|
1681
1733
|
}] });
|
|
1734
|
+
/**
|
|
1735
|
+
* Provide placeholder stores required by `PlaceholderComponent`.
|
|
1736
|
+
*/
|
|
1737
|
+
function providePlaceholder() {
|
|
1738
|
+
return makeEnvironmentProviders([
|
|
1739
|
+
providePlaceholderTemplateStore(),
|
|
1740
|
+
providePlaceholderRequestStore()
|
|
1741
|
+
]);
|
|
1742
|
+
}
|
|
1682
1743
|
|
|
1683
1744
|
/**
|
|
1684
1745
|
* Generated bundle index. Do not edit.
|
|
1685
1746
|
*/
|
|
1686
1747
|
|
|
1687
|
-
export { C11N_PRESENTERS_MAP_TOKEN, C11N_REGISTER_FUNC_TOKEN, C11nDirective, C11nMockModule, C11nMockService, C11nService, ComponentsDevtoolsMessageService, ComponentsDevtoolsModule, INSPECTOR_CLASS, MockC11nDirective, O3rCapitalizePipe, O3rDurationPipe, O3rKeepWhiteSpacePipe, O3rReplaceWithBoldPipe, OTTER_COMPONENTS_DEVTOOLS_DEFAULT_OPTIONS, OTTER_COMPONENTS_DEVTOOLS_OPTIONS, OtterInspectorService, PLACEHOLDER_REQUEST_REDUCER_TOKEN, PLACEHOLDER_REQUEST_STORE_NAME, PLACEHOLDER_TEMPLATE_REDUCER_TOKEN, PLACEHOLDER_TEMPLATE_STORE_NAME, PlaceholderComponent, PlaceholderModule, PlaceholderRequestStoreModule, PlaceholderTemplateStoreModule, cancelPlaceholderRequest, createC11nService, deletePlaceholderTemplateEntity, failPlaceholderRequestEntity, getAnalyticEvents, getAnalyticEventsRec, getConfigId, getDefaultPlaceholderTemplateReducer, getDefaultplaceholderRequestReducer, getOtterLikeComponentInfo, getTranslations, getTranslationsRec, isComponentsMessage, isContainer, lazyArray, placeholderRequestAdapter, placeholderRequestInitialState, placeholderRequestReducer, placeholderRequestReducerFeatures, placeholderRequestStorageDeserializer, placeholderRequestStorageSerializer, placeholderRequestStorageSync, placeholderTemplateAdapter, placeholderTemplateInitialState, placeholderTemplateReducer, placeholderTemplateReducerFeatures, placeholderTemplateStorageDeserializer, placeholderTemplateStorageSync, provideCustomComponents, registerCustomComponent, selectPlaceholderRequestEntities, selectPlaceholderRequestEntityUsage, selectPlaceholderRequestState, selectPlaceholderTemplateEntities, selectPlaceholderTemplateEntity, selectPlaceholderTemplateMode, selectPlaceholderTemplateState, selectSortedTemplates, setPlaceholderRequestEntityFromUrl, setPlaceholderTemplateEntity, togglePlaceholderModeTemplate, updatePlaceholderRequestEntity, updatePlaceholderRequestEntitySync, withComponent };
|
|
1748
|
+
export { C11N_PRESENTERS_MAP_TOKEN, C11N_REGISTER_FUNC_TOKEN, C11nDirective, C11nMockModule, C11nMockService, C11nService, ComponentsDevtoolsMessageService, ComponentsDevtoolsModule, INSPECTOR_CLASS, MockC11nDirective, O3rCapitalizePipe, O3rDurationPipe, O3rKeepWhiteSpacePipe, O3rReplaceWithBoldPipe, OTTER_COMPONENTS_DEVTOOLS_DEFAULT_OPTIONS, OTTER_COMPONENTS_DEVTOOLS_OPTIONS, OtterInspectorService, PLACEHOLDER_REQUEST_REDUCER_TOKEN, PLACEHOLDER_REQUEST_STORE_NAME, PLACEHOLDER_TEMPLATE_REDUCER_TOKEN, PLACEHOLDER_TEMPLATE_STORE_NAME, PlaceholderComponent, PlaceholderModule, PlaceholderRequestStoreModule, PlaceholderTemplateStoreModule, cancelPlaceholderRequest, createC11nService, deletePlaceholderTemplateEntity, failPlaceholderRequestEntity, getAnalyticEvents, getAnalyticEventsRec, getConfigId, getDefaultPlaceholderTemplateReducer, getDefaultplaceholderRequestReducer, getOtterLikeComponentInfo, getTranslations, getTranslationsRec, isComponentsMessage, isContainer, lazyArray, placeholderRequestAdapter, placeholderRequestInitialState, placeholderRequestReducer, placeholderRequestReducerFeatures, placeholderRequestStorageDeserializer, placeholderRequestStorageSerializer, placeholderRequestStorageSync, placeholderTemplateAdapter, placeholderTemplateInitialState, placeholderTemplateReducer, placeholderTemplateReducerFeatures, placeholderTemplateStorageDeserializer, placeholderTemplateStorageSync, provideC11nMock, provideComponentsDevtools, provideCustomComponents, providePlaceholder, providePlaceholderRequestStore, providePlaceholderTemplateStore, registerCustomComponent, selectPlaceholderRequestEntities, selectPlaceholderRequestEntityUsage, selectPlaceholderRequestState, selectPlaceholderTemplateEntities, selectPlaceholderTemplateEntity, selectPlaceholderTemplateMode, selectPlaceholderTemplateState, selectSortedTemplates, setPlaceholderRequestEntityFromUrl, setPlaceholderTemplateEntity, togglePlaceholderModeTemplate, updatePlaceholderRequestEntity, updatePlaceholderRequestEntitySync, withComponent };
|
|
1688
1749
|
//# sourceMappingURL=o3r-components.mjs.map
|