{"version":3,"file":"sinequa-ngx-ui-builder.mjs","sources":["../../../projects/lib/src/dynamic-views/zone/zone-context.service.ts","../../../projects/lib/src/configurable/configurable.service.ts","../../../projects/lib/src/configurable/configurable.directive.ts","../../../projects/lib/src/configuration/config.actions.ts","../../../projects/lib/src/configuration/config.reducer.ts","../../../projects/lib/src/configuration/config.selectors.ts","../../../projects/lib/src/configuration/config.service.ts","../../../projects/lib/src/configuration/config.module.ts","../../../projects/lib/src/utils/autocomplete/autocomplete.component.ts","../../../projects/lib/src/utils/directive/template-name.directive.ts","../../../projects/lib/src/utils/directive/model-change.directive.ts","../../../projects/lib/src/utils/directive/tooltip.directive.ts","../../../projects/lib/src/utils/modal/modal.component.ts","../../../projects/lib/src/utils/toast/toast.service.ts","../../../projects/lib/src/utils/toast/toast.component.ts","../../../projects/lib/src/utils/toast/toast.component.html","../../../projects/lib/src/utils/svg-icon/types.ts","../../../projects/lib/src/utils/svg-icon/registry.ts","../../../projects/lib/src/utils/svg-icon/svg-icon.component.ts","../../../projects/lib/src/configurator/editors/class-editor.component.ts","../../../projects/lib/src/conditions/conditions.service.ts","../../../projects/lib/src/configurator/editors/condition-editor.component.ts","../../../projects/lib/src/configurator/editors/condition-editor.component.html","../../../projects/lib/src/configurator/editors/flex-editor.component.ts","../../../projects/lib/src/configurator/editors/flex-editor.component.html","../../../projects/lib/src/configurator/editors/html-editor.component.ts","../../../projects/lib/src/configurator/editors/spacing-editor.component.ts","../../../projects/lib/src/dynamic-views/drag-drop.service.ts","../../../projects/lib/src/configurator/palette/palette.component.ts","../../../projects/lib/src/configurator/palette/palette.component.html","../../../projects/lib/src/configurator/toolbar/toolbar.component.ts","../../../projects/lib/src/configurator/toolbar/toolbar.component.html","../../../projects/lib/src/configurator/tree/tree.component.ts","../../../projects/lib/src/configurator/tree/tree.component.html","../../../projects/lib/src/configurator/checkbox/checkbox.component.ts","../../../projects/lib/src/configurator/color-picker/color-picker.component.ts","../../../projects/lib/src/configurator/image-selector/img-selector.component.ts","../../../projects/lib/src/configurator/multi-selector/multi-selector.component.ts","../../../projects/lib/src/configurator/multi-selector/multi-selector.component.html","../../../projects/lib/src/configurator/configurator.component.ts","../../../projects/lib/src/configurator/configurator.component.html","../../../projects/lib/src/configurator/configurator.models.ts","../../../projects/lib/src/conditions/condition.pipe.ts","../../../projects/lib/src/dynamic-views/item/item.component.ts","../../../projects/lib/src/dynamic-views/item/item.component.html","../../../projects/lib/src/dynamic-views/zone/zone.component.ts","../../../projects/lib/src/dynamic-views/zone/zone.component.html","../../../projects/lib/src/svg/svg-icons.ts","../../../projects/lib/src/utils/svg-icon/svg-icon.module.ts","../../../projects/lib/src/uib.module.ts","../../../projects/lib/src/public-api.ts","../../../projects/lib/src/sinequa-ngx-ui-builder.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\nimport { TemplateNameDirective } from \"../../utils/directive/template-name.directive\";\r\n\r\n@Injectable()\r\nexport class ZoneContextService {\r\n  /**\r\n   * zone's id\r\n   */\r\n  id: string;\r\n  /**\r\n   * additional template's data. If data is an array, an *ngFor will be done using\r\n   * each data's items\r\n   */\r\n  data?: any;\r\n  /**\r\n   * conditional display rules\r\n   */\r\n  conditionsData?: Record<string, unknown>;\r\n\r\n  /**\r\n   * TemplateNameDirective's collection\r\n   */\r\n  templates: Record<string, TemplateNameDirective> = {};\r\n\r\n  /**\r\n   * When data or conditionsData change, emit changes\r\n   */\r\n  changes$ = new Subject<{data: unknown, conditionsData: Record<string, unknown> | undefined}>();\r\n\r\n  update(state:{data: unknown, conditionsData: Record<string, unknown> | undefined}) {\r\n    this.data = state.data;\r\n    this.conditionsData = state.conditionsData;\r\n\r\n    this.changes$.next(state);\r\n  }\r\n}","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { TemplateNameDirective } from '../utils/directive/template-name.directive';\nimport {ConfigurableDirective} from './configurable.directive';\n\nexport interface Configurable {\n  id: string;\n  parentId: string;\n  zone: string;\n  templates?: Record<string, TemplateNameDirective>;\n  data?: any;\n  dataIndex?: number;\n  conditionsData?: Record<string, any>;\n  removeEdited: () => void;\n  removeSelected: () => void;\n  removeHighlight?: () => void;\n  addHighlight?: () => void;\n  highlight?: () => void;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ConfigurableService {\n  private _hoveredId?: string;\n\n  /**\n   * currently edited element'id.\n   * Can be undefined when element is unselected\n   */\n  edited$ = new BehaviorSubject<Configurable | undefined>(undefined);\n\n  /**\n   * behavior subject as we need to retrieve the previous value to toggle it\n   */\n  editorEnabled$ = new BehaviorSubject<boolean>(false);\n\n  /**\n   * previous edited element\n   */\n  previousConfigurableElement?: Configurable;\n\n  /**\n   * configurable service must subscribe to store'changes events (config service)\n   */\n  configurableDirectiveMap: Map<string, ConfigurableDirective> = new Map<string, ConfigurableDirective>();\n\n  set hoveredId(id: string | undefined) {\n    this._hoveredId = id;\n  }\n  get hoveredId(): string | undefined {\n    return this._hoveredId;\n  }\n\n  /**\n   * Set the hover's id element when not undefined\n   * @param {string | undefined} id - The id of the configurable element\n   */\n  mouseoverConfigurable(id: string | undefined) {\n    if (this._hoveredId === undefined) {\n      this._hoveredId = id;\n    }\n  }\n\n  /**\n   * Set the hover's id element when different from the current hovered element\n   * @param id {string | undefined} id - The id of the configurable element\n   */\n  mouseenterConfigurable(id: string | undefined) {\n    if (id !== this.hoveredId) {\n      this._hoveredId = id;\n    }\n  }\n\n  /**\n   * When mouse leave configurable element, set hover's id to undefined\n   */\n  mouseleaveConfigurable() {\n    this._hoveredId = undefined;\n  }\n\n  clickConfigurable(configurable: Configurable) {\n    if (!this.previousConfigurableElement) {\n      // previous is undefined\n      this.previousConfigurableElement = configurable;\n    }\n    else if (this.previousConfigurableElement.id !== configurable.id\n      || (this.previousConfigurableElement.id === configurable.id && this.previousConfigurableElement.zone !== configurable.zone)) {\n      // previous element exist and his id don't match with the new configurable element\n\n      this.previousConfigurableElement.removeEdited();\n      this.previousConfigurableElement.removeSelected();\n      this.previousConfigurableElement = configurable;\n    }\n    else if (this.previousConfigurableElement.id === configurable.id && this.previousConfigurableElement.zone === configurable.zone) {\n      // same id and same zone\n      this.previousConfigurableElement = undefined;\n      this.edited$.next(undefined);\n      return;\n    }\n\n    this.edited$.next(configurable);\n  }\n\n  stopEditing() {\n    this.previousConfigurableElement?.removeEdited();\n    this.previousConfigurableElement?.removeSelected();\n    this.previousConfigurableElement = undefined;\n    this.edited$.next(undefined);\n  }\n\n  watchEdited(): Observable<Configurable> {\n    return this.edited$.pipe(filter(this.isConfigurable));\n  }\n\n  isConfigurable = (configurable: Configurable | undefined): configurable is Configurable => {\n    return !!configurable;\n  }\n\n  toggleEditor() {\n    const enabled = !this.editorEnabled$.value;\n    this.editorEnabled$.next(enabled);\n  }\n}\n","import {\n  ChangeDetectorRef,\n  Directive,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n} from '@angular/core';\nimport { filter, fromEvent, map, merge, Subscription } from 'rxjs';\nimport { ZoneContextService } from '../dynamic-views/zone/zone-context.service';\n\nimport { Configurable, ConfigurableService } from './configurable.service';\n\n@Directive({\n  selector: '[uib-configurable]',\n  standalone: true\n})\nexport class ConfigurableDirective implements OnInit, OnDestroy {\n  /**\n   * Element's id (not zone's id)\n   */\n  @Input() id: string;\n  /**\n   * Parent's element id\n   */\n  @Input() parentId: string;\n  /**\n   * When zone's data exists, which index is used to display the relative data's informations\n   */\n  @Input() dataIndex?: number;\n  @Input(\"uib-disable-if\") disableIf?: any;\n\n  nativeElement: HTMLElement;\n\n  private subscription: Subscription;\n\n  constructor(\n    public zoneRef: ZoneContextService,\n    private configurableService: ConfigurableService,\n    private renderer: Renderer2,\n    private cdr: ChangeDetectorRef,\n    { nativeElement }: ElementRef\n  ) {\n    this.nativeElement = nativeElement;\n  }\n\n  ngOnInit(): void {\n    this.configurableService.configurableDirectiveMap.set(this.id, this);\n\n    this.subscription = merge(\n      fromEvent(this.nativeElement, \"mouseover\"),\n      fromEvent(this.nativeElement, \"mouseenter\"),\n      fromEvent(this.nativeElement, \"mouseleave\")\n    ).pipe(\n      filter(() => !this.disableIf),\n      map(x => x?.type)\n    ).subscribe(type => {\n      switch (type) {\n        case \"mouseover\":\n          this.configurableService.mouseoverConfigurable(this.id);\n          break;\n        case \"mouseenter\":\n          this.configurableService.mouseenterConfigurable(this.id);\n          break;\n        case \"mouseleave\":\n          this.configurableService.mouseleaveConfigurable();\n          break;\n      }\n      this.cdr.markForCheck();\n      })\n  }\n\n  ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n  @HostBinding('class')\n  get _class() {\n    if(this.disableIf) return '';\n    return `uib-configurable ${this.highlight() ? 'highlight' : ''}`;\n  }\n\n  @HostListener('click', ['$event'])\n  click(event: MouseEvent) {\n    if(this.disableIf) return;\n    event.stopPropagation();\n\n    // before to set 'edited' class to current element\n    // send it to configurableService to update the previous element and call it's removeEdited() method\n    const conf: Configurable = {\n      id: this.id,\n      parentId: this.parentId,\n      dataIndex: this.dataIndex,\n      zone: this.zoneRef.id,\n      templates: this.zoneRef.templates,\n      data: this.zoneRef.data,\n      conditionsData: this.zoneRef.conditionsData,\n      removeEdited: this.removeEdited.bind(this),\n      removeSelected: this.removeSelected.bind(this)\n    };\n    this.configurableService.clickConfigurable(conf);\n\n    // now, previous 'edited' class should be correct,\n    // we can safely set the 'edited' class to the current element\n    if (this.nativeElement.classList.contains('edited')) {\n      this.removeEdited();\n      this.removeSelected();\n    } else {\n      if (this.zoneRef.id) {\n        const el = this.configurableService.configurableDirectiveMap.get(this.zoneRef.id);\n        el?.nativeElement.setAttribute(\"selected\",\"\")\n      }\n\n      this.renderer.addClass(this.nativeElement, 'edited');\n    }\n  }\n\n  /**\n   * removes the `edited` class from the `nativeElement`\n   */\n  removeEdited() {\n    this.renderer.removeClass(this.nativeElement, 'edited');\n  }\n\n  /**\n   * removes the `selected` class from the `nativeElement`\n   */\n  removeSelected() {\n    if (this.zoneRef.id) {\n      const el = this.configurableService.configurableDirectiveMap.get(this.zoneRef.id);\n      el?.nativeElement.removeAttribute(\"selected\");\n    }\n  }\n\n  /**\n   * removes the `highlight` class from the `nativeElement`\n   */\n  removeHighlight() {\n    this.renderer.removeClass(this.nativeElement, 'highlight');\n  }\n\n  /**\n   * adds the `highlight` class to the `nativeElement`\n   */\n  addHighlight() {\n    this.renderer.addClass(this.nativeElement, 'highlight');\n  }\n\n  /**\n   * If the id of the current instance of the component is the same as the id of\n   * the hovered component, then return true\n   * @returns The id of the current item is being compared to the hoveredId of the\n   * configurableService.\n   */\n  highlight() {\n    return this.id === this.configurableService.hoveredId;\n  }\n}\n","import { createAction, props } from \"@ngrx/store\";\nimport { ComponentConfig } from \"./config.model\";\n\n/**\n * Initialize the configuration\n */\nexport const initConfig = createAction('INIT', props<{config: ComponentConfig[]}>());\n\n/**\n * Remove the current configuration and set a new one\n */\nexport const setConfig = createAction('SET', props<{config: ComponentConfig[]}>());\n\n/**\n * Add a new configuration item\n */\nexport const addConfig = createAction('ADD', props<{config: ComponentConfig}>());\n\n/**\n * Remove an existing configuration item\n */\nexport const removeConfig = createAction('REMOVE', props<{id: string}>());\n\n/**\n * Update an existing configuration item (or list of items)\n */\nexport const updateConfig = createAction('UPDATE', props<{config: ComponentConfig | ComponentConfig[]}>());\n","import { createFeature, on } from \"@ngrx/store\";\nimport { initialUndoRedoState, undoRedo, UndoRedoState } from \"ngrx-wieder\";\nimport { addConfig, initConfig, removeConfig, setConfig, updateConfig } from \"./config.actions\";\nimport { ComponentConfig } from \"./config.model\";\n\nexport interface ConfigState extends UndoRedoState {\n  config: {[id: string]: ComponentConfig};\n}\n\nconst { createUndoRedoReducer } = undoRedo({\n  allowedActionTypes: [addConfig.type, removeConfig.type, updateConfig.type],\n  maxBufferSize: Number.MAX_SAFE_INTEGER\n});\n\nfunction storeConfig(state: ConfigState, config: ComponentConfig[]) {\n  for(let c of config) {\n    state.config[c.id] = c;\n  }\n  return state;\n}\n\nconst reducer = createUndoRedoReducer<ConfigState>(\n  {config: {}, ...initialUndoRedoState},\n\n  on(initConfig, (state, {config}) => storeConfig(state, config)),\n\n  on(setConfig, (state, {config}) => {\n    // Clear current state\n    for(let key of Object.keys(state)) {\n      delete state[key];\n    }\n    // Add new state\n    return storeConfig(state, config);\n  }),\n\n  on(addConfig, (state, {config}) => {\n    if(state.config[config.id]) {\n      throw new Error(`Config ${config.id} already exists.`);\n    }\n    return storeConfig(state, [config]);\n  }),\n\n  on(removeConfig, (state, {id}) => {\n    delete state.config[id];\n    return state;\n  }),\n\n  on(updateConfig, (state, {config}) => {\n    if(!Array.isArray(config)) config = [config];\n    return storeConfig(state, config);\n  })\n);\n\n\nexport const uibConfig = createFeature({ name: 'uibConfig', reducer });\n","import { createSelector } from \"@ngrx/store\";\nimport { createHistorySelectors } from \"ngrx-wieder\";\nimport { uibConfig, ConfigState } from \"./config.reducer\";\n\nconst selectConfig = uibConfig.selectUibConfigState;\n\nexport const selectAll = createSelector(selectConfig, (s: ConfigState) => Object.values(s.config));\nexport const selectItem = (id: string) => createSelector(selectConfig, (s: ConfigState) => s.config[id]);\nexport const {\n  selectCanUndo,\n  selectCanRedo,\n} = createHistorySelectors(selectConfig);\n\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\nimport { filter, map, take } from 'rxjs/operators';\nimport { initConfig, removeConfig, setConfig, updateConfig } from './config.actions';\nimport { ComponentConfig, ContainerConfig } from './config.model';\nimport { selectAll, selectCanRedo, selectCanUndo, selectItem } from './config.selectors';\n\n@Injectable({ providedIn: 'root' })\nexport class ConfigService {\n\n  constructor(\n    public store: Store\n  ){}\n\n  /**\n   * Initialize configuration assuming the store is empty.\n   * No object is removed and the state history is not modified.\n   * @param config list of configuration items to manage\n   */\n  public init(config: ComponentConfig[]) {\n    this.store.dispatch(initConfig({config}));\n  }\n\n  /**\n   * Set the configuration assuming the store is not empty.\n   * All previously existing objects are removed and the state\n   * history is reset.\n   * @param config\n   */\n  public set(config: ComponentConfig[]) {\n    this.store.dispatch({type: 'CLEAR'}); // Clear the previous history, as the previous actions won't work on new objects\n    this.store.dispatch(setConfig({config}));\n  }\n\n  /**\n   * Watch any change in the configuration objects.\n   */\n  public watchAllConfig(): Observable<ComponentConfig[]> {\n    return this.store.select(selectAll);\n  }\n\n  /**\n   * @returns all current configuration\n   */\n  public getAllConfig(): ComponentConfig[] {\n    let config: ComponentConfig[] = [];\n    this.watchAllConfig().pipe(take(1)).subscribe(c => config = c);\n    return config;\n  }\n\n  /**\n   * Watch changes of one specific configuration object\n   */\n  public watchConfig(id: string): Observable<ComponentConfig> {\n    this.getConfig(id); // Ensure a value exists (if 'id' has no config)\n    return this.store.select(selectItem(id)).pipe(\n      filter(config => !!config),\n      map((config: ComponentConfig) => JSON.parse(JSON.stringify(config)))\n    );\n  }\n\n  private _getConfig(id: string): ComponentConfig | undefined {\n    let config: ComponentConfig | undefined;\n    this.store.select(selectItem(id))\n      .pipe(take(1))\n      .subscribe(c => config = c);\n    return config;\n  }\n\n  /**\n   * @returns the current configuration of a specific item with the given id\n   */\n  public getConfig(id: string): ComponentConfig {\n    let config = this._getConfig(id);\n    if (!config) {\n      config = { id, type: id };\n      this.store.dispatch(initConfig({config: [config]})); // Use init instead of add, because add is undoable\n    }\n    return JSON.parse(JSON.stringify(config)); // Deep copy\n  }\n\n  /**\n   * @returns the current configuration of a specific container item with the given id\n   */\n  public getContainer(id: string): ContainerConfig {\n    const config = this.getConfig(id);\n    if (!this.isContainerConfig(config)) {\n      throw `${id} is not a container`;\n    }\n    return config;\n  }\n\n  /**\n   * @returns true if the configuration with the given id is a container\n   */\n  public isContainer(id: string): boolean {\n    return this.isContainerConfig(this._getConfig(id));\n  }\n\n  /**\n   * @returns true if the given configuration is a container\n   */\n  public isContainerConfig(conf: ComponentConfig|undefined): conf is ContainerConfig {\n    return conf?.type === '_container';\n  }\n\n  /**\n   * Test whether a given component id is used within the hierarchy of a container\n   */\n  public isUsed(id: string) {\n    return !!this.findParent(id);\n  }\n\n  /**\n   * @returns the configuration of a container that includes the given id as a child item\n   */\n  public findParent(id: string): ContainerConfig | undefined {\n    return this.getAllConfig()\n      .find(item => this.isContainerConfig(item) && item.items.includes(id)) as ContainerConfig | undefined;\n  }\n\n  /**\n   * Update the configuration of a given component or list of components\n   */\n  public updateConfig(config: ComponentConfig | ComponentConfig[]) {\n    this.store.dispatch(updateConfig({config}));\n  }\n\n  /**\n   * Remove the configuration of a component with the given id\n   */\n  public removeConfig(id: string) {\n    this.store.dispatch(removeConfig({id}));\n  }\n\n  /**\n   * @returns a new unique component id for the given component type\n   */\n  public generateId(type: string) {\n    let idx = 1;\n    let root = type.startsWith(\"_\")? type.slice(1) : type;\n    const tokens = type.split(\"-\");\n    if(tokens[tokens.length-1].match(/\\d+/)) {\n      idx = +tokens[tokens.length-1];\n      root = tokens.slice(0, tokens.length-1).join('-');\n    }\n    let id = root;\n    do {\n      id = `${root}-${idx++}`;\n    } while (this._getConfig(id) || id === type);\n    return id;\n  }\n\n  /**\n   * @returns an observable state for the possibility of undoing the last action\n   */\n  public canUndo$(): Observable<boolean> {\n    return this.store.select(selectCanUndo());\n  }\n\n  /**\n   * @returns an observable state for the possibility of redoing the next action\n   */\n  public canRedo$(): Observable<boolean> {\n    return this.store.select(selectCanRedo());\n  }\n\n  /**\n   * Undo the last action if possible\n   */\n  public undo() {\n    this.canUndo$().pipe(take(1)).subscribe(\n      can => can && this.store.dispatch({type: \"UNDO\"})\n    );\n  }\n\n  /**\n   * Redo the next action if possible\n   */\n  public redo() {\n    this.canRedo$().pipe(take(1)).subscribe(\n      can => can && this.store.dispatch({type: \"REDO\"})\n    );\n  }\n\n  public exportConfiguration() {\n    const config = JSON.stringify(this.getAllConfig(), null, 2);\n    var element = document.createElement('a');\n    element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(config));\n    element.setAttribute('download', \"config.json\");\n    element.style.display = 'none';\n    document.body.appendChild(element);\n    element.click();\n    document.body.removeChild(element);\n  }\n}\n","import { NgModule } from \"@angular/core\";\nimport { StoreModule } from \"@ngrx/store\";\nimport { uibConfig } from \"./config.reducer\";\n\n@NgModule({imports: [StoreModule.forFeature(uibConfig)]})\nexport class ConfigModule {}\n","import { CommonModule } from \"@angular/common\";\nimport { Component, Input, OnInit, Output, EventEmitter, ContentChild, TemplateRef } from \"@angular/core\";\nimport { fromEvent, merge, Observable, of } from \"rxjs\";\nimport { filter, switchMap } from \"rxjs/operators\";\n\n@Component({\n  selector: 'uib-autocomplete',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n<div class=\"position-relative\" *ngIf=\"suggests$ | async as suggests\" (mousedown)=\"clickInProgress = true\" (mouseup)=\"clickInProgress = false\">\n  <div class=\"card list-group list-group-flush position-absolute\" *ngIf=\"suggests.length\">\n    <div *ngFor=\"let suggest of suggests\" class=\"list-group-item-action px-2 py-1\" (click)=\"onSelect(suggest)\">\n      <ng-container *ngTemplateOutlet=\"itemTpl || defaultTpl; context:{$implicit: suggest}\"></ng-container>\n    </div>\n  </div>\n</div>\n\n<ng-template #defaultTpl let-suggest>{{suggest}}</ng-template>\n  `,\n  styles: [`\n.card {\n  z-index: 3;\n  box-shadow: 0 5px 7px rgb(0 0 0 / 8%);\n}\n.list-group {\n  top: 0;\n  width: 100%;\n  max-height: 200px;\n  overflow: auto;\n}\n.list-group-item-action {\n  cursor: pointer;\n}\n`]\n})\nexport class AutocompleteComponent implements OnInit {\n  @Input() inputElement: HTMLInputElement;\n  @Input() suggestGenerator?: (value: string) => Observable<string[]>;\n  @Input() allSuggests?: string[];\n  @Output() select = new EventEmitter<string>();\n  @ContentChild(\"itemTpl\", {static: false}) itemTpl: TemplateRef<any>;\n  suggests$ = new Observable<string[]>();\n  clickInProgress = false;\n\n  ngOnInit() {\n    this.suggests$ = merge(\n      fromEvent(this.inputElement, 'input'),\n      fromEvent(this.inputElement, 'focus'),\n      fromEvent(this.inputElement, 'blur').pipe(filter(() => (!this.clickInProgress))), // Filter out blur event caused by a click on the autocomplete\n      this.select // Hide the autocomplete when an item has been selected\n    ).pipe(\n      switchMap(event => {\n        if(typeof event !== 'string' && event.type !== 'blur') {\n          if(this.suggestGenerator) {\n            return this.suggestGenerator(this.inputElement.value);\n          }\n          else if(this.allSuggests) {\n            return of(this.allSuggests.filter(suggest => suggest !== this.inputElement.value && suggest.includes(this.inputElement.value)));\n          }\n        }\n        return of([]);\n      })\n    );\n  }\n\n  onSelect(value: string) {\n    this.inputElement.value = value;\n    this.select.next(value);\n  }\n\n}","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n  selector: '[uib-template]',\n  standalone: true\n})\nexport class TemplateNameDirective {\n  /**\n   * template's name\n   */\n  @Input('uib-template') name: string;\n\n  // Properties below are used by the configurator\n  /**\n   * name used by the configurator to identify the component\n   */\n  @Input('uib-templateDisplay') display?: string;\n  /**\n   * icon used by the configurator to identify the component\n   */\n  @Input('uib-templateIconClass') iconClass?: string;\n  /**\n   * description used by the configurator\n   */\n  @Input('uib-templateDescription') description?: string;\n\n  templateRef: TemplateRef<any>;\n\n  constructor(protected readonly _templateRef: TemplateRef<any>) {\n    this.templateRef = _templateRef;\n  }\n}\n","import { AfterContentInit, Directive, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\r\nimport { NgModel } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\n@Directive({\r\n  selector: '[ngModelChangeDebounced]',\r\n  standalone: true\r\n})\r\nexport class NgModelChangeDebouncedDirective implements OnDestroy, AfterContentInit {\r\n  @Input() ngModelDebounceTime = 1000;\r\n  @Output() ngModelChangeDebounced = new EventEmitter<any>()\r\n\r\n  private subs: Subscription;\r\n\r\n  constructor(private ngModel: NgModel) {}\r\n\r\n  ngAfterContentInit(): void {\r\n    this.subs = this.ngModel.update\r\n    .pipe(\r\n      distinctUntilChanged(),\r\n      debounceTime(this.ngModelDebounceTime),\r\n    )\r\n    .subscribe((value) => {\r\n      this.ngModelChangeDebounced.emit(value);\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.subs.unsubscribe();\r\n  }\r\n}","import { Directive, ElementRef, Input, OnChanges, OnDestroy } from \"@angular/core\";\nimport { Tooltip } from \"bootstrap\";\n\nexport type TooltipPlacement = 'auto' | 'top' | 'bottom' | 'left' | 'right';\n\n@Directive({\n  selector: '[uib-tooltip]',\n  standalone: true\n})\nexport class TooltipDirective implements OnChanges, OnDestroy {\n  @Input('uib-tooltip') html: string;\n\n  /**\n   * Allow Bootstrap tooltip's options configuration\n   *\n   * * `title`, `placement` and `container` options are removed from Bootstrap options as they use their own inputs.\n   * * `html`, `sanitize`, `delay` and `trigger` options are sets with different values as well by default but can\n   * be overriden here.\n   */\n  @Input() config?: Partial<Omit<Tooltip.Options, 'title' | 'placement' | 'container'>> = {\n    html: true,\n    sanitize: false,\n    delay: { show: 300, hide: 0 },\n    trigger: 'hover'\n  };\n\n  /**\n   * How to position the tooltip.\n   */\n  @Input() placement: TooltipPlacement = \"auto\";\n\n  /**\n   * Append the tooltip to a specific element.\n   *\n   * By default, tooltip is append to `uib-bootstrap` component.\n   * When `undefined`, tooltip is append to his host element.\n   */\n  @Input() container?: string | Element = \".uib-bootstrap\";\n\n  tooltip?: Tooltip;\n\n  constructor(public el: ElementRef){}\n\n  ngOnChanges() {\n    this.tooltip?.dispose(); // Force the creation of a new tooltip, or else the content is not updated\n    if(this.html) {\n      this.tooltip = Tooltip.getOrCreateInstance(this.el.nativeElement, {\n        ...this.config,\n        placement: this.placement,\n        title: this.html,\n        container: this.container || this.el.nativeElement\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    this.tooltip?.dispose();\n  }\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, Output, ViewChild } from \"@angular/core\";\nimport { Modal } from \"bootstrap\";\n\n@Component({\n  selector: 'uib-modal',\n  standalone: true,\n  template: `\n  <div class=\"modal fade\" #modal tabindex=\"-1\" aria-hidden=\"true\">\n    <div class=\"modal-dialog\">\n      <div class=\"modal-content\">\n        <div class=\"modal-header\">\n          <h5 class=\"modal-title\">{{title}}</h5>\n          <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n        </div>\n        <div class=\"modal-body\">\n          <ng-content></ng-content>\n        </div>\n        <div class=\"modal-footer\">\n          <button type=\"button\" class=\"btn btn-outline-secondary\" data-bs-dismiss=\"modal\">Cancel</button>\n          <button type=\"button\" class=\"btn btn-primary\" (click)=\"onModalClose(true)\">OK</button>\n        </div>\n      </div>\n    </div>\n  </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ModalComponent implements AfterViewInit, OnChanges, OnDestroy {\n\n  @ViewChild('modal', {static: true}) el: ElementRef;\n  @Input() title: string;\n  @Input() show: boolean;\n  @Output() close = new EventEmitter<boolean>();\n\n  modal?: Modal;\n\n  ngOnChanges() {\n    if(this.show && !this.modal) {\n      this.modal = Modal.getOrCreateInstance(this.el.nativeElement, {backdrop: false}); // Backdrop causes issues when the modal is embedded in a fixed container\n      this.modal.show();\n    }\n  }\n\n  ngOnDestroy() {\n    this.modal?.dispose();\n  }\n\n  ngAfterViewInit() {\n    this.el.nativeElement.addEventListener('hidden.bs.modal', () => this.onModalClose(false));\n  }\n\n  onModalClose(success: boolean) {\n    this.close.next(success);\n    this.modal?.hide();\n    this.modal = undefined;\n  }\n}\n","import { Injectable } from '@angular/core';\r\nimport { Toast } from 'bootstrap';\r\nimport { Subject } from 'rxjs';\r\n\r\nexport type BsStyle = 'info' | 'success' | 'warning' | 'danger' | 'primary' | 'secondary' | 'light' | 'dark';\r\n\r\nexport interface ToastAction {\r\n  text?: string;\r\n  style?: string | string;\r\n  icon?: string;\r\n  hideToast?: boolean;\r\n  action: () => void;\r\n}\r\n\r\nexport interface ToastMessage {\r\n  icon?: string;\r\n  message: string;\r\n  style?: BsStyle | string;\r\n  actions?: ToastAction[];\r\n  options?: Toast.Options;\r\n}\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class ToastService {\r\n\r\n  onToastMessage = new Subject<ToastMessage|null>();\r\n\r\n  show(\r\n    message: string,\r\n    style: BsStyle | string = 'info',\r\n    actions?: ToastAction[],\r\n    options?: Toast.Options\r\n  ) {\r\n    this.onToastMessage.next({message, style, actions, options});\r\n  }\r\n\r\n  hide() {\r\n    this.onToastMessage.next(null);\r\n  }\r\n\r\n}\r\n","import { AfterViewInit, Component, ElementRef, Input, OnDestroy, ViewChild } from '@angular/core';\r\nimport { Toast } from 'bootstrap';\r\nimport { Subscription } from 'rxjs';\r\nimport { ToastAction, ToastMessage, ToastService } from './toast.service';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n  selector: 'uib-toast',\r\n  standalone: true,\r\n  imports: [CommonModule],\r\n  templateUrl: './toast.component.html',\r\n  styles: [`\r\n  .alert {\r\n    width: 350px;\r\n    max-width: 100%;\r\n    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\r\n    z-index: 1046;\r\n  }\r\n  `]\r\n})\r\nexport class ToastComponent implements OnDestroy, AfterViewInit {\r\n  @ViewChild('toastRef', {static: true}) el: ElementRef\r\n\r\n  @Input() options: Toast.Options = {animation: true, autohide: true, delay: 5000};\r\n\r\n  toast: Toast;\r\n  message: ToastMessage|null;\r\n\r\n  private sub: Subscription;\r\n\r\n  constructor(private toastService: ToastService) {\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.sub = this.toastService.onToastMessage.subscribe((message: ToastMessage|null) => {\r\n      this.message = message;\r\n      if (this.el) {\r\n        if(message) {\r\n          this.toast = Toast.getOrCreateInstance(this.el.nativeElement, message.options || this.options);\r\n          this.toast.show();\r\n        }\r\n        else {\r\n          this.toast.hide();\r\n        }\r\n      } else {\r\n        console.warn('Toast not found!');\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.sub.unsubscribe();\r\n  }\r\n\r\n  onAction(action: ToastAction) {\r\n    action.action();\r\n    if(action.hideToast) {\r\n      this.toast.hide();\r\n    }\r\n  }\r\n}\r\n","<div #toastRef class=\"alert alert-{{message?.style}} fade position-fixed bottom-0 start-50 translate-middle-x align-items-center border-0 m-3\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\">\r\n  <div class=\"d-flex\" *ngIf=\"message\">\r\n    <div class=\"toast-body\">\r\n      <i [ngClass]=\"message.icon\" *ngIf=\"message.icon\"></i>\r\n      {{ message.message }}\r\n    </div>\r\n    <div class=\"ms-auto\">\r\n      <button type=\"button\" class=\"btn badge btn-{{action.style || message.style}}\" (click)=\"onAction(action)\" *ngFor=\"let action of message.actions\">\r\n        <i [ngClass]=\"action.icon\" *ngIf=\"action.icon\"></i>\r\n        {{action.text}}\r\n      </button>\r\n    </div>\r\n    <button type=\"button\" class=\"btn-close ms-2\" (click)=\"toast.hide()\" data-bs-dismiss=\"toast\" aria-label=\"Close\"></button>\r\n  </div>\r\n</div>\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface SvgIconType {\r\n  name: string;\r\n  data: string;\r\n}\r\n\r\nexport interface SVG_CONFIG {\r\n  icons?: SvgIconType | SvgIconType[];\r\n  color?: string;\r\n  defaultSize?: keyof SVG_CONFIG['sizes'];\r\n  missingIconFallback?: SvgIconType;\r\n  sizes: {\r\n    xs?: string;\r\n    sm?: string;\r\n    md?: string;\r\n    lg?: string;\r\n    xl?: string;\r\n    xxl?: string;\r\n  };\r\n}\r\n\r\nexport const SVG_ICONS_CONFIG = new InjectionToken<SVG_CONFIG>('SVG_ICONS_CONFIG');\r\nexport const SVG_ICONS = new InjectionToken<SVG_CONFIG['icons']>('SVG_ICONS');\r\nexport const SVG_MISSING_ICON_FALLBACK = new InjectionToken<SVG_CONFIG['missingIconFallback']>('SVG_MISSING_ICON_FALLBACK');\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable, Injector } from '@angular/core';\r\n\r\nimport { SVG_CONFIG, SVG_ICONS_CONFIG, SvgIconType } from './types';\r\n\r\nclass SvgIcon {\r\n  init = false;\r\n\r\n  constructor(public content: string) {}\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SvgIconRegistry {\r\n  private readonly svgMap = new Map<string, SvgIcon>();\r\n  private readonly document: Document;\r\n\r\n  constructor(injector: Injector, @Inject(SVG_ICONS_CONFIG) config: SVG_CONFIG) {\r\n    this.document = injector.get(DOCUMENT);\r\n\r\n    if (config.icons) {\r\n      this.register(config.icons);\r\n    }\r\n\r\n    if (config.missingIconFallback) {\r\n      this.register(config.missingIconFallback);\r\n    }\r\n  }\r\n\r\n  getAll() {\r\n    return this.svgMap;\r\n  }\r\n\r\n  get(key: string | undefined): string | undefined {\r\n    const icon = key && this.svgMap.get(key);\r\n\r\n    if (!icon) {\r\n      return undefined;\r\n    }\r\n\r\n    if (!icon.init) {\r\n      const svg = this.toElement(icon.content);\r\n      svg.setAttribute('fit', '');\r\n      svg.setAttribute('height', '100%');\r\n      svg.setAttribute('width', '100%');\r\n      svg.setAttribute('preserveAspectRatio', 'xMidYMid meet');\r\n      svg.setAttribute('focusable', 'false');\r\n\r\n      icon.content = svg.outerHTML;\r\n      icon.init = true;\r\n    }\r\n\r\n    return icon.content;\r\n  }\r\n\r\n  register(icons: SvgIconType | SvgIconType[]) {\r\n    for (const { name, data } of Array.isArray(icons) ? icons : [icons]) {\r\n      if (!this.svgMap.has(name)) {\r\n        this.svgMap.set(name, new SvgIcon(data));\r\n      }\r\n    }\r\n  }\r\n\r\n  getSvgElement(name: string): SVGSVGElement | undefined {\r\n    const content = this.get(name);\r\n\r\n    if (!content) {\r\n      return undefined;\r\n    }\r\n\r\n    const div = this.document.createElement('div');\r\n    div.innerHTML = content;\r\n\r\n    return div.querySelector('svg') as SVGSVGElement;\r\n  }\r\n\r\n  private toElement(content: string): SVGElement {\r\n    const div = this.document.createElement('div');\r\n    div.innerHTML = content;\r\n\r\n    return div.querySelector('svg') as SVGElement;\r\n  }\r\n}\r\n","import { ChangeDetectionStrategy, Component, ElementRef, Inject, Input } from '@angular/core';\r\n\r\nimport { SvgIconRegistry } from './registry';\r\nimport { SVG_CONFIG, SVG_ICONS_CONFIG } from './types';\r\n\r\n@Component({\r\n  selector: 'svg-icon',\r\n  standalone: true,\r\n  template: '',\r\n  host: {\r\n    role: 'img',\r\n    'aria-hidden': 'true',\r\n  },\r\n  styles: [\r\n    `\r\n      :host {\r\n        display: inline-block;\r\n        fill: currentColor;\r\n        font-size: 1rem;\r\n\r\n        transform: rotate(var(--rotate, 0deg));\r\n        transition: transform 0.2s ease-in-out;\r\n      }\r\n    `,\r\n  ],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SvgIconComponent {\r\n  @Input()\r\n  set key(name: string) {\r\n    const icon = this.registry.get(name) ?? this.registry.get(this.config.missingIconFallback?.name);\r\n\r\n    if (icon) {\r\n      this.element.setAttribute('aria-label', `${name}-icon`);\r\n      this.element.classList.remove(`svg-icon-${this.lastKey}`);\r\n      this.lastKey = name;\r\n      this.element.classList.add(`svg-icon-${name}`);\r\n      this.element.innerHTML = icon;\r\n    }\r\n  }\r\n\r\n  @Input()\r\n  set size(value: keyof SVG_CONFIG['sizes']) {\r\n    this.element.style.fontSize = this.mergedConfig.sizes[value];\r\n  }\r\n\r\n  @Input() set width(value: number | string) {\r\n    this.element.style.width = coerceCssPixelValue(value);\r\n  }\r\n\r\n  @Input() set height(value: number | string) {\r\n    this.element.style.height = coerceCssPixelValue(value);\r\n  }\r\n\r\n  @Input()\r\n  set fontSize(value: number | string) {\r\n    this.element.style.fontSize = coerceCssPixelValue(value);\r\n  }\r\n\r\n  @Input()\r\n  set color(color: string) {\r\n    this.element.style.color = color;\r\n  }\r\n\r\n  private mergedConfig: SVG_CONFIG;\r\n  private lastKey!: string;\r\n\r\n  constructor(\r\n    private host: ElementRef,\r\n    private registry: SvgIconRegistry,\r\n    @Inject(SVG_ICONS_CONFIG) private config: SVG_CONFIG\r\n  ) {\r\n    this.mergedConfig = this.createConfig();\r\n    this.element.style.fontSize = this.mergedConfig.sizes[this.mergedConfig.defaultSize || 'md'];\r\n  }\r\n\r\n  get element() {\r\n    return this.host.nativeElement;\r\n  }\r\n\r\n  private createConfig() {\r\n    const defaults: SVG_CONFIG = {\r\n      sizes: {\r\n        xs: '0.5rem',\r\n        sm: '0.75rem',\r\n        md: '1rem',\r\n        lg: '1.5rem',\r\n        xl: '2rem',\r\n        xxl: '2.5rem',\r\n      },\r\n    };\r\n\r\n    return {\r\n      ...defaults,\r\n      ...this.config,\r\n    };\r\n  }\r\n}\r\n\r\nfunction coerceCssPixelValue(value: any): string {\r\n  if (value == null) {\r\n    return '';\r\n  }\r\n\r\n  return typeof value === 'string' ? value : `${value}px`;\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { ConfiguratorContext } from '../configurator.models';\nimport { FormsModule } from '@angular/forms';\nimport { NgModelChangeDebouncedDirective } from '../../utils';\n\n@Component({\n  selector: 'uib-class-editor',\n  standalone: true,\n  imports: [FormsModule, NgModelChangeDebouncedDirective],\n  template: `\n  <label class=\"form-label\" for=\"classes\" i18n>CSS Classes</label>\n  <textarea\n    class=\"form-control\"\n    id=\"classes\"\n    type=\"text\"\n    name=\"classes\"\n    autocomplete=\"off\"\n    spellcheck=\"false\"\n    [(ngModel)]=\"context.config.classes\"\n    (ngModelChangeDebounced)=\"context.configChanged()\"\n  ></textarea>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ClassEditorComponent {\n  @Input() context: ConfiguratorContext;\n}\n","import { Injectable } from \"@angular/core\";\n\n\nexport interface Condition {\n  data?: string; // conditionsData selector (or undefined for the main data object)\n  field: string; // The field to select from the data object\n  type: 'equals' | 'regexp';\n  values: ConditionValue[];\n  or?: boolean;\n}\n\nexport interface ConditionValue {\n  value: string;\n  not?: boolean;\n  $regexp?: RegExp;\n}\n\n\n@Injectable({providedIn: 'root'})\nexport class ConditionsService {\n\n  public selectData(condition: Condition, conditionsData?: Record<string, any>, data?: any): any {\n    return condition.data? conditionsData?.[condition.data] : data;\n  }\n\n  public check(condition: Condition | undefined, conditionsData?: Record<string, any>, data?: any): boolean {\n    if(!condition) return true;\n    const selectData = this.selectData(condition, conditionsData, data);\n    return this.checkData(condition, selectData);\n  }\n\n  public writeCondition(condition: Condition) {\n    const operator = condition.or? ') OR (' : ') AND (';\n    return '('+condition.values.map(v => this.writeValue(condition, v)).join(operator)+')';\n  }\n\n  public writeValue(condition: Condition, value: ConditionValue) {\n    if(condition.type === 'regexp') {\n      const operator = value.not? '!' : '';\n      return `${operator}${condition.data || 'data'}['${condition.field}'].match(/${value.value}/)'`;\n    }\n    else if (condition.type === 'equals') {\n      const operator = value.not? '!==' : '==='\n      return `${condition.data || 'data'}['${condition.field}'] ${operator} '${value.value}'`;\n    }\n    return '';\n  }\n  \n  public checkData(condition: Condition, data?: any) {\n    const value = data?.[condition.field]?.toString() || '';\n    return this.checkCondition(condition, value);\n  }\n\n  private checkCondition(condition: Condition, data: string): boolean {\n    if(condition.or) {\n      return !!condition.values.find(v => this.checkSingleValue(condition, v, data));\n    }\n    else {\n      return condition.values.every(v => this.checkSingleValue(condition, v, data));\n    }\n  }\n\n  private checkSingleValue(condition: Condition, value: ConditionValue, data: string) {\n    let test;\n    if(condition.type === 'regexp') {\n      test = this.checkRegexp(value, data);\n    }\n    else if(condition.type === 'equals') {\n      test = this.checkEquals(value, data);\n    }\n    return test? !value.not : !!value.not;\n  }\n\n  \n  private checkEquals(condition: ConditionValue, value: string): boolean {\n    return condition.value.toLowerCase() === value.toLowerCase();\n  }\n\n\n  private checkRegexp(condition: ConditionValue, value: string) {\n    if(!condition.$regexp) {\n      try {\n        condition.$regexp = new RegExp(condition.value, 'i');\n      }\n      catch(e) {\n        console.warn(\"Incorrect regular expression \", condition.value);\n        return true;\n      }\n    }\n    return value.match(condition.$regexp);\n  }\n\n}","import { ChangeDetectionStrategy, Component, Input, OnChanges } from \"@angular/core\";\nimport { Condition, ConditionsService, ConditionValue } from \"../../conditions/conditions.service\";\nimport { ConfiguratorContext } from \"../configurator.models\";\nimport { AutocompleteComponent, NgModelChangeDebouncedDirective } from \"../../utils\";\nimport { FormsModule } from \"@angular/forms\";\nimport { CommonModule } from \"@angular/common\";\n\n@Component({\n  selector: 'uib-condition-editor',\n  standalone: true,\n  imports: [CommonModule, FormsModule, AutocompleteComponent, NgModelChangeDebouncedDirective],\n  templateUrl: './condition-editor.component.html',\n  styles: [`\n  .condition-value .btn {\n    width: 40px;\n  }\n  .autocomplete .list-group {\n    top: 0;\n    width: 100%;\n    max-height: 200px;\n    overflow: auto;\n  }\n  `],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ConditionEditorComponent implements OnChanges {\n  @Input() context: ConfiguratorContext;\n\n  // The data on which the current condition is evaluated\n  data: any;\n  // The data field on which the current condition is evaluated\n  fields: string[];\n  // The list of values tested by the current condition\n  values: string[];\n  // A debug text to understand the current condition\n  debugText: string;\n\n  constructor(\n    public conditionsService: ConditionsService\n  ){}\n\n  ngOnChanges() {\n    this.updateConfig(false);\n  }\n\n  updateConfig(notify = true) {\n    if(this.context.config.condition) {\n      this.updateData(this.context.config.condition);\n      this.updateFields();\n      this.updateValues(this.context.config.condition);\n      this.updateDebugText(this.context.config.condition);\n    }\n    if(notify) {\n      this.context.configChanged();\n    }\n  }\n\n  updateData(condition: Condition) {\n    const data = typeof this.context.context.dataIndex === 'undefined'?\n      this.context.context.data : this.context.context.data[this.context.context.dataIndex];\n    this.data = this.conditionsService.selectData(condition, this.context.context.conditionsData, data);\n  }\n\n  updateFields() {\n    this.fields = this.data? Object.keys(this.data) : [];\n  }\n\n  updateValues(condition: Condition) {\n    this.values = [];\n    if(condition.field && this.data) {\n      if(condition.data || typeof this.context.context.dataIndex === 'undefined') {\n        this.addValueToList(this.values, this.data, condition.field);\n      }\n      // Special case of the data list\n      else {\n        this.context.context.data.forEach(item => this.addValueToList(this.values, item, condition.field));\n      }\n    }\n  }\n\n  private addValueToList(values: string[], item: any, field: string) {\n    const data = item[field]?.toString();\n    if(data && !values.includes(data)) {\n      values.push(data);\n    }\n  }\n\n  updateDebugText(condition: Condition) {\n    this.debugText = this.conditionsService.writeCondition(condition);\n  }\n\n  get activate(): boolean {\n    return !!this.context.config.condition;\n  }\n\n  set activate(value: boolean) {\n    if(value) { // Create a new condition from scratch\n      this.context.config.condition = {data: '', type: 'equals', field: '', values: [{value: ''}]};\n    }\n    else {  // Erase the current condition\n      delete this.context.config.condition;\n    }\n    this.updateConfig();\n  }\n\n  addValue() {\n    this.context.config.condition?.values.push({value: ''});\n  }\n\n  removeValue(i: number) {\n    this.context.config.condition?.values.splice(i, 1);\n    this.updateConfig();\n  }\n\n  selectField(field: string) {\n    this.context.config.condition!.field = field;\n    this.updateConfig();\n  }\n\n  selectValue(value: string, condition: ConditionValue) {\n    condition.value = value;\n    this.updateConfig();\n  }\n\n  // This item instance might change, so we track by index\n  trackByFn(index, item) {\n    return index;\n  }\n}\n","\n<div class=\"form-check\">\n  <input class=\"form-check-input\" type=\"checkbox\" id=\"activate\" [(ngModel)]=\"activate\">\n  <label class=\"form-check-label\" for=\"activate\" i18n>Display this component conditionally</label>\n</div>\n\n<div *ngIf=\"context.config.condition\">\n\n  <div class=\"mb-2\">\n    <label class=\"form-label\" for=\"data\" i18n>Data</label>\n    <select [(ngModel)]=\"context.config.condition.data\" id=\"data\" class=\"form-select\" (ngModelChange)=\"updateConfig()\">\n      <option value=\"\" *ngIf=\"context.context.data\" i18n>data</option>\n      <option [ngValue]=\"source.key\" *ngFor=\"let source of context.context.conditionsData | keyvalue\">{{source.key}}</option>\n    </select>\n  </div>\n\n  <div class=\"mb-2\">\n    <label class=\"form-label\" for=\"field\" i18n>Field</label>\n    <input #fieldInput class=\"form-control\" type=\"text\" id=\"field\" spellcheck=\"false\" autocomplete=\"off\" [(ngModel)]=\"context.config.condition.field\" (ngModelChangeDebounced)=\"updateConfig()\"/>\n    <uib-autocomplete [inputElement]=\"fieldInput\" [allSuggests]=\"fields\" (select)=\"selectField($event)\"></uib-autocomplete>\n  </div>\n\n  <div class=\"mb-2\">\n    <label class=\"form-label\" for=\"type\" i18n>Type</label>\n    <select [(ngModel)]=\"context.config.condition.type\" id=\"type\" class=\"form-select\" (ngModelChange)=\"updateConfig()\">\n      <option value=\"equals\" i18n>Equals</option>\n      <option value=\"regexp\" i18n>Regular Expression</option>\n    </select>\n  </div>\n\n  <div class=\"mb-2\">\n    <label class=\"form-label\" i18n>Value(s)</label>\n    \n    <div class=\"condition-value input-group flex-nowrap mb-1\" *ngFor=\"let value of context.config.condition.values; let i = index; trackBy: trackByFn\">\n      <div class=\"input-group-text align-items-start\">\n        <input class=\"form-check-input\" type=\"checkbox\" id=\"not{{i}}\" [(ngModel)]=\"value.not\" (ngModelChange)=\"updateConfig()\">\n        <label class=\"form-check-label ms-1\" for=\"not{{i}}\" i18n>Not</label>\n      </div>\n      <div class=\"flex-grow-1\">\n        <input #valueInput class=\"form-control rounded-0\" type=\"text\" id=\"value{{i}}\" spellcheck=\"false\" autocomplete=\"off\" [(ngModel)]=\"value.value\" (ngModelChangeDebounced)=\"updateConfig()\"/>\n        <uib-autocomplete [inputElement]=\"valueInput\" [allSuggests]=\"values\" (select)=\"selectValue($event, value)\"></uib-autocomplete>\n      </div>\n      <button class=\"btn btn-outline-secondary\" type=\"button\" i18n-uib-tooltip uib-tooltip=\"Add another condition\" container=\".uib-bootstrap\" (click)=\"addValue()\">+</button>\n      <button class=\"btn btn-outline-danger\" type=\"button\" i18n-uib-tooltip uib-tooltip=\"Remove this condition\" container=\".uib-bootstrap\" (click)=\"removeValue(i)\" *ngIf=\"context.config.condition.values.length > 1\">-</button>\n    </div>\n  </div>\n\n  <div class=\"form-check mb-2\" *ngIf=\"context.config.condition.values.length > 1\">\n    <input class=\"form-check-input\" type=\"checkbox\" id=\"or\" [(ngModel)]=\"context.config.condition.or\" (ngModelChange)=\"updateConfig()\">\n    <label class=\"form-check-label\" for=\"or\" i18n>Display if any of the conditions is true</label>\n  </div>\n\n\n  <div class=\"mb-2\">\n    <div i18n>Debug text</div>\n    <pre><code>{{debugText}}</code></pre>\n  </div>\n\n</div>","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { ComponentConfig, ConfigService } from '../../configuration';\nimport { TooltipDirective, TooltipPlacement } from '../../utils';\nimport { SvgIconComponent } from '../../utils/svg-icon/svg-icon.component';\nimport { CommonModule } from '@angular/common';\n\ndeclare interface FlexOption {\n  key: string;\n  text: string;\n  value: string;\n  bootstrap: string;\n}\n\n@Component({\n  selector: 'uib-flex-editor',\n  standalone: true,\n  imports: [CommonModule, TooltipDirective, SvgIconComponent],\n  templateUrl: 'flex-editor.component.html',\n  styleUrls: ['./flex-editor.component.scss'],\n})\nexport class FlexEditorComponent implements OnChanges {\n  @Input() config: ComponentConfig;\n\n  // tooltip's placement\n  placement: TooltipPlacement = \"bottom\";\n\n  classes: string[];\n\n  get direction(): 'row' | 'column' {\n    return this.classes.includes('flex-column') ? 'column' : 'row';\n  }\n\n  directions: FlexOption[] = [\n    {key: 'direction-right', text: $localize `horizontal`, value: 'row', bootstrap: 'flex-row'},\n    {key: 'direction-bottom', text: $localize `vertical`, value: 'column', bootstrap: 'flex-column'}\n  ]\n\n  justify: FlexOption[] = [\n    {key:'align_x_start', text: $localize `start`, value: 'flex-start', bootstrap: 'justify-content-start'},\n    {key:'align_x_center', text: $localize `center`, value: 'center', bootstrap: 'justify-content-center'},\n    {key:'align_x_end', text: $localize `end`, value: 'flex-end', bootstrap: 'justify-content-end'},\n    {key:'align_x_space_around', text: $localize `space around`, value: 'space-around', bootstrap: 'justify-content-around'},\n    {key:'align_x_space_between', text: $localize `space between`, value: 'space-between', bootstrap: 'justify-content-between'}\n  ]\n\n  alignmentHorizontal: FlexOption[] = [\n    {key: 'align_y_start', text: $localize `top`, value: 'flex-start', bootstrap: 'align-items-start'},\n    {key: 'align_y_center', text: $localize `center`, value: 'center', bootstrap: 'align-items-center'},\n    {key: 'align_y_end', text: $localize `bottom`, value: 'flex-end', bootstrap: 'align-items-end'},\n    {key: 'align_y_stretch', text: $localize `stretch`, value: 'stretch', bootstrap: 'align-items-stretch'},\n    {key: 'align_y_baseline', text: $localize `baseline`, value: 'baseline', bootstrap: 'align-items-baseline'},\n  ]\n\n  alignmentVertical: FlexOption[] = [\n    {key:'align_x_start', text: $localize `start`, value: 'flex-start', bootstrap: 'align-items-start'},\n    {key:'align_x_center', text: $localize `center`, value: 'center', bootstrap: 'align-items-center'},\n    {key:'align_x_end', text: $localize `end`, value: 'flex-end', bootstrap: 'align-items-end'},\n    {key:'align_x_stretch', text: $localize `stretch`, value: 'stretch', bootstrap: 'align-items-stretch'},\n  ]\n\n  get alignment(): FlexOption[] {\n    return this.direction === 'column'? this.alignmentVertical : this.alignmentHorizontal;\n  }\n\n\n  constructor(\n    public configService: ConfigService\n  ) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.config) {\n      // convert \"classes\" string into array\n      this.classes = this.config.classes?.split(' ') || [];\n    }\n  }\n\n  private updateConfig() {\n    this.config.classes = this.classes.join(' ');\n    this.configService.updateConfig(this.config);\n  }\n\n  toggleClass(style: string, turnOff: FlexOption[] = []) {\n    const i = this.classes.indexOf(style);\n    // Remove all classes matching a flex option\n    this.classes = this.classes.filter(c => c !== style && !turnOff.find(o => o.bootstrap === c));\n    // Then add the class, unless it was already there (in which case, the filter turned it off)\n    if(i === -1) {\n      this.classes.push(style);\n    }\n    this.updateConfig();\n  }\n}\n","<!-- direction -->\n<div class=\"editor-line\">\n  <div i18n>Direction</div>\n  <div class=\"radio-group\">\n    <ng-container *ngFor=\"let item of directions\">\n     <input type=\"radio\" name=\"direction\" [id]=\"item.key\" (click)=\"toggleClass(item.bootstrap, directions)\" [checked]=\"direction === item.value\"/>\n     <label class=\"p-0\" [for]=\"item.key\" [uib-tooltip]=\"item.text\" [placement]=\"placement\">\n       <svg-icon [key]=\"item.key\"></svg-icon>\n     </label>\n    </ng-container>\n  </div>\n</div>\n\n<!-- justify -->\n<ng-container *ngTemplateOutlet=\"radioGroup; context: {$implicit: justify, name: 'justify', direction}\"></ng-container>\n\n<!-- alignment -->\n<ng-container *ngTemplateOutlet=\"radioGroup; context: {$implicit: alignment, name: 'alignment'}\"></ng-container>\n\n<div class=\"editor-line\">\n  <label class=\"form-check-label\" for=\"wrap\" i18n>Wrap</label>\n  <input class=\"form-check-input\" type=\"checkbox\" id=\"wrap\" (change)=\"toggleClass('flex-wrap')\" [checked]=\"classes.includes('flex-wrap')\">\n</div>\n\n<ng-template #radioGroup let-items let-name=\"name\" let-direction=\"direction\">\n  <div class=\"editor-line\">\n    <div i18n>{{ name | titlecase }}</div>\n    <div class=\"radio-group\" [style.--rotate]=\"direction === 'column' ? '90deg' : ''\">\n      <ng-container *ngFor=\"let item of items\">\n        <input type=\"radio\"\n          name=\"{{name}}\"\n          id=\"{{name}}-{{item.key}}\"\n          (click)=\"toggleClass(item.bootstrap, items)\"\n          [checked]=\"classes.includes(item.bootstrap)\"/>\n        <label for=\"{{name}}-{{item.key}}\" [uib-tooltip]=\"item.text\" [placement]=\"placement\">\n          <svg-icon [key]=\"item.key\"></svg-icon>\n        </label>\n      </ng-container>\n    </div>\n  </div>\n</ng-template>\n\n","import { Component, Input } from \"@angular/core\";\nimport { ConfiguratorContext } from \"../configurator.models\";\nimport { FormsModule } from \"@angular/forms\";\nimport { NgModelChangeDebouncedDirective } from \"../../utils\";\n\n@Component({\n  selector: 'uib-html-editor',\n  standalone: true,\n  imports: [FormsModule, NgModelChangeDebouncedDirective],\n  template: `\n  <label class=\"form-label m-0\" for=\"rawHtml\" i18n>Raw HTML:</label>\n  <p class=\"small text-muted mb-1\">Static HTML content (text, images). Does not support Angular component and syntax.</p>\n  <textarea class=\"form-control\" id=\"rawHtml\"\n    type=\"text\"\n    name=\"rawHtml\"\n    rows=\"15\"\n    [(ngModel)]=\"context.config.rawHtml\"\n    (ngModelChangeDebounced)=\"context.configChanged()\"\n  ></textarea>\n  `,\n  styles: [`\ntextarea {\n  font-family: monospace;\n  font-size: 12px !important;\n}\n  `]\n})\nexport class HtmlEditorComponent {\n  @Input() context: ConfiguratorContext;\n\n}","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, OnChanges, QueryList, Renderer2, SimpleChanges, ViewChildren } from \"@angular/core\";\nimport { ComponentConfig, ConfigService } from \"../../configuration\";\nimport { TooltipDirective } from \"../../utils\";\nimport { SvgIconComponent } from \"../../utils/svg-icon/svg-icon.component\";\nimport { CommonModule } from \"@angular/common\";\n\n@Component({\n  selector: 'uib-bs-spacing-editor',\n  standalone: true,\n  imports: [CommonModule, TooltipDirective, SvgIconComponent],\n  template: `\n  <details id=\"spacing-options\" #details>\n    <summary i18n>Spacing and borders</summary>\n    <div class=\"card p-2\">\n      <details *ngFor=\"let option of options\" [id]=\"option.name\" #details>\n        <summary><strong>{{option.title}}</strong></summary>\n        <p class=\"small text-muted m-0\">{{option.description}}</p>\n        <ng-container *ngFor=\"let prop of option.properties\">\n          <div>{{prop.title}}</div>\n          <div class=\"radio-group\">\n            <ng-container *ngFor=\"let o of prop.options\">\n              <input type=\"radio\" id=\"{{option.name}}-{{prop.name}}-{{o.code}}\" [checked]=\"isChecked(option.name, prop.name, o.code)\" (click)=\"toggle(option.name, prop.name, o.code)\"/>\n              <label class=\"p-0\" for=\"{{option.name}}-{{prop.name}}-{{o.code}}\" [uib-tooltip]=\"o.description\" placement=\"bottom\">\n                <svg-icon [key]=\"o.icon\" width=\"36px\" height=\"36px\"></svg-icon>\n              </label>\n            </ng-container>\n          </div>\n        </ng-container>\n      </details>\n      <a class=\"small text-muted mt-2\" href=\"https://getbootstrap.com/docs/5.2/utilities/api/\" target=\"_blank\" i18n>More utilities from the Bootstrap library</a>\n    </div>\n  </details>\n  `,\n  styleUrls: ['./flex-editor.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SpacingEditorComponent implements AfterViewInit, OnChanges {\n  @Input() config: ComponentConfig;\n\n  @ViewChildren(\"details\") details: QueryList<ElementRef<HTMLDetailsElement>>;\n\n  componentId: string;\n\n  classes: string[];\n  state: {[type: string]: {index: number, direction: string|undefined, magnitude: string|undefined}};\n\n  directions = {\n    name: \"direction\" as const,\n    title: $localize `Direction`,\n    options: [\n      {description: $localize `All around`, code: \"\", icon: \"direction-left-right-top-bottom\"},\n      {description: $localize `On the left side`, code: \"s\", icon: \"direction-left\"},\n      {description: $localize `On the right side`, code: \"e\", icon: \"direction-right\"},\n      {description: $localize `On the top side`, code: \"t\", icon: \"direction-top\"},\n      {description: $localize `On the bottom side`, code: \"b\", icon: \"direction-bottom\"},\n      {description: $localize `On the left and right`, code: \"x\", icon: \"direction-left-right\"},\n      {description: $localize `On the top and bottom`, code: \"y\", icon: \"direction-top-bottom\"}\n    ]\n  };\n\n  magnitudes = {\n    name: \"magnitude\" as const,\n    title: $localize `Space`,\n    options: [\n      {description: $localize `None`, code: \"0\", icon: \"no-space\"},\n      {description: $localize `Extra Small`, code: \"1\", icon: \"space-xs\"},\n      {description: $localize `Small`, code: \"2\", icon: \"space-s\"},\n      {description: $localize `Medium`, code: \"3\", icon: \"space-m\"},\n      {description: $localize `Large`, code: \"4\", icon: \"space-l\"},\n      {description: $localize `Extra Large`, code: \"5\", icon: \"space-xl\"}\n    ]\n  };\n\n  borderDirections = {\n    name: \"direction\" as const,\n    title: $localize `Direction`,\n    options: [\n      {description: $localize `All around`, code: \"\", icon: \"direction-left-right-top-bottom\"},\n      {description: $localize `On the left side`, code: \"-start\", icon: \"direction-left\"},\n      {description: $localize `On the right side`, code: \"-end\", icon: \"direction-right\"},\n      {description: $localize `On the top side`, code: \"-top\", icon: \"direction-top\"},\n      {description: $localize `On the bottom side`, code: \"-bottom\", icon: \"direction-bottom\"},\n    ]\n  }\n\n  marginMagnitudes = {\n    ...this.magnitudes,\n    options: [\n      ...this.magnitudes.options,\n      {description: $localize `Auto`, code: \"auto\", icon: \"auto\"}\n    ]\n  };\n\n  options = [\n    {name: \"m\", title: $localize `Margin`, description: $localize `Margin is the space around the component`, properties: [this.directions, this.marginMagnitudes]},\n    {name: \"p\", title: $localize `Padding`, description: $localize `Padding is the space within the component`, properties: [this.directions, this.magnitudes]},\n    {name: \"border\", title: $localize `Border`, description: $localize `Border around the component`, properties: [this.borderDirections, this.magnitudes]}\n  ];\n\n\n  constructor(\n    public configService: ConfigService,\n    public renderer: Renderer2,\n    public cdRef: ChangeDetectorRef\n  ){}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.config) {\n      this.updateState();\n      if(this.config.id !== this.componentId) {\n        this.componentId = this.config.id;\n        this.updateDetails(); // Update the <details> when a new component is open\n      }\n    }\n  }\n\n  /**\n   * Initialize the state of the <detail> elements upon ViewInit\n   * (the first call to updateDetails() from ngOnChanges() does not\n   * yet have access to these elements)\n   */\n  ngAfterViewInit(): void {\n    this.updateDetails();\n  }\n\n  /**\n   * Take the input configuration (config.classes) and parse the content\n   * to feed the state object (which determines the state of each option).\n   */\n  updateState() {\n    this.classes = this.config.classes?.split(' ') || [];\n    this.state = {};\n    for(let index=0; index<this.classes.length; index++) {\n      const c = this.classes[index];\n      // Extract margin\n      let match = c.match(/^m([stebxy]?)-([0-5]|auto)$/);\n      if(match) {\n        this.state['m'] = {index, direction: match[1], magnitude: match[2]};\n      }\n      // Extract padding\n      match = c.match(/^p([stebxy]?)-([0-5])$/);\n      if(match) {\n        this.state['p'] = {index, direction: match[1], magnitude: match[2]};\n      }\n      // Extract \"border-1\"\n      match = c.match(/^border-([0-5])$/);\n      if(match) {\n        this.state['border-magnitude'] = {index, direction: undefined, magnitude: match[1]};\n      }\n      // Extract \"border-top\" or \"border\"\n      for(const direction of this.borderDirections.options.map(o => o.code)) {\n        if(c === `border${direction}`) {\n          this.state[`border${direction}`] = {index, direction, magnitude: undefined};\n        }\n      }\n    }\n  }\n\n  /**\n   * This method opens or closes the <detail> elements, depending on the classes\n   * contained in the configuration\n   */\n  updateDetails() {\n    if(this.details) {\n      const props = Object.keys(this.state);\n      for(let detail of this.details) {\n        let open: boolean = true;\n        switch(detail.nativeElement.id) {\n          case \"spacing-options\": open = props.length > 0; break;\n          case \"m\": open = props.includes('m'); break;\n          case \"p\": open = props.includes('p'); break;\n          case \"border\": open = !!props.find(p => p.startsWith(\"border\")); break;\n        }\n        if(open) {\n          this.renderer.setAttribute(detail.nativeElement, \"open\", \"\");\n        }\n        else {\n          this.renderer.removeAttribute(detail.nativeElement, \"open\")\n        }\n      }\n      this.cdRef.detectChanges();\n    }\n  }\n\n  /**\n   * Returns the activation state of a given property.\n   * This function is called by the template to set the \"checked\" state\n   * of each radio button.\n   */\n  isChecked(type: 'p'|'m'|'border'|string, prop: 'direction'|'magnitude', code: string): boolean {\n    if(type === 'border') {\n      type = prop === 'magnitude'? `${type}-${prop}` : `${type}${code}`;\n    }\n    return this.state[type]?.[prop] === code;\n  }\n\n  /**\n   * Toggles the state of a given property.\n   * This function is called by the template upon a click on a radio button.\n   */\n  toggle(type: 'p'|'m'|'border'|string, prop: 'direction'|'magnitude', code: string) {\n    if(type === 'border') {\n      type = prop === 'magnitude'? `${type}-${prop}` : `${type}${code}`;\n    }\n    const match = this.state[type];\n    if(match) {\n      const currentVal = match[prop];\n      if(currentVal === code) {\n        this.classes[match.index] = \"\";\n        delete this.state[type];\n      }\n      else {\n        match[prop] = code;\n      }\n    }\n    else {\n      this.state[type] = {index: this.classes.length, direction: '', magnitude: '0'};\n      this.state[type][prop] = code;\n    }\n\n    this.updateClasses();\n  }\n\n  /**\n   * Update the class list and propagate the update to the config service\n   */\n  updateClasses() {\n    for(const [type,match] of Object.entries(this.state)) {\n      if(type.startsWith('border')) {\n        this.classes[match.index] = type === 'border-magnitude' ? `border-${match.magnitude}` : `border${match.direction}`;\n      }\n      else {\n        this.classes[match.index] = `${type}${match.direction}-${match.magnitude}`;\n      }\n    }\n    this.config.classes = this.classes.filter(c => c).join(' ');\n    this.configService.updateConfig(this.config);\n  }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n  ComponentConfig,\n  ConfigService,\n  ContainerConfig,\n} from '../configuration';\nimport { ToastAction, ToastService } from '../utils';\n\nexport interface ContainerIndex {\n  container: string;\n  index: number;\n}\n\nexport interface ComponentCreator {\n  type: string;\n  createConfig: (id: string, creator?: ComponentCreator) => Observable<ComponentConfig|undefined>;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DragDropService {\n\n  constructor(\n    public configService: ConfigService,\n    public toastService: ToastService\n  ) {}\n\n  draggedCreator?: ComponentCreator;\n\n  undoAction: ToastAction = {\n    text: $localize `Undo`,\n    hideToast: true,\n    action: () => this.configService.undo()\n  }\n\n  public handleDrop(\n    containerId: string,\n    index: number,\n    dropped: ContainerIndex | string\n  ) {\n    const container = this.configService.getContainer(containerId);\n    // Drop a component from a container to another container\n    if ((dropped as ContainerIndex).container) {\n      dropped = dropped as ContainerIndex;\n      const og = this.configService.getContainer(dropped.container);\n      if (dropped.container === containerId) {\n        this.moveWithin(og, dropped.index, index);\n      } else {\n        this.moveBetween(container, index, og, dropped.index);\n      }\n    }\n    // Drag a component creator (from a palette)\n    else if (this.draggedCreator?.type === dropped) {\n      const newId = this.configService.generateId(dropped);\n      this.draggedCreator\n        .createConfig(newId, this.draggedCreator)\n        .subscribe((config) => this.insertNew(container, index, config));\n    }\n    else {\n      console.error(\"Unexpected dropped item:\", dropped);\n    }\n  }\n\n  public handleCancel(\n    index: number,\n    containerId: string\n  ) {\n    const container = this.configService.getContainer(containerId);\n    const config = container.items.splice(index, 1);\n    this.configService.updateConfig([container]);\n    this.toastService.show(\n      $localize `Component '${config[0]}' removed`,\n      \"warning text-dark\",\n      [this.undoAction]\n    );\n  }\n\n  private insertNew(\n    container: ContainerConfig,\n    index: number,\n    component: ComponentConfig|undefined\n  ) {\n    if(component) {\n      container.items.splice(index, 0, component.id);\n      this.configService.updateConfig([container, component]); // addEntities might be needed\n    }\n  }\n\n  private moveBetween(\n    container: ContainerConfig,\n    index: number,\n    ogContainer: ContainerConfig,\n    ogIndex: number\n  ) {\n    let item = ogContainer.items.splice(ogIndex, 1);\n    container.items.splice(index, 0, item[0]);\n    this.configService.updateConfig([ogContainer, container]);\n  }\n\n  private moveWithin(\n    container: ContainerConfig,\n    oldIndex: number,\n    newIndex: number\n  ) {\n    if (oldIndex !== newIndex && oldIndex !== newIndex - 1) {\n      let item = container.items.splice(oldIndex, 1);\n      if (newIndex > oldIndex) {\n        newIndex--;\n      }\n      container.items.splice(newIndex, 0, item[0]);\n      this.configService.updateConfig(container);\n    }\n  }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit } from '@angular/core';\nimport { Observable, of, Subject, Subscription } from 'rxjs';\nimport { Configurable } from '../../configurable/configurable.service';\nimport { ComponentConfig, ConfigService } from '../../configuration';\nimport { ComponentCreator, DragDropService } from '../../dynamic-views/drag-drop.service';\nimport { ModalComponent, SvgIconComponent, TemplateNameDirective, TooltipDirective } from '../../utils';\nimport { PaletteOptions } from '../configurator.models';\nimport { CommonModule } from '@angular/common';\nimport { DndModule } from 'ngx-drag-drop';\n\ndeclare interface PaletteItem extends ComponentCreator {\n  type: string;\n  display?: string;\n  iconClass?: string;\n  title?: string;\n  removable?: boolean;\n  createConfig: (id: string, creator?: ComponentCreator) => Observable<ComponentConfig|undefined>;\n}\n\ndeclare interface ConfigModal {\n  configurator: TemplateNameDirective;\n  config: ComponentConfig;\n  configChanged: () => void;\n  title: string;\n  close: Subject<ComponentConfig|undefined>;\n}\n\nexport const defaultPaletteOptions: PaletteOptions = {\n  enableSubcontainers: true,\n  enableRawHtml: true,\n  rawHtmlPlaceholder: \"<h1>Edit me</h1>\",\n  showStandardPalette: true,\n  showExistingPalette: true\n};\n\n@Component({\n  selector: 'uib-palette',\n  standalone: true,\n  imports: [CommonModule, DndModule, TooltipDirective, SvgIconComponent, ModalComponent],\n  templateUrl: './palette.component.html',\n  styleUrls: ['./palette.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PaletteComponent implements OnInit, OnChanges, OnDestroy {\n  @Input() context: Configurable;\n  @Input() configurators: Record<string,TemplateNameDirective> = {};\n  @Input() options = defaultPaletteOptions;\n\n  standardPalette: PaletteItem[];\n  existingPalette: PaletteItem[];\n\n  modal?: ConfigModal;\n\n  constructor(\n    public dragDropService: DragDropService,\n    public configService: ConfigService,\n    public cdRef: ChangeDetectorRef\n  ) {}\n\n  ngOnInit() {\n    // The palette of existing components is constructed from the complete configuration\n    this.sub = this.configService.watchAllConfig()\n      .subscribe(configs => {\n        this.generateExistingPalette(configs)\n        this.cdRef.markForCheck();\n      });\n  }\n\n  ngOnChanges() {\n    // Initialize options with default, then custom\n    this.options = Object.assign({}, defaultPaletteOptions, this.options);\n    this.generateAutoPalette();\n    // The existing palette must be update when the standard palette changes\n    this.generateExistingPalette(this.configService.getAllConfig());\n  }\n\n  sub: Subscription;\n  ngOnDestroy(): void {\n    this.sub.unsubscribe();\n  }\n\n  generateAutoPalette() {\n    this.standardPalette = [];\n    if(!this.options.showStandardPalette) {\n      return;\n    }\n    if (this.options.enableSubcontainers) {\n      this.standardPalette.push({\n        type: '_container',\n        display: $localize `Container`,\n        title: $localize `A component to arrange various sub-components`,\n        createConfig: (id: string) => of({ type: '_container', id, items: [] }),\n      });\n    }\n    if (this.options.enableRawHtml) {\n      this.standardPalette.push({\n        type: '_raw-html',\n        display: $localize `Raw HTML`,\n        title: $localize `A component to write HTML freely`,\n        createConfig: (id: string) => of({ type: '_raw-html', id, rawHtml: this.options.rawHtmlPlaceholder})\n      })\n    }\n    if (this.context.templates) {\n      Object.keys(this.context.templates).forEach((type) => {\n        let template = this.context.templates![type];\n        this.standardPalette.push({\n          type,\n          display: template.display || type,\n          iconClass: template.iconClass,\n          title: template.description,\n          createConfig: (id: string) => this.openModal(id, type, this.configurators[type]),\n        });\n      });\n    }\n  }\n\n  generateExistingPalette(configs: ComponentConfig[]) {\n    if(!this.options.showExistingPalette) {\n      this.existingPalette = [];\n      return;\n    }\n    this.existingPalette = configs.filter(c =>\n      // Add any non-container config whose type is compatible with the standard palette\n      this.standardPalette\n        .find(p => p.type !== '_container' && p.type === c.type))\n        .map(c => ({\n          type: c.type,\n          display: c.id,\n          title: $localize `Type: ${this.context.templates?.[c.type]?.display || c.type}`,\n          removable: !this.configService.isUsed(c.id),\n          createConfig: _ => of(c) // The config already exists\n        })\n    )\n  }\n\n  onDndStart(item: PaletteItem) {\n    this.dragDropService.draggedCreator = item;\n  }\n\n  onDndEnd() {\n    this.dragDropService.draggedCreator = undefined;\n  }\n\n  openModal(id: string, type: string, configurator?: TemplateNameDirective): Observable<ComponentConfig|undefined> {\n    const config = {type, id};\n    if(configurator) {\n      this.modal = {\n        configurator,\n        config,\n        configChanged: () => {}, // do nothing when the configurator changes the config (before user presses 'OK')\n        title: $localize `Create new ${type} component`,\n        close: new Subject<ComponentConfig|undefined>()\n      }\n      return this.modal.close;\n    }\n    return of(config);\n  }\n\n  onModalClose(success: boolean) {\n    if(this.modal?.close) {\n      this.modal.close.next(success? this.modal.config : undefined);\n      this.modal.close.complete();\n      this.modal = undefined;\n    }\n  }\n\n  removeItem(item: PaletteItem) {\n    console.log(\"remove\", item);\n    this.configService.removeConfig(item.display!); // The display is the component id\n  }\n}\n","\n<div class=\"p-2\">\n\n  <details *ngIf=\"options.showStandardPalette\" open>\n    <summary>\n      <h6 class=\"d-inline\" i18n>Drag & drop a new component</h6>\n    </summary>\n    <small class=\"text-muted\" i18n>Drag & drop an item from this palette into the UI to create and configure a new component.</small>\n    <div class=\"mt-1\">\n      <ng-container *ngFor=\"let item of standardPalette\"\n        [ngTemplateOutlet]=\"paletteItem\"\n        [ngTemplateOutletContext]=\"{$implicit: item}\">\n      </ng-container>\n    </div>\n  </details>\n\n  <details *ngIf=\"options.showExistingPalette\" class=\"mt-3\">\n    <summary>\n      <h6 class=\"d-inline\" i18n>Drag & drop an existing component</h6>\n    </summary>\n    <small class=\"text-muted mb-1\" i18n>Drag & drop an item from this palette into the UI to insert a component whose configuration already exists.\n    </small>\n    <span uib-tooltip=\"This palette may include unused configuration from components removed from the UI.\" i18n-uib-tooltip>ⓘ</span>\n    <div class=\"mt-1\">\n      <ng-container *ngFor=\"let item of existingPalette\"\n        [ngTemplateOutlet]=\"paletteItem\"\n        [ngTemplateOutletContext]=\"{$implicit: item}\">\n      </ng-container>\n    </div>\n  </details>\n</div>\n\n<ng-template #paletteItem let-item>\n  <div\n    [dndDraggable]=\"item.type\"\n    [dndType]=\"context.zone\"\n    (dndStart)=\"onDndStart(item)\"\n    (dndEnd)=\"onDndEnd()\"\n    [uib-tooltip]=\"item.title\"\n    container=\".uib-bootstrap\"\n    placement=\"bottom\"\n    class=\"palette-item\"\n    [ngClass]=\"{'uib-unused': item.removable}\">\n    <svg-icon class=\"grip\" key=\"grip\" height=\"1em\"></svg-icon>\n    <span [ngClass]=\"item.iconClass\"></span>\n    {{item.display || item.type}}\n    <button *ngIf=\"item.removable\"\n      type=\"button\"\n      class=\"btn-close\"\n      uib-tooltip=\"Remove this unused configuration\"\n      i18n-uib-tooltip\n      placement=\"bottom\"\n      container=\".uib-bootstrap\"\n      (click)=\"removeItem(item)\">\n    </button>\n  </div>\n</ng-template>\n\n<!-- Modal -->\n<uib-modal [title]=\"modal?.title\" [show]=\"!!modal\" (close)=\"onModalClose($event)\">\n  <div *ngTemplateOutlet=\"modal?.configurator.templateRef; context: { $implicit: modal }\"></div>\n</uib-modal>\n","import { ChangeDetectionStrategy, Component } from \"@angular/core\";\n\nimport { CommonModule } from \"@angular/common\";\nimport { ConfigurableService } from \"../../configurable\";\nimport { ConfigService } from \"../../configuration\";\nimport { TooltipDirective } from \"../../utils\";\nimport { SvgIconComponent } from \"../../utils/svg-icon/svg-icon.component\";\n\n@Component({\n  selector: 'uib-toolbar',\n  standalone: true,\n  imports: [CommonModule, SvgIconComponent, TooltipDirective],\n  templateUrl: './toolbar.component.html',\n  styles: [\n    `\n    .uib-toolbar .btn.disabled {\n      /* allow tooltip on disabled buttons */\n      pointer-events: visible;\n      /* but display a simple arrow cursor */\n      cursor: default;\n    }\n\n    .uib-toolbar .btn svg-icon {\n      display: flex;\n      align-items: center;\n      width: 22px;\n      height: 25px;\n    }\n    .uib-toolbar-anim {\n      transition: ease .3s;\n    }\n    `\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ToolbarComponent {\n\n  constructor(\n    public configService: ConfigService,\n    public configurableService: ConfigurableService\n  ) {}\n\n  toggleEditor() {\n    this.configurableService.toggleEditor();\n  }\n\n}","<div class=\"btn-group uib-toolbar uib-toolbar-anim\" *ngIf=\"{enabled: configurableService.editorEnabled$ | async} as editor\" >\n  <ng-container *ngIf=\"editor.enabled\">\n    <ng-content></ng-content>\n    <button class=\"btn btn-primary\" (click)=\"configService.undo()\" [ngClass]=\"{'disabled': !(configService.canUndo$()| async)}\" uib-tooltip=\"Undo\" i18n-uib-tooltip placement=\"top\">\n      <svg-icon key=\"undo\"></svg-icon>\n    </button>\n    <button class=\"btn btn-primary\" (click)=\"configService.redo()\" [ngClass]=\"{'disabled': !(configService.canRedo$()| async)}\" uib-tooltip=\"Redo\" i18n-uib-tooltip placement=\"top\">\n      <svg-icon key=\"redo\"></svg-icon>\n    </button>\n  </ng-container>\n  <button class=\"btn btn-primary\" (click)=\"toggleEditor()\" uib-tooltip=\"Enable/Disable UI-Editor\" placement=\"top\" container=\"\" i18n-uib-tooltip>\n    <svg-icon key=\"{{editor.enabled ? 'eye_slash' : 'eye' }}\"></svg-icon>\n  </button>\n</div>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { ConfigurableService} from '../../configurable';\r\nimport { ComponentConfig, ConfigService } from '../../configuration';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SvgIconComponent } from \"../../utils/svg-icon/svg-icon.component\";\r\nimport { ModalComponent } from '../../utils';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n    selector: 'uib-tree',\r\n    standalone: true,\r\n    templateUrl: './tree.component.html',\r\n    styleUrls: ['tree.component.css'],\r\n    imports: [CommonModule, SvgIconComponent, ModalComponent, FormsModule]\r\n})\r\nexport class TreeComponent implements OnChanges {\r\n  @Input() configuration: ComponentConfig[];\r\n\r\n  root: Partial<ComponentConfig>[];\r\n  hoveredId?: string;\r\n  configToEdit?: {id: string, display: string};\r\n  displayName?: string;\r\n\r\n  private configurationMap: Map<string, Partial<ComponentConfig>>;\r\n\r\n  constructor(public configurableService: ConfigurableService,\r\n    public configService: ConfigService) { }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    // set our Map object,\r\n    this.configurationMap = new Map();\r\n    this.configuration.forEach((el) => this.configurationMap.set(el.id, el));\r\n\r\n    // set children parent_id and order\r\n    this.configuration\r\n      .filter((parent) => parent.items && parent.items.length > 0)\r\n      .forEach((parent) =>\r\n        parent.items.forEach((id: string, index: number) => {\r\n          // a child could have multiple parents\r\n          // get child's parents\r\n          const {parents = [], orders = {}} = this.configurationMap.get(id) || {};\r\n          this.configurationMap.set(id, {...this.configurationMap.get(id), id: id, parents: [...parents, parent.id], orders: {...orders, [parent.id]: index }} )\r\n        })\r\n    );\r\n\r\n    // items without parent_id (root level)\r\n    this.root = [...this.configurationMap.values()].filter((el) => el.parents === undefined);\r\n  }\r\n\r\n  /**\r\n   * Given an id, return all the children of that id.\r\n   * @param {string} id - string - The id of the component.\r\n   * @returns The children of the component with the given id.\r\n   */\r\n  children(id: string): Partial<ComponentConfig>[] {\r\n    return [...this.configurationMap.values()].filter((el) => el.parents ? el.parents.includes(id) : false).sort((a, b) => a.orders[id] - b.orders[id]);\r\n  }\r\n\r\n  select(id: string) {\r\n    const el = this.configurableService.configurableDirectiveMap.get(id);\r\n    el?.click(new MouseEvent(\"click\"));\r\n    el?.nativeElement.scrollIntoView({behavior: 'smooth', inline: 'nearest', block: 'center'});\r\n  }\r\n\r\n  hover(id: string | undefined) {\r\n    this.hoveredId = id; // used to display and hide the edit icons\r\n    const hoveredId = this.configurableService.hoveredId;\r\n    if (hoveredId) {\r\n      const prev = this.configurableService.configurableDirectiveMap.get(hoveredId);\r\n      prev?.removeHighlight();\r\n    }\r\n\r\n    this.configurableService.hoveredId = id;\r\n    if (id) {\r\n      const el = this.configurableService.configurableDirectiveMap.get(id);\r\n      el?.addHighlight();\r\n\r\n      el?.nativeElement.scrollIntoView({ behavior: 'smooth', inline: 'nearest', block: 'center' });\r\n    }\r\n  }\r\n\r\n  editConfigDisplayName(context: {id: string, display: string}) {\r\n    this.configToEdit = context;\r\n    this.displayName = context.display ? String(context.display) : undefined;\r\n  }\r\n\r\n  onModalClose(validated: boolean) {\r\n    if (validated) {\r\n      const config = this.configService.getConfig(this.configToEdit!.id);\r\n      config.display = this.displayName;\r\n      this.configService.updateConfig(config);\r\n    }\r\n    this.configToEdit = undefined;\r\n  }\r\n}\r\n","<div class=\"content\">\r\n  <ng-container\r\n    [ngTemplateOutlet]=\"tree\"\r\n    [ngTemplateOutletContext]=\"{ root }\"\r\n  ></ng-container>\r\n</div>\r\n\r\n<ng-template #tree let-context let-root=\"root\">\r\n  <ul [ngClass]=\"{ tree: root }\">\r\n    <li *ngFor=\"let el of root || children(context.id)\" [ngClass]=\"{ 'section': el.items }\">\r\n      <ng-container [ngTemplateOutlet]=\"el.items ? parent : single\" [ngTemplateOutletContext]=\"{ $implicit: {id: el.id, display: el.display} }\"></ng-container>\r\n    </li>\r\n  </ul>\r\n</ng-template>\r\n\r\n<ng-template #single let-context>\r\n  <div class=\"d-flex align-items-center\" (mouseover)=\"hover(context.id)\" (mouseleave)=\"hover(undefined)\">\r\n    <a (click)=\"select(context.id)\" [attr.data-id]=\"context.id\" [ngClass]=\"{ 'selected': context.id === (configurableService.edited$ | async)?.id }\" >{{ context.display || context.id }}</a>\r\n    <svg-icon [classList]=\"'ms-1 mb-1 h-100'\" key=\"pencil\" width=\"15px\" height=\"19px\" *ngIf=\"hoveredId === context.id\" (click)=\"editConfigDisplayName(context)\"></svg-icon>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template #parent let-context>\r\n  <input type=\"checkbox\" checked [id]=\"'menu-' + context.id\">\r\n  <label [for]=\"'menu-' + context.id\"></label>\r\n  <ng-container [ngTemplateOutlet]=\"single\" [ngTemplateOutletContext]=\"{ $implicit: context }\"></ng-container>\r\n  <ng-container\r\n    [ngTemplateOutlet]=\"tree\"\r\n    [ngTemplateOutletContext]=\"{ $implicit: context }\"\r\n  ></ng-container>\r\n</ng-template>\r\n\r\n<!-- Modal -->\r\n<uib-modal [title]=\"'Update name for config id ' + configToEdit?.id\" [show]=\"!!configToEdit\" (close)=\"onModalClose($event)\">\r\n  <label for=\"config-display\" class=\"form-label\">Display name</label>\r\n  <input type=\"text\" *ngIf=\"configToEdit\"\r\n    class=\"form-control\"\r\n    id=\"config-display\"\r\n    autocomplete=\"off\"\r\n    spellcheck=\"off\"\r\n    [(ngModel)]=\"displayName\">\r\n</uib-modal>","import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\n\nimport { ConfiguratorContext } from \"../configurator.models\";\n\n@Component({\n  selector: 'uib-checkbox',\n  imports: [FormsModule],\n  standalone: true,\n  template: `\n<div class=\"form-check mb-2\">\n  <input class=\"form-check-input\" type=\"checkbox\" [id]=\"property\" [(ngModel)]=\"model\">\n  <label class=\"form-check-label\" [for]=\"property\">{{label || property}}</label>\n</div>\n    `\n})\nexport class CheckboxComponent implements OnChanges {\n  @Input() context: ConfiguratorContext;\n  @Input() property: string;\n  @Input() label?: string;\n\n  @Output() modelChanged = new EventEmitter<boolean>();\n\n  _path: string[];\n\n  get model(): boolean {\n    let val = this.context.config;\n    for (let p of this._path) {\n      val = val[p];\n    }\n    return !!val;\n  }\n\n  set model(value: boolean) {\n    let val = this.context.config;\n    let i = 0;\n    for (; i < this._path.length - 1; i++) {\n      val = val[this._path[i]];\n    }\n    if (value !== val[this._path[i]]) {\n      val[this._path[i]] = value;\n      this.context.configChanged();\n      this.modelChanged.emit(value);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this._path = this.property.split('.');\n  }\n}\n","import { Component, Input, OnChanges, SimpleChanges } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\n\nimport { ConfiguratorContext } from \"../configurator.models\";\nimport { NgModelChangeDebouncedDirective, TooltipDirective } from \"../../utils\";\nimport { CommonModule } from \"@angular/common\";\n\n@Component({\n  selector: 'uib-color-picker',\n  imports: [CommonModule, FormsModule, TooltipDirective, NgModelChangeDebouncedDirective],\n  standalone: true,\n  template: `\n  <label for=\"color-{{property}}\" class=\"form-label\" *ngIf=\"label\">{{label}}</label>\n  <div class=\"color-picker-wrapper mb-2\">\n    <input [uib-tooltip]=\"tooltip\"\n      type=\"color\"\n      id=\"color-{{property}}\"\n      class=\"form-control-color\"\n      [(ngModel)]=\"color\"\n      (ngModelChangeDebounced)=\"context.configChanged()\"/>\n      <button class=\"color-picker-reset\" uib-tooltip=\"Reset color\" i18n-uib-tooltip i18n (click)=\"reset()\"></button>\n  </div>\n  `,\n  styles: [`\n    :host {\n      width: 100px;\n    }\n\n    .color-picker-wrapper {\n      overflow: hidden;\n      width: 48px;\n      height: 48px;\n      border-radius: 50%;\n      box-shadow: 1px 1px 3px 0px grey;\n      margin: auto;\n    }\n\n    .color-picker-wrapper input[type=color] {\n      width: 150%;\n      /* height: 150%; */\n      padding: 0;\n      margin: -25%;\n    }\n\n    .color-picker-reset {\n      position: relative;\n      margin: 0;\n      padding: 0;\n      width: 125%;\n      height: 60%;\n      top: -10px;\n      left: -5px;\n    }\n  `]\n})\nexport class ColorPickerComponent implements OnChanges {\n  @Input() context: ConfiguratorContext;\n  @Input() property: string;\n  @Input() label?: string;\n  @Input() defaultColor = '#ffffff';\n  @Input() tooltip: string = '';\n\n  _path: string[];\n\n  get color() {\n    let val = this.context.config;\n    for(let p of this._path) {\n      val = val[p];\n    }\n    return <string><unknown>val || this.defaultColor;\n  }\n\n  set color(value: string) {\n    if(value.toLowerCase() === this.defaultColor.toLowerCase()) {\n      value = '';\n    }\n    let val = this.context.config;\n    let i = 0;\n    // walk through nested object's properties\n    // at the for loop end, val will contains the seeked ref property\n    for(; i<this._path.length-1; i++) {\n      val = val[this._path[i]];\n    }\n    // check if the value has changed and set the new value if needed\n    if(value !== val[this._path[i]]) {\n      val[this._path[i]] = value;\n    }\n  }\n\n  reset() {\n    this.color = \"\";\n    this.context.configChanged();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this._path = this.property.split('.');\n  }\n}\n","import { Component, Input, OnChanges, SimpleChanges } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\n\nimport { ConfiguratorContext } from \"../configurator.models\";\nimport { NgModelChangeDebouncedDirective } from \"../../utils\";\nimport { CommonModule } from \"@angular/common\";\n\n@Component({\n  selector: \"uib-image-selector\",\n  imports: [CommonModule, FormsModule, NgModelChangeDebouncedDirective],\n  standalone: true,\n  template: `\n<div class=\"form-group\">\n  <label for=\"img-{{param}}\" class=\"form-label\">{{description}}</label>\n  <input type=\"text\"\n    class=\"form-control mb-1\"\n    id=\"img-{{param}}\"\n    autocomplete=\"off\"\n    spellcheck=\"off\"\n    [(ngModel)]=\"context.config?.images[param].filename\"\n    (ngModelChangeDebounced)=\"onChange($event)\">\n  <input type=\"file\" class=\"form-control-file\" accept=\"image/png, image/jpeg, image/gif\" (change)=\"onImageLoaded($event)\">\n\n  <div class=\"d-flex flex-column mt-3\" *ngIf=\"sizeable\">\n    <div class=\"input-group input-group-sm\">\n      <span class=\"input-group-text\">Width</span>\n      <input type=\"text\"\n        class=\"form-control\"\n        [(ngModel)]=\"context.config?.images[param].width\"\n        (ngModelChangeDebounced)=\"onImageDimensionChange($event, 'width')\"\n        aria-label=\"width\">\n      <span class=\"input-group-text\">px</span>\n    </div>\n    <input type=\"range\" id=\"img-{{param}}-width\" name=\"img-{{param}}-width\"\n      class=\"form-range mb-3\"\n      min=\"0\"\n      max=\"1024\"\n      [(ngModel)]=\"context.config?.images[param].width\"\n      (ngModelChangeDebounced)=\"context.configChanged()\">\n\n    <div class=\"input-group input-group-sm\">\n      <span class=\"input-group-text\">Height</span>\n      <input type=\"text\"\n        class=\"form-control\"\n        [(ngModel)]=\"context.config?.images[param].height\"\n        (ngModelChangeDebounced)=\"onImageDimensionChange($event, 'height')\"\n        aria-label=\"height\">\n      <span class=\"input-group-text\">px</span>\n    </div>\n    <input type=\"range\" id=\"img-{{param}}-height\" name=\"img-{{param}}-height\"\n      class=\"form-range mb-3\"\n      min=\"0\"\n      max=\"1024\"\n      [(ngModel)]=\"context.config?.images[param].height\"\n      (ngModelChangeDebounced)=\"context.configChanged()\">\n  </div>\n\n  <details *ngIf=\"context.config?.images[param]\">\n    <summary>\n      Preview\n    </summary>\n    <div>\n      <img class=\"mw-100 border rounded\" [src]=\"context.config?.images[param].filename\">\n    </div>\n  </details>\n</div>\n    `\n})\nexport class ImageSelectorComponent implements OnChanges {\n  @Input() context: ConfiguratorContext;\n  @Input() param: string;\n  @Input() description: string;\n  @Input() sizeable: boolean = true;\n\n\n  ngOnChanges(changes: SimpleChanges): void {\n    // TODO: to remove with the next release\n    // convert old format to the new one\n    if (!this.context.config.images || !this.context.config.images[this.param]) {\n      this.context.config.images = {...this.context.config.images, [this.param]: { filename: this.context.config[this.param]}}\n      delete this.context.config[this.param];\n    }\n  }\n\n  onImageLoaded(event: Event) {\n    const file = (event.target as HTMLInputElement).files?.[0];\n    if (file) {\n      const reader = new FileReader();\n      reader.onload = () => {\n        if (reader.result) {\n          this.context.config.images[this.param].filename = reader.result;\n          this.context.configChanged();\n        }\n      }\n      reader.readAsDataURL(file);\n    }\n  }\n\n  onImageDimensionChange(value: string, size: 'width' | 'height') {\n    if (value.trim().length === 0) {\n      this.context.config.images[this.param][size] = undefined;\n    }\n    this.context.configChanged();\n  }\n\n  onChange(value: string) {\n    this.context.configChanged();\n  }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { Component, forwardRef, HostBinding, Input, OnChanges, SimpleChanges } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { DndDropEvent, DndModule } from \"ngx-drag-drop\";\n\n@Component({\n  selector: \"uib-multi-selector\",\n  imports: [CommonModule, DndModule],\n  standalone: true,\n  templateUrl: './multi-selector.component.html',\n  styles: [`\n  .dndDraggable, .dndDraggable label {\n    cursor: grab;\n  }\n  [dndPlaceholderRef] {\n    height: 1rem;\n    background: #ccc;\n    border: dotted 3px #999;\n    transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);\n  }\n  :host {\n    max-height: var(--multi-select-max-height);\n    overflow: auto;\n    margin-bottom: 0.5rem;\n  }\n  `],\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => MultiSelectComponent),\n    multi: true\n  }],\n  host: {\n    class: \"form-control\"\n  }\n})\nexport class MultiSelectComponent<T> implements OnChanges, ControlValueAccessor {\n  @Input() options: T[] | undefined;\n  @Input() enableReorder = false;\n  @Input() valueField?: string;\n  @Input() displayField?: string;\n  @Input() compareWith: (a: T, b:T) => boolean = Object.is;\n  @Input() @HostBinding(\"style.--multi-select-max-height\") maxHeight = \"300px\";\n\n  // Copy of options, so we can change the order without affecting the original list of options\n  // If the options change, the order is reinitialized.\n  _options: T[] | undefined;\n  _optionsSelected: (T|null)[] | undefined;\n\n  _values: T[] | undefined;\n\n  static idCpt = 0;\n  selectId: string;\n\n  constructor(){\n    this.selectId = `select-${MultiSelectComponent.idCpt++}`;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if(changes.options) {\n      this._options = undefined;\n      this.updateOptions();\n    }\n  }\n\n  updateOptions() {\n    if(this.options) {\n      this._options = [...this.options];\n      if(this.enableReorder && this._values) {\n        this._optionsSelected = this._values.map(val => {\n          const i = this._options!.findIndex(o => this.compareWith(val, this.getValue(o))); // For each value, find its corresponding option\n          return i !== -1? this._options!.splice(i, 1)[0] : null; // i === -1 can happen with incomplete list of metadata. null allows the Drag & Drop directive to have the right number of items\n        });\n      }\n    }\n  }\n\n  getValue(option: T) {\n    return this.valueField? option[this.valueField] : option;\n  }\n\n  valueIndex(value: T) {\n    return this._values?.findIndex(v => this.compareWith(v, value)) ?? -1;\n  }\n\n  isChecked(option: T): boolean {\n    if(!this._values) return false;\n    const value = this.getValue(option);\n    return this.valueIndex(value) !== -1;\n  }\n\n  onChecked(option: T, checked: boolean) {\n    if(!this._values) {\n      this._values = [];\n    }\n    const value = this.getValue(option);\n    if(checked) {\n      this._values.push(value);\n    }\n    else {\n      this._values.splice(this.valueIndex(value), 1);\n    }\n    this.triggerChange();\n  }\n\n  onDrop(event: DndDropEvent) {\n    const oldIdx = event.data;\n    const newIdx = event.index;\n    if(this._values && typeof oldIdx === 'number' && typeof newIdx === 'number' && oldIdx !== newIdx) {\n      const [obj] = this._values.splice(oldIdx, 1);\n      this._values?.splice(newIdx<oldIdx? newIdx : newIdx-1, 0, obj);\n      this.triggerChange();\n    }\n  }\n\n  triggerChange() {\n    this.updateOptions();\n    this.onChange(this._values);\n  }\n\n  onChange = (_: any) => {};\n  onTouched = () => {};\n\n  writeValue(obj: T[]): void {\n    this._values = obj;\n    this.updateOptions();\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n}\n","<div [dndDropzone]=\"[selectId]\" *ngIf=\"enableReorder\" (dndDrop)=\"onDrop($event)\">\n  <div dndPlaceholderRef></div>\n  <div *ngFor=\"let option of _optionsSelected; let i=index\"\n    [dndDraggable]=\"i\"\n    [dndType]=\"selectId\"\n    class=\"d-flex align-items-center dndDraggable\">\n    <ng-container *ngIf=\"option !== null\">\n      <i class=\"fas fa-grip-vertical fa-fw text-muted\" title=\"Drag to reorder\"></i>\n      <ng-container *ngTemplateOutlet=\"optionTpl; context:{$implicit: option, i: i}\"></ng-container>\n    </ng-container>\n  </div>\n</div>\n\n<ng-container *ngFor=\"let option of _options; let i=index\"\n  [ngTemplateOutlet]=\"optionTpl\"\n  [ngTemplateOutletContext]=\"{$implicit: option, i: i+(_optionsSelected?.length||0)}\">\n</ng-container>\n\n<ng-template #optionTpl let-option let-i=\"i\">\n  <div class=\"form-check\">\n    <input id=\"{{selectId}}-{{i}}\"\n      type=\"checkbox\"\n      class=\"form-check-input\"\n      [checked]=\"isChecked(option)\"\n      (change)=\"onChecked(option, $any($event).target.checked)\"\n      (blur)=\"onTouched()\"/>\n    <label class=\"form-check-label\" for=\"{{selectId}}-{{i}}\">\n      {{displayField? option[displayField] : option}}\n    </label>\n  </div>\n</ng-template>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  Input,\n  OnInit,\n  QueryList,\n  ViewChild,\n} from '@angular/core';\nimport { Offcanvas } from 'bootstrap';\nimport { switchMap, map, tap } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\nimport { Configurable, ConfigurableService } from '../configurable/configurable.service';\nimport { ComponentConfig, ConfigService, ContainerConfig } from '../configuration';\nimport { Mutable } from '../utils/typings';\nimport { PaletteComponent, defaultPaletteOptions } from './palette/palette.component';\nimport { ConfiguratorContext, ConfiguratorOptions } from './configurator.models';\nimport { TemplateNameDirective } from '../utils/directive/template-name.directive';\nimport { CommonModule } from '@angular/common';\nimport { SvgIconComponent, TooltipDirective } from '../utils';\nimport { ClassEditorComponent, ConditionEditorComponent, FlexEditorComponent, HtmlEditorComponent, SpacingEditorComponent } from './editors';\nimport { TreeComponent } from './public-api';\n\nexport const defaultConfiguratorOptions: ConfiguratorOptions = {\n  paletteOptions: defaultPaletteOptions,\n  showFlexEditor: true,\n  showHtmlEditor: true,\n  showCssClasses: true,\n  showSpacingEditor: true,\n  showConditionalDisplay: true,\n  showRemove: true,\n  showDuplicate: true\n}\n\n@Component({\n  selector: 'uib-configurator',\n  standalone: true,\n  imports: [\n    CommonModule,\n    TooltipDirective,\n    SvgIconComponent,\n    TreeComponent,\n    HtmlEditorComponent,\n    FlexEditorComponent,\n    PaletteComponent,\n    ClassEditorComponent,\n    SpacingEditorComponent,\n    ConditionEditorComponent,\n  ],\n  templateUrl: './configurator.component.html',\n  styleUrls: ['./configurator.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ConfiguratorComponent implements OnInit {\n  // Capture configurator templates\n  @ContentChildren(TemplateNameDirective)\n  children: QueryList<TemplateNameDirective>;\n  configurators: Record<string, TemplateNameDirective> = {};\n\n  @ViewChild('offcanvas') offcanvasEl: ElementRef<HTMLElement>;\n  offcanvas: Offcanvas;\n\n  @ViewChild('offcanvasBody') offcanvasBodyEl:ElementRef<HTMLElement>;\n\n  @Input() options = defaultConfiguratorOptions;\n  @Input() zoneOptions: Record<string, ConfiguratorOptions> = {};\n\n  edited$: Observable<ConfiguratorContext>;\n\n  configuration: ComponentConfig[] = [];\n\n  isTree: boolean;\n  ltr = false;\n  parentId: string;\n\n  constructor(\n    private cdr: ChangeDetectorRef,\n    public configurableService: ConfigurableService,\n    public configService: ConfigService\n  ) {}\n\n  ngOnInit(): void {\n    this.edited$ = this.configurableService.watchEdited().pipe(\n      tap(() => this.offcanvas.show()),\n      tap(() => this.showTree(false)),\n      tap((edited) => this.parentId = edited.parentId),\n      switchMap((context) =>\n        this.configService.watchConfig(context!.id).pipe(\n          map(config => ({\n            context,\n            config,\n            options: this.resolveOptions(context.zone),\n            configurators: this.configurators,\n            configChanged: () => this.configService.updateConfig(config)\n          }))\n        )\n      )\n    );\n\n    // subscribe to configuration events\n    this.configService.watchAllConfig().subscribe(config => {\n      this.configuration = config!;\n      this.cdr.markForCheck();\n    });\n\n    // when edition is disabled, close side panel\n    this.configurableService.editorEnabled$.subscribe(value => {\n      if (value === false && this.offcanvas) {\n        this.offcanvas.hide();\n      }\n    });\n  }\n\n  /**\n   * Create Bootstrap OffCanvas component\n   */\n  ngAfterViewInit() {\n    this.offcanvas = Offcanvas.getOrCreateInstance(this.offcanvasEl.nativeElement, {\n      backdrop: false,\n      scroll: true\n    });\n    this.offcanvasEl.nativeElement.addEventListener('hide.bs.offcanvas', _ => {\n      this.configurableService.stopEditing();\n    });\n  }\n\n  /**\n   * Extract list of configuration editors\n   */\n  ngAfterContentInit() {\n    this.children.forEach(\n      template => (this.configurators[template.name] = template)\n    );\n  }\n\n  showTree(showTree = true) {\n    this.isTree = showTree;\n    this.offcanvasBodyEl.nativeElement.scroll(0, 0);\n  }\n\n  resolveOptions(zone: string) {\n    // First set defaults, then the configurator options, then zone-specific options\n    const options = Object.assign({}, defaultConfiguratorOptions, this.options, this.zoneOptions[zone] || {});\n    // Same thing for the nested palette options\n    options.paletteOptions = Object.assign({}, defaultPaletteOptions, this.options.paletteOptions, this.zoneOptions[zone]?.paletteOptions || {});\n    return options;\n  }\n\n  /**\n   * It removes the item from the parent container.\n   * @param {Event} event - Event\n   */\n  remove(context: Configurable) {\n    // only uib-zone cannot self remove\n    if (context.parentId) {\n      const container = this.configService.getContainer(context.parentId);\n      const index = container.items.findIndex(item => item === context.id);\n      if (index !== -1) {\n        container.items.splice(index, 1);\n        this.configService.updateConfig([container]);\n        this.offcanvas.toggle();\n      }\n    }\n  }\n\n  duplicate(context: Configurable) {\n    const config: Mutable<ComponentConfig> = this.configService.getConfig(context.id);\n    config.id = this.configService.generateId(config.id); // Generate a new config id\n    if(context.parentId) {\n      const container = this.configService.getContainer(context.parentId);\n      const index = container.items.findIndex(item => item === context.id);\n      if (index !== -1) {\n        container.items.splice(index+1, 0, config.id);\n        this.configService.updateConfig([config, container]);\n      }\n    }\n    // Special case of a zone\n    else if(context.zone === context.id) {\n      // Create another copy\n      const config2: Mutable<ComponentConfig> = this.configService.getConfig(context.id);\n      config2.id = this.configService.generateId(config.id);\n\n      const container: ContainerConfig = {\n        id: context.id,\n        type: '_container',\n        items: [config.id, config2.id],\n        classes: \"flex-column\",\n      };\n\n      this.configService.updateConfig([config, config2, container]);\n    }\n  }\n\n  goToParent() {\n    const el = this.configurableService.configurableDirectiveMap.get(this.parentId);\n    el?.click(new MouseEvent(\"click\"));\n    el?.nativeElement.scrollIntoView({behavior: 'smooth', inline: 'nearest', block: 'center'});\n  }\n}\n","<div #offcanvas class=\"offcanvas\" [ngClass]=\"{'offcanvas-start': ltr, 'offcanvas-end': !ltr}\" tabindex=\"-1\" id=\"offcanvas\" *ngIf=\"{edited: (edited$ | async)} as obs\">\n  <!-- HEADER -->\n  <div class=\"offcanvas-header bg-light border-bottom\">\n    <h5 class=\"offcanvas-title\" *ngIf=\"!isTree && obs.edited as edited\">\n      <strong>{{edited.config.id}}</strong>\n      <h6 i18n>(Type: <strong>{{edited.context.templates?.[edited.config.type]?.display || edited.config.type}}</strong>)</h6>\n    </h5>\n    <h5 class=\"offcanvas-title\" *ngIf=\"isTree\" i18n>Configuration Tree</h5>\n\n    <button id=\"right-to-left\" type=\"button\" i18n-uib-tooltip uib-tooltip=\"Slide to {{ltr? 'right':'left'}}\" class=\"btn btn-sm btn-link ms-auto\" (click)=\"ltr = !ltr\">\n      <svg-icon key=\"right-left\" width=\"22px\" height=\"25px\"></svg-icon>\n    </button>\n    <button *ngIf=\"!!parentId\" class=\"btn btn-sm\" i18n-uib-tooltip uib-tooltip=\"Go to the parent container\" (click)=\"goToParent()\">\n      <svg-icon key=\"folder\" width=\"22px\" height=\"25px\"></svg-icon>\n    </button>\n    <button type=\"button\" class=\"btn btn-sm\" [ngClass]=\"isTree? 'btn-square btn-primary' : 'btn-link'\" i18n-uib-tooltip uib-tooltip=\"{{isTree? 'Hide' : 'Show'}} configuration tree\" (click)=\"showTree(!isTree)\">\n      <svg-icon key=\"tree\" width=\"22px\" height=\"25px\"></svg-icon>\n    </button>\n    <button type=\"button\" class=\"btn-close text-reset\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\" i18n-aria-label></button>\n  </div>\n\n  <!-- BODY -->\n  <div #offcanvasBody class=\"offcanvas-body\">\n\n    <ng-container *ngIf=\"!isTree && obs.edited as edited\">\n      <!-- CONFIGURATOR -->\n      <div class=\"text-muted\" *ngIf=\"edited.context.templates?.[edited.config.type]?.description as description\">\n        {{description}}\n        <hr />\n      </div>\n\n      <ng-container\n        *ngTemplateOutlet=\"configurators[edited.config.type]?.templateRef; context: { $implicit: edited }\">\n      </ng-container>\n\n      <ng-container *ngIf=\"edited.config.type === '_container'\">\n        <details class=\"mb-3\" open *ngIf=\"edited.options.paletteOptions\">\n          <summary i18n>Component palette</summary>\n          <uib-palette\n            [context]=\"edited.context\"\n            [options]=\"edited.options.paletteOptions\"\n            [configurators]=\"edited.configurators\"\n            >\n          </uib-palette>\n        </details>\n\n        <details class=\"mb-3\" open *ngIf=\"edited.options.showFlexEditor\">\n          <summary i18n>Layout</summary>\n          <uib-flex-editor [config]=\"edited.config\"></uib-flex-editor>\n        </details>\n      </ng-container>\n\n      <uib-html-editor *ngIf=\"edited.options.showHtmlEditor && edited.config.type === '_raw-html'\"\n        [context]=\"edited\"\n        class=\"d-block mb-3\">\n      </uib-html-editor>\n\n      <!-- Separator to mark the difference between the type-specific configurator and the generic configuration options -->\n      <!-- <ng-container > -->\n      <hr *ngIf=\"configurators[edited.config.type]?.templateRef || edited.config.type.startsWith('_')\" />\n      <!-- </ng-container> -->\n\n      <div class=\"mb-3\" *ngIf=\"edited.options.showCssClasses\">\n        <uib-class-editor [context]=\"edited\"></uib-class-editor>\n      </div>\n\n      <div class=\"mb-3\" *ngIf=\"edited.options.showSpacingEditor\">\n        <uib-bs-spacing-editor [config]=\"edited.config\"></uib-bs-spacing-editor>\n      </div>\n\n      <details *ngIf=\"edited.options.showConditionalDisplay && (edited.context.data || edited.context.conditionsData)\"\n        [attr.open]=\"edited.config.condition? '' : undefined\"\n        class=\"mb-3\">\n        <summary uib-tooltip=\"Display this component only if the data validates a rule\" i18n-uib-tooltip i18n>Conditional display</summary>\n        <uib-condition-editor [context]=\"edited\"></uib-condition-editor>\n      </details>\n\n      <div class=\"d-flex justify-content-start mb-1\">\n        <button *ngIf=\"edited.options.showRemove && edited.context.parentId\"\n          class=\"btn btn-outline-danger me-2\"\n          (click)=\"remove(edited.context)\"\n          uib-tooltip=\"Remove this component from its parent\"\n          i18n-uib-tooltip i18n\n        >\n          Remove\n        </button>\n        <button *ngIf=\"edited.options.showDuplicate\"\n          class=\"btn btn-outline-secondary\"\n          (click)=\"duplicate(edited.context)\"\n          uib-tooltip=\"Duplicate this component within its parent\"\n          i18n-uib-tooltip i18n\n        >\n          Duplicate\n        </button>\n      </div>\n    </ng-container>\n\n    <uib-tree [configuration]=\"configuration\" *ngIf=\"isTree\"></uib-tree>\n\n  </div>\n</div>\n","import { Configurable } from \"../configurable\";\nimport { ComponentConfig } from \"../configuration\";\nimport { TemplateNameDirective } from \"../utils\";\n\nexport interface ConfiguratorOptions {\n  paletteOptions?: PaletteOptions;\n  showFlexEditor?: boolean;\n  showHtmlEditor?: boolean;\n  showCssClasses?: boolean;\n  showSpacingEditor?: boolean;\n  showConditionalDisplay?: boolean;\n  showRemove?: boolean;\n  showDuplicate?: boolean;\n}\n\nexport interface PaletteOptions {\n  enableSubcontainers?: boolean;\n  enableRawHtml?: boolean;\n  rawHtmlPlaceholder?: string;\n  showStandardPalette?: boolean;\n  showExistingPalette?: boolean;\n}\n\nexport interface ConfiguratorContext {\n  /** Object storing the configuration of the component */\n  config: ComponentConfig;\n  /** Options of the configurators (may change depending on zone) */\n  options: ConfiguratorOptions;\n  /** Register of all the components configurators  */\n  configurators: Record<string, TemplateNameDirective>;\n  /** Context of the zone of the edited component */\n  context: Configurable;\n  /** Callback that the configurator should call to update the configuration */\n  configChanged: () => void;\n};\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { Condition, ConditionsService } from \"./conditions.service\";\n\n@Pipe({\n  name: 'uibCondition',\n  standalone: true\n})\nexport class ConditionPipe implements PipeTransform {\n\n  constructor(\n    public conditionService: ConditionsService\n  ){}\n\n  transform(value: any, params?: Condition): boolean {\n    if(!params) return true;\n    return this.conditionService.checkData(params, value);\n  }\n\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Subscription } from 'rxjs';\n\nimport { ConditionsService } from '../../conditions/conditions.service';\nimport { ComponentConfig, ConfigService } from '../../configuration';\nimport { ZoneContextService } from '../zone/zone-context.service';\nimport { ContainerIndex, DragDropService } from '../drag-drop.service';\nimport { TooltipDirective } from '../../utils';\nimport { ConfigurableDirective } from '../../configurable';\nimport { DndDropEvent, DndModule } from 'ngx-drag-drop';\n\n@Component({\n  selector: '[uib-item]',\n  standalone: true,\n  imports: [CommonModule, TooltipDirective, ConfigurableDirective, DndModule],\n  templateUrl: './item.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ItemComponent implements OnInit, OnChanges, OnDestroy {\n  /**\n   * id's element\n   */\n  @Input('uib-item') id: string;\n  @Input() parentId: string;\n\n  /**\n   * index of element displayed when data is an Array\n   */\n  @Input() dataIndex?: number;\n\n  /**\n   * Is the component configurable\n   */\n  @Input() configurable: boolean = true;\n\n  @HostBinding('class')\n  classes?: string;\n\n\n  // zone's conext informations\n  /**\n   * zone's name/id\n   */\n   zone: string;\n\n  /**\n   * used to store the configuration object for the component.\n   */\n  config: ComponentConfig;\n  /**\n   * used to determine if the component should be displayed or not.\n   */\n  condition = true;\n  _data: any;\n\n  private subscription = new Subscription();\n\n  /**\n   * used to determine if the flex direction is horizontal or not.\n   * Always `false` when the component's type is not `_container`\n   */\n  isHorizontal: boolean = false;\n\n  constructor(\n    public zoneRef: ZoneContextService,\n    public configService: ConfigService,\n    public conditionsService: ConditionsService,\n    public dragDropService: DragDropService,\n    public cdr: ChangeDetectorRef,\n    public el: ElementRef<HTMLElement>\n  ) {\n    // retrieve all zone's available informations\n    this.zone = this.zoneRef.id;\n\n    this.subscription.add(\n      this.zoneRef.changes$.subscribe(({ data, conditionsData }) => {\n        this.updateData();\n        this.updateCondition();\n      })\n    );\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if(changes.dataIndex) {\n      this.updateData();\n      this.updateCondition();\n    }\n  }\n\n  ngOnInit() {\n    const configChanges$ = this.configService.watchConfig(this.id).subscribe((config) => this.updateConfig(config));\n    const allConfigChanges$ = this.configService.watchAllConfig().subscribe(() => this.cdr.markForCheck());\n\n    this.subscription.add(configChanges$);\n    this.subscription.add(allConfigChanges$);\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n  // updates\n\n  /**\n   * It updates the component's configuration and condition, and sets the classes\n   * for the component\n   * @param {ComponentConfig} config - ComponentConfig - the configuration object\n   * for the component\n   */\n  private updateConfig(config: ComponentConfig) {\n    this.config = config;\n    this.updateCondition();\n    this.classes = this.config.classes || '';\n    if (config.type === '_container') {\n      this.classes += ' uib-container';\n      if (this.configurable) {\n        this.classes += ' uib-dropzone-content';\n      }\n    }\n    if(!this.condition && !this.configurable) {\n      this.classes += ' d-none'; // hide component unless in edit mode\n    }\n    this.isHorizontal = this.horizontal();\n  }\n\n  /**\n   * If the dataIndex property is undefined, then the data property is assigned to\n   * the `_data` property.\n   *\n   * Otherwise, the data property is indexed by the dataIndex\n   * property and the result is assigned to the _data property\n   */\n  private updateData() {\n    this._data = typeof this.dataIndex === 'undefined'? this.zoneRef.data : this.zoneRef.data[this.dataIndex];\n  }\n\n  /**\n   * If the condition is not null, then check the condition and update the\n   * condition variable\n   */\n  private updateCondition() {\n    this.condition = this.conditionsService.check(this.config?.condition, this.zoneRef.conditionsData, this._data);\n  }\n\n  // Drag & Drop\n\n  onDndDrop(event: DndDropEvent) {\n    const dropped: string | ContainerIndex = (typeof event.data === 'string')\n      ? event.data\n      : { container: event.data.container, index: event.data.index }\n\n    if(typeof event.index === 'number') {\n      this.dragDropService.handleDrop(this.id, event.index, dropped);\n    }\n  }\n\n  onDndCanceled(item: string, index: number) {\n    console.log('cancelled', item, this.id);\n    this.dragDropService.handleCancel(index, this.id);\n  }\n\n  /**\n   * * If the element has a class of flex-column, it's not horizontal.\n   * * If it has a class of d-flex or uib-dropzone, it's horizontal.\n   * * If it has a style of display: flex, it's horizontal.\n   *\n   * Otherwise, it's not horizontal\n   * @returns A boolean value.\n   */\n  private horizontal(): boolean {\n    if(this.config.classes?.includes('flex-column')) {\n      return false;\n    }\n    if (this.config.classes?.includes('d-flex') || this.config.classes?.includes('uib-dropzone') || this.el.nativeElement.style.display === \"flex\") {\n      return true;\n    }\n    return false;\n  }\n\n  getItemTooltip(id: string): string {\n    const config = this.configService.getConfig(id);\n    return config.display || id;\n  }\n}\n","<div\n  *ngIf=\"config.type === '_raw-html' && condition\"\n  [innerHTML]=\"config.rawHtml\">\n</div>\n\n<ng-container\n  *ngIf=\"!config.type.startsWith('_') && condition\"\n  [ngTemplateOutlet]=\"zoneRef.templates[config.type || id]?.templateRef\"\n  [ngTemplateOutletContext]=\"{ $implicit: config, data: _data, id }\"\n></ng-container>\n\n<ng-container *ngIf=\"config.type === '_container' && condition && !configurable\">\n  <div *ngFor=\"let item of config.items; let index = index\"\n    [uib-item]=\"item\"\n    [configurable]=\"false\"\n    [dataIndex]=\"dataIndex\"\n  ></div>\n</ng-container>\n\n<!-- editor mode -->\n<ng-container *ngIf=\"config.type === '_container' && condition && configurable\">\n  <div\n    [ngClass]=\"config.classes || ''\"\n    class=\"uib-dropzone\"\n\n    [dndDropzone]=\"[zone]\"\n    [dndHorizontal]=\"isHorizontal\"\n    (dndDrop)=\"onDndDrop($event)\"\n    >\n\n    <div class=\"dragPlaceholder align-self-stretch\" dndPlaceholderRef></div>\n\n    <div *ngFor=\"let item of config.items; let index = index\"\n      [uib-item]=\"item\"\n      [configurable]=\"true\"\n      [dataIndex]=\"dataIndex\"\n\n      [uib-tooltip]=\"getItemTooltip(item)\"\n\n      uib-configurable\n      [id]=\"item\"\n      [parentId]=\"config.id\"\n      [uib-disable-if]=\"dataIndex\"\n\n      [dndDraggable]=\"{item, index, container: config.id}\"\n      [dndType]=\"zone\"\n      (dndCanceled)=\"onDndCanceled(item, index)\"\n\n      ></div>\n\n  </div>\n\n</ng-container>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  OnDestroy,\n  OnInit,\n  Output,\n  EventEmitter,\n  ContentChildren,\n  Input,\n  QueryList,\n  SimpleChanges,\n} from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { ConfigService } from '../../configuration/config.service';\nimport { ConfigurableDirective, ConfigurableService } from '../../configurable';\nimport { ZoneContextService } from './zone-context.service';\nimport { TemplateNameDirective } from '../../utils';\nimport { CommonModule } from '@angular/common';\nimport { ItemComponent } from '../public-api';\n\n\n@Component({\n  selector: 'uib-zone',\n  standalone: true,\n  imports: [CommonModule, ConfigurableDirective, ItemComponent],\n  templateUrl: './zone.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [ZoneContextService]\n})\nexport class ZoneComponent implements OnInit, OnDestroy {\n  @ContentChildren(TemplateNameDirective)\n  children: QueryList<TemplateNameDirective>;\n\n  /**\n   * zone's id\n   */\n  @Input() id: string;\n  /**\n   * additional template's data. If data is an array, an *ngFor will be done using\n   * each data's items\n   */\n  @Input() data?: any;\n  /**\n   * conditional display rules\n   */\n  @Input() conditionsData?: Record<string, unknown>;\n\n  /**\n   * Emit an event when a zone's element is clicked\n   * sending it's index and additional data\n   */\n  @Output()\n  itemClicked = new EventEmitter<{data: any, index?: number, event: Event}>();\n\n  /**\n   * return `true` when edit mode is enabled\n   */\n  enabled$: BehaviorSubject<boolean>;\n\n  private subscription = new Subscription();\n\n  constructor(\n    public readonly zoneContext: ZoneContextService,\n    public readonly configService: ConfigService,\n    public readonly configurableService: ConfigurableService,\n    public readonly cdr: ChangeDetectorRef\n  ) {}\n\n  ngOnInit() {\n    this.zoneContext.id = this.id;\n    this.enabled$ = this.configurableService.editorEnabled$\n\n    this.subscription.add(\n      this.configService\n        .watchConfig(this.id)\n        .subscribe(() => {\n          this.cdr.markForCheck(); // necessary to apply config changes\n        })\n    );\n  }\n\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.zoneContext.update({data: this.data, conditionsData: this.conditionsData});\n  }\n\n  ngAfterContentInit() {\n    this.children.forEach(\n      (template) => (this.zoneContext.templates[template.name] = template)\n    );\n  }\n\n  get isArray(): boolean {\n    return Array.isArray(this.zoneContext.data);\n  }\n\n  /**\n   * Propagate the element's click event\n   *\n   * If the index is undefined, then data is the data object, otherwise data is the\n   * data object's index\n   * @param {Event} event - The event that triggered the click.\n   * @param {any} [data] - The data object that was clicked.\n   * @param {number} [index] - The index of the item in the list.\n   */\n  onItemClicked(event: Event, data?: any, index?: number) {\n    data = typeof index === 'undefined'? data : data[index];\n    this.itemClicked.next({data, index, event});\n  }\n}\n","<ng-container\n*ngTemplateOutlet=\"isArray ? array : zone; context: { $implicit: data, first: 'true' }\"\n></ng-container>\n\n<!-- data is an array -->\n<ng-template #array let-data>\n  <ng-container *ngFor=\"let d of data; let index = index; let first = first\"\n    [ngTemplateOutlet]=\"zone\"\n    [ngTemplateOutletContext]=\"{ index, first }\">\n  </ng-container>\n</ng-template>\n\n<!-- data is a single object -->\n<ng-template #zone let-index=\"index\" let-first=\"first\">\n\n  <!-- en mode editeur -->\n  <div *ngIf=\"first && (enabled$ | async)\"\n    class=\"uib-zone\"\n    [id]=\"id\"\n\n    [uib-item]=\"id\"\n    [configurable]=\"true\"\n    [dataIndex]=\"index\"\n\n    uib-configurable>\n  </div>\n\n  <!-- en mode normal -->\n  <div *ngIf=\"!first || (enabled$ | async) === false\"\n    [uib-item]=\"id\"\n    [configurable]=\"false\"\n    [dataIndex]=\"index\"\n\n    (click)=\"onItemClicked($event, data, index)\">\n  </div>\n\n</ng-template>\n","import { SvgIconType } from \"../utils/svg-icon/types\";\r\n\r\nexport const icons: SvgIconType[] = [\r\n  {\r\n    name: 'align_x_center',\r\n    data: `<svg viewBox=\"0 0 16 16\"><rect y=\"1\" width=\"1.5\" height=\"14\" rx=\".75\" opacity=\".7\"/><rect x=\"14.5\" y=\"1\" width=\"1.5\" height=\"14\" rx=\".75\" opacity=\".7\"/><rect x=\"4\" y=\"4\" width=\"4\" height=\"8\" rx=\"1\"/><rect x=\"8.5\" y=\"4\" width=\"4\" height=\"8\" rx=\"1\"/></svg>`\r\n  },\r\n  {\r\n    name: 'align_x_end',\r\n    data: `<svg id=\"sprite-align-x-end\" viewBox=\"0 0 16 16\"><rect opacity=\".7\" x=\"14.5\" y=\"1\" width=\"1.5\" height=\"14\" rx=\".75\"/><rect opacity=\".7\" y=\"1\" width=\"1.5\" height=\"14\" rx=\".75\"/><rect x=\"5\" y=\"4\" width=\"4\" height=\"8\" rx=\"1\"/><rect x=\"9.5\" y=\"4\" width=\"4\" height=\"8\" rx=\"1\"/></svg>`\r\n  },\r\n  {\r\n    name: 'align_x_space_around',\r\n    data: `<svg id=\"sprite-align-x-space-around\" viewBox=\"0 0 16 16\"><rect opacity=\".7\" x=\"14.5\" y=\"1\" width=\"1.5\" height=\"14\" rx=\".75\"/><rect opacity=\".7\" y=\"1\" width=\"1.5\" height=\"14\" rx=\".75\"/><rect x=\"3\" y=\"4\" width=\"4\" height=\"8\" rx=\"1\"/><rect x=\"9\" y=\"4\" width=\"4\" height=\"8\" rx=\"1\"/></svg>`\r\n  },\r\n  {\r\n    name: 'align_x_space_between',\r\n    data: `<svg id=\"sprite-align-x-space-between\" viewBox=\"0 0 16 16\"><rect opacity=\".7\" x=\"14.5\" y=\"1\" width=\"1.5\" height=\"14\" rx=\".75\"/><rect opacity=\".7\" y=\"1\" width=\"1.5\" height=\"14\" rx=\".75\"/><rect x=\"2\" y=\"4\" width=\"4\" height=\"8\" rx=\"1\"/><rect x=\"10\" y=\"4\" width=\"4\" height=\"8\" rx=\"1\"/></svg>`\r\n  },\r\n  {\r\n    name: 'align_x_start',\r\n    data: `<svg viewBox=\"0 0 16 16\"><rect x=\"2.5\" y=\"4\" width=\"4\" height=\"8\" rx=\"1\"/><rect x=\"7\" y=\"4\" width=\"4\" height=\"8\" rx=\"1\"/><rect opacity=\".7\" y=\"1\" width=\"1.5\" height=\"14\" rx=\".75\"/><rect opacity=\".7\" x=\"14.5\" y=\"1\" width=\"1.5\" height=\"14\" rx=\".75\"/></svg>`\r\n  },\r\n  {\r\n    name: 'align_x_stretch',\r\n    data: `<svg id=\"sprite-align-x-stretch\" viewBox=\"0 0 16 16\"><rect x=\"3\" y=\"12.5\" width=\"4\" height=\"10\" rx=\"1\" transform=\"rotate(-90 3 12.5)\"/><rect x=\"3\" y=\"7.5\" width=\"4\" height=\"10\" rx=\"1\" transform=\"rotate(-90 3 7.5)\"/><rect opacity=\".7\" x=\".5\" y=\"15\" width=\"14\" height=\"1.5\" rx=\".75\" transform=\"rotate(-90 .5 15)\"/><rect opacity=\".7\" x=\"14\" y=\"15\" width=\"14\" height=\"1.5\" rx=\".75\" transform=\"rotate(-90 14 15)\"/></svg>`\r\n  },\r\n  {\r\n    name: 'align_y_baseline',\r\n    data: `<svg id=\"sprite-align-y-baseline\" viewBox=\"0 0 16 16\"><rect opacity=\".7\" x=\"1\" y=\"7\" width=\"14\" height=\"1.5\" rx=\".75\"/><rect x=\"3.5\" y=\"3\" width=\"4\" height=\"10\" rx=\"1\"/><rect x=\"8.5\" y=\"3\" width=\"4\" height=\"8\" rx=\"1\"/></svg>`\r\n  },\r\n  {\r\n    name: 'align_y_center',\r\n    data: `<svg id=\"sprite-align-y-center\" viewBox=\"0 0 16 16\"><rect x=\"4\" y=\"1\" width=\"4\" height=\"14\" rx=\"1\"/><rect x=\"9\" y=\"4\" width=\"4\" height=\"8\" rx=\"1\"/><rect opacity=\".7\" x=\"1\" y=\"7\" width=\"14\" height=\"1.5\" rx=\".75\"/></svg>`\r\n  },\r\n  {\r\n    name: 'align_y_end',\r\n    data: `<svg id=\"sprite-align-y-end\" viewBox=\"0 0 16 16\"><rect x=\"4\" y=\"1\" width=\"4\" height=\"12\" rx=\"1\"/><rect x=\"9\" y=\"5\" width=\"4\" height=\"8\" rx=\"1\"/><rect opacity=\".7\" x=\"1\" y=\"14\" width=\"14\" height=\"1.5\" rx=\".75\"/></svg>`\r\n  },\r\n  {\r\n    name: 'align_y_start',\r\n    data: `<svg id=\"sprite-align-y-start\" viewBox=\"0 0 16 16\"><rect x=\"3\" y=\"3\" width=\"4\" height=\"12\" rx=\"1\"/><rect x=\"8\" y=\"3\" width=\"4\" height=\"8\" rx=\"1\"/><rect opacity=\".7\" x=\"1\" y=\".5\" width=\"14\" height=\"1.5\" rx=\".75\"/></svg>`\r\n  },\r\n  {\r\n    name: 'align_y_stretch',\r\n    data: `<svg id=\"sprite-align-y-stretch\" viewBox=\"0 0 16 16\"><rect x=\"3.5\" y=\"3\" width=\"4\" height=\"10\" rx=\"1\"/><rect x=\"8.5\" y=\"3\" width=\"4\" height=\"10\" rx=\"1\"/><rect opacity=\".7\" x=\"1\" y=\".5\" width=\"14\" height=\"1.5\" rx=\".75\"/><rect opacity=\".7\" x=\"1\" y=\"14\" width=\"14\" height=\"1.5\" rx=\".75\"/></svg>`\r\n  },\r\n  {\r\n    name: 'arrow_down',\r\n    data: `<svg viewBox=\"0 0 18 18\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.045 8.204a1.125 1.125 0 10-1.59 1.591l6.75 6.75c.439.44 1.151.44 1.59 0l6.75-6.75a1.125 1.125 0 00-1.59-1.59l-4.83 4.829V2.125a1 1 0 00-1-1h-.25a1 1 0 00-1 1v10.909l-4.83-4.83z\"/></svg>`\r\n  },\r\n  {\r\n    name: 'arrow_forward',\r\n    data: `<svg viewBox=\"0 0 18 18\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.204 14.954a1.125 1.125 0 001.591 1.591l6.75-6.75c.44-.439.44-1.151 0-1.59l-6.75-6.75a1.125 1.125 0 00-1.59 1.59l4.829 4.83H2.125a1 1 0 00-1 1v.25a1 1 0 001 1h10.909l-4.83 4.83z\"/></svg>`\r\n  },\r\n  {\r\n    name: 'tree',\r\n    data: `<svg viewBox=\"0 0 576 512\"><path d=\"M544 32h-112l-32-32H320c-17.62 0-32 14.38-32 32v160c0 17.62 14.38 32 32 32h224c17.62 0 32-14.38 32-32V64C576 46.38 561.6 32 544 32zM544 320h-112l-32-32H320c-17.62 0-32 14.38-32 32v160c0 17.62 14.38 32 32 32h224c17.62 0 32-14.38 32-32v-128C576 334.4 561.6 320 544 320zM64 16C64 7.125 56.88 0 48 0h-32C7.125 0 0 7.125 0 16V416c0 17.62 14.38 32 32 32h224v-64H64V160h192V96H64V16z\"/></svg>`\r\n  },\r\n  {\r\n    name: 'undo',\r\n    data: `<svg viewBox=\"0 0 512 512\"><path d=\"M480 256c0 123.4-100.5 223.9-223.9 223.9c-48.84 0-95.17-15.58-134.2-44.86c-14.12-10.59-16.97-30.66-6.375-44.81c10.59-14.12 30.62-16.94 44.81-6.375c27.84 20.91 61 31.94 95.88 31.94C344.3 415.8 416 344.1 416 256s-71.69-159.8-159.8-159.8c-37.46 0-73.09 13.49-101.3 36.64l45.12 45.14c17.01 17.02 4.955 46.1-19.1 46.1H35.17C24.58 224.1 16 215.5 16 204.9V59.04c0-24.04 29.07-36.08 46.07-19.07l47.6 47.63C149.9 52.71 201.5 32.11 256.1 32.11C379.5 32.11 480 132.6 480 256z\"/></svg>`\r\n  },\r\n  {\r\n    name: 'redo',\r\n    data: `<svg viewBox=\"0 0 512 512\"><path d=\"M468.9 32.11c13.87 0 27.18 10.77 27.18 27.04v145.9c0 10.59-8.584 19.17-19.17 19.17h-145.7c-16.28 0-27.06-13.32-27.06-27.2c0-6.634 2.461-13.4 7.96-18.9l45.12-45.14c-28.22-23.14-63.85-36.64-101.3-36.64c-88.09 0-159.8 71.69-159.8 159.8S167.8 415.9 255.9 415.9c73.14 0 89.44-38.31 115.1-38.31c18.48 0 31.97 15.04 31.97 31.96c0 35.04-81.59 70.41-147 70.41c-123.4 0-223.9-100.5-223.9-223.9S132.6 32.44 256 32.44c54.6 0 106.2 20.39 146.4 55.26l47.6-47.63C455.5 34.57 462.3 32.11 468.9 32.11z\"/></svg>`\r\n  },\r\n  {\r\n    name: 'trash',\r\n    data: `<svg viewBox=\"0 0 448 512\"><path d=\"M135.2 17.69C140.6 6.848 151.7 0 163.8 0H284.2C296.3 0 307.4 6.848 312.8 17.69L320 32H416C433.7 32 448 46.33 448 64C448 81.67 433.7 96 416 96H32C14.33 96 0 81.67 0 64C0 46.33 14.33 32 32 32H128L135.2 17.69zM394.8 466.1C393.2 492.3 372.3 512 346.9 512H101.1C75.75 512 54.77 492.3 53.19 466.1L31.1 128H416L394.8 466.1z\"/></svg>`\r\n  },\r\n  {\r\n    name: 'grip',\r\n    data: `<svg viewBox=\"0 0 320 512\"><path d=\"M88 352C110.1 352 128 369.9 128 392V440C128 462.1 110.1 480 88 480H40C17.91 480 0 462.1 0 440V392C0 369.9 17.91 352 40 352H88zM280 352C302.1 352 320 369.9 320 392V440C320 462.1 302.1 480 280 480H232C209.9 480 192 462.1 192 440V392C192 369.9 209.9 352 232 352H280zM40 320C17.91 320 0 302.1 0 280V232C0 209.9 17.91 192 40 192H88C110.1 192 128 209.9 128 232V280C128 302.1 110.1 320 88 320H40zM280 192C302.1 192 320 209.9 320 232V280C320 302.1 302.1 320 280 320H232C209.9 320 192 302.1 192 280V232C192 209.9 209.9 192 232 192H280zM40 160C17.91 160 0 142.1 0 120V72C0 49.91 17.91 32 40 32H88C110.1 32 128 49.91 128 72V120C128 142.1 110.1 160 88 160H40zM280 32C302.1 32 320 49.91 320 72V120C320 142.1 302.1 160 280 160H232C209.9 160 192 142.1 192 120V72C192 49.91 209.9 32 232 32H280z\"/></svg>`\r\n  },\r\n  {\r\n    name: 'eye',\r\n    data: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 576 512\"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d=\"M279.6 160.4C282.4 160.1 285.2 160 288 160C341 160 384 202.1 384 256C384 309 341 352 288 352C234.1 352 192 309 192 256C192 253.2 192.1 250.4 192.4 247.6C201.7 252.1 212.5 256 224 256C259.3 256 288 227.3 288 192C288 180.5 284.1 169.7 279.6 160.4zM480.6 112.6C527.4 156 558.7 207.1 573.5 243.7C576.8 251.6 576.8 260.4 573.5 268.3C558.7 304 527.4 355.1 480.6 399.4C433.5 443.2 368.8 480 288 480C207.2 480 142.5 443.2 95.42 399.4C48.62 355.1 17.34 304 2.461 268.3C-.8205 260.4-.8205 251.6 2.461 243.7C17.34 207.1 48.62 156 95.42 112.6C142.5 68.84 207.2 32 288 32C368.8 32 433.5 68.84 480.6 112.6V112.6zM288 112C208.5 112 144 176.5 144 256C144 335.5 208.5 400 288 400C367.5 400 432 335.5 432 256C432 176.5 367.5 112 288 112z\"/></svg>`\r\n  },\r\n  {\r\n    name: 'eye_slash',\r\n    data: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 512\"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d=\"M150.7 92.77C195 58.27 251.8 32 320 32C400.8 32 465.5 68.84 512.6 112.6C559.4 156 590.7 207.1 605.5 243.7C608.8 251.6 608.8 260.4 605.5 268.3C592.1 300.6 565.2 346.1 525.6 386.7L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196C13.29-1.236 28.37-3.065 38.81 5.112L150.7 92.77zM223.1 149.5L313.4 220.3C317.6 211.8 320 202.2 320 191.1C320 180.5 316.1 169.7 311.6 160.4C314.4 160.1 317.2 159.1 320 159.1C373 159.1 416 202.1 416 255.1C416 269.7 413.1 282.7 407.1 294.5L446.6 324.7C457.7 304.3 464 280.9 464 255.1C464 176.5 399.5 111.1 320 111.1C282.7 111.1 248.6 126.2 223.1 149.5zM320 480C239.2 480 174.5 443.2 127.4 399.4C80.62 355.1 49.34 304 34.46 268.3C31.18 260.4 31.18 251.6 34.46 243.7C44 220.8 60.29 191.2 83.09 161.5L177.4 235.8C176.5 242.4 176 249.1 176 255.1C176 335.5 240.5 400 320 400C338.7 400 356.6 396.4 373 389.9L446.2 447.5C409.9 467.1 367.8 480 320 480H320z\"/></svg>`\r\n  },\r\n  {\r\n    name: 'space-xs',\r\n    data: `<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 30 30\"><path d=\"M20.22,19.1H9.78c-.71,0-1.28-.67-1.28-1.5v-1.46c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v1.46c0,.31,.17,.5,.28,.5h10.45c.11,0,.28-.19,.28-.5v-1.46c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v1.46c0,.83-.57,1.5-1.28,1.5Z\"></path><path d=\"M14.78,16.9c-.16,0-.32-.08-.41-.22l-3.36-4.92c-.16-.23-.1-.54,.13-.7,.23-.15,.54-.1,.7,.13l3.36,4.92c.16,.23,.1,.54-.13,.7-.09,.06-.18,.09-.28,.09Z\"></path><path d=\"M11.42,16.9c-.1,0-.2-.03-.28-.09-.23-.16-.29-.47-.13-.7l3.36-4.92c.16-.23,.47-.28,.7-.13,.23,.16,.29,.47,.13,.7l-3.36,4.92c-.1,.14-.25,.22-.41,.22Z\"></path><g><path d=\"M17.35,14.44c-.95,0-1.73-.78-1.73-1.73s.78-1.73,1.73-1.73,1.73,.78,1.73,1.73c0,.28-.22,.5-.5,.5s-.5-.22-.5-.5c0-.4-.33-.73-.73-.73s-.73,.33-.73,.73,.33,.73,.73,.73c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\"></path><path d=\"M17.35,16.9c-.95,0-1.73-.78-1.73-1.73,0-.28,.22-.5,.5-.5s.5,.22,.5,.5c0,.4,.33,.73,.73,.73s.73-.33,.73-.73-.33-.73-.73-.73c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5c.95,0,1.73,.78,1.73,1.73s-.78,1.73-1.73,1.73Z\"></path></g></svg>`\r\n  },\r\n  {\r\n    name: 'space-s',\r\n    data: `<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 30 30\"><path d=\"M20.22,19.1H9.78c-.71,0-1.28-.67-1.28-1.5v-1.46c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v1.46c0,.31,.17,.5,.28,.5h10.45c.11,0,.28-.19,.28-.5v-1.46c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v1.46c0,.83-.57,1.5-1.28,1.5Z\"></path><g><path d=\"M15,14.44c-.95,0-1.73-.78-1.73-1.73s.78-1.73,1.73-1.73,1.73,.78,1.73,1.73c0,.28-.22,.5-.5,.5s-.5-.22-.5-.5c0-.4-.33-.73-.73-.73s-.73,.33-.73,.73,.33,.73,.73,.73c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\"></path><path d=\"M15,16.9c-.95,0-1.73-.78-1.73-1.73,0-.28,.22-.5,.5-.5s.5,.22,.5,.5c0,.4,.33,.73,.73,.73s.73-.33,.73-.73-.33-.73-.73-.73c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5c.95,0,1.73,.78,1.73,1.73s-.78,1.73-1.73,1.73Z\"></path></g></svg>`\r\n  },\r\n  {\r\n    name: 'space-m',\r\n    data: `<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 30 30\"><path d=\"M20.22,19.1H9.78c-.71,0-1.28-.67-1.28-1.5v-1.46c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v1.46c0,.31,.17,.5,.28,.5h10.45c.11,0,.28-.19,.28-.5v-1.46c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v1.46c0,.83-.57,1.5-1.28,1.5Z\"></path><g><path d=\"M13.44,16.9c-.28,0-.5-.22-.5-.5v-4.92c0-.22,.15-.42,.36-.48,.21-.06,.44,.02,.56,.21l1.56,2.46c.15,.23,.08,.54-.15,.69-.24,.15-.54,.08-.69-.15l-.64-1.01v3.2c0,.28-.22,.5-.5,.5Z\"></path><path d=\"M16.56,16.9c-.28,0-.5-.22-.5-.5v-3.2l-.64,1.01c-.15,.23-.45,.3-.69,.15-.23-.15-.3-.46-.15-.69l1.56-2.46c.12-.19,.35-.27,.56-.21,.21,.06,.36,.26,.36,.48v4.92c0,.28-.22,.5-.5,.5Z\"></path></g></svg>`\r\n  },\r\n  {\r\n    name: 'space-l',\r\n    data: `<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 30 30\"><path d=\"M16.07,16.9h-2.15c-.28,0-.5-.22-.5-.5v-4.92c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v4.42h1.65c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\"></path><path d=\"M20.22,19.1H9.78c-.71,0-1.28-.67-1.28-1.5v-1.46c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v1.46c0,.31,.17,.5,.28,.5h10.45c.11,0,.28-.19,.28-.5v-1.46c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v1.46c0,.83-.57,1.5-1.28,1.5Z\"></path></svg>`\r\n  },\r\n  {\r\n    name: 'space-xl',\r\n    data: `<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 30 30\"><path d=\"M18.58,16.9h-2.15c-.28,0-.5-.22-.5-.5v-4.92c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v4.42h1.65c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5Z\"></path><path d=\"M20.22,19.1H9.78c-.71,0-1.28-.67-1.28-1.5v-1.46c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v1.46c0,.31,.17,.5,.28,.5h10.45c.11,0,.28-.19,.28-.5v-1.46c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v1.46c0,.83-.57,1.5-1.28,1.5Z\"></path><path d=\"M14.78,16.9c-.16,0-.32-.08-.41-.22l-3.36-4.92c-.16-.23-.1-.54,.13-.7,.23-.15,.54-.1,.7,.13l3.36,4.92c.16,.23,.1,.54-.13,.7-.09,.06-.18,.09-.28,.09Z\"></path><path d=\"M11.42,16.9c-.1,0-.2-.03-.28-.09-.23-.16-.29-.47-.13-.7l3.36-4.92c.16-.23,.47-.28,.7-.13,.23,.16,.29,.47,.13,.7l-3.36,4.92c-.1,.14-.25,.22-.41,.22Z\"></path></svg>`\r\n  },\r\n  {\r\n    name: 'direction-bottom',\r\n    data: `<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 30 30\"><path d=\"M15,23.26c-.13,0-.26-.05-.35-.15l-3-3c-.2-.2-.2-.51,0-.71s.51-.2,.71,0l3,3c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\"></path><path d=\"M15,23.26c-.06,0-.13-.01-.19-.04-.19-.08-.31-.26-.31-.46V12.66c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v8.89l2.15-2.15c.2-.2,.51-.2,.71,0s.2,.51,0,.71l-3,3c-.1,.1-.22,.15-.35,.15Z\"></path><path d=\"M15,11.16c-1.1,0-2-.9-2-2s.9-2,2-2,2,.9,2,2-.9,2-2,2Zm0-3c-.55,0-1,.45-1,1s.45,1,1,1,1-.45,1-1-.45-1-1-1Z\"></path></svg>`\r\n  },\r\n  {\r\n    name: 'direction-left',\r\n    data: `<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 30 30\"><path d=\"M7.45,15.16c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71l3-3c.2-.2,.51-.2,.71,0s.2,.51,0,.71l-3,3c-.1,.1-.23,.15-.35,.15Z\"></path><path d=\"M10.45,18.16c-.13,0-.26-.05-.35-.15l-3-3c-.14-.14-.19-.36-.11-.54s.26-.31,.46-.31h10.1c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5H8.66l2.15,2.15c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\"></path><path d=\"M21.05,16.66c-1.1,0-2-.9-2-2s.9-2,2-2,2,.9,2,2-.9,2-2,2Zm0-3c-.55,0-1,.45-1,1s.45,1,1,1,1-.45,1-1-.45-1-1-1Z\"></path></svg>`\r\n  },\r\n  {\r\n    name: 'direction-right',\r\n    data: `<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 30 30\"><path d=\"M19.55,18.16c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71l3-3c.2-.2,.51-.2,.71,0s.2,.51,0,.71l-3,3c-.1,.1-.23,.15-.35,.15Z\"></path><path d=\"M22.55,15.16H12.45c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h8.89l-2.15-2.15c-.2-.2-.2-.51,0-.71s.51-.2,.71,0l3,3c.14,.14,.19,.36,.11,.54s-.26,.31-.46,.31Z\"></path><path d=\"M8.95,16.66c-1.1,0-2-.9-2-2s.9-2,2-2,2,.9,2,2-.9,2-2,2Zm0-3c-.55,0-1,.45-1,1s.45,1,1,1,1-.45,1-1-.45-1-1-1Z\"></path></svg>`\r\n  },\r\n  {\r\n    name: 'direction-top',\r\n    data: `<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 30 30\"><path d=\"M18,11.16c-.13,0-.26-.05-.35-.15l-3-3c-.2-.2-.2-.51,0-.71s.51-.2,.71,0l3,3c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\"></path><path d=\"M15,18.26c-.28,0-.5-.22-.5-.5V8.87l-2.15,2.15c-.2,.2-.51,.2-.71,0s-.2-.51,0-.71l3-3c.14-.14,.36-.19,.54-.11,.19,.08,.31,.26,.31,.46v10.1c0,.28-.22,.5-.5,.5Z\"></path><path d=\"M15,23.26c-1.1,0-2-.9-2-2s.9-2,2-2,2,.9,2,2-.9,2-2,2Zm0-3c-.55,0-1,.45-1,1s.45,1,1,1,1-.45,1-1-.45-1-1-1Z\"></path></svg>`\r\n  },\r\n  {\r\n    name: 'direction-left-right',\r\n    data: `<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 30 30\"><path d=\"M5.69,15.71c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71l2.54-2.54c.2-.2,.51-.2,.71,0s.2,.51,0,.71l-2.54,2.54c-.1,.1-.23,.15-.35,.15Z\"></path><path d=\"M8.23,18.25c-.13,0-.26-.05-.35-.15l-2.54-2.54c-.14-.14-.19-.36-.11-.54s.26-.31,.46-.31h4.94c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5h-3.73l1.68,1.68c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\"></path><path d=\"M21.77,18.25c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71l2.54-2.54c.2-.2,.51-.2,.71,0s.2,.51,0,.71l-2.54,2.54c-.1,.1-.23,.15-.35,.15Z\"></path><path d=\"M24.31,15.71h-4.94c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h3.73l-1.68-1.68c-.2-.2-.2-.51,0-.71s.51-.2,.71,0l2.54,2.54c.14,.14,.19,.36,.11,.54s-.26,.31-.46,.31Z\"></path><path d=\"M15,17.22c-1.1,0-2-.9-2-2s.9-2,2-2,2,.9,2,2-.9,2-2,2Zm0-3c-.55,0-1,.45-1,1s.45,1,1,1,1-.45,1-1-.45-1-1-1Z\"></path></svg>`\r\n  },\r\n  {\r\n    name: 'direction-top-bottom',\r\n    data: `<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 30 30\"><path d=\"M17.54,8.93c-.13,0-.26-.05-.35-.15l-2.54-2.54c-.2-.2-.2-.51,0-.71s.51-.2,.71,0l2.54,2.54c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\"></path><path d=\"M15,11.34c-.28,0-.5-.22-.5-.5v-3.73l-1.68,1.68c-.2,.2-.51,.2-.71,0s-.2-.51,0-.71l2.54-2.54c.14-.14,.36-.18,.54-.11,.19,.08,.31,.26,.31,.46v4.94c0,.28-.22,.5-.5,.5Z\"></path><path d=\"M15,25.02c-.13,0-.26-.05-.35-.15l-2.54-2.54c-.2-.2-.2-.51,0-.71s.51-.2,.71,0l2.54,2.54c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\"></path><path d=\"M15,25.02c-.06,0-.13-.01-.19-.04-.19-.08-.31-.26-.31-.46v-4.94c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v3.73l1.68-1.68c.2-.2,.51-.2,.71,0s.2,.51,0,.71l-2.54,2.54c-.1,.1-.22,.15-.35,.15Z\"></path><path d=\"M14.99,17.21c-1.1,0-2-.9-2-2s.9-2,2-2,2,.9,2,2-.9,2-2,2Zm0-3c-.55,0-1,.45-1,1s.45,1,1,1,1-.45,1-1-.45-1-1-1Z\"></path></svg>`\r\n  },\r\n  {\r\n    name: 'direction-left-right-top-bottom',\r\n    data: `<svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 30 30\"><path d=\"M5.69,15.71c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71l2.54-2.54c.2-.2,.51-.2,.71,0s.2,.51,0,.71l-2.54,2.54c-.1,.1-.23,.15-.35,.15Z\"></path><path d=\"M8.23,18.25c-.13,0-.26-.05-.35-.15l-2.54-2.54c-.14-.14-.19-.36-.11-.54s.26-.31,.46-.31h4.94c.28,0,.5,.22,.5,.5s-.22,.5-.5,.5h-3.73l1.68,1.68c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\"></path><path d=\"M21.77,18.25c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71l2.54-2.54c.2-.2,.51-.2,.71,0s.2,.51,0,.71l-2.54,2.54c-.1,.1-.23,.15-.35,.15Z\"></path><path d=\"M24.31,15.71h-4.94c-.28,0-.5-.22-.5-.5s.22-.5,.5-.5h3.73l-1.68-1.68c-.2-.2-.2-.51,0-.71s.51-.2,.71,0l2.54,2.54c.14,.14,.19,.36,.11,.54s-.26,.31-.46,.31Z\"></path><path d=\"M15,17.22c-1.1,0-2-.9-2-2s.9-2,2-2,2,.9,2,2-.9,2-2,2Zm0-3c-.55,0-1,.45-1,1s.45,1,1,1,1-.45,1-1-.45-1-1-1Z\"></path><path d=\"M17.54,8.93c-.13,0-.26-.05-.35-.15l-2.54-2.54c-.2-.2-.2-.51,0-.71s.51-.2,.71,0l2.54,2.54c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\"></path><path d=\"M15,11.34c-.28,0-.5-.22-.5-.5v-3.73l-1.68,1.68c-.2,.2-.51,.2-.71,0s-.2-.51,0-.71l2.54-2.54c.14-.14,.36-.18,.54-.11,.19,.08,.31,.26,.31,.46v4.94c0,.28-.22,.5-.5,.5Z\"></path><path d=\"M15,25.02c-.13,0-.26-.05-.35-.15l-2.54-2.54c-.2-.2-.2-.51,0-.71s.51-.2,.71,0l2.54,2.54c.2,.2,.2,.51,0,.71-.1,.1-.23,.15-.35,.15Z\"></path><path d=\"M15,25.02c-.06,0-.13-.01-.19-.04-.19-.08-.31-.26-.31-.46v-4.94c0-.28,.22-.5,.5-.5s.5,.22,.5,.5v3.73l1.68-1.68c.2-.2,.51-.2,.71,0s.2,.51,0,.71l-2.54,2.54c-.1,.1-.22,.15-.35,.15Z\"></path></svg>`\r\n  },\r\n  {\r\n    name: \"gear\",\r\n    data: `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path d=\"M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"/></svg>`\r\n  },\r\n  {\r\n    name: \"right-left\",\r\n    data: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"1em\" viewBox=\"0 0 512 512\"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d=\"M32 96l320 0V32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160L32 160c-17.7 0-32-14.3-32-32s14.3-32 32-32zM480 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H160v64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-96-96c-6-6-9.4-14.1-9.4-22.6s3.4-16.6 9.4-22.6l96-96c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 64H480z\"/></svg>`\r\n  },\r\n  {\r\n    name: \"folder\",\r\n    data: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"1em\" viewBox=\"0 0 512 512\"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d=\"M0 96C0 60.7 28.7 32 64 32H196.1c19.1 0 37.4 7.6 50.9 21.1L289.9 96H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16H286.6c-10.6 0-20.8-4.2-28.3-11.7L213.1 87c-4.5-4.5-10.6-7-17-7H64z\"/></svg>`\r\n  },\r\n  {\r\n    name: \"pencil\",\r\n    data: `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"1em\" viewBox=\"0 0 512 512\"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d=\"M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1L291.7 89.8l-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L387.7 253.7 410.3 231zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9L59.4 452l23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1v32c0 8.8 7.2 16 16 16h32zM362.7 18.7L348.3 33.2 325.7 55.8 314.3 67.1l33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5L453.3 18.7c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"/></svg>`\r\n  }\r\n];\r\n","import { Inject, ModuleWithProviders, NgModule, Optional, Self } from '@angular/core';\r\n\r\nimport { SvgIconRegistry } from './registry';\r\nimport { SVG_CONFIG, SVG_ICONS, SVG_ICONS_CONFIG, SVG_MISSING_ICON_FALLBACK, SvgIconType } from './types';\r\n\r\n@NgModule()\r\nexport class SvgIconsModule {\r\n  static forRoot(config: Partial<SVG_CONFIG> = {}): ModuleWithProviders<SvgIconsModule> {\r\n    return {\r\n      ngModule: SvgIconsModule,\r\n      providers: [\r\n        {\r\n          provide: SVG_ICONS_CONFIG,\r\n          useValue: config,\r\n        },\r\n      ],\r\n    };\r\n  }\r\n\r\n  static forChild(icons: SvgIconType | SvgIconType[]): ModuleWithProviders<SvgIconsModule> {\r\n    return {\r\n      ngModule: SvgIconsModule,\r\n      providers: [{ provide: SVG_ICONS, useValue: icons, multi: true }],\r\n    };\r\n  }\r\n\r\n  constructor(\r\n    @Optional() @Self() @Inject(SVG_ICONS) icons: SvgIconType[] | SvgIconType[][],\r\n    @Optional() @Inject(SVG_MISSING_ICON_FALLBACK) missingIconFallback: SvgIconType,\r\n    private service: SvgIconRegistry\r\n  ) {\r\n    if (icons) {\r\n      this.service.register(([] as SvgIconType[]).concat(...icons));\r\n    }\r\n\r\n    if (missingIconFallback) {\r\n      this.service.register(missingIconFallback);\r\n    }\r\n  }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\n\r\nimport { AutocompleteComponent, CheckboxComponent, ColorPickerComponent, ConditionPipe, ConfigModule, ConfiguratorComponent, ImageSelectorComponent, ItemComponent, MultiSelectComponent, NgModelChangeDebouncedDirective, PaletteComponent, TemplateNameDirective, ToastComponent, ToolbarComponent, TooltipDirective, ZoneComponent } from \"./public-api\";\r\n\r\n\r\nconst components = [\r\n  ConfigModule,\r\n  // standalone components\r\n  ConditionPipe,\r\n  ConfiguratorComponent,\r\n  ZoneComponent,\r\n  ItemComponent,\r\n  ToolbarComponent,\r\n  ToastComponent,\r\n  AutocompleteComponent,\r\n  CheckboxComponent,\r\n  ImageSelectorComponent,\r\n  ColorPickerComponent,\r\n  MultiSelectComponent,\r\n  PaletteComponent,\r\n  // directives\r\n  TemplateNameDirective,\r\n  TooltipDirective,\r\n  NgModelChangeDebouncedDirective,\r\n]\r\n\r\n@NgModule({\r\n  imports: [...components],\r\n  exports: [...components]\r\n})\r\nexport class uibModule {}","// Necessary to resolve the '$localize' marker\nimport '@angular/localize/init';\n\n/*\n * Public API Surface of lib\n */\n\nexport * from './configurable';\nexport * from './configuration';\nexport * from './configurator';\nexport * from './conditions';\nexport * from './dynamic-views';\nexport * from './utils';\n\nexport * from './svg/svg-icons';\nexport * from \"./utils/svg-icon\";\n\nexport * from \"./uib.module\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["filter","i1.ZoneContextService","i2.ConfigurableService","map","i1","i1.ToastService","i2","i1.ConditionsService","i3","i1.ConfigService","i2.ToastService","i1.DragDropService","i2.ConfigService","i4","i1.ConfigurableService","i3.ConditionsService","i4.DragDropService","i5","i6","i3.ConfigurableService","i1.SvgIconRegistry"],"mappings":"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"}