{"version":3,"file":"o3r-components.mjs","sources":["../../src/core/rendering/helpers.ts","../../src/devkit/components-devkit.interface.ts","../../src/stores/placeholder-request/placeholder-request.actions.ts","../../src/stores/placeholder-request/placeholder-request.reducer.ts","../../src/stores/placeholder-request/placeholder-request.state.ts","../../src/stores/placeholder-request/placeholder-request.module.ts","../../src/stores/placeholder-request/placeholder-request.selectors.ts","../../src/stores/placeholder-request/placeholder-request.sync.ts","../../src/stores/placeholder-template/placeholder-template.actions.ts","../../src/stores/placeholder-template/placeholder-template.reducer.ts","../../src/stores/placeholder-template/placeholder-template.state.ts","../../src/stores/placeholder-template/placeholder-template.module.ts","../../src/stores/placeholder-template/placeholder-template.selectors.ts","../../src/stores/placeholder-template/placeholder-template.sync.ts","../../src/devkit/components-devtools.token.ts","../../src/devkit/inspector/otter-inspector.helpers.ts","../../src/devkit/inspector/otter-inspector.service.ts","../../src/devkit/components-devtools.message.service.ts","../../src/devkit/components-devtools.module.ts","../../src/tools/component-replacement/c11n.directive.ts","../../src/tools/component-replacement/c11n.helpers.ts","../../src/tools/component-replacement/c11n.token.ts","../../src/tools/component-replacement/c11n.service.ts","../../src/tools/component-replacement/c11n.mock.module.ts","../../src/tools/component-replacement/c11n.module.ts","../../src/tools/pipes/capitalize/capitalize.pipe.ts","../../src/tools/pipes/duration/duration.model.ts","../../src/tools/pipes/duration/duration.pipe.ts","../../src/tools/pipes/keep-white-space/keep-white-space.pipe.ts","../../src/tools/pipes/replace-with-bold/replace-with-bold.pipe.ts","../../src/tools/placeholder/placeholder.component.ts","../../src/tools/placeholder/placeholder.template.html","../../src/tools/placeholder/placeholder.module.ts","../../src/o3r-components.ts"],"sourcesContent":["import {\n  animationFrameScheduler,\n  from,\n  Observable,\n  observeOn,\n  of,\n} from 'rxjs';\nimport {\n  bufferCount,\n  concatMap,\n  delay,\n  mergeMap,\n  scan,\n  tap,\n} from 'rxjs/operators';\n\n/**\n * Buffers and emits data for lazy/progressive rendering of big lists\n * That could solve issues with long-running tasks when trying to render an array\n * of similar components.\n * @param delayMs Delay between data emits\n * @param concurrency Amount of elements that should be emitted at once\n */\nexport function lazyArray<T>(delayMs = 0, concurrency = 2) {\n  let isFirstEmission = true;\n  return (source$: Observable<T[]>) => {\n    return source$.pipe(\n      mergeMap((items) => {\n        if (!isFirstEmission) {\n          return of(items);\n        }\n\n        const items$ = from(items);\n\n        return items$.pipe(\n          bufferCount(concurrency),\n          concatMap((value, index) => {\n            return of(value).pipe(\n              observeOn(animationFrameScheduler),\n              delay(index * delayMs)\n            );\n          }),\n          scan((acc: T[], steps: T[]) => {\n            return [...acc, ...steps];\n          }, []),\n          tap((scannedItems: T[]) => {\n            const scanDidComplete = scannedItems.length === items.length;\n\n            if (scanDidComplete) {\n              isFirstEmission = false;\n            }\n          })\n        );\n      })\n    );\n  };\n}\n","import type {\n  ConnectContentMessage,\n  DevtoolsCommonOptions,\n  MessageDataTypes,\n  OtterMessageContent,\n  RequestMessagesContentMessage,\n} from '@o3r/core';\nimport type {\n  PlaceholderMode,\n} from '../stores';\nimport {\n  OtterLikeComponentInfo,\n} from './inspector';\n\n/**\n * Component Devtools options\n */\nexport interface ComponentsDevtoolsServiceOptions extends DevtoolsCommonOptions {\n}\n\n/**\n * Message to give the selected component information\n */\nexport interface SelectedComponentInfoMessage extends OtterLikeComponentInfo, OtterMessageContent<'selectedComponentInfo'> {\n}\n\n/**\n * Message to toggle the inspector\n */\nexport interface ToggleInspectorMessage extends OtterMessageContent<'toggleInspector'> {\n  /** Is the inspector running */\n  isRunning: boolean;\n}\n\n/**\n * Message to toggle the placeholder mode\n */\nexport interface PlaceholderModeMessage extends OtterMessageContent<'placeholderMode'> {\n  /** Placeholder mode */\n  mode: PlaceholderMode;\n}\n\n/**\n * Message to know the component selection availability\n */\nexport interface IsComponentSelectionAvailableMessage extends OtterMessageContent<'isComponentSelectionAvailable'> {\n  available: boolean;\n}\n\ntype ComponentsMessageContents =\n  | IsComponentSelectionAvailableMessage\n  | SelectedComponentInfoMessage\n  | ToggleInspectorMessage\n  | PlaceholderModeMessage;\n\n/** List of possible DataTypes for Components messages */\nexport type ComponentsMessageDataTypes = MessageDataTypes<ComponentsMessageContents>;\n\n/** List of all messages for Components purpose */\nexport type AvailableComponentsMessageContents =\n  | ComponentsMessageContents\n  | ConnectContentMessage\n  | RequestMessagesContentMessage<ComponentsMessageDataTypes>;\n\n/**\n * Determine if the given message is a Components message\n * @param message message to check\n */\nexport const isComponentsMessage = (message: any): message is AvailableComponentsMessageContents => {\n  return message && (\n    message.dataType === 'requestMessages'\n    || message.dataType === 'connect'\n    || message.dataType === 'selectedComponentInfo'\n    || message.dataType === 'isComponentSelectionAvailable'\n    || message.dataType === 'placeholderMode'\n    || message.dataType === 'toggleInspector'\n  );\n};\n","import {\n  createAction,\n  props,\n} from '@ngrx/store';\nimport {\n  asyncProps,\n  AsyncRequest,\n  FailAsyncStoreItemEntitiesActionPayload,\n  FromApiActionPayload,\n  UpdateAsyncStoreItemEntityActionPayloadWithId,\n  UpdateEntityActionPayloadWithId,\n} from '@o3r/core';\nimport {\n  PlaceholderRequestModel,\n  PlaceholderRequestReply,\n} from './placeholder-request.state';\n\nconst ACTION_FAIL_ENTITIES = '[PlaceholderRequest] fail entities';\nconst ACTION_SET_ENTITY_FROM_URL = '[PlaceholderRequest] set entity from url';\nconst ACTION_CANCEL_REQUEST = '[PlaceholderRequest] cancel request';\nconst ACTION_UPDATE_ENTITY = '[PlaceholderRequest] update entity';\nconst ACTION_UPDATE_ENTITY_SYNC = '[PlaceholderRequest] update entity sync';\n\n/** Action to cancel a Request ID registered in the store. Can happen from effect based on a switchMap for instance */\nexport const cancelPlaceholderRequest = createAction(ACTION_CANCEL_REQUEST, props<AsyncRequest & { id: string }>());\n\n/** Action to update failureStatus for PlaceholderRequestModels */\nexport const failPlaceholderRequestEntity = createAction(ACTION_FAIL_ENTITIES, props<FailAsyncStoreItemEntitiesActionPayload<any>>());\n\n/** Action to update an entity */\nexport const updatePlaceholderRequestEntity = createAction(ACTION_UPDATE_ENTITY, props<UpdateAsyncStoreItemEntityActionPayloadWithId<PlaceholderRequestModel>>());\n\n/** Action to update an entity without impact on request id */\nexport const updatePlaceholderRequestEntitySync = createAction(ACTION_UPDATE_ENTITY_SYNC, props<UpdateEntityActionPayloadWithId<PlaceholderRequestModel>>());\n\n/** Action to update PlaceholderRequest with known IDs, will create the entity with only the url, the call will be created in the effect */\nexport const setPlaceholderRequestEntityFromUrl = createAction(ACTION_SET_ENTITY_FROM_URL, asyncProps<FromApiActionPayload<PlaceholderRequestReply> & { resolvedUrl: string; id: string }>());\n","import {\n  createEntityAdapter,\n} from '@ngrx/entity';\nimport {\n  ActionCreator,\n  createReducer,\n  on,\n  ReducerTypes,\n} from '@ngrx/store';\nimport {\n  asyncStoreItemAdapter,\n  createEntityAsyncRequestAdapter,\n} from '@o3r/core';\nimport * as actions from './placeholder-request.actions';\nimport {\n  PlaceholderRequestModel,\n  PlaceholderRequestState,\n  PlaceholderRequestStateDetails,\n} from './placeholder-request.state';\n\n/**\n * PlaceholderRequest Store adapter\n */\nexport const placeholderRequestAdapter = createEntityAsyncRequestAdapter(createEntityAdapter<PlaceholderRequestModel>({\n  selectId: (model) => model.id\n}));\n\n/**\n * PlaceholderRequest Store initial value\n */\nexport const placeholderRequestInitialState: PlaceholderRequestState = placeholderRequestAdapter.getInitialState<PlaceholderRequestStateDetails>({\n  requestIds: []\n});\n\n/**\n * Reducers of Placeholder request store that handles the call to the placeholder template URL\n */\nexport const placeholderRequestReducerFeatures: ReducerTypes<PlaceholderRequestState, ActionCreator[]>[] = [\n  on(actions.cancelPlaceholderRequest, (state, action) => {\n    const id = action.id;\n    if (!id || !state.entities[id]) {\n      return state;\n    }\n    return placeholderRequestAdapter.updateOne({\n      id: action.id,\n      changes: asyncStoreItemAdapter.resolveRequest(state.entities[id], action.requestId)\n    }, asyncStoreItemAdapter.resolveRequest(state, action.requestId));\n  }),\n  on(actions.updatePlaceholderRequestEntity, (state, action) => {\n    const currentEntity = state.entities[action.entity.id]!;\n    const newEntity = asyncStoreItemAdapter.resolveRequest({ ...action.entity, ...asyncStoreItemAdapter.extractAsyncStoreItem(currentEntity) }, action.requestId);\n    return placeholderRequestAdapter.updateOne({\n      id: newEntity.id,\n      changes: newEntity\n    }, asyncStoreItemAdapter.resolveRequest(state, action.requestId));\n  }),\n  on(actions.updatePlaceholderRequestEntitySync, (state, action) => {\n    return placeholderRequestAdapter.updateOne({\n      id: action.entity.id,\n      changes: {\n        ...action.entity\n      }\n    }, state);\n  }),\n  on(actions.setPlaceholderRequestEntityFromUrl, (state, payload) => {\n    const currentEntity = state.entities[payload.id];\n    // Nothing to update if resolved URLs already match\n    if (currentEntity && currentEntity.resolvedUrl === payload.resolvedUrl) {\n      return state;\n    }\n    let newEntity = {\n      id: payload.id,\n      resolvedUrl: payload.resolvedUrl,\n      used: true\n    };\n    if (currentEntity) {\n      newEntity = { ...asyncStoreItemAdapter.extractAsyncStoreItem(currentEntity), ...newEntity };\n    }\n    return placeholderRequestAdapter.addOne(\n      asyncStoreItemAdapter.addRequest(\n        asyncStoreItemAdapter.initialize(newEntity),\n        payload.requestId),\n      asyncStoreItemAdapter.addRequest(state, payload.requestId)\n    );\n  }),\n  on(actions.failPlaceholderRequestEntity, (state, payload) => {\n    return placeholderRequestAdapter.failRequestMany(asyncStoreItemAdapter.resolveRequest(state, payload.requestId), payload && payload.ids, payload.requestId);\n  })\n];\n\n/**\n * PlaceholderRequest Store reducer\n */\nexport const placeholderRequestReducer = createReducer(\n  placeholderRequestInitialState,\n  ...placeholderRequestReducerFeatures\n);\n","import {\n  EntityState,\n} from '@ngrx/entity';\nimport {\n  AsyncStoreItem,\n} from '@o3r/core';\n\n/**\n * Variable model from the placeholder reply\n */\nexport interface PlaceholderVariable {\n  type: 'fact' | 'fullUrl' | 'relativeUrl' | 'localisation';\n  value: string;\n  parameters?: Record<string, string>;\n  path?: string;\n}\n\n/**\n * Raw JSON template coming back from the CMS or any other source\n */\nexport interface PlaceholderRequestReply {\n  template?: string;\n  vars?: Record<string, PlaceholderVariable>;\n}\n\n/**\n * PlaceholderRequest model\n */\nexport interface PlaceholderRequestModel extends AsyncStoreItem, PlaceholderRequestReply {\n  /** Raw URL that is not localized, ex: my_url/[LANGUAGE]/my_placeholder.json */\n  id: string;\n  /** Resolved URL that is localized, ex: my_url/en-GB/my_placeholder.json  */\n  resolvedUrl: string;\n  /** Rendered template associated to the resolved URL, can be dynamic */\n  renderedTemplate?: string;\n  /** Unknown type found in the reply */\n  unknownTypeFound?: boolean;\n\n  /** A mechanism to cache previous request results for a given language. This boolean disables the dynamic rendering when it is set to false */\n  used?: boolean;\n}\n\n/**\n * PlaceholderRequest state details\n */\nexport interface PlaceholderRequestStateDetails extends AsyncStoreItem {}\n\n/**\n * PlaceholderRequest store state\n */\nexport interface PlaceholderRequestState extends EntityState<PlaceholderRequestModel>, PlaceholderRequestStateDetails {\n}\n\n/**\n * Name of the PlaceholderRequest Store\n */\nexport const PLACEHOLDER_REQUEST_STORE_NAME = 'placeholderRequest';\n\n/**\n * PlaceholderRequest Store Interface\n */\nexport interface PlaceholderRequestStore {\n  /** PlaceholderRequest state */\n  [PLACEHOLDER_REQUEST_STORE_NAME]: PlaceholderRequestState;\n}\n","import {\n  InjectionToken,\n  ModuleWithProviders,\n  NgModule,\n} from '@angular/core';\nimport {\n  Action,\n  ActionReducer,\n  StoreModule,\n} from '@ngrx/store';\nimport {\n  placeholderRequestReducer,\n} from './placeholder-request.reducer';\nimport {\n  PLACEHOLDER_REQUEST_STORE_NAME,\n  PlaceholderRequestState,\n} from './placeholder-request.state';\n\n/** Token of the PlaceholderRequest reducer */\nexport const PLACEHOLDER_REQUEST_REDUCER_TOKEN = new InjectionToken<ActionReducer<PlaceholderRequestState, Action>>('Feature PlaceholderRequest Reducer');\n\n/** Provide default reducer for PlaceholderRequest store */\nexport function getDefaultplaceholderRequestReducer() {\n  return placeholderRequestReducer;\n}\n\n@NgModule({\n  imports: [\n    StoreModule.forFeature(PLACEHOLDER_REQUEST_STORE_NAME, PLACEHOLDER_REQUEST_REDUCER_TOKEN)\n  ],\n  providers: [\n    { provide: PLACEHOLDER_REQUEST_REDUCER_TOKEN, useFactory: getDefaultplaceholderRequestReducer }\n  ]\n})\nexport class PlaceholderRequestStoreModule {\n  public static forRoot<T extends PlaceholderRequestState>(reducerFactory: () => ActionReducer<T, Action>): ModuleWithProviders<PlaceholderRequestStoreModule> {\n    return {\n      ngModule: PlaceholderRequestStoreModule,\n      providers: [\n        { provide: PLACEHOLDER_REQUEST_REDUCER_TOKEN, useFactory: reducerFactory }\n      ]\n    };\n  }\n}\n","import {\n  createFeatureSelector,\n  createSelector,\n} from '@ngrx/store';\nimport {\n  placeholderRequestAdapter,\n} from './placeholder-request.reducer';\nimport {\n  PLACEHOLDER_REQUEST_STORE_NAME,\n  PlaceholderRequestState,\n} from './placeholder-request.state';\n\nexport const selectPlaceholderRequestState = createFeatureSelector<PlaceholderRequestState>(PLACEHOLDER_REQUEST_STORE_NAME);\n\nconst { selectEntities } = placeholderRequestAdapter.getSelectors();\n\n/** Select the dictionary of PlaceholderRequest entities */\nexport const selectPlaceholderRequestEntities = createSelector(selectPlaceholderRequestState, (state) => state && selectEntities(state));\n\n/**\n * Select a specific PlaceholderRequest entity using a raw url as id\n * @param rawUrl\n */\nexport const selectPlaceholderRequestEntityUsage = (rawUrl: string) => createSelector(\n  selectPlaceholderRequestState,\n  (state) => {\n    return state?.entities[rawUrl] ? state.entities[rawUrl].used : undefined;\n  });\n","import {\n  asyncEntitySerializer,\n  Serializer,\n} from '@o3r/core';\nimport {\n  placeholderRequestAdapter,\n  placeholderRequestInitialState,\n} from './placeholder-request.reducer';\nimport {\n  PlaceholderRequestModel,\n  PlaceholderRequestState,\n} from './placeholder-request.state';\n\nexport const placeholderRequestStorageSerializer = asyncEntitySerializer;\n\nexport const placeholderRequestStorageDeserializer = (rawObject: any) => {\n  if (!rawObject || !rawObject.ids) {\n    return placeholderRequestInitialState;\n  }\n  const storeObject = placeholderRequestAdapter.getInitialState(rawObject);\n  for (const id of rawObject.ids) {\n    storeObject.entities[id] = rawObject.entities[id] as PlaceholderRequestModel;\n  }\n  return storeObject;\n};\n\nexport const placeholderRequestStorageSync: Readonly<Serializer<PlaceholderRequestState>> = {\n  serialize: placeholderRequestStorageSerializer,\n  deserialize: placeholderRequestStorageDeserializer\n} as const;\n","import {\n  createAction,\n  props,\n} from '@ngrx/store';\nimport {\n  SetEntityActionPayload,\n} from '@o3r/core';\nimport {\n  type PlaceholderMode,\n  PlaceholderTemplateModel,\n} from './placeholder-template.state';\n\nconst ACTION_DELETE_ENTITY = '[PlaceholderTemplate] delete entity';\nconst ACTION_SET_ENTITY = '[PlaceholderTemplate] set entity';\nconst ACTION_TOGGLE_MODE = '[PlaceholderTemplate] toggle mode';\n\n/** Action to delete a specific entity */\nexport const deletePlaceholderTemplateEntity = createAction(ACTION_DELETE_ENTITY, props<{ id: string }>());\n\n/** Action to clear all placeholderTemplate and fill the store with the payload */\nexport const setPlaceholderTemplateEntity = createAction(ACTION_SET_ENTITY, props<SetEntityActionPayload<PlaceholderTemplateModel>>());\n\nexport const togglePlaceholderModeTemplate = createAction(ACTION_TOGGLE_MODE, props<{ mode: PlaceholderMode }>());\n","import {\n  createEntityAdapter,\n} from '@ngrx/entity';\nimport {\n  ActionCreator,\n  createReducer,\n  on,\n  ReducerTypes,\n} from '@ngrx/store';\nimport * as actions from './placeholder-template.actions';\nimport {\n  PlaceholderTemplateModel,\n  PlaceholderTemplateState,\n} from './placeholder-template.state';\n\n/**\n * PlaceholderTemplate Store adapter\n */\nexport const placeholderTemplateAdapter = createEntityAdapter<PlaceholderTemplateModel>({\n  selectId: (model) => model.id\n});\n\n/**\n * PlaceholderTemplate Store initial value\n */\nexport const placeholderTemplateInitialState: PlaceholderTemplateState = placeholderTemplateAdapter.getInitialState({\n  mode: 'normal'\n});\n\n/**\n * List of basic actions for PlaceholderTemplate Store\n */\nexport const placeholderTemplateReducerFeatures: ReducerTypes<PlaceholderTemplateState, ActionCreator[]>[] = [\n  on(actions.setPlaceholderTemplateEntity, (state, payload) =>\n    placeholderTemplateAdapter.addOne(payload.entity, placeholderTemplateAdapter.removeOne(payload.entity.id, state))),\n  on(actions.deletePlaceholderTemplateEntity, (state, payload) => {\n    const id = payload.id;\n    if (!id || !state.entities[id]) {\n      return state;\n    }\n    return placeholderTemplateAdapter.removeOne(id, state);\n  }),\n  on(actions.togglePlaceholderModeTemplate, (state, payload) => {\n    return {\n      ...state,\n      mode: payload.mode\n    };\n  })\n];\n\n/**\n * PlaceholderTemplate Store reducer\n */\nexport const placeholderTemplateReducer = createReducer(\n  placeholderTemplateInitialState,\n  ...placeholderTemplateReducerFeatures\n);\n","import {\n  EntityState,\n} from '@ngrx/entity';\n\n/**\n * PlaceholderTemplate model\n */\nexport interface PlaceholderTemplateModel {\n  /** Placeholder id that is unique*/\n  id: string;\n  /** Urls to the templates to be fetched, and priority for rendering order */\n  urlsWithPriority: { rawUrl: string; priority: number }[];\n}\n\n/** Possible placeholder mode */\nexport type PlaceholderMode = 'normal' | 'debug' | 'pending';\n\n/**\n * PlaceholderTemplate store state\n */\nexport interface PlaceholderTemplateState extends EntityState<PlaceholderTemplateModel> {\n  mode: PlaceholderMode;\n}\n\n/**\n * Name of the PlaceholderTemplate Store\n */\nexport const PLACEHOLDER_TEMPLATE_STORE_NAME = 'placeholderTemplate';\n\n/**\n * PlaceholderTemplate Store Interface\n */\nexport interface PlaceholderTemplateStore {\n  /** PlaceholderTemplate state */\n  [PLACEHOLDER_TEMPLATE_STORE_NAME]: PlaceholderTemplateState;\n}\n","import {\n  InjectionToken,\n  ModuleWithProviders,\n  NgModule,\n} from '@angular/core';\nimport {\n  Action,\n  ActionReducer,\n  StoreModule,\n} from '@ngrx/store';\nimport {\n  placeholderTemplateReducer,\n} from './placeholder-template.reducer';\nimport {\n  PLACEHOLDER_TEMPLATE_STORE_NAME,\n  PlaceholderTemplateState,\n} from './placeholder-template.state';\n\n/** Token of the PlaceholderTemplate reducer */\nexport const PLACEHOLDER_TEMPLATE_REDUCER_TOKEN = new InjectionToken<ActionReducer<PlaceholderTemplateState, Action>>('Feature PlaceholderTemplate Reducer');\n\n/** Provide default reducer for PlaceholderTemplate store */\nexport function getDefaultPlaceholderTemplateReducer() {\n  return placeholderTemplateReducer;\n}\n\n@NgModule({\n  imports: [\n    StoreModule.forFeature(PLACEHOLDER_TEMPLATE_STORE_NAME, PLACEHOLDER_TEMPLATE_REDUCER_TOKEN)\n  ],\n  providers: [\n    { provide: PLACEHOLDER_TEMPLATE_REDUCER_TOKEN, useFactory: getDefaultPlaceholderTemplateReducer }\n  ]\n})\nexport class PlaceholderTemplateStoreModule {\n  public static forRoot<T extends PlaceholderTemplateState>(reducerFactory: () => ActionReducer<T, Action>): ModuleWithProviders<PlaceholderTemplateStoreModule> {\n    return {\n      ngModule: PlaceholderTemplateStoreModule,\n      providers: [\n        { provide: PLACEHOLDER_TEMPLATE_REDUCER_TOKEN, useFactory: reducerFactory }\n      ]\n    };\n  }\n}\n","import {\n  createFeatureSelector,\n  createSelector,\n} from '@ngrx/store';\nimport {\n  selectPlaceholderRequestState,\n} from '../placeholder-request';\nimport {\n  placeholderTemplateAdapter,\n} from './placeholder-template.reducer';\nimport {\n  PLACEHOLDER_TEMPLATE_STORE_NAME,\n  PlaceholderTemplateState,\n} from './placeholder-template.state';\n\nconst { selectEntities } = placeholderTemplateAdapter.getSelectors();\n\nexport const selectPlaceholderTemplateState = createFeatureSelector<PlaceholderTemplateState>(PLACEHOLDER_TEMPLATE_STORE_NAME);\n\n/** Select the dictionary of PlaceholderTemplate entities */\nexport const selectPlaceholderTemplateEntities = createSelector(selectPlaceholderTemplateState, (state) => state && selectEntities(state));\n\n/**\n * Select a specific PlaceholderTemplate\n * @param placeholderId\n */\nexport const selectPlaceholderTemplateEntity = (placeholderId: string) =>\n  createSelector(selectPlaceholderTemplateState, (state) => state?.entities[placeholderId]);\n\n/**\n * Select the ordered rendered placeholder template full data (url, priority etc.) for a given placeholderId\n * Return undefined if the placeholder is not found\n * Returns {orderedRenderedTemplates: undefined, isPending: true} if any of the request is still pending\n * @param placeholderId\n */\nexport const selectSortedTemplates = (placeholderId: string) => createSelector(\n  selectPlaceholderTemplateEntity(placeholderId),\n  selectPlaceholderRequestState,\n  (placeholderTemplate, placeholderRequestState) => {\n    if (!placeholderTemplate || !placeholderRequestState) {\n      return;\n    }\n    // The isPending will be considered true if any of the Url is still pending\n    let isPending: boolean | undefined = false;\n    const templates: { rawUrl: string; priority: number; renderedTemplate?: string; resolvedUrl: string }[] = [];\n    placeholderTemplate.urlsWithPriority.forEach((urlWithPriority) => {\n      const placeholderRequest = placeholderRequestState.entities[urlWithPriority.rawUrl];\n      if (placeholderRequest) {\n        // If one of the items is pending, we will wait to display all contents at the same time\n        isPending = isPending || placeholderRequest.isPending;\n        // Templates in failure will be ignored from the list\n        if (!placeholderRequest.isFailure) {\n          templates.push({\n            rawUrl: urlWithPriority.rawUrl,\n            resolvedUrl: placeholderRequest.resolvedUrl,\n            priority: urlWithPriority.priority,\n            renderedTemplate: placeholderRequest.renderedTemplate\n          });\n        }\n      }\n    });\n    // No need to perform sorting if still pending\n    if (isPending) {\n      return { orderedTemplates: undefined, isPending };\n    }\n    // Sort templates by priority\n    const orderedTemplates = templates.sort((template1, template2) => {\n      return (template2.priority - template1.priority) || 1;\n    }).filter((templateData) => !!templateData.renderedTemplate);\n\n    return { orderedTemplates, isPending };\n  });\n\n/**\n * Select the ordered rendered templates for a given placeholderId\n * Return undefined if the placeholder is not found\n * Returns {orderedRenderedTemplates: undefined, isPending: true} if any of the request is still pending\n * @param placeholderId\n * @deprecated Please use {@link selectSortedTemplates} instead\n */\nexport const selectPlaceholderRenderedTemplates = (placeholderId: string) => createSelector(\n  selectSortedTemplates(placeholderId),\n  (placeholderData) => {\n    if (!placeholderData) {\n      return;\n    }\n    return {\n      orderedRenderedTemplates: placeholderData.orderedTemplates?.map((placeholder) => placeholder.renderedTemplate),\n      isPending: placeholderData.isPending\n    };\n  });\n\nexport const selectPlaceholderTemplateMode = createSelector(selectPlaceholderTemplateState, (state) => state.mode);\n","import {\n  Serializer,\n} from '@o3r/core';\nimport {\n  placeholderTemplateAdapter,\n  placeholderTemplateInitialState,\n} from './placeholder-template.reducer';\nimport {\n  PlaceholderTemplateModel,\n  PlaceholderTemplateState,\n} from './placeholder-template.state';\n\nexport const placeholderTemplateStorageDeserializer = (rawObject: any) => {\n  if (!rawObject || !rawObject.ids) {\n    return placeholderTemplateInitialState;\n  }\n  const storeObject = placeholderTemplateAdapter.getInitialState(rawObject);\n  for (const id of rawObject.ids) {\n    storeObject.entities[id] = rawObject.entities[id] as PlaceholderTemplateModel;\n  }\n  return storeObject;\n};\n\nexport const placeholderTemplateStorageSync: Readonly<Serializer<PlaceholderTemplateState>> = {\n  deserialize: placeholderTemplateStorageDeserializer\n} as const;\n","import {\n  InjectionToken,\n} from '@angular/core';\nimport {\n  ComponentsDevtoolsServiceOptions,\n} from './components-devkit.interface';\n\nexport const OTTER_COMPONENTS_DEVTOOLS_DEFAULT_OPTIONS: Readonly<ComponentsDevtoolsServiceOptions> = {\n  isActivatedOnBootstrap: false\n} as const;\n\nexport const OTTER_COMPONENTS_DEVTOOLS_OPTIONS = new InjectionToken<ComponentsDevtoolsServiceOptions>('Otter Components Devtools options');\n","import {\n  otterComponentInfoPropertyName,\n} from '@o3r/core';\n\nexport interface OtterLikeComponentInfo {\n  /** Container information */\n  container?: OtterLikeComponentInfo;\n  /** Configuration ID */\n  configId?: string;\n  /** Component name */\n  componentName: string;\n  /** Component translation */\n  translations?: Record<string, string[]>;\n  /** Component analytics */\n  analytics?: Record<string, string[]>;\n}\n\n/**\n * Otter inspector css class\n */\nexport const INSPECTOR_CLASS = 'otter-devtools-inspector';\n\n/**\n * Determine if a node is an Otter container\n * @param node Element to check\n * @returns true if the node is an Otter container\n */\nexport const isContainer = (node: Element | undefined | null): node is Element => {\n  return !!node?.tagName.toLowerCase().endsWith('cont');\n};\n\n/**\n * Determine the config id of a component instance\n * @param instance component instance\n * @returns the config id of the component instance\n */\nexport const getConfigId = (instance: any) => {\n  return instance[otterComponentInfoPropertyName]?.configId;\n};\n\n/**\n * Recursive method to determin the translations of a node\n * @param node HTMLElement to check\n * @param rec recursive method\n * @returns the trasnslations associated to their component name\n */\nexport function getTranslationsRec(node: Element | null, rec: typeof getTranslationsRec): Record<string, string[]> | undefined {\n  const angularDevTools = (window as any).ng;\n  const o3rInfoProperty: typeof otterComponentInfoPropertyName = '__otter-info__';\n  if (!node || !angularDevTools) {\n    return;\n  }\n  const component = angularDevTools.getComponent(node);\n  const subTranslations: (Record<string, string[]> | undefined)[] = Array.from(node.children).map((child) => rec(child, rec));\n  const translations: Record<string, string[]> = {};\n  subTranslations.forEach((s) => {\n    Object.entries(s || {}).forEach(([k, v]) => {\n      if (v.length > 0) {\n        translations[k] = v;\n      }\n    });\n  });\n  if (component) {\n    const componentName: string = component.constructor.name;\n    const componentTranslations = Object.values<string>(component[o3rInfoProperty]?.translations || {}).filter((t) => typeof t === 'string');\n    if (componentTranslations.length > 0) {\n      translations[componentName] = componentTranslations;\n    }\n  }\n  return Object.keys(translations).length > 0 ? translations : undefined;\n}\n\n/**\n * Determine the translations of a node\n * @param node HTMLElement to check\n * @returns the translations associated to their component name\n */\nexport const getTranslations = (node: Element | null): Record<string, string[]> | undefined => getTranslationsRec(node, getTranslations);\n\n/**\n * Recursive method to determine the analytics of a node\n * @param node Element to check\n * @param rec recursive method\n * @returns the analytics associated to their component name\n */\nexport function getAnalyticEventsRec(node: Element | null, rec: typeof getAnalyticEventsRec): Record<string, string[]> | undefined {\n  const angularDevTools = (window as any).ng;\n  const o3rInfoProperty: typeof otterComponentInfoPropertyName = '__otter-info__';\n  if (!node || !angularDevTools) {\n    return;\n  }\n  const component = angularDevTools.getComponent(node);\n  const subEvents = Array.from(node.children).map((child) => rec(child, rec));\n  const events: Record<string, string[]> = {};\n  subEvents.forEach((s) => {\n    Object.entries(s || {}).forEach(([k, v]) => {\n      if (v.length > 0) {\n        events[k] = v;\n      }\n    });\n  });\n  if (component && component[o3rInfoProperty]) {\n    const componentName: string = component.constructor.name;\n    const componentEvents: string[] = Object.values<any>(component.analyticsEvents || {}).map((eventConstructor) => eventConstructor.name);\n    if (componentEvents.length > 0) {\n      events[componentName] = componentEvents;\n    }\n  }\n  return Object.keys(events).length > 0 ? events : undefined;\n}\n\n/**\n * Determine the analytics of a node\n * @param node Element to check\n * @returns the analytics associated to their component name\n */\nexport const getAnalyticEvents = (node: Element | null): Record<string, string[]> | undefined => getAnalyticEventsRec(node, getAnalyticEvents);\n\n/**\n * Determine all info from an Otter component\n * @param componentClassInstance component instance\n * @param host HTML element hosting the component\n * @returns all info from an Otter component\n */\nexport const getOtterLikeComponentInfo = (componentClassInstance: any, host: Element): OtterLikeComponentInfo => {\n  const configId = getConfigId(componentClassInstance);\n  const translations = getTranslations(host);\n  const analytics = getAnalyticEvents(host);\n  return {\n    // Cannot use anymore `constructor.name` else all components are named `_a`\n    componentName: componentClassInstance.constructor.ɵcmp?.debugInfo?.className || componentClassInstance.constructor.name,\n    configId,\n    translations,\n    analytics\n  };\n};\n","import {\n  BehaviorSubject,\n  Observable,\n} from 'rxjs';\nimport {\n  Ng,\n} from './ng';\nimport {\n  getOtterLikeComponentInfo,\n  INSPECTOR_CLASS,\n  isContainer,\n  OtterLikeComponentInfo,\n} from './otter-inspector.helpers';\n\ninterface ComponentInfo extends OtterLikeComponentInfo {\n  component: any;\n  host: Element;\n}\n\n/**\n * Service to handle the custom inspector for the Otter Devtools Chrome extension.\n */\nexport class OtterInspectorService {\n  private readonly angularDevTools: Ng | undefined;\n  private readonly elementMouseOverCallback = this.elementMouseOver.bind(this);\n  private readonly elementClickCallback = this.elementClick.bind(this);\n  private readonly cancelEventCallback = this.cancelEvent.bind(this);\n  private selectedComponent: ComponentInfo | undefined;\n  private inspectorDiv: HTMLDivElement | null = null;\n  private readonly otterLikeComponentInfoToBeSent = new BehaviorSubject<OtterLikeComponentInfo | undefined>(undefined);\n\n  /**\n   * Stream of component info to be sent to the extension app.\n   */\n  public otterLikeComponentInfoToBeSent$: Observable<OtterLikeComponentInfo | undefined> = this.otterLikeComponentInfoToBeSent.asObservable();\n\n  constructor() {\n    this.angularDevTools = (window as any).ng as Ng | undefined;\n  }\n\n  private startInspecting() {\n    window.addEventListener('mouseover', this.elementMouseOverCallback, true);\n    window.addEventListener('click', this.elementClickCallback, true);\n    window.addEventListener('mouseout', this.cancelEventCallback, true);\n  }\n\n  private elementClick(e: MouseEvent) {\n    e.stopImmediatePropagation();\n    e.stopPropagation();\n    e.preventDefault();\n    if (!this.selectedComponent || !this.angularDevTools) {\n      return;\n    }\n    const parentElement = this.selectedComponent.host.parentElement;\n    const parent = parentElement && (this.angularDevTools.getComponent(parentElement) || this.angularDevTools.getOwningComponent(parentElement));\n    const parentHost = parent && this.angularDevTools.getHostElement(parent);\n    const container = isContainer(parentHost)\n      ? getOtterLikeComponentInfo(parent, parentHost)\n      : undefined;\n\n    const { component, host, ...infoToBeSent } = this.selectedComponent;\n\n    this.otterLikeComponentInfoToBeSent.next({\n      ...infoToBeSent,\n      container\n    });\n  }\n\n  private isOtterLikeComponent(info: OtterLikeComponentInfo) {\n    const hasConfigId = !!info.configId;\n    const hasTranslations = !!info.translations?.length;\n    const hasAnalytics = Object.keys(info.analytics || {}).length > 0;\n    return hasConfigId || hasTranslations || hasAnalytics;\n  }\n\n  private findComponentInfo(node: Element): ComponentInfo | undefined {\n    if (!this.angularDevTools) {\n      return;\n    }\n    let componentClassInstance = this.angularDevTools.getComponent(node) || this.angularDevTools.getOwningComponent(node);\n    let o3rLikeComponentInfo: OtterLikeComponentInfo;\n    let isO3rLike: boolean;\n    if (!componentClassInstance) {\n      return;\n    }\n    do {\n      o3rLikeComponentInfo = getOtterLikeComponentInfo(componentClassInstance, this.angularDevTools.getHostElement(componentClassInstance));\n      isO3rLike = this.isOtterLikeComponent(o3rLikeComponentInfo);\n      if (!isO3rLike) {\n        componentClassInstance = this.angularDevTools.getOwningComponent(componentClassInstance);\n      }\n    } while (!isO3rLike && componentClassInstance);\n    if (isO3rLike) {\n      return {\n        component: componentClassInstance,\n        host: this.angularDevTools.getHostElement(componentClassInstance),\n        ...o3rLikeComponentInfo\n      };\n    }\n  }\n\n  private elementMouseOver(e: MouseEvent) {\n    this.cancelEvent(e);\n\n    const el = e.target as Element | undefined;\n\n    if (el) {\n      const selectedComponent = this.findComponentInfo(el);\n      if (selectedComponent?.host !== this.selectedComponent?.host) {\n        this.unHighlight();\n        this.highlight(selectedComponent);\n      }\n    }\n  }\n\n  private highlight(selectedComponent: ComponentInfo | undefined) {\n    this.selectedComponent = selectedComponent;\n    if (this.selectedComponent?.host && this.inspectorDiv) {\n      const rect = this.selectedComponent.host.getBoundingClientRect();\n      this.inspectorDiv.style.width = `${rect.width}px`;\n      this.inspectorDiv.style.height = `${rect.height}px`;\n      this.inspectorDiv.style.top = `${rect.top}px`;\n      this.inspectorDiv.style.left = `${rect.left}px`;\n      this.inspectorDiv.firstChild!.textContent = `<${this.selectedComponent.componentName}>`;\n    }\n  }\n\n  private unHighlight() {\n    if (this.selectedComponent?.host && this.inspectorDiv) {\n      this.inspectorDiv.style.width = '0';\n      this.inspectorDiv.style.height = '0';\n      this.inspectorDiv.style.top = '0';\n      this.inspectorDiv.style.left = '0';\n    }\n    this.selectedComponent = undefined;\n  }\n\n  private cancelEvent(e: MouseEvent): void {\n    e.stopPropagation();\n    e.stopImmediatePropagation();\n    e.preventDefault();\n  }\n\n  /**\n   * Prepare the inspector div and add it to the DOM.\n   */\n  public prepareInspector() {\n    if (this.inspectorDiv) {\n      return;\n    }\n    const inspectorCss = document.createElement('style');\n    inspectorCss.textContent = `\n      .${INSPECTOR_CLASS} {\n        z-index: 9999999;\n        width: 0;\n        height: 0;\n        background: rgba(104, 182, 255, 0.35);\n        position: fixed;\n        left: 0;\n        top: 0;\n        pointer-events: none;\n      }\n\n      .${INSPECTOR_CLASS} > span {\n        bottom: -25px;\n        position: absolute;\n        right: 10px;\n        background: rgba(104, 182, 255, 0.9);;\n        padding: 5px;\n        border-radius: 5px;\n        color: white;\n      }`;\n\n    const inspectorDiv = document.createElement('div');\n    const inspectorSpan = document.createElement('span');\n    inspectorDiv.append(inspectorSpan);\n    inspectorDiv.classList.add(INSPECTOR_CLASS);\n\n    document.head.append(inspectorCss);\n    document.body.append(inspectorDiv);\n    this.inspectorDiv = inspectorDiv;\n  }\n\n  /**\n   * Toggle the inspector.\n   * @param isRunning true if the inspector is running\n   */\n  public toggleInspector(isRunning: boolean) {\n    if (isRunning) {\n      this.startInspecting();\n    } else {\n      this.stopInspecting();\n    }\n  }\n\n  public stopInspecting() {\n    this.unHighlight();\n    window.removeEventListener('mouseover', this.elementMouseOverCallback, true);\n    window.removeEventListener('click', this.elementClickCallback, true);\n    window.removeEventListener('mouseout', this.cancelEventCallback, true);\n  }\n}\n","import {\n  DestroyRef,\n  inject,\n  Inject,\n  Injectable,\n  Optional,\n} from '@angular/core';\nimport {\n  takeUntilDestroyed,\n} from '@angular/core/rxjs-interop';\nimport {\n  Store,\n} from '@ngrx/store';\nimport {\n  DevtoolsServiceInterface,\n  filterMessageContent,\n  sendOtterMessage,\n} from '@o3r/core';\nimport {\n  LoggerService,\n} from '@o3r/logger';\nimport {\n  firstValueFrom,\n  fromEvent,\n} from 'rxjs';\nimport {\n  filter,\n} from 'rxjs/operators';\nimport {\n  type PlaceholderTemplateState,\n  togglePlaceholderModeTemplate,\n} from '../stores';\nimport {\n  AvailableComponentsMessageContents,\n  ComponentsDevtoolsServiceOptions,\n  ComponentsMessageDataTypes,\n  isComponentsMessage,\n} from './components-devkit.interface';\nimport {\n  OTTER_COMPONENTS_DEVTOOLS_DEFAULT_OPTIONS,\n  OTTER_COMPONENTS_DEVTOOLS_OPTIONS,\n} from './components-devtools.token';\nimport {\n  OtterInspectorService,\n  OtterLikeComponentInfo,\n} from './inspector';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ComponentsDevtoolsMessageService implements DevtoolsServiceInterface {\n  private readonly options: ComponentsDevtoolsServiceOptions;\n  private readonly inspectorService: OtterInspectorService;\n  private readonly sendMessage = sendOtterMessage<AvailableComponentsMessageContents>;\n  private readonly destroyRef = inject(DestroyRef);\n\n  constructor(\n    private readonly logger: LoggerService,\n    private readonly store: Store<PlaceholderTemplateState>,\n    @Optional() @Inject(OTTER_COMPONENTS_DEVTOOLS_OPTIONS) options?: ComponentsDevtoolsServiceOptions\n  ) {\n    this.options = {\n      ...OTTER_COMPONENTS_DEVTOOLS_DEFAULT_OPTIONS,\n      ...options\n    };\n\n    this.inspectorService = new OtterInspectorService();\n    if (this.options.isActivatedOnBootstrap) {\n      this.activate();\n    }\n  }\n\n  /**\n   * Function to connect the plugin to the Otter DevTools extension\n   */\n  private async connectPlugin() {\n    this.logger.debug('Otter DevTools is plugged to components service of the application');\n    const selectComponentInfo = await firstValueFrom(this.inspectorService.otterLikeComponentInfoToBeSent$);\n    if (selectComponentInfo) {\n      await this.sendCurrentSelectedComponent();\n    }\n  }\n\n  private async sendCurrentSelectedComponent() {\n    const selectComponentInfo = await firstValueFrom(this.inspectorService.otterLikeComponentInfoToBeSent$);\n    if (selectComponentInfo) {\n      this.sendMessage('selectedComponentInfo', selectComponentInfo);\n    }\n  }\n\n  private sendIsComponentSelectionAvailable() {\n    this.sendMessage('isComponentSelectionAvailable', { available: !!(window as any).ng });\n  }\n\n  /**\n   * Function to trigger a re-send a requested messages to the Otter Chrome DevTools extension\n   * @param only restricted list of messages to re-send\n   */\n  private handleReEmitRequest(only?: ComponentsMessageDataTypes[]) {\n    if (!only) {\n      void this.sendCurrentSelectedComponent();\n      this.sendIsComponentSelectionAvailable();\n      return;\n    }\n    if (only.includes('selectedComponentInfo')) {\n      void this.sendCurrentSelectedComponent();\n    }\n    if (only.includes('isComponentSelectionAvailable')) {\n      this.sendIsComponentSelectionAvailable();\n    }\n  }\n\n  /**\n   * Function to handle the incoming messages from Otter Chrome DevTools extension\n   * @param message message coming from the Otter Chrome DevTools extension\n   */\n  private async handleEvents(message: AvailableComponentsMessageContents) {\n    this.logger.debug('Message handling by the components service', message);\n\n    switch (message.dataType) {\n      case 'connect': {\n        await this.connectPlugin();\n        break;\n      }\n      case 'requestMessages': {\n        this.handleReEmitRequest(message.only);\n        break;\n      }\n      case 'toggleInspector': {\n        this.inspectorService.toggleInspector(message.isRunning);\n        break;\n      }\n      case 'placeholderMode': {\n        this.store.dispatch(togglePlaceholderModeTemplate({ mode: message.mode }));\n        break;\n      }\n      default: {\n        this.logger.warn('Message ignored by the components service', message);\n      }\n    }\n  }\n\n  /** @inheritDoc */\n  public activate() {\n    fromEvent(window, 'message').pipe(takeUntilDestroyed(this.destroyRef), filterMessageContent(isComponentsMessage)).subscribe((e) => this.handleEvents(e));\n\n    this.inspectorService.prepareInspector();\n    this.inspectorService.otterLikeComponentInfoToBeSent$\n      .pipe(\n        takeUntilDestroyed(this.destroyRef),\n        filter((info): info is OtterLikeComponentInfo => !!info)\n      ).subscribe(\n        (info) => this.sendMessage('selectedComponentInfo', info)\n      );\n  }\n}\n","import {\n  ModuleWithProviders,\n  NgModule,\n} from '@angular/core';\nimport {\n  StoreModule,\n} from '@ngrx/store';\nimport {\n  PlaceholderTemplateStoreModule,\n} from '../stores/placeholder-template/placeholder-template.module';\nimport type {\n  ComponentsDevtoolsServiceOptions,\n} from './components-devkit.interface';\nimport {\n  ComponentsDevtoolsMessageService,\n} from './components-devtools.message.service';\nimport {\n  OTTER_COMPONENTS_DEVTOOLS_DEFAULT_OPTIONS,\n  OTTER_COMPONENTS_DEVTOOLS_OPTIONS,\n} from './components-devtools.token';\n\n@NgModule({\n  imports: [\n    StoreModule,\n    PlaceholderTemplateStoreModule\n  ],\n  providers: [\n    { provide: OTTER_COMPONENTS_DEVTOOLS_OPTIONS, useValue: OTTER_COMPONENTS_DEVTOOLS_DEFAULT_OPTIONS },\n    ComponentsDevtoolsMessageService\n  ]\n})\nexport class ComponentsDevtoolsModule {\n  /**\n   * Initialize Otter Devtools\n   * @param options\n   */\n  public static instrument(options: Partial<ComponentsDevtoolsServiceOptions>): ModuleWithProviders<ComponentsDevtoolsModule> {\n    return {\n      ngModule: ComponentsDevtoolsModule,\n      providers: [\n        { provide: OTTER_COMPONENTS_DEVTOOLS_OPTIONS, useValue: { ...OTTER_COMPONENTS_DEVTOOLS_DEFAULT_OPTIONS, ...options }, multi: false },\n        ComponentsDevtoolsMessageService\n      ]\n    };\n  }\n}\n","import {\n  ComponentRef,\n  Directive,\n  forwardRef,\n  Injector,\n  Input,\n  KeyValueChangeRecord,\n  KeyValueDiffer,\n  KeyValueDiffers,\n  OnChanges,\n  OnDestroy,\n  SimpleChange,\n  SimpleChanges,\n  Type,\n  ViewContainerRef,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  FormControl,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  NgControl,\n} from '@angular/forms';\nimport type {\n  BaseContextOutput,\n  Configuration,\n  Context,\n  ContextInput,\n  Functionify,\n} from '@o3r/core';\nimport {\n  Subscription,\n} from 'rxjs';\n\n@Directive({\n  selector: '[c11n]',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => C11nDirective),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => C11nDirective),\n      multi: true\n    }\n  ],\n  standalone: false\n})\nexport class C11nDirective<\n  D extends Configuration = Configuration,\n  I extends ContextInput = ContextInput,\n  O extends BaseContextOutput = BaseContextOutput,\n  T extends Context<I, O> = Context<I, O>> implements OnChanges, OnDestroy {\n  /** The component information passed to the directive */\n  @Input() public component!: Type<T>;\n\n  /** The information related to configuration */\n  @Input() public config?: D;\n\n  /** Formcontrol */\n  @Input() public formControl?: FormControl;\n\n  /** The input setter */\n  @Input() public set inputs(value: { [K in keyof I]: I[K] }) {\n    this._inputs = value;\n    if (!this.differInputs && value) {\n      // eslint-disable-next-line unicorn/no-array-callback-reference -- KeyValueDiffers.find is not an array function\n      this.differInputs = this.differsService.find(value).create();\n    }\n  }\n\n  /** The input getter */\n  public get inputs(): { [K in keyof I]: I[K] } {\n    return this._inputs;\n  }\n\n  /** The information related to output */\n  @Input() public outputs?: Functionify<O>;\n\n  /** The component reference */\n  public componentRef!: ComponentRef<T>;\n\n  private componentSubscriptions: Subscription[] = [];\n\n  private _inputs!: { [K in keyof I]: I[K] };\n\n  private differInputs!: KeyValueDiffer<string, any>;\n\n  /** Set of inputs when the component was created. */\n  private readonly uninitializedInputs = new Set<string>();\n\n  constructor(public viewContainerRef: ViewContainerRef,\n    private readonly differsService: KeyValueDiffers,\n    private readonly injector: Injector) {}\n\n  /**\n   * Type guard for component implementing CVA\n   * @param _cmp Component instance\n   */\n  private componentImplementsCva(_cmp: T): _cmp is T & ControlValueAccessor {\n    return !!this.formControl;\n  }\n\n  private updateInputs(record: KeyValueChangeRecord<string, any>, inputChanges: SimpleChanges) {\n    const recordKey = record.key;\n    const isFirstChange = this.uninitializedInputs.has(recordKey);\n    this.uninitializedInputs.delete(recordKey);\n    inputChanges[recordKey] = new SimpleChange(record.previousValue, record.currentValue, isFirstChange);\n  }\n\n  /**\n   * called when data-bound property change\n   * @param changes The changes that occur\n   */\n  public ngOnChanges(changes: SimpleChanges) {\n    const inputChanges: SimpleChanges = {};\n\n    if (changes.component && changes.component.currentValue) {\n      if (this.componentRef) {\n        this.componentSubscriptions.forEach((s) => s.unsubscribe());\n        this.componentSubscriptions = [];\n        this.componentRef.destroy();\n      }\n\n      const ngControl = !!this.formControl && this.injector.get(NgControl);\n\n      this.viewContainerRef.clear();\n      this.componentRef = this.viewContainerRef.createComponent<T>(changes.component.currentValue);\n      Object.keys(this.componentRef.instance)\n        .filter((prop) => !(this.outputs && Object.keys(this.outputs).includes(prop)))\n        .forEach((prop) => {\n          this.uninitializedInputs.add(prop);\n        });\n\n      if (ngControl && this.componentImplementsCva(this.componentRef.instance)) {\n        ngControl.valueAccessor = this.componentRef.instance;\n      }\n\n      // Initialize outputs\n      if (this.outputs) {\n        const subscriptions = Object.keys(this.outputs).map((outputName) => this.componentRef.instance[outputName].subscribe((val: any) => this.outputs![outputName](val)));\n        this.componentSubscriptions.push(...subscriptions);\n      }\n\n      // In case of async component change keep the inputs\n      if (!changes.inputs && this.inputs) {\n        Object.keys(this.inputs).forEach((inputName) => {\n          const currentInputValue = this.inputs[inputName];\n          inputChanges[inputName] = new SimpleChange(undefined, currentInputValue, true);\n          this.uninitializedInputs.delete(inputName);\n        });\n      }\n      // In case of lazy loaded component keep the config\n      if (!changes.config && this.config) {\n        inputChanges.config = new SimpleChange(this.componentRef.instance.config, this.config, true);\n        this.uninitializedInputs.delete('config');\n      }\n    }\n\n    if (this.componentRef && this.differInputs) {\n      const changesInInputs = this.differInputs.diff(this.inputs);\n      if (changesInInputs) {\n        changesInInputs.forEachAddedItem((record) => this.updateInputs(record, inputChanges));\n        changesInInputs.forEachChangedItem((record) => this.updateInputs(record, inputChanges));\n        changesInInputs.forEachRemovedItem((record) => this.updateInputs(record, inputChanges));\n      }\n    }\n\n    if (this.componentRef && changes.config) {\n      inputChanges.config = new SimpleChange(this.componentRef.instance.config, changes.config.currentValue, this.uninitializedInputs.has('config'));\n      this.uninitializedInputs.delete('config');\n    }\n\n    if (this.componentRef && Object.keys(inputChanges).length > 0) {\n      Object.entries(inputChanges).forEach(([inputName, value]) => {\n        this.componentRef.setInput(inputName, value.currentValue);\n      });\n    }\n  }\n\n  /**\n   * returns validation errors from component instance if validate method exists else returns null\n   * @param control Form control\n   */\n  public validate(control: AbstractControl) {\n    if (!this.componentRef?.instance.validate) {\n      return null;\n    }\n    return this.componentRef.instance.validate(control);\n  }\n\n  /**\n   * ngOnDestroy\n   */\n  public ngOnDestroy() {\n    this.componentSubscriptions.forEach((s) => s.unsubscribe());\n    if (this.componentRef) {\n      this.componentRef.destroy();\n    }\n  }\n}\n","import type {\n  Type,\n} from '@angular/core';\nimport type {\n  Context,\n} from '@o3r/core';\n\n/** Interface for grouping the arrays needed for custom component registration */\nexport interface EntryCustomComponents {\n\n  /** Array of custom presenters */\n  customComponents: Type<any>[];\n\n  /** Array of custom presenter modules */\n  customComponentsModules: Type<any>[];\n}\n\n/**\n *  Register a custom component\n * @param customComponentsMap an object containing the already registered custom component\n * @param customComponentKey\n * @param customComponent\n */\nexport function registerCustomComponent<T extends Context>(\n    customComponentsMap: Map<string, Type<T>>, customComponentKey: string, customComponent: Type<T>) {\n  customComponentsMap.set(customComponentKey, customComponent);\n  return customComponentsMap;\n}\n","import {\n  InjectionToken,\n} from '@angular/core';\n\n/** The C11n injection token */\nexport const C11N_PRESENTERS_MAP_TOKEN: InjectionToken<string> = new InjectionToken('C11n injection token');\n\n/** Function used to register custom components */\nexport const C11N_REGISTER_FUNC_TOKEN: InjectionToken<string> = new InjectionToken('C11n register presenters token');\n","import {\n  Inject,\n  Injectable,\n  Type,\n} from '@angular/core';\nimport type {\n  Configuration,\n  Context,\n} from '@o3r/core';\nimport {\n  Observable,\n} from 'rxjs';\nimport {\n  distinctUntilChanged,\n  map,\n} from 'rxjs/operators';\nimport {\n  C11N_PRESENTERS_MAP_TOKEN,\n} from './c11n.token';\n\n@Injectable()\nexport class C11nService {\n  private readonly presentersMap: Map<string, any>;\n\n  constructor(@Inject(C11N_PRESENTERS_MAP_TOKEN) presentersMap: Map<string, any>) {\n    this.presentersMap = presentersMap;\n  }\n\n  /**\n   * Add a presenter\n   * @param presKey The presenter key to set\n   * @param presenter The new presenter\n   */\n  public addPresenter<T extends Context>(presKey: string, presenter: Type<T>) {\n    this.presentersMap.set(presKey, presenter);\n  }\n\n  /**\n   * Operator to retrieve the presenter based on a given presKey\n   * @param defaultPres The default presenter\n   * @param presKey The presenter key to retrieve\n   */\n  public getPresenter<T extends Context>(defaultPres: Type<T>, presKey = 'customPresKey') {\n    return (source: Observable<Configuration>): Observable<Type<T>> =>\n      source.pipe(\n        distinctUntilChanged((p, q) => p[presKey] === q[presKey]),\n        map((config) => {\n          const presenterConfig = config[presKey];\n          return typeof presenterConfig === 'string' && presenterConfig !== '' ? (this.presentersMap.get(presenterConfig) || defaultPres) : defaultPres;\n        })\n      );\n  }\n}\n","import {\n  Directive,\n  Injectable,\n  NgModule,\n} from '@angular/core';\nimport {\n  Observable,\n} from 'rxjs';\nimport {\n  mapTo,\n} from 'rxjs/operators';\nimport {\n  C11nService,\n} from './c11n.service';\n\n/** C11n directive mock */\n@Directive({\n  selector: '[c11n]',\n  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property -- mocked directive\n  inputs: ['config', 'component', 'inputs', 'outputs'],\n  standalone: false\n})\nexport class MockC11nDirective {}\n\n/** C11n service mock */\n@Injectable()\nexport class C11nMockService {\n  public addPresenter(_presKey: string, _presType: any) {}\n  public getPresenter(_defaultPres: any, _presKey: string) {\n    return (source: Observable<any>) => source.pipe(mapTo(null));\n  }\n}\n\n/**\n * The purpose of this module is to be imported in the unit tests of the components which are using c11n directive\n */\n@NgModule({\n  declarations: [MockC11nDirective],\n  exports: [MockC11nDirective],\n  providers: [{ provide: C11nService, useClass: C11nMockService }]\n})\nexport class C11nMockModule {}\n","import {\n  ModuleWithProviders,\n  NgModule,\n} from '@angular/core';\nimport {\n  C11nDirective,\n} from './c11n.directive';\nimport {\n  C11nService,\n} from './c11n.service';\nimport {\n  C11N_REGISTER_FUNC_TOKEN,\n} from './c11n.token';\n\n/**\n * Customization service factory\n * @param config -> registerCompFunc - a function which returns the map of custom components which will be injected in c11n service\n * @param config.registerCompFunc\n */\nexport function createC11nService(config: { registerCompFunc: () => Map<string, any> }) {\n  if (!config) {\n    return new C11nService(new Map());\n  }\n  const custoComp = config.registerCompFunc();\n  return new C11nService(custoComp);\n}\n\n@NgModule({\n  declarations: [C11nDirective],\n  exports: [C11nDirective]\n})\nexport class C11nModule {\n  /**\n   * Get the module with providers for the root component\n   * @param config -> registerCompFunc - a function which returns the map of custom components which will be injected in c11n service\n   * @param config.registerCompFunc\n   */\n  public static forRoot(config: { registerCompFunc: () => Map<string, any> }): ModuleWithProviders<C11nModule> {\n    return {\n      ngModule: C11nModule,\n      providers: [{\n        provide: C11N_REGISTER_FUNC_TOKEN,\n        useValue: config\n      },\n      {\n        provide: C11nService, useFactory: createC11nService, deps: [C11N_REGISTER_FUNC_TOKEN]\n      }]\n    };\n  }\n}\n","import {\n  Pipe,\n  PipeTransform,\n} from '@angular/core';\n\n@Pipe({ name: 'o3rCapitalize' })\nexport class O3rCapitalizePipe implements PipeTransform {\n  public transform(value?: any) {\n    const val: string | undefined = value && value.toString && value.toString();\n    const firstLetter: string | undefined = val && val.charAt(0);\n    return firstLetter ? firstLetter.toUpperCase() + val!.slice(1) : value;\n  }\n}\n","/** Time object to format duration */\nexport interface TimeUnit {\n  /** character defining the time unit */\n  formatCharacter: string;\n  /** divider to get the time unit value */\n  divider: number;\n  /**\n   * modulo for the time unit\n   * If not provided, it will either use the immediately higher unit time divider\n   * or Number.MAX_SAFE_INTEGER for the highest one\n   */\n  modulo?: number;\n}\n\n/** const array of ordered measurement unit time from the highest unit to the lowest (days to seconds) */\nexport const defaultTimeUnits: TimeUnit[] = [\n  {\n    formatCharacter: 'd',\n    divider: 3600 * 24\n  },\n  {\n    formatCharacter: 'h',\n    divider: 3600\n  },\n  {\n    formatCharacter: 'm',\n    divider: 60\n  },\n  {\n    formatCharacter: 's',\n    divider: 1\n  }\n];\n","import {\n  Pipe,\n  PipeTransform,\n} from '@angular/core';\nimport {\n  defaultTimeUnits,\n  TimeUnit,\n} from './duration.model';\n\n/**\n * Pad a number with zeroes\n * @param num\n * @param digits\n */\nfunction padNum(num: number, digits: number) {\n  let strNum = String(num);\n  while (strNum.length < digits) {\n    strNum = '0' + strNum;\n  }\n  return strNum;\n}\n\n/**\n * Converts a duration in seconds into the HH:mm format\n */\n@Pipe({ name: 'o3rDuration' })\nexport class O3rDurationPipe implements PipeTransform {\n  /**\n   * Converts a duration in seconds into the HH:mm format\n   * @param value the value in seconds\n   * @param pattern the desired output format.\n   * The pattern takes into account static format characters surrounded by braces\n   *   {d} for days, {h} for hours, {m} for minutes and {s} for seconds.\n   * It accepts a double unit time in case a padding is wanted {dd} outputs 05 for instance\n   * Should respect the following pattern `/(\\{h+\\})|(\\{m+\\})/` (ex: `'{h}h{m}m'` outputs `0h2m`, `'{h}H{mm}'` `0H02` etc.)\n   * @param timeUnits the units time to be used in this transformation. This can be used for custom units in the pattern like\n   *  {\n   *    formatCharacter: 'w',\n   *    divider: 3600 * 24 * 7\n   *  }\n   * The above defines a week for {w}\n   */\n  public transform(value?: number, pattern = '{h}:{mm}', timeUnits: TimeUnit[] = defaultTimeUnits) {\n    const val = value || 0;\n    let modulo = Number.MAX_SAFE_INTEGER;\n\n    const matches = timeUnits.reduce<{\n      textMatch: string;\n      timeUnit: TimeUnit;\n    }[]>((result, unit) => {\n      const regexp = new RegExp('({' + unit.formatCharacter + '+})', 'g');\n      const match = regexp.exec(pattern);\n      if (!match) {\n        return result;\n      }\n      return result.concat({\n        textMatch: match[0],\n        timeUnit: unit\n      });\n    }, []);\n\n    return matches.reduce((result, match) => {\n      const matchedPatternToReplace = match.textMatch;\n      const unit = match.timeUnit;\n      const unitTimeValue = Math.floor(val % (unit.modulo || modulo) / unit.divider);\n      const unitMatchLength = (matchedPatternToReplace.match(new RegExp(unit.formatCharacter, 'g')) || []).length;\n      const padded = padNum(unitTimeValue, unitMatchLength);\n      modulo = unitTimeValue > 0 ? unit.divider : modulo;\n      return result.replace(matchedPatternToReplace, padded);\n    }, pattern);\n  }\n}\n","import {\n  Pipe,\n  PipeTransform,\n} from '@angular/core';\n\n@Pipe({ name: 'o3rKeepWhiteSpace' })\nexport class O3rKeepWhiteSpacePipe implements PipeTransform {\n  public transform(value: string): string {\n    return value.replace(/\\s/g, '&nbsp;');\n  }\n}\n","import {\n  Pipe,\n  PipeTransform,\n} from '@angular/core';\n\nconst escapeRegExp = (str: string) => str.replace(/[$()*+./?[\\\\\\]^{|}-]/g, '\\\\$&');\n\n@Pipe({ name: 'o3rReplaceWithBold' })\nexport class O3rReplaceWithBoldPipe implements PipeTransform {\n  public transform(value: string, inputText: string): string {\n    if (inputText) {\n      const regexp = new RegExp(escapeRegExp(inputText.trim()), 'gi');\n      return value.replace(regexp, (match) => `<strong>${match}</strong>`);\n    } else {\n      return value;\n    }\n  }\n}\n","import {\n  AfterViewChecked,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  DestroyRef,\n  inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  type Signal,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {\n  takeUntilDestroyed,\n} from '@angular/core/rxjs-interop';\nimport {\n  Store,\n} from '@ngrx/store';\nimport {\n  sendOtterMessage,\n} from '@o3r/core';\nimport {\n  BehaviorSubject,\n  ReplaySubject,\n  sample,\n  Subject,\n} from 'rxjs';\nimport {\n  distinctUntilChanged,\n  filter,\n  map,\n  switchMap,\n} from 'rxjs/operators';\nimport {\n  type PlaceholderMode,\n  PlaceholderTemplateStore,\n  selectPlaceholderTemplateMode,\n  selectSortedTemplates,\n} from '../../stores/placeholder-template';\nimport {\n  PlaceholderLoadingStatus,\n  PlaceholderLoadingStatusMessage,\n} from './placeholder.interface';\n\n/**\n * Placeholder component that is bind to the PlaceholderTemplateStore to display a template based on its ID\n * A loading indication can be provided via projection\n * @example\n *  <o3r-placeholder id=\"my-template-id\">Is loading ...</o3r-placeholder>\n */\n@Component({\n  selector: 'o3r-placeholder',\n  templateUrl: './placeholder.template.html',\n  styleUrl: './placeholder.style.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '[class.debug]': `mode() === 'debug'`\n  },\n  standalone: false\n})\nexport class PlaceholderComponent implements OnInit, OnDestroy, AfterViewChecked {\n  public readonly id$ = new BehaviorSubject<string | undefined>(undefined);\n\n  private readonly afterViewInit$ = new Subject<void>();\n\n  private readonly messages$ = new ReplaySubject<PlaceholderLoadingStatus>(1);\n\n  /** Determine if the placeholder content is pending */\n  public isPending?: boolean;\n\n  /** Generated HTML template */\n  public template?: string;\n\n  public mode: Signal<PlaceholderMode>;\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  /** template identify */\n  @Input()\n  public set id(value: string) {\n    this.id$.next(value);\n  }\n\n  constructor(private readonly store: Store<PlaceholderTemplateStore>, private readonly cd: ChangeDetectorRef) {\n    this.mode = this.store.selectSignal(selectPlaceholderTemplateMode);\n  }\n\n  /** @inheritdoc */\n  public ngOnInit() {\n    this.id$.pipe(\n      filter((id): id is string => !!id),\n      distinctUntilChanged(),\n      switchMap((id: string) =>\n        this.store.select(selectSortedTemplates(id)).pipe(\n          map((placeholders) => ({\n            id,\n            orderedTemplates: placeholders?.orderedTemplates,\n            isPending: placeholders?.isPending\n          })),\n          distinctUntilChanged((previous, current) =>\n            previous.id === current.id\n            && previous.isPending === current.isPending\n            && previous.orderedTemplates?.map((placeholder) => placeholder.renderedTemplate).join('')\n            === current.orderedTemplates?.map((placeholder) => placeholder.renderedTemplate).join('')\n          )\n        )\n      )\n    ).subscribe(({ id, orderedTemplates, isPending }) => {\n      this.isPending = isPending;\n      this.template = orderedTemplates?.length\n        // Concatenates the list of templates\n        ? orderedTemplates.map((placeholder) => placeholder.renderedTemplate).join('')\n        : undefined;\n      if (this.isPending === false) {\n        this.messages$.next({\n          templateIds: this.isPending ? [] : (orderedTemplates || []).map((placeholder) => placeholder.resolvedUrl),\n          placeholderId: id\n        });\n      }\n      this.cd.markForCheck();\n    });\n    this.messages$.pipe(\n      takeUntilDestroyed(this.destroyRef),\n      sample(this.afterViewInit$),\n      distinctUntilChanged((previous, current) => JSON.stringify(current) === JSON.stringify(previous))\n    ).subscribe({\n      next: (data) =>\n        sendOtterMessage<PlaceholderLoadingStatusMessage>('placeholder-loading-status', data, false),\n      complete: () =>\n        sendOtterMessage<PlaceholderLoadingStatusMessage>('placeholder-loading-status', {\n          placeholderId: this.id$.value,\n          templateIds: []\n        }, false)\n    });\n  }\n\n  public ngAfterViewChecked() {\n    // Make sure the view is rendered before posting the status\n    this.afterViewInit$.next();\n  }\n\n  /** @inheritdoc */\n  public ngOnDestroy() {\n    this.id$.complete();\n    this.messages$.complete();\n    this.afterViewInit$.complete();\n  }\n}\n","<ng-template #projection>\n  <ng-content></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","import {\n  CommonModule,\n} from '@angular/common';\nimport {\n  NgModule,\n} from '@angular/core';\nimport {\n  StoreModule,\n} from '@ngrx/store';\nimport {\n  PlaceholderRequestStoreModule,\n} from '../../stores/placeholder-request/index';\nimport {\n  PlaceholderTemplateStoreModule,\n} from '../../stores/placeholder-template/index';\nimport {\n  PlaceholderComponent,\n} from './placeholder.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    StoreModule,\n    PlaceholderTemplateStoreModule,\n    PlaceholderRequestStoreModule\n  ],\n  declarations: [PlaceholderComponent],\n  exports: [PlaceholderComponent]\n})\nexport class PlaceholderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["actions.cancelPlaceholderRequest","actions.updatePlaceholderRequestEntity","actions.updatePlaceholderRequestEntitySync","actions.setPlaceholderRequestEntityFromUrl","actions.failPlaceholderRequestEntity","selectEntities","actions.setPlaceholderTemplateEntity","actions.deletePlaceholderTemplateEntity","actions.togglePlaceholderModeTemplate"],"mappings":"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"}